mirror of
https://github.com/OpenMW/openmw.git
synced 2025-01-21 08:53:52 +00:00
90 lines
2 KiB
C++
90 lines
2 KiB
C++
#ifndef OPENMW_COMPONENTS_NIF_PARTICLE_HPP
|
|
#define OPENMW_COMPONENTS_NIF_PARTICLE_HPP
|
|
|
|
#include "base.hpp"
|
|
|
|
namespace Nif
|
|
{
|
|
|
|
struct NiParticleModifier : public Record
|
|
{
|
|
NiParticleModifierPtr mNext;
|
|
ControllerPtr mController;
|
|
|
|
void read(NIFStream* nif) override;
|
|
void post(Reader& nif) override;
|
|
};
|
|
|
|
struct NiParticleGrowFade : public NiParticleModifier
|
|
{
|
|
float mGrowTime;
|
|
float mFadeTime;
|
|
|
|
void read(NIFStream* nif) override;
|
|
};
|
|
|
|
struct NiParticleColorModifier : public NiParticleModifier
|
|
{
|
|
NiColorDataPtr mData;
|
|
|
|
void read(NIFStream* nif) override;
|
|
void post(Reader& nif) override;
|
|
};
|
|
|
|
struct NiGravity : public NiParticleModifier
|
|
{
|
|
enum class ForceType : uint32_t
|
|
{
|
|
Wind = 0, // Fixed direction
|
|
Point = 1, // Fixed origin
|
|
};
|
|
|
|
float mDecay{ 0.f };
|
|
float mForce;
|
|
ForceType mType;
|
|
osg::Vec3f mPosition;
|
|
osg::Vec3f mDirection;
|
|
|
|
void read(NIFStream* nif) override;
|
|
};
|
|
|
|
struct NiParticleCollider : public NiParticleModifier
|
|
{
|
|
float mBounceFactor;
|
|
bool mSpawnOnCollision{ false };
|
|
bool mDieOnCollision{ false };
|
|
|
|
void read(NIFStream* nif) override;
|
|
};
|
|
|
|
// NiPinaColada
|
|
struct NiPlanarCollider : public NiParticleCollider
|
|
{
|
|
osg::Vec2f mExtents;
|
|
osg::Vec3f mPosition;
|
|
osg::Vec3f mXVector, mYVector;
|
|
osg::Vec3f mPlaneNormal;
|
|
float mPlaneDistance;
|
|
|
|
void read(NIFStream* nif) override;
|
|
};
|
|
|
|
struct NiSphericalCollider : public NiParticleCollider
|
|
{
|
|
float mRadius;
|
|
osg::Vec3f mCenter;
|
|
|
|
void read(NIFStream* nif) override;
|
|
};
|
|
|
|
struct NiParticleRotation : public NiParticleModifier
|
|
{
|
|
uint8_t mRandomInitialAxis;
|
|
osg::Vec3f mInitialAxis;
|
|
float mRotationSpeed;
|
|
|
|
void read(NIFStream* nif) override;
|
|
};
|
|
|
|
}
|
|
#endif
|