summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2019-04-06 07:39:49 +0800
committerchai <chaifix@163.com>2019-04-06 07:39:49 +0800
commite47baca4f23db43ec91fbf64d5d06d7c0dbee495 (patch)
tree9e909413bbf61834570e7dbdbe37fc8705f12730
parente13616b5c40f912853be99f0603f0e4c97b22062 (diff)
*misc
-rw-r--r--Build/Asura.Editor/Asura.Editor.vcxproj6
-rw-r--r--Build/Asura.Editor/Asura.Editor.vcxproj.filters10
-rw-r--r--bin/win64/01-window.exebin1394176 -> 1393152 bytes
-rw-r--r--bin/win64/SDL2.dllbin2491904 -> 2491904 bytes
-rw-r--r--build/3rd-party/Luax/Luax.vcxproj4
-rw-r--r--build/3rd-party/Luax/Luax.vcxproj.filters4
-rw-r--r--build/Asura.Editor/Asura.Editor.vcxproj6
-rw-r--r--build/Asura.Editor/Asura.Editor.vcxproj.filters10
-rw-r--r--build/modules/asura-core/asura-core.vcxproj3
-rw-r--r--build/modules/asura-core/asura-core.vcxproj.filters9
-rw-r--r--build/modules/asura-utils/asura-utils.vcxproj2
-rw-r--r--build/modules/asura-utils/asura-utils.vcxproj.filters9
-rw-r--r--build/tools/bindingGen/obj/Release/bindingGen.csproj.CoreCompileInputs.cache2
-rw-r--r--build/tools/bindingGen/obj/Release/bindingGen.csproj.FileListAbsolute.txt3
-rw-r--r--build/tools/bindingGen/obj/Release/bindingGen.csprojAssemblyReference.cachebin0 -> 8077 bytes
-rw-r--r--source/3rd-party/Luax/luax_class.hpp42
-rw-r--r--source/3rd-party/Luax/luax_class.inl9
-rw-r--r--source/3rd-party/Luax/luax_watchdog.cpp (renamed from source/3rd-party/Luax/luax_dog.cpp)0
-rw-r--r--source/3rd-party/Luax/luax_watchdog.h (renamed from source/3rd-party/Luax/luax_dog.h)4
-rw-r--r--source/Asura.Editor/config.h0
-rw-r--r--source/Asura.Editor/core/slot.h2
-rw-r--r--source/Asura.Editor/editor.h9
-rw-r--r--source/Asura.Editor/system/window.cpp13
-rw-r--r--source/Asura.Editor/system/window.h82
-rw-r--r--source/Asura.Editor/type.h30
-rw-r--r--source/libs/asura-lib-utils/profiler/memory_leak.cpp0
-rw-r--r--source/libs/asura-lib-utils/profiler/memory_leak.h0
-rw-r--r--source/modules/asura-core/core_config.h5
-rw-r--r--source/modules/asura-core/graphics/binding/_image.cpp2
-rw-r--r--source/modules/asura-core/graphics/canvas.h15
-rw-r--r--source/modules/asura-core/graphics/gl.cpp30
-rw-r--r--source/modules/asura-core/graphics/gl.h22
-rw-r--r--source/modules/asura-core/graphics/gpu_buffer.cpp94
-rw-r--r--source/modules/asura-core/graphics/gpu_buffer.h69
-rw-r--r--source/modules/asura-core/graphics/image.cpp10
-rw-r--r--source/modules/asura-core/graphics/image.h15
-rw-r--r--source/modules/asura-core/graphics/matrix_stack.h2
-rw-r--r--source/modules/asura-core/graphics/render_target.h2
-rw-r--r--source/modules/asura-core/graphics/shader.cpp99
-rw-r--r--source/modules/asura-core/graphics/shader.h52
-rw-r--r--source/modules/asura-core/graphics/shader_source.h39
-rw-r--r--source/modules/asura-core/graphics/sprite_batch.h10
-rw-r--r--source/modules/asura-core/graphics/texture.h7
-rw-r--r--source/modules/asura-core/image/image_data.h8
-rw-r--r--source/modules/asura-core/image/image_decode_task.h3
-rw-r--r--source/modules/asura-core/window/window.cpp12
-rw-r--r--source/modules/asura-core/window/window.h3
-rw-r--r--source/modules/asura-utils/io/binding/_file.cpp2
-rw-r--r--source/modules/asura-utils/io/binding/_file_system.cpp4
-rw-r--r--source/modules/asura-utils/io/decoded_data.h1
-rw-r--r--source/modules/asura-utils/io/file.cpp8
-rw-r--r--source/modules/asura-utils/io/file.h12
-rw-r--r--source/modules/asura-utils/io/file_data.h2
-rw-r--r--source/modules/asura-utils/io/file_system.cpp8
-rw-r--r--source/modules/asura-utils/io/file_system.h10
-rw-r--r--source/modules/asura-utils/io/renewable.h9
-rw-r--r--source/modules/asura-utils/math/matrix44.h2
-rw-r--r--source/modules/asura-utils/scripting/portable.hpp3
-rw-r--r--source/modules/asura-utils/type.h6
-rw-r--r--source/tests/win32/01-window/03_sub_menu.cpp12
60 files changed, 578 insertions, 259 deletions
diff --git a/Build/Asura.Editor/Asura.Editor.vcxproj b/Build/Asura.Editor/Asura.Editor.vcxproj
index 82a4133..9721b76 100644
--- a/Build/Asura.Editor/Asura.Editor.vcxproj
+++ b/Build/Asura.Editor/Asura.Editor.vcxproj
@@ -129,14 +129,15 @@
<ClCompile Include="..\..\source\Asura.Editor\controls\radio_button.cpp" />
<ClCompile Include="..\..\source\Asura.Editor\controls\textbox.cpp" />
<ClCompile Include="..\..\source\Asura.Editor\controls\vslider.cpp" />
- <ClCompile Include="..\..\source\Asura.Editor\dui_module.cpp" />
<ClCompile Include="..\..\source\Asura.Editor\editor.cpp" />
<ClCompile Include="..\..\source\Asura.Editor\layout\horizontal_layout.cpp" />
<ClCompile Include="..\..\source\Asura.Editor\layout\vertical_layout.cpp" />
<ClCompile Include="..\..\source\Asura.Editor\main.cpp" />
<ClCompile Include="..\..\source\Asura.Editor\system\file_watcher.cpp" />
+ <ClCompile Include="..\..\source\Asura.Editor\system\window.cpp" />
</ItemGroup>
<ItemGroup>
+ <ClInclude Include="..\..\source\Asura.Editor\config.h" />
<ClInclude Include="..\..\source\Asura.Editor\controls\button.h" />
<ClInclude Include="..\..\source\Asura.Editor\controls\checkbox.h" />
<ClInclude Include="..\..\source\Asura.Editor\controls\hslider.h" />
@@ -152,11 +153,12 @@
<ClInclude Include="..\..\source\Asura.Editor\core\shaders.h" />
<ClInclude Include="..\..\source\Asura.Editor\core\slot.h" />
<ClInclude Include="..\..\source\Asura.Editor\core\signal.h" />
- <ClInclude Include="..\..\source\Asura.Editor\dui_module.h" />
<ClInclude Include="..\..\source\Asura.Editor\editor.h" />
<ClInclude Include="..\..\source\Asura.Editor\layout\horizontal_layout.h" />
<ClInclude Include="..\..\source\Asura.Editor\layout\vertical_layout.h" />
<ClInclude Include="..\..\source\Asura.Editor\system\file_watcher.h" />
+ <ClInclude Include="..\..\source\Asura.Editor\system\window.h" />
+ <ClInclude Include="..\..\source\Asura.Editor\type.h" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
diff --git a/Build/Asura.Editor/Asura.Editor.vcxproj.filters b/Build/Asura.Editor/Asura.Editor.vcxproj.filters
index 8bb459d..457aa19 100644
--- a/Build/Asura.Editor/Asura.Editor.vcxproj.filters
+++ b/Build/Asura.Editor/Asura.Editor.vcxproj.filters
@@ -26,7 +26,6 @@
</ClCompile>
<ClCompile Include="..\..\source\Asura.Editor\editor.cpp" />
<ClCompile Include="..\..\source\Asura.Editor\main.cpp" />
- <ClCompile Include="..\..\source\Asura.Editor\dui_module.cpp" />
<ClCompile Include="..\..\source\Asura.Editor\system\file_watcher.cpp">
<Filter>system</Filter>
</ClCompile>
@@ -66,6 +65,9 @@
<ClCompile Include="..\..\source\Asura.Editor\controls\menu_item.cpp">
<Filter>controls</Filter>
</ClCompile>
+ <ClCompile Include="..\..\source\Asura.Editor\system\window.cpp">
+ <Filter>system</Filter>
+ </ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\source\Asura.Editor\layout\horizontal_layout.h">
@@ -75,7 +77,6 @@
<Filter>layout</Filter>
</ClInclude>
<ClInclude Include="..\..\source\Asura.Editor\editor.h" />
- <ClInclude Include="..\..\source\Asura.Editor\dui_module.h" />
<ClInclude Include="..\..\source\Asura.Editor\core\signal.h">
<Filter>core</Filter>
</ClInclude>
@@ -124,5 +125,10 @@
<ClInclude Include="..\..\source\Asura.Editor\core\shaders.h">
<Filter>core</Filter>
</ClInclude>
+ <ClInclude Include="..\..\source\Asura.Editor\system\window.h">
+ <Filter>system</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\source\Asura.Editor\config.h" />
+ <ClInclude Include="..\..\source\Asura.Editor\type.h" />
</ItemGroup>
</Project> \ No newline at end of file
diff --git a/bin/win64/01-window.exe b/bin/win64/01-window.exe
index af5625f..cf04168 100644
--- a/bin/win64/01-window.exe
+++ b/bin/win64/01-window.exe
Binary files differ
diff --git a/bin/win64/SDL2.dll b/bin/win64/SDL2.dll
index 9703bf7..272feb0 100644
--- a/bin/win64/SDL2.dll
+++ b/bin/win64/SDL2.dll
Binary files differ
diff --git a/build/3rd-party/Luax/Luax.vcxproj b/build/3rd-party/Luax/Luax.vcxproj
index 9b7b0dd..8b611c6 100644
--- a/build/3rd-party/Luax/Luax.vcxproj
+++ b/build/3rd-party/Luax/Luax.vcxproj
@@ -134,7 +134,7 @@
<ClInclude Include="..\..\..\Source\3rd-party\Luax\luax_ref.h" />
<ClInclude Include="..\..\..\Source\3rd-party\Luax\luax_reftable.h" />
<ClInclude Include="..\..\..\Source\3rd-party\Luax\luax_state.h" />
- <ClInclude Include="..\..\..\source\3rd-party\Luax\luax_dog.h" />
+ <ClInclude Include="..\..\..\source\3rd-party\Luax\luax_watchdog.h" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\..\Source\3rd-party\Luax\luax_cfunctions.cpp" />
@@ -145,7 +145,7 @@
<ClCompile Include="..\..\..\Source\3rd-party\Luax\luax_ref.cpp" />
<ClCompile Include="..\..\..\Source\3rd-party\Luax\luax_reftable.cpp" />
<ClCompile Include="..\..\..\Source\3rd-party\Luax\luax_state.cpp" />
- <ClCompile Include="..\..\..\source\3rd-party\Luax\luax_dog.cpp" />
+ <ClCompile Include="..\..\..\source\3rd-party\Luax\luax_watchdog.cpp" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\lua51\lua51.vcxproj">
diff --git a/build/3rd-party/Luax/Luax.vcxproj.filters b/build/3rd-party/Luax/Luax.vcxproj.filters
index d1eb369..7327933 100644
--- a/build/3rd-party/Luax/Luax.vcxproj.filters
+++ b/build/3rd-party/Luax/Luax.vcxproj.filters
@@ -13,7 +13,7 @@
<ClInclude Include="..\..\..\Source\3rd-party\Luax\luax_vm.h" />
<ClInclude Include="..\..\..\source\3rd-party\Luax\luax_internal.h" />
<ClInclude Include="..\..\..\source\3rd-party\Luax\luax_globalstate.h" />
- <ClInclude Include="..\..\..\source\3rd-party\Luax\luax_dog.h" />
+ <ClInclude Include="..\..\..\source\3rd-party\Luax\luax_watchdog.h" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\..\Source\3rd-party\Luax\luax_ref.cpp" />
@@ -24,7 +24,7 @@
<ClCompile Include="..\..\..\Source\3rd-party\Luax\luax_memberref.cpp" />
<ClCompile Include="..\..\..\Source\3rd-party\Luax\luax_class.cpp" />
<ClCompile Include="..\..\..\Source\3rd-party\Luax\luax_vm.cpp" />
- <ClCompile Include="..\..\..\source\3rd-party\Luax\luax_dog.cpp" />
+ <ClCompile Include="..\..\..\source\3rd-party\Luax\luax_watchdog.cpp" />
</ItemGroup>
<ItemGroup>
<None Include="..\..\..\Source\3rd-party\Luax\luax_state.inl" />
diff --git a/build/Asura.Editor/Asura.Editor.vcxproj b/build/Asura.Editor/Asura.Editor.vcxproj
index 82a4133..9721b76 100644
--- a/build/Asura.Editor/Asura.Editor.vcxproj
+++ b/build/Asura.Editor/Asura.Editor.vcxproj
@@ -129,14 +129,15 @@
<ClCompile Include="..\..\source\Asura.Editor\controls\radio_button.cpp" />
<ClCompile Include="..\..\source\Asura.Editor\controls\textbox.cpp" />
<ClCompile Include="..\..\source\Asura.Editor\controls\vslider.cpp" />
- <ClCompile Include="..\..\source\Asura.Editor\dui_module.cpp" />
<ClCompile Include="..\..\source\Asura.Editor\editor.cpp" />
<ClCompile Include="..\..\source\Asura.Editor\layout\horizontal_layout.cpp" />
<ClCompile Include="..\..\source\Asura.Editor\layout\vertical_layout.cpp" />
<ClCompile Include="..\..\source\Asura.Editor\main.cpp" />
<ClCompile Include="..\..\source\Asura.Editor\system\file_watcher.cpp" />
+ <ClCompile Include="..\..\source\Asura.Editor\system\window.cpp" />
</ItemGroup>
<ItemGroup>
+ <ClInclude Include="..\..\source\Asura.Editor\config.h" />
<ClInclude Include="..\..\source\Asura.Editor\controls\button.h" />
<ClInclude Include="..\..\source\Asura.Editor\controls\checkbox.h" />
<ClInclude Include="..\..\source\Asura.Editor\controls\hslider.h" />
@@ -152,11 +153,12 @@
<ClInclude Include="..\..\source\Asura.Editor\core\shaders.h" />
<ClInclude Include="..\..\source\Asura.Editor\core\slot.h" />
<ClInclude Include="..\..\source\Asura.Editor\core\signal.h" />
- <ClInclude Include="..\..\source\Asura.Editor\dui_module.h" />
<ClInclude Include="..\..\source\Asura.Editor\editor.h" />
<ClInclude Include="..\..\source\Asura.Editor\layout\horizontal_layout.h" />
<ClInclude Include="..\..\source\Asura.Editor\layout\vertical_layout.h" />
<ClInclude Include="..\..\source\Asura.Editor\system\file_watcher.h" />
+ <ClInclude Include="..\..\source\Asura.Editor\system\window.h" />
+ <ClInclude Include="..\..\source\Asura.Editor\type.h" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
diff --git a/build/Asura.Editor/Asura.Editor.vcxproj.filters b/build/Asura.Editor/Asura.Editor.vcxproj.filters
index 8bb459d..457aa19 100644
--- a/build/Asura.Editor/Asura.Editor.vcxproj.filters
+++ b/build/Asura.Editor/Asura.Editor.vcxproj.filters
@@ -26,7 +26,6 @@
</ClCompile>
<ClCompile Include="..\..\source\Asura.Editor\editor.cpp" />
<ClCompile Include="..\..\source\Asura.Editor\main.cpp" />
- <ClCompile Include="..\..\source\Asura.Editor\dui_module.cpp" />
<ClCompile Include="..\..\source\Asura.Editor\system\file_watcher.cpp">
<Filter>system</Filter>
</ClCompile>
@@ -66,6 +65,9 @@
<ClCompile Include="..\..\source\Asura.Editor\controls\menu_item.cpp">
<Filter>controls</Filter>
</ClCompile>
+ <ClCompile Include="..\..\source\Asura.Editor\system\window.cpp">
+ <Filter>system</Filter>
+ </ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\source\Asura.Editor\layout\horizontal_layout.h">
@@ -75,7 +77,6 @@
<Filter>layout</Filter>
</ClInclude>
<ClInclude Include="..\..\source\Asura.Editor\editor.h" />
- <ClInclude Include="..\..\source\Asura.Editor\dui_module.h" />
<ClInclude Include="..\..\source\Asura.Editor\core\signal.h">
<Filter>core</Filter>
</ClInclude>
@@ -124,5 +125,10 @@
<ClInclude Include="..\..\source\Asura.Editor\core\shaders.h">
<Filter>core</Filter>
</ClInclude>
+ <ClInclude Include="..\..\source\Asura.Editor\system\window.h">
+ <Filter>system</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\source\Asura.Editor\config.h" />
+ <ClInclude Include="..\..\source\Asura.Editor\type.h" />
</ItemGroup>
</Project> \ No newline at end of file
diff --git a/build/modules/asura-core/asura-core.vcxproj b/build/modules/asura-core/asura-core.vcxproj
index 34169b8..81492cc 100644
--- a/build/modules/asura-core/asura-core.vcxproj
+++ b/build/modules/asura-core/asura-core.vcxproj
@@ -150,6 +150,7 @@
<ClCompile Include="..\..\..\source\modules\asura-core\graphics\shape.cpp" />
<ClCompile Include="..\..\..\source\modules\asura-core\graphics\sprite_batch.cpp" />
<ClCompile Include="..\..\..\source\modules\asura-core\graphics\texture.cpp" />
+ <ClCompile Include="..\..\..\source\modules\asura-core\graphics\gpu_buffer.cpp" />
<ClCompile Include="..\..\..\source\modules\asura-core\image\binding\_image_data.cpp" />
<ClCompile Include="..\..\..\source\modules\asura-core\image\binding\_image_decode_task.cpp" />
<ClCompile Include="..\..\..\source\modules\asura-core\image\image_data.cpp" />
@@ -195,10 +196,10 @@
<ClInclude Include="..\..\..\source\modules\asura-core\graphics\render_state.h" />
<ClInclude Include="..\..\..\source\modules\asura-core\graphics\render_target.h" />
<ClInclude Include="..\..\..\source\modules\asura-core\graphics\shader.h" />
- <ClInclude Include="..\..\..\source\modules\asura-core\graphics\shader_source.h" />
<ClInclude Include="..\..\..\source\modules\asura-core\graphics\shape.h" />
<ClInclude Include="..\..\..\source\modules\asura-core\graphics\sprite_batch.h" />
<ClInclude Include="..\..\..\source\modules\asura-core\graphics\texture.h" />
+ <ClInclude Include="..\..\..\source\modules\asura-core\graphics\gpu_buffer.h" />
<ClInclude Include="..\..\..\source\modules\asura-core\image\image_data.h" />
<ClInclude Include="..\..\..\source\modules\asura-core\image\image_decoder.h" />
<ClInclude Include="..\..\..\source\modules\asura-core\image\image_decode_task.h" />
diff --git a/build/modules/asura-core/asura-core.vcxproj.filters b/build/modules/asura-core/asura-core.vcxproj.filters
index 3f126e8..86d2113 100644
--- a/build/modules/asura-core/asura-core.vcxproj.filters
+++ b/build/modules/asura-core/asura-core.vcxproj.filters
@@ -188,6 +188,9 @@
<ClCompile Include="..\..\..\source\modules\asura-core\graphics\binding\_gl.cpp">
<Filter>graphics\binding</Filter>
</ClCompile>
+ <ClCompile Include="..\..\..\source\modules\asura-core\graphics\gpu_buffer.cpp">
+ <Filter>graphics</Filter>
+ </ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\..\source\modules\asura-core\application.h" />
@@ -302,9 +305,6 @@
<ClInclude Include="..\..\..\source\modules\asura-core\input\event_manager.h">
<Filter>input</Filter>
</ClInclude>
- <ClInclude Include="..\..\..\source\modules\asura-core\graphics\shader_source.h">
- <Filter>graphics</Filter>
- </ClInclude>
<ClInclude Include="..\..\..\source\modules\asura-core\image\image_decoder.h">
<Filter>image</Filter>
</ClInclude>
@@ -338,6 +338,9 @@
<ClInclude Include="..\..\..\source\modules\asura-core\graphics\matrix_stack.h">
<Filter>graphics</Filter>
</ClInclude>
+ <ClInclude Include="..\..\..\source\modules\asura-core\graphics\gpu_buffer.h">
+ <Filter>graphics</Filter>
+ </ClInclude>
</ItemGroup>
<ItemGroup>
<None Include="..\..\..\source\modules\asura-core\font\string.inl">
diff --git a/build/modules/asura-utils/asura-utils.vcxproj b/build/modules/asura-utils/asura-utils.vcxproj
index 442e223..04dd95d 100644
--- a/build/modules/asura-utils/asura-utils.vcxproj
+++ b/build/modules/asura-utils/asura-utils.vcxproj
@@ -122,6 +122,7 @@
</Link>
</ItemDefinitionGroup>
<ItemGroup>
+ <ClCompile Include="..\..\..\source\libs\asura-lib-utils\profiler\memory_leak.cpp" />
<ClCompile Include="..\..\..\source\modules\asura-utils\exceptions\exception.cpp" />
<ClCompile Include="..\..\..\source\modules\asura-utils\io\binding\_compressor.cpp" />
<ClCompile Include="..\..\..\source\modules\asura-utils\io\binding\_data_buffer.cpp" />
@@ -158,6 +159,7 @@
<ClCompile Include="..\..\..\source\modules\asura-utils\utils_module.cpp" />
</ItemGroup>
<ItemGroup>
+ <ClInclude Include="..\..\..\source\libs\asura-lib-utils\profiler\memory_leak.h" />
<ClInclude Include="..\..\..\source\modules\asura-utils\exceptions\exception.h" />
<ClInclude Include="..\..\..\source\modules\asura-utils\io\compressor.h" />
<ClInclude Include="..\..\..\source\modules\asura-utils\io\data_buffer.h" />
diff --git a/build/modules/asura-utils/asura-utils.vcxproj.filters b/build/modules/asura-utils/asura-utils.vcxproj.filters
index 3c6d092..fff909d 100644
--- a/build/modules/asura-utils/asura-utils.vcxproj.filters
+++ b/build/modules/asura-utils/asura-utils.vcxproj.filters
@@ -22,6 +22,9 @@
<Filter Include="threading\binding">
<UniqueIdentifier>{e63982e2-a2ca-4aa2-be11-f98659586c1f}</UniqueIdentifier>
</Filter>
+ <Filter Include="profiler">
+ <UniqueIdentifier>{be44a97c-e5d0-4262-8b13-a86f7df23590}</UniqueIdentifier>
+ </Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\..\source\modules\asura-utils\exceptions\exception.cpp">
@@ -122,6 +125,9 @@
<ClCompile Include="..\..\..\source\modules\asura-utils\threading\conditional.cpp">
<Filter>threading</Filter>
</ClCompile>
+ <ClCompile Include="..\..\..\source\libs\asura-lib-utils\profiler\memory_leak.cpp">
+ <Filter>profiler</Filter>
+ </ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\..\source\modules\asura-utils\exceptions\exception.h">
@@ -226,6 +232,9 @@
<Filter>threading</Filter>
</ClInclude>
<ClInclude Include="..\..\..\source\modules\asura-utils\io\renewable.h" />
+ <ClInclude Include="..\..\..\source\libs\asura-lib-utils\profiler\memory_leak.h">
+ <Filter>profiler</Filter>
+ </ClInclude>
</ItemGroup>
<ItemGroup>
<None Include="..\..\..\source\modules\asura-utils\math\rect.inl">
diff --git a/build/tools/bindingGen/obj/Release/bindingGen.csproj.CoreCompileInputs.cache b/build/tools/bindingGen/obj/Release/bindingGen.csproj.CoreCompileInputs.cache
index 1808cd2..93b7e43 100644
--- a/build/tools/bindingGen/obj/Release/bindingGen.csproj.CoreCompileInputs.cache
+++ b/build/tools/bindingGen/obj/Release/bindingGen.csproj.CoreCompileInputs.cache
@@ -1 +1 @@
-164e0e4adeed5117be7ac06ca088f3bfb8ccc730
+76869cb9eeaafde93fc35e764d87dc7f1f272b2f
diff --git a/build/tools/bindingGen/obj/Release/bindingGen.csproj.FileListAbsolute.txt b/build/tools/bindingGen/obj/Release/bindingGen.csproj.FileListAbsolute.txt
index a9c80ba..eb453d0 100644
--- a/build/tools/bindingGen/obj/Release/bindingGen.csproj.FileListAbsolute.txt
+++ b/build/tools/bindingGen/obj/Release/bindingGen.csproj.FileListAbsolute.txt
@@ -1,6 +1,3 @@
D:\Asura\build\tools\bindingGen\bin\Release\bindingGen.exe.config
D:\Asura\build\tools\bindingGen\bin\Release\bindingGen.exe
D:\Asura\build\tools\bindingGen\bin\Release\bindingGen.pdb
-D:\Asura\build\tools\bindingGen\obj\Release\bindingGen.csproj.CoreCompileInputs.cache
-D:\Asura\build\tools\bindingGen\obj\Release\bindingGen.exe
-D:\Asura\build\tools\bindingGen\obj\Release\bindingGen.pdb
diff --git a/build/tools/bindingGen/obj/Release/bindingGen.csprojAssemblyReference.cache b/build/tools/bindingGen/obj/Release/bindingGen.csprojAssemblyReference.cache
new file mode 100644
index 0000000..d31b6fe
--- /dev/null
+++ b/build/tools/bindingGen/obj/Release/bindingGen.csprojAssemblyReference.cache
Binary files differ
diff --git a/source/3rd-party/Luax/luax_class.hpp b/source/3rd-party/Luax/luax_class.hpp
index c41adbd..e6e0696 100644
--- a/source/3rd-party/Luax/luax_class.hpp
+++ b/source/3rd-party/Luax/luax_class.hpp
@@ -12,7 +12,7 @@
#include "luax_ref.h"
#include "luax_memberref.h"
#include "luax_cfunctions.h"
-#include "luax_dog.h"
+#include "luax_watchdog.h"
namespace Luax
{
@@ -24,8 +24,9 @@ namespace Luax
/// LuaxGetFactoryName ùͬʱעʱעΪsingletonͨ
/// ʱ
///
-#define LUAX_DECL_FACTORY(type) \
+#define LUAX_DECL_FACTORY(type, ...) \
friend class Luax::LuaxState; \
+ friend class Luax::LuaxNativeClass<type,##__VA_ARGS__>; \
static void RegisterLuaxClass(Luax::LuaxState&); \
static void RegisterLuaxPostprocess(Luax::LuaxState&); \
static const char* GetLuaxFactoryName() { return #type; };\
@@ -44,8 +45,9 @@ namespace Luax
/// RegisterLuaxClass עķͳԱö١ȵclass table
/// LuaxGetSingletonName õ
///
-#define LUAX_DECL_SINGLETON(type) \
+#define LUAX_DECL_SINGLETON(type, ...) \
friend class Luax::LuaxState; \
+ friend class Luax::LuaxNativeClass<type,##__VA_ARGS__>; \
static void RegisterLuaxClass(Luax::LuaxState&); \
static void RegisterLuaxPostprocess(Luax::LuaxState&); \
static const char* GetLuaxSingletonName() { return #type; }; \
@@ -114,13 +116,14 @@ namespace Luax
virtual bool PushLuaxRefTable(LuaxState& state) = 0;
///
- /// LuaxNativeClassʵ֡
+ /// LuaxNativeClassʵֺ֡ͷnativeԴ
///
virtual void Retain() = 0;
virtual void Release() = 0;
};
+ // TODO: ȡҪظɴ
//class LuaxNativeClassBase
//{
//}
@@ -139,12 +142,12 @@ namespace Luax
/// Ƚmember refʵᱻαͬʵõƵЩʵ壬
/// luaƵĵgc⡣
///
- template<class USERDATA> void LuaxRetain(LuaxState& state, USERDATA* userdata);
+ template<class DATATYPE> void LuaxRetain(LuaxState& state, DATATYPE* userdata);
///
/// userdataһref tableԳԻuserdata
///
- template<class USERDATA> void LuaxRelease(LuaxState& state, USERDATA* userdata);
+ template<class DATATYPE> void LuaxRelease(LuaxState& state, DATATYPE* userdata);
///
/// userdata pushջûгʼmUserdataʼúԪѳʼõ
@@ -162,8 +165,8 @@ namespace Luax
///
/// nativeӿڡ
///
- void Retain() override;
- void Release() override;
+ void Retain() override final;
+ void Release() override final;
#if LUAX_PROFILER
// Զϴʵdeleteռ
@@ -201,21 +204,18 @@ namespace Luax
//------------------------------------------------------------------------------//
//
- LUAX_DECL_METHOD(__tostring);
- LUAX_DECL_METHOD(_GetClass);
- LUAX_DECL_METHOD(_GetClassName);
-
+ static int __tostring (lua_State*);
+ static int _GetClass (lua_State*);
+ static int _GetClassName (lua_State*);
+
//
- LUAX_DECL_METHOD(__gc);
-#if LUAX_ENABLE_NATIVE_EXTEND
- LUAX_DECL_METHOD(_ExtendFactory);
-#endif
- LUAX_DECL_METHOD(_GetRefTable);
- LUAX_DECL_METHOD(_New);
+ static int __gc (lua_State*);
+ static int _GetRefTable (lua_State*);
+ static int _New (lua_State*);
- //
#if LUAX_ENABLE_NATIVE_EXTEND
- LUAX_DECL_METHOD(_ExtendSingleton);
+ static int _ExtendFactory (lua_State*);
+ static int _ExtendSingleton (lua_State*);
#endif
//--------------------------------------------------------------------------------//
@@ -244,7 +244,7 @@ namespace Luax
///
/// ͨɾ
///
- LuaxDog mWatchDog;
+ LuaxWatchDog mWatchDog;
#if LUAX_PROFILER
// йܴ˶
diff --git a/source/3rd-party/Luax/luax_class.inl b/source/3rd-party/Luax/luax_class.inl
index 95965ff..1d6a89f 100644
--- a/source/3rd-party/Luax/luax_class.inl
+++ b/source/3rd-party/Luax/luax_class.inl
@@ -95,7 +95,7 @@ namespace Luax
if (pdead == nullptr)
return;
// ϴʵʹReleaseͷš
- LuaxNativeClass* p = static_cast<LuaxNativeClass*>(pdead);
+ TYPE* p = static_cast<TYPE*>(pdead);
assert(p->mSafer);
::operator delete(pdead, size);
}
@@ -384,6 +384,7 @@ namespace Luax
int LuaxNativeClass<TYPE, BASE>::__gc(lua_State* L)
{
LUAX_STATE(L);
+
TYPE* self = state.GetUserdata<TYPE>(1);
assert(self);
@@ -391,8 +392,10 @@ namespace Luax
std::cout << "Luax: GC<" << TYPE::GetLuaxClassName() << ">\n";
#endif
- --self->mWatchDog.mVMRef;
- self->LuaxNativeClass<TYPE, BASE>::Release();
+ if(self->mWatchDog.mVMRef > 0)
+ --self->mWatchDog.mVMRef;
+
+ self->Release();
return 0;
}
diff --git a/source/3rd-party/Luax/luax_dog.cpp b/source/3rd-party/Luax/luax_watchdog.cpp
index e69de29..e69de29 100644
--- a/source/3rd-party/Luax/luax_dog.cpp
+++ b/source/3rd-party/Luax/luax_watchdog.cpp
diff --git a/source/3rd-party/Luax/luax_dog.h b/source/3rd-party/Luax/luax_watchdog.h
index f6d95d5..b07b007 100644
--- a/source/3rd-party/Luax/luax_dog.h
+++ b/source/3rd-party/Luax/luax_watchdog.h
@@ -9,10 +9,10 @@ namespace Luax
///
/// LuaxNativeClassʵüwatch dogֻwatch dogͨʱſdelete
///
- class LuaxDog
+ class LuaxWatchDog
{
public:
- LuaxDog()
+ LuaxWatchDog()
: mVMRef(0)
, mNativeRef(0)
{
diff --git a/source/Asura.Editor/config.h b/source/Asura.Editor/config.h
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/source/Asura.Editor/config.h
diff --git a/source/Asura.Editor/core/slot.h b/source/Asura.Editor/core/slot.h
index b62f406..f569cfe 100644
--- a/source/Asura.Editor/core/slot.h
+++ b/source/Asura.Editor/core/slot.h
@@ -4,7 +4,7 @@
#include <asura-utils/scripting/portable.hpp>
#include <asura-core/input/event.h>
-#include "../widgets/widget.h"
+#include "../controls/widget.h"
namespace AsuraEditor
{
diff --git a/source/Asura.Editor/editor.h b/source/Asura.Editor/editor.h
index b086532..fbcfb62 100644
--- a/source/Asura.Editor/editor.h
+++ b/source/Asura.Editor/editor.h
@@ -21,9 +21,14 @@ namespace AsuraEditor
private:
///
- /// ߼еstate
+ /// ߼е
///
- lua_State* mMainState;
+ Luax::LuaxVM* mEditorVM;
+
+ ///
+ /// Ϸʱ
+ ///
+ Luax::LuaxVM* mRunnerVM;
};
diff --git a/source/Asura.Editor/system/window.cpp b/source/Asura.Editor/system/window.cpp
new file mode 100644
index 0000000..440c88c
--- /dev/null
+++ b/source/Asura.Editor/system/window.cpp
@@ -0,0 +1,13 @@
+#include "window.h"
+
+namespace AsuraEditor
+{
+
+ bool Window::Init(int posx, uint posy, uint w, uint h)
+ {
+ if (mHWND)
+ return false;
+
+ }
+
+} \ No newline at end of file
diff --git a/source/Asura.Editor/system/window.h b/source/Asura.Editor/system/window.h
new file mode 100644
index 0000000..c9837e3
--- /dev/null
+++ b/source/Asura.Editor/system/window.h
@@ -0,0 +1,82 @@
+#ifndef __ASURA_EDITOR_WINDOW_H__
+#define __ASURA_EDITOR_WINDOW_H__
+
+#include <windows.h>
+#include <string.h>
+
+#include <asura-utils/scripting/portable.hpp>
+
+#include "../type.h"
+
+namespace AsuraEditor
+{
+
+ ///
+ /// ڷָֻ˿ܵķ񣬾ĿؼӦóơ
+ ///
+ enum WindowStyle
+ {
+ WINDOW_STYLE_BASIC, ///<
+ WINDOW_STYLE_TOOL, ///<
+ WINDOW_STYLE_CONFIRM, ///< ȷϴ
+ };
+
+ ///
+ /// ʱҪ
+ ///
+ struct WindowConfig
+ {
+ std::string title; ///<
+ uint x, y; ///<
+ uint width, height; ///< С
+ WindowStyle style; ///<
+ };
+
+ ///
+ /// ༭win32ڣÿһڰһHWNDһHDC
+ ///
+ class Window
+ : public AEScripting::Portable<Window>
+ {
+ public:
+
+ Window();
+ ~Window();
+
+ bool Init(WindowConfig& config);
+
+ private:
+
+ //------------------------------------------------------------------------------//
+
+ LUAX_DECL_FACTORY(Window);
+
+ LUAX_DECL_ENUM(WindowStyle);
+
+ LUAX_DECL_METHOD(_New);
+ LUAX_DECL_METHOD(_Init);
+ LUAX_DECL_METHOD(_SetPosition);
+
+ //------------------------------------------------------------------------------//
+
+ ///
+ /// ڡ
+ ///
+ Window* mParent;
+
+ ///
+ /// ھ豸ġ
+ ///
+ HWND mHWND;
+ HDC mHDC;
+
+ ///
+ /// ڷ
+ ///
+ WindowStyle mStyle;
+
+ };
+
+}
+
+#endif \ No newline at end of file
diff --git a/source/Asura.Editor/type.h b/source/Asura.Editor/type.h
new file mode 100644
index 0000000..d58cf87
--- /dev/null
+++ b/source/Asura.Editor/type.h
@@ -0,0 +1,30 @@
+#ifndef __ASURA_EDITOR_TYPE_H__
+#define __ASURA_EDITOR_TYPE_H__
+
+#include <cstdlib>
+#include <stdint.h>
+
+namespace AsuraEditor
+{
+
+ typedef int8_t int8;
+ typedef uint8_t uint8;
+ //typedef uint8 byte;
+ typedef char byte;
+ typedef int16_t int16;
+ typedef uint16_t uint16;
+ typedef int32_t int32;
+ typedef uint32_t uint32;
+ typedef int64_t int64;
+ typedef uint64_t uint64;
+
+ typedef uint32_t uint;
+ typedef int32_t sint;
+
+ typedef std::size_t size_t;
+
+ typedef const char cc8;
+
+}
+
+#endif \ No newline at end of file
diff --git a/source/libs/asura-lib-utils/profiler/memory_leak.cpp b/source/libs/asura-lib-utils/profiler/memory_leak.cpp
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/source/libs/asura-lib-utils/profiler/memory_leak.cpp
diff --git a/source/libs/asura-lib-utils/profiler/memory_leak.h b/source/libs/asura-lib-utils/profiler/memory_leak.h
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/source/libs/asura-lib-utils/profiler/memory_leak.h
diff --git a/source/modules/asura-core/core_config.h b/source/modules/asura-core/core_config.h
index 2286189..717f254 100644
--- a/source/modules/asura-core/core_config.h
+++ b/source/modules/asura-core/core_config.h
@@ -3,4 +3,9 @@
#define ASURA_WINDOW_SDL 1
+#define ASURA_OPENGL_GLAD (1 << 1)
+#define ASURA_OPENGL_GLEE (1 << 2)
+#define ASURA_OPENGL_GLUT (1 << 3)
+#define ASURA_OPENGL_LOADER (ASURA_OPENGL_GLAD|ASURA_OPENGL_GLEE|ASURA_OPENGL_GLUT)
+
#endif \ No newline at end of file
diff --git a/source/modules/asura-core/graphics/binding/_image.cpp b/source/modules/asura-core/graphics/binding/_image.cpp
index 6179706..76ac635 100644
--- a/source/modules/asura-core/graphics/binding/_image.cpp
+++ b/source/modules/asura-core/graphics/binding/_image.cpp
@@ -39,7 +39,7 @@ namespace AsuraEngine
{
LUAX_PREPARE(L, Image);
ImageData* imgData = state.CheckUserdata<ImageData>(2);
- state.Push(self->Update(imgData));
+ state.Push(self->Load(imgData));
return 1;
}
diff --git a/source/modules/asura-core/graphics/canvas.h b/source/modules/asura-core/graphics/canvas.h
index 6af81d7..555ce5d 100644
--- a/source/modules/asura-core/graphics/canvas.h
+++ b/source/modules/asura-core/graphics/canvas.h
@@ -20,9 +20,7 @@ namespace AsuraEngine
/// CanvasҲԳΪrender textureҲΪtextureȾ
///
class Canvas ASURA_FINAL
- : public Drawable
- , public RenderTarget
- , public Scripting::Portable<Canvas>
+ : public Scripting::Portable<Canvas, RenderTarget>
{
public:
@@ -33,12 +31,12 @@ namespace AsuraEngine
///
/// render textureĴС
///
- void SetSize(uint w, uint h) asura_throw(Exception);
+ void SetSize(uint w, uint h) ASURA_THROW(Exception);
void Clear(const Color& col = Color::Black) override;
-
+/*
void Clear(const Math::Recti& quad, const Color& col = Color::Black) override;
-
+*/
void Render(const RenderTarget* rt, const Math::Vector2i& pos, const Math::Vector2i& scale, const Math::Vector2i& center, float rot);
void Render(const RenderTarget* rt, const Math::Rectf& quad, const Math::Vector2i& pos, const Math::Vector2i& scale, const Math::Vector2i& center, float rot);
@@ -55,6 +53,11 @@ namespace AsuraEngine
GLuint mFBO;
///
+ /// 󶨵tex
+ ///
+ GLuint mTex;
+
+ ///
/// canvasĴС
///
uint mWidth, mHeight;
diff --git a/source/modules/asura-core/graphics/gl.cpp b/source/modules/asura-core/graphics/gl.cpp
index 47476a7..54fadb7 100644
--- a/source/modules/asura-core/graphics/gl.cpp
+++ b/source/modules/asura-core/graphics/gl.cpp
@@ -30,13 +30,41 @@ namespace AsuraEngine
{
}
+ bool OpenGL::Init(const AEMath::Recti& view)
+ {
+ bool loaded = false;
+#if ASURA_OPENGL_LOADER & ASURA_OPENGL_GLAD
+ if (!loaded)
+ loaded = gladLoadGL();
+#endif
+ if (!loaded)
+ return false;
+ state.viewport = view;
+ return true;
+ }
+
+ void OpenGL::WipeError()
+ {
+ while (glGetError() != GL_NO_ERROR);
+ }
+
+ bool OpenGL::HasError()
+ {
+ return glGetError() != GL_NO_ERROR;
+ }
+
+ GLenum OpenGL::GetError()
+ {
+ return glGetError();
+ }
+
void OpenGL::SetViewport(const Recti v)
{
glViewport(v.x, v.y, v.w, v.h);
state.viewport = v;
}
- Recti OpenGL::GetViewport()
+ const Recti& OpenGL::GetViewport()
{
return state.viewport;
}
diff --git a/source/modules/asura-core/graphics/gl.h b/source/modules/asura-core/graphics/gl.h
index 6838bc9..e3c2ffc 100644
--- a/source/modules/asura-core/graphics/gl.h
+++ b/source/modules/asura-core/graphics/gl.h
@@ -18,6 +18,7 @@ namespace AsuraEngine
class Profiler;
class Shader;
+ class GPUBuffer;
enum MatrixMode
{
@@ -35,17 +36,23 @@ namespace AsuraEngine
{
public:
- LUAX_DECL_SINGLETON(GL);
-
OpenGL();
~OpenGL();
+ ///
+ /// ʼOpenGLIJڴOpenGL֮󡣴˺עOpenGLĵַ
+ ///
+ bool Init(const AEMath::Recti& viewport);
+
void SetViewport(const AEMath::Recti viewport);
- AEMath::Recti GetViewport();
+ const AEMath::Recti& GetViewport();
void UseShader(Shader* shader);
void UnuseShader();
+ ///
+ /// Matrix stackز
+ ///
void SetMatrixMode(MatrixMode mode);
MatrixMode GetMatrixMode();
void PushMatrix();
@@ -59,6 +66,13 @@ namespace AsuraEngine
uint GetMatrixDepth();
uint GetMatrixIndex();
+ ///
+ /// ʾ
+ ///
+ void WipeError();
+ bool HasError();
+ GLenum GetError();
+
///
/// OpenGL3.0Ժû任ӿڡshaderȲﱣһЩOpenGL״̬ע
/// ƺȫ̵ģҲ˵Asuraֶ֧߳ȾOpenGLĵĴʹһ
@@ -78,6 +92,8 @@ namespace AsuraEngine
friend class Profiler;
+ LUAX_DECL_SINGLETON(OpenGL);
+
//----------------------------------------------------------------------------//
LUAX_DECL_ENUM(MatrixMode, 0);
diff --git a/source/modules/asura-core/graphics/gpu_buffer.cpp b/source/modules/asura-core/graphics/gpu_buffer.cpp
new file mode 100644
index 0000000..c796bb0
--- /dev/null
+++ b/source/modules/asura-core/graphics/gpu_buffer.cpp
@@ -0,0 +1,94 @@
+#include "gpu_buffer.h"
+
+namespace AsuraEngine
+{
+ namespace Graphics
+ {
+
+ GPUBuffer::GPUBuffer(BufferType type, BufferUsage usage, size_t size)
+ : mTarget(GL_ZERO)
+ , mBuffer(GL_ZERO)
+ , mSize(0)
+#if ASURA_DEBUG
+ , mData(nullptr)
+#endif
+ {
+ switch (type)
+ {
+ case BUFFER_TYPE_VERTEX:
+ mTarget = GL_ARRAY_BUFFER;
+ break;
+ case BUFFER_TYPE_INDEX:
+ mTarget = GL_ELEMENT_ARRAY_BUFFER;
+ break;
+ }
+ switch (usage)
+ {
+ case BUFFER_USAGE_STREAM:
+ mUsage = GL_STREAM_DRAW;
+ break;
+ case BUFFER_USAGE_DYNAMIC:
+ mUsage = GL_DYNAMIC_DRAW;
+ break;
+ case BUFFER_USAGE_STATIC:
+ mUsage = GL_STATIC_DRAW;
+ break;
+ }
+ gl.WipeError();
+ glGenBuffers(1, &mBuffer);
+ if (mBuffer == 0)
+ throw Exception("OpenGL glGenBuffers failed.");
+ glBindBuffer(mTarget, mBuffer);
+ glBufferData(mTarget, size, NULL, mUsage); // ʼСΪsizeĻ
+ if (gl.HasError())
+ throw Exception("OpenGL glBufferData failed. Errorcode=%d.", gl.GetError());
+ glBindBuffer(mTarget, 0);
+#if ASURA_DEBUG
+ mData = (byte*)malloc(size);
+ memset(mData, 0, size);
+#endif
+ mSize = size;
+ }
+
+ GPUBuffer::~GPUBuffer()
+ {
+#if ASURA_DEBUG
+ if (mData)
+ free(mData);
+#endif
+ glDeleteBuffers(1, &mBuffer);
+ }
+
+ bool GPUBuffer::Fill(const void * data, size_t size, uint offset)
+ {
+ if (data == nullptr)
+ return false;
+ glBindBuffer(mTarget, mBuffer);
+ glBufferSubData(mTarget, offset, size, data);
+ if (gl.HasError())
+ throw Exception("OpenGL glBufferSubData failed. Errorcode=%d.", gl.GetError());
+ glBindBuffer(mTarget, 0);
+#if ASURA_DEBUG
+ // һݣ
+ memcpy(mData + offset, data, size);
+#endif
+ return true;
+ }
+
+ void GPUBuffer::Bind()
+ {
+ glBindBuffer(mTarget, mBuffer);
+ }
+
+ void GPUBuffer::UnBind()
+ {
+ glBindBuffer(mTarget, 0);
+ }
+
+ uint GPUBuffer::GetBufferSize()
+ {
+ return mSize;
+ }
+
+ }
+} \ No newline at end of file
diff --git a/source/modules/asura-core/graphics/gpu_buffer.h b/source/modules/asura-core/graphics/gpu_buffer.h
new file mode 100644
index 0000000..aba1157
--- /dev/null
+++ b/source/modules/asura-core/graphics/gpu_buffer.h
@@ -0,0 +1,69 @@
+#ifndef __ASURA_GPU_BUFFER_H__
+#define __ASURA_GPU_BUFFER_H__
+
+#include <asura-utils/exceptions/exception.h>
+#include <asura-utils/type.h>
+
+#include "gl.h"
+
+namespace AsuraEngine
+{
+ namespace Graphics
+ {
+
+ enum BufferType
+ {
+ BUFFER_TYPE_VERTEX, ///< 㻺
+ BUFFER_TYPE_INDEX, ///<
+ };
+
+ enum BufferUsage
+ {
+ BUFFER_USAGE_STREAM, ///< ޸һΣʹô
+ BUFFER_USAGE_DYNAMIC, ///< ޸һΣʹ
+ BUFFER_USAGE_STATIC, ///< ޸ĺʹ
+ };
+
+ ///
+ /// GPU壬ֶ㻺֣ÿζڴԴϴݡ
+ ///
+ class GPUBuffer
+ {
+ public:
+
+ GPUBuffer(BufferType type, BufferUsage usage, size_t size) ASURA_THROW(Exception);
+ ~GPUBuffer();
+
+ ///
+ /// ʼ\»棬ûgpu bufferԴΪdzʼΪǸ¡
+ ///
+ bool Fill(const void* data, size_t size, uint offset = 0) ASURA_THROW(Exception);
+
+ ///
+ /// 󶨵ӦĿϣͿʹˡ
+ ///
+ void Bind();
+ void UnBind();
+
+ uint GetBufferSize();
+
+ private:
+
+ GLenum mTarget;
+ GLuint mBuffer;
+ GLuint mUsage;
+ uint mSize;
+
+#if ASURA_DEBUG
+ ///
+ /// رbufferݣԴݱһ£Ժ͸Դ档
+ ///
+ byte* mData;
+#endif
+
+ };
+
+ }
+}
+
+#endif \ No newline at end of file
diff --git a/source/modules/asura-core/graphics/image.cpp b/source/modules/asura-core/graphics/image.cpp
index 4cbe826..d4c4cdd 100644
--- a/source/modules/asura-core/graphics/image.cpp
+++ b/source/modules/asura-core/graphics/image.cpp
@@ -20,11 +20,9 @@ namespace AsuraEngine
{
}
- bool Image::Update(DecodedData* data)
+ bool Image::Load(ImageData* imgData)
{
- if (!data) return false;
- ImageData* imgData = static_cast<ImageData*>(data);
- if (!imgData) return false;
+ if (!imgData) return false;
if (mTex == 0)
{
@@ -59,10 +57,8 @@ namespace AsuraEngine
return true;
}
- bool Image::Update(AEIO::DecodedData* data, const AEMath::Vector2i& pos)
+ bool Image::Load(ImageData* imgData, const AEMath::Vector2i& pos)
{
- if (!data) return false;
- ImageData* imgData = static_cast<ImageData*>(data);
if (!imgData) return false;
glBindTexture(GL_TEXTURE_2D, mTex);
diff --git a/source/modules/asura-core/graphics/image.h b/source/modules/asura-core/graphics/image.h
index e4aecd1..d3cca4b 100644
--- a/source/modules/asura-core/graphics/image.h
+++ b/source/modules/asura-core/graphics/image.h
@@ -20,21 +20,16 @@ namespace AsuraEngine
namespace Graphics
{
- class ImageFactory;
-
///
/// ImageͼƬڴ󣬶ȡϷ󱣴ĽһImageڴ桢Դֻᱣһ
/// ݣҪimageêλãźתǶȣʹsprite
/// һֻࡣҪǿǵeditorengineʹòͬķװ
///
class Image ASURA_FINAL
- : public AEIO::Renewable
- , public AEScripting::Portable<Image, Texture>
+ : public AEScripting::Portable<Image, Texture>
{
public:
- LUAX_DECL_FACTORY(Image);
-
Image();
~Image();
@@ -43,19 +38,21 @@ namespace AsuraEngine
/// ͼύGPUϢ¹imageʹglTexImage2D
/// ύimageݡ
///
- bool Update(AEIO::DecodedData* decodeData) override;
- bool Update(AEIO::DecodedData* decodeData, const AEMath::Vector2i& pos);
+ bool Load(ImageData* decodeData);
+ bool Load(ImageData* decodeData, const AEMath::Vector2i& pos);
uint GetWidth();
uint GetHeight();
void Render(const RenderTarget* rt, const RenderState& state) override {};
- void Render(const RenderTarget* rt, const Math::Rectf& quad, const RenderState& state) override {};
+ void Render(const RenderTarget* rt, const AEMath::Rectf& quad, const RenderState& state) override {};
private:
//----------------------------------------------------------------------------//
+ LUAX_DECL_FACTORY(Image, Texture);
+
LUAX_DECL_METHOD(_New);
LUAX_DECL_METHOD(_Update);
LUAX_DECL_METHOD(_GetWidth);
diff --git a/source/modules/asura-core/graphics/matrix_stack.h b/source/modules/asura-core/graphics/matrix_stack.h
index e69ee98..db7248b 100644
--- a/source/modules/asura-core/graphics/matrix_stack.h
+++ b/source/modules/asura-core/graphics/matrix_stack.h
@@ -35,7 +35,7 @@ namespace AsuraEngine
bool Pop();
AEMath::Matrix44& GetTop();
- void GetTop(asura_out AEMath::Matrix44& mat44);
+ void GetTop(ASURA_OUT AEMath::Matrix44& mat44);
void LoadMatrix(const AEMath::Matrix44& mat44);
void MultMatrix(const AEMath::Matrix44& mat44);
diff --git a/source/modules/asura-core/graphics/render_target.h b/source/modules/asura-core/graphics/render_target.h
index 0749cab..1992f6c 100644
--- a/source/modules/asura-core/graphics/render_target.h
+++ b/source/modules/asura-core/graphics/render_target.h
@@ -18,7 +18,7 @@ namespace AsuraEngine
/// Canvas(RenderTexture)
/// Window(RenderWindow)
///
- class RenderTarget
+ class RenderTarget : public AEScripting::Object
{
public:
diff --git a/source/modules/asura-core/graphics/shader.cpp b/source/modules/asura-core/graphics/shader.cpp
index c26ddf1..e6779df 100644
--- a/source/modules/asura-core/graphics/shader.cpp
+++ b/source/modules/asura-core/graphics/shader.cpp
@@ -1,6 +1,5 @@
#include <asura-utils/exceptions/exception.h>
-#include "shader_source.h"
#include "shader.h"
using namespace std;
@@ -12,47 +11,49 @@ namespace AsuraEngine
Shader::Shader()
{
- //Fix: Ҫʱ
- //mProgram = glCreateProgram();
- //if (mProgram == 0)
- // throw Exception("Cannot create OpenGL shader program.");
-
- //mVertShader = glCreateShader(GL_VERTEX_SHADER);
- //if (mVertShader == 0)
- //{
- // glDeleteProgram(mProgram);
- // throw Exception("Cannot create OpenGL vertex shader.");
- //}
-
- //mFragShader = glCreateShader(GL_FRAGMENT_SHADER);
- //if (mFragShader == 0)
- //{
- // glDeleteProgram(mProgram);
- // glDeleteShader(mVertShader);
- // throw Exception("Cannot create OpenGL fragment shader.");
- //}
}
Shader::~Shader()
{
- glDeleteShader(mVertShader);
- glDeleteShader(mFragShader);
- glDeleteProgram(mProgram);
+ if(mVertShader != 0)
+ glDeleteShader(mVertShader);
+ if(mFragShader != 0)
+ glDeleteShader(mFragShader);
+ if(mProgram != 0)
+ glDeleteProgram(mProgram);
}
- bool Shader::Update(AEIO::DecodedData* db)
+ bool Shader::Load(const string& vert, const string& frag)
{
- if (!db) return false;
- ShaderSouce* shaderSource = static_cast<ShaderSouce*>(db);
- if (!shaderSource) return false;
-
GLenum err = GL_NO_ERROR;
- const GLchar* source;
GLint success;
string warnning = "";
+ if (mProgram == 0)
+ {
+ mProgram = glCreateProgram();
+ if (mProgram == 0)
+ throw Exception("Cannot create OpenGL shader program.");
+ }
+
+ if (mVertShader == 0)
+ {
+ mVertShader = glCreateShader(GL_VERTEX_SHADER);
+ if (mVertShader == 0)
+ throw Exception("Cannot create OpenGL vertex shader.");
+ }
+
+ if (mFragShader == 0)
+ {
+ mFragShader = glCreateShader(GL_FRAGMENT_SHADER);
+ if(mFragShader == 0)
+ throw Exception("Cannot create OpenGL fragment shader.");
+ }
+
+ const GLchar* source;
+
// Compile vertex shader.
- source = shaderSource->mVert.c_str();
+ source = vert.c_str();
glShaderSource(mVertShader, 1, &source, NULL);
glCompileShader(mVertShader);
glGetShaderiv(mVertShader, GL_COMPILE_STATUS, &success);
@@ -63,7 +64,7 @@ namespace AsuraEngine
}
// Compile fragment shader.
- source = shaderSource->mFrag.c_str();
+ source = frag.c_str();
glShaderSource(mFragShader, 1, &source, NULL);
glCompileShader(mFragShader);
glGetShaderiv(mFragShader, GL_COMPILE_STATUS, &success);
@@ -83,29 +84,27 @@ namespace AsuraEngine
warnning = GetProgramWarnings();
throw Exception("Link shader program failed:\n%s", warnning.c_str());
}
- }
- uint Shader::GetUniformLocation(const std::string& uniform)
- {
- return 0;
+ return true;
}
- GLuint Shader::GetGLProgramHandle()
+ uint Shader::GetUniformLocation(const std::string& uniform)
{
- return mProgram;
+ // This function returns -1 if name does not correspond to an active uniform variable
+ // in program or if name starts with the reserved prefix "gl_".
+ GLint loc = glGetUniformLocation(mProgram, uniform.c_str());
+ return loc;
}
- void Shader::Use()
+ bool Shader::HasUniform(const std::string& uniform)
{
- if (mProgram != 0)
- {
- gl.UseShader(this);
- }
+ GLint loc = glGetUniformLocation(mProgram, uniform.c_str());
+ return loc != -1;
}
- void Shader::Unuse()
+ GLuint Shader::GetGLProgramHandle()
{
- gl.UnuseShader();
+ return mProgram;
}
void Shader::SetUniformFloat(uint loc, float value)
@@ -138,6 +137,18 @@ namespace AsuraEngine
glUniform4f(loc, vec4.x, vec4.y, vec4.z, vec4.w);
}
+ void Shader::SetUniformMatrix44(uint loc, const Math::Matrix44& mat)
+ {
+ if (gl.state.shader == this)
+ glUniformMatrix4fv(loc, 1, GL_FALSE, mat.GetElements());
+ }
+
+ //void Shader::GetUniform()
+ //{
+ // //if(gl.state.shader == this)
+ // // glGetUniformfv()
+ //}
+
uint Shader::GetGLTextureUnitCount()
{
GLint maxTextureUnits = 0;
diff --git a/source/modules/asura-core/graphics/shader.h b/source/modules/asura-core/graphics/shader.h
index f4bce25..9cf9653 100644
--- a/source/modules/asura-core/graphics/shader.h
+++ b/source/modules/asura-core/graphics/shader.h
@@ -14,7 +14,6 @@
#include <asura-utils/stringmap.hpp>
#include <asura-utils/manager.hpp>
-#include "shader_source.h"
#include "color.h"
#include "texture.h"
#include "gl.h"
@@ -35,31 +34,14 @@ namespace AsuraEngine
{
public:
- LUAX_DECL_FACTORY(Shader);
-
- Shader() asura_throw(Exception);
+ Shader();
~Shader();
- ///
- /// ӴshaderʱȼǷϴλuniforms location mapʹ
- /// glAttachShader±ɫɫ
- ///
- bool Update(AEIO::DecodedData* decodeData) override;
-
- ///
- /// shaderΪ
- ///
- void Use();
-
- ///
- /// shaderΪǻ
- ///
- void Unuse();
-
- ///
- /// Ѿ֪uniform location£ֵ
- ///
+ bool Load(const std::string& vert, const std::string& frag);
+
+ uint GetAttributeLocation(const std::string& name);
+
void SetUniformFloat(uint loc, float value);
void SetUniformTexture(uint loc, const Texture& texture);
void SetUniformVector2(uint loc, const Math::Vector2f& vec2);
@@ -68,40 +50,32 @@ namespace AsuraEngine
void SetUniformColor(uint loc, const Color& color);
void SetUniformMatrix44(uint loc, const Math::Matrix44& mat44);
+ float GetUniformFloat(uint loc);
+ AEMath::Vector2f GetUniformVector2(uint loc);
+ AEMath::Vector3f GetUniformVector3(uint loc);
+ AEMath::Vector4f GetUniformVector4s(uint loc);
+ AEMath::Matrix44 GetUniformMatrix44(uint loc);
+
uint GetUniformLocation(const std::string& uniform);
bool HasUniform(const std::string& uniform);
GLuint GetGLProgramHandle();
- ///
- /// texture unitһΪ16
- ///
static uint GetGLTextureUnitCount();
private:
- ///
- /// ñ
- /// vec2 Asura_Time xֵΪ뵱ǰʼʱ䣬yֵΪһ֡ʱ
- /// vec2 Asura_RenderTargetSize RTĴСΪλ
- /// Texture Asura_MainTexture
- ///
- void SetBuiltInUniforms();
-
- ///
- /// OpenGL shader program handle.
- ///
GLuint mProgram;
GLuint mVertShader;
GLuint mFragShader;
- Luax::LuaxMemberRef mCodeRef;
-
private:
//----------------------------------------------------------------------------//
+ LUAX_DECL_FACTORY(Shader);
+
LUAX_DECL_METHOD(_New);
LUAX_DECL_METHOD(_Use);
LUAX_DECL_METHOD(_Unuse);
diff --git a/source/modules/asura-core/graphics/shader_source.h b/source/modules/asura-core/graphics/shader_source.h
deleted file mode 100644
index eedbe53..0000000
--- a/source/modules/asura-core/graphics/shader_source.h
+++ /dev/null
@@ -1,39 +0,0 @@
-#ifndef __ASURA_SHADER_SOURCE_H__
-#define __ASURA_SHADER_SOURCE_H__
-
-#include <string>
-
-#include <asura-utils/io/decoded_data.h>
-
-namespace AsuraEngine
-{
- namespace Graphics
- {
-
- class Shader;
-
- ///
- /// Asura EngineʹõshaderԴ룬GLSL
- ///
- class ShaderSouce : public AEIO::DecodedData
- {
- public:
-
- void Decode(AEIO::DataBuffer& vert, AEIO::DataBuffer& frag);
- void Load(const std::string& vert, const std::string& frag);
-
- private:
-
- friend class Shader;
-
- void Decode(AEIO::DataBuffer& buffer) override;
-
- std::string mVert;
- std::string mFrag;
-
- };
-
- }
-}
-
-#endif \ No newline at end of file
diff --git a/source/modules/asura-core/graphics/sprite_batch.h b/source/modules/asura-core/graphics/sprite_batch.h
index eb1c89c..17ecb40 100644
--- a/source/modules/asura-core/graphics/sprite_batch.h
+++ b/source/modules/asura-core/graphics/sprite_batch.h
@@ -3,6 +3,8 @@
#include <asura-utils/scripting/portable.hpp>
+#include "gpu_buffer.h"
+
namespace AsuraEngine
{
namespace Graphics
@@ -16,12 +18,16 @@ namespace AsuraEngine
{
public:
- LUAX_DECL_FACTORY(SpriteBatch);
-
SpriteBatch();
~SpriteBatch();
+ private:
+
+ LUAX_DECL_FACTORY(SpriteBatch);
+
+
+
};
}
diff --git a/source/modules/asura-core/graphics/texture.h b/source/modules/asura-core/graphics/texture.h
index 571c617..4a414b4 100644
--- a/source/modules/asura-core/graphics/texture.h
+++ b/source/modules/asura-core/graphics/texture.h
@@ -1,8 +1,8 @@
#ifndef __ASURA_TEXTURE_H__
#define __ASURA_TEXTURE_H__
-#include <asura-utils/math/rect.hpp>
#include <asura-utils/math/vector2.hpp>
+#include <asura-utils/math/rect.hpp>
#include "../core_config.h"
@@ -87,7 +87,7 @@ namespace AsuraEngine
///
/// ȾtextureһֵrtϣԭϽǣң졣
///
- virtual void Render(const RenderTarget* rt, const Math::Rectf& quad, const RenderState& state) = 0;
+ virtual void Render(const RenderTarget* rt, const AEMath::Rectf& quad, const RenderState& state) = 0;
protected:
@@ -112,6 +112,9 @@ namespace AsuraEngine
//----------------------------------------------------------------------------//
+ ///
+ /// OpenGL
+ ///
GLuint mTex;
FilterMode mMinFilter;
diff --git a/source/modules/asura-core/image/image_data.h b/source/modules/asura-core/image/image_data.h
index d9427d3..b05507a 100644
--- a/source/modules/asura-core/image/image_data.h
+++ b/source/modules/asura-core/image/image_data.h
@@ -20,13 +20,11 @@ namespace AsuraEngine
class ImageDecoder;
class ImageData ASURA_FINAL
- : public AEIO::DecodedData
- , public Scripting::Portable<ImageData>
+ : public Scripting::Portable<ImageData>
+ , public AEIO::DecodedData
{
public:
- LUAX_DECL_FACTORY(ImageData);
-
///
/// ͼƬļϢʧܣ׳쳣
///
@@ -53,6 +51,8 @@ namespace AsuraEngine
//----------------------------------------------------------------------------//
+ LUAX_DECL_FACTORY(ImageData);
+
LUAX_DECL_METHOD(_New);
LUAX_DECL_METHOD(_GetPixel);
LUAX_DECL_METHOD(_GetSize);
diff --git a/source/modules/asura-core/image/image_decode_task.h b/source/modules/asura-core/image/image_decode_task.h
index 15b0837..666d00f 100644
--- a/source/modules/asura-core/image/image_decode_task.h
+++ b/source/modules/asura-core/image/image_decode_task.h
@@ -10,8 +10,7 @@ namespace AsuraEngine
{
class ImageDecodeTask
- : public AEScripting::Portable<ImageDecodeTask>
- , public AEThreading::Task
+ : public AEScripting::Portable<ImageDecodeTask, AEThreading::Task>
{
public:
diff --git a/source/modules/asura-core/window/window.cpp b/source/modules/asura-core/window/window.cpp
index 99433d5..9dc247d 100644
--- a/source/modules/asura-core/window/window.cpp
+++ b/source/modules/asura-core/window/window.cpp
@@ -84,23 +84,23 @@ namespace AsuraEngine
glClearColor(col.r, col.g, col.b, col.a);
}
- void Window::Clear(const Math::Recti& quad, const AEGraphics::Color& col /*= AEGraphics::Color::Black*/)
- {
- ASSERT(mImpl);
+ //void Window::Clear(const Math::Recti& quad, const AEGraphics::Color& col /*= AEGraphics::Color::Black*/)
+ //{
+ // ASSERT(mImpl);
- }
+ //}
void Window::Draw(const AEGraphics::Drawable* texture, const AEGraphics::RenderState& state)
{
ASSERT(mImpl);
}
-
+/*
void Window::Draw(const AEGraphics::Drawable* texture, const Math::Recti& quad, const AEGraphics::RenderState& state)
{
ASSERT(mImpl);
}
-
+*/
}
}
diff --git a/source/modules/asura-core/window/window.h b/source/modules/asura-core/window/window.h
index 8ce0e64..61adae1 100644
--- a/source/modules/asura-core/window/window.h
+++ b/source/modules/asura-core/window/window.h
@@ -58,8 +58,7 @@ namespace AsuraEngine
/// ᵼ࣬޽ӵ༭ⴰϡ
///
class Window ASURA_FINAL
- : public AEGraphics::RenderTarget
- , public AEScripting::Portable<Window>
+ : public AEScripting::Portable<Window, AEGraphics::RenderTarget>
, public Singleton<Window>
{
public:
diff --git a/source/modules/asura-utils/io/binding/_file.cpp b/source/modules/asura-utils/io/binding/_file.cpp
index 2de7882..c44bc90 100644
--- a/source/modules/asura-utils/io/binding/_file.cpp
+++ b/source/modules/asura-utils/io/binding/_file.cpp
@@ -186,7 +186,7 @@ namespace AsuraEngine
LUAX_PREPARE(L, File);
size_t size = 0;
- BufferMode mode = self->GetBuffer(asura_out size);
+ BufferMode mode = self->GetBuffer(ASURA_OUT size);
state.Push((int)size);
state.Push((int)mode);
return 2;
diff --git a/source/modules/asura-utils/io/binding/_file_system.cpp b/source/modules/asura-utils/io/binding/_file_system.cpp
index 2efc4f6..3843451 100644
--- a/source/modules/asura-utils/io/binding/_file_system.cpp
+++ b/source/modules/asura-utils/io/binding/_file_system.cpp
@@ -113,7 +113,7 @@ namespace AsuraEngine
cc8* path = state.CheckValue<cc8*>(1);
std::string mp;
- if (fs->GetMountPoint(path, asura_out mp))
+ if (fs->GetMountPoint(path, ASURA_OUT mp))
state.Push(mp);
else
state.PushNil();
@@ -246,7 +246,7 @@ namespace AsuraEngine
cc8* path = state.CheckValue<cc8*>(1);
std::vector<std::string> items;
- if(fs->GetDirectoryItems(path, asura_out items))
+ if(fs->GetDirectoryItems(path, ASURA_OUT items))
{
lua_newtable(L); // item list
for (int i = 0; i < items.size(); ++i)
diff --git a/source/modules/asura-utils/io/decoded_data.h b/source/modules/asura-utils/io/decoded_data.h
index 724dbac..882556c 100644
--- a/source/modules/asura-utils/io/decoded_data.h
+++ b/source/modules/asura-utils/io/decoded_data.h
@@ -2,6 +2,7 @@
#define __ASURA_ENGINE_DATA_H__
#include <cstdlib>
+
#include <asura-utils/threading/thread.h>
#include "../scripting/portable.hpp"
diff --git a/source/modules/asura-utils/io/file.cpp b/source/modules/asura-utils/io/file.cpp
index 690f405..9e89c85 100644
--- a/source/modules/asura-utils/io/file.cpp
+++ b/source/modules/asura-utils/io/file.cpp
@@ -118,7 +118,7 @@ namespace AsuraEngine
return PHYSFS_fileLength(mFileHandle);
}
- size_t File::Read(asura_out DataBuffer* dst, size_t length)
+ size_t File::Read(ASURA_OUT DataBuffer* dst, size_t length)
{
ASSERT(dst);
@@ -140,7 +140,7 @@ namespace AsuraEngine
return size;
}
- size_t File::ReadAll(asura_out DataBuffer* dst)
+ size_t File::ReadAll(ASURA_OUT DataBuffer* dst)
{
ASSERT(dst);
@@ -192,7 +192,7 @@ namespace AsuraEngine
return mFileHandle != nullptr && PHYSFS_seek(mFileHandle, pos) != 0;
}
- bool File::Write(asura_ref DataBuffer* src)
+ bool File::Write(ASURA_REF DataBuffer* src)
{
if (!mFileHandle || (mMode != FILE_MODE_APPEND && mMode != FILE_MODE_WRITE))
throw Exception("File is not opened for writing.");
@@ -264,7 +264,7 @@ namespace AsuraEngine
return true;
}
- File::BufferMode File::GetBuffer(asura_out size_t& size)
+ File::BufferMode File::GetBuffer(ASURA_OUT size_t& size)
{
size = mBufferSize;
return mBufferMode;
diff --git a/source/modules/asura-utils/io/file.h b/source/modules/asura-utils/io/file.h
index 9af8919..56077e0 100644
--- a/source/modules/asura-utils/io/file.h
+++ b/source/modules/asura-utils/io/file.h
@@ -57,9 +57,9 @@ namespace AsuraEngine
///
/// ȡdata bufferض
///
- size_t Read(asura_out DataBuffer* dst, size_t length);
- size_t ReadAll(asura_out DataBuffer* dst);
- size_t ReadAsync(asura_out DataBuffer* dst);
+ size_t Read(ASURA_OUT DataBuffer* dst, size_t length);
+ size_t ReadAll(ASURA_OUT DataBuffer* dst);
+ size_t ReadAsync(ASURA_OUT DataBuffer* dst);
///
/// Ƿļβ
@@ -69,12 +69,12 @@ namespace AsuraEngine
///
/// data bufferед룬Ƿɹ
///
- bool Write(asura_ref DataBuffer* src);
+ bool Write(ASURA_REF DataBuffer* src);
///
/// 첽дļдļtaskthreadĶС
///
- bool WriteAsync(asura_ref DataBuffer* src, AEThreading::Thread* thread);
+ bool WriteAsync(ASURA_REF DataBuffer* src, AEThreading::Thread* thread);
///
/// ˻壬ǿջдļ
@@ -99,7 +99,7 @@ namespace AsuraEngine
///
/// ȡСģʽ
///
- BufferMode GetBuffer(asura_out size_t& size);
+ BufferMode GetBuffer(ASURA_OUT size_t& size);
const std::string& GetFileName();
const std::string& GetName();
diff --git a/source/modules/asura-utils/io/file_data.h b/source/modules/asura-utils/io/file_data.h
index f5a6085..cd69477 100644
--- a/source/modules/asura-utils/io/file_data.h
+++ b/source/modules/asura-utils/io/file_data.h
@@ -49,7 +49,7 @@ namespace AsuraEngine
///
/// Data bufferfiledataʱ٣luaüΪ0ʱluaGC١mDataʱһԱá
///
- asura_ref DataBuffer* mData;
+ ASURA_REF DataBuffer* mData;
Luax::LuaxMemberRef mDataRef;
std::string mFileName; ///< չļ
diff --git a/source/modules/asura-utils/io/file_system.cpp b/source/modules/asura-utils/io/file_system.cpp
index 30e7861..20f3cb2 100644
--- a/source/modules/asura-utils/io/file_system.cpp
+++ b/source/modules/asura-utils/io/file_system.cpp
@@ -83,7 +83,7 @@ namespace AsuraEngine
}
}
- bool Filesystem::GetMountPoint(const std::string& locpath, asura_out std::string& mountpoint)
+ bool Filesystem::GetMountPoint(const std::string& locpath, ASURA_OUT std::string& mountpoint)
{
if (!mInited)
return false;
@@ -125,7 +125,7 @@ namespace AsuraEngine
return true;
}
- bool Filesystem::Write(const std::string& name, asura_ref DataBuffer* buffer)
+ bool Filesystem::Write(const std::string& name, ASURA_REF DataBuffer* buffer)
{
File file(name);
file.Open(File::FILE_MODE_WRITE);
@@ -133,7 +133,7 @@ namespace AsuraEngine
throw Exception("Data could not be written.");
}
- bool Filesystem::Append(const std::string& name, asura_ref DataBuffer* buffer)
+ bool Filesystem::Append(const std::string& name, ASURA_REF DataBuffer* buffer)
{
File file(name);
file.Open(File::FILE_MODE_APPEND);
@@ -170,7 +170,7 @@ namespace AsuraEngine
return true;
}
- bool Filesystem::GetFileInfo(const std::string& filepath, asura_out FileInfo* info)
+ bool Filesystem::GetFileInfo(const std::string& filepath, ASURA_OUT FileInfo* info)
{
if (!mInited)
return false;
diff --git a/source/modules/asura-utils/io/file_system.h b/source/modules/asura-utils/io/file_system.h
index 3a33504..849cbb6 100644
--- a/source/modules/asura-utils/io/file_system.h
+++ b/source/modules/asura-utils/io/file_system.h
@@ -59,20 +59,20 @@ namespace AsuraEngine
bool Unmount(const std::string& locpath);
bool Unmount(DataBuffer* db);
- bool GetMountPoint(const std::string& locpath, asura_out std::string& mountpoint);
+ bool GetMountPoint(const std::string& locpath, ASURA_OUT std::string& mountpoint);
void SetWriteDirectory(const std::string locpath);
std::string GetWriteDirectory();
File* NewFile(const std::string& name);
bool NewDirectory(const std::string& path);
- bool Write(const std::string& path, asura_ref DataBuffer* buffer);
- bool Append(const std::string& path, asura_ref DataBuffer* buffer);
+ bool Write(const std::string& path, ASURA_REF DataBuffer* buffer);
+ bool Append(const std::string& path, ASURA_REF DataBuffer* buffer);
bool Remove(const std::string& path);
FileData* Read(const std::string& path);
- bool GetFileInfo(const std::string& path, asura_out FileInfo* info);
+ bool GetFileInfo(const std::string& path, ASURA_OUT FileInfo* info);
- bool GetDirectoryItems(const std::string& path, asura_out std::vector<std::string>& items) { return false; };
+ bool GetDirectoryItems(const std::string& path, ASURA_OUT std::vector<std::string>& items) { return false; };
private:
diff --git a/source/modules/asura-utils/io/renewable.h b/source/modules/asura-utils/io/renewable.h
index 4d047ea..fd6c638 100644
--- a/source/modules/asura-utils/io/renewable.h
+++ b/source/modules/asura-utils/io/renewable.h
@@ -19,15 +19,6 @@ namespace AsuraEngine
public:
Renewable() {};
virtual ~Renewable() {};
-
- ///
- /// ̳RenewableҪṩһUpdate
- ///
- /// Effective C++09.Ӧýֹڹ캯еvirtualUpdate
- /// ӹ캯г룬ҪֶUpdate
- ///
- virtual bool Update(AEIO::DecodedData* decode_data) = 0;
-
};
}
diff --git a/source/modules/asura-utils/math/matrix44.h b/source/modules/asura-utils/math/matrix44.h
index fa5be33..9ff0288 100644
--- a/source/modules/asura-utils/math/matrix44.h
+++ b/source/modules/asura-utils/math/matrix44.h
@@ -1,6 +1,8 @@
#ifndef __ASURA_MATRIX_H__
#define __ASURA_MATRIX_H__
+#include "../scripting/portable.hpp"
+
namespace AsuraEngine
{
namespace Math
diff --git a/source/modules/asura-utils/scripting/portable.hpp b/source/modules/asura-utils/scripting/portable.hpp
index 1c05163..cb8e2eb 100644
--- a/source/modules/asura-utils/scripting/portable.hpp
+++ b/source/modules/asura-utils/scripting/portable.hpp
@@ -20,7 +20,8 @@ namespace AsuraEngine
using Object = Luax::LuaxObject;
///
- /// ҪעluanativeҪ̳дģ塣
+ /// ҪעluanativeҪ̳дģ塣BASEָ࣬ĬLuaxObjectָ
+ /// LuaxObjectࡢ
///
template<typename TYPE, typename BASE = Luax::LuaxObject>
using Portable = Luax::LuaxNativeClass<TYPE, BASE>;
diff --git a/source/modules/asura-utils/type.h b/source/modules/asura-utils/type.h
index 738c4f1..f760205 100644
--- a/source/modules/asura-utils/type.h
+++ b/source/modules/asura-utils/type.h
@@ -82,10 +82,10 @@ namespace AsuraEngine
//--------------------------------------------------------------------------------//
// չؼ
-#define asura_throw(ex) throw(ex) // ʾ׳쳣
+#define ASURA_THROW(ex) throw(ex) // ʾ׳쳣
-#define asura_out
-#define asura_ref
+#define ASURA_OUT
+#define ASURA_REF
} // namespace AsuraEngine
diff --git a/source/tests/win32/01-window/03_sub_menu.cpp b/source/tests/win32/01-window/03_sub_menu.cpp
index 24b9654..091db6d 100644
--- a/source/tests/win32/01-window/03_sub_menu.cpp
+++ b/source/tests/win32/01-window/03_sub_menu.cpp
@@ -20,6 +20,8 @@ void AddMenus(HWND);
#define IDM_ASSET 20
+HWND wnd;
+
int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PWSTR lpCmdLine, int nCmdShow)
{
@@ -32,9 +34,9 @@ int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PWSTR lpCmdLin
wc.hbrBackground = GetSysColorBrush(COLOR_3DFACE);
wc.lpfnWndProc = WndProc;
wc.hCursor = LoadCursor(0, IDC_ARROW);
-
RegisterClassW(&wc);
- CreateWindowW(wc.lpszClassName, L"Asura v0.1",
+
+ wnd = CreateWindowW(wc.lpszClassName, L"Asura v0.1",
WS_OVERLAPPEDWINDOW | WS_VISIBLE,
200, 200, 550, 450, 0, 0, hInstance, 0);
@@ -104,14 +106,14 @@ LRESULT CALLBACK WndProc(HWND hwnd, UINT msg,
imgdata->Decode(db);
img = new Image();
- img->Update(imgdata);
+ img->Load(imgdata);
wglMakeCurrent(hdc, glc);
file2 = new File("root/img.png");
file2->Open(File::FILE_MODE_READ);
file2->ReadAll(&db);
imgdata->Decode(db);
- img->Update(imgdata, {50, 100});
+ img->Load(imgdata, {50, 100});
imgdata->Release();
break;
@@ -121,7 +123,7 @@ LRESULT CALLBACK WndProc(HWND hwnd, UINT msg,
switch (LOWORD(wParam)) {
case IDM_FILE_NEW:
- MessageBoxW(NULL, L"New file selected",
+ MessageBoxW(wnd, L"New file selected",
L"Information", MB_OK);
break;