|
@@ -15,84 +15,84 @@ namespace BansheeEngine
|
|
|
template<int Semantic>
|
|
template<int Semantic>
|
|
|
struct TVertexDataAccessor
|
|
struct TVertexDataAccessor
|
|
|
{
|
|
{
|
|
|
- static void get(const DefaultMeshDataPtr& meshData, UINT8* buffer, UINT32 size) { }
|
|
|
|
|
- static void set(const DefaultMeshDataPtr& meshData, UINT8* buffer, UINT32 size) { }
|
|
|
|
|
|
|
+ static void get(const RendererMeshDataPtr& meshData, UINT8* buffer, UINT32 size) { }
|
|
|
|
|
+ static void set(const RendererMeshDataPtr& meshData, UINT8* buffer, UINT32 size) { }
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
template<>
|
|
template<>
|
|
|
struct TVertexDataAccessor < (int)VertexLayout::Position >
|
|
struct TVertexDataAccessor < (int)VertexLayout::Position >
|
|
|
{
|
|
{
|
|
|
- static void get(const DefaultMeshDataPtr& meshData, UINT8* buffer, UINT32 size)
|
|
|
|
|
|
|
+ static void get(const RendererMeshDataPtr& meshData, UINT8* buffer, UINT32 size)
|
|
|
{ meshData->getPositions((Vector3*)buffer, size); }
|
|
{ meshData->getPositions((Vector3*)buffer, size); }
|
|
|
|
|
|
|
|
- static void set(const DefaultMeshDataPtr& meshData, UINT8* buffer, UINT32 size)
|
|
|
|
|
|
|
+ static void set(const RendererMeshDataPtr& meshData, UINT8* buffer, UINT32 size)
|
|
|
{ meshData->setPositions((Vector3*)buffer, size); }
|
|
{ meshData->setPositions((Vector3*)buffer, size); }
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
template<>
|
|
template<>
|
|
|
struct TVertexDataAccessor < (int)VertexLayout::Normal >
|
|
struct TVertexDataAccessor < (int)VertexLayout::Normal >
|
|
|
{
|
|
{
|
|
|
- static void get(const DefaultMeshDataPtr& meshData, UINT8* buffer, UINT32 size)
|
|
|
|
|
|
|
+ static void get(const RendererMeshDataPtr& meshData, UINT8* buffer, UINT32 size)
|
|
|
{ meshData->getNormals((Vector3*)buffer, size); }
|
|
{ meshData->getNormals((Vector3*)buffer, size); }
|
|
|
|
|
|
|
|
- static void set(const DefaultMeshDataPtr& meshData, UINT8* buffer, UINT32 size)
|
|
|
|
|
|
|
+ static void set(const RendererMeshDataPtr& meshData, UINT8* buffer, UINT32 size)
|
|
|
{ meshData->setNormals((Vector3*)buffer, size); }
|
|
{ meshData->setNormals((Vector3*)buffer, size); }
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
template<>
|
|
template<>
|
|
|
struct TVertexDataAccessor < (int)VertexLayout::Tangent >
|
|
struct TVertexDataAccessor < (int)VertexLayout::Tangent >
|
|
|
{
|
|
{
|
|
|
- static void get(const DefaultMeshDataPtr& meshData, UINT8* buffer, UINT32 size)
|
|
|
|
|
|
|
+ static void get(const RendererMeshDataPtr& meshData, UINT8* buffer, UINT32 size)
|
|
|
{ meshData->getTangents((Vector4*)buffer, size); }
|
|
{ meshData->getTangents((Vector4*)buffer, size); }
|
|
|
|
|
|
|
|
- static void set(const DefaultMeshDataPtr& meshData, UINT8* buffer, UINT32 size)
|
|
|
|
|
|
|
+ static void set(const RendererMeshDataPtr& meshData, UINT8* buffer, UINT32 size)
|
|
|
{ meshData->setTangents((Vector4*)buffer, size); }
|
|
{ meshData->setTangents((Vector4*)buffer, size); }
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
template<>
|
|
template<>
|
|
|
struct TVertexDataAccessor < (int)VertexLayout::Color >
|
|
struct TVertexDataAccessor < (int)VertexLayout::Color >
|
|
|
{
|
|
{
|
|
|
- static void get(const DefaultMeshDataPtr& meshData, UINT8* buffer, UINT32 size)
|
|
|
|
|
|
|
+ static void get(const RendererMeshDataPtr& meshData, UINT8* buffer, UINT32 size)
|
|
|
{ meshData->getColors((Color*)buffer, size); }
|
|
{ meshData->getColors((Color*)buffer, size); }
|
|
|
|
|
|
|
|
- static void set(const DefaultMeshDataPtr& meshData, UINT8* buffer, UINT32 size)
|
|
|
|
|
|
|
+ static void set(const RendererMeshDataPtr& meshData, UINT8* buffer, UINT32 size)
|
|
|
{ meshData->setColors((Color*)buffer, size); }
|
|
{ meshData->setColors((Color*)buffer, size); }
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
template<>
|
|
template<>
|
|
|
struct TVertexDataAccessor < (int)VertexLayout::UV0 >
|
|
struct TVertexDataAccessor < (int)VertexLayout::UV0 >
|
|
|
{
|
|
{
|
|
|
- static void get(const DefaultMeshDataPtr& meshData, UINT8* buffer, UINT32 size)
|
|
|
|
|
|
|
+ static void get(const RendererMeshDataPtr& meshData, UINT8* buffer, UINT32 size)
|
|
|
{ meshData->getUV0((Vector2*)buffer, size); }
|
|
{ meshData->getUV0((Vector2*)buffer, size); }
|
|
|
|
|
|
|
|
- static void set(const DefaultMeshDataPtr& meshData, UINT8* buffer, UINT32 size)
|
|
|
|
|
|
|
+ static void set(const RendererMeshDataPtr& meshData, UINT8* buffer, UINT32 size)
|
|
|
{ meshData->setUV0((Vector2*)buffer, size); }
|
|
{ meshData->setUV0((Vector2*)buffer, size); }
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
template<>
|
|
template<>
|
|
|
struct TVertexDataAccessor < (int)VertexLayout::UV1 >
|
|
struct TVertexDataAccessor < (int)VertexLayout::UV1 >
|
|
|
{
|
|
{
|
|
|
- static void get(const DefaultMeshDataPtr& meshData, UINT8* buffer, UINT32 size)
|
|
|
|
|
|
|
+ static void get(const RendererMeshDataPtr& meshData, UINT8* buffer, UINT32 size)
|
|
|
{ meshData->getUV1((Vector2*)buffer, size); }
|
|
{ meshData->getUV1((Vector2*)buffer, size); }
|
|
|
|
|
|
|
|
- static void set(const DefaultMeshDataPtr& meshData, UINT8* buffer, UINT32 size)
|
|
|
|
|
|
|
+ static void set(const RendererMeshDataPtr& meshData, UINT8* buffer, UINT32 size)
|
|
|
{ meshData->setUV1((Vector2*)buffer, size); }
|
|
{ meshData->setUV1((Vector2*)buffer, size); }
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
template<>
|
|
template<>
|
|
|
struct TVertexDataAccessor < (int)VertexLayout::BoneWeights >
|
|
struct TVertexDataAccessor < (int)VertexLayout::BoneWeights >
|
|
|
{
|
|
{
|
|
|
- static void get(const DefaultMeshDataPtr& meshData, UINT8* buffer, UINT32 size)
|
|
|
|
|
|
|
+ static void get(const RendererMeshDataPtr& meshData, UINT8* buffer, UINT32 size)
|
|
|
{ meshData->getBoneWeights((BoneWeight*)buffer, size); }
|
|
{ meshData->getBoneWeights((BoneWeight*)buffer, size); }
|
|
|
|
|
|
|
|
- static void set(const DefaultMeshDataPtr& meshData, UINT8* buffer, UINT32 size)
|
|
|
|
|
|
|
+ static void set(const RendererMeshDataPtr& meshData, UINT8* buffer, UINT32 size)
|
|
|
{ meshData->setBoneWeights((BoneWeight*)buffer, size); }
|
|
{ meshData->setBoneWeights((BoneWeight*)buffer, size); }
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
template<int Semantic, class TNative, class TScript>
|
|
template<int Semantic, class TNative, class TScript>
|
|
|
MonoArray* getVertexDataArray(ScriptMeshData* scriptMeshData)
|
|
MonoArray* getVertexDataArray(ScriptMeshData* scriptMeshData)
|
|
|
{
|
|
{
|
|
|
- DefaultMeshDataPtr meshData = scriptMeshData->getInternalValue();
|
|
|
|
|
|
|
+ RendererMeshDataPtr meshData = scriptMeshData->getInternalValue();
|
|
|
UINT32 numElements = meshData->getData()->getNumVertices();
|
|
UINT32 numElements = meshData->getData()->getNumVertices();
|
|
|
|
|
|
|
|
ScriptArray outArray = ScriptArray::create<TScript>(numElements);
|
|
ScriptArray outArray = ScriptArray::create<TScript>(numElements);
|
|
@@ -107,7 +107,7 @@ namespace BansheeEngine
|
|
|
if (array == nullptr)
|
|
if (array == nullptr)
|
|
|
return;
|
|
return;
|
|
|
|
|
|
|
|
- DefaultMeshDataPtr meshData = scriptMeshData->getInternalValue();
|
|
|
|
|
|
|
+ RendererMeshDataPtr meshData = scriptMeshData->getInternalValue();
|
|
|
UINT32 numElements = meshData->getData()->getNumVertices();
|
|
UINT32 numElements = meshData->getData()->getNumVertices();
|
|
|
|
|
|
|
|
ScriptArray inArray(array);
|
|
ScriptArray inArray(array);
|
|
@@ -148,12 +148,12 @@ namespace BansheeEngine
|
|
|
metaData.scriptClass->addInternalCall("Internal_GetIndexCount", &ScriptMeshData::internal_GetIndexCount);
|
|
metaData.scriptClass->addInternalCall("Internal_GetIndexCount", &ScriptMeshData::internal_GetIndexCount);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- void ScriptMeshData::initialize(const DefaultMeshDataPtr& meshData)
|
|
|
|
|
|
|
+ void ScriptMeshData::initialize(const RendererMeshDataPtr& meshData)
|
|
|
{
|
|
{
|
|
|
mMeshData = meshData;
|
|
mMeshData = meshData;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- MonoObject* ScriptMeshData::create(const DefaultMeshDataPtr& meshData)
|
|
|
|
|
|
|
+ MonoObject* ScriptMeshData::create(const RendererMeshDataPtr& meshData)
|
|
|
{
|
|
{
|
|
|
MonoObject* meshDataObj = metaData.scriptClass->createInstance();
|
|
MonoObject* meshDataObj = metaData.scriptClass->createInstance();
|
|
|
|
|
|
|
@@ -167,7 +167,7 @@ namespace BansheeEngine
|
|
|
{
|
|
{
|
|
|
MonoObject* meshDataObj = metaData.scriptClass->createInstance();
|
|
MonoObject* meshDataObj = metaData.scriptClass->createInstance();
|
|
|
|
|
|
|
|
- DefaultMeshDataPtr defaultMeshData = DefaultMeshData::create(meshData);
|
|
|
|
|
|
|
+ RendererMeshDataPtr defaultMeshData = RendererMeshData::create(meshData);
|
|
|
ScriptMeshData* scriptMeshData = ScriptMeshData::toNative(meshDataObj);
|
|
ScriptMeshData* scriptMeshData = ScriptMeshData::toNative(meshDataObj);
|
|
|
scriptMeshData->initialize(defaultMeshData);
|
|
scriptMeshData->initialize(defaultMeshData);
|
|
|
|
|
|
|
@@ -181,7 +181,7 @@ namespace BansheeEngine
|
|
|
if (index == ScriptIndexType::Index32)
|
|
if (index == ScriptIndexType::Index32)
|
|
|
indexType = IT_32BIT;
|
|
indexType = IT_32BIT;
|
|
|
|
|
|
|
|
- DefaultMeshDataPtr meshData = DefaultMeshData::create(numVertices, numIndices, vertex, indexType);
|
|
|
|
|
|
|
+ RendererMeshDataPtr meshData = RendererMeshData::create(numVertices, numIndices, vertex, indexType);
|
|
|
|
|
|
|
|
ScriptMeshData* scriptMeshData = new (bs_alloc<ScriptMeshData>()) ScriptMeshData(instance);
|
|
ScriptMeshData* scriptMeshData = new (bs_alloc<ScriptMeshData>()) ScriptMeshData(instance);
|
|
|
scriptMeshData->initialize(meshData);
|
|
scriptMeshData->initialize(meshData);
|
|
@@ -259,7 +259,7 @@ namespace BansheeEngine
|
|
|
|
|
|
|
|
MonoArray* ScriptMeshData::internal_GetIndices(ScriptMeshData* thisPtr)
|
|
MonoArray* ScriptMeshData::internal_GetIndices(ScriptMeshData* thisPtr)
|
|
|
{
|
|
{
|
|
|
- DefaultMeshDataPtr meshData = thisPtr->getInternalValue();
|
|
|
|
|
|
|
+ RendererMeshDataPtr meshData = thisPtr->getInternalValue();
|
|
|
UINT32 numElements = meshData->getData()->getNumIndices();
|
|
UINT32 numElements = meshData->getData()->getNumIndices();
|
|
|
|
|
|
|
|
ScriptArray outArray = ScriptArray::create<UINT32>(numElements);
|
|
ScriptArray outArray = ScriptArray::create<UINT32>(numElements);
|
|
@@ -273,7 +273,7 @@ namespace BansheeEngine
|
|
|
if (value == nullptr)
|
|
if (value == nullptr)
|
|
|
return;
|
|
return;
|
|
|
|
|
|
|
|
- DefaultMeshDataPtr meshData = thisPtr->getInternalValue();
|
|
|
|
|
|
|
+ RendererMeshDataPtr meshData = thisPtr->getInternalValue();
|
|
|
UINT32 numElements = meshData->getData()->getNumIndices();
|
|
UINT32 numElements = meshData->getData()->getNumIndices();
|
|
|
|
|
|
|
|
ScriptArray inArray(value);
|
|
ScriptArray inArray(value);
|
|
@@ -282,14 +282,14 @@ namespace BansheeEngine
|
|
|
|
|
|
|
|
int ScriptMeshData::internal_GetVertexCount(ScriptMeshData* thisPtr)
|
|
int ScriptMeshData::internal_GetVertexCount(ScriptMeshData* thisPtr)
|
|
|
{
|
|
{
|
|
|
- DefaultMeshDataPtr meshData = thisPtr->getInternalValue();
|
|
|
|
|
|
|
+ RendererMeshDataPtr meshData = thisPtr->getInternalValue();
|
|
|
|
|
|
|
|
return (int)meshData->getData()->getNumVertices();
|
|
return (int)meshData->getData()->getNumVertices();
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
int ScriptMeshData::internal_GetIndexCount(ScriptMeshData* thisPtr)
|
|
int ScriptMeshData::internal_GetIndexCount(ScriptMeshData* thisPtr)
|
|
|
{
|
|
{
|
|
|
- DefaultMeshDataPtr meshData = thisPtr->getInternalValue();
|
|
|
|
|
|
|
+ RendererMeshDataPtr meshData = thisPtr->getInternalValue();
|
|
|
|
|
|
|
|
return (int)meshData->getData()->getNumIndices();
|
|
return (int)meshData->getData()->getNumIndices();
|
|
|
}
|
|
}
|