diff --git a/src/object/old_object.cpp b/src/object/old_object.cpp index 1f2f6e29..c7200c8e 100644 --- a/src/object/old_object.cpp +++ b/src/object/old_object.cpp @@ -1041,7 +1041,7 @@ void COldObject::Read(CLevelParserLine* line) SetAnimateOnReset(line->GetParam("reset")->AsBool(false)); if (Implements(ObjectInterfaceType::Controllable)) { - SetSelectable(line->GetParam("selectable")->AsBool(true)); + SetSelectable(line->GetParam("selectable")->AsBool(IsSelectableByDefault(m_type))); } if (Implements(ObjectInterfaceType::JetFlying)) { @@ -3174,3 +3174,17 @@ float COldObject::GetLightningHitProbability() } return 0.0f; } + +bool COldObject::IsSelectableByDefault(ObjectType type) +{ + if ( type == OBJECT_MOTHER || + type == OBJECT_ANT || + type == OBJECT_SPIDER || + type == OBJECT_BEE || + type == OBJECT_WORM || + type == OBJECT_MOBILEtg ) + { + return false; + } + return true; +} diff --git a/src/object/old_object.h b/src/object/old_object.h index 5b85c286..ff96fcfe 100644 --- a/src/object/old_object.h +++ b/src/object/old_object.h @@ -302,6 +302,12 @@ protected: void TransformCrashSphere(Math::Sphere &crashSphere) override; void TransformCameraCollisionSphere(Math::Sphere& collisionSphere) override; + /** + * \brief Check if given object type should be selectable by default + * \note This is a default value for the selectable= parameter and can still be overriden in the scene file or using the \a selectinsect cheat + */ + static bool IsSelectableByDefault(ObjectType type); + protected: Gfx::CEngine* m_engine; Gfx::CLightManager* m_lightMan;