A dedicated shape that produces a chain of shapes connected together to produce a continuous surface. Chain shapes provide a smooth, continuous surface that will not produce "ghost" collisions. A PhysicsChain is automatically destroyed when the body it is in is destroyed. A PhysicsChain cannot exist unattached from a body. This will produce shapes of type PhysicsShape.ShapeType.ChainSegment.
| Property | Description |
|---|---|
| aabb | Get the world AABB that bounds this chain. The bounds of the shape is inflated slightly due to speculative collision detection. The inflation is smaller on Static shape types however it is not zero due to time-of-impact collision detection. If an exact AABB is required then you can retrieve that via the shape geometry. |
| body | The body which the chain is attached to. |
| bounciness | The bounciness of the chain. Usually this is within the range [0, 1]. Values higher than 1 will result in energy being added which can lead to an unstable simulation. |
| bouncinessMixing | Defines the method used when mixing the bounciness values of two shapes to form a shape contact. This is assigned to the current PhysicsShape.surfaceMaterial. |
| callbackTarget | Get/Set the Object that callbacks for the shapes owned by this chain will be sent to. Care should be taken with any Object assigned as a callback target that isn't a Object as this assignment will not in itself keep the object alive and can be garbage collected. To avoid this, you should have at least a single reference to the object in your code. To remove the object assigned here, set the callback target to NULL. This includes the following events: A ContactFilterEvent with call IContactFilterCallback.A PreSolveEvent with call IPreSolveCallback.A TriggerBeginEvent with call ITriggerCallback.A TriggerEndEvent with call ITriggerCallback.A ContactBeginEvent with call IContactCallback.A ContactEndEvent with call IContactCallback. |
| friction | The friction of the owned chain shapes. Usually this is within the range [0, 1]. Values higher than 1 will result in energy being added which can lead to an unstable simulation. |
| frictionMixing | Defines the method used when mixing the friction values of two shapes to form a shape contact. This is assigned to the current PhysicsShape.surfaceMaterial. |
| isOwned | Get if the chain is owned. See PhysicsChain.SetOwner. |
| isValid | Check if the shape is valid. |
| ownerUserData | Get PhysicsUserData that can be used for any purpose, typically by the owner only. |
| physicsHandle | Get the physics handle. |
| segmentCount | Get the number of Chain segments that this chain has created and owns. See PhysicsShape.ShapeType.ChainSegment. |
| userData | Get/Set PhysicsUserData that can be used for any purpose. The physics system doesn't use this data, it is entirely for custom use. |
| world | Get the world the chain is attached to. |
| worldDrawing | Controls whether this chain is automatically drawn when the world is drawn. |
| Constructor | Description |
|---|---|
| PhysicsChain | Create a chain from a physics handle. NOTE: You must ensure that the physics handle represents the correct object type otherwise hard to detect bugs can occur. |
| Method | Description |
|---|---|
| CastRay | Check if a ray intersects the chain. See CastResult. |
| CastShape | Calculate if a cast shape intersects the chain. See CastShapeInput and CastResult. |
| ClosestPoint | Calculate the closest point on this chain to the specified point. |
| Destroy | Destroy the PhysicsChain and all the PhysicsShape.ShapeType.ChainSegment it owns. If the object is owned with PhysicsChain.SetOwner then you must provide the owner key it returned. Failing to do so will return a warning and the chain will not be destroyed. The lifetime of the specified owner object is not linked to this chain i.e. this chain will still be owned by the owner object, even if it is destroyed. This is the only way to destroy shapes of type PhysicsShape.ShapeType.ChainSegment if they were created by a PhysicsChain. |
| GetOwner | Get the owner object associated with this chain as specified using PhysicsChain.SetOwner. |
| GetSegmentIndex | Get the index of the specified Chain Segment PhysicsShape. |
| GetSegments | Get all the Chain segments that this chain has created and owns. |
| SetOwnerUserData | Set PhysicsUserData that can be used for any purpose, typically by the owner only. |
| UpdateVertices | Update the existing ChainSegment shapes with the provided vertices. Modifying the vertices will cause contacts to be recalculated however it may cause overlaps and/or collision tunnelling if not used carefully. The number of vertices provided and looping option should be the same as was used when the Chain was originally created. Any mismatch between the two will result in a warning. |
| Method | Description |
|---|---|
| Create | Create a Chain of multiple shapes attached to the specified body which itself is within a world. |
| SetOwner | Set the owner object using the specified owner key. You can only set the owner once, multiple attempts will produce a warning. This call does not bind the lifetime of the specified owner object, it is simply a reference. Whilst it is valid to not specify an owner object (NULL), it is recommended for debugging purposes. |