Detects runtime collisions between named realvirtual groups using a shared physics layer and Physics.IgnoreCollision. More...
Public Member Functions | |
| GroupCollisionProxy | GetProxy (Collider col) |
| Returns the GroupCollisionProxy associated with a given collider, or null if not managed by this checker. | |
| void | SetupCollisionSystem () |
| Manually triggers the collision system setup. Called automatically in Start() when AutoSetupOnStart is true. | |
| void | CleanupCollisionSystem () |
| Cleans up all proxies, restores original layers, colliders, and Rigidbodies. | |
| void | ClearAllHighlights () |
| Clears all collision highlights without resetting collision tracking. | |
| void | ClearCollisionTracking () |
| Resets all active collision tracking and clears highlights. | |
| void | OnProxyCollisionEnter (GroupCollisionProxy a, GroupCollisionProxy b) |
| Called by GroupCollisionProxy.OnTriggerEnter. Registers a cross-group collision. | |
| void | OnProxyCollisionExit (GroupCollisionProxy a, GroupCollisionProxy b) |
| Called by GroupCollisionProxy.OnTriggerExit. Removes a cross-group collision pair. | |
| void | OnProxyDestroyed (GroupCollisionProxy proxy) |
| Called by GroupCollisionProxy.OnDestroy. Cleans up all active pairs for the destroyed proxy. | |
Public Member Functions inherited from realvirtual.realvirtualBehavior | |
| virtual void | OnOwnershipChanged (bool isOwner) |
| Called when network ownership changes. | |
| void | SetNetworkOwner (bool isOwner) |
| Sets IsNetworkOwner and triggers OnOwnershipChanged callback. | |
| void | PreStartSim () |
| Is called by the realvirtualController before the component is started. | |
| void | StartSim () |
| Is called by the realvirtualController to start or stop the component. | |
| void | StopSim () |
| Vector3 | DirectionToVector (DIRECTION direction) |
| Transfers the direction enumeration to a vector. | |
| DIRECTION | VectorToDirection (bool torotatoin, Vector3 vector) |
| Transfers a vector to the direction enumeration. | |
| float | GetLocalScale (Transform thetransform, DIRECTION direction) |
| List< BehaviorInterfaceConnection > | UpdateConnectionInfo () |
| List< Signal > | GetConnectedSignals () |
| void | SetVisibility (bool visibility) |
| Sets the visibility of this object including all subobjects. | |
| List< BehaviorInterfaceConnection > | GetConnections () |
| List< Signal > | GetSignals () |
| GameObject | GetChildByName (string name) |
| Gets a child by name. | |
| List< GameObject > | GetChildsByName (string name) |
| Gets all child by name. | |
| GameObject | GetChildByNameAlsoHidden (string name) |
| List< GameObject > | GetAllMeshesWithGroup (string group) |
| List< GameObject > | GetAllWithGroup (string group) |
| List< GameObject > | GetAllWithGroups (List< string > groups) |
| List< GameObject > | GetAllMeshesWithGroups (List< string > groups) |
| List< string > | GetMyGroups () |
| List< GameObject > | GetMeshesWithSameGroups () |
| List< GameObject > | GetAllWithSameGroups () |
| MeshRenderer | GetMeshRenderer () |
| Gets the mesh renderers in the childrens. | |
| void | SetCollider (bool enabled, bool includeTriggers=true) |
| sets the collider in all child objects | |
| void | ErrorMessage (string message) |
| Displays an error message. | |
| void | ChangeConnectionMode (bool isconnected) |
| void | Log (string message) |
| Logs a message. | |
| void | Log (string message, object obj) |
| Logs a message with a relation to an object. | |
| void | Warning (string message, object obj) |
| Logs a warning with a relation to an object. | |
| void | Error (string message, object obj) |
| Logs an error with a relation to an object. | |
| void | Error (string message) |
| Logs an error. | |
| GameObject | DebugPosition (string debugname, Vector3 position, Quaternion quaternation, float scale) |
| Displays a gizmo for debugging positions. | |
| void | SetFreezePosition (bool enabled) |
| Freezes all child components to the current poosition. | |
| void | SetRbConstraints (RigidbodyConstraints constraints) |
| virtual void | AwakeAlsoDeactivated () |
Public Attributes | |
| List< CollisionGroupEntry > | CollisionGroups |
| List of groups to monitor. Each group defines name and collider mode. | |
| bool | AutoSetupOnStart |
| If true, SetupCollisionSystem() is called automatically in Start(). | |
| bool | HighlightOnCollision |
| If true, colliding objects are highlighted via the assigned OverlayFeature. | |
| Color | HighlightColor |
| Color applied to highlighted colliding objects. | |
| float | BlinkSpeed |
| Blink speed in cycles per second when OverlayMode is Blink. | |
| HighlightResetMode | ResetMode |
| Determines when highlights are cleared after a collision exits. | |
| PLCInputBool | CollisionActive |
| Output to PLC: true when at least one collision pair is active. | |
| PLCInputInt | CollisionCount |
| Output to PLC: number of currently active collision pairs. | |
| PLCOutputBool | ResetHighlight |
| Input from PLC: rising edge clears all collision highlights. | |
| PLCOutputBool | ResetCollisions |
| Input from PLC: rising edge resets all collision tracking. | |
| UnityEvent< GameObject, GameObject > | OnCollisionEnterEvent |
| Fired when a cross-group collision begins. Parameters: objectA, objectB. | |
| UnityEvent< GameObject, GameObject > | OnCollisionExitEvent |
| Fired when a cross-group collision ends. Parameters: objectA, objectB. | |
| List< GroupPairExclusion > | ExcludedPairs |
| Cross-group pairs to exclude from collision detection. | |
| bool | IsColliding |
| True when at least one cross-group collision is currently active. | |
| int | ActiveCollisionCount |
| Number of currently active cross-group collision pairs. | |
| int | TotalProxyCount |
| Total number of GroupCollisionProxy objects managed by this checker. | |
| int | HighlightedRendererCount |
| Number of renderers currently highlighted. | |
| List< string > | ActivePairs |
| Human-readable list of active collision pairs for Inspector display. | |
Public Attributes inherited from realvirtual.realvirtualBehavior | |
| string | Name |
| The name of the component if it should be different from the GameObject name. | |
| ActiveOnly | Active |
| GameObject | FromTemplate |
| realvirtualController | realvirtualController |
| bool | HideNonG44Components |
| bool | SceneIsAdditive |
| bool | ForceStop |
| bool | IsNetworkOwner |
| True when this component owns its simulation (local authority). Set to false by MultiplayerWEB on remote clients. | |
Events | |
| Action< GameObject, GameObject > | OnGroupCollisionEnter |
| C# delegate fired on cross-group collision enter. | |
| Action< GameObject, GameObject > | OnGroupCollisionExit |
| C# delegate fired on cross-group collision exit. | |
Additional Inherited Members | |
Public Types inherited from realvirtual.realvirtualBehavior | |
| enum | ActiveOnly { Always , Connected , Disconnected , Never , DontChange } |
Static Public Member Functions inherited from realvirtual.realvirtualBehavior | |
| static bool | DirectionIsLinear (DIRECTION direction) |
| Gets back if the direction is linear or a rotation. | |
Protected Member Functions inherited from realvirtual.realvirtualBehavior | |
| bool | hidename () |
| bool | hideactiveonly () |
| virtual void | OnStopSim () |
| virtual void | OnPreStartSim () |
| virtual void | OnStartSim () |
| MU | GetTopOfMu (GameObject obj) |
| Gets the top of an MU component (the first MU script going up in the hierarchy) | |
| void | InitGame4Automation () |
| Initialiates the components and gets the reference to the realvirtualController in the scene. | |
| virtual void | AfterAwake () |
| void | Awake () |
Detailed Description
Detects runtime collisions between named realvirtual groups using a shared physics layer and Physics.IgnoreCollision.
GroupCollisionChecker monitors N configured groups and reports cross-group collisions via PLC signals, UnityEvents, and C# delegates. Objects within the same group never trigger collisions (self-collision off). Objects from different groups are detected automatically.
Key Features:
- N-group support with a single shared physics layer "rvCollissionCheck"
- Self-collision filtered via Physics.IgnoreCollision (per-collider, not global)
- Automatic collider setup: BoxApproximation, MeshCollider, or ExistingOnly per group
- Kinematic Rigidbody added automatically where required by Physics trigger rules
- Optional GPU-accelerated highlight of colliding objects via MultiObjectOverlayRendererFeature
- PLC signal integration: CollisionActive, CollisionCount, ResetHighlight, ResetCollisions
- Full cleanup on OnDestroy: layers, colliders, and Rigidbodies restored to original state
Common Applications:
- Robot arm vs. machine frame collision guard
- Gripper vs. fixture collision detection
- Safety zone monitoring with multiple actors
- Portal/linear axis vs. environment collision
For detailed documentation see: https://doc.realvirtual.io/components-and-scripts/collision/group-collision-checker
Member Function Documentation
◆ CleanupCollisionSystem()
| void realvirtual.GroupCollisionChecker.CleanupCollisionSystem | ( | ) |
Cleans up all proxies, restores original layers, colliders, and Rigidbodies.
Called automatically in OnDestroy and at the start of SetupCollisionSystem().
◆ ClearAllHighlights()
| void realvirtual.GroupCollisionChecker.ClearAllHighlights | ( | ) |
Clears all collision highlights without resetting collision tracking.
◆ ClearCollisionTracking()
| void realvirtual.GroupCollisionChecker.ClearCollisionTracking | ( | ) |
Resets all active collision tracking and clears highlights.
Does NOT remove proxies. Collisions will be re-detected naturally.
◆ GetProxy()
| GroupCollisionProxy realvirtual.GroupCollisionChecker.GetProxy | ( | Collider | col | ) |
Returns the GroupCollisionProxy associated with a given collider, or null if not managed by this checker.
◆ OnProxyCollisionEnter()
| void realvirtual.GroupCollisionChecker.OnProxyCollisionEnter | ( | GroupCollisionProxy | a, |
| GroupCollisionProxy | b | ||
| ) |
Called by GroupCollisionProxy.OnTriggerEnter. Registers a cross-group collision.
◆ OnProxyCollisionExit()
| void realvirtual.GroupCollisionChecker.OnProxyCollisionExit | ( | GroupCollisionProxy | a, |
| GroupCollisionProxy | b | ||
| ) |
Called by GroupCollisionProxy.OnTriggerExit. Removes a cross-group collision pair.
◆ OnProxyDestroyed()
| void realvirtual.GroupCollisionChecker.OnProxyDestroyed | ( | GroupCollisionProxy | proxy | ) |
Called by GroupCollisionProxy.OnDestroy. Cleans up all active pairs for the destroyed proxy.
◆ SetupCollisionSystem()
| void realvirtual.GroupCollisionChecker.SetupCollisionSystem | ( | ) |
Manually triggers the collision system setup. Called automatically in Start() when AutoSetupOnStart is true.
Member Data Documentation
◆ ActiveCollisionCount
| int realvirtual.GroupCollisionChecker.ActiveCollisionCount |
Number of currently active cross-group collision pairs.
◆ ActivePairs
| List<string> realvirtual.GroupCollisionChecker.ActivePairs |
Human-readable list of active collision pairs for Inspector display.
◆ AutoSetupOnStart
| bool realvirtual.GroupCollisionChecker.AutoSetupOnStart |
If true, SetupCollisionSystem() is called automatically in Start().
◆ BlinkSpeed
| float realvirtual.GroupCollisionChecker.BlinkSpeed |
Blink speed in cycles per second when OverlayMode is Blink.
◆ CollisionActive
| PLCInputBool realvirtual.GroupCollisionChecker.CollisionActive |
Output to PLC: true when at least one collision pair is active.
◆ CollisionCount
| PLCInputInt realvirtual.GroupCollisionChecker.CollisionCount |
Output to PLC: number of currently active collision pairs.
◆ CollisionGroups
| List<CollisionGroupEntry> realvirtual.GroupCollisionChecker.CollisionGroups |
List of groups to monitor. Each group defines name and collider mode.
◆ ExcludedPairs
| List<GroupPairExclusion> realvirtual.GroupCollisionChecker.ExcludedPairs |
Cross-group pairs to exclude from collision detection.
◆ HighlightColor
| Color realvirtual.GroupCollisionChecker.HighlightColor |
Color applied to highlighted colliding objects.
◆ HighlightedRendererCount
| int realvirtual.GroupCollisionChecker.HighlightedRendererCount |
Number of renderers currently highlighted.
◆ HighlightOnCollision
| bool realvirtual.GroupCollisionChecker.HighlightOnCollision |
If true, colliding objects are highlighted via the assigned OverlayFeature.
◆ IsColliding
| bool realvirtual.GroupCollisionChecker.IsColliding |
True when at least one cross-group collision is currently active.
◆ OnCollisionEnterEvent
| UnityEvent<GameObject, GameObject> realvirtual.GroupCollisionChecker.OnCollisionEnterEvent |
Fired when a cross-group collision begins. Parameters: objectA, objectB.
◆ OnCollisionExitEvent
| UnityEvent<GameObject, GameObject> realvirtual.GroupCollisionChecker.OnCollisionExitEvent |
Fired when a cross-group collision ends. Parameters: objectA, objectB.
◆ ResetCollisions
| PLCOutputBool realvirtual.GroupCollisionChecker.ResetCollisions |
Input from PLC: rising edge resets all collision tracking.
◆ ResetHighlight
| PLCOutputBool realvirtual.GroupCollisionChecker.ResetHighlight |
Input from PLC: rising edge clears all collision highlights.
◆ ResetMode
| HighlightResetMode realvirtual.GroupCollisionChecker.ResetMode |
Determines when highlights are cleared after a collision exits.
◆ TotalProxyCount
| int realvirtual.GroupCollisionChecker.TotalProxyCount |
Total number of GroupCollisionProxy objects managed by this checker.
Event Documentation
◆ OnGroupCollisionEnter
| Action< GameObject, GameObject> realvirtual.GroupCollisionChecker.OnGroupCollisionEnter |
C# delegate fired on cross-group collision enter.
◆ OnGroupCollisionExit
| Action< GameObject, GameObject> realvirtual.GroupCollisionChecker.OnGroupCollisionExit |
C# delegate fired on cross-group collision exit.
Public Member Functions inherited from