public override void OnTrigger(Shape triggerShape, Shape otherShape, TriggerFlag status) { if (triggerShape.UserData != null) { PhysxTrigger PhysxTrigger = triggerShape.UserData as PhysxTrigger; PhysxTrigger.fireEvent(status, otherShape.Actor.UserData as IPhysicObject); } }
public override void OnTrigger(Shape triggerShape, Shape otherShape, TriggerFlag status) { if (otherShape.Actor.UserData is Vehicle) { Vehicle vehicle = (Vehicle)otherShape.Actor.UserData; if (otherShape.Name != PhysXConsts.VehicleBody) return; if (triggerShape.Actor.UserData is Checkpoint) { if (vehicle.Driver is PlayerDriver) { Checkpoint checkpoint = (Checkpoint)triggerShape.Actor.UserData; Race.Current.OnCheckpointHit(checkpoint); } } else if (triggerShape.Actor.UserData is SpecialVolume) { if (status == TriggerFlag.OnEnter) { Race.Current.OnVehicleEnterSpecVol((SpecialVolume)triggerShape.Actor.UserData, vehicle); } else if (status == TriggerFlag.OnLeave) { Race.Current.OnVehicleExitSpecVol((SpecialVolume)triggerShape.Actor.UserData, vehicle); } } else if (triggerShape.Actor.UserData is Pedestrian) { Race.Current.OnPedestrianHit((Pedestrian)triggerShape.Actor.UserData, vehicle); } } else if (otherShape.Actor.UserData is NonCar) { NonCar noncar = otherShape.Actor.UserData as NonCar; // if the trigger is a noncar that was hit within 7 seconds if (triggerShape.Actor.UserData is Pedestrian && noncar.LastTouchTime + 7f > Engine.TotalSeconds) { Pedestrian ped = (Pedestrian)triggerShape.Actor.UserData; if (!ped.IsHit) { if (noncar.LastVehicleToHit != null) { Race.Current.OnPedestrianHit(ped, noncar.LastVehicleToHit); if (noncar.LastVehicleToHit.Driver is PlayerDriver) { if (GameVars.Emulation == EmulationMode.Demo) // billiard.pix doesn't exist in c1 demo MessageRenderer.Instance.PostHeaderMessage("Nice shot, sir!", 3); else MessageRenderer.Instance.PostMainMessage("billiard.pix", 3, 0.7f, 0.003f, 1.4f); } } } } } }
internal void fireEvent(TriggerFlag status, IPhysicObject obj) { if (FireOnBeginsTouching && ((status & TriggerFlag.OnEnter) == TriggerFlag.OnEnter)) { ContactEntity = obj.ObjectOwner; Event.Code = FireBeginsTouching; Event.FireEvent(this); } if (FireOnEndsTouching && ((status & TriggerFlag.OnLeave) == TriggerFlag.OnLeave)) { ContactEntity = obj.ObjectOwner; Event.Code = FireEndsTouching; Event.FireEvent(this); } if (FireOnContaining && ((status & TriggerFlag.OnStay) == TriggerFlag.OnStay)) { ContactEntity = obj.ObjectOwner; Event.Code = FireContaining; Event.FireEvent(this); } }
public override void OnTrigger(Shape triggerShape, Shape otherShape, TriggerFlag status) { // A trigger occured, just report the names the actors of the shapes that contacted Console.WriteLine(String.Format("'{0}' and '{1}' Triggered with Type '{2}'", triggerShape.Actor.Name, otherShape.Actor.Name, status)); }
public override void OnTrigger(Shape triggerShape, Shape otherShape, TriggerFlag status) { if (otherShape.Actor.UserData is Vehicle) { Vehicle vehicle = (Vehicle)otherShape.Actor.UserData; if (otherShape.Name != PhysXConsts.VehicleBody) { return; } if (triggerShape.Actor.UserData is Checkpoint) { if (vehicle.Driver is PlayerDriver) { Checkpoint checkpoint = (Checkpoint)triggerShape.Actor.UserData; Race.Current.OnCheckpointHit(checkpoint); } } else if (triggerShape.Actor.UserData is SpecialVolume) { if (status == TriggerFlag.OnEnter) { Race.Current.OnVehicleEnterSpecVol((SpecialVolume)triggerShape.Actor.UserData, vehicle); } else if (status == TriggerFlag.OnLeave) { Race.Current.OnVehicleExitSpecVol((SpecialVolume)triggerShape.Actor.UserData, vehicle); } } else if (triggerShape.Actor.UserData is Pedestrian) { Race.Current.OnPedestrianHit((Pedestrian)triggerShape.Actor.UserData, vehicle); } } else if (otherShape.Actor.UserData is NonCar) { NonCar noncar = otherShape.Actor.UserData as NonCar; // if the trigger is a noncar that was hit within 7 seconds if (triggerShape.Actor.UserData is Pedestrian && noncar.LastTouchTime + 7f > GameEngine.TotalSeconds) { Pedestrian ped = (Pedestrian)triggerShape.Actor.UserData; if (!ped.IsHit) { if (noncar.LastVehicleToHit != null) { Race.Current.OnPedestrianHit(ped, noncar.LastVehicleToHit); if (noncar.LastVehicleToHit.Driver is PlayerDriver) { if (GameVars.Emulation == EmulationMode.Demo) // billiard.pix doesn't exist in c1 demo { MessageRenderer.Instance.PostHeaderMessage("Nice shot, sir!", 3); } else { MessageRenderer.Instance.PostMainMessage("billiard.pix", 3, 0.7f, 0.003f, 1.4f); } } } } } } }