mirror of
https://github.com/AxioDL/PrimeWorldEditor.git
synced 2025-12-18 01:15:26 +00:00
Refactor so PWE compiles with the newly externalized LibCommon
This commit is contained in:
@@ -9,7 +9,7 @@ class CAnimEventData : public CResource
|
||||
|
||||
struct SEvent
|
||||
{
|
||||
u32 mCharacterIndex;
|
||||
uint32 mCharacterIndex;
|
||||
CAssetID mAssetRef;
|
||||
};
|
||||
|
||||
@@ -30,7 +30,7 @@ public:
|
||||
|
||||
void AddDependenciesToTree(CDependencyTree *pTree) const
|
||||
{
|
||||
for (u32 iEvt = 0; iEvt < mEvents.size(); iEvt++)
|
||||
for (uint32 iEvt = 0; iEvt < mEvents.size(); iEvt++)
|
||||
{
|
||||
const SEvent& rkEvent = mEvents[iEvt];
|
||||
CAssetID ID = rkEvent.mAssetRef;
|
||||
@@ -43,11 +43,11 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
inline u32 NumEvents() const { return mEvents.size(); }
|
||||
inline u32 EventCharacterIndex(u32 EventIdx) const { return mEvents[EventIdx].mCharacterIndex; }
|
||||
inline CAssetID EventAssetRef(u32 EventIdx) const { return mEvents[EventIdx].mAssetRef; }
|
||||
inline uint32 NumEvents() const { return mEvents.size(); }
|
||||
inline uint32 EventCharacterIndex(uint32 EventIdx) const { return mEvents[EventIdx].mCharacterIndex; }
|
||||
inline CAssetID EventAssetRef(uint32 EventIdx) const { return mEvents[EventIdx].mAssetRef; }
|
||||
|
||||
inline void AddEvent(u32 CharIdx, CAssetID AssetID) { mEvents.push_back( SEvent { CharIdx, AssetID } ); }
|
||||
inline void AddEvent(uint32 CharIdx, CAssetID AssetID) { mEvents.push_back( SEvent { CharIdx, AssetID } ); }
|
||||
};
|
||||
|
||||
#endif // CANIMEVENTDATA
|
||||
|
||||
@@ -12,14 +12,14 @@
|
||||
#include "Core/Resource/CResource.h"
|
||||
#include "Core/Resource/TResPtr.h"
|
||||
#include "Core/Resource/Model/CModel.h"
|
||||
#include <Common/types.h>
|
||||
#include <Common/BasicTypes.h>
|
||||
|
||||
#include <vector>
|
||||
|
||||
// Animation structures
|
||||
struct SAdditiveAnim
|
||||
{
|
||||
u32 AnimID;
|
||||
uint32 AnimID;
|
||||
float FadeInTime;
|
||||
float FadeOutTime;
|
||||
};
|
||||
@@ -32,15 +32,15 @@ struct SAnimation
|
||||
|
||||
struct STransition
|
||||
{
|
||||
u32 Unknown;
|
||||
u32 AnimIdA;
|
||||
u32 AnimIdB;
|
||||
uint32 Unknown;
|
||||
uint32 AnimIdA;
|
||||
uint32 AnimIdB;
|
||||
IMetaTransition *pMetaTrans;
|
||||
};
|
||||
|
||||
struct SHalfTransition
|
||||
{
|
||||
u32 AnimID;
|
||||
uint32 AnimID;
|
||||
IMetaTransition *pMetaTrans;
|
||||
};
|
||||
|
||||
@@ -62,7 +62,7 @@ struct SOverlayModel
|
||||
|
||||
struct SSetCharacter
|
||||
{
|
||||
u32 ID;
|
||||
uint32 ID;
|
||||
TString Name;
|
||||
TResPtr<CModel> pModel;
|
||||
TResPtr<CSkin> pSkin;
|
||||
@@ -79,7 +79,7 @@ struct SSetCharacter
|
||||
std::vector<CAssetID> SoundEffects;
|
||||
std::vector<CAssetID> DKDependencies;
|
||||
CAssetID SpatialPrimitives;
|
||||
std::set<u32> UsedAnimationIndices;
|
||||
std::set<uint32> UsedAnimationIndices;
|
||||
};
|
||||
|
||||
class CAnimSet : public CResource
|
||||
@@ -109,19 +109,19 @@ public:
|
||||
|
||||
~CAnimSet()
|
||||
{
|
||||
for (u32 iAnim = 0; iAnim < mAnimations.size(); iAnim++)
|
||||
for (uint32 iAnim = 0; iAnim < mAnimations.size(); iAnim++)
|
||||
delete mAnimations[iAnim].pMetaAnim;
|
||||
|
||||
for (u32 iTrans = 0; iTrans < mTransitions.size(); iTrans++)
|
||||
for (uint32 iTrans = 0; iTrans < mTransitions.size(); iTrans++)
|
||||
delete mTransitions[iTrans].pMetaTrans;
|
||||
|
||||
for (u32 iHalf = 0; iHalf < mHalfTransitions.size(); iHalf++)
|
||||
for (uint32 iHalf = 0; iHalf < mHalfTransitions.size(); iHalf++)
|
||||
delete mHalfTransitions[iHalf].pMetaTrans;
|
||||
|
||||
delete mpDefaultTransition;
|
||||
|
||||
// For MP2, anim events need to be cleaned up manually
|
||||
for (u32 iEvent = 0; iEvent < mAnimEvents.size(); iEvent++)
|
||||
for (uint32 iEvent = 0; iEvent < mAnimEvents.size(); iEvent++)
|
||||
{
|
||||
ASSERT(mAnimEvents[iEvent] && !mAnimEvents[iEvent]->Entry());
|
||||
delete mAnimEvents[iEvent];
|
||||
@@ -133,7 +133,7 @@ public:
|
||||
CDependencyTree *pTree = new CDependencyTree();
|
||||
|
||||
// Character dependencies
|
||||
for (u32 iChar = 0; iChar < mCharacters.size(); iChar++)
|
||||
for (uint32 iChar = 0; iChar < mCharacters.size(); iChar++)
|
||||
{
|
||||
CSetCharacterDependency *pCharTree = CSetCharacterDependency::BuildTree( mCharacters[iChar] );
|
||||
ASSERT(pCharTree);
|
||||
@@ -143,7 +143,7 @@ public:
|
||||
// Animation dependencies
|
||||
if (Game() <= EGame::Echoes)
|
||||
{
|
||||
for (u32 iAnim = 0; iAnim < mAnimations.size(); iAnim++)
|
||||
for (uint32 iAnim = 0; iAnim < mAnimations.size(); iAnim++)
|
||||
{
|
||||
CSetAnimationDependency *pAnimTree = CSetAnimationDependency::BuildTree(this, iAnim);
|
||||
ASSERT(pAnimTree);
|
||||
@@ -157,7 +157,7 @@ public:
|
||||
std::set<CAnimPrimitive> PrimitiveSet;
|
||||
|
||||
// Animations
|
||||
for (u32 iAnim = 0; iAnim < mAnimations.size(); iAnim++)
|
||||
for (uint32 iAnim = 0; iAnim < mAnimations.size(); iAnim++)
|
||||
{
|
||||
const SAnimation& rkAnim = mAnimations[iAnim];
|
||||
rkAnim.pMetaAnim->GetUniquePrimitives(PrimitiveSet);
|
||||
@@ -174,7 +174,7 @@ public:
|
||||
}
|
||||
|
||||
// Event sounds
|
||||
for (u32 iSound = 0; iSound < rkChar.SoundEffects.size(); iSound++)
|
||||
for (uint32 iSound = 0; iSound < rkChar.SoundEffects.size(); iSound++)
|
||||
{
|
||||
pTree->AddDependency(rkChar.SoundEffects[iSound]);
|
||||
}
|
||||
@@ -184,14 +184,14 @@ public:
|
||||
{
|
||||
const SSetCharacter& rkChar = mCharacters[0];
|
||||
|
||||
for (u32 iDep = 0; iDep < rkChar.DKDependencies.size(); iDep++)
|
||||
for (uint32 iDep = 0; iDep < rkChar.DKDependencies.size(); iDep++)
|
||||
pTree->AddDependency(rkChar.DKDependencies[iDep]);
|
||||
}
|
||||
|
||||
return pTree;
|
||||
}
|
||||
|
||||
CAnimation* FindAnimationAsset(u32 AnimID) const
|
||||
CAnimation* FindAnimationAsset(uint32 AnimID) const
|
||||
{
|
||||
if (AnimID >= 0 && AnimID < mAnimPrimitives.size())
|
||||
{
|
||||
@@ -204,27 +204,27 @@ public:
|
||||
|
||||
void GetUniquePrimitives(std::set<CAnimPrimitive>& rPrimSet) const
|
||||
{
|
||||
for (u32 iAnim = 0; iAnim < mAnimPrimitives.size(); iAnim++)
|
||||
for (uint32 iAnim = 0; iAnim < mAnimPrimitives.size(); iAnim++)
|
||||
rPrimSet.insert(mAnimPrimitives[iAnim]);
|
||||
}
|
||||
|
||||
// Accessors
|
||||
inline u32 NumCharacters() const { return mCharacters.size(); }
|
||||
inline u32 NumAnimations() const { return mAnimations.size(); }
|
||||
inline uint32 NumCharacters() const { return mCharacters.size(); }
|
||||
inline uint32 NumAnimations() const { return mAnimations.size(); }
|
||||
|
||||
inline const SSetCharacter* Character(u32 Index) const
|
||||
inline const SSetCharacter* Character(uint32 Index) const
|
||||
{
|
||||
ASSERT(Index >= 0 && Index < NumCharacters());
|
||||
return &mCharacters[Index];
|
||||
}
|
||||
|
||||
inline const SAnimation* Animation(u32 Index) const
|
||||
inline const SAnimation* Animation(uint32 Index) const
|
||||
{
|
||||
ASSERT(Index >= 0 && Index < NumAnimations());
|
||||
return &mAnimations[Index];
|
||||
}
|
||||
|
||||
CAnimEventData* AnimationEventData(u32 Index) const
|
||||
CAnimEventData* AnimationEventData(uint32 Index) const
|
||||
{
|
||||
ASSERT(Index >= 0 && Index < NumAnimations());
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#include "CAnimation.h"
|
||||
#include <Math/CTransform4f.h>
|
||||
#include <Math/MathUtil.h>
|
||||
#include <Common/Math/CTransform4f.h>
|
||||
#include <Common/Math/MathUtil.h>
|
||||
|
||||
CAnimation::CAnimation(CResourceEntry *pEntry /*= 0*/)
|
||||
: CResource(pEntry)
|
||||
@@ -8,7 +8,7 @@ CAnimation::CAnimation(CResourceEntry *pEntry /*= 0*/)
|
||||
, mTickInterval(0.0333333f)
|
||||
, mNumKeys(0)
|
||||
{
|
||||
for (u32 iBone = 0; iBone < 100; iBone++)
|
||||
for (uint32 iBone = 0; iBone < 100; iBone++)
|
||||
{
|
||||
mBoneInfo[iBone].TranslationChannelIdx = 0xFF;
|
||||
mBoneInfo[iBone].RotationChannelIdx = 0xFF;
|
||||
@@ -23,7 +23,7 @@ CDependencyTree* CAnimation::BuildDependencyTree() const
|
||||
return pTree;
|
||||
}
|
||||
|
||||
void CAnimation::EvaluateTransform(float Time, u32 BoneID, CVector3f *pOutTranslation, CQuaternion *pOutRotation, CVector3f *pOutScale) const
|
||||
void CAnimation::EvaluateTransform(float Time, uint32 BoneID, CVector3f *pOutTranslation, CQuaternion *pOutRotation, CVector3f *pOutScale) const
|
||||
{
|
||||
const bool kInterpolate = true;
|
||||
if (!pOutTranslation && !pOutRotation && !pOutScale) return;
|
||||
@@ -32,12 +32,12 @@ void CAnimation::EvaluateTransform(float Time, u32 BoneID, CVector3f *pOutTransl
|
||||
if (Time >= mDuration) Time = mDuration;
|
||||
if (Time >= FLT_EPSILON) Time -= FLT_EPSILON;
|
||||
float t = fmodf(Time, mTickInterval) / mTickInterval;
|
||||
u32 LowKey = (u32) (Time / mTickInterval);
|
||||
uint32 LowKey = (uint32) (Time / mTickInterval);
|
||||
if (LowKey == (mNumKeys - 1)) LowKey = mNumKeys - 2;
|
||||
|
||||
u8 ScaleChannel = mBoneInfo[BoneID].ScaleChannelIdx;
|
||||
u8 RotChannel = mBoneInfo[BoneID].RotationChannelIdx;
|
||||
u8 TransChannel = mBoneInfo[BoneID].TranslationChannelIdx;
|
||||
uint8 ScaleChannel = mBoneInfo[BoneID].ScaleChannelIdx;
|
||||
uint8 RotChannel = mBoneInfo[BoneID].RotationChannelIdx;
|
||||
uint8 TransChannel = mBoneInfo[BoneID].TranslationChannelIdx;
|
||||
|
||||
if (ScaleChannel != 0xFF && pOutScale)
|
||||
{
|
||||
@@ -61,7 +61,7 @@ void CAnimation::EvaluateTransform(float Time, u32 BoneID, CVector3f *pOutTransl
|
||||
}
|
||||
}
|
||||
|
||||
bool CAnimation::HasTranslation(u32 BoneID) const
|
||||
bool CAnimation::HasTranslation(uint32 BoneID) const
|
||||
{
|
||||
return (mBoneInfo[BoneID].TranslationChannelIdx != 0xFF);
|
||||
}
|
||||
|
||||
@@ -4,8 +4,8 @@
|
||||
#include "Core/Resource/CResource.h"
|
||||
#include "Core/Resource/TResPtr.h"
|
||||
#include "Core/Resource/Animation/CAnimEventData.h"
|
||||
#include <Math/CQuaternion.h>
|
||||
#include <Math/CVector3f.h>
|
||||
#include <Common/Math/CQuaternion.h>
|
||||
#include <Common/Math/CVector3f.h>
|
||||
#include <vector>
|
||||
|
||||
class CAnimation : public CResource
|
||||
@@ -19,7 +19,7 @@ class CAnimation : public CResource
|
||||
|
||||
float mDuration;
|
||||
float mTickInterval;
|
||||
u32 mNumKeys;
|
||||
uint32 mNumKeys;
|
||||
|
||||
std::vector<TScaleChannel> mScaleChannels;
|
||||
std::vector<TRotationChannel> mRotationChannels;
|
||||
@@ -27,9 +27,9 @@ class CAnimation : public CResource
|
||||
|
||||
struct SBoneChannelInfo
|
||||
{
|
||||
u8 ScaleChannelIdx;
|
||||
u8 RotationChannelIdx;
|
||||
u8 TranslationChannelIdx;
|
||||
uint8 ScaleChannelIdx;
|
||||
uint8 RotationChannelIdx;
|
||||
uint8 TranslationChannelIdx;
|
||||
};
|
||||
SBoneChannelInfo mBoneInfo[100];
|
||||
|
||||
@@ -38,11 +38,11 @@ class CAnimation : public CResource
|
||||
public:
|
||||
CAnimation(CResourceEntry *pEntry = 0);
|
||||
CDependencyTree* BuildDependencyTree() const;
|
||||
void EvaluateTransform(float Time, u32 BoneID, CVector3f *pOutTranslation, CQuaternion *pOutRotation, CVector3f *pOutScale) const;
|
||||
bool HasTranslation(u32 BoneID) const;
|
||||
void EvaluateTransform(float Time, uint32 BoneID, CVector3f *pOutTranslation, CQuaternion *pOutRotation, CVector3f *pOutScale) const;
|
||||
bool HasTranslation(uint32 BoneID) const;
|
||||
|
||||
inline float Duration() const { return mDuration; }
|
||||
inline u32 NumKeys() const { return mNumKeys; }
|
||||
inline uint32 NumKeys() const { return mNumKeys; }
|
||||
inline float TickInterval() const { return mTickInterval; }
|
||||
inline CAnimEventData* EventData() const { return mpEventData; }
|
||||
};
|
||||
|
||||
@@ -45,7 +45,7 @@ CAnimationParameters::CAnimationParameters(IInputStream& rSCLY, EGame Game)
|
||||
|
||||
else if (Game == EGame::DKCReturns)
|
||||
{
|
||||
u8 Flags = rSCLY.ReadByte();
|
||||
uint8 Flags = rSCLY.ReadByte();
|
||||
|
||||
// 0x80 - CharacterAnimationSet is empty.
|
||||
if (Flags & 0x80)
|
||||
@@ -114,11 +114,11 @@ void CAnimationParameters::Write(IOutputStream& rSCLY)
|
||||
else
|
||||
{
|
||||
if (!mCharacterID.IsValid())
|
||||
rSCLY.WriteByte((u8) 0x80);
|
||||
rSCLY.WriteByte((uint8) 0x80);
|
||||
|
||||
else
|
||||
{
|
||||
u8 Flag = 0;
|
||||
uint8 Flag = 0;
|
||||
if (mAnimIndex != -1) Flag |= 0x20;
|
||||
if (mUnknown2 != 0 || mUnknown3 != 0) Flag |= 0x40;
|
||||
|
||||
@@ -156,7 +156,7 @@ void CAnimationParameters::Serialize(IArchive& rArc)
|
||||
}
|
||||
}
|
||||
|
||||
const SSetCharacter* CAnimationParameters::GetCurrentSetCharacter(s32 NodeIndex /*= -1*/)
|
||||
const SSetCharacter* CAnimationParameters::GetCurrentSetCharacter(int32 NodeIndex /*= -1*/)
|
||||
{
|
||||
CAnimSet *pSet = AnimSet();
|
||||
|
||||
@@ -165,27 +165,27 @@ const SSetCharacter* CAnimationParameters::GetCurrentSetCharacter(s32 NodeIndex
|
||||
if (NodeIndex == -1)
|
||||
NodeIndex = mCharIndex;
|
||||
|
||||
if (mCharIndex != -1 && pSet->NumCharacters() > (u32) NodeIndex)
|
||||
if (mCharIndex != -1 && pSet->NumCharacters() > (uint32) NodeIndex)
|
||||
return pSet->Character(NodeIndex);
|
||||
}
|
||||
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
CModel* CAnimationParameters::GetCurrentModel(s32 NodeIndex /*= -1*/)
|
||||
CModel* CAnimationParameters::GetCurrentModel(int32 NodeIndex /*= -1*/)
|
||||
{
|
||||
const SSetCharacter *pkChar = GetCurrentSetCharacter(NodeIndex);
|
||||
return pkChar ? pkChar->pModel : nullptr;
|
||||
}
|
||||
|
||||
TString CAnimationParameters::GetCurrentCharacterName(s32 NodeIndex /*= -1*/)
|
||||
TString CAnimationParameters::GetCurrentCharacterName(int32 NodeIndex /*= -1*/)
|
||||
{
|
||||
const SSetCharacter *pkChar = GetCurrentSetCharacter(NodeIndex);
|
||||
return pkChar ? pkChar->Name : "";
|
||||
}
|
||||
|
||||
// ************ ACCESSORS ************
|
||||
u32 CAnimationParameters::Unknown(u32 Index)
|
||||
uint32 CAnimationParameters::Unknown(uint32 Index)
|
||||
{
|
||||
// mAnimIndex isn't unknown, but I'm too lazy to move it because there's a lot
|
||||
// of UI stuff that depends on these functions atm for accessing and editing parameters.
|
||||
@@ -214,14 +214,14 @@ void CAnimationParameters::SetResource(const CAssetID& rkID)
|
||||
CResourceEntry *pEntry = gpResourceStore->FindEntry(rkID);
|
||||
|
||||
if (!pEntry)
|
||||
Log::Error("Invalid resource ID passed to CAnimationParameters: " + rkID.ToString());
|
||||
errorf("Invalid resource ID passed to CAnimationParameters: %s", *rkID.ToString());
|
||||
else if (pEntry->ResourceType() != eAnimSet && pEntry->ResourceType() != eCharacter)
|
||||
Log::Error("Resource with invalid type passed to CAnimationParameters: " + pEntry->CookedAssetPath().GetFileName());
|
||||
errorf("Resource with invalid type passed to CAnimationParameters: %s", *pEntry->CookedAssetPath().GetFileName());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void CAnimationParameters::SetUnknown(u32 Index, u32 Value)
|
||||
void CAnimationParameters::SetUnknown(uint32 Index, uint32 Value)
|
||||
{
|
||||
switch (Index)
|
||||
{
|
||||
|
||||
@@ -10,10 +10,10 @@ class CAnimationParameters
|
||||
EGame mGame;
|
||||
CAssetID mCharacterID;
|
||||
|
||||
u32 mCharIndex;
|
||||
u32 mAnimIndex;
|
||||
u32 mUnknown2;
|
||||
u32 mUnknown3;
|
||||
uint32 mCharIndex;
|
||||
uint32 mAnimIndex;
|
||||
uint32 mUnknown2;
|
||||
uint32 mUnknown3;
|
||||
|
||||
public:
|
||||
CAnimationParameters();
|
||||
@@ -22,18 +22,18 @@ public:
|
||||
void Write(IOutputStream& rSCLY);
|
||||
void Serialize(IArchive& rArc);
|
||||
|
||||
const SSetCharacter* GetCurrentSetCharacter(s32 NodeIndex = -1);
|
||||
CModel* GetCurrentModel(s32 NodeIndex = -1);
|
||||
TString GetCurrentCharacterName(s32 NodeIndex = -1);
|
||||
const SSetCharacter* GetCurrentSetCharacter(int32 NodeIndex = -1);
|
||||
CModel* GetCurrentModel(int32 NodeIndex = -1);
|
||||
TString GetCurrentCharacterName(int32 NodeIndex = -1);
|
||||
|
||||
// Accessors
|
||||
inline EGame Version() const { return mGame; }
|
||||
inline CAssetID ID() const { return mCharacterID; }
|
||||
inline CAnimSet* AnimSet() const { return (CAnimSet*) gpResourceStore->LoadResource(mCharacterID); }
|
||||
inline u32 CharacterIndex() const { return mCharIndex; }
|
||||
inline u32 AnimIndex() const { return mAnimIndex; }
|
||||
inline void SetCharIndex(u32 Index) { mCharIndex = Index; }
|
||||
inline void SetAnimIndex(u32 Index) { mAnimIndex = Index; }
|
||||
inline EGame Version() const { return mGame; }
|
||||
inline CAssetID ID() const { return mCharacterID; }
|
||||
inline CAnimSet* AnimSet() const { return (CAnimSet*) gpResourceStore->LoadResource(mCharacterID); }
|
||||
inline uint32 CharacterIndex() const { return mCharIndex; }
|
||||
inline uint32 AnimIndex() const { return mAnimIndex; }
|
||||
inline void SetCharIndex(uint32 Index) { mCharIndex = Index; }
|
||||
inline void SetAnimIndex(uint32 Index) { mAnimIndex = Index; }
|
||||
|
||||
inline void SetGame(EGame Game)
|
||||
{
|
||||
@@ -49,9 +49,9 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
u32 Unknown(u32 Index);
|
||||
uint32 Unknown(uint32 Index);
|
||||
void SetResource(const CAssetID& rkID);
|
||||
void SetUnknown(u32 Index, u32 Value);
|
||||
void SetUnknown(uint32 Index, uint32 Value);
|
||||
|
||||
// Operators
|
||||
inline CAnimationParameters& operator=(const CAnimationParameters& rkOther)
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
#include "Core/Render/CBoneTransformData.h"
|
||||
#include "Core/Render/CDrawUtil.h"
|
||||
#include "Core/Render/CGraphics.h"
|
||||
#include <Common/AssertMacro.h>
|
||||
#include <Math/MathUtil.h>
|
||||
#include <Common/Macros.h>
|
||||
#include <Common/Math/MathUtil.h>
|
||||
|
||||
// ************ CBone ************
|
||||
CBone::CBone(CSkeleton *pSkel)
|
||||
@@ -37,7 +37,7 @@ void CBone::UpdateTransform(CBoneTransformData& rData, const SBoneTransformInfo&
|
||||
rTransform *= mInvBind;
|
||||
|
||||
// Calculate children
|
||||
for (u32 iChild = 0; iChild < mChildren.size(); iChild++)
|
||||
for (uint32 iChild = 0; iChild < mChildren.size(); iChild++)
|
||||
mChildren[iChild]->UpdateTransform(rData, TransformInfo, pAnim, Time, AnchorRoot);
|
||||
}
|
||||
|
||||
@@ -70,13 +70,13 @@ CSkeleton::CSkeleton(CResourceEntry *pEntry /*= 0*/)
|
||||
|
||||
CSkeleton::~CSkeleton()
|
||||
{
|
||||
for (u32 iBone = 0; iBone < mBones.size(); iBone++)
|
||||
for (uint32 iBone = 0; iBone < mBones.size(); iBone++)
|
||||
delete mBones[iBone];
|
||||
}
|
||||
|
||||
CBone* CSkeleton::BoneByID(u32 BoneID) const
|
||||
CBone* CSkeleton::BoneByID(uint32 BoneID) const
|
||||
{
|
||||
for (u32 iBone = 0; iBone < mBones.size(); iBone++)
|
||||
for (uint32 iBone = 0; iBone < mBones.size(); iBone++)
|
||||
{
|
||||
if (mBones[iBone]->ID() == BoneID)
|
||||
return mBones[iBone];
|
||||
@@ -87,7 +87,7 @@ CBone* CSkeleton::BoneByID(u32 BoneID) const
|
||||
|
||||
CBone* CSkeleton::BoneByName(const TString& rkBoneName) const
|
||||
{
|
||||
for (u32 iBone = 0; iBone < mBones.size(); iBone++)
|
||||
for (uint32 iBone = 0; iBone < mBones.size(); iBone++)
|
||||
{
|
||||
if (mBones[iBone]->Name() == rkBoneName)
|
||||
return mBones[iBone];
|
||||
@@ -96,11 +96,11 @@ CBone* CSkeleton::BoneByName(const TString& rkBoneName) const
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
u32 CSkeleton::MaxBoneID() const
|
||||
uint32 CSkeleton::MaxBoneID() const
|
||||
{
|
||||
u32 ID = 0;
|
||||
uint32 ID = 0;
|
||||
|
||||
for (u32 iBone = 0; iBone < mBones.size(); iBone++)
|
||||
for (uint32 iBone = 0; iBone < mBones.size(); iBone++)
|
||||
{
|
||||
if (mBones[iBone]->ID() > ID)
|
||||
ID = mBones[iBone]->ID();
|
||||
@@ -121,7 +121,7 @@ void CSkeleton::Draw(FRenderOptions /*Options*/, const CBoneTransformData *pkDat
|
||||
glLineWidth(1.f);
|
||||
|
||||
// Draw all child links first to minimize model matrix swaps.
|
||||
for (u32 iBone = 0; iBone < mBones.size(); iBone++)
|
||||
for (uint32 iBone = 0; iBone < mBones.size(); iBone++)
|
||||
{
|
||||
CBone *pBone = mBones[iBone];
|
||||
CVector3f BonePos = pkData ? pBone->TransformedPosition(*pkData) : pBone->Position();
|
||||
@@ -136,7 +136,7 @@ void CSkeleton::Draw(FRenderOptions /*Options*/, const CBoneTransformData *pkDat
|
||||
}
|
||||
|
||||
// Draw child links
|
||||
for (u32 iChild = 0; iChild < pBone->NumChildren(); iChild++)
|
||||
for (uint32 iChild = 0; iChild < pBone->NumChildren(); iChild++)
|
||||
{
|
||||
CBone *pChild = pBone->ChildByIndex(iChild);
|
||||
CVector3f ChildPos = pkData ? pChild->TransformedPosition(*pkData) : pChild->Position();
|
||||
@@ -147,7 +147,7 @@ void CSkeleton::Draw(FRenderOptions /*Options*/, const CBoneTransformData *pkDat
|
||||
// Draw bone spheres
|
||||
CTransform4f BaseTransform = CGraphics::sMVPBlock.ModelMatrix;
|
||||
|
||||
for (u32 iBone = 0; iBone < mBones.size(); iBone++)
|
||||
for (uint32 iBone = 0; iBone < mBones.size(); iBone++)
|
||||
{
|
||||
CBone *pBone = mBones[iBone];
|
||||
CVector3f BonePos = pkData ? pBone->TransformedPosition(*pkData) : pBone->Position();
|
||||
@@ -161,11 +161,11 @@ void CSkeleton::Draw(FRenderOptions /*Options*/, const CBoneTransformData *pkDat
|
||||
}
|
||||
}
|
||||
|
||||
std::pair<s32,float> CSkeleton::RayIntersect(const CRay& rkRay, const CBoneTransformData& rkData)
|
||||
std::pair<int32,float> CSkeleton::RayIntersect(const CRay& rkRay, const CBoneTransformData& rkData)
|
||||
{
|
||||
std::pair<s32,float> Out(-1, FLT_MAX);
|
||||
std::pair<int32,float> Out(-1, FLT_MAX);
|
||||
|
||||
for (u32 iBone = 0; iBone < mBones.size(); iBone++)
|
||||
for (uint32 iBone = 0; iBone < mBones.size(); iBone++)
|
||||
{
|
||||
CBone *pBone = mBones[iBone];
|
||||
CVector3f BonePos = pBone->TransformedPosition(rkData);
|
||||
|
||||
@@ -4,10 +4,10 @@
|
||||
#include "CAnimation.h"
|
||||
#include "Core/Render/FRenderOptions.h"
|
||||
#include "Core/Resource/CResource.h"
|
||||
#include <Common/BasicTypes.h>
|
||||
#include <Common/TString.h>
|
||||
#include <Common/types.h>
|
||||
#include <Math/CRay.h>
|
||||
#include <Math/CVector3f.h>
|
||||
#include <Common/Math/CRay.h>
|
||||
#include <Common/Math/CVector3f.h>
|
||||
|
||||
class CBoneTransformData;
|
||||
class CBone;
|
||||
@@ -36,14 +36,14 @@ public:
|
||||
CSkeleton(CResourceEntry *pEntry = 0);
|
||||
~CSkeleton();
|
||||
void UpdateTransform(CBoneTransformData& rData, CAnimation *pAnim, float Time, bool AnchorRoot);
|
||||
CBone* BoneByID(u32 BoneID) const;
|
||||
CBone* BoneByID(uint32 BoneID) const;
|
||||
CBone* BoneByName(const TString& rkBoneName) const;
|
||||
u32 MaxBoneID() const;
|
||||
uint32 MaxBoneID() const;
|
||||
|
||||
void Draw(FRenderOptions Options, const CBoneTransformData *pkData);
|
||||
std::pair<s32,float> RayIntersect(const CRay& rkRay, const CBoneTransformData& rkData);
|
||||
std::pair<int32,float> RayIntersect(const CRay& rkRay, const CBoneTransformData& rkData);
|
||||
|
||||
inline u32 NumBones() const { return mBones.size(); }
|
||||
inline uint32 NumBones() const { return mBones.size(); }
|
||||
inline CBone* RootBone() const { return mpRootBone; }
|
||||
};
|
||||
|
||||
@@ -54,7 +54,7 @@ class CBone
|
||||
CSkeleton *mpSkeleton;
|
||||
CBone *mpParent;
|
||||
std::vector<CBone*> mChildren;
|
||||
u32 mID;
|
||||
uint32 mID;
|
||||
CVector3f mPosition;
|
||||
CVector3f mLocalPosition;
|
||||
CQuaternion mRotation;
|
||||
@@ -73,9 +73,9 @@ public:
|
||||
// Accessors
|
||||
inline CSkeleton* Skeleton() const { return mpSkeleton; }
|
||||
inline CBone* Parent() const { return mpParent; }
|
||||
inline u32 NumChildren() const { return mChildren.size(); }
|
||||
inline CBone* ChildByIndex(u32 Index) const { return mChildren[Index]; }
|
||||
inline u32 ID() const { return mID; }
|
||||
inline uint32 NumChildren() const { return mChildren.size(); }
|
||||
inline CBone* ChildByIndex(uint32 Index) const { return mChildren[Index]; }
|
||||
inline uint32 ID() const { return mID; }
|
||||
inline CVector3f Position() const { return mPosition; }
|
||||
inline CVector3f LocalPosition() const { return mLocalPosition; }
|
||||
inline CQuaternion Rotation() const { return mRotation; }
|
||||
|
||||
@@ -18,14 +18,14 @@ class CSkin : public CResource
|
||||
struct SVertGroup
|
||||
{
|
||||
SVertexWeights Weights;
|
||||
u32 NumVertices;
|
||||
uint32 NumVertices;
|
||||
};
|
||||
std::vector<SVertGroup> mVertGroups;
|
||||
|
||||
public:
|
||||
CSkin(CResourceEntry *pEntry = 0) : CResource(pEntry) {}
|
||||
|
||||
const SVertexWeights& WeightsForVertex(u32 VertIdx)
|
||||
const SVertexWeights& WeightsForVertex(uint32 VertIdx)
|
||||
{
|
||||
// Null weights bind everything to the root bone in case there is no matching vertex group
|
||||
static const SVertexWeights skNullWeights = {
|
||||
@@ -33,9 +33,9 @@ public:
|
||||
{ 1.f, 0.f, 0.f, 0.f }
|
||||
};
|
||||
|
||||
u32 Index = 0;
|
||||
uint32 Index = 0;
|
||||
|
||||
for (u32 iGrp = 0; iGrp < mVertGroups.size(); iGrp++)
|
||||
for (uint32 iGrp = 0; iGrp < mVertGroups.size(); iGrp++)
|
||||
{
|
||||
if (VertIdx < Index + mVertGroups[iGrp].NumVertices)
|
||||
return mVertGroups[iGrp].Weights;
|
||||
|
||||
@@ -34,10 +34,10 @@ public:
|
||||
|
||||
~CSourceAnimData()
|
||||
{
|
||||
for (u32 TransIdx = 0; TransIdx < mTransitions.size(); TransIdx++)
|
||||
for (uint32 TransIdx = 0; TransIdx < mTransitions.size(); TransIdx++)
|
||||
delete mTransitions[TransIdx].pTransition;
|
||||
|
||||
for (u32 HalfIdx = 0; HalfIdx < mHalfTransitions.size(); HalfIdx++)
|
||||
for (uint32 HalfIdx = 0; HalfIdx < mHalfTransitions.size(); HalfIdx++)
|
||||
delete mHalfTransitions[HalfIdx].pTransition;
|
||||
|
||||
delete mpDefaultTransition;
|
||||
@@ -54,10 +54,10 @@ public:
|
||||
|
||||
void GetUniquePrimitives(std::set<CAnimPrimitive>& rPrimSet) const
|
||||
{
|
||||
for (u32 TransIdx = 0; TransIdx < mTransitions.size(); TransIdx++)
|
||||
for (uint32 TransIdx = 0; TransIdx < mTransitions.size(); TransIdx++)
|
||||
mTransitions[TransIdx].pTransition->GetUniquePrimitives(rPrimSet);
|
||||
|
||||
for (u32 HalfIdx = 0; HalfIdx < mHalfTransitions.size(); HalfIdx++)
|
||||
for (uint32 HalfIdx = 0; HalfIdx < mHalfTransitions.size(); HalfIdx++)
|
||||
mHalfTransitions[HalfIdx].pTransition->GetUniquePrimitives(rPrimSet);
|
||||
|
||||
if (mpDefaultTransition)
|
||||
@@ -80,7 +80,7 @@ public:
|
||||
UsedTransitions.insert(mpDefaultTransition);
|
||||
}
|
||||
|
||||
for (u32 TransitionIdx = 0; TransitionIdx < mTransitions.size(); TransitionIdx++)
|
||||
for (uint32 TransitionIdx = 0; TransitionIdx < mTransitions.size(); TransitionIdx++)
|
||||
{
|
||||
const STransition& rkTransition = mTransitions[TransitionIdx];
|
||||
IMetaTransition *pTransition = rkTransition.pTransition;
|
||||
@@ -94,7 +94,7 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
for (u32 HalfIdx = 0; HalfIdx < mHalfTransitions.size(); HalfIdx++)
|
||||
for (uint32 HalfIdx = 0; HalfIdx < mHalfTransitions.size(); HalfIdx++)
|
||||
{
|
||||
const SHalfTransition& rkHalfTrans = mHalfTransitions[HalfIdx];
|
||||
IMetaTransition *pTransition = rkHalfTrans.pTransition;
|
||||
|
||||
@@ -23,13 +23,13 @@ IMetaAnimation* CMetaAnimFactory::LoadFromStream(IInputStream& rInput, EGame Gam
|
||||
return new CMetaAnimSequence(rInput, Game);
|
||||
|
||||
default:
|
||||
Log::Error("Unrecognized meta-animation type: " + TString::FromInt32(Type, 0, 10));
|
||||
errorf("Unrecognized meta-animation type: %d", Type);
|
||||
return nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
// ************ CMetaAnimationPlay ************
|
||||
CMetaAnimPlay::CMetaAnimPlay(const CAnimPrimitive& rkPrimitive, float UnkA, u32 UnkB)
|
||||
CMetaAnimPlay::CMetaAnimPlay(const CAnimPrimitive& rkPrimitive, float UnkA, uint32 UnkB)
|
||||
: mPrimitive(rkPrimitive)
|
||||
, mUnknownA(UnkA)
|
||||
, mUnknownB(UnkB)
|
||||
@@ -84,10 +84,10 @@ void CMetaAnimBlend::GetUniquePrimitives(std::set<CAnimPrimitive>& rPrimSet) con
|
||||
// ************ CMetaAnimRandom ************
|
||||
CMetaAnimRandom::CMetaAnimRandom(IInputStream& rInput, EGame Game)
|
||||
{
|
||||
u32 NumPairs = rInput.ReadLong();
|
||||
uint32 NumPairs = rInput.ReadLong();
|
||||
mProbabilityPairs.reserve(NumPairs);
|
||||
|
||||
for (u32 iAnim = 0; iAnim < NumPairs; iAnim++)
|
||||
for (uint32 iAnim = 0; iAnim < NumPairs; iAnim++)
|
||||
{
|
||||
SAnimProbabilityPair Pair;
|
||||
Pair.pAnim = gMetaAnimFactory.LoadFromStream(rInput, Game);
|
||||
@@ -98,7 +98,7 @@ CMetaAnimRandom::CMetaAnimRandom(IInputStream& rInput, EGame Game)
|
||||
|
||||
CMetaAnimRandom::~CMetaAnimRandom()
|
||||
{
|
||||
for (u32 iPair = 0; iPair < mProbabilityPairs.size(); iPair++)
|
||||
for (uint32 iPair = 0; iPair < mProbabilityPairs.size(); iPair++)
|
||||
delete mProbabilityPairs[iPair].pAnim;
|
||||
}
|
||||
|
||||
@@ -109,17 +109,17 @@ EMetaAnimationType CMetaAnimRandom::Type() const
|
||||
|
||||
void CMetaAnimRandom::GetUniquePrimitives(std::set<CAnimPrimitive>& rPrimSet) const
|
||||
{
|
||||
for (u32 iPair = 0; iPair < mProbabilityPairs.size(); iPair++)
|
||||
for (uint32 iPair = 0; iPair < mProbabilityPairs.size(); iPair++)
|
||||
mProbabilityPairs[iPair].pAnim->GetUniquePrimitives(rPrimSet);
|
||||
}
|
||||
|
||||
// ************ CMetaAnimSequence ************
|
||||
CMetaAnimSequence::CMetaAnimSequence(IInputStream& rInput, EGame Game)
|
||||
{
|
||||
u32 NumAnims = rInput.ReadLong();
|
||||
uint32 NumAnims = rInput.ReadLong();
|
||||
mAnimations.reserve(NumAnims);
|
||||
|
||||
for (u32 iAnim = 0; iAnim < NumAnims; iAnim++)
|
||||
for (uint32 iAnim = 0; iAnim < NumAnims; iAnim++)
|
||||
{
|
||||
IMetaAnimation *pAnim = gMetaAnimFactory.LoadFromStream(rInput, Game);
|
||||
mAnimations.push_back(pAnim);
|
||||
@@ -128,7 +128,7 @@ CMetaAnimSequence::CMetaAnimSequence(IInputStream& rInput, EGame Game)
|
||||
|
||||
CMetaAnimSequence::~CMetaAnimSequence()
|
||||
{
|
||||
for (u32 iAnim = 0; iAnim < mAnimations.size(); iAnim++)
|
||||
for (uint32 iAnim = 0; iAnim < mAnimations.size(); iAnim++)
|
||||
delete mAnimations[iAnim];
|
||||
}
|
||||
|
||||
@@ -139,6 +139,6 @@ EMetaAnimationType CMetaAnimSequence::Type() const
|
||||
|
||||
void CMetaAnimSequence::GetUniquePrimitives(std::set<CAnimPrimitive>& rPrimSet) const
|
||||
{
|
||||
for (u32 iAnim = 0; iAnim < mAnimations.size(); iAnim++)
|
||||
for (uint32 iAnim = 0; iAnim < mAnimations.size(); iAnim++)
|
||||
mAnimations[iAnim]->GetUniquePrimitives(rPrimSet);
|
||||
}
|
||||
|
||||
@@ -26,13 +26,13 @@ extern CMetaAnimFactory gMetaAnimFactory;
|
||||
class CAnimPrimitive
|
||||
{
|
||||
TResPtr<CAnimation> mpAnim;
|
||||
u32 mID;
|
||||
uint32 mID;
|
||||
TString mName;
|
||||
|
||||
public:
|
||||
CAnimPrimitive() : mID(0) {}
|
||||
|
||||
CAnimPrimitive(const CAssetID& rkAnimAssetID, u32 CharAnimID, const TString& rkAnimName)
|
||||
CAnimPrimitive(const CAssetID& rkAnimAssetID, uint32 CharAnimID, const TString& rkAnimName)
|
||||
: mID(CharAnimID), mName(rkAnimName)
|
||||
{
|
||||
mpAnim = gpResourceStore->LoadResource(rkAnimAssetID);
|
||||
@@ -50,7 +50,7 @@ public:
|
||||
|
||||
// Accessors
|
||||
CAnimation* Animation() const { return mpAnim; }
|
||||
u32 ID() const { return mID; }
|
||||
uint32 ID() const { return mID; }
|
||||
TString Name() const { return mName; }
|
||||
};
|
||||
|
||||
@@ -73,10 +73,10 @@ class CMetaAnimPlay : public IMetaAnimation
|
||||
protected:
|
||||
CAnimPrimitive mPrimitive;
|
||||
float mUnknownA;
|
||||
u32 mUnknownB;
|
||||
uint32 mUnknownB;
|
||||
|
||||
public:
|
||||
CMetaAnimPlay(const CAnimPrimitive& rkPrimitive, float UnkA, u32 UnkB);
|
||||
CMetaAnimPlay(const CAnimPrimitive& rkPrimitive, float UnkA, uint32 UnkB);
|
||||
CMetaAnimPlay(IInputStream& rInput, EGame Game);
|
||||
virtual EMetaAnimationType Type() const;
|
||||
virtual void GetUniquePrimitives(std::set<CAnimPrimitive>& rPrimSet) const;
|
||||
@@ -84,7 +84,7 @@ public:
|
||||
// Accessors
|
||||
inline CAnimPrimitive Primitive() const { return mPrimitive; }
|
||||
inline float UnknownA() const { return mUnknownA; }
|
||||
inline u32 UnknownB() const { return mUnknownB; }
|
||||
inline uint32 UnknownB() const { return mUnknownB; }
|
||||
};
|
||||
|
||||
// CMetaAnimBlend - blend between two animations
|
||||
@@ -114,7 +114,7 @@ public:
|
||||
struct SAnimProbabilityPair
|
||||
{
|
||||
IMetaAnimation *pAnim;
|
||||
u32 Probability;
|
||||
uint32 Probability;
|
||||
};
|
||||
|
||||
// CMetaAnimRandom - play random animation
|
||||
|
||||
@@ -24,7 +24,7 @@ IMetaTransition* CMetaTransFactory::LoadFromStream(IInputStream& rInput, EGame G
|
||||
return new CMetaTransType4(rInput, Game);
|
||||
|
||||
default:
|
||||
Log::Error("Unrecognized meta-transition type: " + TString::FromInt32(Type, 0, 10));
|
||||
errorf("Unrecognized meta-transition type: %d", Type);
|
||||
return nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -50,10 +50,10 @@ class CMetaTransTrans : public IMetaTransition
|
||||
{
|
||||
EMetaTransitionType mType;
|
||||
float mUnknownA;
|
||||
u32 mUnknownB;
|
||||
uint32 mUnknownB;
|
||||
bool mUnknownC;
|
||||
bool mUnknownD;
|
||||
u32 mUnknownE;
|
||||
uint32 mUnknownE;
|
||||
|
||||
public:
|
||||
CMetaTransTrans(EMetaTransitionType Type, IInputStream& rInput, EGame Game);
|
||||
|
||||
Reference in New Issue
Block a user