// PixelWhipPro.h : main header file for the PIXELWHIPPRO application
//

#if !defined(AFX_PIXELWHIPPRO_H__9AA88D96_64FF_4069_9FC5_BC4B067F97C7__INCLUDED_)
#define AFX_PIXELWHIPPRO_H__9AA88D96_64FF_4069_9FC5_BC4B067F97C7__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 <Adept\Zone.hpp>
using namespace ElementRenderer;
using namespace Stuff;

/////////////////////////////////////////////////////////////////////////////
// CPixelWhipProApp:
// See PixelWhipPro.cpp for the implementation of this class
//
#define BADINDEX 9999

class CView3DChildWindow;
class CEffectListWin;
class CEffectEditWin;
class CCurveEditorFrame;

class CPixelWhipProApp : public CWinApp
{
public:
	CPixelWhipProApp();
	~CPixelWhipProApp();
CView3DChildWindow *Window3D;
CEffectListWin	   *EListWin;
CEffectEditWin	   *ParamWin;
CCurveEditorFrame  *CurveWin;
CString DocTitle,DocPath;	

//Adept::Zone			*TerrainZone;
ElementRenderer::GroupElement *TerrainGrid;
ElementRenderer::Element *SceneBackground;
ElementRenderer::StateChange *LightState;
Point3D TargetLoc;
Stuff::FileStream *fx_stream;

MidLevelRenderer::MLRState FireState,SmokeState;

bool GOSActive;
bool AllowDraw;
bool Modified;
bool RegNoWrite;
bool Looping;
unsigned long int SpaceFlag;
// Overrides
	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CPixelWhipProApp)
	public:
	virtual BOOL InitInstance();
	virtual int ExitInstance();
	virtual BOOL OnIdle(LONG lCount);
	//}}AFX_VIRTUAL

// Implementation
protected:
//	HMENU m_hMDIMenu;
	HACCEL m_hMDIAccel;



public:
	void Set3DWindowTitle();
	CString LightFilePath,TerrainFilePath,BackGroundFilePath;
	void LoadLights(CString light_file_name);
	void LoadTerrain(CString terrain_file_name);
	void LoadBackground(CString background_file_name);
	void SaveWorkSpaceInfo();
	void FixEffectNameTable();
	void VerifyEffectLib();
	bool CurrentFXIsValid();
	void TranslateTextureNames();
	Stuff::Scalar GetEffectDistance();
	void ClearEffects();
	void StartEffects();
	void StopEffects();
	void LoadWindowStates();
	void SaveWindowStates();
	void RefreshAllWins();
	void NewTexturePath();
	CString TexturePath;
	void GetTexturePath();
	void GOSCleanUp();
	//{{AFX_MSG(CPixelWhipProApp)
	afx_msg void OnAppAbout();
	afx_msg void OnFileLoadscenebackground();
	afx_msg void OnFileClearscenebackground();
	afx_msg void OnFileExport();
	afx_msg void OnOptionsSettexturepath();
	afx_msg void OnWindowsCurveeditor();
	afx_msg void OnWindowsEffectlistwindow();
	afx_msg void OnWindowsEffectparameterwindow();
	afx_msg void OnUpdateWindowsCurveeditor(CCmdUI* pCmdUI);
	afx_msg void OnUpdateWindowsEffectlistwindow(CCmdUI* pCmdUI);
	afx_msg void OnUpdateWindowsEffectparameterwindow(CCmdUI* pCmdUI);
	afx_msg void OnViewRestartplayback();
	afx_msg void OnViewLooping();
	afx_msg void OnViewDynamicworldspace();
	afx_msg void OnViewLocalspace();
	afx_msg void OnViewStaticworldspace();
	afx_msg void OnUpdateViewStaticworldspace(CCmdUI* pCmdUI);
	afx_msg void OnUpdateViewLooping(CCmdUI* pCmdUI);
	afx_msg void OnUpdateViewLocalspace(CCmdUI* pCmdUI);
	afx_msg void OnUpdateViewDynamicworldspace(CCmdUI* pCmdUI);
	afx_msg void OnViewMovementoptions();
	afx_msg void OnViewMoveeffect();
	afx_msg void OnUpdateViewMoveeffect(CCmdUI* pCmdUI);
	afx_msg void OnOptionsClearregistry();
	afx_msg void OnViewResetcamera();
	afx_msg void OnOptionsSettofire();
	afx_msg void OnOptionsSettosmoke();
	afx_msg void OnOptionsEditfirequickset();
	afx_msg void OnOptionsEditsmokequickset();
	afx_msg void OnFileLoadterrain();
	afx_msg void OnFileClearterrain();
	afx_msg void OnFileLoadlights();
	afx_msg void OnFileClearlights();
	afx_msg void OnFileLoadlastworkspace();
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()
};

bool TranslateName(CString &str,NotationFile &hint_file);

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

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

#endif // !defined(AFX_PIXELWHIPPRO_H__9AA88D96_64FF_4069_9FC5_BC4B067F97C7__INCLUDED_)
