#if !defined(AFX_DISPLAYWINDOW_H__208FF836_376B_11D2_9DE3_0060973CEE04__INCLUDED_)
#define AFX_DISPLAYWINDOW_H__208FF836_376B_11D2_9DE3_0060973CEE04__INCLUDED_

#if _MSC_VER >= 1000
#pragma once
#endif // _MSC_VER >= 1000
// DisplayWindow.h : header file
//
#include <Adept\Entity.hpp>
#include <ElementRenderer\ElementRenderer.hpp>
#include <ElementRenderer\GroupElement.hpp>
#include <ElementRenderer\ListElement.hpp>
#include <ElementRenderer\StateChange.hpp>
#include <ElementRenderer\CameraElement.hpp>
#include <ElementRenderer\SwitchElement.hpp>
#include <ElementRenderer\ShapeElement.hpp>
#include <gosFX\gosFX.hpp>
#include <MLR\MLR.hpp>
#include <MLR\MLRHeaders.hpp>
#include <MFCPlatform\MFCPlatform.hpp>
#include "EditorChildWnd.h"
#include "EditEntityDlg.h"
//#include "LatticeLinkDlg.h"

class CLatticeLinkDlg;

#define TERRAIN			0
#define HIGHESTPOINT	1
#define NOCOLLIDE		2

/////////////////////////////////////////////////////////////////////////////
// CDisplayWindow frame

class CTransDlg;

class CDisplayWindow : public CEditorChildWnd//CSnapWnd
{
	DECLARE_DYNCREATE(CDisplayWindow)
protected:


public:
	CTransDlg*	translationDlg;
	CLatticeLinkDlg* latticeLinkDlg;
	CDisplayWindow();           // protected constructor used by dynamic creation
	virtual ~CDisplayWindow();
//	void Draw();
	bool GetPointOnMap(Point3D* point);
	Stuff::Scalar GetMapPointVertical(Stuff::Scalar x = -1.0f, Stuff::Scalar z = -1.0f, Adept::Entity::CollisionMask collisionType = Adept::Entity::CanBeWalkedOnFlag,Entity *ignore_entity=NULL);

// Attributes
public:

	MLRState 
		state,
		state2;
	MLRTexture 
		*texture;
	ElementRenderer::CameraElement 
		*Camera;
	ElementRenderer::StateChange 
		*Camera_State;
	ElementRenderer::ListElement 
		*Scene;
	ElementRenderer::SwitchElement 
		*Switch;

	bool
		mouseLook;
	int 
		timer;


// Operations
public:

	LRESULT 
		WindowProc(UINT message, WPARAM wParam, LPARAM lParam);

	void 
		ExecuteCamera();
	void
		ProcessIO();

	Adept::Entity
		*TraceToParent(Adept::Entity *entity);
	
	Scalar 
		mapX;
	Scalar
		mapZ;

	void
		OnObjAlignment(Adept::Entity* entity);
	void 
		OnAddDropPoint();

	void 
		AppendPathNode(Adept::Entity* entity);


// Overrides
	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CDisplayWindow)
	protected:
	virtual BOOL PreCreateWindow(CREATESTRUCT& cs);

	//}}AFX_VIRTUAL

// Implementation
protected:

//	void 
//		GetGridCoords(Point3D& point);

	// Generated message map functions
	//{{AFX_MSG(CDisplayWindow)
	afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
	afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
	afx_msg void OnLButtonUp(UINT, CPoint);
	afx_msg void OnMouseMove(UINT, CPoint);
	afx_msg void OnRButtonDown(UINT nFlags, CPoint point);
	afx_msg void OnTimer(UINT nIDEvent);
	afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);
	afx_msg void OnSetObjectName();
	afx_msg void OnSetObjectParameters();
	afx_msg void OnSetObjectTranslation();
	afx_msg void OnObjEditDriver();
	afx_msg void OnObjEditScript();
	afx_msg void OnKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags);
	afx_msg void OnMButtonDown(UINT nFlags, CPoint point);
	afx_msg void OnMButtonUp(UINT nFlags, CPoint point);
	afx_msg void OnPaint();
	afx_msg void OnObjDamageArmor();
	afx_msg void OnObjDamageInternal();
	afx_msg void OnEditLatticeLinks();
	afx_msg void OnShowRadius();
	afx_msg void OnUpdateShowRadius(CCmdUI* pCmdUI);
	afx_msg void OnAddLink();
	afx_msg void OnInsertPathNode();
	afx_msg void OnAppendPathNode();
	afx_msg void OnObjSpecifyScript();
	afx_msg void OnInsertBoundaryNode();
	afx_msg void OnObjRemoveinstance();
	afx_msg void OnObjAlignment();
	afx_msg void OnObjSubsystem();
	afx_msg void OnClose();
	afx_msg void OnDestroy();
	afx_msg void OnClearAI();
	afx_msg void OnABLMemory();
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()
};

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

//{{AFX_INSERT_LOCATION}}
// Microsoft Developer Studio will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_DISPLAYWINDOW_H__208FF836_376B_11D2_9DE3_0060973CEE04__INCLUDED_)
