diff options
author | chai <chaifix@163.com> | 2019-03-29 22:28:40 +0800 |
---|---|---|
committer | chai <chaifix@163.com> | 2019-03-29 22:28:40 +0800 |
commit | 157530b8b6e11efc5573d5a0db8987a440197aa1 (patch) | |
tree | f9df79c013885e13dc81e7046c9828037eb29e2e | |
parent | e37b1dfd022bda4dfdcba243c0543c62c89db32f (diff) |
*misc
67 files changed, 1169 insertions, 393 deletions
diff --git a/Build/Asura.Editor/Asura.Editor.vcxproj b/Build/Asura.Editor/Asura.Editor.vcxproj index 892c3e3..7886653 100644 --- a/Build/Asura.Editor/Asura.Editor.vcxproj +++ b/Build/Asura.Editor/Asura.Editor.vcxproj @@ -117,25 +117,36 @@ </Link> </ItemDefinitionGroup> <ItemGroup> + <ClCompile Include="..\..\source\Asura.Editor\controls\binding\_button.cpp" /> + <ClCompile Include="..\..\source\Asura.Editor\controls\button.cpp" /> + <ClCompile Include="..\..\source\Asura.Editor\controls\checkbox.cpp" /> + <ClCompile Include="..\..\source\Asura.Editor\controls\hslider.cpp" /> + <ClCompile Include="..\..\source\Asura.Editor\controls\hvslider.cpp" /> + <ClCompile Include="..\..\source\Asura.Editor\controls\label.cpp" /> + <ClCompile Include="..\..\source\Asura.Editor\controls\panel.cpp" /> + <ClCompile Include="..\..\source\Asura.Editor\controls\progress.cpp" /> + <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\widgets\binding\_button.cpp" /> - <ClCompile Include="..\..\source\Asura.Editor\widgets\button.cpp" /> - <ClCompile Include="..\..\source\Asura.Editor\widgets\checkbox.cpp" /> - <ClCompile Include="..\..\source\Asura.Editor\widgets\hslider.cpp" /> - <ClCompile Include="..\..\source\Asura.Editor\widgets\hvslider.cpp" /> - <ClCompile Include="..\..\source\Asura.Editor\widgets\label.cpp" /> - <ClCompile Include="..\..\source\Asura.Editor\widgets\panel.cpp" /> - <ClCompile Include="..\..\source\Asura.Editor\widgets\progress.cpp" /> - <ClCompile Include="..\..\source\Asura.Editor\widgets\radio_button.cpp" /> - <ClCompile Include="..\..\source\Asura.Editor\widgets\textbox.cpp" /> - <ClCompile Include="..\..\source\Asura.Editor\widgets\vslider.cpp" /> </ItemGroup> <ItemGroup> + <ClInclude Include="..\..\source\Asura.Editor\controls\button.h" /> + <ClInclude Include="..\..\source\Asura.Editor\controls\checkbox.h" /> + <ClInclude Include="..\..\source\Asura.Editor\controls\hslider.h" /> + <ClInclude Include="..\..\source\Asura.Editor\controls\hvslider.h" /> + <ClInclude Include="..\..\source\Asura.Editor\controls\label.h" /> + <ClInclude Include="..\..\source\Asura.Editor\controls\panel.h" /> + <ClInclude Include="..\..\source\Asura.Editor\controls\progress.h" /> + <ClInclude Include="..\..\source\Asura.Editor\controls\radio_button.h" /> + <ClInclude Include="..\..\source\Asura.Editor\controls\textbox.h" /> + <ClInclude Include="..\..\source\Asura.Editor\controls\vslider.h" /> + <ClInclude Include="..\..\source\Asura.Editor\controls\widget.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" /> @@ -143,17 +154,6 @@ <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\widgets\button.h" /> - <ClInclude Include="..\..\source\Asura.Editor\widgets\checkbox.h" /> - <ClInclude Include="..\..\source\Asura.Editor\widgets\hslider.h" /> - <ClInclude Include="..\..\source\Asura.Editor\widgets\hvslider.h" /> - <ClInclude Include="..\..\source\Asura.Editor\widgets\label.h" /> - <ClInclude Include="..\..\source\Asura.Editor\widgets\panel.h" /> - <ClInclude Include="..\..\source\Asura.Editor\widgets\progress.h" /> - <ClInclude Include="..\..\source\Asura.Editor\widgets\radio_button.h" /> - <ClInclude Include="..\..\source\Asura.Editor\widgets\textbox.h" /> - <ClInclude Include="..\..\source\Asura.Editor\widgets\vslider.h" /> - <ClInclude Include="..\..\source\Asura.Editor\widgets\widget.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 940a465..937f9a2 100644 --- a/Build/Asura.Editor/Asura.Editor.vcxproj.filters +++ b/Build/Asura.Editor/Asura.Editor.vcxproj.filters @@ -1,109 +1,76 @@ <?xml version="1.0" encoding="utf-8"?> <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <ItemGroup> - <Filter Include="widgets"> - <UniqueIdentifier>{a4345092-d09c-424c-8d7c-c076914fb6a2}</UniqueIdentifier> - </Filter> <Filter Include="layout"> <UniqueIdentifier>{7654ef3d-54c4-490f-bb24-e6a67bd63e1e}</UniqueIdentifier> </Filter> <Filter Include="core"> <UniqueIdentifier>{f67906bd-4f7c-4ac6-bca1-019617435a8b}</UniqueIdentifier> </Filter> - <Filter Include="widgets\binding"> - <UniqueIdentifier>{4be11763-e2f9-47a4-8947-5326a517e286}</UniqueIdentifier> - </Filter> <Filter Include="system"> <UniqueIdentifier>{48600309-cddd-49cd-b939-7a19a2b1eaa3}</UniqueIdentifier> </Filter> + <Filter Include="controls"> + <UniqueIdentifier>{a4345092-d09c-424c-8d7c-c076914fb6a2}</UniqueIdentifier> + </Filter> + <Filter Include="controls\binding"> + <UniqueIdentifier>{1e378398-d7f0-4616-a986-b6a86faeaa8c}</UniqueIdentifier> + </Filter> </ItemGroup> <ItemGroup> - <ClCompile Include="..\..\source\Asura.Editor\widgets\button.cpp"> - <Filter>widgets</Filter> + <ClCompile Include="..\..\source\Asura.Editor\layout\horizontal_layout.cpp"> + <Filter>layout</Filter> </ClCompile> - <ClCompile Include="..\..\source\Asura.Editor\widgets\checkbox.cpp"> - <Filter>widgets</Filter> + <ClCompile Include="..\..\source\Asura.Editor\layout\vertical_layout.cpp"> + <Filter>layout</Filter> </ClCompile> - <ClCompile Include="..\..\source\Asura.Editor\widgets\hslider.cpp"> - <Filter>widgets</Filter> + <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> - <ClCompile Include="..\..\source\Asura.Editor\widgets\hvslider.cpp"> - <Filter>widgets</Filter> + <ClCompile Include="..\..\source\Asura.Editor\controls\button.cpp"> + <Filter>controls</Filter> </ClCompile> - <ClCompile Include="..\..\source\Asura.Editor\widgets\label.cpp"> - <Filter>widgets</Filter> + <ClCompile Include="..\..\source\Asura.Editor\controls\checkbox.cpp"> + <Filter>controls</Filter> </ClCompile> - <ClCompile Include="..\..\source\Asura.Editor\widgets\panel.cpp"> - <Filter>widgets</Filter> + <ClCompile Include="..\..\source\Asura.Editor\controls\hslider.cpp"> + <Filter>controls</Filter> </ClCompile> - <ClCompile Include="..\..\source\Asura.Editor\widgets\textbox.cpp"> - <Filter>widgets</Filter> + <ClCompile Include="..\..\source\Asura.Editor\controls\hvslider.cpp"> + <Filter>controls</Filter> </ClCompile> - <ClCompile Include="..\..\source\Asura.Editor\widgets\vslider.cpp"> - <Filter>widgets</Filter> + <ClCompile Include="..\..\source\Asura.Editor\controls\label.cpp"> + <Filter>controls</Filter> </ClCompile> - <ClCompile Include="..\..\source\Asura.Editor\widgets\progress.cpp"> - <Filter>widgets</Filter> + <ClCompile Include="..\..\source\Asura.Editor\controls\panel.cpp"> + <Filter>controls</Filter> </ClCompile> - <ClCompile Include="..\..\source\Asura.Editor\layout\horizontal_layout.cpp"> - <Filter>layout</Filter> + <ClCompile Include="..\..\source\Asura.Editor\controls\progress.cpp"> + <Filter>controls</Filter> </ClCompile> - <ClCompile Include="..\..\source\Asura.Editor\layout\vertical_layout.cpp"> - <Filter>layout</Filter> + <ClCompile Include="..\..\source\Asura.Editor\controls\radio_button.cpp"> + <Filter>controls</Filter> </ClCompile> - <ClCompile Include="..\..\source\Asura.Editor\widgets\radio_button.cpp"> - <Filter>widgets</Filter> + <ClCompile Include="..\..\source\Asura.Editor\controls\textbox.cpp"> + <Filter>controls</Filter> </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\widgets\binding\_button.cpp"> - <Filter>widgets\binding</Filter> + <ClCompile Include="..\..\source\Asura.Editor\controls\vslider.cpp"> + <Filter>controls</Filter> </ClCompile> - <ClCompile Include="..\..\source\Asura.Editor\system\file_watcher.cpp"> - <Filter>system</Filter> + <ClCompile Include="..\..\source\Asura.Editor\controls\binding\_button.cpp"> + <Filter>controls\binding</Filter> </ClCompile> </ItemGroup> <ItemGroup> - <ClInclude Include="..\..\source\Asura.Editor\widgets\button.h"> - <Filter>widgets</Filter> - </ClInclude> - <ClInclude Include="..\..\source\Asura.Editor\widgets\checkbox.h"> - <Filter>widgets</Filter> - </ClInclude> - <ClInclude Include="..\..\source\Asura.Editor\widgets\hslider.h"> - <Filter>widgets</Filter> - </ClInclude> - <ClInclude Include="..\..\source\Asura.Editor\widgets\hvslider.h"> - <Filter>widgets</Filter> - </ClInclude> - <ClInclude Include="..\..\source\Asura.Editor\widgets\label.h"> - <Filter>widgets</Filter> - </ClInclude> - <ClInclude Include="..\..\source\Asura.Editor\widgets\panel.h"> - <Filter>widgets</Filter> - </ClInclude> - <ClInclude Include="..\..\source\Asura.Editor\widgets\textbox.h"> - <Filter>widgets</Filter> - </ClInclude> - <ClInclude Include="..\..\source\Asura.Editor\widgets\vslider.h"> - <Filter>widgets</Filter> - </ClInclude> - <ClInclude Include="..\..\source\Asura.Editor\widgets\widget.h"> - <Filter>widgets</Filter> - </ClInclude> - <ClInclude Include="..\..\source\Asura.Editor\widgets\progress.h"> - <Filter>widgets</Filter> - </ClInclude> <ClInclude Include="..\..\source\Asura.Editor\layout\horizontal_layout.h"> <Filter>layout</Filter> </ClInclude> <ClInclude Include="..\..\source\Asura.Editor\layout\vertical_layout.h"> <Filter>layout</Filter> </ClInclude> - <ClInclude Include="..\..\source\Asura.Editor\widgets\radio_button.h"> - <Filter>widgets</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"> @@ -115,5 +82,38 @@ <ClInclude Include="..\..\source\Asura.Editor\system\file_watcher.h"> <Filter>system</Filter> </ClInclude> + <ClInclude Include="..\..\source\Asura.Editor\controls\button.h"> + <Filter>controls</Filter> + </ClInclude> + <ClInclude Include="..\..\source\Asura.Editor\controls\checkbox.h"> + <Filter>controls</Filter> + </ClInclude> + <ClInclude Include="..\..\source\Asura.Editor\controls\hslider.h"> + <Filter>controls</Filter> + </ClInclude> + <ClInclude Include="..\..\source\Asura.Editor\controls\hvslider.h"> + <Filter>controls</Filter> + </ClInclude> + <ClInclude Include="..\..\source\Asura.Editor\controls\label.h"> + <Filter>controls</Filter> + </ClInclude> + <ClInclude Include="..\..\source\Asura.Editor\controls\panel.h"> + <Filter>controls</Filter> + </ClInclude> + <ClInclude Include="..\..\source\Asura.Editor\controls\progress.h"> + <Filter>controls</Filter> + </ClInclude> + <ClInclude Include="..\..\source\Asura.Editor\controls\radio_button.h"> + <Filter>controls</Filter> + </ClInclude> + <ClInclude Include="..\..\source\Asura.Editor\controls\textbox.h"> + <Filter>controls</Filter> + </ClInclude> + <ClInclude Include="..\..\source\Asura.Editor\controls\vslider.h"> + <Filter>controls</Filter> + </ClInclude> + <ClInclude Include="..\..\source\Asura.Editor\controls\widget.h"> + <Filter>controls</Filter> + </ClInclude> </ItemGroup> </Project>
\ No newline at end of file diff --git a/Build/Asura.sln b/Build/Asura.sln index 66cb6d4..779d30e 100644 --- a/Build/Asura.sln +++ b/Build/Asura.sln @@ -75,8 +75,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "asura-lib-json", "libs\asur EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "asura-lib-xml", "libs\asura-lib-xml\asura-lib-xml.vcxproj", "{AB4F8F4A-73B5-4EFF-BD5D-448A3E39C60A}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "asura-lib-log", "libs\asura-lib-log\asura-lib-log.vcxproj", "{73B0F8AB-EF5A-412A-9E34-0FD2574766B7}" -EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Preprocessor", "Preprocessor\Preprocessor.vcxproj", "{983F6496-7BB2-48E3-B8F4-68C2600EA315}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "asura-lib-steam", "libs\asura-lib-steam\asura-lib-steam.vcxproj", "{129C3826-B418-4C80-A126-0319C7E2A857}" @@ -101,6 +99,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Plotscript", "3rd-party\Plo EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "uuid4", "3rd-party\uuid4\uuid4.vcxproj", "{49F7847E-219E-4A7B-8484-2A33DAC29DD0}" EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "asura-lib-plot", "libs\asura-lib-plot\asura-lib-plot.vcxproj", "{F248C936-2169-45DF-8FC4-60E56EA23ECC}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -441,16 +441,6 @@ Global {AB4F8F4A-73B5-4EFF-BD5D-448A3E39C60A}.Release|x64.Build.0 = Release|x64 {AB4F8F4A-73B5-4EFF-BD5D-448A3E39C60A}.Release|x86.ActiveCfg = Release|Win32 {AB4F8F4A-73B5-4EFF-BD5D-448A3E39C60A}.Release|x86.Build.0 = Release|Win32 - {73B0F8AB-EF5A-412A-9E34-0FD2574766B7}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {73B0F8AB-EF5A-412A-9E34-0FD2574766B7}.Debug|x64.ActiveCfg = Debug|x64 - {73B0F8AB-EF5A-412A-9E34-0FD2574766B7}.Debug|x64.Build.0 = Debug|x64 - {73B0F8AB-EF5A-412A-9E34-0FD2574766B7}.Debug|x86.ActiveCfg = Debug|Win32 - {73B0F8AB-EF5A-412A-9E34-0FD2574766B7}.Debug|x86.Build.0 = Debug|Win32 - {73B0F8AB-EF5A-412A-9E34-0FD2574766B7}.Release|Any CPU.ActiveCfg = Release|Win32 - {73B0F8AB-EF5A-412A-9E34-0FD2574766B7}.Release|x64.ActiveCfg = Release|x64 - {73B0F8AB-EF5A-412A-9E34-0FD2574766B7}.Release|x64.Build.0 = Release|x64 - {73B0F8AB-EF5A-412A-9E34-0FD2574766B7}.Release|x86.ActiveCfg = Release|Win32 - {73B0F8AB-EF5A-412A-9E34-0FD2574766B7}.Release|x86.Build.0 = Release|Win32 {983F6496-7BB2-48E3-B8F4-68C2600EA315}.Debug|Any CPU.ActiveCfg = Debug|Win32 {983F6496-7BB2-48E3-B8F4-68C2600EA315}.Debug|x64.ActiveCfg = Debug|x64 {983F6496-7BB2-48E3-B8F4-68C2600EA315}.Debug|x64.Build.0 = Debug|x64 @@ -563,6 +553,16 @@ Global {49F7847E-219E-4A7B-8484-2A33DAC29DD0}.Release|x64.Build.0 = Release|x64 {49F7847E-219E-4A7B-8484-2A33DAC29DD0}.Release|x86.ActiveCfg = Release|Win32 {49F7847E-219E-4A7B-8484-2A33DAC29DD0}.Release|x86.Build.0 = Release|Win32 + {F248C936-2169-45DF-8FC4-60E56EA23ECC}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {F248C936-2169-45DF-8FC4-60E56EA23ECC}.Debug|x64.ActiveCfg = Debug|x64 + {F248C936-2169-45DF-8FC4-60E56EA23ECC}.Debug|x64.Build.0 = Debug|x64 + {F248C936-2169-45DF-8FC4-60E56EA23ECC}.Debug|x86.ActiveCfg = Debug|Win32 + {F248C936-2169-45DF-8FC4-60E56EA23ECC}.Debug|x86.Build.0 = Debug|Win32 + {F248C936-2169-45DF-8FC4-60E56EA23ECC}.Release|Any CPU.ActiveCfg = Release|Win32 + {F248C936-2169-45DF-8FC4-60E56EA23ECC}.Release|x64.ActiveCfg = Release|x64 + {F248C936-2169-45DF-8FC4-60E56EA23ECC}.Release|x64.Build.0 = Release|x64 + {F248C936-2169-45DF-8FC4-60E56EA23ECC}.Release|x86.ActiveCfg = Release|Win32 + {F248C936-2169-45DF-8FC4-60E56EA23ECC}.Release|x86.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -596,7 +596,6 @@ Global {38090AEB-3AA9-489B-BBEC-0CEDF9EAC0DE} = {E068D138-C824-4365-B5A3-27C65E8FD0B5} {1B83A353-9694-42E0-997E-79E150E1C2E5} = {CD115016-E377-4AC1-8595-DB2836CEFE7E} {AB4F8F4A-73B5-4EFF-BD5D-448A3E39C60A} = {CD115016-E377-4AC1-8595-DB2836CEFE7E} - {73B0F8AB-EF5A-412A-9E34-0FD2574766B7} = {CD115016-E377-4AC1-8595-DB2836CEFE7E} {129C3826-B418-4C80-A126-0319C7E2A857} = {CD115016-E377-4AC1-8595-DB2836CEFE7E} {5BECAAB3-9C80-4A62-99BB-E48F4667D9CD} = {E068D138-C824-4365-B5A3-27C65E8FD0B5} {95CAC424-D558-43D0-88B0-C67AF1C4EE90} = {25C8D2F8-989B-4742-859D-E2FDBB14EC2F} @@ -607,6 +606,7 @@ Global {E15D111A-9E02-4E0D-86FE-62BFCD3C211E} = {64D4E4B2-4A60-46F4-A500-370EFED4524F} {2822F737-EEFA-4C74-872C-1EE0793E2221} = {64D4E4B2-4A60-46F4-A500-370EFED4524F} {49F7847E-219E-4A7B-8484-2A33DAC29DD0} = {64D4E4B2-4A60-46F4-A500-370EFED4524F} + {F248C936-2169-45DF-8FC4-60E56EA23ECC} = {CD115016-E377-4AC1-8595-DB2836CEFE7E} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {331032D8-F7CC-43E3-A03B-67108767F96B} diff --git a/bin/win64/05-physfs.exe b/bin/win64/05-physfs.exe Binary files differindex 60d2c69..48b20fa 100644 --- a/bin/win64/05-physfs.exe +++ b/bin/win64/05-physfs.exe diff --git a/build/3rd-party/Luax/Luax.vcxproj b/build/3rd-party/Luax/Luax.vcxproj index 525ba06..5ceb5b4 100644 --- a/build/3rd-party/Luax/Luax.vcxproj +++ b/build/3rd-party/Luax/Luax.vcxproj @@ -126,6 +126,8 @@ <ClInclude Include="..\..\..\Source\3rd-party\Luax\luax_cfunctions.h" /> <ClInclude Include="..\..\..\Source\3rd-party\Luax\luax_class.hpp" /> <ClInclude Include="..\..\..\Source\3rd-party\Luax\luax_config.h" /> + <ClInclude Include="..\..\..\source\3rd-party\Luax\luax_globalstate.h" /> + <ClInclude Include="..\..\..\source\3rd-party\Luax\luax_internal.h" /> <ClInclude Include="..\..\..\Source\3rd-party\Luax\luax_vm.h" /> <ClInclude Include="..\..\..\Source\3rd-party\Luax\luax_enum.h" /> <ClInclude Include="..\..\..\Source\3rd-party\Luax\luax_memberref.h" /> diff --git a/build/3rd-party/Luax/Luax.vcxproj.filters b/build/3rd-party/Luax/Luax.vcxproj.filters index c2e6625..560e79a 100644 --- a/build/3rd-party/Luax/Luax.vcxproj.filters +++ b/build/3rd-party/Luax/Luax.vcxproj.filters @@ -11,6 +11,8 @@ <ClInclude Include="..\..\..\Source\3rd-party\Luax\luax_cfunctions.h" /> <ClInclude Include="..\..\..\Source\3rd-party\Luax\luax_memberref.h" /> <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" /> </ItemGroup> <ItemGroup> <ClCompile Include="..\..\..\Source\3rd-party\Luax\luax_ref.cpp" /> diff --git a/build/3rd-party/Plotscript/Plotscript.vcxproj b/build/3rd-party/Plotscript/Plotscript.vcxproj index a0efb92..d3e1e8a 100644 --- a/build/3rd-party/Plotscript/Plotscript.vcxproj +++ b/build/3rd-party/Plotscript/Plotscript.vcxproj @@ -23,6 +23,7 @@ <ProjectGuid>{2822F737-EEFA-4C74-872C-1EE0793E2221}</ProjectGuid> <RootNamespace>Plotscript</RootNamespace> <WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion> + <ProjectName>plotscript</ProjectName> </PropertyGroup> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> diff --git a/build/Asura.Editor/Asura.Editor.vcxproj b/build/Asura.Editor/Asura.Editor.vcxproj index 892c3e3..7886653 100644 --- a/build/Asura.Editor/Asura.Editor.vcxproj +++ b/build/Asura.Editor/Asura.Editor.vcxproj @@ -117,25 +117,36 @@ </Link> </ItemDefinitionGroup> <ItemGroup> + <ClCompile Include="..\..\source\Asura.Editor\controls\binding\_button.cpp" /> + <ClCompile Include="..\..\source\Asura.Editor\controls\button.cpp" /> + <ClCompile Include="..\..\source\Asura.Editor\controls\checkbox.cpp" /> + <ClCompile Include="..\..\source\Asura.Editor\controls\hslider.cpp" /> + <ClCompile Include="..\..\source\Asura.Editor\controls\hvslider.cpp" /> + <ClCompile Include="..\..\source\Asura.Editor\controls\label.cpp" /> + <ClCompile Include="..\..\source\Asura.Editor\controls\panel.cpp" /> + <ClCompile Include="..\..\source\Asura.Editor\controls\progress.cpp" /> + <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\widgets\binding\_button.cpp" /> - <ClCompile Include="..\..\source\Asura.Editor\widgets\button.cpp" /> - <ClCompile Include="..\..\source\Asura.Editor\widgets\checkbox.cpp" /> - <ClCompile Include="..\..\source\Asura.Editor\widgets\hslider.cpp" /> - <ClCompile Include="..\..\source\Asura.Editor\widgets\hvslider.cpp" /> - <ClCompile Include="..\..\source\Asura.Editor\widgets\label.cpp" /> - <ClCompile Include="..\..\source\Asura.Editor\widgets\panel.cpp" /> - <ClCompile Include="..\..\source\Asura.Editor\widgets\progress.cpp" /> - <ClCompile Include="..\..\source\Asura.Editor\widgets\radio_button.cpp" /> - <ClCompile Include="..\..\source\Asura.Editor\widgets\textbox.cpp" /> - <ClCompile Include="..\..\source\Asura.Editor\widgets\vslider.cpp" /> </ItemGroup> <ItemGroup> + <ClInclude Include="..\..\source\Asura.Editor\controls\button.h" /> + <ClInclude Include="..\..\source\Asura.Editor\controls\checkbox.h" /> + <ClInclude Include="..\..\source\Asura.Editor\controls\hslider.h" /> + <ClInclude Include="..\..\source\Asura.Editor\controls\hvslider.h" /> + <ClInclude Include="..\..\source\Asura.Editor\controls\label.h" /> + <ClInclude Include="..\..\source\Asura.Editor\controls\panel.h" /> + <ClInclude Include="..\..\source\Asura.Editor\controls\progress.h" /> + <ClInclude Include="..\..\source\Asura.Editor\controls\radio_button.h" /> + <ClInclude Include="..\..\source\Asura.Editor\controls\textbox.h" /> + <ClInclude Include="..\..\source\Asura.Editor\controls\vslider.h" /> + <ClInclude Include="..\..\source\Asura.Editor\controls\widget.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" /> @@ -143,17 +154,6 @@ <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\widgets\button.h" /> - <ClInclude Include="..\..\source\Asura.Editor\widgets\checkbox.h" /> - <ClInclude Include="..\..\source\Asura.Editor\widgets\hslider.h" /> - <ClInclude Include="..\..\source\Asura.Editor\widgets\hvslider.h" /> - <ClInclude Include="..\..\source\Asura.Editor\widgets\label.h" /> - <ClInclude Include="..\..\source\Asura.Editor\widgets\panel.h" /> - <ClInclude Include="..\..\source\Asura.Editor\widgets\progress.h" /> - <ClInclude Include="..\..\source\Asura.Editor\widgets\radio_button.h" /> - <ClInclude Include="..\..\source\Asura.Editor\widgets\textbox.h" /> - <ClInclude Include="..\..\source\Asura.Editor\widgets\vslider.h" /> - <ClInclude Include="..\..\source\Asura.Editor\widgets\widget.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 940a465..937f9a2 100644 --- a/build/Asura.Editor/Asura.Editor.vcxproj.filters +++ b/build/Asura.Editor/Asura.Editor.vcxproj.filters @@ -1,109 +1,76 @@ <?xml version="1.0" encoding="utf-8"?> <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <ItemGroup> - <Filter Include="widgets"> - <UniqueIdentifier>{a4345092-d09c-424c-8d7c-c076914fb6a2}</UniqueIdentifier> - </Filter> <Filter Include="layout"> <UniqueIdentifier>{7654ef3d-54c4-490f-bb24-e6a67bd63e1e}</UniqueIdentifier> </Filter> <Filter Include="core"> <UniqueIdentifier>{f67906bd-4f7c-4ac6-bca1-019617435a8b}</UniqueIdentifier> </Filter> - <Filter Include="widgets\binding"> - <UniqueIdentifier>{4be11763-e2f9-47a4-8947-5326a517e286}</UniqueIdentifier> - </Filter> <Filter Include="system"> <UniqueIdentifier>{48600309-cddd-49cd-b939-7a19a2b1eaa3}</UniqueIdentifier> </Filter> + <Filter Include="controls"> + <UniqueIdentifier>{a4345092-d09c-424c-8d7c-c076914fb6a2}</UniqueIdentifier> + </Filter> + <Filter Include="controls\binding"> + <UniqueIdentifier>{1e378398-d7f0-4616-a986-b6a86faeaa8c}</UniqueIdentifier> + </Filter> </ItemGroup> <ItemGroup> - <ClCompile Include="..\..\source\Asura.Editor\widgets\button.cpp"> - <Filter>widgets</Filter> + <ClCompile Include="..\..\source\Asura.Editor\layout\horizontal_layout.cpp"> + <Filter>layout</Filter> </ClCompile> - <ClCompile Include="..\..\source\Asura.Editor\widgets\checkbox.cpp"> - <Filter>widgets</Filter> + <ClCompile Include="..\..\source\Asura.Editor\layout\vertical_layout.cpp"> + <Filter>layout</Filter> </ClCompile> - <ClCompile Include="..\..\source\Asura.Editor\widgets\hslider.cpp"> - <Filter>widgets</Filter> + <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> - <ClCompile Include="..\..\source\Asura.Editor\widgets\hvslider.cpp"> - <Filter>widgets</Filter> + <ClCompile Include="..\..\source\Asura.Editor\controls\button.cpp"> + <Filter>controls</Filter> </ClCompile> - <ClCompile Include="..\..\source\Asura.Editor\widgets\label.cpp"> - <Filter>widgets</Filter> + <ClCompile Include="..\..\source\Asura.Editor\controls\checkbox.cpp"> + <Filter>controls</Filter> </ClCompile> - <ClCompile Include="..\..\source\Asura.Editor\widgets\panel.cpp"> - <Filter>widgets</Filter> + <ClCompile Include="..\..\source\Asura.Editor\controls\hslider.cpp"> + <Filter>controls</Filter> </ClCompile> - <ClCompile Include="..\..\source\Asura.Editor\widgets\textbox.cpp"> - <Filter>widgets</Filter> + <ClCompile Include="..\..\source\Asura.Editor\controls\hvslider.cpp"> + <Filter>controls</Filter> </ClCompile> - <ClCompile Include="..\..\source\Asura.Editor\widgets\vslider.cpp"> - <Filter>widgets</Filter> + <ClCompile Include="..\..\source\Asura.Editor\controls\label.cpp"> + <Filter>controls</Filter> </ClCompile> - <ClCompile Include="..\..\source\Asura.Editor\widgets\progress.cpp"> - <Filter>widgets</Filter> + <ClCompile Include="..\..\source\Asura.Editor\controls\panel.cpp"> + <Filter>controls</Filter> </ClCompile> - <ClCompile Include="..\..\source\Asura.Editor\layout\horizontal_layout.cpp"> - <Filter>layout</Filter> + <ClCompile Include="..\..\source\Asura.Editor\controls\progress.cpp"> + <Filter>controls</Filter> </ClCompile> - <ClCompile Include="..\..\source\Asura.Editor\layout\vertical_layout.cpp"> - <Filter>layout</Filter> + <ClCompile Include="..\..\source\Asura.Editor\controls\radio_button.cpp"> + <Filter>controls</Filter> </ClCompile> - <ClCompile Include="..\..\source\Asura.Editor\widgets\radio_button.cpp"> - <Filter>widgets</Filter> + <ClCompile Include="..\..\source\Asura.Editor\controls\textbox.cpp"> + <Filter>controls</Filter> </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\widgets\binding\_button.cpp"> - <Filter>widgets\binding</Filter> + <ClCompile Include="..\..\source\Asura.Editor\controls\vslider.cpp"> + <Filter>controls</Filter> </ClCompile> - <ClCompile Include="..\..\source\Asura.Editor\system\file_watcher.cpp"> - <Filter>system</Filter> + <ClCompile Include="..\..\source\Asura.Editor\controls\binding\_button.cpp"> + <Filter>controls\binding</Filter> </ClCompile> </ItemGroup> <ItemGroup> - <ClInclude Include="..\..\source\Asura.Editor\widgets\button.h"> - <Filter>widgets</Filter> - </ClInclude> - <ClInclude Include="..\..\source\Asura.Editor\widgets\checkbox.h"> - <Filter>widgets</Filter> - </ClInclude> - <ClInclude Include="..\..\source\Asura.Editor\widgets\hslider.h"> - <Filter>widgets</Filter> - </ClInclude> - <ClInclude Include="..\..\source\Asura.Editor\widgets\hvslider.h"> - <Filter>widgets</Filter> - </ClInclude> - <ClInclude Include="..\..\source\Asura.Editor\widgets\label.h"> - <Filter>widgets</Filter> - </ClInclude> - <ClInclude Include="..\..\source\Asura.Editor\widgets\panel.h"> - <Filter>widgets</Filter> - </ClInclude> - <ClInclude Include="..\..\source\Asura.Editor\widgets\textbox.h"> - <Filter>widgets</Filter> - </ClInclude> - <ClInclude Include="..\..\source\Asura.Editor\widgets\vslider.h"> - <Filter>widgets</Filter> - </ClInclude> - <ClInclude Include="..\..\source\Asura.Editor\widgets\widget.h"> - <Filter>widgets</Filter> - </ClInclude> - <ClInclude Include="..\..\source\Asura.Editor\widgets\progress.h"> - <Filter>widgets</Filter> - </ClInclude> <ClInclude Include="..\..\source\Asura.Editor\layout\horizontal_layout.h"> <Filter>layout</Filter> </ClInclude> <ClInclude Include="..\..\source\Asura.Editor\layout\vertical_layout.h"> <Filter>layout</Filter> </ClInclude> - <ClInclude Include="..\..\source\Asura.Editor\widgets\radio_button.h"> - <Filter>widgets</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"> @@ -115,5 +82,38 @@ <ClInclude Include="..\..\source\Asura.Editor\system\file_watcher.h"> <Filter>system</Filter> </ClInclude> + <ClInclude Include="..\..\source\Asura.Editor\controls\button.h"> + <Filter>controls</Filter> + </ClInclude> + <ClInclude Include="..\..\source\Asura.Editor\controls\checkbox.h"> + <Filter>controls</Filter> + </ClInclude> + <ClInclude Include="..\..\source\Asura.Editor\controls\hslider.h"> + <Filter>controls</Filter> + </ClInclude> + <ClInclude Include="..\..\source\Asura.Editor\controls\hvslider.h"> + <Filter>controls</Filter> + </ClInclude> + <ClInclude Include="..\..\source\Asura.Editor\controls\label.h"> + <Filter>controls</Filter> + </ClInclude> + <ClInclude Include="..\..\source\Asura.Editor\controls\panel.h"> + <Filter>controls</Filter> + </ClInclude> + <ClInclude Include="..\..\source\Asura.Editor\controls\progress.h"> + <Filter>controls</Filter> + </ClInclude> + <ClInclude Include="..\..\source\Asura.Editor\controls\radio_button.h"> + <Filter>controls</Filter> + </ClInclude> + <ClInclude Include="..\..\source\Asura.Editor\controls\textbox.h"> + <Filter>controls</Filter> + </ClInclude> + <ClInclude Include="..\..\source\Asura.Editor\controls\vslider.h"> + <Filter>controls</Filter> + </ClInclude> + <ClInclude Include="..\..\source\Asura.Editor\controls\widget.h"> + <Filter>controls</Filter> + </ClInclude> </ItemGroup> </Project>
\ No newline at end of file diff --git a/build/Asura.sln b/build/Asura.sln index 66cb6d4..779d30e 100644 --- a/build/Asura.sln +++ b/build/Asura.sln @@ -75,8 +75,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "asura-lib-json", "libs\asur EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "asura-lib-xml", "libs\asura-lib-xml\asura-lib-xml.vcxproj", "{AB4F8F4A-73B5-4EFF-BD5D-448A3E39C60A}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "asura-lib-log", "libs\asura-lib-log\asura-lib-log.vcxproj", "{73B0F8AB-EF5A-412A-9E34-0FD2574766B7}" -EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Preprocessor", "Preprocessor\Preprocessor.vcxproj", "{983F6496-7BB2-48E3-B8F4-68C2600EA315}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "asura-lib-steam", "libs\asura-lib-steam\asura-lib-steam.vcxproj", "{129C3826-B418-4C80-A126-0319C7E2A857}" @@ -101,6 +99,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Plotscript", "3rd-party\Plo EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "uuid4", "3rd-party\uuid4\uuid4.vcxproj", "{49F7847E-219E-4A7B-8484-2A33DAC29DD0}" EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "asura-lib-plot", "libs\asura-lib-plot\asura-lib-plot.vcxproj", "{F248C936-2169-45DF-8FC4-60E56EA23ECC}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -441,16 +441,6 @@ Global {AB4F8F4A-73B5-4EFF-BD5D-448A3E39C60A}.Release|x64.Build.0 = Release|x64 {AB4F8F4A-73B5-4EFF-BD5D-448A3E39C60A}.Release|x86.ActiveCfg = Release|Win32 {AB4F8F4A-73B5-4EFF-BD5D-448A3E39C60A}.Release|x86.Build.0 = Release|Win32 - {73B0F8AB-EF5A-412A-9E34-0FD2574766B7}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {73B0F8AB-EF5A-412A-9E34-0FD2574766B7}.Debug|x64.ActiveCfg = Debug|x64 - {73B0F8AB-EF5A-412A-9E34-0FD2574766B7}.Debug|x64.Build.0 = Debug|x64 - {73B0F8AB-EF5A-412A-9E34-0FD2574766B7}.Debug|x86.ActiveCfg = Debug|Win32 - {73B0F8AB-EF5A-412A-9E34-0FD2574766B7}.Debug|x86.Build.0 = Debug|Win32 - {73B0F8AB-EF5A-412A-9E34-0FD2574766B7}.Release|Any CPU.ActiveCfg = Release|Win32 - {73B0F8AB-EF5A-412A-9E34-0FD2574766B7}.Release|x64.ActiveCfg = Release|x64 - {73B0F8AB-EF5A-412A-9E34-0FD2574766B7}.Release|x64.Build.0 = Release|x64 - {73B0F8AB-EF5A-412A-9E34-0FD2574766B7}.Release|x86.ActiveCfg = Release|Win32 - {73B0F8AB-EF5A-412A-9E34-0FD2574766B7}.Release|x86.Build.0 = Release|Win32 {983F6496-7BB2-48E3-B8F4-68C2600EA315}.Debug|Any CPU.ActiveCfg = Debug|Win32 {983F6496-7BB2-48E3-B8F4-68C2600EA315}.Debug|x64.ActiveCfg = Debug|x64 {983F6496-7BB2-48E3-B8F4-68C2600EA315}.Debug|x64.Build.0 = Debug|x64 @@ -563,6 +553,16 @@ Global {49F7847E-219E-4A7B-8484-2A33DAC29DD0}.Release|x64.Build.0 = Release|x64 {49F7847E-219E-4A7B-8484-2A33DAC29DD0}.Release|x86.ActiveCfg = Release|Win32 {49F7847E-219E-4A7B-8484-2A33DAC29DD0}.Release|x86.Build.0 = Release|Win32 + {F248C936-2169-45DF-8FC4-60E56EA23ECC}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {F248C936-2169-45DF-8FC4-60E56EA23ECC}.Debug|x64.ActiveCfg = Debug|x64 + {F248C936-2169-45DF-8FC4-60E56EA23ECC}.Debug|x64.Build.0 = Debug|x64 + {F248C936-2169-45DF-8FC4-60E56EA23ECC}.Debug|x86.ActiveCfg = Debug|Win32 + {F248C936-2169-45DF-8FC4-60E56EA23ECC}.Debug|x86.Build.0 = Debug|Win32 + {F248C936-2169-45DF-8FC4-60E56EA23ECC}.Release|Any CPU.ActiveCfg = Release|Win32 + {F248C936-2169-45DF-8FC4-60E56EA23ECC}.Release|x64.ActiveCfg = Release|x64 + {F248C936-2169-45DF-8FC4-60E56EA23ECC}.Release|x64.Build.0 = Release|x64 + {F248C936-2169-45DF-8FC4-60E56EA23ECC}.Release|x86.ActiveCfg = Release|Win32 + {F248C936-2169-45DF-8FC4-60E56EA23ECC}.Release|x86.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -596,7 +596,6 @@ Global {38090AEB-3AA9-489B-BBEC-0CEDF9EAC0DE} = {E068D138-C824-4365-B5A3-27C65E8FD0B5} {1B83A353-9694-42E0-997E-79E150E1C2E5} = {CD115016-E377-4AC1-8595-DB2836CEFE7E} {AB4F8F4A-73B5-4EFF-BD5D-448A3E39C60A} = {CD115016-E377-4AC1-8595-DB2836CEFE7E} - {73B0F8AB-EF5A-412A-9E34-0FD2574766B7} = {CD115016-E377-4AC1-8595-DB2836CEFE7E} {129C3826-B418-4C80-A126-0319C7E2A857} = {CD115016-E377-4AC1-8595-DB2836CEFE7E} {5BECAAB3-9C80-4A62-99BB-E48F4667D9CD} = {E068D138-C824-4365-B5A3-27C65E8FD0B5} {95CAC424-D558-43D0-88B0-C67AF1C4EE90} = {25C8D2F8-989B-4742-859D-E2FDBB14EC2F} @@ -607,6 +606,7 @@ Global {E15D111A-9E02-4E0D-86FE-62BFCD3C211E} = {64D4E4B2-4A60-46F4-A500-370EFED4524F} {2822F737-EEFA-4C74-872C-1EE0793E2221} = {64D4E4B2-4A60-46F4-A500-370EFED4524F} {49F7847E-219E-4A7B-8484-2A33DAC29DD0} = {64D4E4B2-4A60-46F4-A500-370EFED4524F} + {F248C936-2169-45DF-8FC4-60E56EA23ECC} = {CD115016-E377-4AC1-8595-DB2836CEFE7E} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {331032D8-F7CC-43E3-A03B-67108767F96B} diff --git a/build/libs/asura-lib-plot/asura-lib-plot.vcxproj b/build/libs/asura-lib-plot/asura-lib-plot.vcxproj new file mode 100644 index 0000000..b26fbaa --- /dev/null +++ b/build/libs/asura-lib-plot/asura-lib-plot.vcxproj @@ -0,0 +1,122 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <ItemGroup Label="ProjectConfigurations"> + <ProjectConfiguration Include="Debug|Win32"> + <Configuration>Debug</Configuration> + <Platform>Win32</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Release|Win32"> + <Configuration>Release</Configuration> + <Platform>Win32</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Debug|x64"> + <Configuration>Debug</Configuration> + <Platform>x64</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Release|x64"> + <Configuration>Release</Configuration> + <Platform>x64</Platform> + </ProjectConfiguration> + </ItemGroup> + <PropertyGroup Label="Globals"> + <VCProjectVersion>15.0</VCProjectVersion> + <ProjectGuid>{F248C936-2169-45DF-8FC4-60E56EA23ECC}</ProjectGuid> + <RootNamespace>asuralibplot</RootNamespace> + <WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion> + </PropertyGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> + <ConfigurationType>Application</ConfigurationType> + <UseDebugLibraries>true</UseDebugLibraries> + <PlatformToolset>v141</PlatformToolset> + <CharacterSet>MultiByte</CharacterSet> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> + <ConfigurationType>Application</ConfigurationType> + <UseDebugLibraries>false</UseDebugLibraries> + <PlatformToolset>v141</PlatformToolset> + <WholeProgramOptimization>true</WholeProgramOptimization> + <CharacterSet>MultiByte</CharacterSet> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration"> + <ConfigurationType>Application</ConfigurationType> + <UseDebugLibraries>true</UseDebugLibraries> + <PlatformToolset>v141</PlatformToolset> + <CharacterSet>MultiByte</CharacterSet> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration"> + <ConfigurationType>Application</ConfigurationType> + <UseDebugLibraries>false</UseDebugLibraries> + <PlatformToolset>v141</PlatformToolset> + <WholeProgramOptimization>true</WholeProgramOptimization> + <CharacterSet>MultiByte</CharacterSet> + </PropertyGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> + <ImportGroup Label="ExtensionSettings"> + </ImportGroup> + <ImportGroup Label="Shared"> + </ImportGroup> + <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <PropertyGroup Label="UserMacros" /> + <PropertyGroup /> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> + <ClCompile> + <WarningLevel>Level3</WarningLevel> + <Optimization>Disabled</Optimization> + <SDLCheck>true</SDLCheck> + <ConformanceMode>true</ConformanceMode> + </ClCompile> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> + <ClCompile> + <WarningLevel>Level3</WarningLevel> + <Optimization>Disabled</Optimization> + <SDLCheck>true</SDLCheck> + <ConformanceMode>true</ConformanceMode> + </ClCompile> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> + <ClCompile> + <WarningLevel>Level3</WarningLevel> + <Optimization>MaxSpeed</Optimization> + <FunctionLevelLinking>true</FunctionLevelLinking> + <IntrinsicFunctions>true</IntrinsicFunctions> + <SDLCheck>true</SDLCheck> + <ConformanceMode>true</ConformanceMode> + </ClCompile> + <Link> + <EnableCOMDATFolding>true</EnableCOMDATFolding> + <OptimizeReferences>true</OptimizeReferences> + </Link> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> + <ClCompile> + <WarningLevel>Level3</WarningLevel> + <Optimization>MaxSpeed</Optimization> + <FunctionLevelLinking>true</FunctionLevelLinking> + <IntrinsicFunctions>true</IntrinsicFunctions> + <SDLCheck>true</SDLCheck> + <ConformanceMode>true</ConformanceMode> + </ClCompile> + <Link> + <EnableCOMDATFolding>true</EnableCOMDATFolding> + <OptimizeReferences>true</OptimizeReferences> + </Link> + </ItemDefinitionGroup> + <ItemGroup> + </ItemGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> + <ImportGroup Label="ExtensionTargets"> + </ImportGroup> +</Project>
\ No newline at end of file diff --git a/build/libs/asura-lib-plot/asura-lib-plot.vcxproj.filters b/build/libs/asura-lib-plot/asura-lib-plot.vcxproj.filters new file mode 100644 index 0000000..3c6f4fd --- /dev/null +++ b/build/libs/asura-lib-plot/asura-lib-plot.vcxproj.filters @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <ItemGroup> + <Filter Include="源文件"> + <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier> + <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions> + </Filter> + <Filter Include="头文件"> + <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier> + <Extensions>h;hh;hpp;hxx;hm;inl;inc;ipp;xsd</Extensions> + </Filter> + <Filter Include="资源文件"> + <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier> + <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions> + </Filter> + </ItemGroup> +</Project>
\ No newline at end of file diff --git a/build/libs/asura-lib-plot/asura-lib-plot.vcxproj.user b/build/libs/asura-lib-plot/asura-lib-plot.vcxproj.user new file mode 100644 index 0000000..be25078 --- /dev/null +++ b/build/libs/asura-lib-plot/asura-lib-plot.vcxproj.user @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <PropertyGroup /> +</Project>
\ No newline at end of file diff --git a/build/libs/asura-lib-utils/asura-lib-utils.vcxproj b/build/libs/asura-lib-utils/asura-lib-utils.vcxproj index e520659..b7c6576 100644 --- a/build/libs/asura-lib-utils/asura-lib-utils.vcxproj +++ b/build/libs/asura-lib-utils/asura-lib-utils.vcxproj @@ -135,6 +135,7 @@ <ClCompile Include="..\..\..\source\libs\asura-lib-utils\io\file.cpp" /> <ClCompile Include="..\..\..\source\libs\asura-lib-utils\io\file_data.cpp" /> <ClCompile Include="..\..\..\source\libs\asura-lib-utils\io\file_system.cpp" /> + <ClCompile Include="..\..\..\source\libs\asura-lib-utils\io\io_batch_task.cpp" /> <ClCompile Include="..\..\..\source\libs\asura-lib-utils\io\io_task.cpp" /> <ClCompile Include="..\..\..\source\libs\asura-lib-utils\math\curve.cpp" /> <ClCompile Include="..\..\..\source\libs\asura-lib-utils\math\functions.cpp" /> @@ -147,12 +148,14 @@ <ClCompile Include="..\..\..\source\libs\asura-lib-utils\threading\binding\_thread.cpp" /> <ClCompile Include="..\..\..\source\libs\asura-lib-utils\threading\coroutine.cpp" /> <ClCompile Include="..\..\..\source\libs\asura-lib-utils\threading\mutex.cpp" /> + <ClCompile Include="..\..\..\source\libs\asura-lib-utils\threading\semaphore.cpp" /> <ClCompile Include="..\..\..\source\libs\asura-lib-utils\threading\thread.cpp" /> <ClCompile Include="..\..\..\source\libs\asura-lib-utils\threading\thread_impl_posix.cpp" /> <ClCompile Include="..\..\..\source\libs\asura-lib-utils\threading\thread_impl_sdl.cpp" /> <ClCompile Include="..\..\..\source\libs\asura-lib-utils\threading\thread_impl_std.cpp" /> <ClCompile Include="..\..\..\source\libs\asura-lib-utils\threading\thread_impl_win32.cpp" /> <ClCompile Include="..\..\..\source\libs\asura-lib-utils\threading\task.cpp" /> + <ClCompile Include="..\..\..\source\libs\asura-lib-utils\threading\thread_task.cpp" /> <ClCompile Include="..\..\..\source\libs\asura-lib-utils\utils_module.cpp" /> </ItemGroup> <ItemGroup> @@ -163,6 +166,7 @@ <ClInclude Include="..\..\..\source\libs\asura-lib-utils\io\file.h" /> <ClInclude Include="..\..\..\source\libs\asura-lib-utils\io\file_data.h" /> <ClInclude Include="..\..\..\source\libs\asura-lib-utils\io\file_system.h" /> + <ClInclude Include="..\..\..\source\libs\asura-lib-utils\io\io_batch_task.h" /> <ClInclude Include="..\..\..\source\libs\asura-lib-utils\io\io_task.h" /> <ClInclude Include="..\..\..\source\libs\asura-lib-utils\io\reloadable.h" /> <ClInclude Include="..\..\..\source\libs\asura-lib-utils\manager.hpp" /> @@ -183,12 +187,14 @@ <ClInclude Include="..\..\..\source\libs\asura-lib-utils\stringmap.hpp" /> <ClInclude Include="..\..\..\source\libs\asura-lib-utils\threading\coroutine.h" /> <ClInclude Include="..\..\..\source\libs\asura-lib-utils\threading\mutex.h" /> + <ClInclude Include="..\..\..\source\libs\asura-lib-utils\threading\semaphore.h" /> <ClInclude Include="..\..\..\source\libs\asura-lib-utils\threading\thread.h" /> <ClInclude Include="..\..\..\source\libs\asura-lib-utils\threading\thread_impl_posix.h" /> <ClInclude Include="..\..\..\source\libs\asura-lib-utils\threading\thread_impl_sdl.h" /> <ClInclude Include="..\..\..\source\libs\asura-lib-utils\threading\thread_impl_std.h" /> <ClInclude Include="..\..\..\source\libs\asura-lib-utils\threading\thread_impl_win32.h" /> <ClInclude Include="..\..\..\source\libs\asura-lib-utils\threading\task.h" /> + <ClInclude Include="..\..\..\source\libs\asura-lib-utils\threading\thread_task.h" /> <ClInclude Include="..\..\..\source\libs\asura-lib-utils\type.h" /> <ClInclude Include="..\..\..\source\libs\asura-lib-utils\utils.h" /> <ClInclude Include="..\..\..\source\libs\asura-lib-utils\utils_config.h" /> diff --git a/build/libs/asura-lib-utils/asura-lib-utils.vcxproj.filters b/build/libs/asura-lib-utils/asura-lib-utils.vcxproj.filters index 5d8b40f..9e36a55 100644 --- a/build/libs/asura-lib-utils/asura-lib-utils.vcxproj.filters +++ b/build/libs/asura-lib-utils/asura-lib-utils.vcxproj.filters @@ -116,6 +116,15 @@ <ClCompile Include="..\..\..\source\libs\asura-lib-utils\threading\task.cpp"> <Filter>threading</Filter> </ClCompile> + <ClCompile Include="..\..\..\source\libs\asura-lib-utils\threading\thread_task.cpp"> + <Filter>io</Filter> + </ClCompile> + <ClCompile Include="..\..\..\source\libs\asura-lib-utils\threading\semaphore.cpp"> + <Filter>threading</Filter> + </ClCompile> + <ClCompile Include="..\..\..\source\libs\asura-lib-utils\io\io_batch_task.cpp"> + <Filter>io</Filter> + </ClCompile> </ItemGroup> <ItemGroup> <ClInclude Include="..\..\..\source\libs\asura-lib-utils\exceptions\exception.h"> @@ -213,6 +222,15 @@ <ClInclude Include="..\..\..\source\libs\asura-lib-utils\threading\task.h"> <Filter>threading</Filter> </ClInclude> + <ClInclude Include="..\..\..\source\libs\asura-lib-utils\threading\thread_task.h"> + <Filter>io</Filter> + </ClInclude> + <ClInclude Include="..\..\..\source\libs\asura-lib-utils\threading\semaphore.h"> + <Filter>threading</Filter> + </ClInclude> + <ClInclude Include="..\..\..\source\libs\asura-lib-utils\io\io_batch_task.h"> + <Filter>io</Filter> + </ClInclude> </ItemGroup> <ItemGroup> <None Include="..\..\..\source\libs\asura-lib-utils\math\rect.inl"> diff --git a/samples/Hello/prefabs/player.prefab.asset b/samples/Hello/prefabs/player.prefab.asset index fb9d34c..62fd7cf 100644 --- a/samples/Hello/prefabs/player.prefab.asset +++ b/samples/Hello/prefabs/player.prefab.asset @@ -1,22 +1,20 @@ -{ - type="prefab", - guid=_guid"0825df57da6d66a49a6b6f97d6af6ed8", +type="prefab", +guid=_guid"0825df57da6d66a49a6b6f97d6af6ed8", -- prefab specified - root=_suid"100100000", - entities = { - ["100100000"] = { - children = { - - } +root=_suid"100100000", +entities = { + ["100100000"] = { + children = { + } - }, - components = { - ["100100200"] = { - guid = _guid"0825df57da6d66a49a6b6f97d6af6ed8", - ["width"] = 10, - ["name"] = "Chai", - ["friend"] = _guid"0825df57da6d66a49a6b6f97d6af6ed8", - ["child"] = _guid"", - } - }, -}
\ No newline at end of file + } +}, +components = { + ["100100200"] = { + guid = _guid"0825df57da6d66a49a6b6f97d6af6ed8", + ["width"] = 10, + ["name"] = "Chai", + ["friend"] = _guid"0825df57da6d66a49a6b6f97d6af6ed8", + ["child"] = _guid"", + } +}, diff --git a/source/3rd-party/Lua51/loadlib.c b/source/3rd-party/Lua51/loadlib.c index 9455c53..6158c53 100644 --- a/source/3rd-party/Lua51/loadlib.c +++ b/source/3rd-party/Lua51/loadlib.c @@ -654,7 +654,7 @@ LUALIB_API int luaopen_package (lua_State *L) { lua_setfield(L, -2, "config"); /* set field `loaded' */ luaL_findtable(L, LUA_REGISTRYINDEX, "_LOADED", 2); - lua_setfield(L, -2, "loaded"); // LUA_REGISTRYINDEX["_LOADED"]Ϊpackage.loaded\LUA_ENVIRONINDEX["loaded"] + lua_setfield(L, -2, "loaded"); /* set field `preload' */ lua_newtable(L); lua_setfield(L, -2, "preload"); diff --git a/source/3rd-party/Luax/luax_class.cpp b/source/3rd-party/Luax/luax_class.cpp index 960fd47..bb1609d 100644 --- a/source/3rd-party/Luax/luax_class.cpp +++ b/source/3rd-party/Luax/luax_class.cpp @@ -46,13 +46,13 @@ namespace Luax lua_setfield(L, -2, "__index"); lua_pushstring(L, type); - lua_pushcclosure(L, l___tostring, 1); + lua_pushcclosure(L, _Tostring, 1); lua_setfield(L, -2, "__tostring"); return 1; } - int LuaxPlainClass::l___tostring(lua_State* L) + int LuaxPlainClass::_Tostring(lua_State* L) { // upvalues: // 1: class name @@ -184,7 +184,7 @@ namespace Luax lua_setfield(L, -2, "__index"); lua_pushstring(L, type); - lua_pushcclosure(L, l___tostring, 1); + lua_pushcclosure(L, _Tostring, 1); lua_setfield(L, -2, "__tostring"); // classmetatableΪbaseClass diff --git a/source/3rd-party/Luax/luax_class.hpp b/source/3rd-party/Luax/luax_class.hpp index 99ac381..257e1ca 100644 --- a/source/3rd-party/Luax/luax_class.hpp +++ b/source/3rd-party/Luax/luax_class.hpp @@ -180,12 +180,12 @@ namespace Luax public: // - LUAX_DECL_METHOD( l___tostring ); + LUAX_DECL_METHOD( _Tostring ); LUAX_DECL_METHOD( l_GetClass ); LUAX_DECL_METHOD( l_GetClassName ); // - LUAX_DECL_METHOD( l___gc ); + LUAX_DECL_METHOD( _GC ); #if LUAX_ENABLE_NATIVE_EXTEND LUAX_DECL_METHOD( l_ExtendFactory ); #endif @@ -213,7 +213,7 @@ namespace Luax /// static int registry(lua_State* L); - LUAX_DECL_METHOD( l___tostring ); + LUAX_DECL_METHOD( _Tostring ); LUAX_DECL_METHOD( l_Extend ); LUAX_DECL_METHOD( l_New ); LUAX_DECL_METHOD( l_TypeOf ); diff --git a/source/3rd-party/Luax/luax_class.inl b/source/3rd-party/Luax/luax_class.inl index d1c8c4b..45e6552 100644 --- a/source/3rd-party/Luax/luax_class.inl +++ b/source/3rd-party/Luax/luax_class.inl @@ -116,7 +116,12 @@ namespace Luax u32 count = state.GetValue<u32>(-1, 0); // get the count (or 0) lua_pop(state, 1); // pop the old count - if (count == 0) return; // nothing to do + // no such reference + if (count == 0) + { + state.Pop(2); // userdata, reftable + return; // nothing to do + } if (count > 1) { lua_pushnumber(state, count - 1); // push the new count @@ -125,7 +130,12 @@ namespace Luax lua_pushnil(state); // maybe cause gc } lua_settable(state, -3); // save it in the table + + state.Pop(1); // reftable + return; } + state.Pop(2); // nil, reftable + return; } } @@ -194,9 +204,10 @@ namespace Luax /// /// userdataԴref tablemember tableclass table - /// ref table kvǿtableuserdataüͨuserdataΪkeyΪvalueԼԱ + /// ref table kvǿtableuserdataüͨuserdataΪkey + /// ΪvalueԼԱ /// member table luaʵijԱ - /// class table б͵ʵеĺ + /// class table б͵ʵеĺ /// template<typename T> void LuaxNativeClass<T>::BindToLua(LuaxState& state) @@ -205,8 +216,13 @@ namespace Luax assert(!T::IsLuaxClassSingleton()); assert(!mUserdata); - // userdataջעַҪתΪT*ֱthisܻᵼ¶ؼ̳еɥʧ̬ - state.PushPtrUserdata(static_cast<T*>(this)); + /// + /// userdataջעַҪתΪT*ֱthisܻᵼ¶ؼ̳еɥʧ̬ + /// ֱӴthisȥڶؼ̳£òһͷ麯ġҪthis + /// תΪĵ͵ַõһ麯ͨһʵֶ̬ + /// + T* p = static_cast<T*>(this); + state.PushPtrUserdata(p); lua_newtable(state); // ref tableluaʣC lua_newtable(state); // member tableluaдĶԱ @@ -222,10 +238,13 @@ namespace Luax int memberTable = top - 1; int refTable = top - 2; - // ref table ע __tostring - lua_pushcfunction(state, l___tostring); + // ref table ע __tostring __gc + lua_pushcfunction(state, _Tostring); lua_setfield(state, refTable, "__tostring"); + lua_pushcfunction(state, _GC); + lua_setfield(state, refTable, "__gc"); + // ref table __index __newindex Ϊ member table lua_pushvalue(state, memberTable); lua_setfield(state, refTable, "__index"); @@ -233,9 +252,6 @@ namespace Luax lua_pushvalue(state, memberTable); lua_setfield(state, refTable, "__newindex"); - lua_pushcfunction(state, l___gc); - lua_setfield(state, refTable, "__gc"); - // Ԫ lua_setmetatable(state, -2); // class is meta of member lua_setmetatable(state, -2); // member is meta of ref @@ -321,8 +337,12 @@ namespace Luax /// ͷŹʵ /// template<typename T> - int LuaxNativeClass<T>::l___gc(lua_State* L) + int LuaxNativeClass<T>::_GC(lua_State* L) { +#if LUAX_PROFILER + std::cout << "Luax: GC<" << T::GetLuaxClassName() << ">\n"; +#endif + LUAX_SETUP(L, "U"); T* self = state.GetUserdata<T>(1); delete self; @@ -334,7 +354,7 @@ namespace Luax /// ַ /// template<typename T> - int LuaxNativeClass<T>::l___tostring(lua_State* L) + int LuaxNativeClass<T>::_Tostring(lua_State* L) { // params: // 1: userdata diff --git a/source/3rd-party/Luax/luax_config.h b/source/3rd-party/Luax/luax_config.h index c251c6f..2a8ed3e 100644 --- a/source/3rd-party/Luax/luax_config.h +++ b/source/3rd-party/Luax/luax_config.h @@ -55,7 +55,11 @@ namespace Luax #define LUAX_ENABLE_PLAIN_CLASS 0 #define LUAX_ENABLE_PLAIN_ENUM 0 -#define LUAX_PROFILER 0 +#define LUAX_PROFILER 1 + +#if LUAX_PROFILER +#include <iostream> +#endif } diff --git a/source/3rd-party/Luax/luax_globalstate.h b/source/3rd-party/Luax/luax_globalstate.h new file mode 100644 index 0000000..91be51f --- /dev/null +++ b/source/3rd-party/Luax/luax_globalstate.h @@ -0,0 +1,7 @@ +#ifndef __LUAX_GLOBAL_STATE_H__ +#define __LUAX_GLOBAL_STATE_H__ + +// luaglobal_State +typedef struct global_State global_State; + +#endif
\ No newline at end of file diff --git a/source/3rd-party/Luax/luax_internal.h b/source/3rd-party/Luax/luax_internal.h new file mode 100644 index 0000000..5904008 --- /dev/null +++ b/source/3rd-party/Luax/luax_internal.h @@ -0,0 +1,12 @@ +#ifndef __LUAX_INTERNAL_H__ +#define __LUAX_INTERNAL_H__ + +/// +/// luaԴʹ +/// +extern "C" +{ +#include "lua51/lstate.h" +} + +#endif
\ No newline at end of file diff --git a/source/3rd-party/Luax/luax_ref.cpp b/source/3rd-party/Luax/luax_ref.cpp index 78596e3..d4be775 100644 --- a/source/3rd-party/Luax/luax_ref.cpp +++ b/source/3rd-party/Luax/luax_ref.cpp @@ -23,7 +23,7 @@ namespace Luax { assert(mRefID != LUA_NOREF); - LuaxVM* vm = LuaxVM::TryGetVM(state); + LuaxVM* vm = state.GetVM(); if (!vm) return false; if (mMode == STRONG_REF) { @@ -37,13 +37,15 @@ namespace Luax } else { + state.PushNil(); return false; } + return true; } void LuaxRef::SetRef(LuaxState& state, int idx) { - LuaxVM* vm = LuaxVM::TryGetVM(state); + LuaxVM* vm = state.GetVM(); if (!vm) return; if (mMode == STRONG_REF) { diff --git a/source/3rd-party/Luax/luax_state.cpp b/source/3rd-party/Luax/luax_state.cpp index b4d989a..3eae1df 100644 --- a/source/3rd-party/Luax/luax_state.cpp +++ b/source/3rd-party/Luax/luax_state.cpp @@ -1,8 +1,8 @@ -//#include "luax_class.h" #include "luax_enum.h" #include "luax_state.h" #include "luax_vm.h" #include "luax_class.hpp" +#include "luax_internal.h" namespace Luax { @@ -28,6 +28,16 @@ namespace Luax luaL_openlibs(mState); } + global_State* LuaxState::GetGlobalState() + { + return G(mState); + } + + LuaxVM* LuaxState::GetVM() + { + return LuaxVM::TryGetVM(G(mState)); + } + void LuaxState::PushGlobalNamespace() { int top = GetTop(); @@ -642,8 +652,8 @@ namespace Luax return value; } - void LuaxState::PushPtrUserdata(void* ptr) { - + void LuaxState::PushPtrUserdata(void* ptr) + { void** handle = (void**)lua_newuserdata(this->mState, sizeof(void*)); assert(handle); (*handle) = ptr; diff --git a/source/3rd-party/Luax/luax_state.h b/source/3rd-party/Luax/luax_state.h index dc3b79f..7c7d813 100644 --- a/source/3rd-party/Luax/luax_state.h +++ b/source/3rd-party/Luax/luax_state.h @@ -5,6 +5,7 @@ #include "luax_config.h" #include "luax_reftable.h" +#include "luax_globalstate.h" namespace Luax { @@ -41,6 +42,10 @@ namespace Luax /// inline lua_State* GetHandle() { return mState; }; + global_State* GetGlobalState(); + + LuaxVM* GetVM(); + //------------------------------------------------------------------------------// void OpenLibs(); @@ -206,10 +211,7 @@ namespace Luax void* operator &(); void* operator new(size_t size); - //------------------------------------------------------------------------------// - lua_State* const mState; - }; //--------------------------------------------------------------------------------// diff --git a/source/3rd-party/Luax/luax_vm.cpp b/source/3rd-party/Luax/luax_vm.cpp index 549e20b..5e9d1f5 100644 --- a/source/3rd-party/Luax/luax_vm.cpp +++ b/source/3rd-party/Luax/luax_vm.cpp @@ -1,32 +1,39 @@ +#include "luax_internal.h" #include "luax_vm.h" namespace Luax { - LuaxVM::ThreadMap threadMap; // ̲ͨ߳Ϊ˷ + LuaxVM::VMap LuaxVM::VMs; // ̲ͨ߳Ϊ˷ - LuaxVM* LuaxVM::TryGetVM(lua_State* L) + LuaxVM* LuaxVM::TryGetVM(global_State* gState) { - auto it = threadMap.find(L); - if (it != threadMap.end()) + auto it = VMs.find(gState); + if (it != VMs.end()) return it->second; else return nullptr; } + LuaxVM* LuaxVM::TryGetVM(lua_State* state) + { + return TryGetVM(G(state)); + } + LuaxVM::LuaxVM() : mStrongRefTable() , mWeakRefTable() { mMainThread = luaL_newstate(); assert(mMainThread); - mThreads.insert(mMainThread); + mGlobalState = G(mMainThread); - threadMap.insert(std::pair<lua_State*, LuaxVM*>(mMainThread, this)); + VMs.insert(std::pair<global_State*, LuaxVM*>(mGlobalState, this)); } LuaxVM::~LuaxVM() { + VMs.erase(mGlobalState); lua_close(mMainThread); } @@ -34,7 +41,7 @@ namespace Luax void LuaxVM::Setup() { LUAX_STATE(mMainThread); - // ȫñ + mStrongRefTable.Init(state, "_LUAX_STRONGREF_TABLE"); mWeakRefTable.Init(state, "_LUAX_WEAKREF_TABLE", "v"); } @@ -43,7 +50,6 @@ namespace Luax { lua_State* thread = lua_newthread(mMainThread); assert(thread); - mThreads.insert(thread); return thread; } @@ -62,14 +68,4 @@ namespace Luax return mWeakRefTable; } - bool LuaxVM::HasThread(lua_State* L) - { - return mThreads.find(L) != mThreads.end(); - } - - int LuaxVM::GetThreadCount() - { - return mThreads.size(); - } - }
\ No newline at end of file diff --git a/source/3rd-party/Luax/luax_vm.h b/source/3rd-party/Luax/luax_vm.h index 9039a04..1bac71e 100644 --- a/source/3rd-party/Luax/luax_vm.h +++ b/source/3rd-party/Luax/luax_vm.h @@ -7,6 +7,7 @@ #include "luax_ref.h" #include "luax_config.h" #include "luax_state.h" +#include "luax_globalstate.h" namespace Luax { @@ -17,38 +18,41 @@ namespace Luax class LuaxVM { public: + + /// + /// global_Stateõ + /// + static LuaxVM* TryGetVM(global_State* gState); + static LuaxVM* TryGetVM(lua_State* state); + LuaxVM(); ~LuaxVM(); + /// + /// ҪֶSetupʼһЩ״̬ + /// void Setup(); - lua_State* CreateThread(); lua_State* GetMainThread(); - - int GetThreadCount(); + lua_State* CreateThread(); LuaxRefTable& GetStrongRefTable(); LuaxRefTable& GetWeakRefTable(); - bool HasThread(lua_State* L); - - static LuaxVM* TryGetVM(lua_State* L); - - typedef std::map<lua_State*, LuaxVM*> ThreadMap; - private: - static ThreadMap threadMap; // ̲ͨ߳Ϊ˷ + typedef std::map<global_State*, LuaxVM*> VMap; - LuaxRefTable mStrongRefTable; // _LUAX_STRONGREF_TABLE - LuaxRefTable mWeakRefTable; // _LUAX_WEAKREF_TABLE + static VMap VMs; // ͨglobal_StateΪ˷ - lua_State* mMainThread; // ߳ + LuaxRefTable mStrongRefTable; // _LUAX_STRONGREF_TABLE + LuaxRefTable mWeakRefTable; // _LUAX_WEAKREF_TABLE - std::unordered_set<lua_State*> mThreads; // ߳ + global_State* mGlobalState; // global_Stateɵǰ̹߳ + lua_State* mMainThread; // ߳ #if LUAX_PROFILER - size_t mObjectCount; // ͳڴдʵ + size_t mObjectCount; // ͳڴдʵ #endif }; diff --git a/source/3rd-party/plotscript/plot.c b/source/3rd-party/plotscript/plot.c new file mode 100644 index 0000000..6028671 --- /dev/null +++ b/source/3rd-party/plotscript/plot.c @@ -0,0 +1,5 @@ +/* + * ڽű̷š +*/ + + diff --git a/source/3rd-party/plotscript/test/first_meeting.plot b/source/3rd-party/plotscript/test/first_meeting.plot new file mode 100644 index 0000000..5cf69d6 --- /dev/null +++ b/source/3rd-party/plotscript/test/first_meeting.plot @@ -0,0 +1,9 @@ + +#ʱ + +@(): + +@camera: + move_to(1, 2, 4s) & move_to() + +
\ No newline at end of file diff --git a/source/Asura.Editor/widgets/binding/_button.cpp b/source/Asura.Editor/controls/binding/_button.cpp index fbae64f..fbae64f 100644 --- a/source/Asura.Editor/widgets/binding/_button.cpp +++ b/source/Asura.Editor/controls/binding/_button.cpp diff --git a/source/Asura.Editor/widgets/button.cpp b/source/Asura.Editor/controls/button.cpp index 97de284..97de284 100644 --- a/source/Asura.Editor/widgets/button.cpp +++ b/source/Asura.Editor/controls/button.cpp diff --git a/source/Asura.Editor/widgets/button.h b/source/Asura.Editor/controls/button.h index 14cd041..14cd041 100644 --- a/source/Asura.Editor/widgets/button.h +++ b/source/Asura.Editor/controls/button.h diff --git a/source/Asura.Editor/widgets/checkbox.cpp b/source/Asura.Editor/controls/checkbox.cpp index e69de29..e69de29 100644 --- a/source/Asura.Editor/widgets/checkbox.cpp +++ b/source/Asura.Editor/controls/checkbox.cpp diff --git a/source/Asura.Editor/widgets/checkbox.h b/source/Asura.Editor/controls/checkbox.h index e69de29..e69de29 100644 --- a/source/Asura.Editor/widgets/checkbox.h +++ b/source/Asura.Editor/controls/checkbox.h diff --git a/source/Asura.Editor/widgets/hslider.cpp b/source/Asura.Editor/controls/hslider.cpp index e69de29..e69de29 100644 --- a/source/Asura.Editor/widgets/hslider.cpp +++ b/source/Asura.Editor/controls/hslider.cpp diff --git a/source/Asura.Editor/widgets/hslider.h b/source/Asura.Editor/controls/hslider.h index e69de29..e69de29 100644 --- a/source/Asura.Editor/widgets/hslider.h +++ b/source/Asura.Editor/controls/hslider.h diff --git a/source/Asura.Editor/widgets/hvslider.cpp b/source/Asura.Editor/controls/hvslider.cpp index e69de29..e69de29 100644 --- a/source/Asura.Editor/widgets/hvslider.cpp +++ b/source/Asura.Editor/controls/hvslider.cpp diff --git a/source/Asura.Editor/widgets/hvslider.h b/source/Asura.Editor/controls/hvslider.h index e69de29..e69de29 100644 --- a/source/Asura.Editor/widgets/hvslider.h +++ b/source/Asura.Editor/controls/hvslider.h diff --git a/source/Asura.Editor/widgets/label.cpp b/source/Asura.Editor/controls/label.cpp index e69de29..e69de29 100644 --- a/source/Asura.Editor/widgets/label.cpp +++ b/source/Asura.Editor/controls/label.cpp diff --git a/source/Asura.Editor/widgets/label.h b/source/Asura.Editor/controls/label.h index 1d053f8..1d053f8 100644 --- a/source/Asura.Editor/widgets/label.h +++ b/source/Asura.Editor/controls/label.h diff --git a/source/Asura.Editor/widgets/panel.cpp b/source/Asura.Editor/controls/panel.cpp index e69de29..e69de29 100644 --- a/source/Asura.Editor/widgets/panel.cpp +++ b/source/Asura.Editor/controls/panel.cpp diff --git a/source/Asura.Editor/widgets/panel.h b/source/Asura.Editor/controls/panel.h index e69de29..e69de29 100644 --- a/source/Asura.Editor/widgets/panel.h +++ b/source/Asura.Editor/controls/panel.h diff --git a/source/Asura.Editor/widgets/progress.cpp b/source/Asura.Editor/controls/progress.cpp index e69de29..e69de29 100644 --- a/source/Asura.Editor/widgets/progress.cpp +++ b/source/Asura.Editor/controls/progress.cpp diff --git a/source/Asura.Editor/widgets/progress.h b/source/Asura.Editor/controls/progress.h index e69de29..e69de29 100644 --- a/source/Asura.Editor/widgets/progress.h +++ b/source/Asura.Editor/controls/progress.h diff --git a/source/Asura.Editor/widgets/radio_button.cpp b/source/Asura.Editor/controls/radio_button.cpp index e69de29..e69de29 100644 --- a/source/Asura.Editor/widgets/radio_button.cpp +++ b/source/Asura.Editor/controls/radio_button.cpp diff --git a/source/Asura.Editor/widgets/radio_button.h b/source/Asura.Editor/controls/radio_button.h index e69de29..e69de29 100644 --- a/source/Asura.Editor/widgets/radio_button.h +++ b/source/Asura.Editor/controls/radio_button.h diff --git a/source/Asura.Editor/widgets/textbox.cpp b/source/Asura.Editor/controls/textbox.cpp index e69de29..e69de29 100644 --- a/source/Asura.Editor/widgets/textbox.cpp +++ b/source/Asura.Editor/controls/textbox.cpp diff --git a/source/Asura.Editor/widgets/textbox.h b/source/Asura.Editor/controls/textbox.h index e69de29..e69de29 100644 --- a/source/Asura.Editor/widgets/textbox.h +++ b/source/Asura.Editor/controls/textbox.h diff --git a/source/Asura.Editor/widgets/vslider.cpp b/source/Asura.Editor/controls/vslider.cpp index e69de29..e69de29 100644 --- a/source/Asura.Editor/widgets/vslider.cpp +++ b/source/Asura.Editor/controls/vslider.cpp diff --git a/source/Asura.Editor/widgets/vslider.h b/source/Asura.Editor/controls/vslider.h index e69de29..e69de29 100644 --- a/source/Asura.Editor/widgets/vslider.h +++ b/source/Asura.Editor/controls/vslider.h diff --git a/source/Asura.Editor/widgets/widget.h b/source/Asura.Editor/controls/widget.h index 9ffd1fb..9ffd1fb 100644 --- a/source/Asura.Editor/widgets/widget.h +++ b/source/Asura.Editor/controls/widget.h diff --git a/source/libs/asura-lib-utils/io/binding/_data_buffer.cpp b/source/libs/asura-lib-utils/io/binding/_data_buffer.cpp index 6725bc4..cd73b31 100644 --- a/source/libs/asura-lib-utils/io/binding/_data_buffer.cpp +++ b/source/libs/asura-lib-utils/io/binding/_data_buffer.cpp @@ -42,6 +42,7 @@ namespace AsuraEngine size_t size = lua_tonumber(L, 1); DataBuffer* buffer = new DataBuffer(size); buffer->PushLuaxUserdata(state); + return 1; } else { diff --git a/source/libs/asura-lib-utils/io/io_batch_task.cpp b/source/libs/asura-lib-utils/io/io_batch_task.cpp new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/source/libs/asura-lib-utils/io/io_batch_task.cpp diff --git a/source/libs/asura-lib-utils/io/io_batch_task.h b/source/libs/asura-lib-utils/io/io_batch_task.h new file mode 100644 index 0000000..c0be921 --- /dev/null +++ b/source/libs/asura-lib-utils/io/io_batch_task.h @@ -0,0 +1,31 @@ +#ifndef __ASURA_IO_BATCH_TASK_H__ +#define __ASURA_IO_BATCH_TASK_H__ + +#include "io_task.h" + +namespace AsuraEngine +{ + namespace IO + { + + /// + /// дһύһtableδؽ + /// + class IOBatchTask ASURA_FINAL : public AEThreading::Task + { + public: + + private: + + /// + /// ÿһĽṹ£ + /// { path = "", } + /// + Luax::LuaxMemberRef mTasks; + + }; + + } +} + +#endif
\ No newline at end of file diff --git a/source/libs/asura-lib-utils/io/io_task.cpp b/source/libs/asura-lib-utils/io/io_task.cpp index 38e21ad..361b9c5 100644 --- a/source/libs/asura-lib-utils/io/io_task.cpp +++ b/source/libs/asura-lib-utils/io/io_task.cpp @@ -38,11 +38,11 @@ namespace AsuraEngine return true; } - void IOTask::Invoke() + void IOTask::Invoke(lua_State* invokeThreaad) { if (mCallback) { - LuaxScopedState state(LuaEnv::Get()->GetMainThread()); + LuaxScopedState state(invokeThreaad); if (PushLuaxMemberRef(state, mCallback)) { PushLuaxMemberRef(state, mBufferRef); diff --git a/source/libs/asura-lib-utils/io/io_task.h b/source/libs/asura-lib-utils/io/io_task.h index 5f454ee..8f04142 100644 --- a/source/libs/asura-lib-utils/io/io_task.h +++ b/source/libs/asura-lib-utils/io/io_task.h @@ -35,7 +35,7 @@ namespace AsuraEngine ~IOTask(); bool Execute() override ; - void Invoke() override; + void Invoke(lua_State* invokeThreaad) override; private: diff --git a/source/libs/asura-lib-utils/scripting/lua_env.h b/source/libs/asura-lib-utils/scripting/lua_env.h index bae6c4c..e2fc4fc 100644 --- a/source/libs/asura-lib-utils/scripting/lua_env.h +++ b/source/libs/asura-lib-utils/scripting/lua_env.h @@ -16,8 +16,8 @@ namespace AsuraEngine { /// - /// ͨӿڷlua stateAsura˼ǣ߳άһluaӦõҪڴlua - /// ߽߳ջ + /// ͨӿڷlua stateAsura˼ǣ߳άһluaӦ + /// Ҫڴlua߽߳ջ /// class LuaEnv ASURA_FINAL : public Singleton<LuaEnv> { @@ -51,14 +51,14 @@ namespace AsuraEngine private: /// - /// ̱߳һluaһAsuraԶֻһִ붼УֻһΡ - /// ߳\ִջӦglobal_Stateģ + /// ̱߳һluaһAsuraԶֻһִ붼 + /// УֻһΡ߳\ִջӦglobal_Stateģ /// /// struct lua_State *mainthread; /// - /// ʹlua_newstate()ᴴһһglobal_Stateṹһ߳lua_Stateء - /// global_State̹߳˵һ߳lua_newstate()⣬߳lua_newthread() - /// + /// ʹlua_newstate()ᴴһһglobal_Stateṹһ + /// ߳lua_Stateءglobal_State̹߳˵һ + /// ߳lua_newstate()⣬߳lua_newthread() /// Luax::LuaxVM* mVM; diff --git a/source/libs/asura-lib-utils/threading/binding/_thread.cpp b/source/libs/asura-lib-utils/threading/binding/_thread.cpp index 9403486..a5aff03 100644 --- a/source/libs/asura-lib-utils/threading/binding/_thread.cpp +++ b/source/libs/asura-lib-utils/threading/binding/_thread.cpp @@ -1,5 +1,4 @@ #include "../thread.h" -#include "../task.h" using namespace std; @@ -12,67 +11,114 @@ namespace AsuraEngine { LUAX_REGISTER_METHODS(state, { "New", _New }, + { "AddTask", _AddTask }, { "Start", _Start }, + { "Idle", _Idle }, + { "Pause", _Pause }, + { "Resume", _Resume }, + { "Stop", _Stop }, { "Join", _Join }, - { "Kill", _Kill }, - { "AddTask", _AddTask }, { "IsRunning", _IsRunning }, + { "IsPaused", _IsPaused }, + { "IsStopped", _IsStopped }, { "IsCurrent", _IsCurrent }, + { "Sleep", _Sleep }, + { "Post", _Post }, { "GetName", _GetName }, - { "Sleep", _Sleep } + { "GetType", _GetType }, + { "GetState", _GetState } ); } LUAX_POSTPROCESS(Thread) { - + LUAX_REGISTER_ENUM(state, "EThreadType", + { "DEFERRED", THREAD_TYPE_DEFERRED }, + { "IMMEDIATE", THREAD_TYPE_IMMEDIATE } + ); + LUAX_REGISTER_ENUM(state, "EThreadState", + { "READY", THREAD_STATE_IDLE }, + { "RUNNING", THREAD_STATE_RUNNING }, + { "PAUSED", THREAD_STATE_PAUSED }, + { "STOPPED", THREAD_STATE_STOPPED } + ); } - // thread = Thread.New(name) + // thread = Thread.New(thread_type, sleepTime, name) LUAX_IMPL_METHOD(Thread, _New) { LUAX_STATE(L); - cc8* name = state.GetValue<cc8*>(1, ""); + ThreadType type = (ThreadType)state.GetValue<int>(1, THREAD_TYPE_DEFERRED); + uint sleepTime = state.GetValue<uint>(2,1); + cc8* name = state.GetValue<cc8*>(3, ""); - Thread* thread = new Thread(state, name); + Thread* thread = new Thread(state, type, sleepTime, name); thread->PushLuaxUserdata(state); return 1; } - // thread:Start() + // thread:AddTask(task) + LUAX_IMPL_METHOD(Thread, _AddTask) + { + LUAX_PREPARE(L, Thread); + + Task* task = state.GetUserdata<Task>(2); + self->AddTask(task); + self->LuaxRetain<Task>(state, task); + return 0; + } + + // successed = thread:Start(isDeamon, stackSize) LUAX_IMPL_METHOD(Thread, _Start) { LUAX_PREPARE(L, Thread); - self->Start(); + + bool isDaemon = state.GetValue(2, true); + uint stackSize = state.GetValue(3, 0); + + state.Push(self->Start(isDaemon, stackSize)); + return 1; + } + + // thread:Idle() + LUAX_IMPL_METHOD(Thread, _Idle) + { + LUAX_PREPARE(L, Thread); + self->Idle(); return 0; } - // thread:Join() - LUAX_IMPL_METHOD(Thread, _Join) + // thread:Pause() + LUAX_IMPL_METHOD(Thread, _Pause) { LUAX_PREPARE(L, Thread); - self->Join(); + self->Pause(); return 0; } - // thread:Kill() - LUAX_IMPL_METHOD(Thread, _Kill) + // thread:Resume() + LUAX_IMPL_METHOD(Thread, _Resume) { LUAX_PREPARE(L, Thread); - self->Kill(); + self->Resume(); return 0; } - // successed = thread:AddTask(task) - LUAX_IMPL_METHOD(Thread, _AddTask) + // thread:Stop() + LUAX_IMPL_METHOD(Thread, _Stop) { LUAX_PREPARE(L, Thread); + self->Stop(); + return 0; + } - Task* task = state.GetUserdata<Task>(2); - self->AddTask(task); - self->LuaxRetain<Task>(state, task); + // thread:Join() + LUAX_IMPL_METHOD(Thread, _Join) + { + LUAX_PREPARE(L, Thread); + self->Join(); return 0; } @@ -80,39 +126,83 @@ namespace AsuraEngine LUAX_IMPL_METHOD(Thread, _IsRunning) { LUAX_PREPARE(L, Thread); - state.Push(self->IsRunning()); return 1; } + // thread:IsPaused() + LUAX_IMPL_METHOD(Thread, _IsPaused) + { + LUAX_PREPARE(L, Thread); + state.Push(self->IsPaused()); + return 1; + } + + // thread:IsStopped() + LUAX_IMPL_METHOD(Thread, _IsStopped) + { + LUAX_PREPARE(L, Thread); + state.Push(self->IsStopped()); + return 1; + } + // thread:IsCurrent() LUAX_IMPL_METHOD(Thread, _IsCurrent) { LUAX_PREPARE(L, Thread); - state.Push(self->IsCurrent()); return 1; } + // Thread.Sleep(ms) + LUAX_IMPL_METHOD(Thread, _Sleep) + { + LUAX_STATE(L); + uint ms = state.GetValue(1, 0); +#ifdef _WIN32 + ::Sleep(ms); +#endif + return 0; + } + + // thread:Post() + LUAX_IMPL_METHOD(Thread, _Post) + { + LUAX_PREPARE(L, Thread); + self->Post(); + return 0; + } + // thread:GetName() LUAX_IMPL_METHOD(Thread, _GetName) { LUAX_PREPARE(L, Thread); - state.Push(self->GetName()); return 1; } - // Thread.Sleep(milliseconds) - LUAX_IMPL_METHOD(Thread, _Sleep) + // thread:GetType() + LUAX_IMPL_METHOD(Thread, _GetType) { - LUAX_STATE(L); - int ms = state.CheckValue<int>(1); -#if ASURA_THREAD_WIN32 - ::Sleep(ms); -#elif ASURA_THREAD_STD + LUAX_PREPARE(L, Thread); + state.Push(self->mType); + return 1; + } -#endif + // thread:GetState() + LUAX_IMPL_METHOD(Thread, _GetState) + { + LUAX_PREPARE(L, Thread); + state.Push(self->mState); + return 1; + } + + // thread:SetSleepTime(sleepTime) + LUAX_IMPL_METHOD(Thread, _SetSleepTime) + { + LUAX_PREPARE(L, Thread); + uint time = state.CheckValue<uint>(2); + self->SetSleepTime(time); return 0; } diff --git a/source/libs/asura-lib-utils/threading/semaphore.cpp b/source/libs/asura-lib-utils/threading/semaphore.cpp new file mode 100644 index 0000000..d59ec78 --- /dev/null +++ b/source/libs/asura-lib-utils/threading/semaphore.cpp @@ -0,0 +1,88 @@ +#include "../exceptions/exception.h" +#include "../type.h" + +#include "semaphore.h" + +namespace AsuraEngine +{ + namespace Threading + { + +#define try_create_semaphore(impl) \ + if (!mImpl) \ + { \ + try \ + { \ + mImpl = new impl(init_count); \ + } \ + catch (Exception& e) \ + { \ + mImpl = nullptr; \ + } \ + } + + Semaphore::Semaphore(unsigned int init_count) + : mImpl(nullptr) + { +#ifdef ASURA_THREAD_WIN32 + try_create_semaphore(SemaphoreWin32); +#endif + ASSERT(mImpl); + } + + Semaphore::~Semaphore() + { + if (mImpl) delete mImpl; + } + + void Semaphore::Signal() + { + ASSERT(mImpl); + mImpl->Signal(); + } + + void Semaphore::Wait(int timeout) + { + ASSERT(mImpl); + mImpl->Wait(timeout); + } + +#if ASURA_THREAD_WIN32 + + SemaphoreWin32::SemaphoreWin32(unsigned int init_value) + : SemaphoreImpl(init_value) + { + mSem = CreateSemaphore(NULL, init_value, UINT_MAX, NULL); + if (!mSem) + throw Exception("Cant use win32 semaphore."); + } + + SemaphoreWin32::~SemaphoreWin32() + { + CloseHandle(mSem); + } + + void SemaphoreWin32::Signal() + { + InterlockedIncrement(&mCount); + if (ReleaseSemaphore(mSem, 1, NULL) == FALSE) + InterlockedDecrement(&mCount); + } + + bool SemaphoreWin32::Wait(int timeout) + { + int result; + result = WaitForSingleObject(mSem, timeout < 0 ? INFINITE : timeout); + if (result == WAIT_OBJECT_0) + { + InterlockedDecrement(&mCount); + return true; + } + else + return false; + } + +#endif // ASURA_THREAD_WIN32 + + } +}
\ No newline at end of file diff --git a/source/libs/asura-lib-utils/threading/semaphore.h b/source/libs/asura-lib-utils/threading/semaphore.h new file mode 100644 index 0000000..80773d8 --- /dev/null +++ b/source/libs/asura-lib-utils/threading/semaphore.h @@ -0,0 +1,70 @@ +#ifndef __ASURA_SEMAPHORE_H__ +#define __ASURA_SEMAPHORE_H__ + +#include "../utils_config.h" + +#if ASURA_THREAD_WIN32 +#include <windows.h> +#endif + +namespace AsuraEngine +{ + namespace Threading + { + + class SemaphoreImpl; + + /// + /// ź + /// + class Semaphore + { + public: + + Semaphore(unsigned int init_count = 1); + ~Semaphore(); + + void Signal(); + void Wait(int timeout = 0); + + private: + SemaphoreImpl* mImpl; + }; + + class SemaphoreImpl + { + public: + SemaphoreImpl(unsigned int init_value) + : mCount(init_value) + { + }; + virtual ~SemaphoreImpl() {}; + virtual void Signal() = 0; + virtual bool Wait(int timeout) = 0; + inline int Current() { return mCount; } + protected: + unsigned int mCount; + }; + +#define wait(sem) sem.Wait(); +#define signal(sem) sem.Signal(); + +#if ASURA_THREAD_WIN32 + + class SemaphoreWin32 : public SemaphoreImpl + { + public: + SemaphoreWin32(unsigned int init_value); + ~SemaphoreWin32(); + void Signal() override; + bool Wait(int timeout) override; + private: + HANDLE mSem; + }; + +#endif // ASURA_THREAD_WIN32 + + } +} + +#endif
\ No newline at end of file diff --git a/source/libs/asura-lib-utils/threading/task.h b/source/libs/asura-lib-utils/threading/task.h index 9c0b12c..fb7aa5f 100644 --- a/source/libs/asura-lib-utils/threading/task.h +++ b/source/libs/asura-lib-utils/threading/task.h @@ -26,9 +26,9 @@ namespace AsuraEngine virtual bool Execute() = 0; /// - /// ûص + /// ûصinvoke threadص /// - virtual void Invoke() = 0; + virtual void Invoke(lua_State* invokeThreaad) = 0; protected: diff --git a/source/libs/asura-lib-utils/threading/thread.cpp b/source/libs/asura-lib-utils/threading/thread.cpp index 628eee4..0f4f5da 100644 --- a/source/libs/asura-lib-utils/threading/thread.cpp +++ b/source/libs/asura-lib-utils/threading/thread.cpp @@ -10,14 +10,50 @@ namespace AsuraEngine namespace Threading { - Thread::Thread(ThreadType type, Luax::LuaxState& luaThread, const std::string& name/* = ""*/) + Thread::Thread(lua_State* luaThread, ThreadType type /*= THREAD_TYPE_DEFERRED*/, uint sleepTime /*= 0*/, const std::string& name /*= ""*/) : mName(name) + , mState(THREAD_STATE_IDLE) + , mType(type) + , mLuaThread(luaThread) + , mCallbackThread(nullptr) + , mSleepTime(sleepTime) { + LUAX_STATE(luaThread); + if (type == THREAD_TYPE_IMMEDIATE) + { + Luax::LuaxVM* vm = state.GetVM(); + ASSERT(vm); + mCallbackThread = vm->CreateThread(); + ASSERT(mCallbackThread); + SetLuaxMemberRef(state, mCallbackThreadRef, -1); + state.Pop(); // callback thread + } } Thread::~Thread() { - delete mImpl; + if (mImpl) + { + delete mImpl; + mImpl = nullptr; + } + } + + bool Thread::AddTask(Task* task) + { + lock(mTaskQueueMutex); + mTaskQueue.push(task); + return true; + } + + uint Thread::GetTaskCount() + { + return mTaskQueue.size(); + } + + void Thread::Idle() + { + mState = THREAD_STATE_IDLE; } #define try_start_thread(impl)\ @@ -31,20 +67,72 @@ namespace AsuraEngine } \ } - bool Thread::AddTask(Task* task) + bool Thread::Start(bool isDaemon /*= true*/, uint32 stacksize /*= 0*/) { - lock(mMutex); - mTaskQueue.push(task); - return true; - } + if (mState != THREAD_STATE_IDLE) + return false; + + // Ѿһ֮ǰģر + if (mImpl) + { + delete mImpl; + mImpl = nullptr; + } - void Thread::Start(uint32 stacksize) - { #if ASURA_THREAD_WIN32 try_start_thread(ThreadImplWin32); #endif + if (!mImpl) + return false; + + mIsDaemon = isDaemon; + mStateMutex.Lock(); + mState = THREAD_STATE_RUNNING; + mStateMutex.Unlock(); + } + + void Thread::Pause() + { + ASSERT(mImpl); + + lock(mStateMutex); + mState = THREAD_STATE_PAUSED; + } + + void Thread::Resume() + { + ASSERT(mImpl); + + lock(mStateMutex); + if(mState == THREAD_STATE_PAUSED) + mState = THREAD_STATE_RUNNING; + } + + void Thread::Stop() + { ASSERT(mImpl); + + lock(mStateMutex); + mState = THREAD_STATE_STOPPED; + } + + void Thread::PauseSync() + { + Pause(); + wait(mSemPause); + } + + void Thread::ResumeSync() + { + Resume(); + wait(mSemResume); + } + + void Thread::StopSync() + { + Stop(); + wait(mSemStop); } void Thread::Join() @@ -53,21 +141,40 @@ namespace AsuraEngine mImpl->Join(); } - void Thread::Kill() + ThreadState Thread::GetState() { - ASSERT(mImpl); - mImpl->Kill(); + ThreadState state; + mStateMutex.Lock(); + state = mState; + mStateMutex.Unlock(); + return state; } bool Thread::IsRunning() { ASSERT(mImpl); - return mImpl->IsRunning(); + + return GetState() == THREAD_STATE_RUNNING; + } + + bool Thread::IsPaused() + { + ASSERT(mImpl); + + return GetState() == THREAD_STATE_PAUSED; + } + + bool Thread::IsStopped() + { + ASSERT(mImpl); + + return GetState() == THREAD_STATE_STOPPED; } bool Thread::IsCurrent() { ASSERT(mImpl); + return mImpl->IsCurrent(); } @@ -78,22 +185,88 @@ namespace AsuraEngine void Thread::Process() { - LUAX_STATE(AEScripting::LuaEnv::Get()->GetMainThread()); - while (!mTaskQueue.empty()) + LUAX_STATE(mLuaThread); + + do{ + if (IsRunning()) + { + while (!mTaskQueue.empty()) + { + Task* task = mTaskQueue.front(); + if (task && task->Execute()) + { + if (mType == THREAD_TYPE_DEFERRED) + { + mFinishedMutex.Lock(); + mFinishedTasks.push(task); + mFinishedMutex.Unlock(); + } + else if (mType == THREAD_TYPE_IMMEDIATE) + { + task->Invoke(mCallbackThread); + this->LuaxRelease<Task>(state, task); + } + mTaskQueueMutex.Lock(); + mTaskQueue.pop(); + mTaskQueueMutex.Unlock(); + } + } + } + + // ˳ѭ + if (IsStopped()) + break; + + // CPUʹ + Sleep(mSleepTime); + + } while (mIsDaemon); + + // ػ̣߳еstop״̬ + if (!mIsDaemon) + Stop(); + + signal(mSemStop); + + // ״̬ΪIdle + Idle(); + } + + /// + /// ӳģʽص + /// + void Thread::Post() + { + ASSERT(mType == THREAD_TYPE_DEFERRED); + + LUAX_STATE(mLuaThread); + while (!mFinishedTasks.empty()) { - Task* task = mTaskQueue.front(); - if (task && task->Execute()) + Task* task = mFinishedTasks.front(); + if (task) { - // unsafe - task->Invoke(); + task->Invoke(mLuaThread); this->LuaxRelease<Task>(state, task); + mFinishedMutex.Lock(); + mFinishedTasks.pop(); + mFinishedMutex.Unlock(); } + } + } - mMutex.Lock(); - mTaskQueue.pop(); - mMutex.Unlock(); + void Thread::Sleep(uint ms) + { + ASSERT(mImpl); + if (mImpl) + { + mImpl->Sleep(ms); } } + void Thread::SetSleepTime(uint ms) + { + mSleepTime = ms; + } + } }
\ 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 index 3928963..0e75770 100644 --- a/source/libs/asura-lib-utils/threading/thread.h +++ b/source/libs/asura-lib-utils/threading/thread.h @@ -8,6 +8,7 @@ #include "task.h" #include "mutex.h" +#include "semaphore.h" namespace AsuraEngine { @@ -22,20 +23,19 @@ namespace AsuraEngine /// ̵߳ص첽Ϊͬlua_Stateͻ⡣ /// 2: Immediateģʽÿһ߳άһlua_newthreadlua_State /// صڲͬlua_Stateеãⲻ̷ͬ߳ͬһlua_State - /// 3: Daemonػģʽ̻߳һֱں̨ /// enum ThreadType { THREAD_TYPE_DEFERRED, THREAD_TYPE_IMMEDIATE, - THREAD_TYPE_DAEMON }; enum ThreadState { - THREAD_STATE_RUNNING, - THREAD_STATE_DEAD, - THREAD_STATE_SUSPEND, + THREAD_STATE_IDLE, ///< ãδں˶ + THREAD_STATE_RUNNING, ///< ѭ + THREAD_STATE_PAUSED, ///< ѭͣ + THREAD_STATE_STOPPED, ///< ˳ѭ }; /// @@ -48,27 +48,54 @@ namespace AsuraEngine LUAX_DECL_FACTORY(Thread); - Thread(ThreadType type, Luax::LuaxState& luaThread, const std::string& name = ""); + Thread(lua_State* luaThread, ThreadType type = THREAD_TYPE_DEFERRED, uint sleepTime = 1, const std::string& name = ""); ~Thread(); bool AddTask(Task* task); + /// + /// õȴ + /// + uint GetTaskCount(); + + void Idle(); - void Start(uint32 stacksize = 0); + /// + /// ں˶Сdaemonȴֶstopijʱ̶ɺԶstop + /// + bool Start(bool daemon = true, uint32 stacksize = 0); /// - /// ǿֹ̡߳עҪnewdeleteִ֮TerminateThreadڼ - /// ʹnewˡ - /// https://blog.csdn.net/anye3000/article/details/7470674 - /// ע⣺ҪʹӿڣӦ߳Լеյ㣬ֶر + /// ͬ߳̿ƣʵʱġҪ߳ʹIsȷϵָ״̬ /// - void Kill(); + void Pause(); + void Resume(); + void Stop(); + + /// + /// ͬ߳̿ƣȷźźִС̵߳ȴ + /// + void PauseSync(); + void ResumeSync(); + void StopSync(); /// /// ̵߳ȴ߳̽żִС /// void Join(); + ThreadState GetState(); + + /// + /// ߳״̬ + /// 1: IdleУ̴߳Ĭ״̬ʱStart + /// 2: RunningУں˶´Ѿں˵УTask + /// 3: PausedͣȻںУ˶Ĵͣ + /// 4: StoppedֹͣȻںУѾ + /// + bool IsIdle(); bool IsRunning(); + bool IsPaused(); + bool IsStopped(); bool IsCurrent(); @@ -84,41 +111,84 @@ namespace AsuraEngine /// void Post(); + /// + /// ߺ + /// + void Sleep(uint ms); + + /// + /// ʱ + /// + void SetSleepTime(uint ms); + private: //----------------------------------------------------------------------------// LUAX_DECL_ENUM(ThreadType); + LUAX_DECL_ENUM(ThreadState); LUAX_DECL_METHOD(_New); + LUAX_DECL_METHOD(_AddTask); LUAX_DECL_METHOD(_Start); + LUAX_DECL_METHOD(_Idle); + LUAX_DECL_METHOD(_Pause); + LUAX_DECL_METHOD(_Resume); + LUAX_DECL_METHOD(_Stop); LUAX_DECL_METHOD(_Join); - LUAX_DECL_METHOD(_Kill); - LUAX_DECL_METHOD(_AddTask); LUAX_DECL_METHOD(_IsRunning); + LUAX_DECL_METHOD(_IsPaused); + LUAX_DECL_METHOD(_IsStopped); LUAX_DECL_METHOD(_IsCurrent); - LUAX_DECL_METHOD(_GetName); LUAX_DECL_METHOD(_Sleep); LUAX_DECL_METHOD(_Post); + LUAX_DECL_METHOD(_GetName); LUAX_DECL_METHOD(_GetType); + LUAX_DECL_METHOD(_GetState); + LUAX_DECL_METHOD(_SetSleepTime); //----------------------------------------------------------------------------// + /// + /// ˴Ƿػģʽ + /// + bool mIsDaemon; + + lua_State* mLuaThread; + ThreadImpl* mImpl; std::string mName; ThreadType mType; + uint mSleepTime; + + ThreadState mState; + Mutex mStateMutex; + + /// + /// ͬصź + /// + Semaphore mSemPause; + Semaphore mSemResume; + Semaphore mSemStop; /// /// С /// std::queue<Task*> mTaskQueue; - Mutex mMutex; - - lua_State* mLuaThread; + Mutex mTaskQueueMutex; + /// + /// ӳģʽʹ + /// std::queue<Task*> mFinishedTasks; Mutex mFinishedMutex; + /// + /// ģʽʹãصʹõlua߳ + /// + lua_State* mCallbackThread; + Luax::LuaxMemberRef mCallbackThreadRef; + }; /// @@ -138,6 +208,8 @@ namespace AsuraEngine virtual void Join() = 0; virtual void Kill() = 0; + virtual void Sleep(uint ms) = 0; + virtual bool IsRunning() = 0; virtual bool IsCurrent() = 0; diff --git a/source/libs/asura-lib-utils/threading/thread_impl_win32.cpp b/source/libs/asura-lib-utils/threading/thread_impl_win32.cpp index ad859b6..6871c2d 100644 --- a/source/libs/asura-lib-utils/threading/thread_impl_win32.cpp +++ b/source/libs/asura-lib-utils/threading/thread_impl_win32.cpp @@ -11,11 +11,7 @@ namespace AsuraEngine static DWORD WINAPI _thread_win32_runner(LPVOID param) { Thread* thread = (Thread*)param; - while (thread->IsRunning()) - { - thread->Process(); - ::Sleep(100); - } + thread->Process(); return 0; } @@ -55,6 +51,11 @@ namespace AsuraEngine ::TerminateThread(mHandle, FALSE); } + void ThreadImplWin32::Sleep(uint ms) + { + ::Sleep(ms); + } + bool ThreadImplWin32::IsRunning() { if (mHandle) { diff --git a/source/libs/asura-lib-utils/threading/thread_impl_win32.h b/source/libs/asura-lib-utils/threading/thread_impl_win32.h index 361152f..a22aeef 100644 --- a/source/libs/asura-lib-utils/threading/thread_impl_win32.h +++ b/source/libs/asura-lib-utils/threading/thread_impl_win32.h @@ -26,9 +26,10 @@ namespace AsuraEngine bool Start(Thread* thread, uint32 stacksize) override; void Join() override; - void Kill() override; + void Sleep(uint ms) override; + bool IsRunning() override; bool IsCurrent() override; diff --git a/source/tests/05-physfs/main.cpp b/source/tests/05-physfs/main.cpp index b547f1f..4400c44 100644 --- a/source/tests/05-physfs/main.cpp +++ b/source/tests/05-physfs/main.cpp @@ -25,35 +25,43 @@ function main() print(file:GetFileName()) print(file:GetExtension()) print(file:GetName()) - dst = DataBuffer.New(138567) - thread = Thread.New("IO thread") + thread = Thread.New(EThreadType.DEFFERRED) local content = "" local cont = "ok" + if true then + local buff=DataBuffer.New(10) + print(buff:GetSize()) + buff = nil + end local task = IOTask.New("root/physfs2.txt", dst, EIOTaskType.READ, function(db) function _r() print("test..............") local c = db:GetData() - print(c) + print(#c) end function err(msg) print(msg) end xpcall(_r, err) + thread:Stop() end) thread:AddTask(task) - thread:Start() - - print("-------------end-------------") - - print(thread:GetName()) + task = nil + thread:Start() - while(true) do + while true do thread:Post() - Thread.Sleep(100) + Thread.Sleep(100) + local a = io.read() + if a == "x" then + thread:Stop() + end + if thread:IsStopped() then + break + end end - io.read() end function err(msg) @@ -70,7 +78,7 @@ int main(int argc, char* args[]) // ÿһasuraһlua stateһһlua߳ AEScripting::LuaEnv::Get()->Init(); - Luax::LuaxState& state = LuaEnv::Get()->GetMainLuaxState(); + LUAX_STATE(LuaEnv::Get()->GetMainThread()); state.OpenLibs(); state.PushGlobalNamespace(); |