# Class Shape

java.lang.Object
com.codename1.gaming.physics.box2d.collision.shapes.Shape

Direct Known Subclasses:
  `ChainShape, CircleShape, EdgeShape, PolygonShape`

public abstract class Shape extends Object
A shape is used for collision detection. You can create a shape however you like. Shapes used for simulation in World are created automatically when a Fixture is created. Shapes may encapsulate a one or more child shapes.

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `float`
  `m_radius`
  `final ShapeType`
  `m_type`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `Shape(ShapeType type)`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `abstract Shape`
  `clone()`
  `abstract void`
  `computeAABB(AABB aabb, Transform xf, int childIndex)`
  Given a transform, compute the associated axis aligned bounding box for a child shape.
  `abstract void`
  `computeMass(MassData massData, float density)`
  Compute the mass properties of this shape using its dimensions and density.
  `abstract int`
  `getChildCount()`
  Get the number of child primitives
  `float`
  `getRadius()`
  The radius of the underlying shape.
  `ShapeType`
  `getType()`
  Get the type of this shape.
  `abstract boolean`
  `raycast(RayCastOutput output, RayCastInput input, Transform transform, int childIndex)`
  Cast a ray against a child shape.
  `void`
  `setRadius(float radius)`
  Sets the radius of the underlying shape.
  `abstract boolean`
  `testPoint(Transform xf, Vec2 p)`
  Test a point for containment in this shape.

  ### Methods inherited from class Object

  `equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Field Details

  - ### m_type

    public final ShapeType m_type

  - ### m_radius

    public float m_radius

- ## Constructor Details

  - ### Shape

    public Shape(ShapeType type)

- ## Method Details

  - ### getType

    public ShapeType getType()
    Get the type of this shape. You can use this to down cast to the concrete shape.
    Returns:
      the shape type.

  - ### getRadius

    public float getRadius()
    The radius of the underlying shape. This can refer to different things depending on the shape implementation
    Returns:

  - ### setRadius

    public void setRadius(float radius)
    Sets the radius of the underlying shape. This can refer to different things depending on the implementation
    Parameters:
      `radius` -

  - ### getChildCount

    public abstract int getChildCount()
    Get the number of child primitives
    Returns:

  - ### testPoint

    public abstract boolean testPoint(Transform xf, Vec2 p)
    Test a point for containment in this shape. This only works for convex shapes.
    Parameters:
      `xf` - the shape world transform.
      `p` - a point in world coordinates.

  - ### raycast

    public abstract boolean raycast(RayCastOutput output, RayCastInput input, Transform transform, int childIndex)
    Cast a ray against a child shape.
    Parameters:
      `argOutput` - the ray-cast results.
      `argInput` - the ray-cast input parameters.
      `argTransform` - the transform to be applied to the shape.
      `argChildIndex` - the child shape index
    Returns:
      if hit

  - ### computeAABB

    public abstract void computeAABB(AABB aabb, Transform xf, int childIndex)
    Given a transform, compute the associated axis aligned bounding box for a child shape.
    Parameters:
      `argAabb` - returns the axis aligned box.
      `argXf` - the world transform of the shape.

  - ### computeMass

    public abstract void computeMass(MassData massData, float density)
    Compute the mass properties of this shape using its dimensions and density. The inertia tensor is computed about the local origin.
    Parameters:
      `massData` - returns the mass data for this shape.
      `density` - the density in kilograms per meter squared.

  - ### clone

    public abstract Shape clone()
    Overrides:
      `clone` in class `Object`