/*=========================================================================*/
/* DEVMul3D.hpp :	MultiDevice 3D which manage the Device 3D.*/
/* This is a part of the PCA project.*/
/**/
/* Version			1.0*/
/* Creation date	17/07/96*/
/* Revision date*/
/**/
/* (c) Ubi Studios 1996*/
/**/
/* DO NOT MODIFY THAT FILE. IF SOMETHING NEEDS TO BE CHANGE, PLEASE CONTACT*/
/* OLIVIER DIDELOT.*/
/*=========================================================================*/
 
#ifndef __DEVMUL3D_HPP__
#define __DEVMUL3D_HPP__
 
#include "DEVMulti.hpp"
/*#include "CPACam.hpp"*/
 
class CPA_ProjectDoc;
class CPA_DLLList;
 
class CPA_World;
 
/****************************************/
#ifndef CPA_EXPORT
#if defined(CPA_WANTS_IMPORT)
#define CPA_EXPORT __declspec(dllimport)
#elif defined(CPA_WANTS_EXPORT)
#define CPA_EXPORT __declspec(dllexport)
#else
#define CPA_EXPORT
#endif
#endif
/****************************************/
 
#define C_DefaultRotateUnit         (GLI_tdxValue)0.01
#define C_DefaultTranslateUnit      (GLI_tdxValue)0.01
 
#define C_MaxCameraSlots 10
 
/*--------------------------------------------------------------------------------*/
class CPA_EXPORT DEV_MultiDevice3D : public DEV_MultiDevice
{
protected:
	DEV_MultiDevice3D();
	DECLARE_DYNCREATE(DEV_MultiDevice3D)
 
public:
	DEV_MultiDevice3D(int);
	virtual ~DEV_MultiDevice3D();
	CPA_ProjectDoc          *GetDocument();
    void                    Init(void);
 
/* Engine*/
/*----------------------------------------------------------------------------------------------------------------------*/
private:
	HIE_tdxHandleToSuperObject     m_hSuperObjectWorld;	/* The World display in the view.*/
	GLI_tdxHandleToLight           m_hLight;               /* Light to display the 3D world.*/
 
public:
	GLI_tdxHandleToLight		GetEngineLight();		
	HIE_tdxHandleToSuperObject	GetEngineWorld();		
	
	void						SetEngineWorld(HIE_tdxHandleToSuperObject hObj);
 
/* Editor*/
/*----------------------------------------------------------------------------------------------------------------------*/
#ifdef ACTIVE_EDITOR
private:
    CPA_World		        *m_p_oWorld;
 
public:
    CPA_World				*GetWorld();
    void					SetWorld(CPA_World *p_oWorld);
    GLI_tdxHandleToCamera	GetEngineFocusCamera()                         { return GetFocusDevice()->GetCamera(); }
 
/*----------------------------------------------------------------------------------------------------------------------*/
public:
    void                    CreateViewportToolBar(void);
    void                    DrawObject(void);
    void                    DrawEditorObject(void);
    void                    DrawObjectExcept0(void);
 
	void                    RotateObjectX();
	void                    RotateObjectY();
	void                    RotateObjectZ();
	void                    RotateWorldX();
	void                    RotateWorldY();
	void                    RotateWorldZ();
#endif /* ACTIVE_EDITOR*/
 
protected:
	/*{{AFX_MSG(DEV_MultiDevice)*/
	afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
	/*}}AFX_MSG*/
	DECLARE_MESSAGE_MAP()
};
 
/*--------------------------------------------------------------------------------*/
inline CPA_ProjectDoc* DEV_MultiDevice3D::GetDocument()
{
    return (CPA_ProjectDoc*) m_pDocument;
}
 
#endif /* __DEVMUL3D_HPP__*/
