// Rendering void Player::Render() { Colour OulineColour(1.0f, 1.0f, 0.0f, 1.0f); m_pRenderer->PushMatrix(); m_pRenderer->MultiplyWorldMatrix(m_worldMatrix); m_pVoxelCharacter->RenderWeapons(false, false, false, OulineColour); m_pVoxelCharacter->Render(false, false, false, OulineColour, false); m_pRenderer->PopMatrix(); }
void Player::RenderFirstPerson() { m_pVoxelCharacter->SetMeshAlpha(1.0f); Colour OulineColour(1.0f, 1.0f, 0.0f, 1.0f); m_pRenderer->PushMatrix(); m_pRenderer->MultiplyWorldMatrix(m_worldMatrix); m_pVoxelCharacter->RenderWeapons(false, false, false, OulineColour); m_pRenderer->PopMatrix(); }
void SceneryManager::RenderSceneryObject(SceneryObject* pSceneryObject, bool outline, bool reflection, bool silhouette, bool boundingBox, bool shadow) { m_pRenderer->PushMatrix(); // First translate to world file origin m_pRenderer->TranslateWorldMatrix(pSceneryObject->m_worldFileOffset.x, pSceneryObject->m_worldFileOffset.y, pSceneryObject->m_worldFileOffset.z); bool switchedFaceCulling = false; switch(pSceneryObject->m_parentImportDirection) { case QubicleImportDirection_Normal: { } break; case QubicleImportDirection_MirrorX: { m_pRenderer->ScaleWorldMatrix(-1.0f, 1.0f, 1.0f); switchedFaceCulling = !switchedFaceCulling; } break; case QubicleImportDirection_MirrorY: { m_pRenderer->ScaleWorldMatrix(1.0f, -1.0f, 1.0f); switchedFaceCulling = !switchedFaceCulling; } break; case QubicleImportDirection_MirrorZ: { m_pRenderer->ScaleWorldMatrix(1.0f, 1.0f, -1.0f); switchedFaceCulling = !switchedFaceCulling; } break; case QubicleImportDirection_RotateY90: { m_pRenderer->RotateWorldMatrix(0.0f, -90.0f, 0.0f); } break; case QubicleImportDirection_RotateY180: { m_pRenderer->RotateWorldMatrix(0.0f, -180.0f, 0.0f); } break; case QubicleImportDirection_RotateY270: { m_pRenderer->RotateWorldMatrix(0.0f, -270.0f, 0.0f); } break; case QubicleImportDirection_RotateX90: { m_pRenderer->RotateWorldMatrix(-90.0f, 0.0f, 0.0f); } break; case QubicleImportDirection_RotateX180: { m_pRenderer->RotateWorldMatrix(-180.0f, 0.0f, 0.0f); } break; case QubicleImportDirection_RotateX270: { m_pRenderer->RotateWorldMatrix(-270.0f, 0.0f, 0.0f); } break; case QubicleImportDirection_RotateZ90: { m_pRenderer->RotateWorldMatrix(0.0f, 0.0f, -90.0f); } break; case QubicleImportDirection_RotateZ180: { m_pRenderer->RotateWorldMatrix(0.0f, 0.0f, -180.0f); } break; case QubicleImportDirection_RotateZ270: { m_pRenderer->RotateWorldMatrix(0.0f, 0.0f, -270.0f); } break; } // Now local object offset m_pRenderer->TranslateWorldMatrix(pSceneryObject->m_positionOffset.x, pSceneryObject->m_positionOffset.y, pSceneryObject->m_positionOffset.z); // Translate for block size offset m_pRenderer->TranslateWorldMatrix(0.0f, -Chunk::BLOCK_RENDER_SIZE, 0.0f); float l_length = pSceneryObject->m_length*0.5f; float l_height = pSceneryObject->m_height*0.5f; float l_width = pSceneryObject->m_width*0.5f; // Rotate the scenery object m_pRenderer->RotateWorldMatrix(0.0f, pSceneryObject->m_rotation, 0.0f); // Scale the scenery object m_pRenderer->ScaleWorldMatrix(pSceneryObject->m_scale, pSceneryObject->m_scale, pSceneryObject->m_scale); // Translate to the center m_pRenderer->TranslateWorldMatrix(0.0f, l_height, 0.0f); switch(pSceneryObject->m_importDirection) { case QubicleImportDirection_Normal: { } break; case QubicleImportDirection_MirrorX: { m_pRenderer->ScaleWorldMatrix(-1.0f, 1.0f, 1.0f); switchedFaceCulling = !switchedFaceCulling; } break; case QubicleImportDirection_MirrorY: { m_pRenderer->ScaleWorldMatrix(1.0f, -1.0f, 1.0f); switchedFaceCulling = !switchedFaceCulling; } break; case QubicleImportDirection_MirrorZ: { m_pRenderer->ScaleWorldMatrix(1.0f, 1.0f, -1.0f); switchedFaceCulling = !switchedFaceCulling; } break; case QubicleImportDirection_RotateY90: { m_pRenderer->RotateWorldMatrix(0.0f, -90.0f, 0.0f); } break; case QubicleImportDirection_RotateY180: { m_pRenderer->RotateWorldMatrix(0.0f, -180.0f, 0.0f); } break; case QubicleImportDirection_RotateY270: { m_pRenderer->RotateWorldMatrix(0.0f, -270.0f, 0.0f); } break; case QubicleImportDirection_RotateX90: { m_pRenderer->RotateWorldMatrix(-90.0f, 0.0f, 0.0f); } break; case QubicleImportDirection_RotateX180: { m_pRenderer->RotateWorldMatrix(-180.0f, 0.0f, 0.0f); } break; case QubicleImportDirection_RotateX270: { m_pRenderer->RotateWorldMatrix(-270.0f, 0.0f, 0.0f); } break; case QubicleImportDirection_RotateZ90: { m_pRenderer->RotateWorldMatrix(0.0f, 0.0f, -90.0f); } break; case QubicleImportDirection_RotateZ180: { m_pRenderer->RotateWorldMatrix(0.0f, 0.0f, -180.0f); } break; case QubicleImportDirection_RotateZ270: { m_pRenderer->RotateWorldMatrix(0.0f, 0.0f, -270.0f); } break; } Colour OulineColour(1.0f, 1.0f, 0.0f, 1.0f); if(pSceneryObject->m_hoverRender && pSceneryObject->m_outlineRender == false) OulineColour = Colour(1.0f, 0.0f, 1.0f, 1.0f); if(shadow) { m_pRenderer->SetCullMode(switchedFaceCulling ? CM_BACK : CM_FRONT); } else { m_pRenderer->SetCullMode(switchedFaceCulling ? CM_FRONT : CM_BACK); } m_pRenderer->ImmediateColourAlpha(1.0f, 1.0f, 1.0f, 1.0f); pSceneryObject->m_pQubicleBinaryFile->Render(outline, reflection, silhouette, OulineColour); if(boundingBox) { m_pRenderer->SetRenderMode(RM_WIREFRAME); m_pRenderer->SetCullMode(CM_NOCULL); m_pRenderer->SetLineWidth(1.0f); m_pRenderer->EnableImmediateMode(IM_QUADS); m_pRenderer->ImmediateColourAlpha(1.0f, 1.0f, 0.0f, 1.0f); m_pRenderer->ImmediateNormal(0.0f, 0.0f, -1.0f); m_pRenderer->ImmediateVertex(l_length, -l_height, -l_width); m_pRenderer->ImmediateVertex(-l_length, -l_height, -l_width); m_pRenderer->ImmediateVertex(-l_length, l_height, -l_width); m_pRenderer->ImmediateVertex(l_length, l_height, -l_width); m_pRenderer->ImmediateNormal(0.0f, 0.0f, 1.0f); m_pRenderer->ImmediateVertex(-l_length, -l_height, l_width); m_pRenderer->ImmediateVertex(l_length, -l_height, l_width); m_pRenderer->ImmediateVertex(l_length, l_height, l_width); m_pRenderer->ImmediateVertex(-l_length, l_height, l_width); m_pRenderer->ImmediateNormal(1.0f, 0.0f, 0.0f); m_pRenderer->ImmediateVertex(l_length, -l_height, l_width); m_pRenderer->ImmediateVertex(l_length, -l_height, -l_width); m_pRenderer->ImmediateVertex(l_length, l_height, -l_width); m_pRenderer->ImmediateVertex(l_length, l_height, l_width); m_pRenderer->ImmediateNormal(-1.0f, 0.0f, 0.0f); m_pRenderer->ImmediateVertex(-l_length, -l_height, -l_width); m_pRenderer->ImmediateVertex(-l_length, -l_height, l_width); m_pRenderer->ImmediateVertex(-l_length, l_height, l_width); m_pRenderer->ImmediateVertex(-l_length, l_height, -l_width); m_pRenderer->ImmediateNormal(0.0f, -1.0f, 0.0f); m_pRenderer->ImmediateVertex(-l_length, -l_height, -l_width); m_pRenderer->ImmediateVertex(l_length, -l_height, -l_width); m_pRenderer->ImmediateVertex(l_length, -l_height, l_width); m_pRenderer->ImmediateVertex(-l_length, -l_height, l_width); m_pRenderer->ImmediateNormal(0.0f, 1.0f, 0.0f); m_pRenderer->ImmediateVertex(l_length, l_height, -l_width); m_pRenderer->ImmediateVertex(-l_length, l_height, -l_width); m_pRenderer->ImmediateVertex(-l_length, l_height, l_width); m_pRenderer->ImmediateVertex(l_length, l_height, l_width); m_pRenderer->DisableImmediateMode(); m_pRenderer->SetCullMode(CM_BACK); } m_pRenderer->PopMatrix(); }