From 66c5fdc564dd892ed265132d6c1378dbe3cebcee Mon Sep 17 00:00:00 2001 From: chai Date: Wed, 27 Mar 2019 09:07:54 +0800 Subject: *misc --- source/libs/asura-lib-core/application.h | 4 +- source/libs/asura-lib-core/client/client.h | 25 ----- .../asura-lib-core/client/sdl/sdl_application.cpp | 0 .../asura-lib-core/client/sdl/sdl_application.h | 28 ----- .../libs/asura-lib-core/client/sdl/sdl_cursor.cpp | 0 source/libs/asura-lib-core/client/sdl/sdl_cursor.h | 0 .../libs/asura-lib-core/client/sdl/sdl_thread.cpp | 0 source/libs/asura-lib-core/client/sdl/sdl_thread.h | 0 .../libs/asura-lib-core/client/sdl/sdl_window.cpp | 0 source/libs/asura-lib-core/client/sdl/sdl_window.h | 29 ------ .../asura-lib-core/graphics/binding/_canvas.cpp | 46 ++++++++ .../asura-lib-core/graphics/binding/_color.cpp | 54 ++++++++++ .../asura-lib-core/graphics/binding/_color32.cpp | 86 +++++++++++++++ .../libs/asura-lib-core/graphics/binding/_gif.cpp | 0 .../asura-lib-core/graphics/binding/_image.cpp | 54 ++++++++++ .../graphics/binding/_image_data.cpp | 42 +++++--- .../asura-lib-core/graphics/binding/_mesh2d.cpp | 21 ++++ .../graphics/binding/_mesh2d_data.cpp | 9 -- .../asura-lib-core/graphics/binding/_shader.cpp | 116 ++++++++++++--------- .../graphics/binding/_sprite_batch.cpp | 21 ++++ .../asura-lib-core/graphics/binding/_window.cpp | 11 -- source/libs/asura-lib-core/graphics/canvas.h | 6 +- source/libs/asura-lib-core/graphics/color.cpp | 89 +--------------- source/libs/asura-lib-core/graphics/color.h | 51 +-------- source/libs/asura-lib-core/graphics/color32.cpp | 39 +++++++ source/libs/asura-lib-core/graphics/color32.h | 51 +++++++++ source/libs/asura-lib-core/graphics/image.h | 21 ++-- .../asura-lib-core/graphics/image_decode_task.cpp | 0 .../asura-lib-core/graphics/image_decode_task.h | 25 +++++ .../libs/asura-lib-core/graphics/image_decoder.h | 6 +- source/libs/asura-lib-core/graphics/mesh2d.h | 4 +- source/libs/asura-lib-core/graphics/png_decoder.h | 4 +- source/libs/asura-lib-core/graphics/render_state.h | 5 +- .../libs/asura-lib-core/graphics/render_target.h | 10 +- source/libs/asura-lib-core/graphics/shader.h | 51 ++++----- source/libs/asura-lib-core/graphics/sprite_batch.h | 2 +- source/libs/asura-lib-core/graphics/stb_decoder.h | 4 +- source/libs/asura-lib-core/graphics/texture.h | 14 +-- source/libs/asura-lib-core/graphics/window.h | 45 +++++--- .../asura-lib-core/graphics/window_impl_sdl.cpp | 0 .../libs/asura-lib-core/graphics/window_impl_sdl.h | 0 source/libs/asura-lib-core/input/cursor.h | 26 +++-- .../libs/asura-lib-core/input/cursor_impl_sdl.cpp | 0 source/libs/asura-lib-core/input/cursor_impl_sdl.h | 0 .../threading/binding/_coroutine.cpp | 0 .../asura-lib-core/threading/binding/_thread.cpp | 0 source/libs/asura-lib-core/threading/coroutine.cpp | 0 source/libs/asura-lib-core/threading/coroutine.h | 27 ----- source/libs/asura-lib-core/threading/thread.cpp | 0 source/libs/asura-lib-core/threading/thread.h | 0 source/libs/asura-lib-utils/io/binding/_file.cpp | 6 +- source/libs/asura-lib-utils/io/file.h | 3 + source/libs/asura-lib-utils/io/file_data.h | 2 +- source/libs/asura-lib-utils/io/io_task.cpp | 0 source/libs/asura-lib-utils/io/io_task.h | 39 +++++++ source/libs/asura-lib-utils/io/reloadable.h | 2 + .../libs/asura-lib-utils/threading/coroutine.cpp | 0 source/libs/asura-lib-utils/threading/coroutine.h | 31 ++++++ source/libs/asura-lib-utils/threading/mutex.cpp | 0 source/libs/asura-lib-utils/threading/mutex.h | 21 ++++ source/libs/asura-lib-utils/threading/thread.cpp | 14 +++ source/libs/asura-lib-utils/threading/thread.h | 60 +++++++++++ .../threading/thread_impl_posix.cpp | 0 .../asura-lib-utils/threading/thread_impl_posix.h | 0 .../asura-lib-utils/threading/thread_impl_sdl.cpp | 0 .../asura-lib-utils/threading/thread_impl_sdl.h | 0 .../asura-lib-utils/threading/thread_impl_std.cpp | 0 .../asura-lib-utils/threading/thread_impl_std.h | 0 .../threading/thread_impl_win32.cpp | 0 .../asura-lib-utils/threading/thread_impl_win32.h | 35 +++++++ .../libs/asura-lib-utils/threading/thread_task.cpp | 0 .../libs/asura-lib-utils/threading/thread_task.h | 27 +++++ source/libs/asura-lib-utils/utils_config.h | 6 ++ source/libs/asura-lib-utils/utils_module.cpp | 3 + source/libs/asura-lib-utils/utils_module.h | 2 + 75 files changed, 853 insertions(+), 424 deletions(-) delete mode 100644 source/libs/asura-lib-core/client/client.h delete mode 100644 source/libs/asura-lib-core/client/sdl/sdl_application.cpp delete mode 100644 source/libs/asura-lib-core/client/sdl/sdl_application.h delete mode 100644 source/libs/asura-lib-core/client/sdl/sdl_cursor.cpp delete mode 100644 source/libs/asura-lib-core/client/sdl/sdl_cursor.h delete mode 100644 source/libs/asura-lib-core/client/sdl/sdl_thread.cpp delete mode 100644 source/libs/asura-lib-core/client/sdl/sdl_thread.h delete mode 100644 source/libs/asura-lib-core/client/sdl/sdl_window.cpp delete mode 100644 source/libs/asura-lib-core/client/sdl/sdl_window.h create mode 100644 source/libs/asura-lib-core/graphics/binding/_color32.cpp delete mode 100644 source/libs/asura-lib-core/graphics/binding/_gif.cpp delete mode 100644 source/libs/asura-lib-core/graphics/binding/_mesh2d_data.cpp delete mode 100644 source/libs/asura-lib-core/graphics/binding/_window.cpp create mode 100644 source/libs/asura-lib-core/graphics/color32.cpp create mode 100644 source/libs/asura-lib-core/graphics/color32.h create mode 100644 source/libs/asura-lib-core/graphics/image_decode_task.cpp create mode 100644 source/libs/asura-lib-core/graphics/image_decode_task.h create mode 100644 source/libs/asura-lib-core/graphics/window_impl_sdl.cpp create mode 100644 source/libs/asura-lib-core/graphics/window_impl_sdl.h create mode 100644 source/libs/asura-lib-core/input/cursor_impl_sdl.cpp create mode 100644 source/libs/asura-lib-core/input/cursor_impl_sdl.h delete mode 100644 source/libs/asura-lib-core/threading/binding/_coroutine.cpp delete mode 100644 source/libs/asura-lib-core/threading/binding/_thread.cpp delete mode 100644 source/libs/asura-lib-core/threading/coroutine.cpp delete mode 100644 source/libs/asura-lib-core/threading/coroutine.h delete mode 100644 source/libs/asura-lib-core/threading/thread.cpp delete mode 100644 source/libs/asura-lib-core/threading/thread.h create mode 100644 source/libs/asura-lib-utils/io/io_task.cpp create mode 100644 source/libs/asura-lib-utils/io/io_task.h create mode 100644 source/libs/asura-lib-utils/threading/coroutine.cpp create mode 100644 source/libs/asura-lib-utils/threading/coroutine.h create mode 100644 source/libs/asura-lib-utils/threading/mutex.cpp create mode 100644 source/libs/asura-lib-utils/threading/mutex.h create mode 100644 source/libs/asura-lib-utils/threading/thread.cpp create mode 100644 source/libs/asura-lib-utils/threading/thread.h create mode 100644 source/libs/asura-lib-utils/threading/thread_impl_posix.cpp create mode 100644 source/libs/asura-lib-utils/threading/thread_impl_posix.h create mode 100644 source/libs/asura-lib-utils/threading/thread_impl_sdl.cpp create mode 100644 source/libs/asura-lib-utils/threading/thread_impl_sdl.h create mode 100644 source/libs/asura-lib-utils/threading/thread_impl_std.cpp create mode 100644 source/libs/asura-lib-utils/threading/thread_impl_std.h create mode 100644 source/libs/asura-lib-utils/threading/thread_impl_win32.cpp create mode 100644 source/libs/asura-lib-utils/threading/thread_impl_win32.h create mode 100644 source/libs/asura-lib-utils/threading/thread_task.cpp create mode 100644 source/libs/asura-lib-utils/threading/thread_task.h (limited to 'source/libs') diff --git a/source/libs/asura-lib-core/application.h b/source/libs/asura-lib-core/application.h index b61154d..9606819 100644 --- a/source/libs/asura-lib-core/application.h +++ b/source/libs/asura-lib-core/application.h @@ -65,7 +65,9 @@ namespace AsuraEngine private: /// - /// 主线程的lua state,应用主循环在这里运行。 + /// 主线程的lua state handle,应用主循环在这里运行。一般上来说,只需要主线程有一个lua_State,其他线程不需要。在两个线程间 + /// 传递lua数据太痛苦了。任务在C++里面写,然后注册一个回调,而不是在另一个线程创建lua_State并注册函数,执行后发回数据 + /// 给主线程的lua_State。保证只有一个native实例之和一个lua_State绑定。 /// lua_State* mMainLuaState; diff --git a/source/libs/asura-lib-core/client/client.h b/source/libs/asura-lib-core/client/client.h deleted file mode 100644 index 8df30fe..0000000 --- a/source/libs/asura-lib-core/client/client.h +++ /dev/null @@ -1,25 +0,0 @@ -#ifndef __ASURA_ENGINE_HOST_H__ -#define __ASURA_ENGINE_HOST_H__ - -#include - -/// -/// 和窗口有关的实现,考虑到游戏的跨平台,使用几个库分别实现。编辑器代码不依赖于跨平台窗口库,目前使用win32API实现消息循环。 -/// -namespace AsuraEngine -{ - namespace Client - { - - /// - /// 抽象类。 - /// - ASURA_ABSTRACT class Client - { - - }; - - } -} - -#endif \ No newline at end of file diff --git a/source/libs/asura-lib-core/client/sdl/sdl_application.cpp b/source/libs/asura-lib-core/client/sdl/sdl_application.cpp deleted file mode 100644 index e69de29..0000000 diff --git a/source/libs/asura-lib-core/client/sdl/sdl_application.h b/source/libs/asura-lib-core/client/sdl/sdl_application.h deleted file mode 100644 index f6f23a8..0000000 --- a/source/libs/asura-lib-core/client/sdl/sdl_application.h +++ /dev/null @@ -1,28 +0,0 @@ -#ifndef __ASURA_SDL_APPLICATION_H__ -#define __ASURA_SDL_APPLICATION_H__ - -#include "sdl_config.h" - -namespace AsuraEngine -{ - namespace SDL - { - - class SDLApplication : public Application - { - - }; - -/* - -Application* editor = nullpt; -#ifdef ASURA_SDL - editor = SDLApplication(); -#endif - -*/ - - } -} - -#endif \ No newline at end of file diff --git a/source/libs/asura-lib-core/client/sdl/sdl_cursor.cpp b/source/libs/asura-lib-core/client/sdl/sdl_cursor.cpp deleted file mode 100644 index e69de29..0000000 diff --git a/source/libs/asura-lib-core/client/sdl/sdl_cursor.h b/source/libs/asura-lib-core/client/sdl/sdl_cursor.h deleted file mode 100644 index e69de29..0000000 diff --git a/source/libs/asura-lib-core/client/sdl/sdl_thread.cpp b/source/libs/asura-lib-core/client/sdl/sdl_thread.cpp deleted file mode 100644 index e69de29..0000000 diff --git a/source/libs/asura-lib-core/client/sdl/sdl_thread.h b/source/libs/asura-lib-core/client/sdl/sdl_thread.h deleted file mode 100644 index e69de29..0000000 diff --git a/source/libs/asura-lib-core/client/sdl/sdl_window.cpp b/source/libs/asura-lib-core/client/sdl/sdl_window.cpp deleted file mode 100644 index e69de29..0000000 diff --git a/source/libs/asura-lib-core/client/sdl/sdl_window.h b/source/libs/asura-lib-core/client/sdl/sdl_window.h deleted file mode 100644 index 040c23e..0000000 --- a/source/libs/asura-lib-core/client/sdl/sdl_window.h +++ /dev/null @@ -1,29 +0,0 @@ -#ifndef __ASURA_SDL_WINDOW_H__ -#define __ASURA_SDL_WINDOW_H__ - -#include "../../core_config.h" -#if ASURA_CORE_SDL - -#include -#include "../../graphics/window.h" - -namespace AsuraEngine -{ - namespace SDL - { - - class SDLWindow ASURA_FINAL - : public Graphics::Window - , public Scripting::Portable - { - public: - - - }; - - } -} - -#endif // ASURA_CORE_SDL - -#endif // __ASURA_SDL_WINDOW_H__ \ No newline at end of file diff --git a/source/libs/asura-lib-core/graphics/binding/_canvas.cpp b/source/libs/asura-lib-core/graphics/binding/_canvas.cpp index e69de29..7927995 100644 --- a/source/libs/asura-lib-core/graphics/binding/_canvas.cpp +++ b/source/libs/asura-lib-core/graphics/binding/_canvas.cpp @@ -0,0 +1,46 @@ +#include "../canvas.h" + +using namespace std; + +namespace AsuraEngine +{ + namespace Graphics + { + + LUAX_REGISTRY(Canvas) + { + LUAX_REGISTER_METHODS(state, + { "SetSize", _SetSize }, + { "Bind", _Bind }, + { "Unbind", _Unbind } + ); + } + + LUAX_POSTPROCESS(Canvas) + { + + } + + // canvas:SetSize() + LUAX_IMPL_METHOD(Canvas, _SetSize) + { + LUAX_PREPARE(L, Canvas); + + } + + // canvas:Bind() + LUAX_IMPL_METHOD(Canvas, _Bind) + { + LUAX_PREPARE(L, Canvas); + + } + + // canvas:Unbind() + LUAX_IMPL_METHOD(Canvas, _Unbind) + { + LUAX_PREPARE(L, Canvas); + + } + + } +} diff --git a/source/libs/asura-lib-core/graphics/binding/_color.cpp b/source/libs/asura-lib-core/graphics/binding/_color.cpp index e69de29..11e80a1 100644 --- a/source/libs/asura-lib-core/graphics/binding/_color.cpp +++ b/source/libs/asura-lib-core/graphics/binding/_color.cpp @@ -0,0 +1,54 @@ +#include "../color.h" + +using namespace std; + +namespace AsuraEngine +{ + namespace Graphics + { + + LUAX_REGISTRY(Color) + { + LUAX_REGISTER_METHODS(state, + { "ToColor32", _ToColor32 }, + { "SetColor", _SetColor }, + { "GetColor", _GetColor }, + { "Multiply", _Multiply } + ); + } + + LUAX_POSTPROCESS(Color) + { + + } + + // color:ToColor32() + LUAX_IMPL_METHOD(Color, _ToColor32) + { + LUAX_PREPARE(L, Color); + + } + + // color:SetColor() + LUAX_IMPL_METHOD(Color, _SetColor) + { + LUAX_PREPARE(L, Color); + + } + + // color:GetColor() + LUAX_IMPL_METHOD(Color, _GetColor) + { + LUAX_PREPARE(L, Color); + + } + + // color:Multiply() + LUAX_IMPL_METHOD(Color, _Multiply) + { + LUAX_PREPARE(L, Color); + + } + + } +} diff --git a/source/libs/asura-lib-core/graphics/binding/_color32.cpp b/source/libs/asura-lib-core/graphics/binding/_color32.cpp new file mode 100644 index 0000000..7095866 --- /dev/null +++ b/source/libs/asura-lib-core/graphics/binding/_color32.cpp @@ -0,0 +1,86 @@ +#include "../color32.h" + +using namespace std; + +namespace AsuraEngine +{ + namespace Graphics + { + + LUAX_REGISTRY(Color32) + { + LUAX_REGISTER_METHODS(state, + { "ToColor", _ToColor }, + { "GetRed", _GetRed }, + { "GetGreen", _GetGreen }, + { "GetBlue", _GetBlue }, + { "GetAlpha", _GetAlpha }, + { "Multiply", _Multiply }, + { "Index", _Index }, + { "NewIndex", _NewIndex } + ); + } + + LUAX_POSTPROCESS(Color32) + { + + } + + // color32:ToColor() + LUAX_IMPL_METHOD(Color32, _ToColor) + { + LUAX_PREPARE(L, Color32); + + } + + // color32:GetRed() + LUAX_IMPL_METHOD(Color32, _GetRed) + { + LUAX_PREPARE(L, Color32); + + } + + // color32:GetGreen() + LUAX_IMPL_METHOD(Color32, _GetGreen) + { + LUAX_PREPARE(L, Color32); + + } + + // color32:GetBlue() + LUAX_IMPL_METHOD(Color32, _GetBlue) + { + LUAX_PREPARE(L, Color32); + + } + + // color32:GetAlpha() + LUAX_IMPL_METHOD(Color32, _GetAlpha) + { + LUAX_PREPARE(L, Color32); + + } + + // color32:Multiply() + LUAX_IMPL_METHOD(Color32, _Multiply) + { + LUAX_PREPARE(L, Color32); + + } + + // color32:Index() + LUAX_IMPL_METHOD(Color32, _Index) + { + LUAX_PREPARE(L, Color32); + + } + + // color32:NewIndex() + LUAX_IMPL_METHOD(Color32, _NewIndex) + { + LUAX_PREPARE(L, Color32); + + } + + } +} diff --git a/source/libs/asura-lib-core/graphics/binding/_gif.cpp b/source/libs/asura-lib-core/graphics/binding/_gif.cpp deleted file mode 100644 index e69de29..0000000 diff --git a/source/libs/asura-lib-core/graphics/binding/_image.cpp b/source/libs/asura-lib-core/graphics/binding/_image.cpp index e69de29..7c1034c 100644 --- a/source/libs/asura-lib-core/graphics/binding/_image.cpp +++ b/source/libs/asura-lib-core/graphics/binding/_image.cpp @@ -0,0 +1,54 @@ +#include "../image.h" + +using namespace std; + +namespace AsuraEngine +{ + namespace Graphics + { + + LUAX_REGISTRY(Image) + { + LUAX_REGISTER_METHODS(state, + { "Load", _Load }, + { "GetWidth", _GetWidth }, + { "GetHeight", _GetHeight }, + { "GetSize", _GetSize } + ); + } + + LUAX_POSTPROCESS(Image) + { + + } + + // image:Load() + LUAX_IMPL_METHOD(Image, _Load) + { + LUAX_PREPARE(L, Image); + + } + + // image:GetWidth() + LUAX_IMPL_METHOD(Image, _GetWidth) + { + LUAX_PREPARE(L, Image); + + } + + // image:GetHeight() + LUAX_IMPL_METHOD(Image, _GetHeight) + { + LUAX_PREPARE(L, Image); + + } + + // image:GetSize() + LUAX_IMPL_METHOD(Image, _GetSize) + { + LUAX_PREPARE(L, Image); + + } + + } +} diff --git a/source/libs/asura-lib-core/graphics/binding/_image_data.cpp b/source/libs/asura-lib-core/graphics/binding/_image_data.cpp index 72e33da..3ff38f9 100644 --- a/source/libs/asura-lib-core/graphics/binding/_image_data.cpp +++ b/source/libs/asura-lib-core/graphics/binding/_image_data.cpp @@ -1,62 +1,70 @@ #include "../image_data.h" -using namespace Luax; +using namespace std; -namespace AsuraEngine +namespace AsuraEngine { - namespace Graphics + namespace Graphics { - + LUAX_REGISTRY(ImageData) { - + LUAX_REGISTER_METHODS(state, + { "New", _New }, + { "GetPixel", _GetPixel }, + { "GetSize", _GetSize }, + { "GetWidth", _GetWidth }, + { "GetHeight", _GetHeight }, + { "GetPixelFormat", _GetPixelFormat } + ); } LUAX_POSTPROCESS(ImageData) { - LUAX_REGISTER_ENUM(state, "EBlendMode", - { "Additive", 1 } - ); - LUAX_REGISTER_ENUM(state, "EPixelFormat", - { "RGBA32", 1 } - ); + } - // imagedata = ImageData.New(databuffer) + // ImageData.New() LUAX_IMPL_METHOD(ImageData, _New) { LUAX_STATE(L); - Filesystem::DataBuffer* db = state.CheckUserdata(1); - ImageData* image = new ImageData(*db); - image->PushLuaxUserdata(state); - return 1; } + // imagedata:GetPixel() LUAX_IMPL_METHOD(ImageData, _GetPixel) { + LUAX_PREPARE(L, ImageData); } + // imagedata:GetSize() LUAX_IMPL_METHOD(ImageData, _GetSize) { + LUAX_PREPARE(L, ImageData); } + // imagedata:GetWidth() LUAX_IMPL_METHOD(ImageData, _GetWidth) { + LUAX_PREPARE(L, ImageData); } + // imagedata:GetHeight() LUAX_IMPL_METHOD(ImageData, _GetHeight) { + LUAX_PREPARE(L, ImageData); } + // imagedata:GetPixelFormat() LUAX_IMPL_METHOD(ImageData, _GetPixelFormat) { + LUAX_PREPARE(L, ImageData); } } -} \ No newline at end of file +} diff --git a/source/libs/asura-lib-core/graphics/binding/_mesh2d.cpp b/source/libs/asura-lib-core/graphics/binding/_mesh2d.cpp index e69de29..07e9f12 100644 --- a/source/libs/asura-lib-core/graphics/binding/_mesh2d.cpp +++ b/source/libs/asura-lib-core/graphics/binding/_mesh2d.cpp @@ -0,0 +1,21 @@ +#include "../mesh2d.h" + +using namespace std; + +namespace AsuraEngine +{ + namespace Graphics + { + + LUAX_REGISTRY(Mesh2D) + { + + } + + LUAX_POSTPROCESS(Mesh2D) + { + + } + + } +} diff --git a/source/libs/asura-lib-core/graphics/binding/_mesh2d_data.cpp b/source/libs/asura-lib-core/graphics/binding/_mesh2d_data.cpp deleted file mode 100644 index 6e15052..0000000 --- a/source/libs/asura-lib-core/graphics/binding/_mesh2d_data.cpp +++ /dev/null @@ -1,9 +0,0 @@ -namespace AsuraEngine -{ - namespace Graphics - { - - - - } -} \ No newline at end of file diff --git a/source/libs/asura-lib-core/graphics/binding/_shader.cpp b/source/libs/asura-lib-core/graphics/binding/_shader.cpp index 2f2f507..a06e54b 100644 --- a/source/libs/asura-lib-core/graphics/binding/_shader.cpp +++ b/source/libs/asura-lib-core/graphics/binding/_shader.cpp @@ -1,114 +1,126 @@ #include "../shader.h" -using namespace Luax; +using namespace std; -namespace AsuraEngine +namespace AsuraEngine { - namespace Graphics + namespace Graphics { - - void Shader::RegisterLuaxClass(LuaxState& state) + + LUAX_REGISTRY(Shader) { + LUAX_REGISTER_METHODS(state, + { "New", _New }, + { "Use", _Use }, + { "Unuse", _Unuse }, + { "Load", _Load }, + { "HasUniform", _HasUniform }, + { "GetUniformLocation", _GetUniformLocation }, + { "SetBuiltInUniforms", _SetBuiltInUniforms }, + { "SetUniformFloat", _SetUniformFloat }, + { "SetUniformTexture", _SetUniformTexture }, + { "SetUniformVector2", _SetUniformVector2 }, + { "SetUniformVector3", _SetUniformVector3 }, + { "SetUniformVector4", _SetUniformVector4 }, + { "SetUniformColor", _SetUniformColor } + ); + } - LuaxEnum EBuiltIn[] = { - {0, 0} - }; - - state.RegisterEnum("EBuiltIn", EBuiltIn); + LUAX_POSTPROCESS(Shader) + { } - void Shader::RegisterLuaxPostprocess(LuaxState& state) + // Shader.New() + LUAX_IMPL_METHOD(Shader, _New) { + LUAX_STATE(L); } - /// - /// 将此shader设置为活动。 - /// - int Shader::l_Use(lua_State* L) + // shader:Use() + LUAX_IMPL_METHOD(Shader, _Use) { - LUAX_STATE(L); + LUAX_PREPARE(L, Shader); } - /// - /// 将此shader设置为非活动。 - /// - int Shader::l_Unuse(lua_State* L) + // shader:Unuse() + LUAX_IMPL_METHOD(Shader, _Unuse) { - LUAX_STATE(L); + LUAX_PREPARE(L, Shader); } - /// - /// 从着色器代码中构建shader程序。如果成功返回true,失败返回false。 - /// - int Shader::l_Load(lua_State* L) + // shader:Load() + LUAX_IMPL_METHOD(Shader, _Load) { - LUAX_STATE(L); + LUAX_PREPARE(L, Shader); } - /// - /// 判断shader是否有这个uniform,如果有返回true,否则返回false - /// - int Shader::l_HasUniform(lua_State* L) + // shader:HasUniform() + LUAX_IMPL_METHOD(Shader, _HasUniform) { - LUAX_STATE(L); + LUAX_PREPARE(L, Shader); } - /// - /// 后的uniforms的location,如果没有这个uniform,返回nil,否则返回对应的loc - /// - int Shader::l_GetUniformLocation(lua_State* L) + // shader:GetUniformLocation() + LUAX_IMPL_METHOD(Shader, _GetUniformLocation) { - LUAX_STATE(L); + LUAX_PREPARE(L, Shader); } - int Shader::l_SetBuiltInUniforms(lua_State* L) + // shader:SetBuiltInUniforms() + LUAX_IMPL_METHOD(Shader, _SetBuiltInUniforms) { - LUAX_STATE(L); - + LUAX_PREPARE(L, Shader); + } - int Shader::l_SetUniformFloat(lua_State* L) + // shader:SetUniformFloat() + LUAX_IMPL_METHOD(Shader, _SetUniformFloat) { - LUAX_STATE(L); + LUAX_PREPARE(L, Shader); } - int Shader::l_SetUniformTexture(lua_State* L) + // shader:SetUniformTexture() + LUAX_IMPL_METHOD(Shader, _SetUniformTexture) { - LUAX_STATE(L); + LUAX_PREPARE(L, Shader); } - int Shader::l_SetUniformVector2(lua_State* L) + // shader:SetUniformVector2() + LUAX_IMPL_METHOD(Shader, _SetUniformVector2) { - LUAX_STATE(L); + LUAX_PREPARE(L, Shader); } - int Shader::l_SetUniformVector3(lua_State* L) + // shader:SetUniformVector3() + LUAX_IMPL_METHOD(Shader, _SetUniformVector3) { - LUAX_STATE(L); + LUAX_PREPARE(L, Shader); } - int Shader::l_SetUniformVector4(lua_State* L) + // shader:SetUniformVector4() + LUAX_IMPL_METHOD(Shader, _SetUniformVector4) { - LUAX_STATE(L); + LUAX_PREPARE(L, Shader); } - int Shader::l_SetUniformColor(lua_State* L) + // shader:SetUniformColor() + LUAX_IMPL_METHOD(Shader, _SetUniformColor) { - LUAX_STATE(L); + LUAX_PREPARE(L, Shader); } } -} \ No newline at end of file +} diff --git a/source/libs/asura-lib-core/graphics/binding/_sprite_batch.cpp b/source/libs/asura-lib-core/graphics/binding/_sprite_batch.cpp index e69de29..8556c02 100644 --- a/source/libs/asura-lib-core/graphics/binding/_sprite_batch.cpp +++ b/source/libs/asura-lib-core/graphics/binding/_sprite_batch.cpp @@ -0,0 +1,21 @@ +#include "../sprite_batch.h" + +using namespace std; + +namespace AsuraEngine +{ + namespace Graphics + { + + LUAX_REGISTRY(SpriteBatch) + { + + } + + LUAX_POSTPROCESS(SpriteBatch) + { + + } + + } +} diff --git a/source/libs/asura-lib-core/graphics/binding/_window.cpp b/source/libs/asura-lib-core/graphics/binding/_window.cpp deleted file mode 100644 index 3befc8c..0000000 --- a/source/libs/asura-lib-core/graphics/binding/_window.cpp +++ /dev/null @@ -1,11 +0,0 @@ -#include "../Window.h" - -namespace AsuraEngine -{ - namespace Graphics - { - - - - } -} diff --git a/source/libs/asura-lib-core/graphics/canvas.h b/source/libs/asura-lib-core/graphics/canvas.h index 6b8b630..5b188ca 100644 --- a/source/libs/asura-lib-core/graphics/canvas.h +++ b/source/libs/asura-lib-core/graphics/canvas.h @@ -64,9 +64,9 @@ namespace AsuraEngine LUAX_DECL_FACTORY(SimCanvas); - LUAX_DECL_METHOD(l_SetSize); - LUAX_DECL_METHOD(l_Bind); - LUAX_DECL_METHOD(l_Unbind); + LUAX_DECL_METHOD(_SetSize); + LUAX_DECL_METHOD(_Bind); + LUAX_DECL_METHOD(_Unbind); //---------------------------------------------------------------------------------------------------------- diff --git a/source/libs/asura-lib-core/graphics/color.cpp b/source/libs/asura-lib-core/graphics/color.cpp index 106493d..4d3691e 100644 --- a/source/libs/asura-lib-core/graphics/color.cpp +++ b/source/libs/asura-lib-core/graphics/color.cpp @@ -1,61 +1,11 @@ -#include "Color.h" +#include "color.h" +#include "color32.h" namespace AsuraEngine { namespace Graphics { - Color32::Color32() - { - r = g = b = a = 0; - } - - Color32::Color32(const Color32& c) - { - r = c.r; - g = c.g; - b = c.b; - a = c.a; - } - - Color32::Color32(const Color& c) - { - r = 255.f * c.r; - g = 255.f * c.g; - b = 255.f * c.b; - a = 255.f * c.a; - } - - Color32::Color32(byte r, byte g, byte b, byte a) - { - this->r = r; - this->g = g; - this->b = b; - this->a = a; - } - - int Color32::l_GetRed(lua_State* L) - { - - } - - int Color32::l_GetGreen(lua_State* L) - { - - } - - int Color32::l_GetBlue(lua_State* L) - { - - } - - int Color32::l_GetAlpha(lua_State* L) - { - - } - - //------------------------------------------------------------------------------------------------------------ - Color::Color() { r = g = b = a = 0; @@ -93,40 +43,5 @@ namespace AsuraEngine a *= c.a; } - int Color::l_GetRed(lua_State* L) - { - - } - - int Color::l_GetGreen(lua_State* L) - { - - } - - int Color::l_GetBlue(lua_State* L) - { - - } - - int Color::l_GetAlpha(lua_State* L) - { - - } - - int Color::l_Add(lua_State* L) - { - - } - - int Color::l_Minus(lua_State* L) - { - - } - - int Color::l_Multiply(lua_State* L) - { - - } - } } \ No newline at end of file diff --git a/source/libs/asura-lib-core/graphics/color.h b/source/libs/asura-lib-core/graphics/color.h index 74cf8f3..607314b 100644 --- a/source/libs/asura-lib-core/graphics/color.h +++ b/source/libs/asura-lib-core/graphics/color.h @@ -10,44 +10,7 @@ namespace AsuraEngine namespace Graphics { - class Color; - - /// - /// 32bits颜色 - /// - class Color32 ASURA_FINAL - : public Scripting::Portable - { - public: - - Color32(); - - ~Color32(); - - Color32(const Color32& c); - - Color32(const Color& c); - - Color32(byte r, byte g, byte b, byte a); - - byte r, g, b, a; - - //---------------------------------------------------------------------------------------------------------- - - LUAX_DECL_FACTORY(Color32); - - LUAX_DECL_METHOD(l_ToColor); - LUAX_DECL_METHOD(l_GetRed); - LUAX_DECL_METHOD(l_GetGreen); - LUAX_DECL_METHOD(l_GetBlue); - LUAX_DECL_METHOD(l_GetAlpha); - LUAX_DECL_METHOD(l_Multiply); - LUAX_DECL_METHOD(l_Index); //索引r,g,b,a - LUAX_DECL_METHOD(l_NewIndex); //修改r,g,b,a - - //---------------------------------------------------------------------------------------------------------- - - }; + class Color32; /// /// 规范化颜色 @@ -77,16 +40,12 @@ namespace AsuraEngine float r, g, b, a; - //---------------------------------------------------------------------------------------------------------- - LUAX_DECL_FACTORY(Color); - LUAX_DECL_METHOD(l_ToColor32); - LUAX_DECL_METHOD(l_SetColor); - LUAX_DECL_METHOD(l_GetColor); - LUAX_DECL_METHOD(l_Multiply); // 颜色乘法 - - //---------------------------------------------------------------------------------------------------------- + LUAX_DECL_METHOD(_ToColor32); + LUAX_DECL_METHOD(_SetColor); + LUAX_DECL_METHOD(_GetColor); + LUAX_DECL_METHOD(_Multiply); // 颜色乘法 }; diff --git a/source/libs/asura-lib-core/graphics/color32.cpp b/source/libs/asura-lib-core/graphics/color32.cpp new file mode 100644 index 0000000..0ebc77c --- /dev/null +++ b/source/libs/asura-lib-core/graphics/color32.cpp @@ -0,0 +1,39 @@ +#include "color.h" +#include "color32.h" + +namespace AsuraEngine +{ + namespace Graphics + { + + Color32::Color32() + { + r = g = b = a = 0; + } + + Color32::Color32(const Color32& c) + { + r = c.r; + g = c.g; + b = c.b; + a = c.a; + } + + Color32::Color32(const Color& c) + { + r = 255.f * c.r; + g = 255.f * c.g; + b = 255.f * c.b; + a = 255.f * c.a; + } + + Color32::Color32(byte r, byte g, byte b, byte a) + { + this->r = r; + this->g = g; + this->b = b; + this->a = a; + } + + } +} \ No newline at end of file diff --git a/source/libs/asura-lib-core/graphics/color32.h b/source/libs/asura-lib-core/graphics/color32.h new file mode 100644 index 0000000..c64a9b9 --- /dev/null +++ b/source/libs/asura-lib-core/graphics/color32.h @@ -0,0 +1,51 @@ +#ifndef __ASURA_ENGINE_COLOR32_H__ +#define __ASURA_ENGINE_COLOR32_H__ + +#include + +#include "../core_config.h" + +namespace AsuraEngine +{ + namespace Graphics + { + + class Color; + + /// + /// 32bits颜色 + /// + class Color32 ASURA_FINAL + : public Scripting::Portable + { + public: + + LUAX_DECL_FACTORY(Color32); + + Color32(); + + ~Color32(); + + Color32(const Color32& c); + + Color32(const Color& c); + + Color32(byte r, byte g, byte b, byte a); + + byte r, g, b, a; + + LUAX_DECL_METHOD(_ToColor); + LUAX_DECL_METHOD(_GetRed); + LUAX_DECL_METHOD(_GetGreen); + LUAX_DECL_METHOD(_GetBlue); + LUAX_DECL_METHOD(_GetAlpha); + LUAX_DECL_METHOD(_Multiply); + LUAX_DECL_METHOD(_Index); //索引r,g,b,a + LUAX_DECL_METHOD(_NewIndex); //修改r,g,b,a + + }; + + } +} + +#endif \ No newline at end of file diff --git a/source/libs/asura-lib-core/graphics/image.h b/source/libs/asura-lib-core/graphics/image.h index d8577ad..0e4ea0a 100644 --- a/source/libs/asura-lib-core/graphics/image.h +++ b/source/libs/asura-lib-core/graphics/image.h @@ -1,11 +1,12 @@ #ifndef __ASURA_ENGINE_IMAGE_H__ #define __ASURA_ENGINE_IMAGE_H__ -#include "../math/vector2.hpp" -#include "../scripting/portable.hpp" -#include "../fileSystem/reloadable.h" -#include "../stringmap.hpp" -#include "../manager.hpp" +#include +#include +#include +#include +#include +#include #include "texture.h" #include "color.h" @@ -26,7 +27,7 @@ namespace AsuraEngine class Image ASURA_FINAL : public Drawable , public Scripting::Portable - , public Filesystem::Reloadable + , public AEIO::Reloadable { public: @@ -63,10 +64,10 @@ namespace AsuraEngine LUAX_DECL_FACTORY(SimImage); - LUAX_DECL_METHOD(l_Load); - LUAX_DECL_METHOD(l_GetWidth); - LUAX_DECL_METHOD(l_GetHeight); - LUAX_DECL_METHOD(l_GetSize); + LUAX_DECL_METHOD(_Load); + LUAX_DECL_METHOD(_GetWidth); + LUAX_DECL_METHOD(_GetHeight); + LUAX_DECL_METHOD(_GetSize); }; diff --git a/source/libs/asura-lib-core/graphics/image_decode_task.cpp b/source/libs/asura-lib-core/graphics/image_decode_task.cpp new file mode 100644 index 0000000..e69de29 diff --git a/source/libs/asura-lib-core/graphics/image_decode_task.h b/source/libs/asura-lib-core/graphics/image_decode_task.h new file mode 100644 index 0000000..a721b3e --- /dev/null +++ b/source/libs/asura-lib-core/graphics/image_decode_task.h @@ -0,0 +1,25 @@ +#ifndef __ASURA_IMAGE_DECODE_TASK_H__ +#define __ASURA_IMAGE_DECODE_TASK_H__ + +#include +#include + +namespace AsuraEngine +{ + namespace Graphics + { + + class ImageDecodeTask + : public AEScripting::Portable + , public AEThreading::ThreadTask + { + public: + + LUAX_DECL_FACTORY(ImageDecodeTask); + + }; + + } +} + +#endif \ No newline at end of file diff --git a/source/libs/asura-lib-core/graphics/image_decoder.h b/source/libs/asura-lib-core/graphics/image_decoder.h index 921d129..6f2049a 100644 --- a/source/libs/asura-lib-core/graphics/image_decoder.h +++ b/source/libs/asura-lib-core/graphics/image_decoder.h @@ -1,7 +1,7 @@ #ifndef __ASURA_ENGINE_IMAGE_DECODER_H__ #define __ASURA_ENGINE_IMAGE_DECODER_H__ -#include +#include #include "image_data.h" @@ -20,12 +20,12 @@ namespace AsuraEngine /// /// 判断内存是否能用本decoder解压 /// - virtual bool CanDecode(const Filesystem::DataBuffer& buffer) = 0; + virtual bool CanDecode(const AEIO::DataBuffer& buffer) = 0; /// /// 输入一个编码后的内存,输出一个解压后的Image data,如果解压失败返回nullptr /// - virtual void Decode(const Filesystem::DataBuffer& buffer, ImageData& data) = 0; + virtual void Decode(const AEIO::DataBuffer& buffer, ImageData& data) = 0; }; diff --git a/source/libs/asura-lib-core/graphics/mesh2d.h b/source/libs/asura-lib-core/graphics/mesh2d.h index 2c58f00..48b461d 100644 --- a/source/libs/asura-lib-core/graphics/mesh2d.h +++ b/source/libs/asura-lib-core/graphics/mesh2d.h @@ -1,9 +1,7 @@ #ifndef __ASURA_ENGINE_MESH2D_H__ #define __ASURA_ENGINE_MESH2D_H__ -#include "Scripting/Luax.hpp" - -#include "scripting/portable.hpp" +#include namespace AsuraEngine { diff --git a/source/libs/asura-lib-core/graphics/png_decoder.h b/source/libs/asura-lib-core/graphics/png_decoder.h index bb82032..bc871fa 100644 --- a/source/libs/asura-lib-core/graphics/png_decoder.h +++ b/source/libs/asura-lib-core/graphics/png_decoder.h @@ -15,9 +15,9 @@ namespace AsuraEngine { public: - bool CanDecode(const Filesystem::DataBuffer& buffer) override; + bool CanDecode(const AEIO::DataBuffer& buffer) override; - void Decode(const Filesystem::DataBuffer& buffer, ImageData& data) override; + void Decode(const AEIO::DataBuffer& buffer, ImageData& data) override; }; diff --git a/source/libs/asura-lib-core/graphics/render_state.h b/source/libs/asura-lib-core/graphics/render_state.h index a80efd3..4d1831c 100644 --- a/source/libs/asura-lib-core/graphics/render_state.h +++ b/source/libs/asura-lib-core/graphics/render_state.h @@ -1,9 +1,8 @@ #ifndef __ASURA_ENGINE_RENDER_STATE_H__ #define __ASURA_ENGINE_RENDER_STATE_H__ -#include "Math/Vector2.hpp" -#include "Math/Rect.hpp" -#include "Math/Transform.h" +#include +#include #include "Shader.h" #include "blend_mode.h" diff --git a/source/libs/asura-lib-core/graphics/render_target.h b/source/libs/asura-lib-core/graphics/render_target.h index d6de164..afa5c6a 100644 --- a/source/libs/asura-lib-core/graphics/render_target.h +++ b/source/libs/asura-lib-core/graphics/render_target.h @@ -1,10 +1,12 @@ #ifndef __ASURA_ENGINE_RENDERTARGET_H__ #define __ASURA_ENGINE_RENDERTARGET_H__ -#include "Math/Rect.hpp" -#include "Texture.h" -#include "Scripting/Portable.h" -#include "Color.h" +#include +#include +#include + +#include "texture.h" +#include "color.h" namespace AsuraEngine { diff --git a/source/libs/asura-lib-core/graphics/shader.h b/source/libs/asura-lib-core/graphics/shader.h index 65f214e..575a37e 100644 --- a/source/libs/asura-lib-core/graphics/shader.h +++ b/source/libs/asura-lib-core/graphics/shader.h @@ -4,18 +4,18 @@ #include #include -#include "FileSystem/Reloadable.h" -#include "Scripting/Luax.hpp" -#include "Math/Vector2.hpp" -#include "Math/Vector3.hpp" -#include "Math/Vector4.h" -#include "Math/Matrix44.h" -#include "StringMap.hpp" -#include "scripting/portable.hpp" -#include "Color.h" -#include "Manager.hpp" -#include "Texture.h" -#include "GL.h" +#include +#include +#include +#include +#include +#include +#include +#include + +#include "color.h" +#include "texture.h" +#include "gl.h" namespace AsuraEngine { @@ -28,7 +28,7 @@ namespace AsuraEngine /// class Shader ASURA_FINAL : public Scripting::Portable - , public Filesystem::Reloadable + , public AEIO::Reloadable { public: @@ -100,18 +100,19 @@ namespace AsuraEngine LUAX_DECL_FACTORY(SimShader); - LUAX_DECL_METHOD(l_Use); - LUAX_DECL_METHOD(l_Unuse); - LUAX_DECL_METHOD(l_Load); - LUAX_DECL_METHOD(l_HasUniform); - LUAX_DECL_METHOD(l_GetUniformLocation); - LUAX_DECL_METHOD(l_SetBuiltInUniforms); - LUAX_DECL_METHOD(l_SetUniformFloat); - LUAX_DECL_METHOD(l_SetUniformTexture); - LUAX_DECL_METHOD(l_SetUniformVector2); - LUAX_DECL_METHOD(l_SetUniformVector3); - LUAX_DECL_METHOD(l_SetUniformVector4); - LUAX_DECL_METHOD(l_SetUniformColor); + LUAX_DECL_METHOD(_New); + LUAX_DECL_METHOD(_Use); + LUAX_DECL_METHOD(_Unuse); + LUAX_DECL_METHOD(_Load); + LUAX_DECL_METHOD(_HasUniform); + LUAX_DECL_METHOD(_GetUniformLocation); + LUAX_DECL_METHOD(_SetBuiltInUniforms); + LUAX_DECL_METHOD(_SetUniformFloat); + LUAX_DECL_METHOD(_SetUniformTexture); + LUAX_DECL_METHOD(_SetUniformVector2); + LUAX_DECL_METHOD(_SetUniformVector3); + LUAX_DECL_METHOD(_SetUniformVector4); + LUAX_DECL_METHOD(_SetUniformColor); private: diff --git a/source/libs/asura-lib-core/graphics/sprite_batch.h b/source/libs/asura-lib-core/graphics/sprite_batch.h index 7909519..d8d9ca6 100644 --- a/source/libs/asura-lib-core/graphics/sprite_batch.h +++ b/source/libs/asura-lib-core/graphics/sprite_batch.h @@ -1,7 +1,7 @@ #ifndef __ASURA_ENGINE_SPRITE_BATCH_H__ #define __ASURA_ENGINE_SPRITE_BATCH_H__ -#include "Scripting/Portable.h" +#include namespace AsuraEngine { diff --git a/source/libs/asura-lib-core/graphics/stb_decoder.h b/source/libs/asura-lib-core/graphics/stb_decoder.h index 57b247c..85bad21 100644 --- a/source/libs/asura-lib-core/graphics/stb_decoder.h +++ b/source/libs/asura-lib-core/graphics/stb_decoder.h @@ -16,9 +16,9 @@ namespace AsuraEngine { public: - bool CanDecode(const Filesystem::DataBuffer& buffer) override; + bool CanDecode(const AEIO::DataBuffer& buffer) override; - void Decode(const Filesystem::DataBuffer& buffer, ImageData& data) override; + void Decode(const AEIO::DataBuffer& buffer, ImageData& data) override; }; diff --git a/source/libs/asura-lib-core/graphics/texture.h b/source/libs/asura-lib-core/graphics/texture.h index 81aa469..c412b2e 100644 --- a/source/libs/asura-lib-core/graphics/texture.h +++ b/source/libs/asura-lib-core/graphics/texture.h @@ -1,12 +1,14 @@ #ifndef __ASURA_ENGINE_TEXTURE_H__ #define __ASURA_ENGINE_TEXTURE_H__ -#include "Config.h" -#include "Math/Rect.hpp" -#include "Math/Vector2.hpp" -#include "Scripting/Luax.hpp" -#include "RenderState.h" -#include "GL.h" +#include +#include +#include + +#include "../core_config.h" + +#include "render_state.h" +#include "gl.h" namespace AsuraEngine { diff --git a/source/libs/asura-lib-core/graphics/window.h b/source/libs/asura-lib-core/graphics/window.h index cb036f1..0bfd6a1 100644 --- a/source/libs/asura-lib-core/graphics/window.h +++ b/source/libs/asura-lib-core/graphics/window.h @@ -1,8 +1,9 @@ #ifndef __ASURA_ENGINE_WINDOW_H__ #define __ASURA_ENGINE_WINDOW_H__ -#include "../scripting/portable.hpp" -#include "../math/vector2.hpp" +#include +#include + #include "render_state.h" #include "render_target.h" @@ -16,52 +17,64 @@ namespace AsuraEngine WINDOW_STYLE_FULLSCREEN = 1 << 1, }; + class WindowImpl; + /// /// 窗口,支持多窗口。在编辑器下需要多个窗口支持,runner只需要一个窗口。不同的客户端实现此接口并手动注册到lua。 /// - ASURA_ABSTRACT class Window + class Window : public RenderTarget + , public AEScripting::Portable { public: + LUAX_DECL_SINGLETON(Window); + Window(WindowStyle style); ~Window(); - virtual void SetSize(uint width, uint height) = 0; + void SetSize(uint width, uint height); - virtual void SetPosition(int x, int y) = 0; + void SetPosition(int x, int y); - virtual void SetTitle(const std::string& title) = 0; + void SetTitle(const std::string& title); - virtual void SetWindowStyle(WindowStyle style) = 0; + void SetWindowStyle(WindowStyle style); - virtual void Show() = 0; + void Show(); - virtual void Hide() = 0; + void Hide(); /// /// 如果是开启双缓冲的窗口,需要交换缓冲区来展示到前台 /// - virtual void SwapRenderBuffer() = 0; + void SwapRenderBuffer(); - virtual void Clear(const Color& col = Color::Black) = 0; + void Clear(const Color& col = Color::Black); - virtual void Clear(const Math::Recti& quad, const Color& col = Color::Black) = 0; + void Clear(const Math::Recti& quad, const Color& col = Color::Black); - virtual void Draw(const Drawable* texture, const RenderState& state) = 0; + void Draw(const Drawable* texture, const RenderState& state); - virtual void Draw(const Drawable* texture, const Math::Recti& quad, const RenderState& state) = 0; + void Draw(const Drawable* texture, const Math::Recti& quad, const RenderState& state); protected: - Math::Vector2i mPosition; - Math::Vector2i mSize; + WindowImpl* mImpl; }; using RenderWindow = Window; + ASURA_ABSTRACT class WindowImpl + { + public: + + + + }; + } } diff --git a/source/libs/asura-lib-core/graphics/window_impl_sdl.cpp b/source/libs/asura-lib-core/graphics/window_impl_sdl.cpp new file mode 100644 index 0000000..e69de29 diff --git a/source/libs/asura-lib-core/graphics/window_impl_sdl.h b/source/libs/asura-lib-core/graphics/window_impl_sdl.h new file mode 100644 index 0000000..e69de29 diff --git a/source/libs/asura-lib-core/input/cursor.h b/source/libs/asura-lib-core/input/cursor.h index a8e53a6..553fda4 100644 --- a/source/libs/asura-lib-core/input/cursor.h +++ b/source/libs/asura-lib-core/input/cursor.h @@ -1,4 +1,3 @@ - #ifndef __ASURA_ENGINE_CURSOR_H__ #define __ASURA_ENGINE_CURSOR_H__ @@ -15,12 +14,17 @@ namespace AsuraEngine namespace Input { - class Cursor ASURA_FINAL : public AEScripting::Portable + class CursorImpl; + + // 鼠标指针的相关枚举 +#include "Cursor.defs" + + class Cursor + : public AEScripting::Portable { public: - // 鼠标指针的相关枚举 - #include "Cursor.defs" + LUAX_DECL_FACTORY(Cursor); Cursor(Graphics::ImageData& imageData, int hotx, int hoty); Cursor(SystemCursor cursortype); @@ -31,18 +35,20 @@ namespace AsuraEngine CursorType GetType() const; SystemCursor GetSystemType() const; - LUAX_DECL_FACTORY(Cursor); - private: - SDL_Cursor* mCursorHandle; - - CursorType mType; + CursorType mType; SystemCursor mSystemType; + CursorImpl* mImpl; + + }; + + ASURA_ABSTRACT class CursorImpl + { }; } } -#endif +#endif \ No newline at end of file diff --git a/source/libs/asura-lib-core/input/cursor_impl_sdl.cpp b/source/libs/asura-lib-core/input/cursor_impl_sdl.cpp new file mode 100644 index 0000000..e69de29 diff --git a/source/libs/asura-lib-core/input/cursor_impl_sdl.h b/source/libs/asura-lib-core/input/cursor_impl_sdl.h new file mode 100644 index 0000000..e69de29 diff --git a/source/libs/asura-lib-core/threading/binding/_coroutine.cpp b/source/libs/asura-lib-core/threading/binding/_coroutine.cpp deleted file mode 100644 index e69de29..0000000 diff --git a/source/libs/asura-lib-core/threading/binding/_thread.cpp b/source/libs/asura-lib-core/threading/binding/_thread.cpp deleted file mode 100644 index e69de29..0000000 diff --git a/source/libs/asura-lib-core/threading/coroutine.cpp b/source/libs/asura-lib-core/threading/coroutine.cpp deleted file mode 100644 index e69de29..0000000 diff --git a/source/libs/asura-lib-core/threading/coroutine.h b/source/libs/asura-lib-core/threading/coroutine.h deleted file mode 100644 index f511e48..0000000 --- a/source/libs/asura-lib-core/threading/coroutine.h +++ /dev/null @@ -1,27 +0,0 @@ -#ifndef __ASURA_COROUTINE_H__ -#define __ASURA_COROUTINE_H__ - -#include - -namespace AsuraEngine -{ - namespace Threading - { - - class Coroutine ASURA_FINAL - : public AEScripting::Portable - { - public: - - LUAX_DECL_FACTORY(Coroutine); - - private: - - - - }; - - } -} - -#endif \ No newline at end of file diff --git a/source/libs/asura-lib-core/threading/thread.cpp b/source/libs/asura-lib-core/threading/thread.cpp deleted file mode 100644 index e69de29..0000000 diff --git a/source/libs/asura-lib-core/threading/thread.h b/source/libs/asura-lib-core/threading/thread.h deleted file mode 100644 index e69de29..0000000 diff --git a/source/libs/asura-lib-utils/io/binding/_file.cpp b/source/libs/asura-lib-utils/io/binding/_file.cpp index 0baffd5..0670379 100644 --- a/source/libs/asura-lib-utils/io/binding/_file.cpp +++ b/source/libs/asura-lib-utils/io/binding/_file.cpp @@ -32,8 +32,8 @@ namespace AsuraEngine { LUAX_REGISTER_ENUM(state, "EFileMode", { "CLOSED", FILE_MODE_CLOSED }, - { "READ", FILE_MODE_READ }, - { "WRITE", FILE_MODE_WRITE }, + { "READ", FILE_MODE_READ }, + { "WRITE", FILE_MODE_WRITE }, { "APPEND", FILE_MODE_APPEND } ); @@ -130,7 +130,7 @@ namespace AsuraEngine return 1; } - // isWrite = file:Write(data buffer) + // isWrite = file:Write(data buffer[, size]) LUAX_IMPL_METHOD(File, _Write) { LUAX_PREPARE(L, File); diff --git a/source/libs/asura-lib-utils/io/file.h b/source/libs/asura-lib-utils/io/file.h index b09eaaa..4a6d38b 100644 --- a/source/libs/asura-lib-utils/io/file.h +++ b/source/libs/asura-lib-utils/io/file.h @@ -108,6 +108,9 @@ namespace AsuraEngine BufferMode mBufferMode; ///< 写入缓冲区模式 size_t mBufferSize; ///< 写入缓冲区大小 + LUAX_DECL_ENUM(FileMode); + LUAX_DECL_ENUM(BufferMode); + LUAX_DECL_METHOD(_New); LUAX_DECL_METHOD(_Open); LUAX_DECL_METHOD(_Close); diff --git a/source/libs/asura-lib-utils/io/file_data.h b/source/libs/asura-lib-utils/io/file_data.h index 106e068..9aa0e3b 100644 --- a/source/libs/asura-lib-utils/io/file_data.h +++ b/source/libs/asura-lib-utils/io/file_data.h @@ -56,10 +56,10 @@ namespace AsuraEngine std::string mExtension; ///< 不包含点的扩展名 std::string mName; ///< 不包含点和后缀的文件名 + LUAX_DECL_METHOD(_GetDataBuffer); LUAX_DECL_METHOD(_GetFileName); LUAX_DECL_METHOD(_GetExtension); LUAX_DECL_METHOD(_GetName); - LUAX_DECL_METHOD(_GetDataBuffer); }; diff --git a/source/libs/asura-lib-utils/io/io_task.cpp b/source/libs/asura-lib-utils/io/io_task.cpp new file mode 100644 index 0000000..e69de29 diff --git a/source/libs/asura-lib-utils/io/io_task.h b/source/libs/asura-lib-utils/io/io_task.h new file mode 100644 index 0000000..b91a88c --- /dev/null +++ b/source/libs/asura-lib-utils/io/io_task.h @@ -0,0 +1,39 @@ +#ifndef __ASURA_IO_TASK_H__ +#define __ASURA_IO_TASK_H__ + +#include + +#include "../scripting/portable.hpp" +#include "../threading/thread_task.h" + +#include "data_buffer.h" + +namespace AsuraEngine +{ + namespace IO + { + + /// + /// 读取文件任务。 + /// + class IOTask + : public AEScripting::Portable + , public AEThreading::ThreadTask + { + public: + + LUAX_DECL_FACTORY(IOTask); + + bool Execute() override ; + + private: + + std::string mPath; + DataBuffer* mDst; + + }; + + } +} + +#endif \ No newline at end of file diff --git a/source/libs/asura-lib-utils/io/reloadable.h b/source/libs/asura-lib-utils/io/reloadable.h index cf30296..22a721c 100644 --- a/source/libs/asura-lib-utils/io/reloadable.h +++ b/source/libs/asura-lib-utils/io/reloadable.h @@ -24,4 +24,6 @@ namespace AsuraEngine } } +namespace AEIO = AsuraEngine::IO; + #endif \ No newline at end of file diff --git a/source/libs/asura-lib-utils/threading/coroutine.cpp b/source/libs/asura-lib-utils/threading/coroutine.cpp new file mode 100644 index 0000000..e69de29 diff --git a/source/libs/asura-lib-utils/threading/coroutine.h b/source/libs/asura-lib-utils/threading/coroutine.h new file mode 100644 index 0000000..1ac6b21 --- /dev/null +++ b/source/libs/asura-lib-utils/threading/coroutine.h @@ -0,0 +1,31 @@ +#ifndef __ASURA_COROUTINE_H__ +#define __ASURA_COROUTINE_H__ + +#include + +namespace AsuraEngine +{ + namespace Threading + { + + /// + /// lua协程,用来做一些逻辑并发操作。 + /// + class Coroutine ASURA_FINAL + : public AEScripting::Portable + { + public: + + LUAX_DECL_FACTORY(Coroutine); + + private: + + LUAX_DECL_METHOD(_New); + LUAX_DECL_METHOD(_Run); + + }; + + } +} + +#endif \ No newline at end of file diff --git a/source/libs/asura-lib-utils/threading/mutex.cpp b/source/libs/asura-lib-utils/threading/mutex.cpp new file mode 100644 index 0000000..e69de29 diff --git a/source/libs/asura-lib-utils/threading/mutex.h b/source/libs/asura-lib-utils/threading/mutex.h new file mode 100644 index 0000000..893c6e5 --- /dev/null +++ b/source/libs/asura-lib-utils/threading/mutex.h @@ -0,0 +1,21 @@ +#ifndef __ASURA_MUTEX_H__ +#define __ASURA_MUTEX_H__ + +namespace AsuraEngine +{ + namespace Threading + { + + class Mutex + { + public: + + void Lock(); + void Unlock(); + + }; + + } +} + +#endif \ No newline at end of file diff --git a/source/libs/asura-lib-utils/threading/thread.cpp b/source/libs/asura-lib-utils/threading/thread.cpp new file mode 100644 index 0000000..c77f3ab --- /dev/null +++ b/source/libs/asura-lib-utils/threading/thread.cpp @@ -0,0 +1,14 @@ +#include "thread.h" + +namespace AsuraEngine +{ + namespace Threading + { + + bool Thread::Enqueue(ThreadTask* task) + { + + } + + } +} \ No newline at end of file diff --git a/source/libs/asura-lib-utils/threading/thread.h b/source/libs/asura-lib-utils/threading/thread.h new file mode 100644 index 0000000..0058144 --- /dev/null +++ b/source/libs/asura-lib-utils/threading/thread.h @@ -0,0 +1,60 @@ +#ifndef __ASURA_THREAD_H__ +#define __ASURA_THREAD_H__ + +#include +#include + +#include "thread_task.h" + +namespace AsuraEngine +{ + namespace Threading + { + + class ThreadImpl; + + /// + /// 线程主体,每个线程维护一个task queue。 + /// + class Thread ASURA_FINAL + : public AEScripting::Portable + { + public: + + LUAX_DECL_FACTORY(Thread); + + bool Enqueue(ThreadTask* task); + + void Run(); + + private: + + /// + /// 任务队列。 + /// + std::queue mTaskQueue; + + ThreadImpl* mImpl; + + LUAX_DECL_METHOD(_Enqueue); + LUAX_DECL_METHOD(_Run); + + }; + + /// + /// 线程的具体实现,对用户是透明的,一共准备了四种策略: + /// 1: win32 + /// 2: posix + /// 3: SDL + /// 4: std::thread + /// + ASURA_ABSTRACT class ThreadImpl + { + public: + + }; + + } +} + +#endif \ No newline at end of file diff --git a/source/libs/asura-lib-utils/threading/thread_impl_posix.cpp b/source/libs/asura-lib-utils/threading/thread_impl_posix.cpp new file mode 100644 index 0000000..e69de29 diff --git a/source/libs/asura-lib-utils/threading/thread_impl_posix.h b/source/libs/asura-lib-utils/threading/thread_impl_posix.h new file mode 100644 index 0000000..e69de29 diff --git a/source/libs/asura-lib-utils/threading/thread_impl_sdl.cpp b/source/libs/asura-lib-utils/threading/thread_impl_sdl.cpp new file mode 100644 index 0000000..e69de29 diff --git a/source/libs/asura-lib-utils/threading/thread_impl_sdl.h b/source/libs/asura-lib-utils/threading/thread_impl_sdl.h new file mode 100644 index 0000000..e69de29 diff --git a/source/libs/asura-lib-utils/threading/thread_impl_std.cpp b/source/libs/asura-lib-utils/threading/thread_impl_std.cpp new file mode 100644 index 0000000..e69de29 diff --git a/source/libs/asura-lib-utils/threading/thread_impl_std.h b/source/libs/asura-lib-utils/threading/thread_impl_std.h new file mode 100644 index 0000000..e69de29 diff --git a/source/libs/asura-lib-utils/threading/thread_impl_win32.cpp b/source/libs/asura-lib-utils/threading/thread_impl_win32.cpp new file mode 100644 index 0000000..e69de29 diff --git a/source/libs/asura-lib-utils/threading/thread_impl_win32.h b/source/libs/asura-lib-utils/threading/thread_impl_win32.h new file mode 100644 index 0000000..3dd2a8e --- /dev/null +++ b/source/libs/asura-lib-utils/threading/thread_impl_win32.h @@ -0,0 +1,35 @@ +#ifndef __ASURA_THREAD_WIN32_H__ +#define __ASURA_THREAD_WIN32_H__ + +#include "../utils_config.h" + +#if ASURA_THREAD_WIN32 + +#include +#include "thread.h" + +namespace AsuraEngine +{ + namespace Threading + { + + /// + /// Thread的win32实现。 + /// + class ThreadImplWin32 : public ThreadImpl + { + public: + + + private: + + HANDLE mHandle; + + }; + + } +} + +#endif // #if ASURA_THREAD_WIN32 + +#endif \ No newline at end of file diff --git a/source/libs/asura-lib-utils/threading/thread_task.cpp b/source/libs/asura-lib-utils/threading/thread_task.cpp new file mode 100644 index 0000000..e69de29 diff --git a/source/libs/asura-lib-utils/threading/thread_task.h b/source/libs/asura-lib-utils/threading/thread_task.h new file mode 100644 index 0000000..35e159c --- /dev/null +++ b/source/libs/asura-lib-utils/threading/thread_task.h @@ -0,0 +1,27 @@ +#ifndef __ASURA_THRAD_TASK_H__ +#define __ASURA_THRAD_TASK_H__ + +#include + +namespace AsuraEngine +{ + namespace Threading + { + + /// + /// 希望放在另一个线程处理的任务,继承Task并重写Execute方法。 + /// + ASURA_ABSTRACT class ThreadTask + { + public: + + virtual bool Execute() = 0; + + }; + + } +} + +namespace AEThreading = AsuraEngine::Threading; + +#endif \ No newline at end of file diff --git a/source/libs/asura-lib-utils/utils_config.h b/source/libs/asura-lib-utils/utils_config.h index e69de29..836eb07 100644 --- a/source/libs/asura-lib-utils/utils_config.h +++ b/source/libs/asura-lib-utils/utils_config.h @@ -0,0 +1,6 @@ +#ifndef __ASURA_UTILS_CONFIG_H__ +#define __ASURA_UTILS_CONFIG_H__ + +#define ASURA_THREAD_WIN32 1 + +#endif \ No newline at end of file diff --git a/source/libs/asura-lib-utils/utils_module.cpp b/source/libs/asura-lib-utils/utils_module.cpp index f335ec5..a0539ed 100644 --- a/source/libs/asura-lib-utils/utils_module.cpp +++ b/source/libs/asura-lib-utils/utils_module.cpp @@ -1,6 +1,7 @@ #include "utils_module.h" using namespace AsuraEngine::IO; +using namespace AsuraEngine::Threading; namespace AsuraEngine { @@ -12,6 +13,8 @@ namespace AsuraEngine LUAX_REGISTER_FACTORY(state, DataBuffer); LUAX_REGISTER_FACTORY(state, FileData); LUAX_REGISTER_FACTORY(state, File); + // Threading + LUAX_REGISTER_FACTORY(state, Thread); } void UtilsModule::Finalize(Luax::LuaxState& state) diff --git a/source/libs/asura-lib-utils/utils_module.h b/source/libs/asura-lib-utils/utils_module.h index bf80d27..ae875b9 100644 --- a/source/libs/asura-lib-utils/utils_module.h +++ b/source/libs/asura-lib-utils/utils_module.h @@ -6,6 +6,8 @@ #include "io/file_data.h" #include "io/file.h" +#include "threading/thread.h" + #include "module.h" namespace AsuraEngine -- cgit v1.1-26-g67d0