diff --git a/include/obj/NiLODNode.h b/include/obj/NiLODNode.h index 6beb4031c3f3afa6c1d30e48ae1adeffe35dcb89..778b219cbf188012662dc16223fd0aa6db7c826c 100644 --- a/include/obj/NiLODNode.h +++ b/include/obj/NiLODNode.h @@ -41,6 +41,24 @@ public: virtual list<NiObjectRef> GetRefs() const; virtual const Type & GetType() const; + /*! + * Point to calculate distance from for switching? + */ + Vector3 GetLodCenter() const; + void SetLodCenter( const Vector3 & value ); + + /*! + * The ranges of distance that each level of detail applies in. + */ + vector<LODRange > GetLodLevels() const; + void SetLodLevels( const vector<LODRange >& value ); + + /*! + * Refers to LOD level information, either distance or screen size based. + */ + Ref<NiLODData > GetRangeData() const; + void SetRangeData( Ref<NiLODData > value ); + protected: NI_L_O_D_NODE_MEMBERS STANDARD_INTERNAL_METHODS diff --git a/include/obj/NiRangeLODData.h b/include/obj/NiRangeLODData.h index 4136f1c3af6540f79ba88c4492fd35fca74ced91..a6377a9d3dbff1ae2826a4c21abacc410fdb6b60 100644 --- a/include/obj/NiRangeLODData.h +++ b/include/obj/NiRangeLODData.h @@ -17,7 +17,8 @@ class NiRangeLODData; typedef Ref<NiRangeLODData> NiRangeLODDataRef; /*! - * NiRangeLODData - Describes levels of detail. + * NiRangeLODData - Describes levels of detail based on distance of + * object from camera. */ class NIFLIB_API NiRangeLODData : public NI_RANGE_L_O_D_DATA_PARENT { @@ -36,6 +37,18 @@ public: virtual list<NiObjectRef> GetRefs() const; virtual const Type & GetType() const; + /*! + * ? + */ + Vector3 GetLodCenter() const; + void SetLodCenter( const Vector3 & value ); + + /*! + * The ranges of distance that each level of detail applies in. + */ + vector<LODRange > GetLodLevels() const; + void SetLodLevels( const vector<LODRange >& value ); + protected: NI_RANGE_L_O_D_DATA_MEMBERS STANDARD_INTERNAL_METHODS diff --git a/include/obj/NiScreenLODData.h b/include/obj/NiScreenLODData.h index 34b0c831471b33da86a0796503edc54d77f493e2..5b867338e00b418179a37583f3be4a72082cc960 100644 --- a/include/obj/NiScreenLODData.h +++ b/include/obj/NiScreenLODData.h @@ -13,7 +13,8 @@ class NiScreenLODData; typedef Ref<NiScreenLODData> NiScreenLODDataRef; /*! - * NiScreenLODData - Unknown. + * NiScreenLODData - Describes levels of detail based on size of object + * on screen? */ class NIFLIB_API NiScreenLODData : public NI_SCREEN_L_O_D_DATA_PARENT { @@ -32,6 +33,36 @@ public: virtual list<NiObjectRef> GetRefs() const; virtual const Type & GetType() const; + /*! + * The center of the bounding sphere? + */ + Vector3 GetBoundCenter() const; + void SetBoundCenter( const Vector3 & value ); + + /*! + * The radius of the bounding sphere? + */ + float GetBoundRadius() const; + void SetBoundRadius( float value ); + + /*! + * The center of the bounding sphere in world space? + */ + Vector3 GetWorldCenter() const; + void SetWorldCenter( const Vector3 & value ); + + /*! + * The radius of the bounding sphere in world space? + */ + float GetWorldRadius() const; + void SetWorldRadius( float value ); + + /*! + * The LOD levels based on proportion of screen size? + */ + vector<float > GetProportionLevels() const; + void SetProportionLevels( const vector<float >& value ); + protected: NI_SCREEN_L_O_D_DATA_MEMBERS STANDARD_INTERNAL_METHODS diff --git a/src/obj/NiLODNode.cpp b/src/obj/NiLODNode.cpp index f8b0d5c8d133eac6b98f329b79940b878db1fb42..455d2498fca924ccaf4d49ae2e1a8e566fcee413 100644 --- a/src/obj/NiLODNode.cpp +++ b/src/obj/NiLODNode.cpp @@ -37,3 +37,27 @@ const Type & NiLODNode::GetType() const { return TYPE; }; +Vector3 NiLODNode::GetLodCenter() const { + return lodCenter; +} + +void NiLODNode::SetLodCenter( const Vector3 & value ) { + lodCenter = value; +} + +vector<LODRange > NiLODNode::GetLodLevels() const { + return lodLevels; +} + +void NiLODNode::SetLodLevels( const vector<LODRange >& value ) { + lodLevels = value; +} + +Ref<NiLODData > NiLODNode::GetRangeData() const { + return rangeData; +} + +void NiLODNode::SetRangeData( Ref<NiLODData > value ) { + rangeData = value; +} + diff --git a/src/obj/NiRangeLODData.cpp b/src/obj/NiRangeLODData.cpp index ef33e227040a3ae46fba70e023ca0d6464dfe585..fa169a509d94c7a2b7ac42b30253a13f0a731c5d 100644 --- a/src/obj/NiRangeLODData.cpp +++ b/src/obj/NiRangeLODData.cpp @@ -36,3 +36,19 @@ const Type & NiRangeLODData::GetType() const { return TYPE; }; +Vector3 NiRangeLODData::GetLodCenter() const { + return lodCenter; +} + +void NiRangeLODData::SetLodCenter( const Vector3 & value ) { + lodCenter = value; +} + +vector<LODRange > NiRangeLODData::GetLodLevels() const { + return lodLevels; +} + +void NiRangeLODData::SetLodLevels( const vector<LODRange >& value ) { + lodLevels = value; +} + diff --git a/src/obj/NiScreenLODData.cpp b/src/obj/NiScreenLODData.cpp index f42cacaee3c8e3a4664e2f94ebc632714907a1bb..9bcadfc6402d46a7ffbf289ea9e8b764a3cef74b 100644 --- a/src/obj/NiScreenLODData.cpp +++ b/src/obj/NiScreenLODData.cpp @@ -35,3 +35,43 @@ const Type & NiScreenLODData::GetType() const { return TYPE; }; +Vector3 NiScreenLODData::GetBoundCenter() const { + return boundCenter; +} + +void NiScreenLODData::SetBoundCenter( const Vector3 & value ) { + boundCenter = value; +} + +float NiScreenLODData::GetBoundRadius() const { + return boundRadius; +} + +void NiScreenLODData::SetBoundRadius( float value ) { + boundRadius = value; +} + +Vector3 NiScreenLODData::GetWorldCenter() const { + return worldCenter; +} + +void NiScreenLODData::SetWorldCenter( const Vector3 & value ) { + worldCenter = value; +} + +float NiScreenLODData::GetWorldRadius() const { + return worldRadius; +} + +void NiScreenLODData::SetWorldRadius( float value ) { + worldRadius = value; +} + +vector<float > NiScreenLODData::GetProportionLevels() const { + return proportion; +} + +void NiScreenLODData::SetProportionLevels( const vector<float >& value ) { + proportion = value; +} +