using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace BansheeEngine { /** @addtogroup Rendering * @{ */ /// /// Renderable represents any visible object in the scene. It has a mesh, bounds and a set of materials. Renderer will /// render any Renderable objects visible by a camera. /// public partial class Renderable : Component { private Renderable(bool __dummy0) { } protected Renderable() { } /// /// Determines the mesh to render. All sub-meshes of the mesh will be rendered, and you may set individual materials for /// each sub-mesh. /// [ShowInInspector] public Mesh Mesh { get { return Internal_getMesh(mCachedPtr); } set { Internal_setMesh(mCachedPtr, value); } } /// /// Determines all materials used for rendering this renderable. Each of the materials is used for rendering a single /// sub-mesh. If number of materials is larger than number of sub-meshes, they will be ignored. If lower, the remaining /// materials will be removed. /// [ShowInInspector] public Material[] Materials { get { return Internal_getMaterials(mCachedPtr); } set { Internal_setMaterials(mCachedPtr, value); } } /// /// Determines the layer bitfield that controls whether a renderable is considered visible in a specific camera. /// Renderable layer must match camera layer in order for the camera to render the component. /// [ShowInInspector] public ulong Layers { get { return Internal_getLayer(mCachedPtr); } set { Internal_setLayer(mCachedPtr, value); } } /// Gets world bounds of the mesh rendered by this object. [ShowInInspector] public Bounds Bounds { get { Bounds temp; Internal_getBounds(mCachedPtr, out temp); return temp; } } /// /// Sets a material that will be used for rendering a sub-mesh with the specified index. If a sub-mesh doesn't have a /// specific material set then the primary material will be used. /// public void SetMaterial(uint idx, Material material) { Internal_setMaterial(mCachedPtr, idx, material); } /// /// Sets a material that will be used for rendering a sub-mesh with the specified index. If a sub-mesh doesn't have a /// specific material set then the primary material will be used. /// public void SetMaterial(Material material) { Internal_setMaterial0(mCachedPtr, material); } /// Returns the material used for rendering a sub-mesh with the specified index. public Material GetMaterial(uint idx) { return Internal_getMaterial(mCachedPtr, idx); } [MethodImpl(MethodImplOptions.InternalCall)] private static extern void Internal_setMesh(IntPtr thisPtr, Mesh mesh); [MethodImpl(MethodImplOptions.InternalCall)] private static extern Mesh Internal_getMesh(IntPtr thisPtr); [MethodImpl(MethodImplOptions.InternalCall)] private static extern void Internal_setMaterial(IntPtr thisPtr, uint idx, Material material); [MethodImpl(MethodImplOptions.InternalCall)] private static extern void Internal_setMaterial0(IntPtr thisPtr, Material material); [MethodImpl(MethodImplOptions.InternalCall)] private static extern Material Internal_getMaterial(IntPtr thisPtr, uint idx); [MethodImpl(MethodImplOptions.InternalCall)] private static extern void Internal_setMaterials(IntPtr thisPtr, Material[] materials); [MethodImpl(MethodImplOptions.InternalCall)] private static extern Material[] Internal_getMaterials(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_getBounds(IntPtr thisPtr, out Bounds __output); } /** @} */ }