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); } /** @} */ }