1
/************************************************************************************
3
AstroMenace (Hardcore 3D space shooter with spaceship upgrade possibilities)
4
Copyright © 2006-2012 Michael Kurinnoy, Viewizard
7
AstroMenace is free software: you can redistribute it and/or modify
8
it under the terms of the GNU General Public License as published by
9
the Free Software Foundation, either version 3 of the License, or
10
(at your option) any later version.
12
AstroMenace is distributed in the hope that it will be useful,
13
but WITHOUT ANY WARRANTY; without even the implied warranty of
14
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
GNU General Public License for more details.
17
You should have received a copy of the GNU General Public License
18
along with AstroMenace. If not, see <http://www.gnu.org/licenses/>.
21
Web Site: http://www.viewizard.com/
22
Project: http://sourceforge.net/projects/openastromenace/
23
E-mail: viewizard@viewizard.com
25
*************************************************************************************/
28
#include "Particle2D.h"
34
//-----------------------------------------------------------------------------
35
// начальная инициализация
36
//-----------------------------------------------------------------------------
37
eParticle2D::eParticle2D()
51
//-----------------------------------------------------------------------------
53
//-----------------------------------------------------------------------------
54
eParticle2D::~eParticle2D()
56
// тут ничего не делаем - все что нужно делаем в системе частиц
60
//-----------------------------------------------------------------------------
61
// обновление информации частицы
62
//-----------------------------------------------------------------------------
63
bool eParticle2D::Update(float TimeDelta, VECTOR3D ParentLocation, bool Attractive, float AttractiveValue)
66
// Если частица уже мертва, ее нужно отключить - передаем в систему эти данные
67
if ( Age + TimeDelta >= Lifetime )
75
// увеличиваем возраст частицы
78
// перемещаем частицу на нужное значение
79
Location += Velocity ^ TimeDelta;
82
Velocity -= Velocity^TimeDelta;
85
// если есть притяжение системы, просчитываем воздействие
88
VECTOR3D AttractLocation = ParentLocation;
90
// рассчитывае вектор взаимодействия между частицей и точкой притяжения
91
VECTOR3D AttractDir = AttractLocation - Location;
93
// если нужно использовать притяжения, считаем перемещение
95
AttractiveValue -= AttractiveValue*TimeDelta;
97
AttractDir.Normalize();
98
Velocity += AttractDir ^ (AttractiveValue * TimeDelta);
102
// просчитываем текущий цвет частицы
103
Color.r += ColorDelta.r * TimeDelta;
104
Color.g += ColorDelta.g * TimeDelta;
105
Color.b += ColorDelta.b * TimeDelta;
107
// текущий размер частицы
108
Size += SizeDelta * TimeDelta;
111
// если пришли сюда - значит все хорошо и частица работает