/* ========================================================================== * ÀÛ ¼º ÀÚ : À̼ø±Ô * ÀÛ ¼º ÀÏ : 2007.03.09 * ³» ¿ë : ¿µ¿ª ÆíÁýÀÚ * ÁÖÀÇ»çÇ× : *===========================================================================*/ #pragma once class cSceneNode; class cAreaSceneNode; class cAreaTransformDialog; class cAreaLightDialog; class cAreaFogDialog; class cAreaEtcDialog; /// ¿µ¿ª ÆíÁýÀÚ /// ¸Ê»óÀÇ ¿µ¿ªµéÀ» ÆíÁýÇÑ´Ù. class cAreaEditor { static cAreaEditor* mSingleton; friend class cMapEditorView; friend class cObjectEditor; public: cAreaEditor(); ~cAreaEditor(); /// Áö¿ò void Clear(); /// ·»´õ¸µ void Render(); /// ÃʱâÈ­ void Init(); /// ÀúÀå bool Save( cFileSaver& saver ); /// ¿µ¿ªÀ» »ý¼º bool CreateArea(); /// ¿µ¿ªÀ» º¹»ç void CopyArea(); /// ÇÈÅ· bool Pick( CPoint point ); /// ¼±Åà void DeselectAll(); void SelectArea( cAreaSceneNode* node, bool force = false ); /// ¿µ¿ªÀ» ÁöÇü¿¡ ºÎÂø void AttachAreaToTerrain( CPoint point ); /// ¿µ¿ªÀ» ¿ÀºêÁ§Æ®¿¡ ºÎÂø void AttachAreaToObject( CPoint point ); /// ¿µ¿ªÀ» »èÁ¦ void DeleteArea(); /// ¿µ¿ª À̵¿ void SetAreaTranslate( const NiPoint3& trans, bool updateDialog ); /// ¿µ¿ª ¹ÝÁö¸§ void SetAreaRadius( float scale, bool updateDialog ); /// ¿µ¿ª À妽º void SetAreaGroupIndex( unsigned int groupIndex ); /// ÁÖº¯±¤ void SetSkyAmbient( const NiColor& color ); //void SetSkyDiffuse( const NiColor& color ); void SetSkyDimmer( float dimmer ); void SetTerrainAmbient( const NiColor& color ); //void SetTerrainDiffuse( const NiColor& color ); void SetTerrainDimmer( float dimmer ); void SetStaticObjectAmbient( const NiColor& color ); //void SetStaticObjectDiffuse( const NiColor& color ); void SetStaticObjectDimmer( float dimmer ); void SetDynamicObjectAmbient( const NiColor& color ); //void SetDynamicObjectDiffuse( const NiColor& color ); void SetDynamicObjectDimmer( float dimmer ); /// ¾È°³ void SetFog( bool enabled, const NiColor& color, float depth ); void SetFogColor( const NiColor& color ); void SetFogDepth( float depth ); /// ´ÙÀ̾ó·Î±× void SetTransformDialog( cAreaTransformDialog* dlg ); void SetLightDialog( cAreaLightDialog* dlg ); void SetFogDialog( cAreaFogDialog* dlg ); void SetEtcDialog( cAreaEtcDialog* dlg ); /// ¿µ¿ªÀÇ ¼ö unsigned int GetNumAreas() const; private: /// ÇØ´ç ¿µ¿ªÀ» Á¦°Å bool Kill( cAreaSceneNode* node ); /// ÇØ´ç Àå¸é ³ëµå¸¦ º¹Á¦ /// º¹Á¦µÈ »õ·Î¿î Àå¸é ³ëµå¸¦ ¸®ÅÏÇÑ´Ù. cAreaSceneNode* Clone( cAreaSceneNode* node ); private: /// ¸Þ½ÃÁö ó¸® void OnMouseMove( CPoint point ); void OnLButtonDown_Transform( CPoint point ); void OnRButtonDown_Transform( CPoint point, bool ctrl ); void OnKeyDown( UINT c ); public: /// ´ÜÀÏü¸¦ ¸®ÅÏ static cAreaEditor* GetSingleton(); protected: /// ¹èÄ¡ ´ÙÀ̾ó·Î±× cAreaTransformDialog* mTransformDialog; /// ÁÖº¯±¤ ´ÙÀ̾ó·Î±× cAreaLightDialog* mLightDialog; /// ¾È°³ ´ÙÀ̾ó·Î±× cAreaFogDialog* mFogDialog; /// ±âŸ ¼Ó¼º ´ÙÀ̾ó·Î±× cAreaEtcDialog* mEtcDialog; /// »ý¼ºµÈ ¿µ¿ª ™V typedef tHashSet cCreatedSet; cCreatedSet mCreatedSet; /// Ãæµ¹ °Ë»ç¿ë ³ëµå ¹è¿­ typedef tArray cPickedArray; cPickedArray mPickedArray; /// ¼±ÅÃµÈ ¿µ¿ª cAreaSceneNode* mSelectedNode; /// °æ°è ±¸ /// Á¶¸í ³ëµåµéÀ» Ç¥½ÃÇϴµ¥ »ç¿ëÇÑ´Ù. NiMeshPtr mSphereGeom; NiMaterialPropertyPtr mMatProp; /// ¸¶¿ì½º ÁÂÇ¥ CPoint mMousePos; }; inline void cAreaEditor::SetTransformDialog( cAreaTransformDialog* dlg ) { assert( dlg && "null area transform dialog" ); mTransformDialog = dlg; } inline void cAreaEditor::SetLightDialog( cAreaLightDialog* dlg ) { assert( dlg && "null area light dialog" ); mLightDialog = dlg; } inline void cAreaEditor::SetFogDialog( cAreaFogDialog* dlg ) { assert( dlg && "null area fog dialog" ); mFogDialog = dlg; } inline void cAreaEditor::SetEtcDialog( cAreaEtcDialog* dlg ) { assert( dlg && "null area etc dialog" ); mEtcDialog = dlg; } inline unsigned int cAreaEditor::GetNumAreas() const { return mCreatedSet.GetSize(); } inline cAreaEditor* cAreaEditor::GetSingleton() { return mSingleton; } #define AREAEDIT cAreaEditor::GetSingleton()