Ejemplo n.º 1
0
InstanceObject* InstanceManager::AddInstanceObject(string modelName, vec3 position, vec3 rotation, float instanceScale, Chunk* pOwningChunk, int voxelX, int voxelY, int voxelZ)
{
	InstanceParent* pNewInstanceParent = GetInstanceParent(modelName);
	
	if(pNewInstanceParent == NULL)
	{
		// Add new instance parent
		pNewInstanceParent = new InstanceParent();

		pNewInstanceParent->m_modelName = modelName;
		pNewInstanceParent->m_pQubicleBinary = new QubicleBinary(m_pRenderer);
		pNewInstanceParent->m_pQubicleBinary->Import(modelName.c_str(), true);

		SetupGLBuffers(pNewInstanceParent);

		m_vpInstanceParentList.push_back(pNewInstanceParent);
	}

	InstanceObject* pInstanceObject = new InstanceObject();
	pInstanceObject->m_erase = false;
	pInstanceObject->m_render = true;
	pInstanceObject->UpdateMatrix(position, rotation, instanceScale);

	pInstanceObject->m_pOwningChunk = pOwningChunk;
	pInstanceObject->m_voxelX = voxelX;
	pInstanceObject->m_voxelY = voxelY;
	pInstanceObject->m_voxelZ = voxelZ;

	pNewInstanceParent->m_vpInstanceObjectList.push_back(pInstanceObject);

	return pInstanceObject;
}