aboutsummaryrefslogtreecommitdiff
path: root/src/libjin/Graphics
diff options
context:
space:
mode:
Diffstat (limited to 'src/libjin/Graphics')
-rw-r--r--src/libjin/Graphics/animations/je_animation.cpp14
-rw-r--r--src/libjin/Graphics/animations/je_animator.cpp14
-rw-r--r--src/libjin/Graphics/animations/je_animator.h5
-rw-r--r--src/libjin/Graphics/je_color.cpp5
-rw-r--r--src/libjin/Graphics/je_color.h5
-rw-r--r--src/libjin/Graphics/je_graphics.h1
-rw-r--r--src/libjin/Graphics/je_window.cpp22
-rw-r--r--src/libjin/Graphics/je_window.h11
-rw-r--r--src/libjin/Graphics/particles/je_particle.cpp14
-rw-r--r--src/libjin/Graphics/particles/je_particle.h21
-rw-r--r--src/libjin/Graphics/particles/je_particle_pool.cpp0
-rw-r--r--src/libjin/Graphics/particles/je_particle_pool.h36
-rw-r--r--src/libjin/Graphics/particles/je_particle_system.h5
13 files changed, 110 insertions, 43 deletions
diff --git a/src/libjin/Graphics/animations/je_animation.cpp b/src/libjin/Graphics/animations/je_animation.cpp
index e69de29..4fe673a 100644
--- a/src/libjin/Graphics/animations/je_animation.cpp
+++ b/src/libjin/Graphics/animations/je_animation.cpp
@@ -0,0 +1,14 @@
+#include "je_animation.h"
+
+namespace JinEngine
+{
+ namespace Graphics
+ {
+ namespace Animations
+ {
+
+
+
+ }
+ }
+} \ No newline at end of file
diff --git a/src/libjin/Graphics/animations/je_animator.cpp b/src/libjin/Graphics/animations/je_animator.cpp
index e69de29..360bd5d 100644
--- a/src/libjin/Graphics/animations/je_animator.cpp
+++ b/src/libjin/Graphics/animations/je_animator.cpp
@@ -0,0 +1,14 @@
+#include "je_animator.h"
+
+namespace JinEngine
+{
+ namespace Graphics
+ {
+ namespace Animations
+ {
+
+
+
+ }
+ }
+} \ No newline at end of file
diff --git a/src/libjin/Graphics/animations/je_animator.h b/src/libjin/Graphics/animations/je_animator.h
index 84b0385..6510a7d 100644
--- a/src/libjin/Graphics/animations/je_animator.h
+++ b/src/libjin/Graphics/animations/je_animator.h
@@ -24,8 +24,7 @@ namespace JinEngine
bool hasKey(const std::string& key);
void play();
- void switchAnimationByKey(const std::string& key);
- void switchAnimation(const Animation* clip);
+ void switchAnimation(const std::string& key);
///
/// Control clips.
@@ -44,7 +43,7 @@ namespace JinEngine
};
- }
+ } // namespace Animations
} // namespace Graphics
} // namespace JinEngine
diff --git a/src/libjin/Graphics/je_color.cpp b/src/libjin/Graphics/je_color.cpp
index da48162..c939a1d 100644
--- a/src/libjin/Graphics/je_color.cpp
+++ b/src/libjin/Graphics/je_color.cpp
@@ -13,5 +13,10 @@ namespace JinEngine
const Color Color::MAGENTA = Color(255, 0, 255);
const Color Color::YELLOW = Color(255, 255, 0);
+ const uint32 Color::RMASK = 0x000000ff;
+ const uint32 Color::GMASK = 0x0000ff00;
+ const uint32 Color::BMASK = 0x00ff0000;
+ const uint32 Color::AMASK = 0xff000000;
+
}
} \ No newline at end of file
diff --git a/src/libjin/Graphics/je_color.h b/src/libjin/Graphics/je_color.h
index 9195e48..06b8f61 100644
--- a/src/libjin/Graphics/je_color.h
+++ b/src/libjin/Graphics/je_color.h
@@ -30,6 +30,11 @@ namespace JinEngine
static const Color MAGENTA;
static const Color YELLOW;
+ static const uint32 RMASK;
+ static const uint32 GMASK;
+ static const uint32 BMASK;
+ static const uint32 AMASK;
+
///
/// Get lerp color with given factor.
///
diff --git a/src/libjin/Graphics/je_graphics.h b/src/libjin/Graphics/je_graphics.h
index d9e0c0a..52bfbda 100644
--- a/src/libjin/Graphics/je_graphics.h
+++ b/src/libjin/Graphics/je_graphics.h
@@ -32,6 +32,5 @@
// int64 textureMemory;
//};
-
#endif // defined(jin_graphics)
#endif // __JE_GRAPHICS_H__ \ No newline at end of file
diff --git a/src/libjin/Graphics/je_window.cpp b/src/libjin/Graphics/je_window.cpp
index 86ccd29..c14d290 100644
--- a/src/libjin/Graphics/je_window.cpp
+++ b/src/libjin/Graphics/je_window.cpp
@@ -3,6 +3,7 @@
#include <iostream>
+#include "../common/je_exception.h"
#include "../utils/je_utils.h"
#include "../audio/sdl/je_sdl_audio.h"
#include "../utils/je_log.h"
@@ -30,8 +31,9 @@ namespace JinEngine
mSize.w = setting->width;
mSize.h = setting->height;
mFps = setting->fps;
- bool vsync = setting->vsync;
- const char* title = setting->title;
+ bool vsync = setting->vsync;
+ const char* title = setting->title;
+ const char* icon = setting->icon;
if (mWnd)
{
@@ -58,13 +60,27 @@ namespace JinEngine
int wx = SDL_WINDOWPOS_UNDEFINED,
wy = SDL_WINDOWPOS_UNDEFINED;
- int flag = SDL_WINDOW_SHOWN | SDL_WINDOW_OPENGL;
+ int flag = SDL_WINDOW_HIDDEN | SDL_WINDOW_OPENGL;
if (setting->fullscreen) flag |= SDL_WINDOW_FULLSCREEN;
if (setting->resizable) flag |= SDL_WINDOW_RESIZABLE;
mWnd = SDL_CreateWindow(title, wx, wy, mSize.w, mSize.h, flag);
if (mWnd == NULL)
return false;
+
+ // Set window icon
+ try
+ {
+ Bitmap* bitmap = Bitmap::createBitmap(icon);
+ SDL_Surface *surface;
+ Color* pixels = const_cast<Color*>(bitmap->getPixels());
+ uint w = bitmap->getWidth(), h = bitmap->getHeight();
+ surface = SDL_CreateRGBSurfaceFrom(
+ pixels, w, h, 32, w * 4, Color::RMASK, Color::GMASK, Color::BMASK, Color::AMASK);
+ SDL_SetWindowIcon(mWnd, surface);
+ SDL_FreeSurface(surface);
+ } catch (...) {}
+
ctx = SDL_GL_CreateContext(mWnd);
if (ctx == NULL)
return false;
diff --git a/src/libjin/Graphics/je_window.h b/src/libjin/Graphics/je_window.h
index 7ca1e5e..436fd24 100644
--- a/src/libjin/Graphics/je_window.h
+++ b/src/libjin/Graphics/je_window.h
@@ -26,6 +26,7 @@ namespace JinEngine
{
public:
const char* title; ///< window title
+ const char* icon; ///< window icon
bool fullscreen; ///< full screen
int width, height; ///< window size
bool vsync; ///< vsync
@@ -58,6 +59,16 @@ namespace JinEngine
///
void swapBuffers();
+ ///
+ ///
+ ///
+ inline void hide() { SDL_HideWindow(mWnd); };
+
+ ///
+ ///
+ ///
+ void show() { SDL_ShowWindow(mWnd); };
+
private:
// declare a singleton
diff --git a/src/libjin/Graphics/particles/je_particle.cpp b/src/libjin/Graphics/particles/je_particle.cpp
index e69de29..9179093 100644
--- a/src/libjin/Graphics/particles/je_particle.cpp
+++ b/src/libjin/Graphics/particles/je_particle.cpp
@@ -0,0 +1,14 @@
+#include "je_particle.h"
+
+namespace JinEngine
+{
+ namespace Graphics
+ {
+ namespace Particles
+ {
+
+
+
+ }
+ }
+} \ No newline at end of file
diff --git a/src/libjin/Graphics/particles/je_particle.h b/src/libjin/Graphics/particles/je_particle.h
index 3dd480e..73803e8 100644
--- a/src/libjin/Graphics/particles/je_particle.h
+++ b/src/libjin/Graphics/particles/je_particle.h
@@ -2,6 +2,7 @@
#define __JE_PARTICLE_H__
#include "../../math/je_vector2.hpp"
+#include "../je_color.h"
namespace JinEngine
{
@@ -12,6 +13,9 @@ namespace JinEngine
class ParticleEmitter;
+ ///
+ ///
+ ///
struct LifeTimeDef
{
bool enableRandom = false;
@@ -25,11 +29,17 @@ namespace JinEngine
} life;
};
+ ///
+ ///
+ ///
struct LinearAccelaration
{
};
+ ///
+ ///
+ ///
struct SpeedOverTimeDef
{
bool enable = false;
@@ -100,7 +110,16 @@ namespace JinEngine
///
struct Particle
{
- Particle(const ParticleDef& particleDef);
+ ///
+ /// Default constructor.
+ ///
+ Particle();
+
+ ///
+ /// Initialize with given definition.
+ ///
+ void initialize(const ParticleDef& particleDef);
+
///
/// Whole life time.
///
diff --git a/src/libjin/Graphics/particles/je_particle_pool.cpp b/src/libjin/Graphics/particles/je_particle_pool.cpp
deleted file mode 100644
index e69de29..0000000
--- a/src/libjin/Graphics/particles/je_particle_pool.cpp
+++ /dev/null
diff --git a/src/libjin/Graphics/particles/je_particle_pool.h b/src/libjin/Graphics/particles/je_particle_pool.h
index 6bd41e0..46cd73a 100644
--- a/src/libjin/Graphics/particles/je_particle_pool.h
+++ b/src/libjin/Graphics/particles/je_particle_pool.h
@@ -1,7 +1,7 @@
#ifndef __JE_PARTICLE_BATCH_H__
#define __JE_PARTICLE_BATCH_H__
-#include <list>
+#include "../../common/je_pool.hpp"
#include "je_particle.h"
@@ -15,39 +15,7 @@ namespace JinEngine
///
/// 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;
-
- };
+ typedef Pool<Particle> ParticlePool;
} // namespace Particles
} // namespace Graphics
diff --git a/src/libjin/Graphics/particles/je_particle_system.h b/src/libjin/Graphics/particles/je_particle_system.h
index 32123a6..fa050f7 100644
--- a/src/libjin/Graphics/particles/je_particle_system.h
+++ b/src/libjin/Graphics/particles/je_particle_system.h
@@ -63,7 +63,10 @@ namespace JinEngine
///
/// Release particle and make it available in particle pool.
///
- void releaseParticle();
+ void releaseParticle()
+ {
+ Particle*p = mParticlePool.New();
+ }
private:
// Disable default constructor.