// MFC GosDoc.h : interface of the CMFCGosDoc class
//
/////////////////////////////////////////////////////////////////////////////

#if !defined(AFX_MFCGOSDOC_H__931C70EA_5D05_11D2_8408_00A0C933BCAC__INCLUDED_)
#define AFX_MFCGOSDOC_H__931C70EA_5D05_11D2_8408_00A0C933BCAC__INCLUDED_

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

#include <GameOS\GameOS.hpp>
#include <ElementRenderer\ElementRenderer.hpp>
#include <ElementRenderer\Element.hpp>
#include <MLR\MLR.hpp>

class CMFCGosDoc;
CMFCGosDoc * GetActiveErfDocument();


class SIMPLEHEIRARCHY
{
public:
	CList<SIMPLEHEIRARCHY *, SIMPLEHEIRARCHY *> listChildren;
	Stuff::LinearMatrix4D lmLocalToWorld;
	CString strPageName;

	static SIMPLEHEIRARCHY * BuildHeirarchy(LPCSTR lpszChildToMake, Stuff::LinearMatrix4D lmParentLocalToWorld, 
																	 Stuff::NotationFile * pNoteFile);
	static void DeleteHeirarchy(SIMPLEHEIRARCHY * pNode);
	SIMPLEHEIRARCHY * FindInHeirarchy(LPCSTR lpszChildToFind);
} ;


class CMFCGosDoc : public CDocument
{
protected: // create from serialization only
	CMFCGosDoc();
	DECLARE_DYNCREATE(CMFCGosDoc)
		
		// Attributes
public:
	ElementRenderer::Element *cele;
	MidLevelRenderer::MLRPrimitiveBase *cmlr;
	bool UnStable;
	Stuff::Sphere sphereCamera;
	SIMPLEHEIRARCHY * m_sHeirarchy;
	// Operations
public:
	
	// Overrides
	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CMFCGosDoc)
public:
	virtual BOOL OnNewDocument();
	virtual void Serialize(CArchive& ar);
	virtual BOOL OnSaveDocument(LPCTSTR lpszPathName);
	virtual BOOL OnOpenDocument(LPCTSTR lpszPathName);
	//}}AFX_VIRTUAL
	BOOL OnOpenMultipleDocumentsInit();
	BOOL OnOpenMultipleDocumentsAddFile(LPCTSTR lpszPathName);
	BOOL OnOpenMultipleDocumentsEnd();
	void AdjustMeshToArmatureIfAvailable(LPCSTR lpszPathName, Stuff::LinearMatrix4D *pltwObjectArmaturePlacement);
	
	// Implementation
public:
	virtual ~CMFCGosDoc();
#ifdef _DEBUG
	virtual void AssertValid() const;
	virtual void Dump(CDumpContext& dc) const;
#endif
	
protected:
	
	// Generated message map functions
protected:
	//{{AFX_MSG(CMFCGosDoc)
	afx_msg void OnFileReload();
	afx_msg void OnEditAddlightAmbientlight();
	afx_msg void OnEditAddlightInfinitelight();
	afx_msg void OnEditAddlightPointlight();
	afx_msg void OnEditAddlightSpotlight();
	afx_msg void OnEditAddlightProjectlight();
	afx_msg void OnViewBumpmaptest();
	afx_msg void OnViewWatertest();
	//}}AFX_MSG

	
	DECLARE_MESSAGE_MAP()
};

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

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

#endif // !defined(AFX_MFCGOSDOC_H__931C70EA_5D05_11D2_8408_00A0C933BCAC__INCLUDED_)
