Added support for loading uncompressed animations and playing them back

This commit is contained in:
parax0
2016-04-07 12:15:24 -06:00
parent 2376a36f0b
commit ef523c2339
22 changed files with 399 additions and 18 deletions

View File

@@ -1,5 +1,6 @@
#include "CCharacterNode.h"
#include <Core/Render/CRenderer.h>
#include "Core/Render/CRenderer.h"
#include <Common/CTimer.h>
CCharacterNode::CCharacterNode(CScene *pScene, u32 NodeID, CAnimSet *pChar /*= 0*/, CSceneNode *pParent /*= 0*/)
: CSceneNode(pScene, NodeID, pParent)
@@ -34,6 +35,8 @@ void CCharacterNode::AddToRenderer(CRenderer *pRenderer, const SViewInfo& /*rkVi
void CCharacterNode::Draw(FRenderOptions Options, int /*ComponentIndex*/, const SViewInfo& /*rkViewInfo*/)
{
CSkeleton *pSkel = mpCharacter->NodeSkeleton(mActiveCharSet);
CAnimation *pAnim = mpCharacter->Animation(mActiveAnim);
pSkel->UpdateTransform(pAnim, (float) CTimer::GlobalTime(), false);
pSkel->Draw(Options);
}
@@ -62,3 +65,8 @@ void CCharacterNode::SetActiveCharSet(u32 CharIndex)
MarkTransformChanged();
}
}
void CCharacterNode::SetActiveAnim(u32 AnimIndex)
{
mActiveAnim = AnimIndex;
}

View File

@@ -8,6 +8,7 @@ class CCharacterNode : public CSceneNode
{
TResPtr<CAnimSet> mpCharacter;
u32 mActiveCharSet;
u32 mActiveAnim;
public:
explicit CCharacterNode(CScene *pScene, u32 NodeID, CAnimSet *pChar = 0, CSceneNode *pParent = 0);
@@ -19,9 +20,11 @@ public:
virtual SRayIntersection RayNodeIntersectTest(const CRay& rkRay, u32 AssetID, const SViewInfo& rkViewInfo);
inline CAnimSet* Character() const { return mpCharacter; }
inline u32 ActiveCharSet() const { return mActiveCharSet; }
inline u32 ActiveAnim() const { return mActiveAnim; }
void SetCharacter(CAnimSet *pChar);
void SetActiveCharSet(u32 CharIndex);
void SetActiveAnim(u32 AnimIndex);
};
#endif // CCHARACTERNODE_H