Fix dynamic casts to avoid gcc-11 diagnostics

pyro-refactor
Jeff Law 2020-09-03 22:03:31 +00:00 committed by suve
parent 2685a1eb60
commit 8c6ac4cd16
4 changed files with 11 additions and 11 deletions

View File

@ -59,14 +59,14 @@ static void SetTransparency(CObject* obj, float value)
if (obj->Implements(ObjectInterfaceType::Carrier))
{
CObject* cargo = dynamic_cast<CCarrierObject*>(obj)->GetCargo();
CObject* cargo = dynamic_cast<CCarrierObject&>(*obj).GetCargo();
if (cargo != nullptr)
cargo->SetTransparency(value);
}
if (obj->Implements(ObjectInterfaceType::Powered))
{
CObject* power = dynamic_cast<CPoweredObject*>(obj)->GetPower();
CObject* power = dynamic_cast<CPoweredObject&>(*obj).GetPower();
if (power != nullptr)
power->SetTransparency(value);
}
@ -1233,7 +1233,7 @@ bool CCamera::EventFrameBack(const Event &event)
bool ground = true;
if (m_cameraObj->Implements(ObjectInterfaceType::Movable))
ground = dynamic_cast<CMovableObject*>(m_cameraObj)->GetPhysics()->GetLand();
ground = dynamic_cast<CMovableObject&>(*m_cameraObj).GetPhysics()->GetLand();
if ( ground ) // ground?
{
Math::Vector pos = lookatPt + (lookatPt - m_eyePt);
@ -1326,7 +1326,7 @@ bool CCamera::EventFrameOnBoard(const Event &event)
{
assert(m_cameraObj->Implements(ObjectInterfaceType::Controllable));
Math::Vector lookatPt, upVec;
dynamic_cast<CControllableObject*>(m_cameraObj)->AdjustCamera(m_eyePt, m_directionH, m_directionV, lookatPt, upVec, m_type);
dynamic_cast<CControllableObject&>(*m_cameraObj).AdjustCamera(m_eyePt, m_directionH, m_directionV, lookatPt, upVec, m_type);
Math::Vector eye = m_effectOffset * 0.3f + m_eyePt;
Math::Vector lookat = m_effectOffset * 0.3f + lookatPt;

View File

@ -51,5 +51,5 @@ public:
inline bool IsObjectCarryingCargo(CObject* obj)
{
return obj->Implements(ObjectInterfaceType::Carrier) &&
dynamic_cast<CCarrierObject*>(obj)->IsCarryingCargo();
dynamic_cast<CCarrierObject&>(*obj).IsCarryingCargo();
}

View File

@ -61,10 +61,10 @@ inline float GetObjectEnergy(CObject* object)
if (object->Implements(ObjectInterfaceType::Powered))
{
CObject* power = dynamic_cast<CPoweredObject*>(object)->GetPower();
CObject* power = dynamic_cast<CPoweredObject&>(*object).GetPower();
if (power != nullptr && power->Implements(ObjectInterfaceType::PowerContainer))
{
energy = dynamic_cast<CPowerContainerObject*>(power)->GetEnergy();
energy = dynamic_cast<CPowerContainerObject&>(*power).GetEnergy();
}
}
@ -77,10 +77,10 @@ inline float GetObjectEnergyLevel(CObject* object)
if (object->Implements(ObjectInterfaceType::Powered))
{
CObject* power = dynamic_cast<CPoweredObject*>(object)->GetPower();
CObject* power = dynamic_cast<CPoweredObject&>(*object).GetPower();
if (power != nullptr && power->Implements(ObjectInterfaceType::PowerContainer))
{
energy = dynamic_cast<CPowerContainerObject*>(power)->GetEnergyLevel();
energy = dynamic_cast<CPowerContainerObject&>(*power).GetEnergyLevel();
}
}
@ -90,5 +90,5 @@ inline float GetObjectEnergyLevel(CObject* object)
inline bool ObjectHasPowerCell(CObject* object)
{
return object->Implements(ObjectInterfaceType::Powered) &&
dynamic_cast<CPoweredObject*>(object)->GetPower() != nullptr;
dynamic_cast<CPoweredObject&>(*object).GetPower() != nullptr;
}

View File

@ -54,5 +54,5 @@ public:
inline bool IsObjectBeingTransported(CObject* obj)
{
return obj->Implements(ObjectInterfaceType::Transportable) &&
dynamic_cast<CTransportableObject*>(obj)->IsBeingTransported();
dynamic_cast<CTransportableObject&>(*obj).IsBeingTransported();
}