summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2019-03-28 08:56:15 +0800
committerchai <chaifix@163.com>2019-03-28 08:56:15 +0800
commit3bced067a4144381e59ce4bd0eb749eeff5ad1f4 (patch)
tree0352c8ae263dae904967f9e21326ce2a4ca9ada8
parentf6bcacef6e10200b1c0dc34c4aa34313cbfc0392 (diff)
*misc
-rw-r--r--Build/Asura.sln13
-rw-r--r--bin/win64/05-physfs.exebin1068544 -> 1120768 bytes
-rw-r--r--build/3rd-party/Luax/Luax.vcxproj.user2
-rw-r--r--build/3rd-party/Plotscript/Plotscript.vcxproj123
-rw-r--r--build/3rd-party/Plotscript/Plotscript.vcxproj.filters6
-rw-r--r--build/3rd-party/Plotscript/Plotscript.vcxproj.user6
-rw-r--r--build/Asura.sln13
-rw-r--r--build/libs/asura-lib-utils/asura-lib-utils.vcxproj5
-rw-r--r--build/libs/asura-lib-utils/asura-lib-utils.vcxproj.filters15
-rw-r--r--source/3rd-party/Plotscript/plot.c5
-rw-r--r--source/3rd-party/Plotscript/test/first_meeting.plot9
-rw-r--r--source/libs/asura-lib-core/graphics/image_data.cpp4
-rw-r--r--source/libs/asura-lib-core/graphics/image_data.h22
-rw-r--r--source/libs/asura-lib-utils/io/io_task.cpp15
-rw-r--r--source/libs/asura-lib-utils/io/io_task.h8
-rw-r--r--source/libs/asura-lib-utils/scripting/lua_env.h56
-rw-r--r--source/libs/asura-lib-utils/scripting/portable.hpp7
-rw-r--r--source/libs/asura-lib-utils/threading/binding/_thread.cpp9
-rw-r--r--source/libs/asura-lib-utils/threading/coroutine.cpp16
-rw-r--r--source/libs/asura-lib-utils/threading/coroutine.h9
-rw-r--r--source/libs/asura-lib-utils/threading/mutex.cpp55
-rw-r--r--source/libs/asura-lib-utils/threading/mutex.h33
-rw-r--r--source/libs/asura-lib-utils/threading/task.cpp (renamed from source/libs/asura-lib-utils/threading/thread_task.cpp)0
-rw-r--r--source/libs/asura-lib-utils/threading/task.h (renamed from source/libs/asura-lib-utils/threading/thread_task.h)8
-rw-r--r--source/libs/asura-lib-utils/threading/thread.cpp22
-rw-r--r--source/libs/asura-lib-utils/threading/thread.h21
-rw-r--r--source/libs/asura-lib-utils/utils_config.h3
-rw-r--r--source/tests/05-physfs/main.cpp1
28 files changed, 407 insertions, 79 deletions
diff --git a/Build/Asura.sln b/Build/Asura.sln
index 4b8f502..9c0e875 100644
--- a/Build/Asura.sln
+++ b/Build/Asura.sln
@@ -97,6 +97,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "asura-lib-network", "libs\a
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "LuaSocket", "3rd-party\LuaSocket\LuaSocket.vcxproj", "{E15D111A-9E02-4E0D-86FE-62BFCD3C211E}"
EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Plotscript", "3rd-party\Plotscript\Plotscript.vcxproj", "{2822F737-EEFA-4C74-872C-1EE0793E2221}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -539,6 +541,16 @@ Global
{E15D111A-9E02-4E0D-86FE-62BFCD3C211E}.Release|x64.Build.0 = Release|x64
{E15D111A-9E02-4E0D-86FE-62BFCD3C211E}.Release|x86.ActiveCfg = Release|Win32
{E15D111A-9E02-4E0D-86FE-62BFCD3C211E}.Release|x86.Build.0 = Release|Win32
+ {2822F737-EEFA-4C74-872C-1EE0793E2221}.Debug|Any CPU.ActiveCfg = Debug|Win32
+ {2822F737-EEFA-4C74-872C-1EE0793E2221}.Debug|x64.ActiveCfg = Debug|x64
+ {2822F737-EEFA-4C74-872C-1EE0793E2221}.Debug|x64.Build.0 = Debug|x64
+ {2822F737-EEFA-4C74-872C-1EE0793E2221}.Debug|x86.ActiveCfg = Debug|Win32
+ {2822F737-EEFA-4C74-872C-1EE0793E2221}.Debug|x86.Build.0 = Debug|Win32
+ {2822F737-EEFA-4C74-872C-1EE0793E2221}.Release|Any CPU.ActiveCfg = Release|Win32
+ {2822F737-EEFA-4C74-872C-1EE0793E2221}.Release|x64.ActiveCfg = Release|x64
+ {2822F737-EEFA-4C74-872C-1EE0793E2221}.Release|x64.Build.0 = Release|x64
+ {2822F737-EEFA-4C74-872C-1EE0793E2221}.Release|x86.ActiveCfg = Release|Win32
+ {2822F737-EEFA-4C74-872C-1EE0793E2221}.Release|x86.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -581,6 +593,7 @@ Global
{C3CD1252-3C8D-45E2-B784-D0016E7F0BD3} = {E068D138-C824-4365-B5A3-27C65E8FD0B5}
{6361701E-BD43-4AE9-8AE2-5C8F87D436BA} = {CD115016-E377-4AC1-8595-DB2836CEFE7E}
{E15D111A-9E02-4E0D-86FE-62BFCD3C211E} = {64D4E4B2-4A60-46F4-A500-370EFED4524F}
+ {2822F737-EEFA-4C74-872C-1EE0793E2221} = {64D4E4B2-4A60-46F4-A500-370EFED4524F}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {331032D8-F7CC-43E3-A03B-67108767F96B}
diff --git a/bin/win64/05-physfs.exe b/bin/win64/05-physfs.exe
index 36f66ae..100d5ec 100644
--- a/bin/win64/05-physfs.exe
+++ b/bin/win64/05-physfs.exe
Binary files differ
diff --git a/build/3rd-party/Luax/Luax.vcxproj.user b/build/3rd-party/Luax/Luax.vcxproj.user
index 0b0f24d..baf2417 100644
--- a/build/3rd-party/Luax/Luax.vcxproj.user
+++ b/build/3rd-party/Luax/Luax.vcxproj.user
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
- <ShowAllFiles>true</ShowAllFiles>
+ <ShowAllFiles>false</ShowAllFiles>
</PropertyGroup>
</Project> \ No newline at end of file
diff --git a/build/3rd-party/Plotscript/Plotscript.vcxproj b/build/3rd-party/Plotscript/Plotscript.vcxproj
new file mode 100644
index 0000000..a0efb92
--- /dev/null
+++ b/build/3rd-party/Plotscript/Plotscript.vcxproj
@@ -0,0 +1,123 @@
+<?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>{2822F737-EEFA-4C74-872C-1EE0793E2221}</ProjectGuid>
+ <RootNamespace>Plotscript</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>
+ <ClCompile Include="..\..\..\source\3rd-party\Plotscript\plot.c" />
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/build/3rd-party/Plotscript/Plotscript.vcxproj.filters b/build/3rd-party/Plotscript/Plotscript.vcxproj.filters
new file mode 100644
index 0000000..edc3d49
--- /dev/null
+++ b/build/3rd-party/Plotscript/Plotscript.vcxproj.filters
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <ClCompile Include="..\..\..\source\3rd-party\Plotscript\plot.c" />
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/build/3rd-party/Plotscript/Plotscript.vcxproj.user b/build/3rd-party/Plotscript/Plotscript.vcxproj.user
new file mode 100644
index 0000000..baf2417
--- /dev/null
+++ b/build/3rd-party/Plotscript/Plotscript.vcxproj.user
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <PropertyGroup>
+ <ShowAllFiles>false</ShowAllFiles>
+ </PropertyGroup>
+</Project> \ No newline at end of file
diff --git a/build/Asura.sln b/build/Asura.sln
index 4b8f502..9c0e875 100644
--- a/build/Asura.sln
+++ b/build/Asura.sln
@@ -97,6 +97,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "asura-lib-network", "libs\a
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "LuaSocket", "3rd-party\LuaSocket\LuaSocket.vcxproj", "{E15D111A-9E02-4E0D-86FE-62BFCD3C211E}"
EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Plotscript", "3rd-party\Plotscript\Plotscript.vcxproj", "{2822F737-EEFA-4C74-872C-1EE0793E2221}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -539,6 +541,16 @@ Global
{E15D111A-9E02-4E0D-86FE-62BFCD3C211E}.Release|x64.Build.0 = Release|x64
{E15D111A-9E02-4E0D-86FE-62BFCD3C211E}.Release|x86.ActiveCfg = Release|Win32
{E15D111A-9E02-4E0D-86FE-62BFCD3C211E}.Release|x86.Build.0 = Release|Win32
+ {2822F737-EEFA-4C74-872C-1EE0793E2221}.Debug|Any CPU.ActiveCfg = Debug|Win32
+ {2822F737-EEFA-4C74-872C-1EE0793E2221}.Debug|x64.ActiveCfg = Debug|x64
+ {2822F737-EEFA-4C74-872C-1EE0793E2221}.Debug|x64.Build.0 = Debug|x64
+ {2822F737-EEFA-4C74-872C-1EE0793E2221}.Debug|x86.ActiveCfg = Debug|Win32
+ {2822F737-EEFA-4C74-872C-1EE0793E2221}.Debug|x86.Build.0 = Debug|Win32
+ {2822F737-EEFA-4C74-872C-1EE0793E2221}.Release|Any CPU.ActiveCfg = Release|Win32
+ {2822F737-EEFA-4C74-872C-1EE0793E2221}.Release|x64.ActiveCfg = Release|x64
+ {2822F737-EEFA-4C74-872C-1EE0793E2221}.Release|x64.Build.0 = Release|x64
+ {2822F737-EEFA-4C74-872C-1EE0793E2221}.Release|x86.ActiveCfg = Release|Win32
+ {2822F737-EEFA-4C74-872C-1EE0793E2221}.Release|x86.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -581,6 +593,7 @@ Global
{C3CD1252-3C8D-45E2-B784-D0016E7F0BD3} = {E068D138-C824-4365-B5A3-27C65E8FD0B5}
{6361701E-BD43-4AE9-8AE2-5C8F87D436BA} = {CD115016-E377-4AC1-8595-DB2836CEFE7E}
{E15D111A-9E02-4E0D-86FE-62BFCD3C211E} = {64D4E4B2-4A60-46F4-A500-370EFED4524F}
+ {2822F737-EEFA-4C74-872C-1EE0793E2221} = {64D4E4B2-4A60-46F4-A500-370EFED4524F}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {331032D8-F7CC-43E3-A03B-67108767F96B}
diff --git a/build/libs/asura-lib-utils/asura-lib-utils.vcxproj b/build/libs/asura-lib-utils/asura-lib-utils.vcxproj
index 54bd60a..e520659 100644
--- a/build/libs/asura-lib-utils/asura-lib-utils.vcxproj
+++ b/build/libs/asura-lib-utils/asura-lib-utils.vcxproj
@@ -152,7 +152,7 @@
<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\thread_task.cpp" />
+ <ClCompile Include="..\..\..\source\libs\asura-lib-utils\threading\task.cpp" />
<ClCompile Include="..\..\..\source\libs\asura-lib-utils\utils_module.cpp" />
</ItemGroup>
<ItemGroup>
@@ -177,6 +177,7 @@
<ClInclude Include="..\..\..\source\libs\asura-lib-utils\math\vector3.hpp" />
<ClInclude Include="..\..\..\source\libs\asura-lib-utils\math\vector4.h" />
<ClInclude Include="..\..\..\source\libs\asura-lib-utils\module.h" />
+ <ClInclude Include="..\..\..\source\libs\asura-lib-utils\scripting\lua_env.h" />
<ClInclude Include="..\..\..\source\libs\asura-lib-utils\scripting\portable.hpp" />
<ClInclude Include="..\..\..\source\libs\asura-lib-utils\singleton.hpp" />
<ClInclude Include="..\..\..\source\libs\asura-lib-utils\stringmap.hpp" />
@@ -187,7 +188,7 @@
<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\thread_task.h" />
+ <ClInclude Include="..\..\..\source\libs\asura-lib-utils\threading\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 ec034b9..5d8b40f 100644
--- a/build/libs/asura-lib-utils/asura-lib-utils.vcxproj.filters
+++ b/build/libs/asura-lib-utils/asura-lib-utils.vcxproj.filters
@@ -95,9 +95,6 @@
<ClCompile Include="..\..\..\source\libs\asura-lib-utils\threading\thread_impl_win32.cpp">
<Filter>threading</Filter>
</ClCompile>
- <ClCompile Include="..\..\..\source\libs\asura-lib-utils\threading\thread_task.cpp">
- <Filter>threading</Filter>
- </ClCompile>
<ClCompile Include="..\..\..\source\libs\asura-lib-utils\io\io_task.cpp">
<Filter>io</Filter>
</ClCompile>
@@ -116,6 +113,9 @@
<ClCompile Include="..\..\..\source\libs\asura-lib-utils\math\quaternion.cpp">
<Filter>math</Filter>
</ClCompile>
+ <ClCompile Include="..\..\..\source\libs\asura-lib-utils\threading\task.cpp">
+ <Filter>threading</Filter>
+ </ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\..\source\libs\asura-lib-utils\exceptions\exception.h">
@@ -198,9 +198,6 @@
<ClInclude Include="..\..\..\source\libs\asura-lib-utils\threading\thread_impl_win32.h">
<Filter>threading</Filter>
</ClInclude>
- <ClInclude Include="..\..\..\source\libs\asura-lib-utils\threading\thread_task.h">
- <Filter>threading</Filter>
- </ClInclude>
<ClInclude Include="..\..\..\source\libs\asura-lib-utils\io\io_task.h">
<Filter>io</Filter>
</ClInclude>
@@ -210,6 +207,12 @@
<ClInclude Include="..\..\..\source\libs\asura-lib-utils\math\quaternion.h">
<Filter>math</Filter>
</ClInclude>
+ <ClInclude Include="..\..\..\source\libs\asura-lib-utils\scripting\lua_env.h">
+ <Filter>scripting</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\..\source\libs\asura-lib-utils\threading\task.h">
+ <Filter>threading</Filter>
+ </ClInclude>
</ItemGroup>
<ItemGroup>
<None Include="..\..\..\source\libs\asura-lib-utils\math\rect.inl">
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/libs/asura-lib-core/graphics/image_data.cpp b/source/libs/asura-lib-core/graphics/image_data.cpp
index 28c706a..b79dfab 100644
--- a/source/libs/asura-lib-core/graphics/image_data.cpp
+++ b/source/libs/asura-lib-core/graphics/image_data.cpp
@@ -16,7 +16,7 @@ namespace AsuraEngine
new STBDecoder() // jpeg, tga, bmp
};
- ImageData::ImageData(const Filesystem::DataBuffer& buffer)
+ ImageData::ImageData(const IO::DataBuffer& buffer)
: DecodedData(buffer)
{
}
@@ -30,7 +30,7 @@ namespace AsuraEngine
///
/// ޷ɹ׳쳣
///
- void ImageData::Decode(const Filesystem::DataBuffer& buffer)
+ void ImageData::Decode(const IO::DataBuffer& buffer)
{
for (ImageDecoder* decoder : ImageDecoders)
{
diff --git a/source/libs/asura-lib-core/graphics/image_data.h b/source/libs/asura-lib-core/graphics/image_data.h
index 53a9e85..820e276 100644
--- a/source/libs/asura-lib-core/graphics/image_data.h
+++ b/source/libs/asura-lib-core/graphics/image_data.h
@@ -4,8 +4,9 @@
#include <list>
#include <asura-lib-utils/scripting/portable.hpp>
-#include <asura-lib-utils/filesystem/decoded_data.h>
-#include <asura-lib-utils/filesystem/data_buffer.h>
+#include <asura-lib-utils/io/decoded_data.h>
+#include <asura-lib-utils/io/data_buffer.h>
+#include <asura-lib-utils/threading/thread.h>
#include "pixel_format.h"
#include "color.h"
@@ -18,17 +19,22 @@ namespace AsuraEngine
class ImageDecoder;
class ImageData ASURA_FINAL
- : public Filesystem::DecodedData
+ : public AEIO::DecodedData
, public Scripting::Portable<ImageData>
{
public:
+ LUAX_DECL_FACTORY(ImageData);
+
///
/// ͼƬļϢʧܣ׳쳣
///
- ImageData(const Filesystem::DataBuffer& buffer);
+ ImageData(const AEIO::DataBuffer& buffer);
~ImageData();
+ void Load(const AEIO::DataBuffer& buffer);
+ void LoadAsync(const AEIO::DataBuffer& buffer, AEThreading::Thread* thread);
+
Color GetPixel(uint x, uint y);
uint width, height;
@@ -38,17 +44,13 @@ namespace AsuraEngine
private:
- void Decode(const Filesystem::DataBuffer& buffer) override;
+ void Decode(const AEIO::DataBuffer& buffer) override;
///
/// ڵһ׼image dataʱṩdecoderڼdecodersмѡԡ
///
static std::list<ImageDecoder*> ImageDecoders;
- public:
-
- LUAX_DECL_FACTORY(ImageData);
-
LUAX_DECL_METHOD(_New);
LUAX_DECL_METHOD(_GetPixel);
LUAX_DECL_METHOD(_GetSize);
@@ -61,4 +63,6 @@ namespace AsuraEngine
}
}
+namespace AEGraphics = AsuraEngine::Graphics;
+
#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 a96c293..1a50e56 100644
--- a/source/libs/asura-lib-utils/io/io_task.cpp
+++ b/source/libs/asura-lib-utils/io/io_task.cpp
@@ -1,5 +1,8 @@
#include "io_task.h"
+using namespace AEScripting;
+using namespace Luax;
+
namespace AsuraEngine
{
namespace IO
@@ -20,9 +23,17 @@ namespace AsuraEngine
return true;
}
- void IOTask::Invoke()
+ void IOTask::Invoke(lua_State* thread)
{
-
+ if (mCallback)
+ {
+ LuaxScopedState state(thread);
+ if (PushLuaxMemberRef(state, mCallback))
+ {
+ PushLuaxMemberRef(state, mDstRef);
+ state.Call(1, 0);
+ }
+ }
}
}
diff --git a/source/libs/asura-lib-utils/io/io_task.h b/source/libs/asura-lib-utils/io/io_task.h
index aa5b38e..a79b2a8 100644
--- a/source/libs/asura-lib-utils/io/io_task.h
+++ b/source/libs/asura-lib-utils/io/io_task.h
@@ -4,7 +4,7 @@
#include <string>
#include "../scripting/portable.hpp"
-#include "../threading/thread_task.h"
+#include "../threading/task.h"
#include "data_buffer.h"
@@ -18,7 +18,7 @@ namespace AsuraEngine
///
class IOTask ASURA_FINAL
: public AEScripting::Portable<IOTask>
- , public AEThreading::ThreadTask
+ , public AEThreading::Task
{
public:
@@ -28,13 +28,13 @@ namespace AsuraEngine
~IOTask();
bool Execute() override ;
- void Invoke() override;
+ void Invoke(lua_State* thread) override;
private:
std::string mPath;
- DataBuffer* mDst;
+ DataBuffer* mDst;
Luax::LuaxMemberRef mDstRef;
LUAX_DECL_METHOD(_New);
diff --git a/source/libs/asura-lib-utils/scripting/lua_env.h b/source/libs/asura-lib-utils/scripting/lua_env.h
new file mode 100644
index 0000000..a467479
--- /dev/null
+++ b/source/libs/asura-lib-utils/scripting/lua_env.h
@@ -0,0 +1,56 @@
+#ifndef __ASURA_LUA_ENV_H__
+#define __ASURA_LUA_ENV_H__
+
+extern "C"
+{
+#include <Lua51/lua.h>
+#include <Lua51/lauxlib.h>
+}
+#include <Luax/luax.h>
+
+#include "../singleton.hpp"
+
+namespace AsuraEngine
+{
+ namespace Scripting
+ {
+
+ ///
+ /// ͨӿڷlua state
+ ///
+ class LuaEnv ASURA_FINAL : public Singleton<LuaEnv>
+ {
+ public:
+
+ LuaEnv() : mMainState(0){};
+ ~LuaEnv() {};
+
+ ///
+ /// ִջ
+ ///
+ inline void Init(lua_State* L) { ASSERT(!mMainState); mMainState = L; };
+
+ inline lua_State* GetMainState() { return mMainState; };
+
+ private:
+
+ ///
+ /// ̱߳һluaһAsuraԶֻһ󲿷ִ붼УֻһΡ
+ /// ߳\ִջӦglobal_Stateģ
+ ///
+ /// struct lua_State *mainthread;
+ ///
+ /// ʹlua_newstate()ᴴһһglobal_Stateṹһ߳lua_Stateء
+ /// global_State̹߳˵һ߳lua_newstate()⣬߳lua_newthread()
+ ///
+ ///
+ lua_State* mMainState;
+
+ };
+
+ }
+}
+
+namespace AEScripting = AsuraEngine::Scripting;
+
+#endif \ No newline at end of file
diff --git a/source/libs/asura-lib-utils/scripting/portable.hpp b/source/libs/asura-lib-utils/scripting/portable.hpp
index 097a9fe..5badf8d 100644
--- a/source/libs/asura-lib-utils/scripting/portable.hpp
+++ b/source/libs/asura-lib-utils/scripting/portable.hpp
@@ -3,12 +3,7 @@
#include "../type.h"
-extern "C"
-{
- #include <Lua51/lua.h>
- #include <Lua51/lauxlib.h>
-}
-#include <Luax/luax.h>
+#include "lua_env.h"
namespace AsuraEngine
{
diff --git a/source/libs/asura-lib-utils/threading/binding/_thread.cpp b/source/libs/asura-lib-utils/threading/binding/_thread.cpp
index 9f6d228..00252a9 100644
--- a/source/libs/asura-lib-utils/threading/binding/_thread.cpp
+++ b/source/libs/asura-lib-utils/threading/binding/_thread.cpp
@@ -1,4 +1,5 @@
#include "../thread.h"
+#include "../task.h"
using namespace std;
@@ -33,7 +34,7 @@ namespace AsuraEngine
cc8* name = state.GetValue<cc8*>(1, "");
- Thread* thread = new Thread(name);
+ Thread* thread = new Thread(state, name);
thread->PushLuaxUserdata(state);
return 1;
@@ -63,14 +64,14 @@ namespace AsuraEngine
return 0;
}
- // successed = thread:AddTask(thread_task)
+ // successed = thread:AddTask(task)
LUAX_IMPL_METHOD(Thread, _AddTask)
{
LUAX_PREPARE(L, Thread);
- ThreadTask* task = state.GetUserdata<ThreadTask>(2);
+ Task* task = state.GetUserdata<Task>(2);
self->AddTask(task);
- self->LuaxRetain<ThreadTask>(state, task);
+ self->LuaxRetain<Task>(state, task);
return 0;
}
diff --git a/source/libs/asura-lib-utils/threading/coroutine.cpp b/source/libs/asura-lib-utils/threading/coroutine.cpp
index e69de29..9f65c5f 100644
--- a/source/libs/asura-lib-utils/threading/coroutine.cpp
+++ b/source/libs/asura-lib-utils/threading/coroutine.cpp
@@ -0,0 +1,16 @@
+#include "coroutine.h"
+
+namespace AsuraEngine
+{
+ namespace Threading
+ {
+/*
+ Coroutine::Coroutine()
+ {
+
+ }
+*/
+
+
+ }
+}
diff --git a/source/libs/asura-lib-utils/threading/coroutine.h b/source/libs/asura-lib-utils/threading/coroutine.h
index 75d9a10..01af654 100644
--- a/source/libs/asura-lib-utils/threading/coroutine.h
+++ b/source/libs/asura-lib-utils/threading/coroutine.h
@@ -1,7 +1,7 @@
#ifndef __ASURA_COROUTINE_H__
#define __ASURA_COROUTINE_H__
-#include <asura-lib-utils/scripting/portable.hpp>
+#include "../scripting/portable.hpp"
namespace AsuraEngine
{
@@ -18,8 +18,15 @@ namespace AsuraEngine
LUAX_DECL_FACTORY(Coroutine);
+
+
private:
+ ///
+ /// ǰЭ̵state
+ ///
+ lua_State* mThreadState;
+
LUAX_DECL_METHOD(_New);
LUAX_DECL_METHOD(_Run);
diff --git a/source/libs/asura-lib-utils/threading/mutex.cpp b/source/libs/asura-lib-utils/threading/mutex.cpp
index e0b6e1e..663ac28 100644
--- a/source/libs/asura-lib-utils/threading/mutex.cpp
+++ b/source/libs/asura-lib-utils/threading/mutex.cpp
@@ -23,8 +23,11 @@ namespace AsuraEngine
Mutex::Mutex()
: mImpl(nullptr)
{
-#if ASURA_THREAD_WIN32
- try_create_mutex(MutexImplWin32);
+#if ASURA_MUTEX_WIN32_CRITICLE_SECTION
+ try_create_mutex(MutexImplWin32_CS);
+#endif
+#if ASURA_MUTEX_WIN32_KERNAL_MUTEX
+ try_create_mutex(MutexImplWin32_KM);
#endif
ASSERT(mImpl);
}
@@ -48,34 +51,56 @@ namespace AsuraEngine
mImpl->Unlock();
}
-#if ASURA_THREAD_WIN32
- MutexImplWin32::MutexImplWin32()
+#if ASURA_MUTEX_WIN32_CRITICLE_SECTION
+
+ MutexImplWin32_CS::MutexImplWin32_CS()
{
- //mHandle = ::CreateMutex(NULL, FALSE, NULL);
- //if (!mHandle)
- // throw Exception("Cant use win32 mutex.");
::InitializeCriticalSection(&mMutex);
}
- MutexImplWin32::~MutexImplWin32()
+ MutexImplWin32_CS::~MutexImplWin32_CS()
{
- //::CloseHandle(mHandle);
- //mHandle = NULL;
::DeleteCriticalSection(&mMutex);
}
- void MutexImplWin32::Lock()
+ void MutexImplWin32_CS::Lock()
{
- //::WaitForSingleObject(mHandle, INFINITE);
::EnterCriticalSection(&mMutex);
}
- void MutexImplWin32::Unlock()
+ void MutexImplWin32_CS::Unlock()
{
- //::ReleaseMutex(mHandle);
::LeaveCriticalSection(&mMutex);
}
-#endif // ASURA_THREAD_WIN32
+
+#endif // ASURA_MUTEX_WIN32_CRITICLE_SECTION
+
+#if ASURA_MUTEX_WIN32_KERNAL_MUTEX
+
+ MutexImplWin32_KM::MutexImplWin32_KM()
+ {
+ mHandle = ::CreateMutex(NULL, FALSE, NULL);
+ if (!mHandle)
+ throw Exception("Cant use win32 mutex.");
+ }
+
+ MutexImplWin32_KM::~MutexImplWin32_KM()
+ {
+ ::CloseHandle(mHandle);
+ mHandle = NULL;
+ }
+
+ void MutexImplWin32_KM::Lock()
+ {
+ ::WaitForSingleObject(mHandle, INFINITE);
+ }
+
+ void MutexImplWin32_KM::Unlock()
+ {
+ ::ReleaseMutex(mHandle);
+ }
+
+#endif // ASURA_MUTEX_WIN32_KERNAL_MUTEX
}
}
diff --git a/source/libs/asura-lib-utils/threading/mutex.h b/source/libs/asura-lib-utils/threading/mutex.h
index 5ed45ae..51fe63e 100644
--- a/source/libs/asura-lib-utils/threading/mutex.h
+++ b/source/libs/asura-lib-utils/threading/mutex.h
@@ -49,6 +49,7 @@ namespace AsuraEngine
Mutex& m;
};
+// ڵջӴλÿʼջΪٽ
#define lock(mutex) Lock _asura_scoped_lock_0x0_(mutex)
#define lock2(mutex) Lock _asura_scoped_lock_0x1_(mutex)
#define lock3(mutex) Lock _asura_scoped_lock_0x2_(mutex)
@@ -67,27 +68,47 @@ namespace AsuraEngine
};
-#if ASURA_THREAD_WIN32
+#if ASURA_MUTEX_WIN32_CRITICLE_SECTION
//https://blog.csdn.net/l799623787/article/details/18259949
- class MutexImplWin32 ASURA_FINAL : public MutexImpl
+ class MutexImplWin32_CS ASURA_FINAL : public MutexImpl
{
public:
- MutexImplWin32();
- ~MutexImplWin32();
+ MutexImplWin32_CS();
+ ~MutexImplWin32_CS();
void Lock() override;
void Unlock() override;
- private:
+ private:
//HANDLE mHandle;
CRITICAL_SECTION mMutex;
};
-#endif // ASURA_THREAD_WIN32
+#endif // ASURA_MUTEX_WIN32_CRITICLE_SECTION
+
+#if ASURA_MUTEX_WIN32_KERNAL_MUTEX
+
+ class MutexImplWin32_KM ASURA_FINAL : public MutexImpl
+ {
+ public:
+
+ MutexImplWin32_KM();
+ ~MutexImplWin32_KM();
+
+ void Lock() override;
+ void Unlock() override;
+
+ private:
+
+ HANDLE mHandle;
+
+ };
+
+#endif // ASURA_MUTEX_WIN32_KERNAL_MUTEX
#if ASURA_THREAD_STD
diff --git a/source/libs/asura-lib-utils/threading/thread_task.cpp b/source/libs/asura-lib-utils/threading/task.cpp
index e69de29..e69de29 100644
--- a/source/libs/asura-lib-utils/threading/thread_task.cpp
+++ b/source/libs/asura-lib-utils/threading/task.cpp
diff --git a/source/libs/asura-lib-utils/threading/thread_task.h b/source/libs/asura-lib-utils/threading/task.h
index 1ea0a1a..9f78860 100644
--- a/source/libs/asura-lib-utils/threading/thread_task.h
+++ b/source/libs/asura-lib-utils/threading/task.h
@@ -12,13 +12,13 @@ namespace AsuraEngine
///
/// ϣһ̴߳񣬼̳TaskдExecute
///
- ASURA_ABSTRACT class ThreadTask
+ ASURA_ABSTRACT class Task
: virtual public AEScripting::NativeAccessor
{
public:
- ThreadTask();
- virtual ~ThreadTask();
+ Task();
+ virtual ~Task();
///
/// ִɺ󷵻trueûص
@@ -28,7 +28,7 @@ namespace AsuraEngine
///
/// ûص
///
- virtual void Invoke() = 0;
+ virtual void Invoke(lua_State* thread) = 0;
protected:
diff --git a/source/libs/asura-lib-utils/threading/thread.cpp b/source/libs/asura-lib-utils/threading/thread.cpp
index d1b055d..51738de 100644
--- a/source/libs/asura-lib-utils/threading/thread.cpp
+++ b/source/libs/asura-lib-utils/threading/thread.cpp
@@ -10,9 +10,12 @@ namespace AsuraEngine
namespace Threading
{
- Thread::Thread(const std::string& name)
+ Thread::Thread(Luax::LuaxState& father, const std::string& name)
: mName(name)
{
+ mState = lua_newthread(father);
+ SetLuaxMemberRef(father, mStateRef, -1);
+ lua_pop(father, 1); // mState
}
Thread::~Thread()
@@ -31,8 +34,9 @@ namespace AsuraEngine
} \
}
- bool Thread::AddTask(ThreadTask* task)
+ bool Thread::AddTask(Task* task)
{
+ lock(mMutex);
mTaskQueue.push(task);
return true;
}
@@ -43,30 +47,30 @@ namespace AsuraEngine
try_start_thread(ThreadImplWin32);
#endif
- assert(mImpl);
+ ASSERT(mImpl);
}
void Thread::Join()
{
- assert(mImpl);
+ ASSERT(mImpl);
mImpl->Join();
}
void Thread::Kill()
{
- assert(mImpl);
+ ASSERT(mImpl);
mImpl->Kill();
}
bool Thread::IsRunning()
{
- assert(mImpl);
+ ASSERT(mImpl);
return mImpl->IsRunning();
}
bool Thread::IsCurrent()
{
- assert(mImpl);
+ ASSERT(mImpl);
return mImpl->IsCurrent();
}
@@ -79,9 +83,9 @@ namespace AsuraEngine
{
while (!mTaskQueue.empty())
{
- ThreadTask* task = mTaskQueue.front();
+ Task* task = mTaskQueue.front();
if (task->Execute())
- task->Invoke();
+ task->Invoke(mState);
mMutex.Lock();
mTaskQueue.pop();
diff --git a/source/libs/asura-lib-utils/threading/thread.h b/source/libs/asura-lib-utils/threading/thread.h
index 24b549c..1bd5f15 100644
--- a/source/libs/asura-lib-utils/threading/thread.h
+++ b/source/libs/asura-lib-utils/threading/thread.h
@@ -6,7 +6,7 @@
#include <asura-lib-utils/scripting/portable.hpp>
-#include "thread_task.h"
+#include "task.h"
#include "mutex.h"
namespace AsuraEngine
@@ -26,10 +26,10 @@ namespace AsuraEngine
LUAX_DECL_FACTORY(Thread);
- Thread(const std::string& name = "");
+ Thread(Luax::LuaxState& father, const std::string& name = "");
~Thread();
- bool AddTask(ThreadTask* task);
+ bool AddTask(Task* task);
void Start(uint32 stacksize = 0);
@@ -66,15 +66,20 @@ namespace AsuraEngine
LUAX_DECL_METHOD(_IsCurrent);
LUAX_DECL_METHOD(_GetName);
+ ThreadImpl* mImpl;
+ std::string mName;
+
///
/// С
///
- std::queue<ThreadTask*> mTaskQueue;
-
- Mutex mMutex;
+ std::queue<Task*> mTaskQueue;
+ Mutex mMutex;
- ThreadImpl* mImpl;
- std::string mName;
+ ///
+ /// ̵߳luaִջΪ˱ִջͻ
+ ///
+ lua_State* mState;
+ Luax::LuaxMemberRef mStateRef;
};
diff --git a/source/libs/asura-lib-utils/utils_config.h b/source/libs/asura-lib-utils/utils_config.h
index d5208d5..02837dc 100644
--- a/source/libs/asura-lib-utils/utils_config.h
+++ b/source/libs/asura-lib-utils/utils_config.h
@@ -4,4 +4,7 @@
#define ASURA_THREAD_WIN32 1
#define ASURA_THREAD_STD 1
+#define ASURA_MUTEX_WIN32_CRITICLE_SECTION 1
+#define ASURA_MUTEX_WIN32_KERNAL_MUTEX 1
+
#endif \ No newline at end of file
diff --git a/source/tests/05-physfs/main.cpp b/source/tests/05-physfs/main.cpp
index 454d6cf..28e55e9 100644
--- a/source/tests/05-physfs/main.cpp
+++ b/source/tests/05-physfs/main.cpp
@@ -39,6 +39,7 @@ int main(int argc, char* args[])
AsuraEngine::UtilsModule utils;
lua_State* L = LuaxRuntime::Get().Open();
+ AEScripting::LuaEnv::Get()->Init(L);
LuaxState& state = LuaxRuntime::Get().GetLuaxState(L);
state.OpenLibs();
state.PushGlobalNamespace();