using System;
using Robust.Shared.Maths;
using Robust.Shared.Serialization;
namespace Robust.Shared.Physics
{
///
/// A primitive physical shape that is used by a .
///
public interface IPhysShape
{
///
/// Raised when any of the parameters on this physics shape change.
///
event Action OnDataChanged;
///
/// Calculates the AABB of the shape.
///
///
///
Box2 CalculateLocalBounds(Angle rotation);
///
/// Bitmask of the collision layers the component is a part of.
///
int CollisionLayer { get; set; }
///
/// Bitmask of the layers this component collides with.
///
int CollisionMask { get; set; }
void ApplyState();
void DebugDraw(DebugDrawingHandle handle, in Matrix3 modelMatrix, in Box2 worldViewport, float sleepPercent);
}
///
/// Tag type for defining the representation of the collision layer bitmask
/// in terms of readable names in the content. To understand more about the
/// point of this type, see the .
///
public sealed class CollisionLayer {}
///
/// Tag type for defining the representation of the collision mask bitmask
/// in terms of readable names in the content. To understand more about the
/// point of this type, see the .
///
public sealed class CollisionMask {}
}