Serious-Engine/Sources/EntitiesMP/Twister.cpp
2016-03-11 15:57:17 +02:00

475 lines
20 KiB
C++

/*
* This file is generated by Entity Class Compiler, (c) CroTeam 1997-98
*/
#line 4 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
#include "StdH.h"
#include "ModelsMP/Enemies/AirElemental/Twister.h"
#define ECF_TWISTER ( \
((ECBI_BRUSH|ECBI_MODEL|ECBI_CORPSE|ECBI_ITEM|ECBI_PROJECTILE_MAGIC|ECBI_PROJECTILE_SOLID)<<ECB_TEST) |\
((ECBI_MODEL|ECBI_CORPSE|ECBI_ITEM|ECBI_PROJECTILE_MAGIC|ECBI_PROJECTILE_SOLID)<<ECB_PASS) |\
((ECBI_MODEL)<<ECB_IS))
#define EPF_TWISTER ( \
EPF_ONBLOCK_CLIMBORSLIDE|EPF_ORIENTEDBYGRAVITY|\
EPF_TRANSLATEDBYGRAVITY|EPF_MOVABLE|EPF_ABSOLUTETRANSLATE)
#include <EntitiesMP/Twister.h>
#include <EntitiesMP/Twister_tables.h>
CEntityEvent *ETwister::MakeCopy(void) { CEntityEvent *peeCopy = new ETwister(*this); return peeCopy;}
ETwister::ETwister() : CEntityEvent(EVENTCODE_ETwister) {;
ClearToDefault(penOwner);
ClearToDefault(fSize);
ClearToDefault(fDuration);
ClearToDefault(sgnSpinDir);
ClearToDefault(bGrow);
ClearToDefault(bMovingAllowed);
};
#line 34 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
static EntityInfo eiTwister = {
EIBT_AIR, 0.0f,
0.0f, 1.0f, 0.0f,
0.0f, 0.75f, 0.0f,
};
#define MOVE_FREQUENCY 0.1f
#define ROTATE_SPEED 10000.0f
#define MOVE_SPEED 7.5f
void CTwister_OnPrecache(CDLLEntityClass *pdec, INDEX iUser)
{
pdec->PrecacheClass(CLASS_SPINNER);
pdec->PrecacheModel(MODEL_TWISTER);
pdec->PrecacheTexture(TEXTURE_TWISTER);
pdec->PrecacheSound(SOUND_SPIN);
}
void CTwister::SetDefaultProperties(void) {
m_penOwner = NULL;
m_fSize = 1.0f;
m_vSpeed = FLOAT3D(0 , 0 , 0);
m_sgnSpinDir = 1;
m_bGrow = TRUE ;
m_tmLastMove = 0.0f;
m_aSpeedRotation = FLOAT3D(0 , 0 , 0);
m_bMoving = FALSE ;
m_bMovingAllowed = TRUE ;
m_vDesiredPosition = FLOAT3D(0 , 0 , 0);
m_vDesiredAngle = FLOAT3D(0 , 0 , 0);
m_fStopTime = 0.0f;
m_fActionRadius = 0.0f;
m_fActionTime = 0.0f;
m_fDiffMultiply = 0.0f;
m_fUpMultiply = 0.0f;
m_bFadeOut = FALSE ;
m_fFadeStartTime = 1e6;
m_fFadeTime = 2.0f;
m_fStartTime = 0.0f;
m_soSpin.SetOwner(this);
m_soSpin.Stop_internal();
CMovableModelEntity::SetDefaultProperties();
}
#line 97 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
void * CTwister::GetEntityInfo(void) {
#line 98 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
return & eiTwister ;
#line 99 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
}
#line 102 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
void CTwister::ReceiveDamage(CEntity * penInflictor,enum DamageType dmtType,
#line 103 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
FLOAT fDamageAmmount,const FLOAT3D & vHitPoint,const FLOAT3D & vDirection)
#line 104 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
{
#line 105 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
return ;
#line 106 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
}
#line 109 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
void CTwister::RenderParticles(void)
#line 110 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
{
#line 111 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
if(m_bMovingAllowed )
#line 112 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
{
#line 113 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
Particles_Twister (this , m_fSize / 15.0f , m_fStartTime , m_fFadeStartTime , 1.0f);
#line 114 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
}
#line 115 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
else
#line 116 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
{
#line 117 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
CEntity * penParent = GetParent ();
#line 118 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
FLOAT fStretch = 1.0f;
#line 119 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
if(penParent != NULL )
#line 120 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
{
#line 121 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
CAirElemental * penAir = (CAirElemental *) penParent ;
#line 122 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
FLOAT fStretchRatio = penAir -> GetCurrentStretchRatio ();
#line 123 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
fStretch = 1.0f + (fStretchRatio ) * 6.0f;
#line 124 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
}
#line 125 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
Particles_Twister (this , m_fSize / 15.0f * fStretch , m_fStartTime , m_fFadeStartTime , 0.5f * fStretch );
#line 126 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
}
#line 127 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
}
#line 132 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
BOOL CTwister::AdjustShadingParameters(FLOAT3D & vLightDirection,COLOR & colLight,COLOR & colAmbient) {
#line 134 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
if(m_bFadeOut ){
#line 135 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
FLOAT fTimeRemain = m_fFadeStartTime + m_fFadeTime - _pTimer -> CurrentTick ();
#line 136 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
if(fTimeRemain < 0.0f){fTimeRemain = 0.0f;}
#line 137 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
COLOR colAlpha = GetModelObject () -> mo_colBlendColor ;
#line 138 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
colAlpha = (colAlpha & 0xffffff00) + (COLOR (fTimeRemain / m_fFadeTime * 0xff) & 0xff);
#line 139 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
GetModelObject () -> mo_colBlendColor = colAlpha ;
#line 140 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
}
#line 141 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
return CMovableModelEntity :: AdjustShadingParameters (vLightDirection , colLight , colAmbient );
#line 142 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
}
#line 149 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
void CTwister::SpinEntity(CEntity * pen) {
#line 152 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
if(IsOfClass (pen , "AirElemental") || IsOfClass (pen , "Twister")
#line 153 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
|| IsDerivedFromClass (pen , "Item")){
#line 154 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
return ;
#line 155 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
}
#line 157 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
if(IsOfClass (pen , "Projectile")){
#line 158 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
if(((CProjectile *) & * pen ) -> m_prtType == PRT_AIRELEMENTAL_WIND )
#line 159 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
{
#line 160 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
return ;
#line 161 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
}
#line 162 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
}
#line 166 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
if(pen -> GetPhysicsFlags () & EPF_MOVABLE ){
#line 168 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
BOOL bNoSpinner = TRUE ;
#line 169 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
{FOREACHINLIST (CEntity , en_lnInParent , pen -> en_lhChildren , iten ){
#line 170 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
if(IsOfClass (iten , "Spinner"))
#line 171 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
{
#line 172 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
bNoSpinner = FALSE ;
#line 173 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
return ;
#line 174 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
}
#line 175 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
}}
#line 176 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
if(bNoSpinner ){
#line 177 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
ESpinnerInit esi ;
#line 178 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
CEntityPointer penSpinner ;
#line 179 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
esi . penParent = pen ;
#line 180 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
esi . penTwister = this ;
#line 181 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
esi . bImpulse = FALSE ;
#line 184 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
if(IsOfClass (pen , "Projectile"))
#line 185 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
{
#line 186 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
switch(((CProjectile &) * pen ) . m_prtType ){
#line 187 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
case PRT_GRENADE :
#line 188 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
case PRT_HEADMAN_BOMBERMAN :
#line 189 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
case PRT_DEMON_FIREBALL :
#line 190 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
case PRT_SHOOTER_FIREBALL :
#line 191 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
case PRT_BEAST_PROJECTILE :
#line 192 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
case PRT_BEAST_BIG_PROJECTILE :
#line 193 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
case PRT_LAVA_COMET :
#line 194 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
esi . tmSpinTime = 2.5f;
#line 195 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
esi . vRotationAngle = ANGLE3D (- m_sgnSpinDir * 250.0f , 0 , 0);
#line 196 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
esi . fUpSpeed = m_fDiffMultiply * 0.75;
#line 197 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
break ;
#line 198 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
default :
#line 199 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
esi . tmSpinTime = 1.5f;
#line 200 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
esi . vRotationAngle = ANGLE3D (- m_sgnSpinDir * 180.0f , 0 , 0);
#line 201 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
esi . fUpSpeed = m_fDiffMultiply / 5.0f;
#line 202 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
break ;
#line 203 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
}
#line 205 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
}else if(IsOfClass (pen , "Cannon ball")){
#line 206 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
esi . tmSpinTime = 0.2f;
#line 207 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
esi . vRotationAngle = ANGLE3D (- m_sgnSpinDir * 500.0f , 0 , 0);
#line 208 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
esi . fUpSpeed = m_fDiffMultiply * 3.0f;
#line 210 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
}else if(IsOfClass (pen , "Player")){
#line 211 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
esi . tmSpinTime = 3.0f;
#line 212 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
esi . vRotationAngle = ANGLE3D (- m_sgnSpinDir * 220.0f , 0 , 0);
#line 213 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
esi . bImpulse = TRUE ;
#line 214 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
esi . fUpSpeed = m_fDiffMultiply * (0.4f + FRnd () * 0.4f);
#line 215 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
esi . tmImpulseDuration = 1.4f + FRnd () * 0.5f;
#line 217 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
}else {
#line 218 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
esi . tmSpinTime = 0.5f;
#line 219 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
esi . vRotationAngle = ANGLE3D (- m_sgnSpinDir * 180.0f , 0 , 0);
#line 220 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
esi . fUpSpeed = m_fDiffMultiply ;
#line 221 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
}
#line 222 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
penSpinner = CreateEntity (pen -> GetPlacement () , CLASS_SPINNER );
#line 223 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
penSpinner -> Initialize (esi );
#line 224 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
penSpinner -> SetParent (pen );
#line 225 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
}
#line 227 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
FLOAT3D vDirection ;
#line 228 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
AnglesToDirectionVector (GetPlacement () . pl_OrientationAngle , vDirection );
#line 229 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
InflictDirectDamage (pen , m_penOwner , DMT_IMPACT , 2.0f , GetPlacement () . pl_PositionVector , vDirection );
#line 230 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
}
#line 232 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
}
#line 234 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
void CTwister::PreMoving(void) {
#line 236 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
if(m_bMoving ){
#line 237 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
FLOATmatrix3D m ;
#line 238 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
ANGLE3D aRotation ;
#line 239 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
aRotation = m_aSpeedRotation * (_pTimer -> CurrentTick () - m_tmLastMove );
#line 240 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
MakeRotationMatrix (m , aRotation );
#line 241 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
m_vSpeed = m_vSpeed * m ;
#line 242 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
SetDesiredTranslation (m_vSpeed );
#line 243 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
m_tmLastMove = _pTimer -> CurrentTick ();
#line 244 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
}
#line 245 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
CMovableModelEntity :: PreMoving ();
#line 246 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
}
BOOL CTwister::
#line 254 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
Main(const CEntityEvent &__eeInput) {
#undef STATE_CURRENT
#define STATE_CURRENT STATE_CTwister_Main
ASSERTMSG(__eeInput.ee_slEvent==EVENTCODE_ETwister, "CTwister::Main expects 'ETwister' as input!"); const ETwister &et = (const ETwister &)__eeInput;
#line 256 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
ASSERT (et . penOwner != NULL );
#line 257 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
m_penOwner = et . penOwner ;
#line 258 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
m_sgnSpinDir = et . sgnSpinDir ;
#line 259 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
if(m_sgnSpinDir == 0){m_sgnSpinDir = 1;};
#line 260 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
m_fSize = et . fSize ;
#line 261 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
m_fStopTime = _pTimer -> CurrentTick () + et . fDuration ;
#line 262 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
m_bGrow = et . bGrow ;
#line 263 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
m_bMovingAllowed = et . bMovingAllowed ;
#line 266 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
InitAsEditorModel ();
#line 267 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
SetPhysicsFlags (EPF_TWISTER );
#line 268 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
SetCollisionFlags (ECF_TWISTER );
#line 269 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
SetFlags (GetFlags () | ENF_SEETHROUGH );
#line 270 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
SetModel (MODEL_TWISTER );
#line 271 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
SetModelMainTexture (TEXTURE_TWISTER );
#line 274 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
m_fActionRadius = pow (m_fSize , 0.33333f) * 10.0f;
#line 275 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
m_fActionTime = m_fActionRadius ;
#line 276 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
m_fUpMultiply = m_fActionRadius / 2.0f;
#line 277 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
m_fDiffMultiply = sqrt (m_fSize );
#line 278 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
GetModelObject () -> StretchModel (FLOAT3D (m_fSize , m_fSize , m_fSize ));
#line 279 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
ModelChangeNotify ();
#line 281 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
m_fStartTime = _pTimer -> CurrentTick ();
#line 284 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
SetTimerAfter(FRnd () * 0.25f);
Jump(STATE_CURRENT, 0x01fb0001, FALSE, EBegin());return TRUE;}BOOL CTwister::H0x01fb0001_Main_01(const CEntityEvent &__eeInput) {
#undef STATE_CURRENT
#define STATE_CURRENT 0x01fb0001
switch(__eeInput.ee_slEvent) {case EVENTCODE_EBegin: return TRUE;case EVENTCODE_ETimer: Jump(STATE_CURRENT,0x01fb0002, FALSE, EInternal()); return TRUE;default: return FALSE; }}BOOL CTwister::H0x01fb0002_Main_02(const CEntityEvent &__eeInput){
ASSERT(__eeInput.ee_slEvent==EVENTCODE_EInternal);
#undef STATE_CURRENT
#define STATE_CURRENT 0x01fb0002
;
#line 286 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
m_soSpin . Set3DParameters (50.0f , 10.0f , 1.0f , 1.0f);
#line 287 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
PlaySound (m_soSpin , SOUND_SPIN , SOF_3D | SOF_LOOP );
#line 290 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
SetDesiredRotation (ANGLE3D (m_sgnSpinDir * (FRnd () * 50.0f + 50.0f) , 0.0f , 0.0f));
#line 292 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
if(m_bGrow ){
#line 293 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
StartModelAnim (TWISTER_ANIM_GROWING , AOF_SMOOTHCHANGE | AOF_NORESTART );
#line 294 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
}
#line 295 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
SetTimerAfter(GetModelObject () -> GetAnimLength (TWISTER_ANIM_GROWING ));
Jump(STATE_CURRENT, 0x01fb0003, FALSE, EBegin());return TRUE;}BOOL CTwister::H0x01fb0003_Main_03(const CEntityEvent &__eeInput) {
#undef STATE_CURRENT
#define STATE_CURRENT 0x01fb0003
switch(__eeInput.ee_slEvent) {case EVENTCODE_EBegin: return TRUE;case EVENTCODE_ETimer: Jump(STATE_CURRENT,0x01fb0004, FALSE, EInternal()); return TRUE;default: return FALSE; }}BOOL CTwister::H0x01fb0004_Main_04(const CEntityEvent &__eeInput){
ASSERT(__eeInput.ee_slEvent==EVENTCODE_EInternal);
#undef STATE_CURRENT
#define STATE_CURRENT 0x01fb0004
;
#line 298 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
FLOAT fR = FRndIn (5.0f , 10.0f);
#line 299 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
FLOAT fA = FRnd () * 360.0f;
#line 300 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
m_vSpeed = FLOAT3D (CosFast (fA ) * fR , 0 , SinFast (fA ) * fR );
#line 301 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
m_bMoving = m_bMovingAllowed ;
#line 304 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
Jump(STATE_CURRENT,0x01fb0007, FALSE, EInternal());return TRUE;}BOOL CTwister::H0x01fb0007_Main_07(const CEntityEvent &__eeInput){
ASSERT(__eeInput.ee_slEvent==EVENTCODE_EInternal);
#undef STATE_CURRENT
#define STATE_CURRENT 0x01fb0007
if(!(_pTimer -> CurrentTick () < m_fStopTime )){ Jump(STATE_CURRENT,0x01fb0008, FALSE, EInternal());return TRUE;}
#line 305 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
FLOAT fMoveTime = FRndIn (2.0f , 4.0f);
#line 306 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
m_aSpeedRotation = FLOAT3D (FRndIn (8.0f , 16.0f) , 0.0f , 0.0f);
#line 307 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
m_tmLastMove = _pTimer -> CurrentTick ();
#line 310 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
SetTimerAfter(fMoveTime );
Jump(STATE_CURRENT, 0x01fb0005, FALSE, EBegin());return TRUE;}BOOL CTwister::H0x01fb0005_Main_05(const CEntityEvent &__eeInput) {
#undef STATE_CURRENT
#define STATE_CURRENT 0x01fb0005
switch(__eeInput.ee_slEvent){case(EVENTCODE_EBegin):{const EBegin&e= (EBegin&)__eeInput;
return TRUE;}ASSERT(FALSE);break;case(EVENTCODE_ETimer):{const ETimer&e= (ETimer&)__eeInput;
UnsetTimer();Jump(STATE_CURRENT,0x01fb0006, FALSE, EInternal());return TRUE;}ASSERT(FALSE);break;case(EVENTCODE_EPass):{const EPass&ep= (EPass&)__eeInput;
#line 314 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
if(ep . penOther -> GetRenderType () & RT_MODEL &&
#line 315 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
ep . penOther -> GetPhysicsFlags () & EPF_MOVABLE &&
#line 316 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
! IsOfClass (ep . penOther , "Twister")){
#line 317 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
SpinEntity (ep . penOther );
#line 318 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
}
#line 319 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
return TRUE;
#line 320 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
}ASSERT(FALSE);break;default: return FALSE; break;
#line 321 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
}return TRUE;}BOOL CTwister::H0x01fb0006_Main_06(const CEntityEvent &__eeInput){
ASSERT(__eeInput.ee_slEvent==EVENTCODE_EInternal);
#undef STATE_CURRENT
#define STATE_CURRENT 0x01fb0006
Jump(STATE_CURRENT,0x01fb0007, FALSE, EInternal());return TRUE;
#line 322 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
}BOOL CTwister::H0x01fb0008_Main_08(const CEntityEvent &__eeInput) {
ASSERT(__eeInput.ee_slEvent==EVENTCODE_EInternal);
#undef STATE_CURRENT
#define STATE_CURRENT 0x01fb0008
#line 325 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
m_fFadeStartTime = _pTimer -> CurrentTick ();
#line 326 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
m_bFadeOut = TRUE ;
#line 327 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
m_fFadeTime = 2.0f;
#line 328 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
SetTimerAfter(m_fFadeTime );
Jump(STATE_CURRENT, 0x01fb0009, FALSE, EBegin());return TRUE;}BOOL CTwister::H0x01fb0009_Main_09(const CEntityEvent &__eeInput) {
#undef STATE_CURRENT
#define STATE_CURRENT 0x01fb0009
switch(__eeInput.ee_slEvent) {case EVENTCODE_EBegin: return TRUE;case EVENTCODE_ETimer: Jump(STATE_CURRENT,0x01fb000a, FALSE, EInternal()); return TRUE;default: return FALSE; }}BOOL CTwister::H0x01fb000a_Main_10(const CEntityEvent &__eeInput){
ASSERT(__eeInput.ee_slEvent==EVENTCODE_EInternal);
#undef STATE_CURRENT
#define STATE_CURRENT 0x01fb000a
;
#line 331 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
Destroy ();
#line 333 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
Return(STATE_CURRENT,EVoid());
#line 333 "D:/SE1_GPL/Sources/EntitiesMP/Twister.es"
return TRUE; ASSERT(FALSE); return TRUE;};