11#include <unordered_map>
45 std::string mAbsolutePath;
46 bool mEngineAsset =
false;
53struct AssetMetaSidecar
100 if (asset !=
nullptr &&
101 asset->GetType() != T::GetStaticType())
103 LogError(
"Type mismatch in FetchAsset<T>()");
115 if (asset !=
nullptr &&
116 !asset->
Is(T::ClassRuntimeId()))
118 LogError(
"Type mismatch in LoadAsset<T>()");
145 void Update(
float deltaTime);
148 void Discover(
const char* directoryName,
const char* directoryPath);
156 void Purge(
bool purgeEngineAssets);
204 void GatherScriptFiles(
const std::string &dir, std::vector<std::string> &outFiles);
205 void GatherFontFiles(
const std::string& dir, std::vector<std::string>& outFiles);
260 glm::vec4 GetEditorAssetColor(
TypeId type);
261 void InitAssetColorMap();
264 const std::vector<RawAssetEntry>& GetRawAssetEntries()
const {
return mRawAssetEntries; }
269 void AddRawAssetEntry(
const RawAssetEntry& entry);
274 void RegisterImportExtension(
const std::string& ext,
TypeId type);
275 TypeId LookupImportExtension(
const std::string& ext)
const;
279 static AssetMetaSidecar LoadAssetMeta(
const std::string& assetPath);
284 static void SaveAssetMeta(
const std::string& assetPath, uint32_t platformMask,
bool embed);
291 void ApplyAssetMetaFlags(
const std::string& assetPath, uint32_t platformMask,
bool embed);
294 std::unordered_map<TypeId, glm::vec4> mAssetColorMap;
295 std::vector<RawAssetEntry> mRawAssetEntries;
296 std::unordered_map<std::string, TypeId> mImportExtensionMap;
POLYPHASE_API void UnloadAsset(const std::string &name)
Definition AssetManager.cpp:115
POLYPHASE_API void AsyncLoadAsset(const std::string &name, AssetRef *targetRef=nullptr)
Definition AssetManager.cpp:120
POLYPHASE_API AssetStub * FetchAssetStubByUuid(uint64_t uuid)
Definition AssetManager.cpp:146
POLYPHASE_API AssetStub * FetchAssetStub(const std::string &name)
Definition AssetManager.cpp:125
POLYPHASE_API Asset * FetchAsset(const std::string &name)
Definition AssetManager.cpp:105
POLYPHASE_API Asset * LoadAsset(const std::string &name)
Definition AssetManager.cpp:110
T * NewTransientAsset()
Definition AssetManager.h:301
POLYPHASE_API Asset * LoadAssetByUuid(uint64_t uuid)
Definition AssetManager.cpp:136
POLYPHASE_API Asset * FetchAssetByUuid(uint64_t uuid)
Definition AssetManager.cpp:131
POLYPHASE_API void AsyncLoadAssetByUuid(uint64_t uuid, AssetRef *targetRef=nullptr)
Definition AssetManager.cpp:141
#define INVALID_TYPE_ID
Definition Constants.h:40
uint32_t TypeId
Definition EngineTypes.h:75
@ PlatformBit_All
Definition EngineTypes.h:64
bool Update()
Definition Engine.cpp:995
void LogError(const char *format,...)
Definition Log.cpp:302
#define POLYPHASE_API
Definition PolyphaseAPI.h:31
Definition AssetManager.h:135
bool DoesAssetExist(const std::string &name)
Definition AssetManager.cpp:1805
POLYPHASE_API Asset * LoadAsset(const std::string &name)
Definition AssetManager.cpp:1422
void DiscoverDirectory(AssetDir *directory, bool engineDir)
Definition AssetManager.cpp:522
AssetDir * GetRootDirectory()
Definition AssetManager.cpp:2301
Asset * GetAssetByUuid(uint64_t uuid)
Definition AssetManager.cpp:1494
AssetStub * FindDefaultScene()
Definition AssetManager.cpp:2035
void DiscoverEmbeddedAssets(struct EmbeddedFile *assets, uint32_t numAssets)
Definition AssetManager.cpp:918
void UpdateEndLoadQueue()
Definition AssetManager.cpp:2440
Asset * LoadAssetByUuid(uint64_t uuid)
Definition AssetManager.cpp:1500
POLYPHASE_API AssetDir * GetAssetDirFromPath(const std::string &dirPath)
Definition AssetManager.cpp:441
bool mPurging
Definition AssetManager.h:251
std::vector< std::string > GetAvailableFontFiles()
Definition AssetManager.cpp:2118
static void Create()
Definition AssetManager.cpp:197
void DiscoverAddonPackages(const std::string &packagesDir)
Definition AssetManager.cpp:2264
void AsyncLoadAsset(const std::string &name, AssetRef *targetRef)
Definition AssetManager.cpp:1595
void GatherScriptFiles(const std::string &dir, std::vector< std::string > &outFiles)
Definition AssetManager.cpp:1938
void Initialize()
Definition AssetManager.cpp:244
AssetStub * GetSceneAsset(const std::string &name)
Definition AssetManager.cpp:1409
void GatherFontFiles(const std::string &dir, std::vector< std::string > &outFiles)
Definition AssetManager.cpp:1988
POLYPHASE_API bool PurgeAsset(const char *name)
Definition AssetManager.cpp:1050
static AssetManager * sInstance
Definition AssetManager.h:240
POLYPHASE_API void SaveAsset(const std::string &name)
Definition AssetManager.cpp:1667
static POLYPHASE_API AssetManager * Get()
Definition AssetManager.cpp:212
MutexObject * mMutex
Definition AssetManager.h:256
void Purge(bool purgeEngineAssets)
Definition AssetManager.cpp:999
std::vector< std::string > GetAvailableScriptFiles()
Definition AssetManager.cpp:2138
AssetManager()
Definition AssetManager.cpp:217
POLYPHASE_API AssetStub * RegisterAsset(const std::string &filename, TypeId type, AssetDir *directory, EmbeddedFile *embeddedAsset, bool engineAsset, uint64_t uuid=0)
Definition AssetManager.cpp:277
bool mDestructing
Definition AssetManager.h:252
ThreadObject * mAsyncLoadThread
Definition AssetManager.h:255
bool RenameDirectory(AssetDir *dir, const std::string &newName)
Definition AssetManager.cpp:1902
bool RenameAsset(Asset *asset, const std::string &newName)
Definition AssetManager.cpp:1810
bool IsPurging() const
Definition AssetManager.cpp:497
std::deque< AsyncLoadRequest * > mEndLoadQueue
Definition AssetManager.h:254
std::string GetPolyphaseDirectory()
Definition AssetManager.cpp:2306
POLYPHASE_API AssetStub * GetAssetStubByPath(const std::string &path)
Definition AssetManager.cpp:1555
void AsyncLoadAssetByUuid(uint64_t uuid, AssetRef *targetRef)
Definition AssetManager.cpp:1510
AssetStub * GetAssetStub(const std::string &name)
Definition AssetManager.cpp:1388
std::string GetParentDirectory(const std::string &path)
Definition AssetManager.cpp:1881
std::vector< Asset * > & GetTransientAssets()
Definition AssetManager.cpp:2339
POLYPHASE_API void RegisterTransientAsset(Asset *asset)
Definition AssetManager.cpp:1185
POLYPHASE_API AssetStub * CreateAndRegisterAsset(TypeId assetType, AssetDir *directory, const std::string &filename, bool engineAsset)
Definition AssetManager.cpp:388
std::vector< AssetStub * > GatherDirtyAssets()
Definition AssetManager.cpp:2344
static ThreadFuncRet AsyncLoadThreadFunc(void *in)
Definition AssetManager.cpp:2415
~AssetManager()
Definition AssetManager.cpp:224
void LoadAll()
Definition AssetManager.cpp:1166
void RefreshDirectory(AssetDir *directory)
Definition AssetManager.cpp:676
POLYPHASE_API AssetDir * FindProjectDirectory()
Definition AssetManager.cpp:2216
AssetDir * FindPackagesDirectory()
Definition AssetManager.cpp:2248
std::unordered_map< std::string, AssetStub * > mAssetMap
Definition AssetManager.h:246
AssetStub * GetAssetStubByUuid(uint64_t uuid)
Definition AssetManager.cpp:1486
void UnloadProjectDirectory()
Definition AssetManager.cpp:2314
POLYPHASE_API void DiscoverAssetRegistry(const char *registryPath)
Definition AssetManager.cpp:808
AssetDir * FindEngineDirectory()
Definition AssetManager.cpp:2232
bool ProcessNextBeginLoad()
Definition AssetManager.cpp:2371
std::unordered_map< std::string, AssetStub * > mAssetPathMap
Definition AssetManager.h:247
void GatherScriptFilesRecursive(const std::string &dirPath, const std::string &relativePath, std::vector< std::string > &scriptFiles)
void RefSweep()
Definition AssetManager.cpp:1117
std::deque< AsyncLoadRequest * > mBeginLoadQueue
Definition AssetManager.h:253
bool UnloadAsset(const std::string &name)
Definition AssetManager.cpp:1762
std::vector< Asset * > mTransientAssets
Definition AssetManager.h:249
std::unordered_map< uint64_t, AssetStub * > mUuidMap
Definition AssetManager.h:248
AssetDir * mRootDirectory
Definition AssetManager.h:250
std::string FindDefaultScenePath()
Definition AssetManager.cpp:2048
POLYPHASE_API void UnregisterTransientAsset(Asset *asset)
Definition AssetManager.cpp:1197
static void Destroy()
Definition AssetManager.cpp:203
AssetDir * FindProjectRootDirectory()
POLYPHASE_API std::unordered_map< std::string, AssetStub * > & GetAssetMap()
Definition AssetManager.cpp:2334
void ImportEngineAssets()
Definition AssetManager.cpp:1266
POLYPHASE_API Asset * GetAsset(const std::string &name)
Definition AssetManager.cpp:1396
POLYPHASE_API Asset * LoadAssetByPath(const std::string &path)
Definition AssetManager.cpp:1585
Asset * ImportEngineAsset(TypeId assetType, AssetDir *dir, const std::string &filename, ImportOptions *options=nullptr)
Definition AssetManager.cpp:1211
bool IsAssetLive(const Asset *asset) const
Definition AssetManager.cpp:502
void Discover(const char *directoryName, const char *directoryPath)
Definition AssetManager.cpp:786
virtual bool Is(RuntimeId id) const
Definition Object.h:29
Definition ParticleSystem.h:66
Definition AssetManager.h:19
std::string mName
Definition AssetManager.h:20
const EmbeddedFile * mEmbeddedData
Definition AssetManager.h:25
Asset * mAsset
Definition AssetManager.h:27
int32_t mRequeueCount
Definition AssetManager.h:28
TypeId mType
Definition AssetManager.h:26
std::vector< AssetStub * > mDependentAssets
Definition AssetManager.h:24
std::vector< AssetRef * > mTargetRefs
Definition AssetManager.h:23
uint64_t mUuid
Definition AssetManager.h:22
std::string mPath
Definition AssetManager.h:21
Definition EmbeddedFile.h:6