convert map to table
This commit is contained in:
parent
5172310fd8
commit
bce38fe13e
@ -1,9 +1,10 @@
|
||||
#pragma once
|
||||
#include "any.h"
|
||||
#include <map>
|
||||
#include <unordered_map>
|
||||
namespace refl {
|
||||
|
||||
using ConvertFunc = bool (*)(Any&, const Any&);
|
||||
using ConvertMap = std::map<const UClass*, ConvertFunc>;
|
||||
using ConvertMap = std::unordered_map<const UClass*, ConvertFunc>;
|
||||
class Convert {
|
||||
protected:
|
||||
static ConvertMap BuildClassMap();
|
||||
|
||||
@ -31,7 +31,6 @@ namespace refl {
|
||||
uint32_t size;
|
||||
uint32_t flag{0};
|
||||
const UClass* parent;
|
||||
Meta* meta{nullptr};
|
||||
vtable_uclass vtable{};
|
||||
public:
|
||||
constexpr UClass(std::string_view name, uint32_t size, const UClass* parent = nullptr)
|
||||
|
||||
6
engine/3rdparty/zlib/include/zstd/table.h
vendored
Normal file
6
engine/3rdparty/zlib/include/zstd/table.h
vendored
Normal file
@ -0,0 +1,6 @@
|
||||
#pragma once
|
||||
#include <unordered_map>
|
||||
namespace zstd {
|
||||
template<typename T1, typename T2, typename Hasher = std::hash<T1>>
|
||||
using table = std::unordered_map<T1, T2, Hasher>;
|
||||
}
|
||||
4
engine/3rdparty/zlib/test/refl/vertex.cpp
vendored
4
engine/3rdparty/zlib/test/refl/vertex.cpp
vendored
@ -1,3 +1 @@
|
||||
#include "vertex.h"
|
||||
#include "vkmeta_vertex_gen.inl"
|
||||
#include "dxmeta_vertex_gen.inl"
|
||||
#include "vertex.h"
|
||||
6
engine/3rdparty/zlog/test/assetmanager.h
vendored
6
engine/3rdparty/zlog/test/assetmanager.h
vendored
@ -1,7 +1,5 @@
|
||||
#pragma once
|
||||
#include "singleton.h"
|
||||
class AssetManager :public Singleton<AssetManager> {
|
||||
class AssetManager :public ISingleton<AssetManager> {
|
||||
|
||||
};
|
||||
template<>
|
||||
AssetManager* Singleton<AssetManager>::ms_Singleton = nullptr;
|
||||
};
|
||||
34
engine/src/3rdparty/template/singleton.h
vendored
34
engine/src/3rdparty/template/singleton.h
vendored
@ -1,9 +1,37 @@
|
||||
#pragma once
|
||||
|
||||
class ISystem {
|
||||
public:
|
||||
virtual void Init() = 0;
|
||||
virtual void LateInit() {};
|
||||
virtual void EarlyShutdown() {};
|
||||
virtual void Shutdown() = 0;
|
||||
virtual ~ISystem() = default;
|
||||
};
|
||||
template <typename T>
|
||||
class Singleton {
|
||||
class ISingleton : public ISystem{
|
||||
protected:
|
||||
static T* ms_Singleton;
|
||||
inline static T* ms_Singleton = nullptr;
|
||||
public:
|
||||
explicit ISingleton() {
|
||||
ms_Singleton = static_cast<T*>(this);
|
||||
}
|
||||
~ISingleton() {
|
||||
ms_Singleton = nullptr;
|
||||
}
|
||||
static constexpr T& GetSingleton(void) {
|
||||
return *ms_Singleton;
|
||||
}
|
||||
static constexpr T* GetSingletonPtr(void) {
|
||||
return ms_Singleton;
|
||||
}
|
||||
public:
|
||||
void Init() override = 0;
|
||||
void Shutdown()override = 0;
|
||||
};
|
||||
template <typename T>
|
||||
class Singleton{
|
||||
protected:
|
||||
inline static T* ms_Singleton = nullptr;
|
||||
public:
|
||||
explicit Singleton() {
|
||||
ms_Singleton = static_cast<T*>(this);
|
||||
|
||||
@ -9,21 +9,33 @@ namespace engineapi {
|
||||
App::App(const string& path)
|
||||
{
|
||||
const char* name = "zengine";
|
||||
new AssetManager();
|
||||
_RenderAPI = RenderAPI::MakeInstance();
|
||||
_Window = Window::MakeInstance(3, 640, 720, name);
|
||||
_RenderAPI->OnInit();
|
||||
auto scene_manager = new SceneManager();
|
||||
scene_manager->LoadScene(path);
|
||||
SystemList.push_back(new AssetManager());
|
||||
SystemList.push_back(RenderAPI::MakeInstance());
|
||||
SystemList.push_back(Window::MakeInstance(3, 640, 720, name));
|
||||
}
|
||||
App::~App()
|
||||
{
|
||||
delete _Window;
|
||||
delete _RenderAPI;
|
||||
for (auto system : SystemList) {
|
||||
delete system;
|
||||
}
|
||||
SystemList.clear();
|
||||
}
|
||||
void App::Init()
|
||||
{
|
||||
for (auto system : SystemList) {
|
||||
system->Init();
|
||||
}
|
||||
}
|
||||
void App::Shutdown()
|
||||
{
|
||||
for (auto system : SystemList) {
|
||||
system->Shutdown();
|
||||
}
|
||||
}
|
||||
void App::Launch()
|
||||
{
|
||||
while (true) {
|
||||
Init();
|
||||
while (Loop) {
|
||||
Update();
|
||||
Render();
|
||||
}
|
||||
|
||||
@ -1,19 +1,22 @@
|
||||
#pragma once
|
||||
#include <string>
|
||||
#include <vector>
|
||||
#include "singleton.h"
|
||||
using std::vector;
|
||||
using std::string;
|
||||
namespace engineapi
|
||||
{
|
||||
class RenderAPI;
|
||||
class Window;
|
||||
class App {
|
||||
public:
|
||||
RenderAPI* _RenderAPI{nullptr};
|
||||
Window* _Window{ nullptr };
|
||||
bool Loop{true};
|
||||
vector<ISystem*> SystemList;
|
||||
public:
|
||||
App(const string& path);
|
||||
~App();
|
||||
void Launch();
|
||||
public:
|
||||
void Init();
|
||||
void Shutdown();
|
||||
void Launch();
|
||||
void Update();
|
||||
void Render();
|
||||
};
|
||||
|
||||
@ -3,11 +3,15 @@
|
||||
#include <string>
|
||||
#include <vector>
|
||||
#include <map>
|
||||
#include "zstd/table.h"
|
||||
#include "UTemplate/Type.hpp"
|
||||
namespace engineapi
|
||||
{
|
||||
using std::string;
|
||||
using std::vector;
|
||||
using std::map;
|
||||
using zstd::table;
|
||||
using Ubpa::Name;
|
||||
class Asset {
|
||||
public:
|
||||
friend class AssetManager;
|
||||
|
||||
@ -2,6 +2,12 @@
|
||||
#include "zlog.h"
|
||||
using namespace std;
|
||||
namespace engineapi {
|
||||
void AssetManager::Init()
|
||||
{
|
||||
}
|
||||
void AssetManager::Shutdown()
|
||||
{
|
||||
}
|
||||
void AssetManager::ClearAsset(Asset* asset)
|
||||
{
|
||||
auto it = mAssetMap.find(asset->mName);
|
||||
|
||||
@ -9,7 +9,7 @@
|
||||
using json = nlohmann::json;
|
||||
namespace engineapi
|
||||
{
|
||||
class AssetManager : public Singleton<AssetManager>
|
||||
class AssetManager : public ISingleton<AssetManager>
|
||||
{
|
||||
public:
|
||||
struct AssetWrap {
|
||||
@ -22,6 +22,9 @@ namespace engineapi
|
||||
|
||||
private:
|
||||
map<const string, AssetWrap> mAssetMap;
|
||||
public:
|
||||
void Init() override;
|
||||
void Shutdown() override;
|
||||
public:
|
||||
void ClearAsset(Asset* asset);
|
||||
template<typename TAsset>
|
||||
@ -55,5 +58,3 @@ namespace engineapi
|
||||
static json LoadJsonFile(const string& path);
|
||||
};
|
||||
}
|
||||
template<>
|
||||
engineapi::AssetManager* Singleton<engineapi::AssetManager>::ms_Singleton = nullptr;
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
#include "property.h"
|
||||
|
||||
namespace engineapi {
|
||||
map<uint32_t, Property> Property::PropertyMap;
|
||||
|
||||
}
|
||||
@ -1,11 +1,11 @@
|
||||
#pragma once
|
||||
#include <string>
|
||||
#include <vector>
|
||||
#include <map>
|
||||
#include "zstd/table.h"
|
||||
namespace engineapi {
|
||||
using std::string;
|
||||
using std::vector;
|
||||
using std::map;
|
||||
using zstd::table;
|
||||
class Property {
|
||||
public:
|
||||
enum {
|
||||
@ -17,7 +17,7 @@ namespace engineapi {
|
||||
uint32_t flags = 0;
|
||||
string path = "";
|
||||
public:
|
||||
static map<uint32_t, Property> PropertyMap;
|
||||
inline static table<uint32_t, Property> PropertyMap;
|
||||
|
||||
template<typename TProperty>
|
||||
static TProperty* GetProperty(uint32_t id) {
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
#include "scene_manager.h"
|
||||
#include "zlog.h"
|
||||
namespace engineapi {
|
||||
Scene* SceneManager::GetScene(const string& name)
|
||||
Scene* SceneManager::GetScene(const Name& name)
|
||||
{
|
||||
auto sceneInfo = GetSceneInfo(name);
|
||||
if (sceneInfo == nullptr)
|
||||
@ -14,7 +14,7 @@ namespace engineapi {
|
||||
}
|
||||
}
|
||||
|
||||
void SceneManager::LoadScene(const string& path, bool switchNow)
|
||||
void SceneManager::LoadScene(const Name& path, bool switchNow)
|
||||
{
|
||||
curScene = new SceneInfo{
|
||||
path,
|
||||
@ -22,14 +22,14 @@ namespace engineapi {
|
||||
};
|
||||
}
|
||||
|
||||
void SceneManager::SwitchScene(const string& name)
|
||||
void SceneManager::SwitchScene(const Name& name)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void SceneManager::DeleteScene(const string& name)
|
||||
void SceneManager::DeleteScene(const Name& name)
|
||||
{
|
||||
map<string, SceneInfo*>::iterator iter = scenes.find(name);
|
||||
auto iter = scenes.find(name);
|
||||
if (iter != scenes.end())
|
||||
{
|
||||
delete iter->second->scene;
|
||||
@ -73,9 +73,9 @@ namespace engineapi {
|
||||
return curScene->scene;
|
||||
}
|
||||
|
||||
SceneInfo* SceneManager::GetSceneInfo(const string& name)
|
||||
SceneInfo* SceneManager::GetSceneInfo(const Name& name)
|
||||
{
|
||||
map<string, SceneInfo*>::iterator iter = scenes.find(name);
|
||||
auto iter = scenes.find(name);
|
||||
if (iter != scenes.end())
|
||||
return iter->second;
|
||||
else
|
||||
|
||||
@ -5,25 +5,23 @@
|
||||
namespace engineapi {
|
||||
struct SceneInfo
|
||||
{
|
||||
string path;
|
||||
Name name;
|
||||
Scene* scene = nullptr;
|
||||
};
|
||||
class SceneManager :public Singleton<SceneManager> {
|
||||
class SceneManager :public ISingleton<SceneManager> {
|
||||
protected:
|
||||
SceneInfo* curScene = nullptr;
|
||||
map<string, SceneInfo*> scenes;
|
||||
table<Name, SceneInfo*> scenes;
|
||||
public:
|
||||
Scene* GetScene(const string& name);
|
||||
void LoadScene(const string& path, bool switchNow = true);
|
||||
void SwitchScene(const string& name);
|
||||
void DeleteScene(const string& name);
|
||||
Scene* GetScene(const Name& name);
|
||||
void LoadScene(const Name& path, bool switchNow = true);
|
||||
void SwitchScene(const Name& name);
|
||||
void DeleteScene(const Name& name);
|
||||
void DeleteAllScene();
|
||||
void ReloadScene();
|
||||
void Render();
|
||||
void Update();
|
||||
Scene* GetCurScene();
|
||||
SceneInfo* GetSceneInfo(const string& name);
|
||||
SceneInfo* GetSceneInfo(const Name& name);
|
||||
};
|
||||
}
|
||||
template<>
|
||||
engineapi::SceneManager* Singleton<engineapi::SceneManager>::ms_Singleton = nullptr;
|
||||
}
|
||||
@ -9,8 +9,7 @@ namespace engineapi {
|
||||
struct Vertex {
|
||||
|
||||
};
|
||||
|
||||
struct PosVertex {
|
||||
struct PosVertex : public Vertex {
|
||||
using MyMetas = class PosVertex_MultyMeta;
|
||||
UPROPERTY_vk({}, VertexMeta{ VK_FORMAT_R32G32B32_SFLOAT })
|
||||
Vector3 Position = {};
|
||||
|
||||
@ -44,7 +44,7 @@ namespace engineapi {
|
||||
|
||||
//RenderAPI::GetInstance()->Draw(skyBox->VAO);
|
||||
}
|
||||
void RenderNodeForwardRendering::RenderBatches(const map<uint32_t, vector<MeshRenderer*>>& batchs)
|
||||
void RenderNodeForwardRendering::RenderBatches(const table<uint32_t, vector<MeshRenderer*>>& batchs)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
@ -16,6 +16,6 @@ namespace engineapi {
|
||||
Model* mSky;
|
||||
|
||||
void RenderSkyBox(Camera& camera);
|
||||
void RenderBatches(const map<uint32_t, vector<MeshRenderer*>>& batchs);
|
||||
void RenderBatches(const table<uint32_t, vector<MeshRenderer*>>& batchs);
|
||||
};
|
||||
}
|
||||
@ -9,7 +9,7 @@ namespace engineapi {
|
||||
{
|
||||
|
||||
}
|
||||
void RenderAPI::OnInit()
|
||||
void RenderAPI::Init()
|
||||
{
|
||||
InitRenderNode();
|
||||
InitRenderPass();
|
||||
|
||||
@ -7,7 +7,7 @@ namespace engineapi
|
||||
class Shader;
|
||||
class Camera;
|
||||
class RenderNode;
|
||||
class RenderAPI : public Singleton<RenderAPI>
|
||||
class RenderAPI : public ISingleton<RenderAPI>
|
||||
{
|
||||
protected:
|
||||
uint32_t mFrame;
|
||||
@ -19,11 +19,13 @@ namespace engineapi
|
||||
RenderAPI();
|
||||
virtual ~RenderAPI() {};
|
||||
public:
|
||||
virtual RenderContext* GetContext() = 0;
|
||||
public:
|
||||
virtual void OnInit();
|
||||
void Init() override;
|
||||
void Shutdown() override {};
|
||||
|
||||
virtual void InitRenderNode();
|
||||
virtual void InitRenderPass() = 0;
|
||||
public:
|
||||
virtual RenderContext* GetContext() = 0;
|
||||
public:
|
||||
virtual void SetViewPort(uint32_t width, uint32_t height, uint32_t xOffset = 0, uint32_t yOffset = 0) = 0;
|
||||
virtual void BeginFrame() = 0;
|
||||
@ -39,6 +41,4 @@ namespace engineapi
|
||||
public:
|
||||
static RenderAPI* MakeInstance();
|
||||
};
|
||||
}
|
||||
template<>
|
||||
engineapi::RenderAPI* Singleton<engineapi::RenderAPI>::ms_Singleton = nullptr;
|
||||
}
|
||||
@ -3,7 +3,7 @@
|
||||
#include <cstdint>
|
||||
#include "singleton.h"
|
||||
namespace engineapi {
|
||||
class Window : public Singleton<Window> {
|
||||
class Window : public ISingleton<Window> {
|
||||
protected:
|
||||
int mWidth;
|
||||
int mHeight;
|
||||
@ -29,6 +29,9 @@ namespace engineapi {
|
||||
static LRESULT CALLBACK HandleMsgSetup(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) noexcept;
|
||||
static LRESULT CALLBACK HandleMsgThunk(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) noexcept;
|
||||
LRESULT HandleMsg(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) noexcept;
|
||||
public:
|
||||
void Init() override {};
|
||||
void Shutdown() override {};
|
||||
public:
|
||||
Window(int width, int height, const char* title);
|
||||
HWND Ptr() {
|
||||
@ -42,6 +45,4 @@ namespace engineapi {
|
||||
static bool ProcessMessages(int& code);
|
||||
static Window* MakeInstance(int frames, uint32_t width, uint32_t height, const char* title);
|
||||
};
|
||||
};
|
||||
template<>
|
||||
engineapi::Window* Singleton<engineapi::Window>::ms_Singleton = nullptr;
|
||||
};
|
||||
@ -11,7 +11,7 @@ namespace vulkanapi {
|
||||
Instance* mInstance;
|
||||
Device* mDevice;
|
||||
DescriptorPool* mPool;
|
||||
map<const string*, CommandWorker*> mWorkerMap;
|
||||
table<const string*, CommandWorker*> mWorkerMap;
|
||||
public:
|
||||
Instance& GetInstance() {
|
||||
return *mInstance;
|
||||
|
||||
0
engine/src/engine/vulkanapi/tool/glsl_loader.cpp
Normal file
0
engine/src/engine/vulkanapi/tool/glsl_loader.cpp
Normal file
0
engine/src/engine/vulkanapi/tool/glsl_loader.h
Normal file
0
engine/src/engine/vulkanapi/tool/glsl_loader.h
Normal file
@ -5,7 +5,7 @@
|
||||
#include "volk.h"
|
||||
#include <string>
|
||||
#include <vector>
|
||||
#include <map>
|
||||
#include "zstd/table.h"
|
||||
namespace vulkanapi {
|
||||
#define Z_USE_GRAPHIC_DEBUG
|
||||
class CommandBuffer;
|
||||
@ -13,7 +13,7 @@ using std::array;
|
||||
using std::string;
|
||||
using std::to_string;
|
||||
using std::vector;
|
||||
using std::map;
|
||||
using zstd::table;
|
||||
using std::make_pair;
|
||||
using voidFn = std::function<void()>;
|
||||
using commandFn = std::function<void(CommandBuffer& cmd)>;
|
||||
|
||||
@ -8,7 +8,7 @@ using engineapi::Matrix4;
|
||||
using engineapi::FrameBufferType;
|
||||
using engineapi::ClearInfo;
|
||||
using engineapi::CommandType;
|
||||
#define ShaderModuleSet map<VkShaderStageFlagBits, VkShaderModule>
|
||||
#define ShaderModuleSet table<VkShaderStageFlagBits, VkShaderModule>
|
||||
|
||||
namespace vulkanapi
|
||||
{
|
||||
|
||||
@ -9,7 +9,7 @@ namespace vulkanapi {
|
||||
protected:
|
||||
VkDevice mPtr{ NULL };
|
||||
VkPhysicalDevice mPhysical{NULL};
|
||||
map<const string*, Queue*> mQueueMap;
|
||||
table<const string*, Queue*> mQueueMap;
|
||||
public:
|
||||
VkDevice& Ptr() {
|
||||
return mPtr;
|
||||
|
||||
@ -15,7 +15,7 @@ function cmd_compile(genfile, sourcefile, template, macro, define)
|
||||
table.insert(argv, define)
|
||||
end
|
||||
print("cmd_meta_compile", genfile)
|
||||
os.runv(meta.program, argv)
|
||||
os.execv(meta.program, argv)
|
||||
return argv
|
||||
end
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user