Beispiel #1
0
 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);
     }
 }
Beispiel #2
0
        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);
            }
        }
Beispiel #4
0
		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));
		}
Beispiel #5
0
 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));
 }
Beispiel #6
0
        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);
                                }
                            }
                        }
                    }
                }
            }
        }
 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);                
     }
 }