using System;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
namespace BansheeEngine
{
/** @addtogroup Particles
* @{
*/
/// Particle evolver that allows particles to collide with the world.
[ShowInInspector]
public partial class ParticleCollisions : ParticleEvolver
{
private ParticleCollisions(bool __dummy0) { }
/// Creates a new particle collision evolver.
public ParticleCollisions(ParticleCollisionsOptions desc)
{
Internal_create(this, ref desc);
}
/// Creates a new particle collision evolver.
public ParticleCollisions()
{
Internal_create0(this);
}
///
/// Determines a set of planes to use when using the Plane collision mode. Planes are expected to be in world space.
///
[ShowInInspector]
[NativeWrapper]
public Plane[] Planes
{
get { return Internal_getPlanes(mCachedPtr); }
set { Internal_setPlanes(mCachedPtr, value); }
}
///
/// Determines a set of objects whose transforms to derive the collision planes from. Objects can move in the world and
/// collision planes will be updated automatically. Object's negative Z axis is considered to be plane normal.
///
[ShowInInspector]
[NativeWrapper]
public SceneObject[] PlaneObjects
{
get { return Internal_getPlaneObjects(mCachedPtr); }
set { Internal_setPlaneObjects(mCachedPtr, value); }
}
/// Options describing the evolver.
[ShowInInspector]
[NativeWrapper]
public ParticleCollisionsOptions Options
{
get
{
ParticleCollisionsOptions temp;
Internal_getOptions(mCachedPtr, out temp);
return temp;
}
set { Internal_setOptions(mCachedPtr, ref value); }
}
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern void Internal_setPlanes(IntPtr thisPtr, Plane[] planes);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern Plane[] Internal_getPlanes(IntPtr thisPtr);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern void Internal_setPlaneObjects(IntPtr thisPtr, SceneObject[] objects);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern SceneObject[] Internal_getPlaneObjects(IntPtr thisPtr);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern void Internal_setOptions(IntPtr thisPtr, ref ParticleCollisionsOptions options);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern void Internal_getOptions(IntPtr thisPtr, out ParticleCollisionsOptions __output);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern void Internal_create(ParticleCollisions managedInstance, ref ParticleCollisionsOptions desc);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern void Internal_create0(ParticleCollisions managedInstance);
}
/** @} */
}