aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2018-10-23 22:09:22 +0800
committerchai <chaifix@163.com>2018-10-23 22:09:22 +0800
commitd74e03063095d43c654fa52c3868f7ef8fce69f1 (patch)
treeee91251c170edafacca3d3242e5b44444fb70e79
parent6551adeca70d4299a99d45245d4e13dbfdfa87e5 (diff)
*粒子系统
-rw-r--r--build/vc++/jin.vcxproj56
-rw-r--r--build/vc++/jin.vcxproj.filters122
-rw-r--r--build/vc++/libjin/libjin.vcxproj8
-rw-r--r--build/vc++/libjin/libjin.vcxproj.filters36
-rw-r--r--src/libjin/Common/je_temporary.h4
-rw-r--r--src/libjin/Graphics/animation/je_animation.h1
-rw-r--r--src/libjin/Graphics/animation/je_clip.h2
-rw-r--r--src/libjin/Graphics/je_color.h21
-rw-r--r--src/libjin/Graphics/je_graphic.h2
-rw-r--r--src/libjin/Graphics/je_sprite_batch.h3
-rw-r--r--src/libjin/Graphics/particle/je_particle.h66
-rw-r--r--src/libjin/Graphics/particle/je_particle_batch.h20
-rw-r--r--src/libjin/Graphics/particle/je_particle_emitter.cpp11
-rw-r--r--src/libjin/Graphics/particle/je_particle_emitter.h37
-rw-r--r--src/libjin/Graphics/particle/je_particle_pool.cpp (renamed from src/libjin/Graphics/particle/je_particle_batch.cpp)0
-rw-r--r--src/libjin/Graphics/particle/je_particle_pool.h53
-rw-r--r--src/libjin/Graphics/particle/je_particle_system.cpp12
-rw-r--r--src/libjin/Graphics/particle/je_particle_system.h85
-rw-r--r--src/libjin/Math/je_math.h6
-rw-r--r--src/lua/modules/graphics/je_lua_particle_system.cpp11
20 files changed, 387 insertions, 169 deletions
diff --git a/build/vc++/jin.vcxproj b/build/vc++/jin.vcxproj
index a12378b..01b3a9a 100644
--- a/build/vc++/jin.vcxproj
+++ b/build/vc++/jin.vcxproj
@@ -145,31 +145,33 @@
<ItemGroup>
<ClCompile Include="..\..\src\lua\jin.cpp" />
<ClCompile Include="..\..\src\lua\main.cpp" />
- <ClCompile Include="..\..\src\lua\modules\audio\audio.cpp" />
- <ClCompile Include="..\..\src\lua\modules\audio\source.cpp" />
- <ClCompile Include="..\..\src\lua\modules\bit\bit.cpp" />
- <ClCompile Include="..\..\src\lua\modules\core\core.cpp" />
- <ClCompile Include="..\..\src\lua\modules\event\event.cpp" />
- <ClCompile Include="..\..\src\lua\modules\filesystem\filesystem.cpp" />
- <ClCompile Include="..\..\src\lua\modules\graphics\bitmap.cpp" />
- <ClCompile Include="..\..\src\lua\modules\graphics\canvas.cpp" />
- <ClCompile Include="..\..\src\lua\modules\graphics\text.cpp" />
- <ClCompile Include="..\..\src\lua\modules\graphics\texture_font.cpp" />
- <ClCompile Include="..\..\src\lua\modules\graphics\ttf.cpp" />
- <ClCompile Include="..\..\src\lua\modules\graphics\ttfData.cpp" />
- <ClCompile Include="..\..\src\lua\modules\graphics\graphics.cpp" />
- <ClCompile Include="..\..\src\lua\modules\graphics\page.cpp" />
- <ClCompile Include="..\..\src\lua\modules\graphics\texture.cpp" />
- <ClCompile Include="..\..\src\lua\modules\graphics\shader.cpp" />
- <ClCompile Include="..\..\src\lua\modules\joypad\joypad.cpp" />
- <ClCompile Include="..\..\src\lua\modules\keyboard\keyboard.cpp" />
- <ClCompile Include="..\..\src\lua\modules\math\math.cpp" />
- <ClCompile Include="..\..\src\lua\modules\mouse\mouse.cpp" />
- <ClCompile Include="..\..\src\lua\modules\net\buffer.cpp" />
- <ClCompile Include="..\..\src\lua\modules\net\net.cpp" />
- <ClCompile Include="..\..\src\lua\modules\net\socket.cpp" />
- <ClCompile Include="..\..\src\lua\modules\thread\thread.cpp" />
- <ClCompile Include="..\..\src\lua\modules\time\time.cpp" />
+ <ClCompile Include="..\..\src\lua\modules\audio\je_lua_audio.cpp" />
+ <ClCompile Include="..\..\src\lua\modules\audio\je_lua_source.cpp" />
+ <ClCompile Include="..\..\src\lua\modules\bit\je_lua_bit.cpp" />
+ <ClCompile Include="..\..\src\lua\modules\core\je_lua_core.cpp" />
+ <ClCompile Include="..\..\src\lua\modules\event\je_lua_event.cpp" />
+ <ClCompile Include="..\..\src\lua\modules\filesystem\je_lua_filesystem.cpp" />
+ <ClCompile Include="..\..\src\lua\modules\graphics\je_lua_bitmap.cpp" />
+ <ClCompile Include="..\..\src\lua\modules\graphics\je_lua_canvas.cpp" />
+ <ClCompile Include="..\..\src\lua\modules\graphics\je_lua_particle_system.cpp" />
+ <ClCompile Include="..\..\src\lua\modules\graphics\je_lua_sprite.cpp" />
+ <ClCompile Include="..\..\src\lua\modules\graphics\je_lua_text.cpp" />
+ <ClCompile Include="..\..\src\lua\modules\graphics\je_lua_texture_font.cpp" />
+ <ClCompile Include="..\..\src\lua\modules\graphics\je_lua_ttf.cpp" />
+ <ClCompile Include="..\..\src\lua\modules\graphics\je_lua_ttf_data.cpp" />
+ <ClCompile Include="..\..\src\lua\modules\graphics\je_lua_graphics.cpp" />
+ <ClCompile Include="..\..\src\lua\modules\graphics\je_lua_page.cpp" />
+ <ClCompile Include="..\..\src\lua\modules\graphics\je_lua_texture.cpp" />
+ <ClCompile Include="..\..\src\lua\modules\graphics\je_lua_shader.cpp" />
+ <ClCompile Include="..\..\src\lua\modules\joypad\je_lua_joypad.cpp" />
+ <ClCompile Include="..\..\src\lua\modules\keyboard\je_lua_keyboard.cpp" />
+ <ClCompile Include="..\..\src\lua\modules\math\je_lua_math.cpp" />
+ <ClCompile Include="..\..\src\lua\modules\mouse\je_lua_mouse.cpp" />
+ <ClCompile Include="..\..\src\lua\modules\net\je_lua_buffer.cpp" />
+ <ClCompile Include="..\..\src\lua\modules\net\je_lua_net.cpp" />
+ <ClCompile Include="..\..\src\lua\modules\net\je_lua_socket.cpp" />
+ <ClCompile Include="..\..\src\lua\modules\thread\je_lua_thread.cpp" />
+ <ClCompile Include="..\..\src\lua\modules\time\je_lua_time.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\src\lua\common\common.h" />
@@ -188,8 +190,8 @@
<ClInclude Include="..\..\src\lua\libraries\luax\luax.h" />
<ClInclude Include="..\..\src\lua\luax.h" />
<ClInclude Include="..\..\src\lua\modules\luax.h" />
- <ClInclude Include="..\..\src\lua\modules\net\buffer.h" />
- <ClInclude Include="..\..\src\lua\modules\thread\thread.h" />
+ <ClInclude Include="..\..\src\lua\modules\net\je_lua_buffer.h" />
+ <ClInclude Include="..\..\src\lua\modules\thread\je_lua_thread.h" />
<ClInclude Include="..\..\src\lua\modules\types.h" />
<ClInclude Include="..\..\src\lua\resources\font.ttf.h" />
<ClInclude Include="resource.h" />
diff --git a/build/vc++/jin.vcxproj.filters b/build/vc++/jin.vcxproj.filters
index 1a17f85..ba41a45 100644
--- a/build/vc++/jin.vcxproj.filters
+++ b/build/vc++/jin.vcxproj.filters
@@ -66,87 +66,93 @@
</Filter>
</ItemGroup>
<ItemGroup>
- <ClCompile Include="..\..\src\lua\modules\audio\audio.cpp">
+ <ClCompile Include="..\..\src\lua\jin.cpp">
+ <Filter>src</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\src\lua\main.cpp">
+ <Filter>src</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\src\lua\modules\graphics\je_lua_sprite.cpp">
+ <Filter>src\modules\graphics</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\src\lua\modules\graphics\je_lua_graphics.cpp">
+ <Filter>src\modules\graphics</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\src\lua\modules\graphics\je_lua_page.cpp">
+ <Filter>src\modules\graphics</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\src\lua\modules\graphics\je_lua_shader.cpp">
+ <Filter>src\modules\graphics</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\src\lua\modules\graphics\je_lua_text.cpp">
+ <Filter>src\modules\graphics</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\src\lua\modules\graphics\je_lua_texture.cpp">
+ <Filter>src\modules\graphics</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\src\lua\modules\graphics\je_lua_texture_font.cpp">
+ <Filter>src\modules\graphics</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\src\lua\modules\graphics\je_lua_ttf.cpp">
+ <Filter>src\modules\graphics</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\src\lua\modules\graphics\je_lua_ttf_data.cpp">
+ <Filter>src\modules\graphics</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\src\lua\modules\graphics\je_lua_canvas.cpp">
+ <Filter>src\modules\graphics</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\src\lua\modules\graphics\je_lua_bitmap.cpp">
+ <Filter>src\modules\graphics</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\src\lua\modules\audio\je_lua_audio.cpp">
<Filter>src\modules\audio</Filter>
</ClCompile>
- <ClCompile Include="..\..\src\lua\modules\audio\source.cpp">
+ <ClCompile Include="..\..\src\lua\modules\audio\je_lua_source.cpp">
<Filter>src\modules\audio</Filter>
</ClCompile>
- <ClCompile Include="..\..\src\lua\modules\bit\bit.cpp">
+ <ClCompile Include="..\..\src\lua\modules\bit\je_lua_bit.cpp">
<Filter>src\modules\bit</Filter>
</ClCompile>
- <ClCompile Include="..\..\src\lua\modules\core\core.cpp">
+ <ClCompile Include="..\..\src\lua\modules\core\je_lua_core.cpp">
<Filter>src\modules\core</Filter>
</ClCompile>
- <ClCompile Include="..\..\src\lua\modules\event\event.cpp">
+ <ClCompile Include="..\..\src\lua\modules\event\je_lua_event.cpp">
<Filter>src\modules\event</Filter>
</ClCompile>
- <ClCompile Include="..\..\src\lua\modules\filesystem\filesystem.cpp">
+ <ClCompile Include="..\..\src\lua\modules\filesystem\je_lua_filesystem.cpp">
<Filter>src\modules\filesystem</Filter>
</ClCompile>
- <ClCompile Include="..\..\src\lua\modules\graphics\canvas.cpp">
- <Filter>src\modules\graphics</Filter>
- </ClCompile>
- <ClCompile Include="..\..\src\lua\modules\graphics\graphics.cpp">
- <Filter>src\modules\graphics</Filter>
- </ClCompile>
- <ClCompile Include="..\..\src\lua\modules\joypad\joypad.cpp">
+ <ClCompile Include="..\..\src\lua\modules\joypad\je_lua_joypad.cpp">
<Filter>src\modules\joypad</Filter>
</ClCompile>
- <ClCompile Include="..\..\src\lua\modules\keyboard\keyboard.cpp">
+ <ClCompile Include="..\..\src\lua\modules\keyboard\je_lua_keyboard.cpp">
<Filter>src\modules\keyboard</Filter>
</ClCompile>
- <ClCompile Include="..\..\src\lua\modules\math\math.cpp">
+ <ClCompile Include="..\..\src\lua\modules\math\je_lua_math.cpp">
<Filter>src\modules\math</Filter>
</ClCompile>
- <ClCompile Include="..\..\src\lua\modules\mouse\mouse.cpp">
+ <ClCompile Include="..\..\src\lua\modules\mouse\je_lua_mouse.cpp">
<Filter>src\modules\mouse</Filter>
</ClCompile>
- <ClCompile Include="..\..\src\lua\modules\net\net.cpp">
+ <ClCompile Include="..\..\src\lua\modules\net\je_lua_buffer.cpp">
+ <Filter>src\modules\net</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\src\lua\modules\net\je_lua_net.cpp">
<Filter>src\modules\net</Filter>
</ClCompile>
- <ClCompile Include="..\..\src\lua\modules\net\socket.cpp">
+ <ClCompile Include="..\..\src\lua\modules\net\je_lua_socket.cpp">
<Filter>src\modules\net</Filter>
</ClCompile>
- <ClCompile Include="..\..\src\lua\modules\thread\thread.cpp">
+ <ClCompile Include="..\..\src\lua\modules\thread\je_lua_thread.cpp">
<Filter>src\modules\thread</Filter>
</ClCompile>
- <ClCompile Include="..\..\src\lua\modules\time\time.cpp">
+ <ClCompile Include="..\..\src\lua\modules\time\je_lua_time.cpp">
<Filter>src\modules\time</Filter>
</ClCompile>
- <ClCompile Include="..\..\src\lua\modules\graphics\texture.cpp">
- <Filter>src\modules\graphics</Filter>
- </ClCompile>
- <ClCompile Include="..\..\src\lua\modules\graphics\bitmap.cpp">
- <Filter>src\modules\graphics</Filter>
- </ClCompile>
- <ClCompile Include="..\..\src\lua\modules\graphics\shader.cpp">
- <Filter>src\modules\graphics</Filter>
- </ClCompile>
- <ClCompile Include="..\..\src\lua\jin.cpp">
- <Filter>src</Filter>
- </ClCompile>
- <ClCompile Include="..\..\src\lua\main.cpp">
- <Filter>src</Filter>
- </ClCompile>
- <ClCompile Include="..\..\src\lua\modules\graphics\page.cpp">
- <Filter>src\modules\graphics</Filter>
- </ClCompile>
- <ClCompile Include="..\..\src\lua\modules\graphics\ttfData.cpp">
- <Filter>src\modules\graphics</Filter>
- </ClCompile>
- <ClCompile Include="..\..\src\lua\modules\graphics\ttf.cpp">
+ <ClCompile Include="..\..\src\lua\modules\graphics\je_lua_particle_system.cpp">
<Filter>src\modules\graphics</Filter>
</ClCompile>
- <ClCompile Include="..\..\src\lua\modules\graphics\text.cpp">
- <Filter>src\modules\graphics</Filter>
- </ClCompile>
- <ClCompile Include="..\..\src\lua\modules\graphics\texture_font.cpp">
- <Filter>src\modules\graphics</Filter>
- </ClCompile>
- <ClCompile Include="..\..\src\lua\modules\net\buffer.cpp">
- <Filter>src\modules\net</Filter>
- </ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="resource.h">
@@ -170,12 +176,6 @@
<ClInclude Include="..\..\src\lua\resources\font.ttf.h">
<Filter>src\resources</Filter>
</ClInclude>
- <ClInclude Include="..\..\src\lua\modules\types.h">
- <Filter>src\modules</Filter>
- </ClInclude>
- <ClInclude Include="..\..\src\lua\modules\thread\thread.h">
- <Filter>src\modules\thread</Filter>
- </ClInclude>
<ClInclude Include="..\..\src\lua\common\error.h">
<Filter>src\common</Filter>
</ClInclude>
@@ -209,9 +209,15 @@
<ClInclude Include="..\..\src\lua\luax.h">
<Filter>src</Filter>
</ClInclude>
- <ClInclude Include="..\..\src\lua\modules\net\buffer.h">
+ <ClInclude Include="..\..\src\lua\modules\net\je_lua_buffer.h">
<Filter>src\modules\net</Filter>
</ClInclude>
+ <ClInclude Include="..\..\src\lua\modules\thread\je_lua_thread.h">
+ <Filter>src\modules\thread</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\src\lua\modules\types.h">
+ <Filter>src\modules</Filter>
+ </ClInclude>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="jin.rc">
diff --git a/build/vc++/libjin/libjin.vcxproj b/build/vc++/libjin/libjin.vcxproj
index 3a9deae..e7efdd7 100644
--- a/build/vc++/libjin/libjin.vcxproj
+++ b/build/vc++/libjin/libjin.vcxproj
@@ -182,8 +182,8 @@
<ClInclude Include="..\..\..\src\libjin\Graphics\je_gl.h" />
<ClInclude Include="..\..\..\src\libjin\graphics\je_sprite_batch.h" />
<ClInclude Include="..\..\..\src\libjin\graphics\particle\je_particle.h" />
- <ClInclude Include="..\..\..\src\libjin\graphics\particle\je_particle_batch.h" />
- <ClInclude Include="..\..\..\src\libjin\graphics\particle\je_particle_emitter.h" />
+ <ClInclude Include="..\..\..\src\libjin\Graphics\particle\je_particle_pool.h" />
+ <ClInclude Include="..\..\..\src\libjin\Graphics\particle\je_particle_emitter.h" />
<ClInclude Include="..\..\..\src\libjin\graphics\particle\je_particle_system.h" />
<ClInclude Include="..\..\..\src\libjin\Graphics\Shader\je_base.shader.h" />
<ClInclude Include="..\..\..\src\libjin\Graphics\Shader\je_default.shader.h" />
@@ -256,8 +256,8 @@
<ClCompile Include="..\..\..\src\libjin\Graphics\je_gl.cpp" />
<ClCompile Include="..\..\..\src\libjin\graphics\je_sprite_batch.cpp" />
<ClCompile Include="..\..\..\src\libjin\graphics\particle\je_particle.cpp" />
- <ClCompile Include="..\..\..\src\libjin\graphics\particle\je_particle_batch.cpp" />
- <ClCompile Include="..\..\..\src\libjin\graphics\particle\je_particle_emitter.cpp" />
+ <ClCompile Include="..\..\..\src\libjin\graphics\particle\je_particle_pool.cpp" />
+ <ClCompile Include="..\..\..\src\libjin\Graphics\particle\je_particle_emitter.cpp" />
<ClCompile Include="..\..\..\src\libjin\graphics\particle\je_particle_system.cpp" />
<ClCompile Include="..\..\..\src\libjin\Graphics\Shader\je_shader.cpp" />
<ClCompile Include="..\..\..\src\libjin\Graphics\je_shapes.cpp" />
diff --git a/build/vc++/libjin/libjin.vcxproj.filters b/build/vc++/libjin/libjin.vcxproj.filters
index bddf3cb..9c35e9d 100644
--- a/build/vc++/libjin/libjin.vcxproj.filters
+++ b/build/vc++/libjin/libjin.vcxproj.filters
@@ -306,18 +306,9 @@
<ClInclude Include="..\..\..\src\libjin\graphics\je_sprite_batch.h">
<Filter>source\graphics</Filter>
</ClInclude>
- <ClInclude Include="..\..\..\src\libjin\graphics\particle\je_particle_emitter.h">
- <Filter>source\graphics\particle</Filter>
- </ClInclude>
<ClInclude Include="..\..\..\src\libjin\graphics\particle\je_particle.h">
<Filter>source\graphics\particle</Filter>
</ClInclude>
- <ClInclude Include="..\..\..\src\libjin\graphics\particle\je_particle_batch.h">
- <Filter>source\graphics\particle</Filter>
- </ClInclude>
- <ClInclude Include="..\..\..\src\libjin\graphics\particle\je_particle_system.h">
- <Filter>source\graphics\particle</Filter>
- </ClInclude>
<ClInclude Include="..\..\..\src\libjin\ai\je_behavior_tree.h">
<Filter>source\ai</Filter>
</ClInclude>
@@ -345,6 +336,15 @@
<ClInclude Include="..\..\..\src\libjin\Graphics\je_graphic.h">
<Filter>source\graphics</Filter>
</ClInclude>
+ <ClInclude Include="..\..\..\src\libjin\graphics\particle\je_particle_system.h">
+ <Filter>source\graphics\particle</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\..\src\libjin\Graphics\particle\je_particle_emitter.h">
+ <Filter>source\graphics\particle</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\..\src\libjin\Graphics\particle\je_particle_pool.h">
+ <Filter>source\graphics\particle</Filter>
+ </ClInclude>
</ItemGroup>
<ItemGroup>
<None Include="..\..\..\src\libjin\README.md">
@@ -481,18 +481,9 @@
<ClCompile Include="..\..\..\src\libjin\graphics\je_sprite_batch.cpp">
<Filter>source\graphics</Filter>
</ClCompile>
- <ClCompile Include="..\..\..\src\libjin\graphics\particle\je_particle_system.cpp">
- <Filter>source\graphics\particle</Filter>
- </ClCompile>
- <ClCompile Include="..\..\..\src\libjin\graphics\particle\je_particle_emitter.cpp">
- <Filter>source\graphics\particle</Filter>
- </ClCompile>
<ClCompile Include="..\..\..\src\libjin\graphics\particle\je_particle.cpp">
<Filter>source\graphics\particle</Filter>
</ClCompile>
- <ClCompile Include="..\..\..\src\libjin\graphics\particle\je_particle_batch.cpp">
- <Filter>source\graphics\particle</Filter>
- </ClCompile>
<ClCompile Include="..\..\..\src\libjin\ai\je_behavior_tree.cpp">
<Filter>source\ai</Filter>
</ClCompile>
@@ -514,5 +505,14 @@
<ClCompile Include="..\..\..\src\libjin\Graphics\je_graphic.cpp">
<Filter>source\graphics</Filter>
</ClCompile>
+ <ClCompile Include="..\..\..\src\libjin\graphics\particle\je_particle_system.cpp">
+ <Filter>source\graphics\particle</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\..\src\libjin\Graphics\particle\je_particle_emitter.cpp">
+ <Filter>source\graphics\particle</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\..\src\libjin\graphics\particle\je_particle_pool.cpp">
+ <Filter>source\graphics\particle</Filter>
+ </ClCompile>
</ItemGroup>
</Project> \ No newline at end of file
diff --git a/src/libjin/Common/je_temporary.h b/src/libjin/Common/je_temporary.h
index 5af8704..9a127da 100644
--- a/src/libjin/Common/je_temporary.h
+++ b/src/libjin/Common/je_temporary.h
@@ -1,5 +1,5 @@
-#ifndef __JE_ON_STACK_H
-#define __JE_ON_STACK_H
+#ifndef __JE_TEMPORARY_H
+#define __JE_TEMPORARY_H
namespace JinEngine
{
diff --git a/src/libjin/Graphics/animation/je_animation.h b/src/libjin/Graphics/animation/je_animation.h
index b3bb9fb..ca5758f 100644
--- a/src/libjin/Graphics/animation/je_animation.h
+++ b/src/libjin/Graphics/animation/je_animation.h
@@ -23,7 +23,6 @@ namespace JinEngine
void play();
void switchClipByKey(const std::string& key);
- void switchClipByName(const std::string& name);
void switchClip(const Clip* clip);
///
diff --git a/src/libjin/Graphics/animation/je_clip.h b/src/libjin/Graphics/animation/je_clip.h
index cfa579f..eedffc0 100644
--- a/src/libjin/Graphics/animation/je_clip.h
+++ b/src/libjin/Graphics/animation/je_clip.h
@@ -25,7 +25,7 @@ namespace JinEngine
private:
///
- /// Frames
+ /// Key frames.
///
std::vector<Sprite*> mFrames;
diff --git a/src/libjin/Graphics/je_color.h b/src/libjin/Graphics/je_color.h
index 8fe7691..10d2818 100644
--- a/src/libjin/Graphics/je_color.h
+++ b/src/libjin/Graphics/je_color.h
@@ -6,6 +6,8 @@
#include "../core/je_configuration.h"
#if defined(jin_graphics)
+#include "../math/je_math.h"
+
#include "../common/je_types.h"
#include "../utils/je_endian.h"
@@ -28,6 +30,25 @@ namespace JinEngine
static const Color MAGENTA;
static const Color YELLOW;
+ ///
+ /// Get lerp color with given factor.
+ ///
+ /// @param start Start color.
+ /// @param end End color.
+ /// @param t Factor of interplation.
+ /// @return Color after interplation.
+ ///
+ static Color lerp(Color start, Color end, float t)
+ {
+ t = Math::clamp<float>(t, 0, 1);
+ Color c;
+ c.r = Math::lerp(start.r, end.r, t);
+ c.g = Math::lerp(start.g, end.g, t);
+ c.b = Math::lerp(start.b, end.b, t);
+ c.a = Math::lerp(start.a, end.a, t);
+ return c;
+ }
+
///
///
///
diff --git a/src/libjin/Graphics/je_graphic.h b/src/libjin/Graphics/je_graphic.h
index 5d5b2a5..d18575e 100644
--- a/src/libjin/Graphics/je_graphic.h
+++ b/src/libjin/Graphics/je_graphic.h
@@ -49,7 +49,7 @@ namespace JinEngine
///
///
///
- void render(const Math::Quad& slice, int x, int y, float sx = 1, float sy = 1, float r = 0, float ax = 0, float ay = 0);
+ void render(const Math::Quad& slice, int x, int y, float sx = 1, float sy = 1, float r = 0, float ox = 0, float oy = 0);
///
///
diff --git a/src/libjin/Graphics/je_sprite_batch.h b/src/libjin/Graphics/je_sprite_batch.h
index 85a7951..359ce24 100644
--- a/src/libjin/Graphics/je_sprite_batch.h
+++ b/src/libjin/Graphics/je_sprite_batch.h
@@ -6,6 +6,9 @@ namespace JinEngine
namespace Graphics
{
+ ///
+ /// For reducing draw call.
+ ///
class SpriteBatch
{
diff --git a/src/libjin/Graphics/particle/je_particle.h b/src/libjin/Graphics/particle/je_particle.h
index d32d9fe..474e15b 100644
--- a/src/libjin/Graphics/particle/je_particle.h
+++ b/src/libjin/Graphics/particle/je_particle.h
@@ -8,33 +8,61 @@ namespace JinEngine
namespace Graphics
{
+ class ParticleSystem;
+
///
- /// Single particle. Grab from love2d.
+ /// A single particle contains various properties of particle, such as position, accelaration, color and
+ /// other attributes changed over time.
///
- class Particle
+ struct Particle
{
- public:
+ ///
+ /// Whole life time.
+ ///
+ float lifeTime = 0.0f;
+
+ ///
+ /// Current life time.
+ ///
+ float life = 0.0f;
+
+ ///
+ /// Current position.
+ ///
+ float position[2] = {0,0};
+
+ ///
+ /// Emitte direction.
+ ///
+ float direction = 0;
+
+ Math::Vector2<float> speed;
+ Math::Vector2<float> linearAcceleration;
+ float radialAcceleration = 0;
+ float tangetialAcceleration = 0;
- private:
- float mLifeTime;
- float mLife;
- float mPosition[2];
- float mDirection;
+ ///
+ /// Size over lifetime.
+ ///
+ float size = 1;
+ float sizeBegin = 1;
+ float sizeEnd = 1;
- Math::Vector2<float> mSpeed;
- float mGravity;
- float mRadialAcceleration;
- float mTangetialAcceleration;
+ float rotation = 0;
+ float angle = 0;
- float mSize;
- float mSizeStart;
- float mSizeEnd;
+ ///
+ /// Color over lifetime.
+ ///
+ Color color = Color::WHITE;
+ Color colorStart = Color::WHITE;
+ Color colorEnd = Color::WHITE;
- float mRotation;
- float mSpinStart;
- float mSpinEnd;
+ ///
+ /// Is particle still alive? Alive is equivalent to NOT available in particle pool.
+ ///
+ bool alive = false;
- float color[4];
};
} // namespace Graphics
diff --git a/src/libjin/Graphics/particle/je_particle_batch.h b/src/libjin/Graphics/particle/je_particle_batch.h
deleted file mode 100644
index 19f4ded..0000000
--- a/src/libjin/Graphics/particle/je_particle_batch.h
+++ /dev/null
@@ -1,20 +0,0 @@
-#ifndef __JE_PARTICLE_BATCH_H
-#define __JE_PARTICLE_BATCH_H
-
-namespace JinEngine
-{
- namespace Graphics
- {
-
- ///
- ///
- ///
- class ParticleBatch
- {
-
- };
-
- } // namespace Graphics
-} // namespace JinEngine
-
-#endif \ No newline at end of file
diff --git a/src/libjin/Graphics/particle/je_particle_emitter.cpp b/src/libjin/Graphics/particle/je_particle_emitter.cpp
index d57d5ed..e69de29 100644
--- a/src/libjin/Graphics/particle/je_particle_emitter.cpp
+++ b/src/libjin/Graphics/particle/je_particle_emitter.cpp
@@ -1,11 +0,0 @@
-#include "je_particle_emitter.h"
-
-namespace JinEngine
-{
- namespace Graphics
- {
-
-
-
- }
-}
diff --git a/src/libjin/Graphics/particle/je_particle_emitter.h b/src/libjin/Graphics/particle/je_particle_emitter.h
index e191e36..95b7875 100644
--- a/src/libjin/Graphics/particle/je_particle_emitter.h
+++ b/src/libjin/Graphics/particle/je_particle_emitter.h
@@ -1,5 +1,10 @@
-#ifndef __JE_PARTICLE_EMMITTER_H
-#define __JE_PARTICLE_EMMITTER_H
+#ifndef __JE_PARTICLE_EMITTER_H
+#define __JE_PARTICLE_EMITTER_H
+
+#include "../../common/je_temporary.h"
+#include "../../math/je_vector2.hpp"
+
+#include "je_particle.h"
namespace JinEngine
{
@@ -7,17 +12,37 @@ namespace JinEngine
{
///
- /// Particle emitter
+ /// Definition of particle emitter.
///
+ struct ParticleEmitterDef : public Temporary
+ {
+ Math::Vector2<float> position;
+
+ };
+
class ParticleEmitter
{
public:
+ ParticleEmitter(const ParticleEmitterDef& def);
+
+ ///
+ /// Create new particle.
+ ///
+ Particle* emit();
+
+ ///
+ /// Emitter position.
+ ///
+ Math::Vector2<float> mPosition;
- private:
+ ///
+ ///
+ ///
+ float mDirection;
};
- }
-}
+ } // namespace Graphics
+} // namespace JinEngine
#endif \ No newline at end of file
diff --git a/src/libjin/Graphics/particle/je_particle_batch.cpp b/src/libjin/Graphics/particle/je_particle_pool.cpp
index e69de29..e69de29 100644
--- a/src/libjin/Graphics/particle/je_particle_batch.cpp
+++ b/src/libjin/Graphics/particle/je_particle_pool.cpp
diff --git a/src/libjin/Graphics/particle/je_particle_pool.h b/src/libjin/Graphics/particle/je_particle_pool.h
new file mode 100644
index 0000000..f1f6214
--- /dev/null
+++ b/src/libjin/Graphics/particle/je_particle_pool.h
@@ -0,0 +1,53 @@
+#ifndef __JE_PARTICLE_BATCH_H
+#define __JE_PARTICLE_BATCH_H
+
+#include <list>
+
+#include "je_particle.h"
+
+namespace JinEngine
+{
+ namespace Graphics
+ {
+
+ ///
+ /// Particle pool for reducing memory fragmentation.
+ ///
+ class ParticlePool
+ {
+ public:
+
+ ///
+ /// Particle pool constructor.
+ ///
+ /// @param count Max count of particles.
+ ///
+ ParticlePool(uint count);
+
+ ///
+ /// Particle pool destructor.
+ ///
+ ~ParticlePool();
+
+ ///
+ /// Claim a particle if available.
+ ///
+ Particle* claim();
+
+ ///
+ /// Recycle particle if the particle is no more alive.
+ ///
+ void recycle(Particle* particle);
+
+ private:
+ ///
+ /// All particles include available and inavailable particles.
+ ///
+ std::list<Particle> particles;
+
+ };
+
+ } // namespace Graphics
+} // namespace JinEngine
+
+#endif \ No newline at end of file
diff --git a/src/libjin/Graphics/particle/je_particle_system.cpp b/src/libjin/Graphics/particle/je_particle_system.cpp
index 6f70f09..68f8f21 100644
--- a/src/libjin/Graphics/particle/je_particle_system.cpp
+++ b/src/libjin/Graphics/particle/je_particle_system.cpp
@@ -1 +1,11 @@
-#pragma once
+#include "je_particle_system.h"
+
+namespace JinEngine
+{
+ namespace Graphics
+ {
+
+
+
+ }
+}
diff --git a/src/libjin/Graphics/particle/je_particle_system.h b/src/libjin/Graphics/particle/je_particle_system.h
index e69de29..c5db938 100644
--- a/src/libjin/Graphics/particle/je_particle_system.h
+++ b/src/libjin/Graphics/particle/je_particle_system.h
@@ -0,0 +1,85 @@
+#ifndef __JE_PARTICLE_EMMITTER_H
+#define __JE_PARTICLE_EMMITTER_H
+
+#include <vector>
+
+#include "../../common/je_temporary.h"
+
+#include "../je_sprite.h"
+
+#include "je_particle_emitter.h"
+#include "je_particle_pool.h"
+#include "je_particle.h"
+
+namespace JinEngine
+{
+ namespace Graphics
+ {
+
+ ///
+ /// Definition of particle system.
+ ///
+ struct ParticleSystemDef : public Temporary
+ {
+ uint maxParticleCount = 1; ///< Max count of particles. 1 by default.
+
+ };
+
+ ///
+ /// Particle emitter, handle all particles it emitts.
+ ///
+ class ParticleSystem
+ {
+ public:
+ ///
+ /// Particle system constructor
+ ///
+ /// @param def Definition of particle system.
+ ///
+ ParticleSystem(const ParticleSystemDef& def);
+
+ ///
+ /// Particle system destructor.
+ ///
+ ~ParticleSystem();
+
+ ///
+ /// Render particle system's all particles.
+ ///
+ void render(int x, int y, float sx = 1, float sy = 1, float r = 0, float ax = 0, float ay = 0);
+
+ ///
+ /// Set sprite to render.
+ ///
+ /// @param sprite Sprite to render.
+ ///
+ void setSprite(Sprite* sprite);
+
+ ///
+ /// Release particle and make it available in particle pool.
+ ///
+ void releaseParticle();
+
+ private:
+ ///
+ /// Sprite to be drawn.
+ ///
+ Sprite* mSprite;
+
+ ///
+ /// Particle emitter.
+ ///
+ ParticleEmitter mEmitter;
+ ParticlePool mParticlePool;
+
+ ///
+ /// Alive particles, that means these particles could join to the life cycle loop.
+ ///
+ std::vector<Particle*> mAliveParticles;
+
+ };
+
+ } // namespace Graphics
+} // namespace JinEngine
+
+#endif \ No newline at end of file
diff --git a/src/libjin/Math/je_math.h b/src/libjin/Math/je_math.h
index 1f8e0b3..e7c3ec5 100644
--- a/src/libjin/Math/je_math.h
+++ b/src/libjin/Math/je_math.h
@@ -71,6 +71,12 @@ namespace JinEngine
return a + t * (b - a);
}
+ float lerp(float a, float b, float f)
+ {
+ f = clamp<float>(f, 0, 1);
+ return a + f * (b - a);
+ }
+
} // namespace Math
} // namespace JinEngine
diff --git a/src/lua/modules/graphics/je_lua_particle_system.cpp b/src/lua/modules/graphics/je_lua_particle_system.cpp
new file mode 100644
index 0000000..7099a5c
--- /dev/null
+++ b/src/lua/modules/graphics/je_lua_particle_system.cpp
@@ -0,0 +1,11 @@
+#include "libjin/jin.h"
+
+namespace JinEngine
+{
+ namespace Lua
+ {
+
+
+
+ } // Lua
+} // namespace JinEngine \ No newline at end of file