/* ========================================================================== * ÀÛ ¼º ÀÚ : À̼ø±Ô * ÀÛ ¼º ÀÏ : 2006.12.20 * ³» ¿ë : Á¤Àû Àå¸é ³ëµå * ÁÖÀÇ»çÇ× : *===========================================================================*/ #pragma once #include "SceneNode.h" class cNifAnimationInfo; /// Á¤Àû Àå¸é ³ëµå ÀÎÀÚ class cStaticSceneNodeParam : public cSceneNodeParam { public: cStaticSceneNodeParam(); public: /// ¾È°³ Àû¿ë ¿©ºÎ bool mFogApplied; /// ÀçÁú bool mMaterialApplied; cMaterialData mMaterial; /// °¡½Ã ·¹º§ unsigned int mVisibleLevel; /// Â÷Æó ·¹º§ unsigned int mOccludeLevel; }; inline cStaticSceneNodeParam::cStaticSceneNodeParam() : mFogApplied( true ) , mMaterialApplied( false ) , mVisibleLevel( 0 ) , mOccludeLevel( 1 ) { mPickFrontOnly = true; } /// Á¤Àû Àå¸é ³ëµå /// óÀ½¿¡ ÁÂÇ¥¸¦ ¼³Á¤Çϰí Àý´ë À̵¿ÇÏÁö ¾Ê´Â´Ù. /// Á¦ÀÚ¸®¿¡¼­ ¹Ýº¹ ¾Ö´Ï¸ÞÀ̼ÇÀ» ÇÒ ¼ö´Â ÀÖ´Ù. /// ÀçÁú, °¡½Ã ·¹º§, Â÷Æó ·¹º§ µîÀÇ Á¤º¸¸¦ °¡Áø´Ù. class cStaticSceneNode : public cSceneNode { friend class cSceneManager; friend class cObjectEditor; public: /// ó¸® virtual void Process( unsigned long deltaTime, unsigned long accumTime ); virtual void ProcessVisibleLevel( unsigned long deltaTime ); /// ÀçÁú void SetMaterialApplied( bool matApplied ); bool GetMaterialApplied() const; void SetMaterial( const cMaterialData& material ); const cMaterialData& GetMaterial() const; /// ÁÖº¯±¤ ¹Ý»çÀ² void SetAmbient( const NiColor& color ); const NiColor& GetAmbient() const; /// »ê¶õ±¤ ¹Ý»çÀ² void SetDiffuse( const NiColor& color ); const NiColor& GetDiffuse() const; /// ¹ß»ê»ö void SetEmissive( const NiColor& color ); const NiColor& GetEmissive() const; /// °¡½Ã ·¹º§ void SetVisibleLevel( unsigned int level ); unsigned int GetVisibleLevel() const; /// Â÷Æó ·¹º§ void SetOccludeLevel( unsigned int ); unsigned int GetOccludeLevel() const; /// ¾È°³ Àû¿ë void SetFogApplied( bool fogApplied ); bool GetFogApplied() const; /// »ï°¢Çü ¼ö unsigned int GetNumVerts() const; /// ¾Ö´Ï¸ÞÀÌ¼Ç °¡´É ¿©ºÎ bool IsAnimated() const; #ifdef MAP_EDITOR void SetWirframe( bool set ) { mWireProp->SetWireframe( set ); } #endif protected: cStaticSceneNode( eSceneNodeType type = SCENENODE_STATIC ); virtual ~cStaticSceneNode(); /// ÀúÀå virtual bool Save( cFileSaver& saver ); /// ÃʱâÈ­ virtual bool Init( cStaticSceneNodeParam& param ); /// void RestoreMaterial(); /// °¡½Ã ·¹º§ unsigned int CalcVisibleLevel(); protected: /// ¾Ö´Ï ÄÁÆ®·Ñ·¯ÀÇ Á¤º¸ cNifAnimationInfo* mNifAniInfo; /// Á¤Á¡ ¼ö unsigned int mNumVerts; /// ¾È°³ bool mFogApplied; /// ÀçÁú bool mMaterialApplied; cMaterialData mMaterial; /// °¡½Ã ·¹º§ unsigned int mVisibleLevel; /// Â÷Æó ·¹º§ unsigned int mOccludeLevel; /// Ä«¸Þ¶ó¿¡ °É¸² ¿©ºÎ bool mPickedByCamera; cString mLightMapFileName; #ifdef MAP_EDITOR NiWireframeProperty* mWireProp; #endif }; inline unsigned int cStaticSceneNode::GetNumVerts() const { return mNumVerts; } inline const cMaterialData& cStaticSceneNode::GetMaterial() const { return mMaterial; } inline const NiColor& cStaticSceneNode::GetAmbient() const { return mMaterial.mAmbient; } inline const NiColor& cStaticSceneNode::GetDiffuse() const { return mMaterial.mDiffuse; } inline const NiColor& cStaticSceneNode::GetEmissive() const { return mMaterial.mEmissive; } inline unsigned int cStaticSceneNode::GetVisibleLevel() const { return mVisibleLevel; } inline unsigned int cStaticSceneNode::GetOccludeLevel() const { return mOccludeLevel; } inline bool cStaticSceneNode::GetFogApplied() const { return mFogApplied; } inline bool cStaticSceneNode::GetMaterialApplied() const { return mMaterialApplied; }