private void HandleRemove(EntityUid uid, CollisionWakeComponent component, ComponentRemove args) { if (!Terminating(uid) && TryComp(uid, out PhysicsComponent? physics)) { physics.CanCollide = true; } }
private void HandleCollisionWakeState(EntityUid uid, CollisionWakeComponent component, CollisionWakeStateMessage args) { if (ComponentManager.TryGetComponent <IPhysBody>(uid, out var body)) { body.CanCollide = !component.Enabled || body.Awake; } }
private void HandleJointAdd(EntityUid uid, CollisionWakeComponent component, JointAddedEvent args) { if (!ComponentManager.TryGetComponent(uid, out PhysicsComponent body)) { return; } body.CanCollide = true; }
private void HandleCollisionWakeState(EntityUid uid, CollisionWakeComponent component, CollisionWakeStateMessage args) { if (!ComponentManager.TryGetComponent <PhysicsComponent>(uid, out var body)) { return; } body.CanCollide = !component.Enabled || body.Awake || body.Joints.Any(); }
private void HandleSleep(EntityUid uid, CollisionWakeComponent component, PhysicsSleepMessage args) { if (!component.Enabled) { return; } args.Body.CanCollide = false; }
private void HandleWake(EntityUid uid, CollisionWakeComponent component, PhysicsWakeMessage args) { if (!component.Enabled) { return; } args.Body.CanCollide = true; }
private void HandleSleep(EntityUid uid, CollisionWakeComponent component, PhysicsSleepMessage args) { if (!CanRaiseEvent(uid)) { return; } component.RaiseStateChange(); }
private void HandleJointRemove(EntityUid uid, CollisionWakeComponent component, JointRemovedEvent args) { if (!CanRaiseEvent(uid)) { return; } component.RaiseStateChange(); }
private void HandleParentChange(EntityUid uid, CollisionWakeComponent component, ref EntParentChangedMessage args) { if (!CanRaiseEvent(uid)) { return; } component.RaiseStateChange(); }
private void HandleJointRemove(EntityUid uid, CollisionWakeComponent component, JointRemovedEvent args) { if (component.Owner.TryGetComponent(out PhysicsComponent? body) && body.Joints.Any()) { return; } // Force an update component.RaiseStateChange(); }
private void HandleCollisionWakeState(EntityUid uid, CollisionWakeComponent component, CollisionWakeStateMessage args) { // If you really wanted you could optimise for each use case above and save some calls but // these are called pretty infrequently so I'm fine with this for now. // If we just got put into a container don't want to mess with our collision state. if (!EntityManager.TryGetComponent <PhysicsComponent>(uid, out var body)) { return; } // If we're attached to the map we'll also just never disable collision due to how grid movement works. body.CanCollide = !component.Enabled || body.Awake || (EntityManager.TryGetComponent(uid, out JointComponent? jointComponent) && jointComponent.JointCount > 0) || EntityManager.GetComponent <TransformComponent>(uid).GridID == GridId.Invalid; }
private void HandleInitialize(EntityUid uid, CollisionWakeComponent component, EntityInitializedMessage args) { component.RaiseStateChange(); }
private void HandleWake(EntityUid uid, CollisionWakeComponent component, PhysicsWakeMessage args) { component.RaiseStateChange(); }
private void HandleJointAdd(EntityUid uid, CollisionWakeComponent component, JointAddedEvent args) { component.RaiseStateChange(); }
private void HandleParentChange(EntityUid uid, CollisionWakeComponent component, ref EntParentChangedMessage args) { component.RaiseStateChange(); }