// Copyright (c) 2012-2021 Wojciech Figat. All rights reserved. #pragma once #include "FlaxStorage.h" /// /// Flax Game Engine asset files container object. /// class FLAXENGINE_API FlaxFile : public FlaxStorage { friend ContentStorageManager; protected: Entry _asset; public: /// /// Initializes a new instance of the class. /// /// The path. FlaxFile(const StringView& path) : FlaxStorage(path) { _asset.ID = Guid::Empty; } public: /// /// Finalizes an instance of the class. /// ~FlaxFile() { } public: // [FlaxStorage] String ToString() const override { return String::Format(TEXT("Asset \'{0}\'"), _path); } bool IsPackage() const override { return false; } bool AllowDataModifications() const override { return true; } bool HasAsset(const Guid& id) const override { return _asset.ID == id; } bool HasAsset(const AssetInfo& info) const override { #if USE_EDITOR if (_path != info.Path) return false; #endif return _asset.ID == info.ID && _asset.TypeName == info.TypeName; } int32 GetEntriesCount() const override { return _asset.ID.IsValid() ? 1 : 0; } void GetEntry(int32 index, Entry& output) const override { ASSERT(index == 0); output = _asset; } void GetEntries(Array& output) const override { if (_asset.ID.IsValid()) output.Add(_asset); } void Dispose() override { // Base FlaxStorage::Dispose(); // Clean _asset.ID = Guid::Empty; } protected: // [FlaxStorage] bool GetEntry(const Guid& id, Entry& e) override { e = _asset; return id != _asset.ID; } void AddEntry(Entry& e) override { ASSERT(_asset.ID.IsValid() == false); _asset = e; } };