// MFC Gos.h : main header file for the MFC GOS application
//

#if !defined(AFX_MFCGOS_H__931C70E4_5D05_11D2_8408_00A0C933BCAC__INCLUDED_)
#define AFX_MFCGOS_H__931C70E4_5D05_11D2_8408_00A0C933BCAC__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#ifndef __AFXWIN_H__
#error include 'stdafx.h' before including this file for PCH
#endif

#include "resource.h"       // main symbols
#include"ViewWnd3D.h"
void _stdcall DoGameLogic();


/////////////////////////////////////////////////////////////////////////////
// CMFCGosApp:
// See MFC Gos.cpp for the implementation of this class
//
#include <ElementRenderer\ElementRenderer.hpp>
#include <ElementRenderer\GroupElement.hpp>
#include <ElementRenderer\CameraElement.hpp>
#include <ElementRenderer\StateChange.hpp>
#include <ElementRenderer\PointCloudElement.hpp>
#include <gosFX\gosFX.hpp>
#include <MLR\MLR.hpp>
#include <GameOS\GameOS.hpp>
#include <MLR\MLRHeaders.hpp>
#include <stuff\stuff.hpp>
#define _INC_NEW
#include <AFXTEMPL.H>

struct BumpAnime {
	BumpAnime() { water = 0; bump = 0; normal = 0; wu = 0.0f; wv = 0.0f; bu = 0.0f; bv = 0.0f; nu = 0.0f; nv = 0.0f; }

	DWORD water;
	DWORD bump;
	DWORD normal;

	Scalar wu, wv;
	Scalar bu, bv;
	Scalar nu, nv;
};

extern BumpAnime bumpAnime;

class CMFCGosApp : public CWinApp
{
public:
	void UpdateLightList();
	void DrawScreen();
	void UpdateCameraFromKeyMessage(UINT message, WPARAM wParam, LPARAM lParam);
	bool GOSActive;
	void GosShutDown();
	BOOL ProcessShellCommandOnlyLoad(CCommandLineInfo& rCmdInfo);
	BOOL ProcessShellCommandNoLoad(CCommandLineInfo& rCmdInfo);
	void NewTexturePath();
	void GetTexturePath();
	void NewEffectsPath();
	void GetEffectsPath();
	CMFCGosApp();
	ViewWnd3D *Window3D;
	CString TexturePath,EffectsPath;
	bool DrawOnIdle;
	void OnFileNewExternal() {CWinApp::OnFileNew();}

//  Stuff::FileStream * m_perf_file;
	CList<Stuff::FileStream*, Stuff::FileStream*> m_pFileSet_List;
	HashOf<Stuff::PlugOf<Stuff::MString*>*, DWORD>*m_phashErfNameMapping;
  
  // Overrides
	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CMFCGosApp)
public:
	virtual BOOL InitInstance();
	virtual BOOL OnIdle(LONG lCount);
	virtual int ExitInstance();
	//}}AFX_VIRTUAL
	
	// Implementation
	//{{AFX_MSG(CMFCGosApp)
	afx_msg void OnAppAbout();
	afx_msg void OnOptionsTexturepath();
	afx_msg void OnView3dviewwindow();
	afx_msg void OnUpdateView3dviewwindow(CCmdUI* pCmdUI);
	afx_msg void OnViewUpdateonidle();
	afx_msg void OnUpdateViewUpdateonidle(CCmdUI* pCmdUI);
	afx_msg void OnWindowsLightlist();
	afx_msg void OnUpdateWindowsLightlist(CCmdUI* pCmdUI);
	//}}AFX_MSG
	afx_msg void OnExpandAll();
  afx_msg void OnCollapseAll();
	void OnFileOpen();
	DECLARE_MESSAGE_MAP()
	

};


/////////////////////////////////////////////////////////////////////////////

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_MFCGOS_H__931C70E4_5D05_11D2_8408_00A0C933BCAC__INCLUDED_)
