This is a short, simple overview of XPA’s components. It is meant to give you a general understanding of how the different objects work together. It will first cover the most important XPA objects, then describe a few others that aren’t as critical to understanding
how the system works. More specific instructions for creating and managing these objects can be found in the tutorials. Additionally, the API reference contains more details about every XPA class, struct, function, variable, etc.
- Simulators: Simulators are factories that create, maintain, and destroy most other objects. They encapsulate all collision detection and physics simulation.
- Solids: A Solid is analogous to a physical object in the real world. It can be static (just a shape, not physically simulated) or dynamic (has a shape, mass, and is physically simulated). It contains no moving parts. Complex objects with moving parts can
be built from multiple Solids with Joints.
- Joints: Joints connect two Solids, constraining their relative motion. There are several types of Joints, each constraining motion in different ways.
- Motors: A Motor applies forces/torques to Solids or Joints to achieve some desired effect. There are several types of Motors.
- Sensors: Sensors acquire data from a simulation. There are several types of Sensors. They can be attached to Solids or just positioned staticly within an environment.
- Shapes: Shapes are used for collision detection. They are added to Solids; if a Solid doesn’t contain any Shapes, it cannot collide with anything. There are several types of Shapes. Each Shape can use a different Material
- Materials: Materials define what happens when two Solids (or, more specifically, two Shapes) collide. Materials consist of several properties, including friction, bounciness, density, etc.
- Spaces: Spaces are useful for optimizing collision detection in application-specific ways. Shapes that are naturally grouped together can be put into a Space to save time during collision detection.
- Event Handlers: These get notified when certain event occur, allowing users to handle those events in application-specific ways.