diff options
Diffstat (limited to 'Source/Asura.Engine/FileSystem')
-rw-r--r-- | Source/Asura.Engine/FileSystem/DataBuffer.cpp | 14 | ||||
-rw-r--r-- | Source/Asura.Engine/FileSystem/DataBuffer.h | 39 | ||||
-rw-r--r-- | Source/Asura.Engine/FileSystem/DecodedData.cpp | 19 | ||||
-rw-r--r-- | Source/Asura.Engine/FileSystem/DecodedData.h | 41 | ||||
-rw-r--r-- | Source/Asura.Engine/FileSystem/ResourceManager.cpp (renamed from Source/Asura.Engine/FileSystem/File.cpp) | 0 | ||||
-rw-r--r-- | Source/Asura.Engine/FileSystem/ResourceManager.h | 44 |
6 files changed, 157 insertions, 0 deletions
diff --git a/Source/Asura.Engine/FileSystem/DataBuffer.cpp b/Source/Asura.Engine/FileSystem/DataBuffer.cpp new file mode 100644 index 0000000..ec2995a --- /dev/null +++ b/Source/Asura.Engine/FileSystem/DataBuffer.cpp @@ -0,0 +1,14 @@ +#include "DataBuffer.h" + +namespace AsuraEngine +{ + namespace Filesystem + { + + DataBuffer::~DataBuffer() + { + delete[] data; + } + + } +}
\ No newline at end of file diff --git a/Source/Asura.Engine/FileSystem/DataBuffer.h b/Source/Asura.Engine/FileSystem/DataBuffer.h new file mode 100644 index 0000000..f7d8cba --- /dev/null +++ b/Source/Asura.Engine/FileSystem/DataBuffer.h @@ -0,0 +1,39 @@ +#ifndef __ASURA_ENGINE_DATABUFFER_H__ +#define __ASURA_ENGINE_DATABUFFER_H__ + +#include <cstdlib> + +#include "Scripting/Luax.hpp" +#include "Object.h" + +namespace AsuraEngine +{ + namespace Filesystem + { + + /// + /// ڴݵķװеʹData bufferװֱʹconst void*ͨresource managerȡ + /// + class DataBuffer final : virtual public Object, public Scripting::Portable + { + public: + + DataBuffer(const void* data, std::size_t size); + + virtual ~DataBuffer(); + + const void* data; + std::size_t size; + + //---------------------------------------------------------------------------------------------------------- + + LUAX_DECL_FACTORY(DataBuffer); + + //---------------------------------------------------------------------------------------------------------- + + }; + + } +} + +#endif
\ No newline at end of file diff --git a/Source/Asura.Engine/FileSystem/DecodedData.cpp b/Source/Asura.Engine/FileSystem/DecodedData.cpp new file mode 100644 index 0000000..90726cf --- /dev/null +++ b/Source/Asura.Engine/FileSystem/DecodedData.cpp @@ -0,0 +1,19 @@ +#include "DecodedData.h" + +namespace AsuraEngine +{ + namespace Filesystem + { + + DecodedData::DecodedData(const DataBuffer* databuffer) + { + Decode(databuffer); + } + + DecodedData::~DecodedData() + { + + } + + } +} diff --git a/Source/Asura.Engine/FileSystem/DecodedData.h b/Source/Asura.Engine/FileSystem/DecodedData.h new file mode 100644 index 0000000..927052f --- /dev/null +++ b/Source/Asura.Engine/FileSystem/DecodedData.h @@ -0,0 +1,41 @@ +#ifndef __ASURA_ENGINE_DATA_H__ +#define __ASURA_ENGINE_DATA_H__ + +#include <cstdlib> + +#include "DataBuffer.h" +#include "Object.h" + +namespace AsuraEngine +{ + namespace Filesystem + { + + /// + /// һ̹߳data̳дࡣͼƬݡƵݵȣһ߳нԭļڲݸʽ + /// ȡ + /// + class DecodedData : virtual public Object + { + public: + + /// + /// ڴйdataԷһ߳棬Դϵͳء + /// + DecodedData(const DataBuffer* databuffer); + + virtual ~DecodedData(); + + protected: + + /// + /// ڴеݡ + /// + virtual void Decode(const DataBuffer* buffer) = 0; + + }; + + } +} + +#endif
\ No newline at end of file diff --git a/Source/Asura.Engine/FileSystem/File.cpp b/Source/Asura.Engine/FileSystem/ResourceManager.cpp index e69de29..e69de29 100644 --- a/Source/Asura.Engine/FileSystem/File.cpp +++ b/Source/Asura.Engine/FileSystem/ResourceManager.cpp diff --git a/Source/Asura.Engine/FileSystem/ResourceManager.h b/Source/Asura.Engine/FileSystem/ResourceManager.h new file mode 100644 index 0000000..b4aef54 --- /dev/null +++ b/Source/Asura.Engine/FileSystem/ResourceManager.h @@ -0,0 +1,44 @@ +#ifndef __ASURA_ENGINE_RESOURCE_MANAGER_H__ +#define __ASURA_ENGINE_RESOURCE_MANAGER_H__ + +#include <string> + +#include "DataBuffer.h" +#include "Object.h" + +namespace AsuraEngine +{ + namespace Filesystem + { + + /// + /// Դء洢ԴָĿ¼ȡ + /// + class ResourceManager final : virtual public Object + { + public: + + ResourceManager(); + ~ResourceManager(); + + /// + /// װظĿ¼ + /// + void Mount(const std::string& root); + + /// + /// ȡļһdata bufferעҪȷȷڴ棬ڵôʹunique_ptr + /// + DataBuffer* LoadFile(const std::string& path); + + /// + /// data buffer + /// + void SaveFile(const std::string& path, const DataBuffer* buffer); + + }; + + } +} + +#endif
\ No newline at end of file |