/** @file WaterEntityComponent.h
@brief 水体 entity component
* Copyright (c) 2007,第九城市游戏研发中心
* All rights reserved.
*
* 当前版本:0.1
* 作 者:Shi Yazheng
* 完成日期:2008-03-24
*
* 取代版本:
* 作 者:
* 完成日期:
*/
#pragma once
#include
#include
#include
#include
#include
//#include
#include
#include
#include
#include
#include "WaterBody.h"
namespace SceneCore
{
NiSmartPointer(CWaterEntityComponent);
class MAIN_ENTRY CWaterEntityComponent : public NiRefObject,
public NiEntityComponentInterface
{
NiDeclareFlags(unsigned char);
public:
CWaterEntityComponent(void);
virtual ~CWaterEntityComponent(void);
static NiFixedString ClassName();
// *** begin Emergent internal use only ***
static void _SDMInit();
static void _SDMShutdown();
// *** end Emergent internal use only ***
/// 获取水体实例
SceneCore::CWaterBodyPtr GetWaterInstance() {return m_spWaterInstance;}
NiFixedString GetBGSkyTexFile();
NiFixedString GetBumpTexFile();
protected:
CWaterEntityComponent(CWaterEntityComponent* pkMasterComponent);
// properties
CWaterEntityComponentPtr m_spMasterComponent;
NiFixedString m_kBGSkyTextureFile; // 背景天空文件路径
NiFixedString m_kBumpTextureFile; // bump map 文件路径
float m_fLastUpdateTime;
// CWaterBody 实例
SceneCore::CWaterBodyPtr m_spWaterInstance;
// 报错字符串
static NiFixedString ERR_TRANSLATION_NOT_FOUND;
static NiFixedString ERR_ROTATION_NOT_FOUND;
static NiFixedString ERR_SCALE_NOT_FOUND;
static NiFixedString ERR_FILE_LOAD_FAILED;
// Class name.
static NiFixedString ms_kClassName;
// Component name.
static NiFixedString ms_kComponentName;
// Property names.
static NiFixedString ms_kColorName;
static NiFixedString ms_kAlphaName;
static NiFixedString ms_kBGSkyTextureName;
static NiFixedString ms_kReflectTexSizeName;
static NiFixedString ms_kBumpTextureName;
static NiFixedString ms_kBumpRepeatName;
static NiFixedString ms_kBumpSpeedName;
static NiFixedString ms_kSceneRootPointerName;
// Property descriptions.
static NiFixedString ms_kColorDescription;
static NiFixedString ms_kAlphaDescription;
static NiFixedString ms_kBGSkyTextureDescription;
static NiFixedString ms_kReflectTexSizeDescription;
static NiFixedString ms_kBumpTextureDescription;
static NiFixedString ms_kBumpRepeatDescription;
static NiFixedString ms_kBumpSpeedDescription;
static NiFixedString ms_kSceneRootPointerDescription;
// Dependent property names.
static NiFixedString ms_kTranslationName;
static NiFixedString ms_kRotationName;
static NiFixedString ms_kScaleName;
public:
// NiEntityComponentInterface overrides.
virtual NiEntityComponentInterface* Clone(bool bInheritProperties);
virtual NiEntityComponentInterface* GetMasterComponent();
virtual void SetMasterComponent(
NiEntityComponentInterface* pkMasterComponent);
virtual void GetDependentPropertyNames(
NiTObjectSet& kDependentPropertyNames);
// NiEntityPropertyInterface overrides.
virtual NiBool SetTemplateID(const NiUniqueID& kID);
virtual NiUniqueID GetTemplateID();
virtual void AddReference();
virtual void RemoveReference();
virtual NiFixedString GetClassName() const;
virtual NiFixedString GetName() const;
virtual NiBool SetName(const NiFixedString& kName);
virtual NiBool IsAnimated() const;
virtual void Update(NiEntityPropertyInterface* pkParentEntity,
float fTime, NiEntityErrorInterface* pkErrors,
NiExternalAssetManager* pkAssetManager);
virtual void BuildVisibleSet(NiEntityRenderingContext* pkRenderingContext,
NiEntityErrorInterface* pkErrors);
virtual void GetPropertyNames(
NiTObjectSet& kPropertyNames) const;
virtual NiBool CanResetProperty(const NiFixedString& kPropertyName,
bool& bCanReset) const;
virtual NiBool ResetProperty(const NiFixedString& kPropertyName);
virtual NiBool MakePropertyUnique(const NiFixedString& kPropertyName,
bool& bMadeUnique);
virtual NiBool GetDisplayName(const NiFixedString& kPropertyName,
NiFixedString& kDisplayName) const;
virtual NiBool SetDisplayName(const NiFixedString& kPropertyName,
const NiFixedString& kDisplayName);
virtual NiBool GetPrimitiveType(const NiFixedString& kPropertyName,
NiFixedString& kPrimitiveType) const; // property 是什么类型的
virtual NiBool SetPrimitiveType(const NiFixedString& kPropertyName,
const NiFixedString& kPrimitiveType);
virtual NiBool GetSemanticType(const NiFixedString& kPropertyName,
NiFixedString& kSemanticType) const;
virtual NiBool SetSemanticType(const NiFixedString& kPropertyName,
const NiFixedString& kSemanticType);
virtual NiBool GetDescription(const NiFixedString& kPropertyName,
NiFixedString& kDescription) const;
virtual NiBool SetDescription(const NiFixedString& kPropertyName,
const NiFixedString& kDescription);
virtual NiBool GetCategory(const NiFixedString& kPropertyName,
NiFixedString& kCategory) const;
virtual NiBool IsPropertyReadOnly(const NiFixedString& kPropertyName,
bool& bIsReadOnly);
virtual NiBool IsPropertyUnique(const NiFixedString& kPropertyName,
bool& bIsUnique);
virtual NiBool IsPropertySerializable(const NiFixedString& kPropertyName,
bool& bIsSerializable);
virtual NiBool IsPropertyInheritable(const NiFixedString& kPropertyName,
bool& bIsInheritable);
virtual NiBool IsExternalAssetPath(const NiFixedString& kPropertyName,
unsigned int uiIndex, bool& bIsExternalAssetPath) const;
virtual NiBool GetElementCount(const NiFixedString& kPropertyName,
unsigned int& uiCount) const;
virtual NiBool SetElementCount(const NiFixedString& kPropertyName,
unsigned int uiCount, bool& bCountSet);
virtual NiBool IsCollection(const NiFixedString& kPropertyName,
bool& bIsCollection) const;
virtual NiBool GetPropertyData(const NiFixedString& kPropertyName,
NiFixedString& kData, unsigned int uiIndex) const;
virtual NiBool SetPropertyData(const NiFixedString& kPropertyName,
const NiFixedString& kData, unsigned int uiIndex);
// 设置/获取 bump map 重复,bump map 动画速度
virtual NiBool SetPropertyData(const NiFixedString& kPropertyName,
const NiPoint2& kData, unsigned int uiIndex = 0);
virtual NiBool GetPropertyData(const NiFixedString& kPropertyName,
NiPoint2& kData, unsigned int uiIndex = 0) const;
// 设置/获取水面颜色
virtual NiBool SetPropertyData(const NiFixedString& kPropertyName, const NiColor& kData, unsigned int uiIndex = 0);
virtual NiBool GetPropertyData(const NiFixedString& kPropertyName, NiColor& kData, unsigned int uiIndex = 0) const;
// 设置/获取水面位置,旋转
//virtual NiBool SetPropertyData(const NiFixedString& kPropertyName, const NiPoint3& kData, unsigned int uiIndex = 0);
//virtual NiBool GetPropertyData(const NiFixedString& kPropertyName, NiPoint3& kData, unsigned int uiIndex = 0) const;
// 设置/获取 水面 alpha
virtual NiBool SetPropertyData(const NiFixedString& kPropertyName, float fData, unsigned int uiIndex = 0);
virtual NiBool GetPropertyData(const NiFixedString& kPropertyName, float& fData, unsigned int uiIndex = 0) const;
// 设置/获取 反射纹理尺寸
virtual NiBool SetPropertyData(const NiFixedString& kPropertyName, unsigned short usData, unsigned int uiIndex = 0);
virtual NiBool GetPropertyData(const NiFixedString& kPropertyName, unsigned short& fData, unsigned int uiIndex = 0) const;
virtual NiBool SetPropertyData(const NiFixedString& kPropertyName,
NiObject*& pkData, unsigned int uiIndex);
virtual NiBool GetPropertyData(const NiFixedString& kPropertyName,
NiObject*& pkData, unsigned int uiIndex) const;
}; // end of class
}; // end of namespace
#pragma make_public(SceneCore::CWaterEntityComponent)