Few more character imps

This commit is contained in:
Jack Andersen 2016-04-10 21:47:21 -10:00
parent 7e61fb3c15
commit b10bd229e6
8 changed files with 68 additions and 36 deletions

View File

@ -10,10 +10,10 @@ class CAnimTreeDoubleChild : public CAnimTreeNode
{
public:
SAdvancementResults VAdvanceView(const CCharAnimTime& a);
void VGetBoolPOIList(const CCharAnimTime& time, CBoolPOINode* listOut, u32, u32, u32) const;
void VGetInt32POIList(const CCharAnimTime& time, CInt32POINode* listOut, u32, u32, u32) const;
void VGetParticlePOIList(const CCharAnimTime& time, CParticlePOINode* listOut, u32, u32, u32) const;
void VGetSoundPOIList(const CCharAnimTime& time, CSoundPOINode* listOut, u32, u32, u32) const;
u32 VGetBoolPOIList(const CCharAnimTime& time, CBoolPOINode* listOut, u32 capacity, u32 iterator, u32) const;
u32 VGetInt32POIList(const CCharAnimTime& time, CInt32POINode* listOut, u32 capacity, u32 iterator, u32) const;
u32 VGetParticlePOIList(const CCharAnimTime& time, CParticlePOINode* listOut, u32 capacity, u32 iterator, u32) const;
u32 VGetSoundPOIList(const CCharAnimTime& time, CSoundPOINode* listOut, u32 capacity, u32 iterator, u32) const;
void VGetBoolPOIState(const char*) const;
void VGetInt32POIState(const char*) const;
void VGetParticlePOIState(const char*) const;

View File

@ -13,7 +13,7 @@ SAdvancementResults CAnimTreeSingleChild::VAdvanceView(const CCharAnimTime& a)
{
}
void CAnimTreeSingleChild::VGetTimeRemaining() const
CCharAnimTime CAnimTreeSingleChild::VGetTimeRemaining() const
{
}
@ -29,27 +29,27 @@ void CAnimTreeSingleChild::VGetRotation(const CSegId& seg) const
{
}
void CAnimTreeSingleChild::VGetBoolPOIList(const CCharAnimTime& time,
u32 CAnimTreeSingleChild::VGetBoolPOIList(const CCharAnimTime& time,
CBoolPOINode* listOut,
u32, u32, u32) const
u32 capacity, u32 iterator, u32) const
{
}
void CAnimTreeSingleChild::VGetInt32POIList(const CCharAnimTime& time,
u32 CAnimTreeSingleChild::VGetInt32POIList(const CCharAnimTime& time,
CInt32POINode* listOut,
u32, u32, u32) const
u32 capacity, u32 iterator, u32) const
{
}
void CAnimTreeSingleChild::VGetParticlePOIList(const CCharAnimTime& time,
u32 CAnimTreeSingleChild::VGetParticlePOIList(const CCharAnimTime& time,
CParticlePOINode* listOut,
u32, u32, u32) const
u32 capacity, u32 iterator, u32) const
{
}
void CAnimTreeSingleChild::VGetSoundPOIList(const CCharAnimTime& time,
u32 CAnimTreeSingleChild::VGetSoundPOIList(const CCharAnimTime& time,
CSoundPOINode* listOut,
u32, u32, u32) const
u32 capacity, u32 iterator, u32) const
{
}

View File

@ -13,14 +13,14 @@ public:
CAnimTreeSingleChild(const std::weak_ptr<CAnimTreeNode>& node, const std::string& name);
SAdvancementResults VAdvanceView(const CCharAnimTime& a);
void VGetTimeRemaining() const;
CCharAnimTime VGetTimeRemaining() const;
bool VHasOffset(const CSegId& seg) const;
void VGetOffset(const CSegId& seg) const;
void VGetRotation(const CSegId& seg) const;
void VGetBoolPOIList(const CCharAnimTime& time, CBoolPOINode* listOut, u32, u32, u32) const;
void VGetInt32POIList(const CCharAnimTime& time, CInt32POINode* listOut, u32, u32, u32) const;
void VGetParticlePOIList(const CCharAnimTime& time, CParticlePOINode* listOut, u32, u32, u32) const;
void VGetSoundPOIList(const CCharAnimTime& time, CSoundPOINode* listOut, u32, u32, u32) const;
u32 VGetBoolPOIList(const CCharAnimTime& time, CBoolPOINode* listOut, u32 capacity, u32 iterator, u32) const;
u32 VGetInt32POIList(const CCharAnimTime& time, CInt32POINode* listOut, u32 capacity, u32 iterator, u32) const;
u32 VGetParticlePOIList(const CCharAnimTime& time, CParticlePOINode* listOut, u32 capacity, u32 iterator, u32) const;
u32 VGetSoundPOIList(const CCharAnimTime& time, CSoundPOINode* listOut, u32 capacity, u32 iterator, u32) const;
void VGetBoolPOIState(const char*) const;
void VGetInt32POIState(const char*) const;
void VGetParticlePOIState(const char*) const;

View File

@ -12,6 +12,7 @@ class CBoolPOINode : public CPOINode
public:
CBoolPOINode();
CBoolPOINode(CInputStream& in);
bool GetValue() const {return x38_val;}
};
}

View File

@ -22,6 +22,9 @@ public:
CPOINode(const std::string& name, u16, const CCharAnimTime& time, u32 index, bool, float, u32, u32);
CPOINode(CInputStream& in);
virtual ~CPOINode() = default;
const std::string& GetName() const {return x8_name;}
const CCharAnimTime& GetTime() const {return x1c_time;}
};
}

View File

@ -4,27 +4,44 @@
namespace urde
{
SAdvancementResults IAnimReader::VGetAdvancementResults(const CCharAnimTime& a, const CCharAnimTime& b) const
SAdvancementResults
IAnimReader::VGetAdvancementResults(const CCharAnimTime& a, const CCharAnimTime& b) const
{
SAdvancementResults ret;
ret.x0_remTime = a;
return ret;
}
void IAnimReader::GetBoolPOIList(const CCharAnimTime& time, CBoolPOINode* listOut, u32, u32, u32) const
u32 IAnimReader::GetBoolPOIList(const CCharAnimTime& time, CBoolPOINode* listOut,
u32 capacity, u32 iterator, u32 unk) const
{
if (time.GreaterThanZero())
return VGetBoolPOIList(time, listOut, capacity, iterator, unk);
return 0;
}
void IAnimReader::GetInt32POIList(const CCharAnimTime& time, CInt32POINode* listOut, u32, u32, u32) const
u32 IAnimReader::GetInt32POIList(const CCharAnimTime& time, CInt32POINode* listOut,
u32 capacity, u32 iterator, u32 unk) const
{
if (time.GreaterThanZero())
return VGetInt32POIList(time, listOut, capacity, iterator, unk);
return 0;
}
void IAnimReader::GetParticlePOIList(const CCharAnimTime& time, CParticlePOINode* listOut, u32, u32, u32) const
u32 IAnimReader::GetParticlePOIList(const CCharAnimTime& time, CParticlePOINode* listOut,
u32 capacity, u32 iterator, u32 unk) const
{
if (time.GreaterThanZero())
return VGetParticlePOIList(time, listOut, capacity, iterator, unk);
return 0;
}
void IAnimReader::GetSoundPOIList(const CCharAnimTime& time, CSoundPOINode* listOut, u32, u32, u32) const
u32 IAnimReader::GetSoundPOIList(const CCharAnimTime& time, CSoundPOINode* listOut,
u32 capacity, u32 iterator, u32 unk) const
{
if (time.GreaterThanZero())
return VGetSoundPOIList(time, listOut, capacity, iterator, unk);
return 0;
}
}

View File

@ -29,15 +29,15 @@ public:
virtual ~IAnimReader() = default;
virtual bool IsCAnimTreeNode() const {return false;}
virtual SAdvancementResults VAdvanceView(const CCharAnimTime& a)=0;
virtual void VGetTimeRemaining() const=0;
virtual CCharAnimTime VGetTimeRemaining() const=0;
virtual void VGetSteadyStateAnimInfo() const=0;
virtual bool VHasOffset(const CSegId& seg) const=0;
virtual void VGetOffset(const CSegId& seg) const=0;
virtual void VGetRotation(const CSegId& seg) const=0;
virtual void VGetBoolPOIList(const CCharAnimTime& time, CBoolPOINode* listOut, u32, u32, u32) const=0;
virtual void VGetInt32POIList(const CCharAnimTime& time, CInt32POINode* listOut, u32, u32, u32) const=0;
virtual void VGetParticlePOIList(const CCharAnimTime& time, CParticlePOINode* listOut, u32, u32, u32) const=0;
virtual void VGetSoundPOIList(const CCharAnimTime& time, CSoundPOINode* listOut, u32, u32, u32) const=0;
virtual u32 VGetBoolPOIList(const CCharAnimTime& time, CBoolPOINode* listOut, u32 capacity, u32 iterator, u32) const=0;
virtual u32 VGetInt32POIList(const CCharAnimTime& time, CInt32POINode* listOut, u32 capacity, u32 iterator, u32) const=0;
virtual u32 VGetParticlePOIList(const CCharAnimTime& time, CParticlePOINode* listOut, u32 capacity, u32 iterator, u32) const=0;
virtual u32 VGetSoundPOIList(const CCharAnimTime& time, CSoundPOINode* listOut, u32 capacity, u32 iterator, u32) const=0;
virtual void VGetBoolPOIState(const char*) const=0;
virtual void VGetInt32POIState(const char*) const=0;
virtual void VGetParticlePOIState(const char*) const=0;
@ -52,10 +52,10 @@ public:
virtual void VGetNumChildren() const=0;
virtual void VGetBestUnblendedChild() const=0;
void GetBoolPOIList(const CCharAnimTime& time, CBoolPOINode* listOut, u32, u32, u32) const;
void GetInt32POIList(const CCharAnimTime& time, CInt32POINode* listOut, u32, u32, u32) const;
void GetParticlePOIList(const CCharAnimTime& time, CParticlePOINode* listOut, u32, u32, u32) const;
void GetSoundPOIList(const CCharAnimTime& time, CSoundPOINode* listOut, u32, u32, u32) const;
u32 GetBoolPOIList(const CCharAnimTime& time, CBoolPOINode* listOut, u32 capacity, u32 iterator, u32) const;
u32 GetInt32POIList(const CCharAnimTime& time, CInt32POINode* listOut, u32 capacity, u32 iterator, u32) const;
u32 GetParticlePOIList(const CCharAnimTime& time, CParticlePOINode* listOut, u32 capacity, u32 iterator, u32) const;
u32 GetSoundPOIList(const CCharAnimTime& time, CSoundPOINode* listOut, u32 capacity, u32 iterator, u32) const;
};
}

View File

@ -29,7 +29,18 @@ CCharAnimTime IMetaAnim::GetTime(const CPreAdvanceIndicator& ind, const IAnimRea
return ind.GetTime();
CBoolPOINode nodes[64];
CCharAnimTime rem = anim.VGetTimeRemaining();
u32 count = anim.VGetBoolPOIList(rem, nodes, 64, 0, 0);
const char* cmpStr = ind.GetString();
for (u32 i=0 ; i<count ; ++i)
{
CBoolPOINode& node = nodes[i];
if (node.GetName().compare(cmpStr) || !node.GetValue())
continue;
return node.GetTime();
}
return {};
}
}