| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267 |
- /*
- ** Command & Conquer Generals Zero Hour(tm)
- ** Copyright 2025 Electronic Arts Inc.
- **
- ** This program is free software: you can redistribute it and/or modify
- ** it under the terms of the GNU General Public License as published by
- ** the Free Software Foundation, either version 3 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 General Public License for more details.
- **
- ** You should have received a copy of the GNU General Public License
- ** along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
- ////////////////////////////////////////////////////////////////////////////////
- // //
- // (c) 2001-2003 Electronic Arts Inc. //
- // //
- ////////////////////////////////////////////////////////////////////////////////
- // FILE: TransitionDamageFX.h /////////////////////////////////////////////////////////////////////
- // Author: Colin Day, March 2002
- // Desc: Damage module capable of launching various effects on damage transitions
- ///////////////////////////////////////////////////////////////////////////////////////////////////
- #pragma once
- #ifndef __TRANSITIONDAMAGEFX_H_
- #define __TRANSITIONDAMAGEFX_H_
- // USER INCLUDES //////////////////////////////////////////////////////////////////////////////////
- #include "GameClient/ParticleSys.h"
- #include "GameLogic/Module/DamageModule.h"
- #include "GameLogic/Module/BodyModule.h"
- // FORWARD REFERENCES /////////////////////////////////////////////////////////////////////////////
- class Thing;
- class FXList;
- class ObjectCreationList;
- class ParticleSystemTemplate;
- // we can have this many effects of each type per body state
- // NOTE: If you change this you should update the dataFieldParse[] table in the FXDamageModuleData
- // to allow for the new indices into the effect arrays
- enum { DAMAGE_MODULE_MAX_FX = 12 };
- typedef Char FXDamageLocType;
- enum
- {
- FX_DAMAGE_LOC_TYPE_BONE = 0,
- FX_DAMAGE_LOC_TYPE_COORD = 1
- };
- //-------------------------------------------------------------------------------------------------
- //-------------------------------------------------------------------------------------------------
- struct FXLocInfo
- {
- FXDamageLocType locType; // location is bone or coord
- AsciiString boneName; // bone name to use for effect pos
- Bool randomBone; // if true, boneName is a prefix and we will do the effect at one of the bones with that prefix
- Coord3D loc; // location is a specified point in space
- };
- //-------------------------------------------------------------------------------------------------
- //-------------------------------------------------------------------------------------------------
- struct FXDamageFXListInfo
- {
- const FXList *fx;
- FXLocInfo locInfo;
- };
- //-------------------------------------------------------------------------------------------------
- //-------------------------------------------------------------------------------------------------
- struct FXDamageOCLInfo
- {
- const ObjectCreationList *ocl;
- FXLocInfo locInfo;
- };
- //-------------------------------------------------------------------------------------------------
- //-------------------------------------------------------------------------------------------------
- struct FXDamageParticleSystemInfo
- {
- const ParticleSystemTemplate *particleSysTemplate;
- FXLocInfo locInfo;
- };
- //-------------------------------------------------------------------------------------------------
- //-------------------------------------------------------------------------------------------------
- class TransitionDamageFXModuleData : public DamageModuleData
- {
- public:
- TransitionDamageFXModuleData( void );
- static void buildFieldParse(MultiIniFieldParse& p)
- {
- DamageModuleData::buildFieldParse(p);
- static const FieldParse dataFieldParse[] =
- {
- { "DamageFXTypes", INI::parseDamageTypeFlags, NULL, offsetof( TransitionDamageFXModuleData, m_damageFXTypes ) },
- { "DamageOCLTypes", INI::parseDamageTypeFlags, NULL, offsetof( TransitionDamageFXModuleData, m_damageOCLTypes ) },
- { "DamageParticleTypes", INI::parseDamageTypeFlags, NULL, offsetof( TransitionDamageFXModuleData, m_damageParticleTypes ) },
- { "DamagedFXList1", TransitionDamageFXModuleData::parseFXList, NULL, offsetof( TransitionDamageFXModuleData, m_fxList[ BODY_DAMAGED ][ 0 ] ) },
- { "DamagedFXList2", TransitionDamageFXModuleData::parseFXList, NULL, offsetof( TransitionDamageFXModuleData, m_fxList[ BODY_DAMAGED ][ 1 ] ) },
- { "DamagedFXList3", TransitionDamageFXModuleData::parseFXList, NULL, offsetof( TransitionDamageFXModuleData, m_fxList[ BODY_DAMAGED ][ 2 ] ) },
- { "DamagedFXList4", TransitionDamageFXModuleData::parseFXList, NULL, offsetof( TransitionDamageFXModuleData, m_fxList[ BODY_DAMAGED ][ 3 ] ) },
- { "DamagedFXList5", TransitionDamageFXModuleData::parseFXList, NULL, offsetof( TransitionDamageFXModuleData, m_fxList[ BODY_DAMAGED ][ 4 ] ) },
- { "DamagedFXList6", TransitionDamageFXModuleData::parseFXList, NULL, offsetof( TransitionDamageFXModuleData, m_fxList[ BODY_DAMAGED ][ 5 ] ) },
- { "DamagedFXList7", TransitionDamageFXModuleData::parseFXList, NULL, offsetof( TransitionDamageFXModuleData, m_fxList[ BODY_DAMAGED ][ 6 ] ) },
- { "DamagedFXList8", TransitionDamageFXModuleData::parseFXList, NULL, offsetof( TransitionDamageFXModuleData, m_fxList[ BODY_DAMAGED ][ 7 ] ) },
- { "DamagedFXList9", TransitionDamageFXModuleData::parseFXList, NULL, offsetof( TransitionDamageFXModuleData, m_fxList[ BODY_DAMAGED ][ 8 ] ) },
- { "DamagedFXList10", TransitionDamageFXModuleData::parseFXList, NULL, offsetof( TransitionDamageFXModuleData, m_fxList[ BODY_DAMAGED ][ 9 ] ) },
- { "DamagedFXList11", TransitionDamageFXModuleData::parseFXList, NULL, offsetof( TransitionDamageFXModuleData, m_fxList[ BODY_DAMAGED ][ 10 ] ) },
- { "DamagedFXList12", TransitionDamageFXModuleData::parseFXList, NULL, offsetof( TransitionDamageFXModuleData, m_fxList[ BODY_DAMAGED ][ 11 ] ) },
- { "ReallyDamagedFXList1", TransitionDamageFXModuleData::parseFXList, NULL, offsetof( TransitionDamageFXModuleData, m_fxList[ BODY_REALLYDAMAGED ][ 0 ] ) },
- { "ReallyDamagedFXList2", TransitionDamageFXModuleData::parseFXList, NULL, offsetof( TransitionDamageFXModuleData, m_fxList[ BODY_REALLYDAMAGED ][ 1 ] ) },
- { "ReallyDamagedFXList3", TransitionDamageFXModuleData::parseFXList, NULL, offsetof( TransitionDamageFXModuleData, m_fxList[ BODY_REALLYDAMAGED ][ 2 ] ) },
- { "ReallyDamagedFXList4", TransitionDamageFXModuleData::parseFXList, NULL, offsetof( TransitionDamageFXModuleData, m_fxList[ BODY_REALLYDAMAGED ][ 3 ] ) },
- { "ReallyDamagedFXList5", TransitionDamageFXModuleData::parseFXList, NULL, offsetof( TransitionDamageFXModuleData, m_fxList[ BODY_REALLYDAMAGED ][ 4 ] ) },
- { "ReallyDamagedFXList6", TransitionDamageFXModuleData::parseFXList, NULL, offsetof( TransitionDamageFXModuleData, m_fxList[ BODY_REALLYDAMAGED ][ 5 ] ) },
- { "ReallyDamagedFXList7", TransitionDamageFXModuleData::parseFXList, NULL, offsetof( TransitionDamageFXModuleData, m_fxList[ BODY_REALLYDAMAGED ][ 6 ] ) },
- { "ReallyDamagedFXList8", TransitionDamageFXModuleData::parseFXList, NULL, offsetof( TransitionDamageFXModuleData, m_fxList[ BODY_REALLYDAMAGED ][ 7 ] ) },
- { "ReallyDamagedFXList9", TransitionDamageFXModuleData::parseFXList, NULL, offsetof( TransitionDamageFXModuleData, m_fxList[ BODY_REALLYDAMAGED ][ 8 ] ) },
- { "ReallyDamagedFXList10", TransitionDamageFXModuleData::parseFXList, NULL, offsetof( TransitionDamageFXModuleData, m_fxList[ BODY_REALLYDAMAGED ][ 9 ] ) },
- { "ReallyDamagedFXList11", TransitionDamageFXModuleData::parseFXList, NULL, offsetof( TransitionDamageFXModuleData, m_fxList[ BODY_REALLYDAMAGED ][ 10 ] ) },
- { "ReallyDamagedFXList12", TransitionDamageFXModuleData::parseFXList, NULL, offsetof( TransitionDamageFXModuleData, m_fxList[ BODY_REALLYDAMAGED ][ 11 ] ) },
- { "RubbleFXList1", TransitionDamageFXModuleData::parseFXList, NULL, offsetof( TransitionDamageFXModuleData, m_fxList[ BODY_RUBBLE ][ 0 ] ) },
- { "RubbleFXList2", TransitionDamageFXModuleData::parseFXList, NULL, offsetof( TransitionDamageFXModuleData, m_fxList[ BODY_RUBBLE ][ 1 ] ) },
- { "RubbleFXList3", TransitionDamageFXModuleData::parseFXList, NULL, offsetof( TransitionDamageFXModuleData, m_fxList[ BODY_RUBBLE ][ 2 ] ) },
- { "RubbleFXList4", TransitionDamageFXModuleData::parseFXList, NULL, offsetof( TransitionDamageFXModuleData, m_fxList[ BODY_RUBBLE ][ 3 ] ) },
- { "RubbleFXList5", TransitionDamageFXModuleData::parseFXList, NULL, offsetof( TransitionDamageFXModuleData, m_fxList[ BODY_RUBBLE ][ 4 ] ) },
- { "RubbleFXList6", TransitionDamageFXModuleData::parseFXList, NULL, offsetof( TransitionDamageFXModuleData, m_fxList[ BODY_RUBBLE ][ 5 ] ) },
- { "RubbleFXList7", TransitionDamageFXModuleData::parseFXList, NULL, offsetof( TransitionDamageFXModuleData, m_fxList[ BODY_RUBBLE ][ 6 ] ) },
- { "RubbleFXList8", TransitionDamageFXModuleData::parseFXList, NULL, offsetof( TransitionDamageFXModuleData, m_fxList[ BODY_RUBBLE ][ 7 ] ) },
- { "RubbleFXList9", TransitionDamageFXModuleData::parseFXList, NULL, offsetof( TransitionDamageFXModuleData, m_fxList[ BODY_RUBBLE ][ 8 ] ) },
- { "RubbleFXList10", TransitionDamageFXModuleData::parseFXList, NULL, offsetof( TransitionDamageFXModuleData, m_fxList[ BODY_RUBBLE ][ 9 ] ) },
- { "RubbleFXList11", TransitionDamageFXModuleData::parseFXList, NULL, offsetof( TransitionDamageFXModuleData, m_fxList[ BODY_RUBBLE ][ 10 ] ) },
- { "RubbleFXList12", TransitionDamageFXModuleData::parseFXList, NULL, offsetof( TransitionDamageFXModuleData, m_fxList[ BODY_RUBBLE ][ 11 ] ) },
- { "DamagedOCL1", TransitionDamageFXModuleData::parseObjectCreationList, NULL, offsetof( TransitionDamageFXModuleData, m_OCL[ BODY_DAMAGED ][ 0 ] ) },
- { "DamagedOCL2", TransitionDamageFXModuleData::parseObjectCreationList, NULL, offsetof( TransitionDamageFXModuleData, m_OCL[ BODY_DAMAGED ][ 1 ] ) },
- { "DamagedOCL3", TransitionDamageFXModuleData::parseObjectCreationList, NULL, offsetof( TransitionDamageFXModuleData, m_OCL[ BODY_DAMAGED ][ 2 ] ) },
- { "DamagedOCL4", TransitionDamageFXModuleData::parseObjectCreationList, NULL, offsetof( TransitionDamageFXModuleData, m_OCL[ BODY_DAMAGED ][ 3 ] ) },
- { "DamagedOCL5", TransitionDamageFXModuleData::parseObjectCreationList, NULL, offsetof( TransitionDamageFXModuleData, m_OCL[ BODY_DAMAGED ][ 4 ] ) },
- { "DamagedOCL6", TransitionDamageFXModuleData::parseObjectCreationList, NULL, offsetof( TransitionDamageFXModuleData, m_OCL[ BODY_DAMAGED ][ 5 ] ) },
- { "DamagedOCL7", TransitionDamageFXModuleData::parseObjectCreationList, NULL, offsetof( TransitionDamageFXModuleData, m_OCL[ BODY_DAMAGED ][ 6 ] ) },
- { "DamagedOCL8", TransitionDamageFXModuleData::parseObjectCreationList, NULL, offsetof( TransitionDamageFXModuleData, m_OCL[ BODY_DAMAGED ][ 7 ] ) },
- { "DamagedOCL9", TransitionDamageFXModuleData::parseObjectCreationList, NULL, offsetof( TransitionDamageFXModuleData, m_OCL[ BODY_DAMAGED ][ 8 ] ) },
- { "DamagedOCL10", TransitionDamageFXModuleData::parseObjectCreationList, NULL, offsetof( TransitionDamageFXModuleData, m_OCL[ BODY_DAMAGED ][ 9 ] ) },
- { "DamagedOCL11", TransitionDamageFXModuleData::parseObjectCreationList, NULL, offsetof( TransitionDamageFXModuleData, m_OCL[ BODY_DAMAGED ][ 10 ] ) },
- { "DamagedOCL12", TransitionDamageFXModuleData::parseObjectCreationList, NULL, offsetof( TransitionDamageFXModuleData, m_OCL[ BODY_DAMAGED ][ 11 ] ) },
- { "ReallyDamagedOCL1", TransitionDamageFXModuleData::parseObjectCreationList, NULL, offsetof( TransitionDamageFXModuleData, m_OCL[ BODY_REALLYDAMAGED ][ 0 ] ) },
- { "ReallyDamagedOCL2", TransitionDamageFXModuleData::parseObjectCreationList, NULL, offsetof( TransitionDamageFXModuleData, m_OCL[ BODY_REALLYDAMAGED ][ 1 ] ) },
- { "ReallyDamagedOCL3", TransitionDamageFXModuleData::parseObjectCreationList, NULL, offsetof( TransitionDamageFXModuleData, m_OCL[ BODY_REALLYDAMAGED ][ 2 ] ) },
- { "ReallyDamagedOCL4", TransitionDamageFXModuleData::parseObjectCreationList, NULL, offsetof( TransitionDamageFXModuleData, m_OCL[ BODY_REALLYDAMAGED ][ 3 ] ) },
- { "ReallyDamagedOCL5", TransitionDamageFXModuleData::parseObjectCreationList, NULL, offsetof( TransitionDamageFXModuleData, m_OCL[ BODY_REALLYDAMAGED ][ 4 ] ) },
- { "ReallyDamagedOCL6", TransitionDamageFXModuleData::parseObjectCreationList, NULL, offsetof( TransitionDamageFXModuleData, m_OCL[ BODY_REALLYDAMAGED ][ 5 ] ) },
- { "ReallyDamagedOCL7", TransitionDamageFXModuleData::parseObjectCreationList, NULL, offsetof( TransitionDamageFXModuleData, m_OCL[ BODY_REALLYDAMAGED ][ 6 ] ) },
- { "ReallyDamagedOCL8", TransitionDamageFXModuleData::parseObjectCreationList, NULL, offsetof( TransitionDamageFXModuleData, m_OCL[ BODY_REALLYDAMAGED ][ 7 ] ) },
- { "ReallyDamagedOCL9", TransitionDamageFXModuleData::parseObjectCreationList, NULL, offsetof( TransitionDamageFXModuleData, m_OCL[ BODY_REALLYDAMAGED ][ 8 ] ) },
- { "ReallyDamagedOCL10", TransitionDamageFXModuleData::parseObjectCreationList, NULL, offsetof( TransitionDamageFXModuleData, m_OCL[ BODY_REALLYDAMAGED ][ 9 ] ) },
- { "ReallyDamagedOCL11", TransitionDamageFXModuleData::parseObjectCreationList, NULL, offsetof( TransitionDamageFXModuleData, m_OCL[ BODY_REALLYDAMAGED ][ 10 ] ) },
- { "ReallyDamagedOCL12", TransitionDamageFXModuleData::parseObjectCreationList, NULL, offsetof( TransitionDamageFXModuleData, m_OCL[ BODY_REALLYDAMAGED ][ 11 ] ) },
- { "RubbleOCL1", TransitionDamageFXModuleData::parseObjectCreationList, NULL, offsetof( TransitionDamageFXModuleData, m_OCL[ BODY_RUBBLE ][ 0 ] ) },
- { "RubbleOCL2", TransitionDamageFXModuleData::parseObjectCreationList, NULL, offsetof( TransitionDamageFXModuleData, m_OCL[ BODY_RUBBLE ][ 1 ] ) },
- { "RubbleOCL3", TransitionDamageFXModuleData::parseObjectCreationList, NULL, offsetof( TransitionDamageFXModuleData, m_OCL[ BODY_RUBBLE ][ 2 ] ) },
- { "RubbleOCL4", TransitionDamageFXModuleData::parseObjectCreationList, NULL, offsetof( TransitionDamageFXModuleData, m_OCL[ BODY_RUBBLE ][ 3 ] ) },
- { "RubbleOCL5", TransitionDamageFXModuleData::parseObjectCreationList, NULL, offsetof( TransitionDamageFXModuleData, m_OCL[ BODY_RUBBLE ][ 4 ] ) },
- { "RubbleOCL6", TransitionDamageFXModuleData::parseObjectCreationList, NULL, offsetof( TransitionDamageFXModuleData, m_OCL[ BODY_RUBBLE ][ 5 ] ) },
- { "RubbleOCL7", TransitionDamageFXModuleData::parseObjectCreationList, NULL, offsetof( TransitionDamageFXModuleData, m_OCL[ BODY_RUBBLE ][ 6 ] ) },
- { "RubbleOCL8", TransitionDamageFXModuleData::parseObjectCreationList, NULL, offsetof( TransitionDamageFXModuleData, m_OCL[ BODY_RUBBLE ][ 7 ] ) },
- { "RubbleOCL9", TransitionDamageFXModuleData::parseObjectCreationList, NULL, offsetof( TransitionDamageFXModuleData, m_OCL[ BODY_RUBBLE ][ 8 ] ) },
- { "RubbleOCL10", TransitionDamageFXModuleData::parseObjectCreationList, NULL, offsetof( TransitionDamageFXModuleData, m_OCL[ BODY_RUBBLE ][ 9 ] ) },
- { "RubbleOCL11", TransitionDamageFXModuleData::parseObjectCreationList, NULL, offsetof( TransitionDamageFXModuleData, m_OCL[ BODY_RUBBLE ][ 10 ] ) },
- { "RubbleOCL12", TransitionDamageFXModuleData::parseObjectCreationList, NULL, offsetof( TransitionDamageFXModuleData, m_OCL[ BODY_RUBBLE ][ 11 ] ) },
- { "DamagedParticleSystem1", TransitionDamageFXModuleData::parseParticleSystem, NULL, offsetof( TransitionDamageFXModuleData, m_particleSystem[ BODY_DAMAGED ][ 0 ] ) },
- { "DamagedParticleSystem2", TransitionDamageFXModuleData::parseParticleSystem, NULL, offsetof( TransitionDamageFXModuleData, m_particleSystem[ BODY_DAMAGED ][ 1 ] ) },
- { "DamagedParticleSystem3", TransitionDamageFXModuleData::parseParticleSystem, NULL, offsetof( TransitionDamageFXModuleData, m_particleSystem[ BODY_DAMAGED ][ 2 ] ) },
- { "DamagedParticleSystem4", TransitionDamageFXModuleData::parseParticleSystem, NULL, offsetof( TransitionDamageFXModuleData, m_particleSystem[ BODY_DAMAGED ][ 3 ] ) },
- { "DamagedParticleSystem5", TransitionDamageFXModuleData::parseParticleSystem, NULL, offsetof( TransitionDamageFXModuleData, m_particleSystem[ BODY_DAMAGED ][ 4 ] ) },
- { "DamagedParticleSystem6", TransitionDamageFXModuleData::parseParticleSystem, NULL, offsetof( TransitionDamageFXModuleData, m_particleSystem[ BODY_DAMAGED ][ 5 ] ) },
- { "DamagedParticleSystem7", TransitionDamageFXModuleData::parseParticleSystem, NULL, offsetof( TransitionDamageFXModuleData, m_particleSystem[ BODY_DAMAGED ][ 6 ] ) },
- { "DamagedParticleSystem8", TransitionDamageFXModuleData::parseParticleSystem, NULL, offsetof( TransitionDamageFXModuleData, m_particleSystem[ BODY_DAMAGED ][ 7 ] ) },
- { "DamagedParticleSystem9", TransitionDamageFXModuleData::parseParticleSystem, NULL, offsetof( TransitionDamageFXModuleData, m_particleSystem[ BODY_DAMAGED ][ 8 ] ) },
- { "DamagedParticleSystem10", TransitionDamageFXModuleData::parseParticleSystem, NULL, offsetof( TransitionDamageFXModuleData, m_particleSystem[ BODY_DAMAGED ][ 9 ] ) },
- { "DamagedParticleSystem11", TransitionDamageFXModuleData::parseParticleSystem, NULL, offsetof( TransitionDamageFXModuleData, m_particleSystem[ BODY_DAMAGED ][ 10 ] ) },
- { "DamagedParticleSystem12", TransitionDamageFXModuleData::parseParticleSystem, NULL, offsetof( TransitionDamageFXModuleData, m_particleSystem[ BODY_DAMAGED ][ 11 ] ) },
- { "ReallyDamagedParticleSystem1", TransitionDamageFXModuleData::parseParticleSystem, NULL, offsetof( TransitionDamageFXModuleData, m_particleSystem[ BODY_REALLYDAMAGED ][ 0 ] ) },
- { "ReallyDamagedParticleSystem2", TransitionDamageFXModuleData::parseParticleSystem, NULL, offsetof( TransitionDamageFXModuleData, m_particleSystem[ BODY_REALLYDAMAGED ][ 1 ] ) },
- { "ReallyDamagedParticleSystem3", TransitionDamageFXModuleData::parseParticleSystem, NULL, offsetof( TransitionDamageFXModuleData, m_particleSystem[ BODY_REALLYDAMAGED ][ 2 ] ) },
- { "ReallyDamagedParticleSystem4", TransitionDamageFXModuleData::parseParticleSystem, NULL, offsetof( TransitionDamageFXModuleData, m_particleSystem[ BODY_REALLYDAMAGED ][ 3 ] ) },
- { "ReallyDamagedParticleSystem5", TransitionDamageFXModuleData::parseParticleSystem, NULL, offsetof( TransitionDamageFXModuleData, m_particleSystem[ BODY_REALLYDAMAGED ][ 4 ] ) },
- { "ReallyDamagedParticleSystem6", TransitionDamageFXModuleData::parseParticleSystem, NULL, offsetof( TransitionDamageFXModuleData, m_particleSystem[ BODY_REALLYDAMAGED ][ 5 ] ) },
- { "ReallyDamagedParticleSystem7", TransitionDamageFXModuleData::parseParticleSystem, NULL, offsetof( TransitionDamageFXModuleData, m_particleSystem[ BODY_REALLYDAMAGED ][ 6 ] ) },
- { "ReallyDamagedParticleSystem8", TransitionDamageFXModuleData::parseParticleSystem, NULL, offsetof( TransitionDamageFXModuleData, m_particleSystem[ BODY_REALLYDAMAGED ][ 7 ] ) },
- { "ReallyDamagedParticleSystem9", TransitionDamageFXModuleData::parseParticleSystem, NULL, offsetof( TransitionDamageFXModuleData, m_particleSystem[ BODY_REALLYDAMAGED ][ 8 ] ) },
- { "ReallyDamagedParticleSystem10", TransitionDamageFXModuleData::parseParticleSystem, NULL, offsetof( TransitionDamageFXModuleData, m_particleSystem[ BODY_REALLYDAMAGED ][ 9 ] ) },
- { "ReallyDamagedParticleSystem11", TransitionDamageFXModuleData::parseParticleSystem, NULL, offsetof( TransitionDamageFXModuleData, m_particleSystem[ BODY_REALLYDAMAGED ][ 10 ] ) },
- { "ReallyDamagedParticleSystem12", TransitionDamageFXModuleData::parseParticleSystem, NULL, offsetof( TransitionDamageFXModuleData, m_particleSystem[ BODY_REALLYDAMAGED ][ 11 ] ) },
- { "RubbleParticleSystem1", TransitionDamageFXModuleData::parseParticleSystem, NULL, offsetof( TransitionDamageFXModuleData, m_particleSystem[ BODY_RUBBLE ][ 0 ] ) },
- { "RubbleParticleSystem2", TransitionDamageFXModuleData::parseParticleSystem, NULL, offsetof( TransitionDamageFXModuleData, m_particleSystem[ BODY_RUBBLE ][ 1 ] ) },
- { "RubbleParticleSystem3", TransitionDamageFXModuleData::parseParticleSystem, NULL, offsetof( TransitionDamageFXModuleData, m_particleSystem[ BODY_RUBBLE ][ 2 ] ) },
- { "RubbleParticleSystem4", TransitionDamageFXModuleData::parseParticleSystem, NULL, offsetof( TransitionDamageFXModuleData, m_particleSystem[ BODY_RUBBLE ][ 3 ] ) },
- { "RubbleParticleSystem5", TransitionDamageFXModuleData::parseParticleSystem, NULL, offsetof( TransitionDamageFXModuleData, m_particleSystem[ BODY_RUBBLE ][ 4 ] ) },
- { "RubbleParticleSystem6", TransitionDamageFXModuleData::parseParticleSystem, NULL, offsetof( TransitionDamageFXModuleData, m_particleSystem[ BODY_RUBBLE ][ 5 ] ) },
- { "RubbleParticleSystem7", TransitionDamageFXModuleData::parseParticleSystem, NULL, offsetof( TransitionDamageFXModuleData, m_particleSystem[ BODY_RUBBLE ][ 6 ] ) },
- { "RubbleParticleSystem8", TransitionDamageFXModuleData::parseParticleSystem, NULL, offsetof( TransitionDamageFXModuleData, m_particleSystem[ BODY_RUBBLE ][ 7 ] ) },
- { "RubbleParticleSystem9", TransitionDamageFXModuleData::parseParticleSystem, NULL, offsetof( TransitionDamageFXModuleData, m_particleSystem[ BODY_RUBBLE ][ 8 ] ) },
- { "RubbleParticleSystem10", TransitionDamageFXModuleData::parseParticleSystem, NULL, offsetof( TransitionDamageFXModuleData, m_particleSystem[ BODY_RUBBLE ][ 9 ] ) },
- { "RubbleParticleSystem11", TransitionDamageFXModuleData::parseParticleSystem, NULL, offsetof( TransitionDamageFXModuleData, m_particleSystem[ BODY_RUBBLE ][ 10 ] ) },
- { "RubbleParticleSystem12", TransitionDamageFXModuleData::parseParticleSystem, NULL, offsetof( TransitionDamageFXModuleData, m_particleSystem[ BODY_RUBBLE ][ 11 ] ) },
- { 0, 0, 0, 0 }
- };
- p.add(dataFieldParse);
- }
- static void parseFXList( INI *ini, void *instance, void *store, const void *userData );
- static void parseObjectCreationList( INI *ini, void *instance, void *store, const void *userData );
- static void parseParticleSystem( INI *ini, void *instance, void *store, const void *userData );
- DamageTypeFlags m_damageFXTypes; ///< flags used to play or not play the effects
- FXDamageFXListInfo m_fxList[ BODYDAMAGETYPE_COUNT ][ DAMAGE_MODULE_MAX_FX ];
- DamageTypeFlags m_damageOCLTypes; ///< flags used to play or not play the effects
- FXDamageOCLInfo m_OCL[ BODYDAMAGETYPE_COUNT ][ DAMAGE_MODULE_MAX_FX ];
- DamageTypeFlags m_damageParticleTypes; ///< flags used to play or not play the effects
- FXDamageParticleSystemInfo m_particleSystem[ BODYDAMAGETYPE_COUNT ][ DAMAGE_MODULE_MAX_FX ];
- };
- //-------------------------------------------------------------------------------------------------
- class TransitionDamageFX : public DamageModule
- {
- MAKE_STANDARD_MODULE_MACRO_WITH_MODULE_DATA( TransitionDamageFX, TransitionDamageFXModuleData );
- MEMORY_POOL_GLUE_WITH_USERLOOKUP_CREATE( TransitionDamageFX, "TransitionDamageFX" )
- public:
- TransitionDamageFX( Thing *thing, const ModuleData* moduleData );
- // virtual destructor prototype provided by memory pool declaration
- virtual void onDamage( DamageInfo *damageInfo ) { }
- virtual void onHealing( DamageInfo *damageInfo ) { }
- virtual void onBodyDamageStateChange( const DamageInfo* damageInfo,
- BodyDamageType oldState,
- BodyDamageType newState );
- protected:
- /// we keep a record of attached particle system so we can detach and kill them when we want to
- ParticleSystemID m_particleSystemID[ BODYDAMAGETYPE_COUNT ][ DAMAGE_MODULE_MAX_FX ];
- };
- #endif // end __TRANSITIONDAMAGEFX
|