using System;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
namespace BansheeEngine
{
/** @addtogroup Particles
* @{
*/
/// Generic settings used for controlling a ParticleSystem.
[ShowInInspector]
public partial class ParticleSystemSettings : ScriptObject
{
private ParticleSystemSettings(bool __dummy0) { }
protected ParticleSystemSettings() { }
/// Material to render the particles with.
[ShowInInspector]
[NativeWrapper]
public RRef Material
{
get { return Internal_getmaterial(mCachedPtr); }
set { Internal_setmaterial(mCachedPtr, value); }
}
/// Mesh used for representing individual particles when using the Mesh rendering mode.
[ShowInInspector]
[NativeWrapper]
public RRef Mesh
{
get { return Internal_getmesh(mCachedPtr); }
set { Internal_setmesh(mCachedPtr, value); }
}
///
/// If true the particle system will be simulated on the GPU. This allows much higher particle counts at lower
/// performance cost. GPU simulation ignores any provided evolvers and instead uses ParticleGpuSimulationSettings to
/// customize the GPU simulation.
///
[ShowInInspector]
[NativeWrapper]
public bool GpuSimulation
{
get { return Internal_getgpuSimulation(mCachedPtr); }
set { Internal_setgpuSimulation(mCachedPtr, value); }
}
/// Determines in which space are particles in.
[ShowInInspector]
[NativeWrapper]
public ParticleSimulationSpace SimulationSpace
{
get { return Internal_getsimulationSpace(mCachedPtr); }
set { Internal_setsimulationSpace(mCachedPtr, value); }
}
/// Determines how are particles oriented when rendering.
[ShowInInspector]
[NativeWrapper]
public ParticleOrientation Orientation
{
get { return Internal_getorientation(mCachedPtr); }
set { Internal_setorientation(mCachedPtr, value); }
}
///
/// Determines should the particles only be allowed to orient themselves around the Y axis, or freely. Ignored if using
/// the Plane orientation mode.
///
[ShowInInspector]
[NativeWrapper]
public bool OrientationLockY
{
get { return Internal_getorientationLockY(mCachedPtr); }
set { Internal_setorientationLockY(mCachedPtr, value); }
}
///
/// Determines a normal of the plane to orient particles towards. Only used if particle orientation mode is set to
/// ParticleOrientation::Plane.
///
[ShowInInspector]
[NativeWrapper]
public Vector3 OrientationPlaneNormal
{
get
{
Vector3 temp;
Internal_getorientationPlaneNormal(mCachedPtr, out temp);
return temp;
}
set { Internal_setorientationPlaneNormal(mCachedPtr, ref value); }
}
///
/// Determines how (and if) are particles sorted. Sorting controls in what order are particles rendered. If GPU
/// simulation is enabled only distance based sorting is supported.
///
[ShowInInspector]
[NativeWrapper]
public ParticleSortMode SortMode
{
get { return Internal_getsortMode(mCachedPtr); }
set { Internal_setsortMode(mCachedPtr, value); }
}
///
/// Determines the time period during which the system runs, in seconds. This effects evaluation of distributions with
/// curves using particle system time for evaluation.
///
[ShowInInspector]
[NativeWrapper]
public float Duration
{
get { return Internal_getduration(mCachedPtr); }
set { Internal_setduration(mCachedPtr, value); }
}
/// Determines should the particle system time wrap around once it reaches its duration.
[ShowInInspector]
[NativeWrapper]
public bool IsLooping
{
get { return Internal_getisLooping(mCachedPtr); }
set { Internal_setisLooping(mCachedPtr, value); }
}
///
/// Determines the maximum number of particles that can ever be active in this system. This number is ignored if GPU
/// simulation is enabled, and instead particle count is instead only limited by the size of the internal buffers (shared
/// between all particle systems).
///
[ShowInInspector]
[NativeWrapper]
public uint MaxParticles
{
get { return Internal_getmaxParticles(mCachedPtr); }
set { Internal_setmaxParticles(mCachedPtr, value); }
}
///
/// Determines should an automatic seed be used for the internal random number generator. This ensures the particle
/// system yields different results each time it is ran.
///
[ShowInInspector]
[NativeWrapper]
public bool UseAutomaticSeed
{
get { return Internal_getuseAutomaticSeed(mCachedPtr); }
set { Internal_setuseAutomaticSeed(mCachedPtr, value); }
}
///
/// Determines the seed to use for the internal random number generator. Allows you to guarantee identical behaviour
/// between different runs. Only relevant if automatic seed is disabled.
///
[ShowInInspector]
[NativeWrapper]
public uint ManualSeed
{
get { return Internal_getmanualSeed(mCachedPtr); }
set { Internal_setmanualSeed(mCachedPtr, value); }
}
///
/// Determines should the particle system bounds be automatically calculated, or should the fixed value provided be used.
/// Bounds are used primarily for culling purposes. Note that automatic bounds are not supported when GPU simulation is
/// enabled.
///
[ShowInInspector]
[NativeWrapper]
public bool UseAutomaticBounds
{
get { return Internal_getuseAutomaticBounds(mCachedPtr); }
set { Internal_setuseAutomaticBounds(mCachedPtr, value); }
}
///
/// Custom bounds to use them is disabled. The bounds are in the simulation space of the
/// particle system.
///
[ShowInInspector]
[NativeWrapper]
public AABox CustomBounds
{
get
{
AABox temp;
Internal_getcustomBounds(mCachedPtr, out temp);
return temp;
}
set { Internal_setcustomBounds(mCachedPtr, ref value); }
}
/// Determines how is each particle represented on the screen.
[ShowInInspector]
[NativeWrapper]
public ParticleRenderMode RenderMode
{
get { return Internal_getrenderMode(mCachedPtr); }
set { Internal_setrenderMode(mCachedPtr, value); }
}
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern RRef Internal_getmaterial(IntPtr thisPtr);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern void Internal_setmaterial(IntPtr thisPtr, RRef value);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern RRef Internal_getmesh(IntPtr thisPtr);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern void Internal_setmesh(IntPtr thisPtr, RRef value);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern bool Internal_getgpuSimulation(IntPtr thisPtr);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern void Internal_setgpuSimulation(IntPtr thisPtr, bool value);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern ParticleSimulationSpace Internal_getsimulationSpace(IntPtr thisPtr);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern void Internal_setsimulationSpace(IntPtr thisPtr, ParticleSimulationSpace value);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern ParticleOrientation Internal_getorientation(IntPtr thisPtr);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern void Internal_setorientation(IntPtr thisPtr, ParticleOrientation value);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern bool Internal_getorientationLockY(IntPtr thisPtr);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern void Internal_setorientationLockY(IntPtr thisPtr, bool value);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern void Internal_getorientationPlaneNormal(IntPtr thisPtr, out Vector3 __output);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern void Internal_setorientationPlaneNormal(IntPtr thisPtr, ref Vector3 value);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern ParticleSortMode Internal_getsortMode(IntPtr thisPtr);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern void Internal_setsortMode(IntPtr thisPtr, ParticleSortMode value);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern float Internal_getduration(IntPtr thisPtr);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern void Internal_setduration(IntPtr thisPtr, float value);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern bool Internal_getisLooping(IntPtr thisPtr);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern void Internal_setisLooping(IntPtr thisPtr, bool value);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern uint Internal_getmaxParticles(IntPtr thisPtr);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern void Internal_setmaxParticles(IntPtr thisPtr, uint value);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern bool Internal_getuseAutomaticSeed(IntPtr thisPtr);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern void Internal_setuseAutomaticSeed(IntPtr thisPtr, bool value);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern uint Internal_getmanualSeed(IntPtr thisPtr);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern void Internal_setmanualSeed(IntPtr thisPtr, uint value);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern bool Internal_getuseAutomaticBounds(IntPtr thisPtr);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern void Internal_setuseAutomaticBounds(IntPtr thisPtr, bool value);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern void Internal_getcustomBounds(IntPtr thisPtr, out AABox __output);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern void Internal_setcustomBounds(IntPtr thisPtr, ref AABox value);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern ParticleRenderMode Internal_getrenderMode(IntPtr thisPtr);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern void Internal_setrenderMode(IntPtr thisPtr, ParticleRenderMode value);
}
/** @} */
}