mirror of https://github.com/AxioDL/metaforce.git
DGRP Fixes
This commit is contained in:
parent
497ad50fa6
commit
14e0468adf
|
@ -5,6 +5,8 @@
|
|||
|
||||
namespace DataSpec
|
||||
{
|
||||
namespace DNADGRP
|
||||
{
|
||||
template <class IDType>
|
||||
void DGRP<IDType>::read(athena::io::IStreamReader& __dna_reader)
|
||||
{
|
||||
|
@ -137,5 +139,5 @@ bool WriteDGRP(const DGRP<IDType>& dgrp, const hecl::ProjectPath& outPath)
|
|||
}
|
||||
template bool WriteDGRP<UniqueID32>(const DGRP<UniqueID32>& dgrp, const hecl::ProjectPath& outPath);
|
||||
template bool WriteDGRP<UniqueID64>(const DGRP<UniqueID64>& dgrp, const hecl::ProjectPath& outPath);
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,33 @@
|
|||
#ifndef __COMMON_DGRP_HPP__
|
||||
#define __COMMON_DGRP_HPP__
|
||||
|
||||
#include "DNACommon.hpp"
|
||||
#include "PAK.hpp"
|
||||
|
||||
namespace DataSpec
|
||||
{
|
||||
namespace DNADGRP
|
||||
{
|
||||
template <class IDType>
|
||||
struct DGRP : BigYAML
|
||||
{
|
||||
DECL_YAML
|
||||
Value<atUint32> dependCount;
|
||||
struct ObjectTag : BigYAML
|
||||
{
|
||||
DECL_YAML
|
||||
DNAFourCC type;
|
||||
UniqueID32 id;
|
||||
};
|
||||
|
||||
Vector<ObjectTag, DNA_COUNT(dependCount)> depends;
|
||||
};
|
||||
|
||||
|
||||
template <class IDType>
|
||||
bool ExtractDGRP(PAKEntryReadStream& rs, const hecl::ProjectPath& outPath);
|
||||
template <class IDType>
|
||||
bool WriteDGRP(const DGRP<IDType>& dgrp, const hecl::ProjectPath& outPath);
|
||||
}
|
||||
}
|
||||
#endif // __COMMON_DGRP_HPP__
|
|
@ -308,7 +308,7 @@ ResExtractor<PAKBridge> PAKBridge::LookupExtractor(const PAK::Entry& entry)
|
|||
case SBIG('FONT'):
|
||||
return {DNAFont::ExtractFONT<UniqueID32>, nullptr, {_S(".yaml")}};
|
||||
case SBIG('DGRP'):
|
||||
return {ExtractDGRP<UniqueID32>, nullptr, {_S(".yaml")}};
|
||||
return {DNADGRP::ExtractDGRP<UniqueID32>, nullptr, {_S(".yaml")}};
|
||||
}
|
||||
return {};
|
||||
}
|
||||
|
|
|
@ -237,7 +237,7 @@ ResExtractor<PAKBridge> PAKBridge::LookupExtractor(const DNAMP1::PAK::Entry& ent
|
|||
case SBIG('FONT'):
|
||||
return {DNAFont::ExtractFONT<UniqueID32>, nullptr, {_S(".yaml")}};
|
||||
case SBIG('DGRP'):
|
||||
return {ExtractDGRP<UniqueID32>, nullptr, {_S(".yaml")}};
|
||||
return {DNADGRP::ExtractDGRP<UniqueID32>, nullptr, {_S(".yaml")}};
|
||||
}
|
||||
return {};
|
||||
}
|
||||
|
|
|
@ -245,7 +245,7 @@ ResExtractor<PAKBridge> PAKBridge::LookupExtractor(const PAK::Entry& entry)
|
|||
case SBIG('FONT'):
|
||||
return {DNAFont::ExtractFONT<UniqueID64>, nullptr, {_S(".yaml")}};
|
||||
case SBIG('DGRP'):
|
||||
return {ExtractDGRP<UniqueID64>, nullptr, {_S(".yaml")}};
|
||||
return {DNADGRP::ExtractDGRP<UniqueID64>, nullptr, {_S(".yaml")}};
|
||||
}
|
||||
return {};
|
||||
}
|
||||
|
|
|
@ -15,6 +15,7 @@
|
|||
#include "DNACommon/WPSC.hpp"
|
||||
#include "DNACommon/CRSC.hpp"
|
||||
#include "DNACommon/DPSC.hpp"
|
||||
#include "DNACommon/DGRP.hpp"
|
||||
|
||||
#include "hecl/ClientProcess.hpp"
|
||||
|
||||
|
@ -339,6 +340,8 @@ struct SpecMP1 : SpecBase
|
|||
return true;
|
||||
else if (!strcmp(classType, DNAParticle::DPSM<UniqueID32>::DNAType()))
|
||||
return true;
|
||||
else if (!strcmp(classType, DNADGRP::DGRP<UniqueID32>::DNAType()))
|
||||
return true;
|
||||
return false;
|
||||
});
|
||||
}
|
||||
|
@ -436,6 +439,12 @@ struct SpecMP1 : SpecBase
|
|||
dpsm.read(reader);
|
||||
DNAParticle::WriteDPSM(dpsm, out);
|
||||
}
|
||||
else if (!classStr.compare(DNADGRP::DGRP<UniqueID32>::DNAType()))
|
||||
{
|
||||
DNADGRP::DGRP<UniqueID32> dgrp;
|
||||
dgrp.read(reader);
|
||||
DNADGRP::WriteDGRP(dgrp, out);
|
||||
}
|
||||
}
|
||||
progress(_S("Done"));
|
||||
}
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
#include "Runtime/Character/CAnimCharacterSet.hpp"
|
||||
#include "Runtime/Character/CAllFormatsAnimSource.hpp"
|
||||
#include "Runtime/Character/CAnimPOIData.hpp"
|
||||
|
||||
#include "Runtime/CDependencyGroup.hpp"
|
||||
#include "DataSpec/DNACommon/TXTR.hpp"
|
||||
|
||||
namespace DataSpec
|
||||
|
@ -37,6 +37,7 @@ ProjectResourceFactoryMP1::ProjectResourceFactoryMP1(hecl::ClientProcess& client
|
|||
m_factoryMgr.AddFactory(FOURCC('ANCS'), FFactoryFunc(FAnimCharacterSet));
|
||||
m_factoryMgr.AddFactory(FOURCC('ANIM'), FFactoryFunc(AnimSourceFactory));
|
||||
m_factoryMgr.AddFactory(FOURCC('EVNT'), FFactoryFunc(AnimPOIDataFactory));
|
||||
m_factoryMgr.AddFactory(FOURCC('DGRP'), FFactoryFunc(FDependencyGroupFactory));
|
||||
}
|
||||
|
||||
void ProjectResourceFactoryMP1::IndexMP1Resources(hecl::Database::Project& proj)
|
||||
|
@ -111,6 +112,11 @@ SObjectTag ProjectResourceFactoryMP1::TagFromPath(const hecl::ProjectPath& path,
|
|||
resTag.type = SBIG('EVNT');
|
||||
return true;
|
||||
}
|
||||
else if (!strcmp(className, "urde::DGRP"))
|
||||
{
|
||||
resTag.type = SBIG('DGRP');
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}))
|
||||
{
|
||||
|
|
|
@ -0,0 +1,24 @@
|
|||
#include "CDependencyGroup.hpp"
|
||||
#include "CToken.hpp"
|
||||
|
||||
namespace urde
|
||||
{
|
||||
CDependencyGroup::CDependencyGroup(CInputStream& in)
|
||||
{
|
||||
ReadFromStream(in);
|
||||
}
|
||||
|
||||
void CDependencyGroup::ReadFromStream(CInputStream& in)
|
||||
{
|
||||
u32 depCount = in.readUint32Big();
|
||||
x0_objectTags.reserve(depCount);
|
||||
for (u32 i = 0 ; i < depCount ; i++)
|
||||
x0_objectTags.emplace_back(in);
|
||||
}
|
||||
|
||||
CFactoryFnReturn FDependencyGroupFactory(const SObjectTag& /*tag*/, CInputStream& in, const CVParamTransfer& /*param*/)
|
||||
{
|
||||
return TToken<CDependencyGroup>::GetIObjObjectFor(std::unique_ptr<CDependencyGroup>(new CDependencyGroup(in)));
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,19 @@
|
|||
#ifndef CDEPENDENCYGROUP_HPP
|
||||
#define CDEPENDENCYGROUP_HPP
|
||||
|
||||
#include "CFactoryMgr.hpp"
|
||||
|
||||
namespace urde
|
||||
{
|
||||
class CDependencyGroup
|
||||
{
|
||||
std::vector<SObjectTag> x0_objectTags;
|
||||
public:
|
||||
CDependencyGroup(CInputStream& in);
|
||||
void ReadFromStream(CInputStream& in);
|
||||
};
|
||||
|
||||
CFactoryFnReturn FDependencyGroupFactory(const SObjectTag& tag, CInputStream& in, const CVParamTransfer& param);
|
||||
}
|
||||
|
||||
#endif // CDEPENDENCYGROUP_HPP
|
|
@ -22,6 +22,7 @@ add_library(RuntimeCommon
|
|||
IAllocator.hpp IAllocator.cpp
|
||||
CGameAllocator.hpp CGameAllocator.cpp
|
||||
CPathFindArea.hpp CPathFindArea.cpp
|
||||
CDependencyGroup.hpp CDependencyGroup.cpp
|
||||
CBasics.hpp CBasicsPC.cpp
|
||||
CIOWin.hpp
|
||||
CIOWinManager.hpp CIOWinManager.cpp
|
||||
|
|
Loading…
Reference in New Issue