using System;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
namespace BansheeEngine
{
/** @addtogroup Rendering
* @{
*/
///
/// Contains mesh vertex and index data used for initializing, updating and reading mesh data from Mesh.
///
[ShowInInspector]
public partial class MeshData : ScriptObject
{
private MeshData(bool __dummy0) { }
protected MeshData() { }
public MeshData(uint numVertices, uint numIndices, VertexLayout layout, IndexType indexType = IndexType.Index32)
{
Internal_create(this, numVertices, numIndices, layout, indexType);
}
/// An array of all vertex positions. Only valid if the vertex layout contains vertex positions.
[ShowInInspector]
[NativeWrapper]
public Vector3[] Positions
{
get { return Internal_getPositions(mCachedPtr); }
set { Internal_setPositions(mCachedPtr, value); }
}
/// An array of all vertex normals. Only valid if the vertex layout contains vertex normals.
[ShowInInspector]
[NativeWrapper]
public Vector3[] Normals
{
get { return Internal_getNormals(mCachedPtr); }
set { Internal_setNormals(mCachedPtr, value); }
}
/// An array of all vertex tangents. Only valid if the vertex layout contains vertex tangents.
[ShowInInspector]
[NativeWrapper]
public Vector4[] Tangents
{
get { return Internal_getTangents(mCachedPtr); }
set { Internal_setTangents(mCachedPtr, value); }
}
/// An array of all vertex colors. Only valid if the vertex layout contains vertex colors.
[ShowInInspector]
[NativeWrapper]
public Color[] Colors
{
get { return Internal_getColors(mCachedPtr); }
set { Internal_setColors(mCachedPtr, value); }
}
///
/// An array of all vertex texture coordinates in the UV0 channel. Only valid if the vertex layout contains UV0
/// coordinates.
///
[ShowInInspector]
[NativeWrapper]
public Vector2[] UV0
{
get { return Internal_getUV0(mCachedPtr); }
set { Internal_setUV0(mCachedPtr, value); }
}
///
/// An array of all vertex texture coordinates in the UV1 channel. Only valid if the vertex layout contains UV1
/// coordinates.
///
[ShowInInspector]
[NativeWrapper]
public Vector2[] UV1
{
get { return Internal_getUV1(mCachedPtr); }
set { Internal_setUV1(mCachedPtr, value); }
}
/// An array of all vertex bone weights. Only valid if the vertex layout contains bone weights.
[ShowInInspector]
[NativeWrapper]
public BoneWeight[] BoneWeights
{
get { return Internal_getBoneWeights(mCachedPtr); }
set { Internal_setBoneWeights(mCachedPtr, value); }
}
/// An array of all indices.
[ShowInInspector]
[NativeWrapper]
public uint[] Indices
{
get { return Internal_getIndices(mCachedPtr); }
set { Internal_setIndices(mCachedPtr, value); }
}
/// Returns the number of vertices contained in the mesh.
[ShowInInspector]
[NativeWrapper]
public int VertexCount
{
get { return Internal_getVertexCount(mCachedPtr); }
}
/// Returns the number of indices contained in the mesh.
[ShowInInspector]
[NativeWrapper]
public int IndexCount
{
get { return Internal_getIndexCount(mCachedPtr); }
}
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern void Internal_create(MeshData managedInstance, uint numVertices, uint numIndices, VertexLayout layout, IndexType indexType);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern Vector3[] Internal_getPositions(IntPtr thisPtr);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern void Internal_setPositions(IntPtr thisPtr, Vector3[] value);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern Vector3[] Internal_getNormals(IntPtr thisPtr);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern void Internal_setNormals(IntPtr thisPtr, Vector3[] value);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern Vector4[] Internal_getTangents(IntPtr thisPtr);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern void Internal_setTangents(IntPtr thisPtr, Vector4[] value);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern Color[] Internal_getColors(IntPtr thisPtr);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern void Internal_setColors(IntPtr thisPtr, Color[] value);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern Vector2[] Internal_getUV0(IntPtr thisPtr);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern void Internal_setUV0(IntPtr thisPtr, Vector2[] value);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern Vector2[] Internal_getUV1(IntPtr thisPtr);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern void Internal_setUV1(IntPtr thisPtr, Vector2[] value);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern BoneWeight[] Internal_getBoneWeights(IntPtr thisPtr);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern void Internal_setBoneWeights(IntPtr thisPtr, BoneWeight[] value);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern uint[] Internal_getIndices(IntPtr thisPtr);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern void Internal_setIndices(IntPtr thisPtr, uint[] value);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern int Internal_getVertexCount(IntPtr thisPtr);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern int Internal_getIndexCount(IntPtr thisPtr);
}
/** @} */
}