RenderComponent* RenderManager::CreateRenderComponent(std::string objectName) { //Create a new render component and return it RenderComponent newComponent; if (objectName.compare("ball") == 0) { newComponent.SetDrawPrimitive(GL_LINES); newComponent.SetVertices(CreateSphere(glm::vec3(0, 0, 0), 1)); } else if (objectName.compare("ground") == 0) { newComponent.SetDrawPrimitive(GL_TRIANGLES); newComponent.SetVertices(CreateBox(glm::vec3(0, 0, 0), 100, 6, 100)); std::vector<glm::vec3> temp; temp.push_back(glm::vec3(0.f, 0.f, 1.f)); newComponent.SetColor(temp); } else if (objectName.compare("car") == 0) { float wheelWidth = 0.4, connectionHeight = 0.5, wheelRadius = 0.4; newComponent.SetDrawPrimitive(GL_TRIANGLES); CarInfo carInfo; carInfo.wheelPositions.push_back(glm::vec3(1 - (0.3*wheelWidth), connectionHeight, 2 - wheelRadius)); carInfo.wheelPositions.push_back(glm::vec3(-1 + (0.3*wheelWidth), connectionHeight, 2 - wheelRadius)); carInfo.wheelPositions.push_back(glm::vec3(-1 + (0.3*wheelWidth),connectionHeight, -2 + wheelRadius)); carInfo.wheelPositions.push_back(glm::vec3(1 - (0.3*wheelWidth), connectionHeight, -2 + wheelRadius)); carInfo.bodyParameters[0] = 2.f; carInfo.bodyParameters[1] = 1.f; carInfo.bodyParameters[2] = 4.f; carInfo.wheelRadius = wheelRadius; carInfo.wheelWidth = wheelWidth; carInfo.wheelConnectionHeight = connectionHeight; newComponent.SetVertices(CreateCar(carInfo)); std::vector<glm::vec3> color; color.push_back(glm::vec3(0.0f, 1.f, 0.f)); newComponent.SetColor(color); } else return NULL; newComponent.SetProgram(m_program); m_renderComponents.push_back(newComponent); return &m_renderComponents[m_renderComponents.size() - 1]; }
RenderComponent* RenderManager::CreateRay(glm::vec3 start, glm::vec3 end) { RenderComponent newComponent; std::vector<glm::vec3> temp; newComponent.SetDrawPrimitive(GL_LINES); temp.push_back(start); temp.push_back(end); newComponent.SetVertices(temp); temp.clear(); temp.push_back(glm::vec3(1.f, 0.f, 0.f)); newComponent.SetColor(temp); m_renderComponents.push_back(newComponent); return &m_renderComponents[m_renderComponents.size() - 1]; }