// Copyright (c) 2012-2023 Wojciech Figat. All rights reserved. #pragma once #include "Collider.h" /// /// A sphere-shaped primitive collider. /// /// API_CLASS(Attributes="ActorContextMenu(\"New/Physics/Colliders/Sphere Collider\"), ActorToolbox(\"Physics\")") class FLAXENGINE_API SphereCollider : public Collider { DECLARE_SCENE_OBJECT(SphereCollider); private: float _radius; public: /// /// Gets the radius of the sphere, measured in the object's local space. /// /// The sphere radius will be scaled by the actor's world scale. API_PROPERTY(Attributes="EditorOrder(100), DefaultValue(50.0f), EditorDisplay(\"Collider\")") FORCE_INLINE float GetRadius() const { return _radius; } /// /// Sets the radius of the sphere, measured in the object's local space. /// /// The sphere radius will be scaled by the actor's world scale. API_PROPERTY() void SetRadius(float value); public: // [Collider] #if USE_EDITOR void OnDebugDrawSelected() override; #endif bool IntersectsItself(const Ray& ray, Real& distance, Vector3& normal) override; void Serialize(SerializeStream& stream, const void* otherObj) override; void Deserialize(DeserializeStream& stream, ISerializeModifier* modifier) override; protected: // [Collider] #if USE_EDITOR void DrawPhysicsDebug(RenderView& view) override; #endif void UpdateBounds() override; void GetGeometry(CollisionShape& collision) override; };