00001 00002 // SPARK particle engine // 00003 // Copyright (C) 2008-2009 - Julien Fryer - julienfryer@gmail.com // 00004 // // 00005 // This software is provided 'as-is', without any express or implied // 00006 // warranty. In no event will the authors be held liable for any damages // 00007 // arising from the use of this software. // 00008 // // 00009 // Permission is granted to anyone to use this software for any purpose, // 00010 // including commercial applications, and to alter it and redistribute it // 00011 // freely, subject to the following restrictions: // 00012 // // 00013 // 1. The origin of this software must not be misrepresented; you must not // 00014 // claim that you wrote the original software. If you use this software // 00015 // in a product, an acknowledgment in the product documentation would be // 00016 // appreciated but is not required. // 00017 // 2. Altered source versions must be plainly marked as such, and must not be // 00018 // misrepresented as being the original software. // 00019 // 3. This notice may not be removed or altered from any source distribution. // 00021 00022 00023 #ifndef H_SPK_ROTATOR 00024 #define H_SPK_ROTATOR 00025 00026 #include "Core/SPK_Modifier.h" 00027 00028 00029 namespace SPK 00030 { 00043 class Rotator : public Modifier 00044 { 00045 SPK_IMPLEMENT_REGISTERABLE(Rotator) 00046 00047 public : 00048 00050 // Constructor // 00052 00054 Rotator(); 00055 00060 static Rotator* create(); 00061 00062 private : 00063 00064 virtual void modify(Particle& particle,float deltaTime) const; 00065 }; 00066 00067 00068 inline Rotator::Rotator() : Modifier(ALWAYS | INSIDE_ZONE | OUTSIDE_ZONE) {} 00069 00070 inline Rotator* Rotator::create() 00071 { 00072 Rotator* obj = new Rotator; 00073 registerObject(obj); 00074 return obj; 00075 } 00076 00077 inline void Rotator::modify(Particle& particle,float deltaTime) const 00078 { 00079 float angle = particle.getParamCurrentValue(PARAM_ANGLE) + deltaTime * particle.getParamCurrentValue(PARAM_ROTATION_SPEED); 00080 particle.setParamCurrentValue(PARAM_ANGLE,angle); 00081 } 00082 } 00083 00084 #endif