A 2D shape type that can reference a group of other 2D shapes (including other compounds). Compound shape overlaps and physics colliders with compound shapes are supported. More...
Public Member Functions | |
void | AddShape (FrameBase f, ref Shape2D shape, bool updateCompoundMeta=true) |
Adds the shape to the compound buffer. More... | |
void | CopyFrom (FrameBase f, ref Shape2D shape) |
Creates a copy of another compound shape 's and any nested compound's buffers. The resultant shapes will not share data. More... | |
void | FreePersistent (FrameBase f, Boolean freeNestedPersistent=true) |
Dispose any persistently allocated memory for this compound shape. More... | |
override int | GetHashCode () |
Overrides the hash code generation of this type. More... | |
bool | GetShapes (FrameBase f, out Shape2D *shapesBuffer, out Int32 count) |
Gets a pointer to the buffer of shapes added to this compound. More... | |
bool | RemoveShapes (FrameBase f, Int32? userTag=null, Boolean resetCompoundMeta=true, Boolean removeFromNested=true) |
Removes all shapes in a compound that have a Shape2D.UserTag field matching the specified userTag . More... | |
void | ReserveCapacity (FrameBase f, Int32 capacity) |
Ensures that this compound shape capacity can hold at least capacity shapes. More... | |
void | ResetCompoundMeta (FrameBase f) |
Recomputes the compound shape broad radius, centroid and area sum (the later is used internally). More... | |
Static Public Member Functions | |
static void | Serialize (void *ptr, FrameSerializer serializer) |
Serializes a CompoundShape2D into a FrameSerializer. More... | |
Static Public Attributes | |
const int | SIZE = Transform2D.SIZE + 2 * FP.SIZE + Ptr.SIZE + 2 * sizeof(UInt16) + 2 * sizeof(int) |
The size of the struct in bytes. More... | |
Properties | |
Int32 | Capacity [get] |
The current number of shapes that can be held by the compound buffer. More... | |
Int32 | Count [get] |
The number of shapes in the compound buffer. More... | |
Boolean | IsPersistent [get] |
If the buffer of shapes is persistently allocated. More... | |
A 2D shape type that can reference a group of other 2D shapes (including other compounds). Compound shape overlaps and physics colliders with compound shapes are supported.
Creates a copy of another compound shape 's and any nested compound's buffers. The resultant shapes will not share data.
Any existing persistent compounds in this shape's hierarchy are disposed before copying.
f | The current frame being simulated. |
shape | The compound shape that will be copied from. |
|
inline |
Adds the shape to the compound buffer.
Trying to add a compound shape that holds a buffer already reference in this shape's hierarchy will throw an error in debug mode.
f | The frame currently being simulated. |
shape | The shape being added to the compound. |
updateCompoundMeta | If the compound meta data (e.g. broad radius and centroid) should be automatically updated. |
|
inline |
Removes all shapes in a compound that have a Shape2D.UserTag field matching the specified userTag .
f | The frame currently being simulated. |
userTag | A tag that specifies a shape or group of shapes. Any shape in a compound that has a matching Shape2D.UserTag field will be removed. If none is specified, all shapes are removed. |
resetCompoundMeta | If the compound meta data (e.g. broad radius, centroid) should be automatically reset if any shapes are removed. |
removeFromNested | If shapes should also be removed from any compound shape nested inside this. |
true
if at least one shape has been removed by this method.
|
inline |
Gets a pointer to the buffer of shapes added to this compound.
f | The frame currently being simulated. |
shapesBuffer | A pointer to the buffer of shapes added to this compound. null if the compound doesn't have shapes. |
count | The number of shapes in the shapesBuffer . |
true
if the buffer has at least one shape
|
inline |
Recomputes the compound shape broad radius, centroid and area sum (the later is used internally).
f | The frame currently being simulated. |
|
inline |
Dispose any persistently allocated memory for this compound shape.
f | The frame currently being simulated. |
freeNestedPersistent | If nested compound shapes should also have persistent buffers disposed. |
|
inline |
Ensures that this compound shape capacity can hold at least capacity shapes.
f | The current Frame instance |
capacity | The desired capacity. The resultant capacity can be greater than or equal this value. |
|
inlinestatic |
Serializes a CompoundShape2D into a FrameSerializer.
ptr | The pointer to the CompoundShape2D. |
serializer | The FrameSerializer instance into which the struct will be serialized. |
|
inline |
Overrides the hash code generation of this type.
|
static |
The size of the struct in bytes.
|
get |
If the buffer of shapes is persistently allocated.
Persistently allocated memory is not disposed automatically. Call FreePersistent when done using a persistent compound.
|
get |
The number of shapes in the compound buffer.
|
get |
The current number of shapes that can be held by the compound buffer.