/* * Copyright 2011-2017 Branimir Karadzic. All rights reserved. * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause */ #ifndef PARTICLE_SYSTEM_H_HEADER_GUARD #define PARTICLE_SYSTEM_H_HEADER_GUARD #include #include #include struct EmitterShape { enum Enum { Sphere, Hemisphere, Circle, Disc, Rect, Count }; }; struct EmitterDirection { enum Enum { Up, Outward, Count }; }; struct EmitterUniforms { void reset(); float m_position[3]; float m_angle[3]; float m_blendStart[2]; float m_blendEnd[2]; float m_offsetStart[2]; float m_offsetEnd[2]; float m_scaleStart[2]; float m_scaleEnd[2]; float m_lifeSpan[2]; float m_gravityScale; uint32_t m_rgba[5]; uint32_t m_particlesPerSecond; bx::Easing::Enum m_easePos; bx::Easing::Enum m_easeRgba; bx::Easing::Enum m_easeBlend; bx::Easing::Enum m_easeScale; }; struct EmitterHandle { uint16_t idx; }; /// void psInit(bx::AllocatorI* _allocator = NULL); /// void psShutdown(); /// EmitterHandle psCreateEmitter(EmitterShape::Enum _shape, EmitterDirection::Enum _direction, uint32_t _maxParticles); /// void psUpdateEmitter(EmitterHandle _handle, const EmitterUniforms* _uniforms = NULL); /// void psDestroyEmitter(EmitterHandle _handle); /// void psUpdate(float _dt); /// void psRender(uint8_t _view, const float* _mtxView, const float* _eye); #endif // PARTICLE_SYSTEM_H_HEADER_GUARD