1
0
mirror of https://github.com/rwengine/openrw.git synced 2024-07-19 11:18:00 +02:00

Render Projectile and Pickup Objects via Atomics

This commit is contained in:
Daniel Evans 2019-05-12 00:49:07 +01:00
parent ff10f3769e
commit e55688e21c
3 changed files with 15 additions and 16 deletions

View File

@ -271,6 +271,11 @@ PickupObject::PickupObject(GameWorld* world, const glm::vec3& position,
setEnabled(true);
setCollected(false);
auto modelData = getModelInfo<SimpleModelInfo>();
auto atomic = modelData->getAtomic(0)->clone();
atomic->setFrame(std::make_shared<ModelFrame>());
setModel(std::move(atomic));
}
PickupObject::~PickupObject() {

View File

@ -158,6 +158,12 @@ ProjectileObject::ProjectileObject(GameWorld* world, const glm::vec3& position,
_ghostBody.get(), btBroadphaseProxy::SensorTrigger,
btBroadphaseProxy::AllFilter);
}
const auto& modelData = world->data->findModelInfo<SimpleModelInfo>(
getProjectileInfo().weapon->modelID);
auto atomic = modelData->getAtomic(0)->clone();
atomic->setFrame(std::make_shared<ModelFrame>());
setModel(std::move(atomic));
}
ProjectileObject::~ProjectileObject() {

View File

@ -313,14 +313,8 @@ void ObjectRenderer::renderPickup(PickupObject* pickup, RenderList& outList) {
glm::translate(glm::mat4(1.0f), pickup->getPosition());
modelMatrix = glm::rotate(modelMatrix, m_world->getGameTime() * kRotationSpeedCoeff,
glm::vec3(0.f, 0.f, 1.f));
auto odata = pickup->getModelInfo<SimpleModelInfo>();
RW_CHECK(odata, "Failed to read modelinfo for Pickup");
auto atomic = odata->getAtomic(0);
renderAtomic(atomic, modelMatrix, nullptr, outList);
const auto& atomic = pickup->getAtomic();
renderAtomic(atomic.get(), modelMatrix, nullptr, outList);
}
void ObjectRenderer::renderCutsceneObject(CutsceneObject* cutscene,
@ -346,14 +340,8 @@ void ObjectRenderer::renderCutsceneObject(CutsceneObject* cutscene,
void ObjectRenderer::renderProjectile(ProjectileObject* projectile,
RenderList& outList) {
glm::mat4 modelMatrix = projectile->getTimeAdjustedTransform(m_renderAlpha);
auto odata = m_world->data->findModelInfo<SimpleModelInfo>(
projectile->getProjectileInfo().weapon->modelID);
RW_CHECK(odata, "Failed to read modelinfo");
auto atomic = odata->getAtomic(0);
renderAtomic(atomic, modelMatrix, nullptr, outList);
const auto& atomic = projectile->getAtomic();
renderAtomic(atomic.get(), modelMatrix, nullptr, outList);
}
void ObjectRenderer::buildRenderList(GameObject* object, RenderList& outList) {