mirror of
https://github.com/rwengine/openrw.git
synced 2024-09-03 09:09:47 +02:00
Render Projectile and Pickup Objects via Atomics
This commit is contained in:
parent
ff10f3769e
commit
e55688e21c
@ -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() {
|
||||
|
@ -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() {
|
||||
|
@ -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) {
|
||||
|
Loading…
Reference in New Issue
Block a user