/*
** Command & Conquer Renegade(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 .
*/
/***********************************************************************************************
*** C O N F I D E N T I A L --- W E S T W O O D S T U D I O S ***
***********************************************************************************************
* *
* Project Name : W3DView *
* *
* $Archive:: /VSS_Sync/W3DView/EmitterInstanceList.h $Modtime:: $*
* *
* $Revision:: 6 $*
* *
*---------------------------------------------------------------------------------------------*
* Functions: *
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
#if defined(_MSC_VER)
#pragma once
#endif
#ifndef __EMITTER_INSTANCE_LIST_H
#define __EMITTER_INSTANCE_LIST_H
#include "Vector.H"
#include "Part_Ldr.H"
#include "Part_Emt.H"
/////////////////////////////////////////////////////////////////////
//
// EmitterInstanceListClass
//
/////////////////////////////////////////////////////////////////////
class EmitterInstanceListClass : public ParticleEmitterDefClass
{
public:
///////////////////////////////////////////////////////
// Public constructors/destructors
///////////////////////////////////////////////////////
EmitterInstanceListClass (void) { }
EmitterInstanceListClass (const EmitterInstanceListClass &src)
: ParticleEmitterDefClass (src) { }
virtual ~EmitterInstanceListClass (void);
///////////////////////////////////////////////////////
// Public methods
///////////////////////////////////////////////////////
virtual void Add_Emitter (ParticleEmitterClass *emitter);
virtual void Free_List (void);
///////////////////////////////////////////////////////
// Derived overrides
///////////////////////////////////////////////////////
//
// Note: The following are settings that can be changed on
// the fly. All other settings are simply cached in the
// definition and can be used to create a new prototype loader.
//
virtual void Set_Velocity (const Vector3 &value);
virtual void Set_Acceleration (const Vector3 &value);
virtual void Set_Burst_Size (unsigned int count);
virtual void Set_Outward_Vel (float value);
virtual void Set_Vel_Inherit (float value);
//
// Randomizer accessors
//
virtual void Set_Velocity_Random (Vector3Randomizer *randomizer);
//
// Keyframe accessors
//
virtual void Set_Color_Keyframes (ParticlePropertyStruct &keyframes);
virtual void Set_Opacity_Keyframes (ParticlePropertyStruct &keyframes);
virtual void Set_Size_Keyframes (ParticlePropertyStruct &keyframes);
virtual void Set_Rotation_Keyframes (ParticlePropertyStruct &keyframes, float orient_rnd);
virtual void Set_Frame_Keyframes (ParticlePropertyStruct &keyframes);
virtual void Set_Blur_Time_Keyframes (ParticlePropertyStruct &keyframes);
virtual void Get_Color_Keyframes (ParticlePropertyStruct &keyframes) const;
virtual void Get_Opacity_Keyframes (ParticlePropertyStruct &keyframes) const;
virtual void Get_Size_Keyframes (ParticlePropertyStruct &keyframes) const;
private:
///////////////////////////////////////////////////////
// Private member data
///////////////////////////////////////////////////////
DynamicVectorClass m_List;
};
#endif //__EMITTER_INSTANCE_LIST_H