mirror of https://github.com/AxioDL/metaforce.git
parent
32b4815ab5
commit
dc978a4c79
|
@ -7,5 +7,6 @@ namespace DataSpec
|
||||||
logvisor::Module LogDNACommon("urde::DNACommon");
|
logvisor::Module LogDNACommon("urde::DNACommon");
|
||||||
SpecBase* g_curSpec = nullptr;
|
SpecBase* g_curSpec = nullptr;
|
||||||
PAKRouterBase* g_PakRouter = nullptr;
|
PAKRouterBase* g_PakRouter = nullptr;
|
||||||
|
hecl::Database::Project* UniqueIDBridge::s_Project = nullptr;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -83,24 +83,34 @@ class UniqueIDBridge
|
||||||
{
|
{
|
||||||
friend class UniqueID32;
|
friend class UniqueID32;
|
||||||
friend class UniqueID64;
|
friend class UniqueID64;
|
||||||
|
|
||||||
|
static hecl::Database::Project* s_Project;
|
||||||
public:
|
public:
|
||||||
template <class IDType>
|
template <class IDType>
|
||||||
static hecl::ProjectPath TranslatePakIdToPath(const IDType& id)
|
static hecl::ProjectPath TranslatePakIdToPath(const IDType& id)
|
||||||
{
|
{
|
||||||
if (!g_PakRouter)
|
if (!g_PakRouter)
|
||||||
LogDNACommon.report(logvisor::Fatal,
|
LogDNACommon.report(logvisor::Fatal,
|
||||||
"UniqueIDBridge::setPakRouter must be called before translatePakIdToPath");
|
"g_Project must be set to non-null before calling UniqueIDBridge::TranslatePakIdToPath");
|
||||||
return g_PakRouter->getWorking(id);
|
return g_PakRouter->getWorking(id);
|
||||||
}
|
}
|
||||||
static hecl::ProjectPath MakePathFromString(const std::string& str)
|
static hecl::ProjectPath MakePathFromString(const std::string& str)
|
||||||
{
|
{
|
||||||
return hecl::ProjectPath(g_PakRouter->getProject(), str);
|
if (!s_Project)
|
||||||
|
LogDNACommon.report(logvisor::Fatal,
|
||||||
|
"UniqueIDBridge::setGlobalProject must be called before MakePathFromString");
|
||||||
|
return hecl::ProjectPath(*s_Project, str);
|
||||||
}
|
}
|
||||||
template <class IDType>
|
template <class IDType>
|
||||||
static void TransformOldHashToNewHash(IDType& id)
|
static void TransformOldHashToNewHash(IDType& id)
|
||||||
{
|
{
|
||||||
id = TranslatePakIdToPath(id);
|
id = TranslatePakIdToPath(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void setGlobalProject(hecl::Database::Project& project)
|
||||||
|
{
|
||||||
|
s_Project = &project;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
/** PAK 32-bit Unique ID */
|
/** PAK 32-bit Unique ID */
|
||||||
|
|
|
@ -35,7 +35,10 @@ static const hecl::SystemChar* MomErr[] =
|
||||||
constexpr uint32_t MomErrCount = std::extent<decltype(MomErr)>::value;
|
constexpr uint32_t MomErrCount = std::extent<decltype(MomErr)>::value;
|
||||||
SpecBase::SpecBase(const hecl::Database::DataSpecEntry* specEntry, hecl::Database::Project& project, bool pc)
|
SpecBase::SpecBase(const hecl::Database::DataSpecEntry* specEntry, hecl::Database::Project& project, bool pc)
|
||||||
: hecl::Database::IDataSpec(specEntry), m_project(project), m_pc(pc),
|
: hecl::Database::IDataSpec(specEntry), m_project(project), m_pc(pc),
|
||||||
m_masterShader(project.getProjectWorkingPath(), ".hecl/RetroMasterShader.blend") {}
|
m_masterShader(project.getProjectWorkingPath(), ".hecl/RetroMasterShader.blend")
|
||||||
|
{
|
||||||
|
DataSpec::UniqueIDBridge::setGlobalProject(m_project);
|
||||||
|
}
|
||||||
|
|
||||||
bool SpecBase::canExtract(const ExtractPassInfo& info, std::vector<ExtractReport>& reps)
|
bool SpecBase::canExtract(const ExtractPassInfo& info, std::vector<ExtractReport>& reps)
|
||||||
{
|
{
|
||||||
|
|
|
@ -25,6 +25,7 @@ void ViewManager::BuildTestPART(urde::IObjectStore& objStore)
|
||||||
|
|
||||||
//m_partGenDesc = objStore.GetObj({hecl::FOURCC('PART'), 0x972A5CD2});
|
//m_partGenDesc = objStore.GetObj({hecl::FOURCC('PART'), 0x972A5CD2});
|
||||||
m_partGenDesc = objStore.GetObj("BusterSparks");
|
m_partGenDesc = objStore.GetObj("BusterSparks");
|
||||||
|
m_partGenDesc.Lock();
|
||||||
m_partGen.reset(new urde::CElementGen(m_partGenDesc,
|
m_partGen.reset(new urde::CElementGen(m_partGenDesc,
|
||||||
urde::CElementGen::EModelOrientationType::Normal,
|
urde::CElementGen::EModelOrientationType::Normal,
|
||||||
urde::CElementGen::EOptionalSystemFlags::None));
|
urde::CElementGen::EOptionalSystemFlags::None));
|
||||||
|
|
|
@ -278,6 +278,11 @@ CElementGen::CElementGen(const TToken<CGenDescription>& gen,
|
||||||
{
|
{
|
||||||
CGenDescription* desc = x1c_genDesc.GetObj();
|
CGenDescription* desc = x1c_genDesc.GetObj();
|
||||||
|
|
||||||
|
if (desc->x54_x40_TEXR)
|
||||||
|
desc->x54_x40_TEXR->GetValueTexture(0).GetObj();
|
||||||
|
if (desc->x58_x44_TIND)
|
||||||
|
desc->x58_x44_TIND->GetValueTexture(0).GetObj();
|
||||||
|
|
||||||
CIntElement* seedElem = desc->x1c_x10_SEED.get();
|
CIntElement* seedElem = desc->x1c_x10_SEED.get();
|
||||||
if (seedElem)
|
if (seedElem)
|
||||||
{
|
{
|
||||||
|
|
|
@ -1118,7 +1118,7 @@ bool CParticleDataFactory::CreateGPSM(CGenDescription* fillDesc, CInputStream& i
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Now for our custom additions, if available */
|
/* Now for our custom additions, if available */
|
||||||
if (!in.atEnd())
|
if (!in.atEnd() && (in.position() + 4) < in.length())
|
||||||
{
|
{
|
||||||
clsId = GetClassID(in);
|
clsId = GetClassID(in);
|
||||||
if (clsId == 0xFFFFFFFF)
|
if (clsId == 0xFFFFFFFF)
|
||||||
|
|
|
@ -30,7 +30,10 @@ struct CUVEConstant : public CUVElement
|
||||||
TLockedToken<CTexture> x4_tex;
|
TLockedToken<CTexture> x4_tex;
|
||||||
public:
|
public:
|
||||||
CUVEConstant(TToken<CTexture>&& tex)
|
CUVEConstant(TToken<CTexture>&& tex)
|
||||||
: x4_tex(std::move(tex)) {}
|
: x4_tex(std::move(tex))
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
TLockedToken<CTexture> GetValueTexture(int frame) const
|
TLockedToken<CTexture> GetValueTexture(int frame) const
|
||||||
{
|
{
|
||||||
return TLockedToken<CTexture>(x4_tex);
|
return TLockedToken<CTexture>(x4_tex);
|
||||||
|
|
Loading…
Reference in New Issue