using System;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
namespace BansheeEngine
{
/** @addtogroup Rendering
* @{
*/
/// Wraps Decal as a Component.
public partial class Decal : Component
{
private Decal(bool __dummy0) { }
protected Decal() { }
/// Determines the material to use when rendering the decal.
[ShowInInspector]
public RRef Material
{
get { return Internal_getMaterial(mCachedPtr); }
set { Internal_setMaterial(mCachedPtr, value); }
}
/// Size of the decal in world space units.
[ShowInInspector]
public Vector2 Size
{
get
{
Vector2 temp;
Internal_getSize(mCachedPtr, out temp);
return temp;
}
set { Internal_setSize(mCachedPtr, ref value); }
}
/// Determines the maximum distance (from its origin) at which the decal is displayed.
[ShowInInspector]
public float MaxDistance
{
get { return Internal_getMaxDistance(mCachedPtr); }
set { Internal_setMaxDistance(mCachedPtr, value); }
}
///
/// Determines the layer that controls whether a system is considered visible in a specific camera. Layer must match
/// camera layer bitfield in order for the camera to render the decal.
///
[ShowInInspector]
public ulong Layer
{
get { return Internal_getLayer(mCachedPtr); }
set { Internal_setLayer(mCachedPtr, value); }
}
///
/// Bitfield that allows you to mask on which objects will the decal be projected onto. Only objects with the matching
/// layers will be projected onto. Note that decal layer mask only supports 32-bits and objects with layers in bits >= 32
/// will always be projected onto.
///
[ShowInInspector]
public uint LayerMask
{
get { return Internal_getLayerMask(mCachedPtr); }
set { Internal_setLayerMask(mCachedPtr, value); }
}
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern void Internal_setMaterial(IntPtr thisPtr, RRef material);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern RRef Internal_getMaterial(IntPtr thisPtr);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern void Internal_setSize(IntPtr thisPtr, ref Vector2 size);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern void Internal_getSize(IntPtr thisPtr, out Vector2 __output);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern void Internal_setMaxDistance(IntPtr thisPtr, float distance);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern float Internal_getMaxDistance(IntPtr thisPtr);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern void Internal_setLayer(IntPtr thisPtr, ulong layer);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern ulong Internal_getLayer(IntPtr thisPtr);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern void Internal_setLayerMask(IntPtr thisPtr, uint mask);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern uint Internal_getLayerMask(IntPtr thisPtr);
}
/** @} */
}