OpenBarnyard
 
Loading...
Searching...
No Matches
TSceneObject Class Reference

#include <TSceneObject.h>

Public Member Functions

 TSceneObject ()
 
 ~TSceneObject ()
 
void Create (TManagedModel *a_pModelPtr)
 
void Delete ()
 
void DestroyModelInstance ()
 
void Update (TFLOAT a_fDeltaTime)
 
TBOOL Render (TUINT a_uiClipFlags, const TVector3 &a_rBounding)
 
TBOOL RenderIfVisible ()
 
TManagedModelGetModelRef ()
 
TModelInstanceGetInstance ()
 
TSkeletonInstanceGetSkeletonInstance ()
 
TTransformObjectGetTransform ()
 
void EnableSkeletonUpdate ()
 
void DisableSkeletonUpdate ()
 
void EnableUnknown1 ()
 
void DisableUnknown1 ()
 
TVector2GetSomeVector1 ()
 
TVector2GetSomeVector2 ()
 

Detailed Description

Definition at line 7 of file TSceneObject.h.

Constructor & Destructor Documentation

◆ TSceneObject()

TSceneObject::TSceneObject ( )

Definition at line 13 of file TSceneObject.cpp.

14{
15 m_SomeVector2.y = 1.0f;
16}

◆ ~TSceneObject()

TSceneObject::~TSceneObject ( )

Definition at line 18 of file TSceneObject.cpp.

19{
21}
void DestroyModelInstance()

Member Function Documentation

◆ Create()

void TSceneObject::Create ( TManagedModel * a_pModelPtr)

Definition at line 23 of file TSceneObject.cpp.

24{
25 m_eFlags |= 0b00001000;
26 m_pModelRef = a_pModelPtr;
27 m_pModelInstance = a_pModelPtr->GetModel()->CreateInstance();
28 TTODO( "Initialise some unknown values" );
29}
#define TTODO(DESC)
Definition Defines.h:134
TModelInstance * CreateInstance()
Definition TModel.cpp:196
TModel * GetModel() const

◆ Delete()

void TSceneObject::Delete ( )

Definition at line 31 of file TSceneObject.cpp.

32{
33 if ( this )
34 delete this;
35}

◆ DestroyModelInstance()

void TSceneObject::DestroyModelInstance ( )

Definition at line 93 of file TSceneObject.cpp.

94{
95 if ( m_pModelInstance )
96 {
97 m_pModelInstance->Delete();
98 m_pModelInstance = TNULL;
99 m_eFlags &= ~0b00001000;
100 }
101}
#define TNULL
Definition Typedefs.h:23

◆ DisableSkeletonUpdate()

void TSceneObject::DisableSkeletonUpdate ( )
inline

Definition at line 28 of file TSceneObject.h.

28{ m_eFlags &= ~1; }

◆ DisableUnknown1()

void TSceneObject::DisableUnknown1 ( )
inline

Definition at line 31 of file TSceneObject.h.

31{ m_eFlags &= ~4; }

◆ EnableSkeletonUpdate()

void TSceneObject::EnableSkeletonUpdate ( )
inline

Definition at line 27 of file TSceneObject.h.

27{ m_eFlags |= 1; }

◆ EnableUnknown1()

void TSceneObject::EnableUnknown1 ( )
inline

Definition at line 30 of file TSceneObject.h.

30{ m_eFlags |= 4; }

◆ GetInstance()

TModelInstance * TSceneObject::GetInstance ( )
inline

Definition at line 23 of file TSceneObject.h.

23{ return m_pModelInstance; }

◆ GetModelRef()

TManagedModel * TSceneObject::GetModelRef ( )
inline

Definition at line 22 of file TSceneObject.h.

22{ return m_pModelRef; }

◆ GetSkeletonInstance()

TSkeletonInstance * TSceneObject::GetSkeletonInstance ( )
inline

Definition at line 24 of file TSceneObject.h.

24{ return GetInstance()->GetSkeletonInstance(); }
TSkeletonInstance * GetSkeletonInstance() const
Definition TModel.cpp:337
TModelInstance * GetInstance()

◆ GetSomeVector1()

TVector2 & TSceneObject::GetSomeVector1 ( )
inline

Definition at line 33 of file TSceneObject.h.

33{ return m_SomeVector1; }

◆ GetSomeVector2()

TVector2 & TSceneObject::GetSomeVector2 ( )
inline

Definition at line 34 of file TSceneObject.h.

34{ return m_SomeVector2; }

◆ GetTransform()

TTransformObject & TSceneObject::GetTransform ( )
inline

Definition at line 25 of file TSceneObject.h.

25{ return m_TransformObject; }

◆ Render()

TBOOL TSceneObject::Render ( TUINT a_uiClipFlags,
const TVector3 & a_rBounding )

Definition at line 42 of file TSceneObject.cpp.

43{
44 TIMPLEMENT();
46
47 m_pModelInstance->SetLOD( 0 );
48
49 auto uiOldClipFlags = pContext->SetClipFlags( a_uiClipFlags );
50
51 m_TransformObject.Push();
52 m_pModelInstance->Render();
53 m_TransformObject.Pop();
54
55 pContext->SetClipFlags( uiOldClipFlags );
56
57 return TTRUE;
58}
#define TIMPLEMENT()
Definition Defines.h:136
#define TTRUE
Definition Typedefs.h:25
TUINT SetClipFlags(TUINT a_uiClipFlags)
TRenderContext * GetCurrentContext() const
static TFORCEINLINE TRenderInterface * GetSingleton()
Definition TSingleton.h:49

◆ RenderIfVisible()

TBOOL TSceneObject::RenderIfVisible ( )

Definition at line 60 of file TSceneObject.cpp.

61{
63 auto pModel = m_pModelInstance->GetModel();
64 auto& lod = pModel->GetLOD( 0 );
65
66 TVector4 transformScale = m_TransformObject.GetScale();
67 TSphere bounding = lod.BoundingSphere;
68 bounding.AsVector4().Multiply( TVector4(
69 transformScale.x,
70 transformScale.y,
71 transformScale.z,
72 TMath::Max( TMath::Max( transformScale.x, transformScale.y ), transformScale.z )
73 ) );
74
75 TMatrix44 transformMatrix;
76 m_TransformObject.GetLocalMatrixImp( transformMatrix );
77
78 TMatrix44::TransformVector( bounding.GetOrigin(), transformMatrix, bounding.GetOrigin() );
79
80 if ( bounding.GetRadius() > 0.0f )
81 {
82 auto pWorldPlanes = pContext->GetWorldPlanes();
83
84 if ( !pContext->CullSphereToFrustumSimple( bounding, pWorldPlanes, 6 ) )
85 {
86 return TFALSE;
87 }
88 }
89
90 return Render( pContext->GetClipFlags(), bounding.GetOrigin() );
91}
#define TFALSE
Definition Typedefs.h:24
TFORCEINLINE const T & Max(const T &a, const T &b)
static constexpr void TransformVector(TVector3 &a_rOutVector, const TMatrix44 &a_rMatrix, const TVector3 &a_rVector)
Definition TMatrix44.h:280
TFORCEINLINE TVector4 & AsVector4()
Definition TSphere.h:111
constexpr TFORCEINLINE TFLOAT GetRadius() const
Definition TSphere.h:106
constexpr TFORCEINLINE TVector3 & GetOrigin()
Definition TSphere.h:96
constexpr void Multiply(const TVector4 &vec)
Definition TVector4.h:170
TFLOAT x
Definition TVector4.h:367
TFLOAT y
Definition TVector4.h:367
TFLOAT z
Definition TVector4.h:367
TBOOL Render(TUINT a_uiClipFlags, const TVector3 &a_rBounding)

◆ Update()

void TSceneObject::Update ( TFLOAT a_fDeltaTime)

Definition at line 37 of file TSceneObject.cpp.

38{
39 m_pModelInstance->Update( a_fDeltaTime );
40}

The documentation for this class was generated from the following files: