using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace BansheeEngine { /** @addtogroup Particles * @{ */ /// Settings used for controlling a vector field in a GPU simulated particle system. [ShowInInspector] public partial class ParticleVectorFieldSettings : ScriptObject { private ParticleVectorFieldSettings(bool __dummy0) { } protected ParticleVectorFieldSettings() { } /// Vector field resource used for influencing the particles. [ShowInInspector] [NativeWrapper] public RRef VectorField { get { return Internal_getvectorField(mCachedPtr); } set { Internal_setvectorField(mCachedPtr, value); } } /// Intensity of the forces and velocities applied by the vector field. [ShowInInspector] [NativeWrapper] public float Intensity { get { return Internal_getintensity(mCachedPtr); } set { Internal_setintensity(mCachedPtr, value); } } /// /// Determines how closely does the particle velocity follow the vectors in the field. If set to 1 particles will be /// snapped to the exact velocity of the value in the field, and if set to 0 the field will not influence particle /// velocities directly. /// [ShowInInspector] [NativeWrapper] public float Tightness { get { return Internal_gettightness(mCachedPtr); } set { Internal_settightness(mCachedPtr, value); } } /// /// Scale to apply to the vector field bounds. This is multiplied with the bounds of the vector field resource. /// [ShowInInspector] [NativeWrapper] public Vector3 Scale { get { Vector3 temp; Internal_getscale(mCachedPtr, out temp); return temp; } set { Internal_setscale(mCachedPtr, ref value); } } /// /// Amount of to move the vector field by relative to the parent particle system. This is added to the bounds provided in /// the vector field resource. /// [ShowInInspector] [NativeWrapper] public Vector3 Offset { get { Vector3 temp; Internal_getoffset(mCachedPtr, out temp); return temp; } set { Internal_setoffset(mCachedPtr, ref value); } } /// Initial rotation of the vector field. [ShowInInspector] [NativeWrapper] public Quaternion Rotation { get { Quaternion temp; Internal_getrotation(mCachedPtr, out temp); return temp; } set { Internal_setrotation(mCachedPtr, ref value); } } /// /// Determines the amount to rotate the vector field every second, in degrees, around XYZ axis respectively. Evaluated /// over the particle system lifetime. /// [ShowInInspector] [NotNull] [PassByCopy] [NativeWrapper] public Vector3Distribution RotationRate { get { return Internal_getrotationRate(mCachedPtr); } set { Internal_setrotationRate(mCachedPtr, value); } } /// /// Determines should the field influence particles outside of the field bounds. If true the field will be tiled /// infinitely in the X direction. /// [ShowInInspector] [NativeWrapper] public bool TilingX { get { return Internal_gettilingX(mCachedPtr); } set { Internal_settilingX(mCachedPtr, value); } } /// /// Determines should the field influence particles outside of the field bounds. If true the field will be tiled /// infinitely in the Y direction. /// [ShowInInspector] [NativeWrapper] public bool TilingY { get { return Internal_gettilingY(mCachedPtr); } set { Internal_settilingY(mCachedPtr, value); } } /// /// Determines should the field influence particles outside of the field bounds. If true the field will be tiled /// infinitely in the Z direction. /// [ShowInInspector] [NativeWrapper] public bool TilingZ { get { return Internal_gettilingZ(mCachedPtr); } set { Internal_settilingZ(mCachedPtr, value); } } [MethodImpl(MethodImplOptions.InternalCall)] private static extern RRef Internal_getvectorField(IntPtr thisPtr); [MethodImpl(MethodImplOptions.InternalCall)] private static extern void Internal_setvectorField(IntPtr thisPtr, RRef value); [MethodImpl(MethodImplOptions.InternalCall)] private static extern float Internal_getintensity(IntPtr thisPtr); [MethodImpl(MethodImplOptions.InternalCall)] private static extern void Internal_setintensity(IntPtr thisPtr, float value); [MethodImpl(MethodImplOptions.InternalCall)] private static extern float Internal_gettightness(IntPtr thisPtr); [MethodImpl(MethodImplOptions.InternalCall)] private static extern void Internal_settightness(IntPtr thisPtr, float value); [MethodImpl(MethodImplOptions.InternalCall)] private static extern void Internal_getscale(IntPtr thisPtr, out Vector3 __output); [MethodImpl(MethodImplOptions.InternalCall)] private static extern void Internal_setscale(IntPtr thisPtr, ref Vector3 value); [MethodImpl(MethodImplOptions.InternalCall)] private static extern void Internal_getoffset(IntPtr thisPtr, out Vector3 __output); [MethodImpl(MethodImplOptions.InternalCall)] private static extern void Internal_setoffset(IntPtr thisPtr, ref Vector3 value); [MethodImpl(MethodImplOptions.InternalCall)] private static extern void Internal_getrotation(IntPtr thisPtr, out Quaternion __output); [MethodImpl(MethodImplOptions.InternalCall)] private static extern void Internal_setrotation(IntPtr thisPtr, ref Quaternion value); [MethodImpl(MethodImplOptions.InternalCall)] private static extern Vector3Distribution Internal_getrotationRate(IntPtr thisPtr); [MethodImpl(MethodImplOptions.InternalCall)] private static extern void Internal_setrotationRate(IntPtr thisPtr, Vector3Distribution value); [MethodImpl(MethodImplOptions.InternalCall)] private static extern bool Internal_gettilingX(IntPtr thisPtr); [MethodImpl(MethodImplOptions.InternalCall)] private static extern void Internal_settilingX(IntPtr thisPtr, bool value); [MethodImpl(MethodImplOptions.InternalCall)] private static extern bool Internal_gettilingY(IntPtr thisPtr); [MethodImpl(MethodImplOptions.InternalCall)] private static extern void Internal_settilingY(IntPtr thisPtr, bool value); [MethodImpl(MethodImplOptions.InternalCall)] private static extern bool Internal_gettilingZ(IntPtr thisPtr); [MethodImpl(MethodImplOptions.InternalCall)] private static extern void Internal_settilingZ(IntPtr thisPtr, bool value); } /** @} */ }