diff options
Diffstat (limited to 'src/libjin/Graphics')
-rw-r--r-- | src/libjin/Graphics/animations/je_animation.cpp | 14 | ||||
-rw-r--r-- | src/libjin/Graphics/animations/je_animator.cpp | 14 | ||||
-rw-r--r-- | src/libjin/Graphics/animations/je_animator.h | 5 | ||||
-rw-r--r-- | src/libjin/Graphics/je_color.cpp | 5 | ||||
-rw-r--r-- | src/libjin/Graphics/je_color.h | 5 | ||||
-rw-r--r-- | src/libjin/Graphics/je_graphics.h | 1 | ||||
-rw-r--r-- | src/libjin/Graphics/je_window.cpp | 22 | ||||
-rw-r--r-- | src/libjin/Graphics/je_window.h | 11 | ||||
-rw-r--r-- | src/libjin/Graphics/particles/je_particle.cpp | 14 | ||||
-rw-r--r-- | src/libjin/Graphics/particles/je_particle.h | 21 | ||||
-rw-r--r-- | src/libjin/Graphics/particles/je_particle_pool.cpp | 0 | ||||
-rw-r--r-- | src/libjin/Graphics/particles/je_particle_pool.h | 36 | ||||
-rw-r--r-- | src/libjin/Graphics/particles/je_particle_system.h | 5 |
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. |