Files
libsst/Include/ZRendererUtil/ZStandardParticleSpawnStrategy.h
2026-04-03 00:22:39 -05:00

219 lines
4.0 KiB
C++

/*
ZStandardParticleSpawnStrategy.h
Author: James Russell <jcrussell@762studios.com>
Purpose: TODO
Changelog
2011/09/11 - creation (jcrussell)
*/
#pragma once
#ifndef _ZSTANDARDPARTICLESPAWNSTRATEGY_H
#define _ZSTANDARDPARTICLESPAWNSTRATEGY_H
#define ZSP_DEFAULT_SPAWN_MASS (1)
#define ZSP_DEFAULT_SPAWN_ENERGY (1000)
#define ZSP_DEFAULT_SPAWN_VELOCITY_X (0.0f)
#define ZSP_DEFAULT_SPAWN_VELOCITY_Y (0.0f)
#define ZSP_DEFAULT_SPAWN_VELOCITY_Z (0.0f)
#define ZSP_DEFAULT_SPAWN_FACING_X (0.0f)
#define ZSP_DEFAULT_SPAWN_FACING_Y (0.0f)
#define ZSP_DEFAULT_SPAWN_FACING_Z (1.0f)
#define ZSP_DEFAULT_SPAWN_SCALE_X (1.0f)
#define ZSP_DEFAULT_SPAWN_SCALE_Y (1.0f)
#define ZSP_DEFAULT_SPAWN_COLOR_R (1.0f)
#define ZSP_DEFAULT_SPAWN_COLOR_G (1.0f)
#define ZSP_DEFAULT_SPAWN_COLOR_B (1.0f)
#define ZSP_DEFAULT_SPAWN_COLOR_A (1.0f)
#define ZSP_DEFAULT_TEXTURE_U (0.0f)
#define ZSP_DEFAULT_TEXTURE_V (0.0f)
#define ZSP_DEFAULT_TEXTURE_OFFSET (1.0f)
#define ZSP_DEFAULT_SPAWN_INTERVAL (100)
#define ZSP_DEFAULT_SPAWN_ANGLE (0.0f)
#define ZSP_DEFAULT_SPAWN_COUNT_MIN (0)
#define ZSP_DEFAULT_SPAWN_COUNT_MAX (1)
#include <ZRendererUtil/ZStandardParticleStorageAllocator.h>
#include <ZRendererUtil/ZParticleSpawnStrategy.h>
class ZStandardParticleSpawnStrategy : public ZParticleSpawnStrategy
{
private:
//The time until our next spawn
int NextSpawn;
//Our current spawn group
size_t CurrentSpawnGroup;
protected:
//Template for the particle we will be spawning with
ZStandardParticle TemplateParticle;
//The span between particle spawns
size_t SpawnInterval;
//The half-angle we deviate within when spawning a particle [0.0 - pi]
float SpawnAngle;
//The particle count spawn range (lower, upper)
ZPair<size_t, size_t> SpawnCountRange;
public:
/*
Default Constructor.
*/
ZStandardParticleSpawnStrategy();
/*
Destructor.
*/
virtual ~ZStandardParticleSpawnStrategy();
//Subclass Override
virtual bool CheckParticleFormat( const ZString& _format );
//Subclass Override
virtual void UpdateSpawn(ZParticleEffect* _particleEffect,
ZParticleEmitter* _particleEmitter,
ZParticleStorageAllocator* _storageAllocator,
size_t _dt );
/*
public ZStandardParticleSpawnStrategy::GetSpawnAngle
TODO
@return (float)
@context (all)
*/
float GetSpawnAngle();
/*
public ZStandardParticleSpawnStrategy::GetSpawnColor
TODO
@return (const ZVector4f&)
@context (all)
*/
const ZVector4f& GetSpawnColor();
/*
public ZStandardParticleSpawnStrategy::GetSpawnEnergy
TODO
@return (size_t)
@context (all)
*/
size_t GetSpawnEnergy();
/*
public ZStandardParticleSpawnStrategy::GetSpawnInterval
TODO
@return (size_t)
@context (all)
*/
size_t GetSpawnInterval();
/*
public ZStandardParticleSpawnStrategy::GetSpawnScale
TODO
@return (const ZVector2f&)
@context (all)
*/
const ZVector2f& GetSpawnScale();
/*
public ZStandardParticleSpawnStrategy::GetSpawnVelocity
TODO
@return (const ZVector3f&)
@context (all)
*/
const ZVector3f& GetSpawnVelocity();
/*
public ZStandardParticleSpawnStrategy::SetSpawnAngle
TODO
@param _angle -
@return (void)
@context (all)
*/
void SetSpawnAngle(float _angle);
/*
public ZStandardParticleSpawnStrategy::SetSpawnColor
TODO
@param _color -
@return (void)
@context (all)
*/
void SetSpawnColor(const ZVector4f& _color);
/*
public ZStandardParticleSpawnStrategy::SetSpawnEnergy
TODO
@param _energy -
@return (void)
@context (all)
*/
void SetSpawnEnergy(size_t _energy);
/*
public ZStandardParticleSpawnStrategy::SetSpawnInterval
TODO
@param _interval -
@return (void)
@context (all)
*/
void SetSpawnInterval(size_t _interval);
/*
public ZStandardParticleSpawnStrategy::SetSpawnScale
TODO
@param _scale -
@return (void)
@context (all)
*/
void SetSpawnScale(const ZVector2f& _scale);
/*
public ZStandardParticleSpawnStrategy::SetDirection
TODO
@param _direction -
@return (void)
@context (all)
*/
void SetSpawnVelocity(const ZVector3f& _velocity);
};
#endif