mirror of
				https://github.com/OpenMW/openmw.git
				synced 2025-11-04 06:56:39 +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
 |