mirror of
https://github.com/rwengine/openrw.git
synced 2024-09-15 15:02:34 +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);
|
setEnabled(true);
|
||||||
setCollected(false);
|
setCollected(false);
|
||||||
|
|
||||||
|
auto modelData = getModelInfo<SimpleModelInfo>();
|
||||||
|
auto atomic = modelData->getAtomic(0)->clone();
|
||||||
|
atomic->setFrame(std::make_shared<ModelFrame>());
|
||||||
|
setModel(std::move(atomic));
|
||||||
}
|
}
|
||||||
|
|
||||||
PickupObject::~PickupObject() {
|
PickupObject::~PickupObject() {
|
||||||
|
@ -158,6 +158,12 @@ ProjectileObject::ProjectileObject(GameWorld* world, const glm::vec3& position,
|
|||||||
_ghostBody.get(), btBroadphaseProxy::SensorTrigger,
|
_ghostBody.get(), btBroadphaseProxy::SensorTrigger,
|
||||||
btBroadphaseProxy::AllFilter);
|
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() {
|
ProjectileObject::~ProjectileObject() {
|
||||||
|
@ -313,14 +313,8 @@ void ObjectRenderer::renderPickup(PickupObject* pickup, RenderList& outList) {
|
|||||||
glm::translate(glm::mat4(1.0f), pickup->getPosition());
|
glm::translate(glm::mat4(1.0f), pickup->getPosition());
|
||||||
modelMatrix = glm::rotate(modelMatrix, m_world->getGameTime() * kRotationSpeedCoeff,
|
modelMatrix = glm::rotate(modelMatrix, m_world->getGameTime() * kRotationSpeedCoeff,
|
||||||
glm::vec3(0.f, 0.f, 1.f));
|
glm::vec3(0.f, 0.f, 1.f));
|
||||||
|
const auto& atomic = pickup->getAtomic();
|
||||||
auto odata = pickup->getModelInfo<SimpleModelInfo>();
|
renderAtomic(atomic.get(), modelMatrix, nullptr, outList);
|
||||||
|
|
||||||
RW_CHECK(odata, "Failed to read modelinfo for Pickup");
|
|
||||||
|
|
||||||
auto atomic = odata->getAtomic(0);
|
|
||||||
|
|
||||||
renderAtomic(atomic, modelMatrix, nullptr, outList);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void ObjectRenderer::renderCutsceneObject(CutsceneObject* cutscene,
|
void ObjectRenderer::renderCutsceneObject(CutsceneObject* cutscene,
|
||||||
@ -346,14 +340,8 @@ void ObjectRenderer::renderCutsceneObject(CutsceneObject* cutscene,
|
|||||||
void ObjectRenderer::renderProjectile(ProjectileObject* projectile,
|
void ObjectRenderer::renderProjectile(ProjectileObject* projectile,
|
||||||
RenderList& outList) {
|
RenderList& outList) {
|
||||||
glm::mat4 modelMatrix = projectile->getTimeAdjustedTransform(m_renderAlpha);
|
glm::mat4 modelMatrix = projectile->getTimeAdjustedTransform(m_renderAlpha);
|
||||||
|
const auto& atomic = projectile->getAtomic();
|
||||||
auto odata = m_world->data->findModelInfo<SimpleModelInfo>(
|
renderAtomic(atomic.get(), modelMatrix, nullptr, outList);
|
||||||
projectile->getProjectileInfo().weapon->modelID);
|
|
||||||
|
|
||||||
RW_CHECK(odata, "Failed to read modelinfo");
|
|
||||||
|
|
||||||
auto atomic = odata->getAtomic(0);
|
|
||||||
renderAtomic(atomic, modelMatrix, nullptr, outList);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void ObjectRenderer::buildRenderList(GameObject* object, RenderList& outList) {
|
void ObjectRenderer::buildRenderList(GameObject* object, RenderList& outList) {
|
||||||
|
Loading…
Reference in New Issue
Block a user