Exemple #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;
}
BlockParticleManager::BlockParticleManager(Renderer* pRenderer, ChunkManager* pChunkManager)
{
    m_pRenderer = pRenderer;
    m_pChunkManager = pChunkManager;

    m_particleEffectCounter = 0;

    m_renderWireFrame = false;
    m_instanceRendering = true;

    m_vertexArray = -1;
    m_positionBuffer = -1;
    m_normalBuffer = -1;
    m_colourBuffer = -1;
    m_matrixBuffer = -1;

    bool shaderLoaded = false;
    m_instanceShader = -1;
    shaderLoaded = m_pRenderer->LoadGLSLShader("media/shaders/instance.vertex", "media/shaders/instance.pixel", &m_instanceShader);

    // Materials
    m_pRenderer->CreateMaterial(Colour(0.7f, 0.7f, 0.7f, 1.0f), Colour(1.0f, 1.0f, 1.0f, 1.0f), Colour(1.0f, 1.0f, 1.0f, 1.0f), Colour(0.0f, 0.0f, 0.0f, 0.0f), 64, &m_blockMaterialID);

    SetupGLBuffers();
}