< Summary

Information
Class: Gravitas.PhysicsMixedPartition
Assembly: Gravitas
File(s): /home/runner/work/Gravitas/Gravitas/src/Gravitas/Partitions/Mixed/PhysicsMixedPartition.cs
Line coverage
100%
Covered lines: 238
Uncovered lines: 0
Coverable lines: 238
Total lines: 474
Line coverage: 100%
Branch coverage
100%
Covered branches: 158
Total branches: 158
Branch coverage: 100%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor()100%11100%
get_IsAllocated()100%11100%
get_IsEmpty()100%2222100%
get_EmptySinceFrame()100%11100%
get_RetainedIndex()100%11100%
get_AwakeDynamicObjectCount()100%44100%
get_MovableDynamicObjectCount()100%44100%
get_Owner()100%11100%
OnAddToVoxel(...)100%11100%
Distribute(...)100%3232100%
AddDynamic3DObject(...)100%66100%
AddStatic3DObject(...)100%44100%
AddKinematic3DObject(...)100%44100%
AddDynamic2DObject(...)100%66100%
AddStatic2DObject(...)100%44100%
AddKinematic2DObject(...)100%44100%
RemoveDynamic3DObject(...)100%44100%
RemoveStatic3DObject(...)100%44100%
RemoveKinematic3DObject(...)100%44100%
RemoveDynamic2DObject(...)100%44100%
RemoveStatic2DObject(...)100%44100%
RemoveKinematic2DObject(...)100%44100%
SetDynamic3DObjectAwake(...)100%88100%
SetDynamic2DObjectAwake(...)100%88100%
OnRemoveFromVoxel(...)100%11100%
SetOwner(...)100%22100%
IsOwnedBy(...)100%11100%
SetRetainedIndex(...)100%11100%
ClearRetainedIndex()100%11100%
Gravitas.IRetainedPhysicsPartition<Gravitas.GravitasMixedCollisionService>.get_RetainedIndex()100%11100%
Gravitas.IRetainedPhysicsPartition<Gravitas.GravitasMixedCollisionService>.get_IsEmpty()100%11100%
Gravitas.IRetainedPhysicsPartition<Gravitas.GravitasMixedCollisionService>.get_EmptySinceFrame()100%11100%
Gravitas.IRetainedPhysicsPartition<Gravitas.GravitasMixedCollisionService>.IsOwnedBy(...)100%11100%
Gravitas.IRetainedPhysicsPartition<Gravitas.GravitasMixedCollisionService>.SetRetainedIndex(...)100%11100%
Gravitas.IRetainedPhysicsPartition<Gravitas.GravitasMixedCollisionService>.ClearRetainedIndex()100%11100%
ResetRetainedMembership()100%11100%
ResetForPool()100%22100%
SetParentIndex(...)100%11100%
Copy3DColliderIds(...)100%11100%
Copy2DColliderIds(...)100%11100%
CopyStaticStyle3DColliderIds(...)100%11100%
CopyStaticStyle2DColliderIds(...)100%11100%
AppendIds(...)100%44100%
CopySortedIds(...)100%22100%
RemoveAndReleaseIfEmpty(...)100%22100%
ReleaseIfEmpty(...)100%44100%
ReleaseAllMembership()100%11100%
IsDynamic3DObjectAwake(...)100%44100%
IsDynamic2DObjectAwake(...)100%44100%
DeactivateIfNoDynamicMembers()100%22100%
MarkOccupied()100%11100%
MarkEmptyIfUnoccupied()100%22100%
MarkEmpty(...)100%11100%

File(s)

/home/runner/work/Gravitas/Gravitas/src/Gravitas/Partitions/Mixed/PhysicsMixedPartition.cs

#LineLine coverage
 1//=======================================================================
 2// PhysicsMixedPartition.cs
 3//=======================================================================
 4// MIT License, Copyright (c) 2026–present David Oravsky (mrdav30)
 5// See LICENSE file in the project root for full license information.
 6//=======================================================================
 7
 8using GridForge.Grids;
 9using GridForge.Spatial;
 10using SwiftCollections;
 11using System.Runtime.CompilerServices;
 12
 13namespace Gravitas;
 14
 15internal enum MixedPartitionMobilityKind
 16{
 17    Dynamic = 0,
 18    Kinematic = 1,
 19    Static = 2
 20}
 21
 22/// <summary>
 23/// GridForge voxel partition that stores cross-dimensional broad-phase memberships.
 24/// </summary>
 25internal sealed class PhysicsMixedPartition : IVoxelPartition, IRetainedPhysicsPartition<GravitasMixedCollisionService>
 26{
 27    private GravitasMixedCollisionService? _owner;
 2842528    private int _emptySinceFrame = -1;
 2842529    private int _retainedIndex = -1;
 30
 2842531    public PhysicsMixedPartition()
 32    {
 2842533        ActivationId = -1;
 2842534    }
 35
 36    public WorldVoxelIndex WorldIndex { get; set; }
 37
 38    public bool IsPartitioned { get; set; }
 39
 40    public SwiftSparseSet? ContainedDynamic3DObjects;
 41
 42    public SwiftSparseSet? ContainedAwakeDynamic3DObjects;
 43
 44    public SwiftSparseSet? ContainedKinematic3DObjects;
 45
 46    public SwiftSparseSet? ContainedStatic3DObjects;
 47
 48    public SwiftSparseSet? ContainedDynamic2DObjects;
 49
 50    public SwiftSparseSet? ContainedAwakeDynamic2DObjects;
 51
 52    public SwiftSparseSet? ContainedKinematic2DObjects;
 53
 54    public SwiftSparseSet? ContainedStatic2DObjects;
 55
 56    public int ActivationId { get; private set; }
 57
 1054458    public bool IsAllocated => ActivationId != -1;
 59
 60    internal bool IsEmpty =>
 2317682461        (ContainedDynamic3DObjects?.Count ?? 0) == 0
 2317682462        && (ContainedKinematic3DObjects?.Count ?? 0) == 0
 2317682463        && (ContainedStatic3DObjects?.Count ?? 0) == 0
 2317682464        && (ContainedDynamic2DObjects?.Count ?? 0) == 0
 2317682465        && (ContainedKinematic2DObjects?.Count ?? 0) == 0
 2317682466        && (ContainedStatic2DObjects?.Count ?? 0) == 0;
 67
 224768    internal int EmptySinceFrame => _emptySinceFrame;
 69
 7570570    internal int RetainedIndex => _retainedIndex;
 71
 72    internal int AwakeDynamicObjectCount =>
 408873        (ContainedAwakeDynamic3DObjects?.Count ?? 0) + (ContainedAwakeDynamic2DObjects?.Count ?? 0);
 74
 75    private int MovableDynamicObjectCount =>
 2316376        (ContainedDynamic3DObjects?.Count ?? 0) + (ContainedDynamic2DObjects?.Count ?? 0);
 77
 78    public GravitasMixedCollisionService Owner
 79    {
 80        get
 81        {
 27209382            SwiftThrowHelper.ThrowIfTrue(
 27209383                _owner == null,
 27209384                nameof(PhysicsMixedPartition),
 27209385                "PhysicsMixedPartition is missing its owner collision service.");
 27209186            return _owner!;
 87        }
 88    }
 89
 90    public void OnAddToVoxel(Voxel voxel)
 91    {
 3784892        SwiftThrowHelper.ThrowIfTrue(
 3784893            _owner == null,
 3784894            nameof(PhysicsMixedPartition),
 3784895            "PhysicsMixedPartition is missing its owner collision service.");
 3784896        WorldIndex = voxel.WorldIndex;
 3784897        IsPartitioned = true;
 3784898    }
 99
 100    internal void Distribute(
 101        SwiftList<int> dynamic3DIds,
 102        SwiftList<int> kinematic3DIds,
 103        SwiftList<int> static3DIds,
 104        SwiftList<int> dynamic2DIds,
 105        SwiftList<int> kinematic2DIds,
 106        SwiftList<int> static2DIds)
 107    {
 9967108        int total3DCount = (ContainedDynamic3DObjects?.Count ?? 0)
 9967109            + (ContainedKinematic3DObjects?.Count ?? 0)
 9967110            + (ContainedStatic3DObjects?.Count ?? 0);
 9967111        int total2DCount = (ContainedDynamic2DObjects?.Count ?? 0)
 9967112            + (ContainedKinematic2DObjects?.Count ?? 0)
 9967113            + (ContainedStatic2DObjects?.Count ?? 0);
 9967114        if (total3DCount == 0 || total2DCount == 0 || AwakeDynamicObjectCount == 0)
 6128115            return;
 116
 3839117        CopySortedIds(ContainedDynamic3DObjects, dynamic3DIds);
 3839118        CopySortedIds(ContainedKinematic3DObjects, kinematic3DIds);
 3839119        CopySortedIds(ContainedStatic3DObjects, static3DIds);
 3839120        CopySortedIds(ContainedDynamic2DObjects, dynamic2DIds);
 3839121        CopySortedIds(ContainedKinematic2DObjects, kinematic2DIds);
 3839122        CopySortedIds(ContainedStatic2DObjects, static2DIds);
 123
 3839124        GravitasMixedCollisionService owner = Owner;
 14794125        for (int i = 0; i < dynamic3DIds.Count; i++)
 126        {
 3558127            int id3D = dynamic3DIds[i];
 12432128            for (int j = 0; j < dynamic2DIds.Count; j++)
 2658129                owner.ProcessPartitionCandidate(id3D, dynamic2DIds[j]);
 130
 7422131            for (int j = 0; j < kinematic2DIds.Count; j++)
 153132                owner.ProcessPartitionCandidate(id3D, kinematic2DIds[j]);
 133
 8844134            for (int j = 0; j < static2DIds.Count; j++)
 864135                owner.ProcessPartitionCandidate(id3D, static2DIds[j]);
 136        }
 137
 13520138        for (int i = 0; i < dynamic2DIds.Count; i++)
 139        {
 2921140            int id2D = dynamic2DIds[i];
 6094141            for (int j = 0; j < kinematic3DIds.Count; j++)
 126142                owner.ProcessPartitionCandidate(kinematic3DIds[j], id2D);
 143
 7106144            for (int j = 0; j < static3DIds.Count; j++)
 632145                owner.ProcessPartitionCandidate(static3DIds[j], id2D);
 146        }
 3839147    }
 148
 149    public void AddDynamic3DObject(int id)
 150    {
 10255151        ContainedDynamic3DObjects ??= Owner.RentPartitionMembership();
 10255152        bool shouldActivate = MovableDynamicObjectCount == 0;
 10255153        if (!ContainedDynamic3DObjects.Add(id))
 2154            return;
 155
 10253156        MarkOccupied();
 10253157        SetDynamic3DObjectAwake(id, IsDynamic3DObjectAwake(id));
 10253158        if (shouldActivate)
 9154159            ActivationId = Owner.ActivatePartition(this);
 10253160    }
 161
 162    public void AddStatic3DObject(int id)
 163    {
 32614164        ContainedStatic3DObjects ??= Owner.RentPartitionMembership();
 32614165        if (ContainedStatic3DObjects.Add(id))
 32613166            MarkOccupied();
 32614167    }
 168
 169    public void AddKinematic3DObject(int id)
 170    {
 9670171        ContainedKinematic3DObjects ??= Owner.RentPartitionMembership();
 9670172        if (ContainedKinematic3DObjects.Add(id))
 9669173            MarkOccupied();
 9670174    }
 175
 176    public void AddDynamic2DObject(int id)
 177    {
 6670178        ContainedDynamic2DObjects ??= Owner.RentPartitionMembership();
 6670179        bool shouldActivate = MovableDynamicObjectCount == 0;
 6670180        if (!ContainedDynamic2DObjects.Add(id))
 2181            return;
 182
 6668183        MarkOccupied();
 6668184        SetDynamic2DObjectAwake(id, IsDynamic2DObjectAwake(id));
 6668185        if (shouldActivate)
 3978186            ActivationId = Owner.ActivatePartition(this);
 6668187    }
 188
 189    public void AddStatic2DObject(int id)
 190    {
 4875191        ContainedStatic2DObjects ??= Owner.RentPartitionMembership();
 4875192        if (ContainedStatic2DObjects.Add(id))
 4874193            MarkOccupied();
 4875194    }
 195
 196    public void AddKinematic2DObject(int id)
 197    {
 3842198        ContainedKinematic2DObjects ??= Owner.RentPartitionMembership();
 3842199        if (ContainedKinematic2DObjects.Add(id))
 3841200            MarkOccupied();
 3842201    }
 202
 203    public void RemoveDynamic3DObject(int id)
 204    {
 3874205        if (ContainedDynamic3DObjects?.Remove(id) != true)
 3206            return;
 207
 3871208        RemoveAndReleaseIfEmpty(ref ContainedAwakeDynamic3DObjects, id);
 3871209        ReleaseIfEmpty(ref ContainedDynamic3DObjects);
 3871210        DeactivateIfNoDynamicMembers();
 3871211        MarkEmptyIfUnoccupied();
 3871212    }
 213
 214    public void RemoveStatic3DObject(int id)
 215    {
 859216        if (ContainedStatic3DObjects?.Remove(id) == true)
 217        {
 856218            ReleaseIfEmpty(ref ContainedStatic3DObjects);
 856219            MarkEmptyIfUnoccupied();
 220        }
 859221    }
 222
 223    public void RemoveKinematic3DObject(int id)
 224    {
 6485225        if (ContainedKinematic3DObjects?.Remove(id) == true)
 226        {
 6482227            ReleaseIfEmpty(ref ContainedKinematic3DObjects);
 6482228            MarkEmptyIfUnoccupied();
 229        }
 6485230    }
 231
 232    public void RemoveDynamic2DObject(int id)
 233    {
 2370234        if (ContainedDynamic2DObjects?.Remove(id) != true)
 3235            return;
 236
 2367237        RemoveAndReleaseIfEmpty(ref ContainedAwakeDynamic2DObjects, id);
 2367238        ReleaseIfEmpty(ref ContainedDynamic2DObjects);
 2367239        DeactivateIfNoDynamicMembers();
 2367240        MarkEmptyIfUnoccupied();
 2367241    }
 242
 243    public void RemoveStatic2DObject(int id)
 244    {
 293245        if (ContainedStatic2DObjects?.Remove(id) == true)
 246        {
 290247            ReleaseIfEmpty(ref ContainedStatic2DObjects);
 290248            MarkEmptyIfUnoccupied();
 249        }
 293250    }
 251
 252    public void RemoveKinematic2DObject(int id)
 253    {
 2399254        if (ContainedKinematic2DObjects?.Remove(id) == true)
 255        {
 2396256            ReleaseIfEmpty(ref ContainedKinematic2DObjects);
 2396257            MarkEmptyIfUnoccupied();
 258        }
 2399259    }
 260
 261    public void SetDynamic3DObjectAwake(int id, bool awake)
 262    {
 18064263        if (ContainedDynamic3DObjects?.Contains(id) != true)
 5513264            return;
 265
 12551266        if (awake)
 267        {
 11018268            ContainedAwakeDynamic3DObjects ??= Owner.RentPartitionMembership();
 11018269            ContainedAwakeDynamic3DObjects.Add(id);
 11018270            return;
 271        }
 272
 1533273        RemoveAndReleaseIfEmpty(ref ContainedAwakeDynamic3DObjects, id);
 1533274    }
 275
 276    public void SetDynamic2DObjectAwake(int id, bool awake)
 277    {
 8211278        if (ContainedDynamic2DObjects?.Contains(id) != true)
 29279            return;
 280
 8182281        if (awake)
 282        {
 6107283            ContainedAwakeDynamic2DObjects ??= Owner.RentPartitionMembership();
 6107284            ContainedAwakeDynamic2DObjects.Add(id);
 6107285            return;
 286        }
 287
 2075288        RemoveAndReleaseIfEmpty(ref ContainedAwakeDynamic2DObjects, id);
 2075289    }
 290
 291    public void OnRemoveFromVoxel(Voxel voxel)
 292    {
 37848293        Owner.ReleasePartition(this);
 37848294    }
 295
 296    internal void SetOwner(GravitasMixedCollisionService owner)
 297    {
 37864298        SwiftThrowHelper.ThrowIfNull(owner, nameof(owner));
 37864299        SwiftThrowHelper.ThrowIfArgument(
 37864300            _owner != null && !ReferenceEquals(_owner, owner),
 37864301            nameof(owner),
 37864302            "PhysicsMixedPartition is already owned by a different collision service.");
 303
 37863304        _owner = owner;
 37863305    }
 306
 23100429307    internal bool IsOwnedBy(GravitasMixedCollisionService owner) => ReferenceEquals(_owner, owner);
 308
 309    [MethodImpl(MethodImplOptions.AggressiveInlining)]
 310    internal void SetRetainedIndex(int index)
 311    {
 63919312        SwiftThrowHelper.ThrowIfNegative(index, nameof(index));
 63919313        _retainedIndex = index;
 63919314    }
 315
 316    [MethodImpl(MethodImplOptions.AggressiveInlining)]
 37857317    internal void ClearRetainedIndex() => _retainedIndex = -1;
 318
 75705319    int IRetainedPhysicsPartition<GravitasMixedCollisionService>.RetainedIndex => RetainedIndex;
 320
 23100257321    bool IRetainedPhysicsPartition<GravitasMixedCollisionService>.IsEmpty => IsEmpty;
 322
 2242323    int IRetainedPhysicsPartition<GravitasMixedCollisionService>.EmptySinceFrame => EmptySinceFrame;
 324
 23100429325    bool IRetainedPhysicsPartition<GravitasMixedCollisionService>.IsOwnedBy(GravitasMixedCollisionService owner) => IsOw
 326
 63919327    void IRetainedPhysicsPartition<GravitasMixedCollisionService>.SetRetainedIndex(int index) => SetRetainedIndex(index)
 328
 37857329    void IRetainedPhysicsPartition<GravitasMixedCollisionService>.ClearRetainedIndex() => ClearRetainedIndex();
 330
 331    internal void ResetRetainedMembership()
 332    {
 1333        ReleaseAllMembership();
 1334        ActivationId = -1;
 1335        MarkEmpty(Owner.Context.FrameCount);
 1336    }
 337
 338    internal void ResetForPool()
 339    {
 37859340        if (ActivationId != -1)
 8391341            Owner.DeactivatePartition(ActivationId);
 342
 37859343        ReleaseAllMembership();
 37859344        _owner = null;
 37859345        ActivationId = -1;
 37859346        IsPartitioned = false;
 37859347        _emptySinceFrame = -1;
 37859348        _retainedIndex = -1;
 37859349    }
 350
 37848351    public void SetParentIndex(WorldVoxelIndex parentIndex) => WorldIndex = parentIndex;
 352
 353    internal void Copy3DColliderIds(SwiftList<int> destination)
 354    {
 25574355        destination.FastClear();
 25574356        AppendIds(ContainedDynamic3DObjects, destination);
 25574357        AppendIds(ContainedKinematic3DObjects, destination);
 25574358        AppendIds(ContainedStatic3DObjects, destination);
 25574359        destination.SortInPlace();
 25574360    }
 361
 362    internal void Copy2DColliderIds(SwiftList<int> destination)
 363    {
 15936364        destination.FastClear();
 15936365        AppendIds(ContainedDynamic2DObjects, destination);
 15936366        AppendIds(ContainedKinematic2DObjects, destination);
 15936367        AppendIds(ContainedStatic2DObjects, destination);
 15936368        destination.SortInPlace();
 15936369    }
 370
 371    internal void CopyStaticStyle3DColliderIds(SwiftList<int> destination)
 372    {
 7277373        destination.FastClear();
 7277374        AppendIds(ContainedKinematic3DObjects, destination);
 7277375        AppendIds(ContainedStatic3DObjects, destination);
 7277376        destination.SortInPlace();
 7277377    }
 378
 379    internal void CopyStaticStyle2DColliderIds(SwiftList<int> destination)
 380    {
 11387381        destination.FastClear();
 11387382        AppendIds(ContainedKinematic2DObjects, destination);
 11387383        AppendIds(ContainedStatic2DObjects, destination);
 11387384        destination.SortInPlace();
 11387385    }
 386
 387    private static void AppendIds(SwiftSparseSet? source, SwiftList<int> destination)
 388    {
 161858389        if (source == null)
 126682390            return;
 391
 150012392        for (int i = 0; i < source.Count; i++)
 39830393            destination.Add(source.DenseKeys[i]);
 35176394    }
 395
 396    private static void CopySortedIds(SwiftSparseSet? source, SwiftList<int> destination)
 397    {
 23034398        if (source == null)
 399        {
 15336400            destination.FastClear();
 15336401            return;
 402        }
 403
 7698404        source.CopySortedKeysTo(destination);
 7698405    }
 406
 407    [MethodImpl(MethodImplOptions.AggressiveInlining)]
 408    private void RemoveAndReleaseIfEmpty(ref SwiftSparseSet? membership, int id)
 409    {
 9846410        membership?.Remove(id);
 9846411        ReleaseIfEmpty(ref membership);
 9846412    }
 413
 414    [MethodImpl(MethodImplOptions.AggressiveInlining)]
 415    private void ReleaseIfEmpty(ref SwiftSparseSet? membership)
 416    {
 26108417        if (membership?.Count == 0)
 22375418            Owner.ReleasePartitionMembership(ref membership);
 26108419    }
 420
 421    private void ReleaseAllMembership()
 422    {
 37860423        GravitasMixedCollisionService owner = Owner;
 37860424        owner.ReleasePartitionMembership(ref ContainedDynamic3DObjects);
 37860425        owner.ReleasePartitionMembership(ref ContainedAwakeDynamic3DObjects);
 37860426        owner.ReleasePartitionMembership(ref ContainedKinematic3DObjects);
 37860427        owner.ReleasePartitionMembership(ref ContainedStatic3DObjects);
 37860428        owner.ReleasePartitionMembership(ref ContainedDynamic2DObjects);
 37860429        owner.ReleasePartitionMembership(ref ContainedAwakeDynamic2DObjects);
 37860430        owner.ReleasePartitionMembership(ref ContainedKinematic2DObjects);
 37860431        owner.ReleasePartitionMembership(ref ContainedStatic2DObjects);
 37860432    }
 433
 434    private bool IsDynamic3DObjectAwake(int id)
 435    {
 10253436        if (!Owner.Context.Physics.TryGetColliderById(id, out Gravitas.Colliders.LSCollider? collider))
 6437            return true;
 438
 10247439        SolidBody? body = collider!.Body;
 10247440        return body == null || body.IsAwakeForCollision;
 441    }
 442
 443    private bool IsDynamic2DObjectAwake(int id)
 444    {
 6668445        if (!Owner.Context.Physics2D.TryGetColliderById(id, out Gravitas.Colliders.LSCollider2D? collider))
 4446            return true;
 447
 6664448        SolidBody2D? body = collider!.Body;
 6664449        return body == null || body.IsAwakeForCollision;
 450    }
 451
 452    [MethodImpl(MethodImplOptions.AggressiveInlining)]
 453    private void DeactivateIfNoDynamicMembers()
 454    {
 6238455        if (MovableDynamicObjectCount > 0)
 1498456            return;
 457
 4740458        Owner.DeactivatePartition(ActivationId);
 4740459        ActivationId = -1;
 4740460    }
 461
 462    [MethodImpl(MethodImplOptions.AggressiveInlining)]
 67918463    private void MarkOccupied() => _emptySinceFrame = -1;
 464
 465    [MethodImpl(MethodImplOptions.AggressiveInlining)]
 466    private void MarkEmptyIfUnoccupied()
 467    {
 16262468        if (IsEmpty)
 14206469            MarkEmpty(Owner.Context.FrameCount);
 16262470    }
 471
 472    [MethodImpl(MethodImplOptions.AggressiveInlining)]
 14207473    private void MarkEmpty(int frame) => _emptySinceFrame = frame;
 474}

Methods/Properties

.ctor()
get_IsAllocated()
get_IsEmpty()
get_EmptySinceFrame()
get_RetainedIndex()
get_AwakeDynamicObjectCount()
get_MovableDynamicObjectCount()
get_Owner()
OnAddToVoxel(GridForge.Grids.Voxel)
Distribute(SwiftCollections.SwiftList`1<System.Int32>,SwiftCollections.SwiftList`1<System.Int32>,SwiftCollections.SwiftList`1<System.Int32>,SwiftCollections.SwiftList`1<System.Int32>,SwiftCollections.SwiftList`1<System.Int32>,SwiftCollections.SwiftList`1<System.Int32>)
AddDynamic3DObject(System.Int32)
AddStatic3DObject(System.Int32)
AddKinematic3DObject(System.Int32)
AddDynamic2DObject(System.Int32)
AddStatic2DObject(System.Int32)
AddKinematic2DObject(System.Int32)
RemoveDynamic3DObject(System.Int32)
RemoveStatic3DObject(System.Int32)
RemoveKinematic3DObject(System.Int32)
RemoveDynamic2DObject(System.Int32)
RemoveStatic2DObject(System.Int32)
RemoveKinematic2DObject(System.Int32)
SetDynamic3DObjectAwake(System.Int32,System.Boolean)
SetDynamic2DObjectAwake(System.Int32,System.Boolean)
OnRemoveFromVoxel(GridForge.Grids.Voxel)
SetOwner(Gravitas.GravitasMixedCollisionService)
IsOwnedBy(Gravitas.GravitasMixedCollisionService)
SetRetainedIndex(System.Int32)
ClearRetainedIndex()
Gravitas.IRetainedPhysicsPartition<Gravitas.GravitasMixedCollisionService>.get_RetainedIndex()
Gravitas.IRetainedPhysicsPartition<Gravitas.GravitasMixedCollisionService>.get_IsEmpty()
Gravitas.IRetainedPhysicsPartition<Gravitas.GravitasMixedCollisionService>.get_EmptySinceFrame()
Gravitas.IRetainedPhysicsPartition<Gravitas.GravitasMixedCollisionService>.IsOwnedBy(Gravitas.GravitasMixedCollisionService)
Gravitas.IRetainedPhysicsPartition<Gravitas.GravitasMixedCollisionService>.SetRetainedIndex(System.Int32)
Gravitas.IRetainedPhysicsPartition<Gravitas.GravitasMixedCollisionService>.ClearRetainedIndex()
ResetRetainedMembership()
ResetForPool()
SetParentIndex(GridForge.Spatial.WorldVoxelIndex)
Copy3DColliderIds(SwiftCollections.SwiftList`1<System.Int32>)
Copy2DColliderIds(SwiftCollections.SwiftList`1<System.Int32>)
CopyStaticStyle3DColliderIds(SwiftCollections.SwiftList`1<System.Int32>)
CopyStaticStyle2DColliderIds(SwiftCollections.SwiftList`1<System.Int32>)
AppendIds(SwiftCollections.SwiftSparseSet,SwiftCollections.SwiftList`1<System.Int32>)
CopySortedIds(SwiftCollections.SwiftSparseSet,SwiftCollections.SwiftList`1<System.Int32>)
RemoveAndReleaseIfEmpty(SwiftCollections.SwiftSparseSet&,System.Int32)
ReleaseIfEmpty(SwiftCollections.SwiftSparseSet&)
ReleaseAllMembership()
IsDynamic3DObjectAwake(System.Int32)
IsDynamic2DObjectAwake(System.Int32)
DeactivateIfNoDynamicMembers()
MarkOccupied()
MarkEmptyIfUnoccupied()
MarkEmpty(System.Int32)