mirror of
https://github.com/AxioDL/PrimeWorldEditor.git
synced 2025-12-17 08:57:09 +00:00
Renamed CUniqueID to CAssetID and heavily modified the implementation to drop 128-bit support and use a u64 internally instead of a u8[16]
This commit is contained in:
@@ -8,12 +8,12 @@ EDependencyNodeType CResourceDependency::Type() const
|
||||
return eDNT_ResourceDependency;
|
||||
}
|
||||
|
||||
void CResourceDependency::Read(IInputStream& rFile, EUIDLength IDLength)
|
||||
void CResourceDependency::Read(IInputStream& rFile, EIDLength IDLength)
|
||||
{
|
||||
mID = CUniqueID(rFile, IDLength);
|
||||
mID = CAssetID(rFile, IDLength);
|
||||
}
|
||||
|
||||
void CResourceDependency::Write(IOutputStream& rFile, EUIDLength IDLength) const
|
||||
void CResourceDependency::Write(IOutputStream& rFile, EIDLength IDLength) const
|
||||
{
|
||||
if (IDLength == e32Bit)
|
||||
rFile.WriteLong(mID.ToLong());
|
||||
@@ -27,13 +27,13 @@ EDependencyNodeType CAnimSetDependency::Type() const
|
||||
return eDNT_AnimSet;
|
||||
}
|
||||
|
||||
void CAnimSetDependency::Read(IInputStream& rFile, EUIDLength IDLength)
|
||||
void CAnimSetDependency::Read(IInputStream& rFile, EIDLength IDLength)
|
||||
{
|
||||
CResourceDependency::Read(rFile, IDLength);
|
||||
mUsedChar = rFile.ReadLong();
|
||||
}
|
||||
|
||||
void CAnimSetDependency::Write(IOutputStream& rFile, EUIDLength IDLength) const
|
||||
void CAnimSetDependency::Write(IOutputStream& rFile, EIDLength IDLength) const
|
||||
{
|
||||
CResourceDependency::Write(rFile, IDLength);
|
||||
rFile.WriteLong(mUsedChar);
|
||||
@@ -65,9 +65,9 @@ EDependencyNodeType CDependencyTree::Type() const
|
||||
return eDNT_Root;
|
||||
}
|
||||
|
||||
void CDependencyTree::Read(IInputStream& rFile, EUIDLength IDLength)
|
||||
void CDependencyTree::Read(IInputStream& rFile, EIDLength IDLength)
|
||||
{
|
||||
mID = CUniqueID(rFile, IDLength);
|
||||
mID = CAssetID(rFile, IDLength);
|
||||
|
||||
u32 NumDepends = rFile.ReadLong();
|
||||
mReferencedResources.reserve(NumDepends);
|
||||
@@ -80,7 +80,7 @@ void CDependencyTree::Read(IInputStream& rFile, EUIDLength IDLength)
|
||||
}
|
||||
}
|
||||
|
||||
void CDependencyTree::Write(IOutputStream& rFile, EUIDLength IDLength) const
|
||||
void CDependencyTree::Write(IOutputStream& rFile, EIDLength IDLength) const
|
||||
{
|
||||
if (IDLength == e32Bit)
|
||||
rFile.WriteLong(mID.ToLong());
|
||||
@@ -98,7 +98,7 @@ u32 CDependencyTree::NumDependencies() const
|
||||
return mReferencedResources.size();
|
||||
}
|
||||
|
||||
bool CDependencyTree::HasDependency(const CUniqueID& rkID)
|
||||
bool CDependencyTree::HasDependency(const CAssetID& rkID)
|
||||
{
|
||||
for (u32 iDep = 0; iDep < mReferencedResources.size(); iDep++)
|
||||
{
|
||||
@@ -109,7 +109,7 @@ bool CDependencyTree::HasDependency(const CUniqueID& rkID)
|
||||
return false;
|
||||
}
|
||||
|
||||
CUniqueID CDependencyTree::DependencyByIndex(u32 Index) const
|
||||
CAssetID CDependencyTree::DependencyByIndex(u32 Index) const
|
||||
{
|
||||
ASSERT(Index >= 0 && Index < mReferencedResources.size());
|
||||
return mReferencedResources[Index]->ID();
|
||||
@@ -117,12 +117,12 @@ CUniqueID CDependencyTree::DependencyByIndex(u32 Index) const
|
||||
|
||||
void CDependencyTree::AddDependency(CResource *pRes)
|
||||
{
|
||||
if (!pRes || HasDependency(pRes->ResID())) return;
|
||||
CResourceDependency *pDepend = new CResourceDependency(pRes->ResID());
|
||||
if (!pRes || HasDependency(pRes->ID())) return;
|
||||
CResourceDependency *pDepend = new CResourceDependency(pRes->ID());
|
||||
mReferencedResources.push_back(pDepend);
|
||||
}
|
||||
|
||||
void CDependencyTree::AddDependency(const CUniqueID& rkID)
|
||||
void CDependencyTree::AddDependency(const CAssetID& rkID)
|
||||
{
|
||||
if (!rkID.IsValid() || HasDependency(rkID)) return;
|
||||
CResourceDependency *pDepend = new CResourceDependency(rkID);
|
||||
@@ -135,7 +135,7 @@ EDependencyNodeType CAnimSetDependencyTree::Type() const
|
||||
return eDNT_AnimSet;
|
||||
}
|
||||
|
||||
void CAnimSetDependencyTree::Read(IInputStream& rFile, EUIDLength IDLength)
|
||||
void CAnimSetDependencyTree::Read(IInputStream& rFile, EIDLength IDLength)
|
||||
{
|
||||
CDependencyTree::Read(rFile, IDLength);
|
||||
u32 NumChars = rFile.ReadLong();
|
||||
@@ -145,7 +145,7 @@ void CAnimSetDependencyTree::Read(IInputStream& rFile, EUIDLength IDLength)
|
||||
mCharacterOffsets.push_back( rFile.ReadLong() );
|
||||
}
|
||||
|
||||
void CAnimSetDependencyTree::Write(IOutputStream& rFile, EUIDLength IDLength) const
|
||||
void CAnimSetDependencyTree::Write(IOutputStream& rFile, EIDLength IDLength) const
|
||||
{
|
||||
CDependencyTree::Write(rFile, IDLength);
|
||||
rFile.WriteLong(mCharacterOffsets.size());
|
||||
@@ -166,7 +166,7 @@ EDependencyNodeType CScriptInstanceDependencyTree::Type() const
|
||||
return eDNT_ScriptInstance;
|
||||
}
|
||||
|
||||
void CScriptInstanceDependencyTree::Read(IInputStream& rFile, EUIDLength IDLength)
|
||||
void CScriptInstanceDependencyTree::Read(IInputStream& rFile, EIDLength IDLength)
|
||||
{
|
||||
mObjectType = rFile.ReadLong();
|
||||
u32 NumDepends = rFile.ReadLong();
|
||||
@@ -174,7 +174,7 @@ void CScriptInstanceDependencyTree::Read(IInputStream& rFile, EUIDLength IDLengt
|
||||
|
||||
for (u32 iDep = 0; iDep < NumDepends; iDep++)
|
||||
{
|
||||
CUniqueID ID(rFile, IDLength);
|
||||
CAssetID ID(rFile, IDLength);
|
||||
CResourceEntry *pEntry = gpResourceStore->FindEntry(ID);
|
||||
|
||||
if (pEntry && pEntry->ResourceType() == eAnimSet && pEntry->Game() <= eEchoes)
|
||||
@@ -193,7 +193,7 @@ void CScriptInstanceDependencyTree::Read(IInputStream& rFile, EUIDLength IDLengt
|
||||
}
|
||||
}
|
||||
|
||||
void CScriptInstanceDependencyTree::Write(IOutputStream& rFile, EUIDLength IDLength) const
|
||||
void CScriptInstanceDependencyTree::Write(IOutputStream& rFile, EIDLength IDLength) const
|
||||
{
|
||||
rFile.WriteLong(mObjectType);
|
||||
rFile.WriteLong(mDependencies.size());
|
||||
@@ -202,7 +202,7 @@ void CScriptInstanceDependencyTree::Write(IOutputStream& rFile, EUIDLength IDLen
|
||||
mDependencies[iDep]->Write(rFile, IDLength);
|
||||
}
|
||||
|
||||
bool CScriptInstanceDependencyTree::HasDependency(const CUniqueID& rkID)
|
||||
bool CScriptInstanceDependencyTree::HasDependency(const CAssetID& rkID)
|
||||
{
|
||||
if (!rkID.IsValid()) return false;
|
||||
|
||||
@@ -235,7 +235,7 @@ void CScriptInstanceDependencyTree::ParseStructDependencies(CScriptInstanceDepen
|
||||
|
||||
else if (pProp->Type() == eFileProperty)
|
||||
{
|
||||
CUniqueID ID = static_cast<TFileProperty*>(pProp)->Get().ID();
|
||||
CAssetID ID = static_cast<TFileProperty*>(pProp)->Get().ID();
|
||||
|
||||
if (ID.IsValid() && !pTree->HasDependency(ID))
|
||||
{
|
||||
@@ -247,7 +247,7 @@ void CScriptInstanceDependencyTree::ParseStructDependencies(CScriptInstanceDepen
|
||||
else if (pProp->Type() == eCharacterProperty)
|
||||
{
|
||||
TCharacterProperty *pChar = static_cast<TCharacterProperty*>(pProp);
|
||||
CUniqueID ID = pChar->Get().ID();
|
||||
CAssetID ID = pChar->Get().ID();
|
||||
|
||||
if (ID.IsValid() && !pTree->HasDependency(ID))
|
||||
pTree->mDependencies.push_back( CAnimSetDependency::BuildDependency(pChar) );
|
||||
@@ -267,7 +267,7 @@ EDependencyNodeType CAreaDependencyTree::Type() const
|
||||
return eDNT_Area;
|
||||
}
|
||||
|
||||
void CAreaDependencyTree::Read(IInputStream& rFile, EUIDLength IDLength)
|
||||
void CAreaDependencyTree::Read(IInputStream& rFile, EIDLength IDLength)
|
||||
{
|
||||
// Base dependency list contains non-script dependencies (world geometry textures + PATH/PTLA/EGMC)
|
||||
CDependencyTree::Read(rFile, IDLength);
|
||||
@@ -288,7 +288,7 @@ void CAreaDependencyTree::Read(IInputStream& rFile, EUIDLength IDLength)
|
||||
mLayerOffsets.push_back( rFile.ReadLong() );
|
||||
}
|
||||
|
||||
void CAreaDependencyTree::Write(IOutputStream& rFile, EUIDLength IDLength) const
|
||||
void CAreaDependencyTree::Write(IOutputStream& rFile, EIDLength IDLength) const
|
||||
{
|
||||
CDependencyTree::Write(rFile, IDLength);
|
||||
rFile.WriteLong(mScriptInstances.size());
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
#include "CResourceEntry.h"
|
||||
#include <FileIO/FileIO.h>
|
||||
#include <Common/AssertMacro.h>
|
||||
#include <Common/CUniqueID.h>
|
||||
#include <Common/CAssetID.h>
|
||||
|
||||
class CScriptLayer;
|
||||
class CScriptObject;
|
||||
@@ -28,26 +28,26 @@ class IDependencyNode
|
||||
public:
|
||||
virtual ~IDependencyNode() {}
|
||||
virtual EDependencyNodeType Type() const = 0;
|
||||
virtual void Read(IInputStream& rFile, EUIDLength IDLength) = 0;
|
||||
virtual void Write(IOutputStream& rFile, EUIDLength IDLength) const = 0;
|
||||
virtual void Read(IInputStream& rFile, EIDLength IDLength) = 0;
|
||||
virtual void Write(IOutputStream& rFile, EIDLength IDLength) const = 0;
|
||||
};
|
||||
|
||||
// Node representing a single resource dependency.
|
||||
class CResourceDependency : public IDependencyNode
|
||||
{
|
||||
CUniqueID mID;
|
||||
CAssetID mID;
|
||||
|
||||
public:
|
||||
CResourceDependency() {}
|
||||
CResourceDependency(const CUniqueID& rkID) : mID(rkID) {}
|
||||
CResourceDependency(const CAssetID& rkID) : mID(rkID) {}
|
||||
|
||||
virtual EDependencyNodeType Type() const;
|
||||
virtual void Read(IInputStream& rFile, EUIDLength IDLength);
|
||||
virtual void Write(IOutputStream& rFile, EUIDLength IDLength) const;
|
||||
virtual void Read(IInputStream& rFile, EIDLength IDLength);
|
||||
virtual void Write(IOutputStream& rFile, EIDLength IDLength) const;
|
||||
|
||||
// Accessors
|
||||
inline CUniqueID ID() const { return mID; }
|
||||
inline void SetID(const CUniqueID& rkID) { mID = rkID; }
|
||||
inline CAssetID ID() const { return mID; }
|
||||
inline void SetID(const CAssetID& rkID) { mID = rkID; }
|
||||
};
|
||||
|
||||
// Node representing a single animset dependency contained in a script object. Indicates which character is being used.
|
||||
@@ -60,8 +60,8 @@ public:
|
||||
CAnimSetDependency() : CResourceDependency(), mUsedChar(-1) {}
|
||||
|
||||
virtual EDependencyNodeType Type() const;
|
||||
virtual void Read(IInputStream& rFile, EUIDLength IDLength);
|
||||
virtual void Write(IOutputStream& rFile, EUIDLength IDLength) const;
|
||||
virtual void Read(IInputStream& rFile, EIDLength IDLength);
|
||||
virtual void Write(IOutputStream& rFile, EIDLength IDLength) const;
|
||||
|
||||
// Accessors
|
||||
inline u32 UsedChar() const { return mUsedChar; }
|
||||
@@ -75,26 +75,26 @@ public:
|
||||
class CDependencyTree : public IDependencyNode
|
||||
{
|
||||
protected:
|
||||
CUniqueID mID;
|
||||
CAssetID mID;
|
||||
std::vector<CResourceDependency*> mReferencedResources;
|
||||
|
||||
public:
|
||||
CDependencyTree(const CUniqueID& rkID) : mID(rkID) {}
|
||||
CDependencyTree(const CAssetID& rkID) : mID(rkID) {}
|
||||
~CDependencyTree();
|
||||
|
||||
virtual EDependencyNodeType Type() const;
|
||||
virtual void Read(IInputStream& rFile, EUIDLength IDLength);
|
||||
virtual void Write(IOutputStream& rFile, EUIDLength IDLength) const;
|
||||
virtual void Read(IInputStream& rFile, EIDLength IDLength);
|
||||
virtual void Write(IOutputStream& rFile, EIDLength IDLength) const;
|
||||
|
||||
u32 NumDependencies() const;
|
||||
bool HasDependency(const CUniqueID& rkID);
|
||||
CUniqueID DependencyByIndex(u32 Index) const;
|
||||
void AddDependency(const CUniqueID& rkID);
|
||||
bool HasDependency(const CAssetID& rkID);
|
||||
CAssetID DependencyByIndex(u32 Index) const;
|
||||
void AddDependency(const CAssetID& rkID);
|
||||
void AddDependency(CResource *pRes);
|
||||
|
||||
// Accessors
|
||||
inline void SetID(const CUniqueID& rkID) { mID = rkID; }
|
||||
inline CUniqueID ID() const { return mID; }
|
||||
inline void SetID(const CAssetID& rkID) { mID = rkID; }
|
||||
inline CAssetID ID() const { return mID; }
|
||||
|
||||
};
|
||||
|
||||
@@ -105,10 +105,10 @@ protected:
|
||||
std::vector<u32> mCharacterOffsets;
|
||||
|
||||
public:
|
||||
CAnimSetDependencyTree(const CUniqueID& rkID) : CDependencyTree(rkID) {}
|
||||
CAnimSetDependencyTree(const CAssetID& rkID) : CDependencyTree(rkID) {}
|
||||
virtual EDependencyNodeType Type() const;
|
||||
virtual void Read(IInputStream& rFile, EUIDLength IDLength);
|
||||
virtual void Write(IOutputStream& rFile, EUIDLength IDLength) const;
|
||||
virtual void Read(IInputStream& rFile, EIDLength IDLength);
|
||||
virtual void Write(IOutputStream& rFile, EIDLength IDLength) const;
|
||||
};
|
||||
|
||||
// Node representing a script object. Indicates the type of object.
|
||||
@@ -122,9 +122,9 @@ public:
|
||||
~CScriptInstanceDependencyTree();
|
||||
|
||||
virtual EDependencyNodeType Type() const;
|
||||
virtual void Read(IInputStream& rFile, EUIDLength IDLength);
|
||||
virtual void Write(IOutputStream& rFile, EUIDLength IDLength) const;
|
||||
bool HasDependency(const CUniqueID& rkID);
|
||||
virtual void Read(IInputStream& rFile, EIDLength IDLength);
|
||||
virtual void Write(IOutputStream& rFile, EIDLength IDLength) const;
|
||||
bool HasDependency(const CAssetID& rkID);
|
||||
|
||||
// Accessors
|
||||
u32 NumDependencies() const { return mDependencies.size(); }
|
||||
@@ -142,12 +142,12 @@ protected:
|
||||
std::vector<u32> mLayerOffsets;
|
||||
|
||||
public:
|
||||
CAreaDependencyTree(const CUniqueID& rkID) : CDependencyTree(rkID) {}
|
||||
CAreaDependencyTree(const CAssetID& rkID) : CDependencyTree(rkID) {}
|
||||
~CAreaDependencyTree();
|
||||
|
||||
virtual EDependencyNodeType Type() const;
|
||||
virtual void Read(IInputStream& rFile, EUIDLength IDLength);
|
||||
virtual void Write(IOutputStream& rFile, EUIDLength IDLength) const;
|
||||
virtual void Read(IInputStream& rFile, EIDLength IDLength);
|
||||
virtual void Write(IOutputStream& rFile, EIDLength IDLength) const;
|
||||
|
||||
void AddScriptLayer(CScriptLayer *pLayer);
|
||||
};
|
||||
|
||||
@@ -50,7 +50,7 @@ bool CGameExporter::Export()
|
||||
return true;
|
||||
}
|
||||
|
||||
void CGameExporter::LoadResource(const CUniqueID& rkID, std::vector<u8>& rBuffer)
|
||||
void CGameExporter::LoadResource(const CAssetID& rkID, std::vector<u8>& rBuffer)
|
||||
{
|
||||
SResourceInstance *pInst = FindResourceInstance(rkID);
|
||||
if (pInst) LoadResource(*pInst, rBuffer);
|
||||
@@ -168,7 +168,7 @@ void CGameExporter::LoadPaks()
|
||||
{
|
||||
#if LOAD_PAKS
|
||||
SCOPED_TIMER(LoadPaks);
|
||||
EUIDLength IDLength = (Game() < eCorruptionProto ? e32Bit : e64Bit);
|
||||
EIDLength IDLength = (Game() < eCorruptionProto ? e32Bit : e64Bit);
|
||||
|
||||
for (auto It = mPaks.begin(); It != mPaks.end(); It++)
|
||||
{
|
||||
@@ -202,7 +202,7 @@ void CGameExporter::LoadPaks()
|
||||
for (u32 iName = 0; iName < NumNamedResources; iName++)
|
||||
{
|
||||
CFourCC ResType = Pak.ReadLong();
|
||||
CUniqueID ResID(Pak, IDLength);
|
||||
CAssetID ResID(Pak, IDLength);
|
||||
u32 NameLen = Pak.ReadLong();
|
||||
TString Name = Pak.ReadString(NameLen);
|
||||
pCollection->AddResource(Name, ResID, ResType);
|
||||
@@ -215,7 +215,7 @@ void CGameExporter::LoadPaks()
|
||||
{
|
||||
bool Compressed = (Pak.ReadLong() == 1);
|
||||
CFourCC ResType = Pak.ReadLong();
|
||||
CUniqueID ResID(Pak, IDLength);
|
||||
CAssetID ResID(Pak, IDLength);
|
||||
u32 ResSize = Pak.ReadLong();
|
||||
u32 ResOffset = Pak.ReadLong();
|
||||
|
||||
@@ -263,7 +263,7 @@ void CGameExporter::LoadPaks()
|
||||
{
|
||||
TString Name = Pak.ReadString();
|
||||
CFourCC ResType = Pak.ReadLong();
|
||||
CUniqueID ResID(Pak, IDLength);
|
||||
CAssetID ResID(Pak, IDLength);
|
||||
pCollection->AddResource(Name, ResID, ResType);
|
||||
SetResourcePath(ResID.ToLongLong(), PakName + L"\\", Name.ToUTF16());
|
||||
}
|
||||
@@ -279,7 +279,7 @@ void CGameExporter::LoadPaks()
|
||||
{
|
||||
bool Compressed = (Pak.ReadLong() == 1);
|
||||
CFourCC Type = Pak.ReadLong();
|
||||
CUniqueID ResID(Pak, IDLength);
|
||||
CAssetID ResID(Pak, IDLength);
|
||||
u32 Size = Pak.ReadLong();
|
||||
u32 Offset = DataStart + Pak.ReadLong();
|
||||
|
||||
@@ -461,7 +461,7 @@ void CGameExporter::ExportWorlds()
|
||||
TWideString AreaDir = WorldDir + TWideString::FromInt32(iArea, 2, 10) + L"_" + FileUtil::SanitizeName(GameAreaName, true) + L"\\";
|
||||
FileUtil::CreateDirectory(mCookedDir + AreaDir);
|
||||
|
||||
CUniqueID AreaID = pWorld->AreaResourceID(iArea);
|
||||
CAssetID AreaID = pWorld->AreaResourceID(iArea);
|
||||
SResourceInstance *pInst = FindResourceInstance(AreaID);
|
||||
ASSERT(pInst != nullptr);
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
#include "CGameProject.h"
|
||||
#include "CResourceStore.h"
|
||||
#include <Common/CUniqueID.h>
|
||||
#include <Common/CAssetID.h>
|
||||
#include <Common/Flags.h>
|
||||
#include <Common/TString.h>
|
||||
#include <Common/types.h>
|
||||
@@ -30,7 +30,7 @@ class CGameExporter
|
||||
struct SResourceInstance
|
||||
{
|
||||
TWideString PakFile;
|
||||
CUniqueID ResourceID;
|
||||
CAssetID ResourceID;
|
||||
CFourCC ResourceType;
|
||||
u32 PakOffset;
|
||||
u32 PakSize;
|
||||
@@ -49,7 +49,7 @@ class CGameExporter
|
||||
public:
|
||||
CGameExporter(const TString& rkInputDir, const TString& rkOutputDir);
|
||||
bool Export();
|
||||
void LoadResource(const CUniqueID& rkID, std::vector<u8>& rBuffer);
|
||||
void LoadResource(const CAssetID& rkID, std::vector<u8>& rBuffer);
|
||||
|
||||
protected:
|
||||
void CopyDiscData();
|
||||
@@ -61,21 +61,21 @@ protected:
|
||||
void ExportResource(SResourceInstance& rRes);
|
||||
|
||||
// Convenience Functions
|
||||
inline SResourceInstance* FindResourceInstance(const CUniqueID& rkID)
|
||||
inline SResourceInstance* FindResourceInstance(const CAssetID& rkID)
|
||||
{
|
||||
u64 IntegralID = rkID.ToLongLong();
|
||||
auto Found = mResourceMap.find(IntegralID);
|
||||
return (Found == mResourceMap.end() ? nullptr : &Found->second);
|
||||
}
|
||||
|
||||
inline SResourcePath* FindResourcePath(const CUniqueID& rkID)
|
||||
inline SResourcePath* FindResourcePath(const CAssetID& rkID)
|
||||
{
|
||||
u64 IntegralID = rkID.ToLongLong();
|
||||
auto Found = mResourcePaths.find(IntegralID);
|
||||
return (Found == mResourcePaths.end() ? nullptr : &Found->second);
|
||||
}
|
||||
|
||||
inline void SetResourcePath(const CUniqueID& rkID, const TWideString& rkDir, const TWideString& rkName)
|
||||
inline void SetResourcePath(const CAssetID& rkID, const TWideString& rkDir, const TWideString& rkName)
|
||||
{
|
||||
SetResourcePath(rkID.ToLongLong(), rkDir, rkName);
|
||||
}
|
||||
|
||||
@@ -127,7 +127,7 @@ void CGameProject::SetActive()
|
||||
}
|
||||
}
|
||||
|
||||
void CGameProject::GetWorldList(std::list<CUniqueID>& rOut) const
|
||||
void CGameProject::GetWorldList(std::list<CAssetID>& rOut) const
|
||||
{
|
||||
for (u32 iPkg = 0; iPkg < mPackages.size(); iPkg++)
|
||||
{
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
#include "CResourceStore.h"
|
||||
#include "Core/Resource/EGame.h"
|
||||
#include <Common/FileUtil.h>
|
||||
#include <Common/CUniqueID.h>
|
||||
#include <Common/CAssetID.h>
|
||||
#include <Common/TString.h>
|
||||
#include <Common/types.h>
|
||||
|
||||
@@ -47,7 +47,7 @@ public:
|
||||
bool Load(const TWideString& rkPath);
|
||||
void Save();
|
||||
void SetActive();
|
||||
void GetWorldList(std::list<CUniqueID>& rOut) const;
|
||||
void GetWorldList(std::list<CAssetID>& rOut) const;
|
||||
|
||||
// Directory Handling
|
||||
inline TWideString ProjectRoot() const { return mProjectRoot; }
|
||||
|
||||
@@ -43,7 +43,7 @@ void CPackage::Load()
|
||||
|
||||
else
|
||||
{
|
||||
CUniqueID ID = CUniqueID::FromString(pIDElem->GetText());
|
||||
CAssetID ID = CAssetID::FromString(pIDElem->GetText());
|
||||
TString Name = pNameElem->GetText();
|
||||
CFourCC Type = CFourCC(pTypeElem->GetText());
|
||||
pCollection->AddResource(Name, ID, Type);
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
#ifndef CPACKAGE
|
||||
#define CPACKAGE
|
||||
|
||||
#include <Common/CAssetID.h>
|
||||
#include <Common/CFourCC.h>
|
||||
#include <Common/CUniqueID.h>
|
||||
#include <Common/TString.h>
|
||||
|
||||
class CGameProject;
|
||||
@@ -10,7 +10,7 @@ class CGameProject;
|
||||
struct SNamedResource
|
||||
{
|
||||
TString Name;
|
||||
CUniqueID ID;
|
||||
CAssetID ID;
|
||||
CFourCC Type;
|
||||
};
|
||||
|
||||
@@ -27,7 +27,7 @@ public:
|
||||
inline u32 NumResources() const { return mNamedResources.size(); }
|
||||
inline const SNamedResource& ResourceByIndex(u32 Idx) const { return mNamedResources[Idx]; }
|
||||
|
||||
inline void AddResource(const TString& rkName, const CUniqueID& rkID, const CFourCC& rkType)
|
||||
inline void AddResource(const TString& rkName, const CAssetID& rkID, const CFourCC& rkType)
|
||||
{
|
||||
mNamedResources.push_back( SNamedResource { rkName, rkID, rkType } );
|
||||
}
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
#include "Core/Resource/Factory/CTextureDecoder.h"
|
||||
#include "Core/Resource/Factory/CWorldLoader.h"
|
||||
|
||||
CResourceEntry::CResourceEntry(CResourceStore *pStore, const CUniqueID& rkID,
|
||||
CResourceEntry::CResourceEntry(CResourceStore *pStore, const CAssetID& rkID,
|
||||
const TWideString& rkDir, const TWideString& rkFilename,
|
||||
EResType Type, bool Transient /*= false*/)
|
||||
: mpResource(nullptr)
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
#include "CVirtualDirectory.h"
|
||||
#include "Core/Resource/EResType.h"
|
||||
#include <Common/CUniqueID.h>
|
||||
#include <Common/CAssetID.h>
|
||||
#include <Common/Flags.h>
|
||||
#include <Common/types.h>
|
||||
|
||||
@@ -26,7 +26,7 @@ class CResourceEntry
|
||||
CResource *mpResource;
|
||||
CResourceStore *mpStore;
|
||||
CDependencyTree *mpDependencies;
|
||||
CUniqueID mID;
|
||||
CAssetID mID;
|
||||
EResType mType;
|
||||
EGame mGame;
|
||||
CVirtualDirectory *mpDirectory;
|
||||
@@ -37,7 +37,7 @@ class CResourceEntry
|
||||
mutable TWideString mCachedUppercaseName; // This is used to speed up case-insensitive sorting and filtering.
|
||||
|
||||
public:
|
||||
CResourceEntry(CResourceStore *pStore, const CUniqueID& rkID,
|
||||
CResourceEntry(CResourceStore *pStore, const CAssetID& rkID,
|
||||
const TWideString& rkDir, const TWideString& rkFilename,
|
||||
EResType Type, bool Transient = false);
|
||||
~CResourceEntry();
|
||||
@@ -68,7 +68,7 @@ public:
|
||||
inline bool IsLoaded() const { return mpResource != nullptr; }
|
||||
inline CResource* Resource() const { return mpResource; }
|
||||
inline CDependencyTree* Dependencies() const { return mpDependencies; }
|
||||
inline CUniqueID ID() const { return mID; }
|
||||
inline CAssetID ID() const { return mID; }
|
||||
inline EGame Game() const { return mGame; }
|
||||
inline CVirtualDirectory* Directory() const { return mpDirectory; }
|
||||
inline TWideString Name() const { return mName; }
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
class CResourceIterator
|
||||
{
|
||||
CResourceStore *mpStore;
|
||||
std::map<CUniqueID, CResourceEntry*>::iterator mIter;
|
||||
std::map<CAssetID, CResourceEntry*>::iterator mIter;
|
||||
CResourceEntry *mpCurEntry;
|
||||
|
||||
public:
|
||||
|
||||
@@ -56,7 +56,7 @@ void CResourceStore::LoadResourceDatabase(const TString& rkPath)
|
||||
|
||||
if (pID && pType && pDir && pName)
|
||||
{
|
||||
CUniqueID ID = CUniqueID::FromString(pID->GetText());
|
||||
CAssetID ID = CAssetID::FromString(pID->GetText());
|
||||
EResType Type = CResource::ResTypeForExtension(pType->GetText());
|
||||
TWideString FileDir = pDir->GetText();
|
||||
TWideString FileName = pName->GetText();
|
||||
@@ -186,7 +186,7 @@ CVirtualDirectory* CResourceStore::GetVirtualDirectory(const TWideString& rkPath
|
||||
else return nullptr;
|
||||
}
|
||||
|
||||
CResourceEntry* CResourceStore::FindEntry(const CUniqueID& rkID) const
|
||||
CResourceEntry* CResourceStore::FindEntry(const CAssetID& rkID) const
|
||||
{
|
||||
if (!rkID.IsValid()) return nullptr;
|
||||
auto Found = mResourceEntries.find(rkID);
|
||||
@@ -194,12 +194,12 @@ CResourceEntry* CResourceStore::FindEntry(const CUniqueID& rkID) const
|
||||
else return Found->second;
|
||||
}
|
||||
|
||||
bool CResourceStore::IsResourceRegistered(const CUniqueID& rkID) const
|
||||
bool CResourceStore::IsResourceRegistered(const CAssetID& rkID) const
|
||||
{
|
||||
return FindEntry(rkID) == nullptr;
|
||||
}
|
||||
|
||||
CResourceEntry* CResourceStore::RegisterResource(const CUniqueID& rkID, EResType Type, const TWideString& rkDir, const TWideString& rkFileName)
|
||||
CResourceEntry* CResourceStore::RegisterResource(const CAssetID& rkID, EResType Type, const TWideString& rkDir, const TWideString& rkFileName)
|
||||
{
|
||||
CResourceEntry *pEntry = FindEntry(rkID);
|
||||
|
||||
@@ -226,12 +226,12 @@ CResourceEntry* CResourceStore::RegisterResource(const CUniqueID& rkID, EResType
|
||||
|
||||
CResourceEntry* CResourceStore::RegisterTransientResource(EResType Type, const TWideString& rkDir /*= L""*/, const TWideString& rkFileName /*= L""*/)
|
||||
{
|
||||
CResourceEntry *pEntry = new CResourceEntry(this, CUniqueID::RandomID(), rkDir, rkFileName, Type, true);
|
||||
CResourceEntry *pEntry = new CResourceEntry(this, CAssetID::RandomID(), rkDir, rkFileName, Type, true);
|
||||
mResourceEntries[pEntry->ID()] = pEntry;
|
||||
return pEntry;
|
||||
}
|
||||
|
||||
CResourceEntry* CResourceStore::RegisterTransientResource(EResType Type, const CUniqueID& rkID, const TWideString& rkDir /*=L ""*/, const TWideString& rkFileName /*= L""*/)
|
||||
CResourceEntry* CResourceStore::RegisterTransientResource(EResType Type, const CAssetID& rkID, const TWideString& rkDir /*=L ""*/, const TWideString& rkFileName /*= L""*/)
|
||||
{
|
||||
CResourceEntry *pEntry = FindEntry(rkID);
|
||||
|
||||
@@ -244,7 +244,7 @@ CResourceEntry* CResourceStore::RegisterTransientResource(EResType Type, const C
|
||||
return pEntry;
|
||||
}
|
||||
|
||||
CResource* CResourceStore::LoadResource(const CUniqueID& rkID, const CFourCC& rkType)
|
||||
CResource* CResourceStore::LoadResource(const CAssetID& rkID, const CFourCC& rkType)
|
||||
{
|
||||
if (!rkID.IsValid()) return nullptr;
|
||||
|
||||
@@ -305,7 +305,7 @@ CResource* CResourceStore::LoadResource(const TString& rkPath)
|
||||
// Construct ID from string, check if resource is loaded already
|
||||
TWideString Dir = FileUtil::MakeAbsolute(TWideString(rkPath.GetFileDirectory()));
|
||||
TString Name = rkPath.GetFileName(false);
|
||||
CUniqueID ID = (Name.IsHexString() ? Name.ToInt64() : rkPath.Hash64());
|
||||
CAssetID ID = (Name.IsHexString() ? Name.ToInt64() : rkPath.Hash64());
|
||||
auto Find = mLoadedResources.find(ID);
|
||||
|
||||
if (Find != mLoadedResources.end())
|
||||
@@ -350,7 +350,7 @@ void CResourceStore::TrackLoadedResource(CResourceEntry *pEntry)
|
||||
mLoadedResources[pEntry->ID()] = pEntry;
|
||||
}
|
||||
|
||||
CFourCC CResourceStore::ResourceTypeByID(const CUniqueID& rkID, const TStringList& rkPossibleTypes) const
|
||||
CFourCC CResourceStore::ResourceTypeByID(const CAssetID& rkID, const TStringList& rkPossibleTypes) const
|
||||
{
|
||||
if (!rkID.IsValid()) return eInvalidResType;
|
||||
if (rkPossibleTypes.size() == 1) return CFourCC(rkPossibleTypes.front());
|
||||
@@ -420,7 +420,7 @@ void CResourceStore::DestroyUnreferencedResources()
|
||||
|
||||
bool CResourceStore::DeleteResourceEntry(CResourceEntry *pEntry)
|
||||
{
|
||||
CUniqueID ID = pEntry->ID();
|
||||
CAssetID ID = pEntry->ID();
|
||||
|
||||
if (pEntry->IsLoaded())
|
||||
{
|
||||
|
||||
@@ -3,8 +3,8 @@
|
||||
|
||||
#include "CVirtualDirectory.h"
|
||||
#include "Core/Resource/EResType.h"
|
||||
#include <Common/CAssetID.h>
|
||||
#include <Common/CFourCC.h>
|
||||
#include <Common/CUniqueID.h>
|
||||
#include <Common/TString.h>
|
||||
#include <Common/types.h>
|
||||
#include <map>
|
||||
@@ -21,8 +21,8 @@ class CResourceStore
|
||||
CGameProject *mpProj;
|
||||
CVirtualDirectory *mpProjectRoot;
|
||||
std::vector<CVirtualDirectory*> mTransientRoots;
|
||||
std::map<CUniqueID, CResourceEntry*> mResourceEntries;
|
||||
std::map<CUniqueID, CResourceEntry*> mLoadedResources;
|
||||
std::map<CAssetID, CResourceEntry*> mResourceEntries;
|
||||
std::map<CAssetID, CResourceEntry*> mLoadedResources;
|
||||
|
||||
// Directory to look for transient resources in
|
||||
TWideString mTransientLoadDir;
|
||||
@@ -48,16 +48,16 @@ public:
|
||||
void CloseActiveProject();
|
||||
CVirtualDirectory* GetVirtualDirectory(const TWideString& rkPath, bool Transient, bool AllowCreate);
|
||||
|
||||
bool IsResourceRegistered(const CUniqueID& rkID) const;
|
||||
CResourceEntry* RegisterResource(const CUniqueID& rkID, EResType Type, const TWideString& rkDir, const TWideString& rkFileName);
|
||||
CResourceEntry* FindEntry(const CUniqueID& rkID) const;
|
||||
bool IsResourceRegistered(const CAssetID& rkID) const;
|
||||
CResourceEntry* RegisterResource(const CAssetID& rkID, EResType Type, const TWideString& rkDir, const TWideString& rkFileName);
|
||||
CResourceEntry* FindEntry(const CAssetID& rkID) const;
|
||||
CResourceEntry* RegisterTransientResource(EResType Type, const TWideString& rkDir = L"", const TWideString& rkFileName = L"");
|
||||
CResourceEntry* RegisterTransientResource(EResType Type, const CUniqueID& rkID, const TWideString& rkDir = L"", const TWideString& rkFileName = L"");
|
||||
CResourceEntry* RegisterTransientResource(EResType Type, const CAssetID& rkID, const TWideString& rkDir = L"", const TWideString& rkFileName = L"");
|
||||
|
||||
CResource* LoadResource(const CUniqueID& rkID, const CFourCC& rkType);
|
||||
CResource* LoadResource(const CAssetID& rkID, const CFourCC& rkType);
|
||||
CResource* LoadResource(const TString& rkPath);
|
||||
void TrackLoadedResource(CResourceEntry *pEntry);
|
||||
CFourCC ResourceTypeByID(const CUniqueID& rkID, const TStringList& rkPossibleTypes) const;
|
||||
CFourCC ResourceTypeByID(const CAssetID& rkID, const TStringList& rkPossibleTypes) const;
|
||||
void DestroyUnreferencedResources();
|
||||
bool DeleteResourceEntry(CResourceEntry *pEntry);
|
||||
void SetTransientLoadDir(const TString& rkDir);
|
||||
|
||||
Reference in New Issue
Block a user