diff options
author | Jeija <norrepli@gmail.com> | 2012-12-31 19:33:36 +0100 |
---|---|---|
committer | PilzAdam <PilzAdam@gmx.de> | 2013-01-14 15:27:00 +0100 |
commit | 61f5ca6b164b035de41bd32bb9409c7e04ea0d41 (patch) | |
tree | 5e39250c378a9fa94e884e3450c62890119f846b /src/particles.h | |
parent | 443bbe6a785721bcaedf02f26c8a32d98ba63aec (diff) | |
download | minetest-61f5ca6b164b035de41bd32bb9409c7e04ea0d41.tar.gz minetest-61f5ca6b164b035de41bd32bb9409c7e04ea0d41.tar.bz2 minetest-61f5ca6b164b035de41bd32bb9409c7e04ea0d41.zip |
Add particles
Diffstat (limited to 'src/particles.h')
-rw-r--r-- | src/particles.h | 98 |
1 files changed, 98 insertions, 0 deletions
diff --git a/src/particles.h b/src/particles.h new file mode 100644 index 000000000..3ed9dfdc8 --- /dev/null +++ b/src/particles.h @@ -0,0 +1,98 @@ +/* +Minetest-c55 +Copyright (C) 2012 celeron55, Perttu Ahola <celeron55@gmail.com> + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU Lesser General Public License as published by +the Free Software Foundation; either version 2.1 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +*/ + +#ifndef PARTICLES_HEADER +#define PARTICLES_HEADER + +#define DIGGING_PARTICLES_AMOUNT 10 + +#include <iostream> +#include "irrlichttypes_extrabloated.h" +#include "tile.h" +#include "localplayer.h" +#include "environment.h" + +class Particle : public scene::ISceneNode +{ + public: + Particle( + IGameDef* gamedef, + scene::ISceneManager* mgr, + LocalPlayer *player, + s32 id, + v3f pos, + v3f velocity, + v3f acceleration, + float expirationtime, + float size, + AtlasPointer texture + ); + ~Particle(); + + virtual const core::aabbox3d<f32>& getBoundingBox() const + { + return m_box; + } + + virtual u32 getMaterialCount() const + { + return 1; + } + + virtual video::SMaterial& getMaterial(u32 i) + { + return m_material; + } + + virtual void OnRegisterSceneNode(); + virtual void render(); + + void step(float dtime, ClientEnvironment &env); + + bool get_expired () + { return m_expiration < m_time; } + +private: + float m_time; + float m_expiration; + + IGameDef *m_gamedef; + core::aabbox3d<f32> m_box; + core::aabbox3d<f32> m_collisionbox; + video::SMaterial m_material; + v3f m_pos; + v3f m_velocity; + v3f m_acceleration; + float tex_x0; + float tex_x1; + float tex_y0; + float tex_y1; + LocalPlayer *m_player; + float m_size; + AtlasPointer m_ap; + u8 m_light; +}; + +void allparticles_step (float dtime, ClientEnvironment &env); + +void addDiggingParticles(IGameDef* gamedef, scene::ISceneManager* smgr, LocalPlayer *player, v3s16 pos, const TileSpec tiles[]); +void addPunchingParticles(IGameDef* gamedef, scene::ISceneManager* smgr, LocalPlayer *player, v3s16 pos, const TileSpec tiles[]); +void addNodeParticle(IGameDef* gamedef, scene::ISceneManager* smgr, LocalPlayer *player, v3s16 pos, const TileSpec tiles[]); + +#endif |