CSEngine
Loading...
Searching...
No Matches
ResMgr.h
1#pragma once
2
3#include "../MacroDef.h"
4#include "Base/SContainerList.h"
5#include "../Object/SResource.h"
6#include "AssetMgr.h"
7#include "Base/CoreBase.h"
8#include "Base/SContainerHash.h"
9#include <vector>
10
11#ifdef __ANDROID__
12#include <android/asset_manager.h>
13#include <android/asset_manager_jni.h>
14#endif
15
16namespace CSE {
17
18 class SObject;
19
20 class GLProgramHandle;
21
22 class SISurface;
23
24 class ResMgr : public CoreBase, public SContainerHash<SResource*> {
25 public:
26 explicit ResMgr();
27 ~ResMgr() override;
28
29 public:
30
31 void Init() override;
32
33 void InitResource();
34
35 void Exterminate();
36
37 void Remove(SResource* m_object) override;
38
39 template <class TYPE>
40 TYPE* GetObjectByHash(const std::string& hash) const;
41
42 SResource* GetSResource(std::string name) const;
43
44 int GetStringHash(const std::string& str);
45
46 AssetMgr::AssetReference* GetAssetReference(std::string name) const;
47
48 std::list<AssetMgr::AssetReference*> GetAssetReferences(AssetMgr::TYPE type) const;
49
50#ifdef __CSE_EDITOR__
51 std::list<AssetMgr::AssetReference*> GetAllAssetReferences() const {
52 return m_assetManager->GetAllAssets();
53 }
54#endif
55
56#ifdef __ANDROID__
57 void SetAssetManager(AAssetManager* obj);
58 AAssetManager* GetAssetManager();
59 void SetEnv(JNIEnv* obj);
60 JNIEnv* GetEnv();
61#endif
62
63 private:
64 AssetMgr* m_assetManager = nullptr;
65 std::vector<std::string> m_stringIds;
66
67 public:
68 friend class AssetMgr;
69 };
70
71 template <class TYPE>
72 TYPE* ResMgr::GetObjectByHash(const std::string& hash) const {
73 if(m_objects.count(hash) <= 0) return nullptr;
74
75 return static_cast<TYPE*>(Get(hash));
76 }
77}