Ejemplo n.º 1
0
 protected override void OnTriggerExitSuccess(InteractiveObjectPhysicsTriggerInfo interactiveObjectPhysicsTriggerInfo)
 {
     if (OnTriggerExitSuccessAction != null)
     {
         OnTriggerExitSuccessAction.Invoke(interactiveObjectPhysicsTriggerInfo.OtherInteractiveObject);
     }
 }
Ejemplo n.º 2
0
        public sealed override void OnTriggerEnter(InteractiveObjectPhysicsTriggerInfo PhysicsTriggerInfo)
        {
            PhysicsTriggerInfo.OtherInteractiveObject.RegisterInteractiveObjectDestroyedEventListener(this.OnInteractiveObjectDestroyed);
            var rangeIntersectionCalculator = new RangeIntersectionCalculator(associatedRangeObject, PhysicsTriggerInfo.OtherInteractiveObject);

            intersectionCalculators.Add(rangeIntersectionCalculator);
            intersectionCalculatorsIndexedByTrackedInteractiveObject[PhysicsTriggerInfo.OtherInteractiveObject] = rangeIntersectionCalculator;
            OnTriggerEnterSuccess(PhysicsTriggerInfo);
        }
Ejemplo n.º 3
0
        public sealed override void OnTriggerExit(InteractiveObjectPhysicsTriggerInfo PhysicsTriggerInfo)
        {
            var rangeIntersectionCalculator = intersectionCalculatorsIndexedByTrackedInteractiveObject[PhysicsTriggerInfo.OtherInteractiveObject];

            if (rangeIntersectionCalculator.IsInside)
            {
                justTriggerExitedCalculators.Add(rangeIntersectionCalculator);
                justTriggerExitedCalculatorsIndexedByTrackedInteractiveObject.Add(PhysicsTriggerInfo.OtherInteractiveObject, rangeIntersectionCalculator);
            }

            intersectionCalculators.Remove(rangeIntersectionCalculator);
            intersectionCalculatorsIndexedByTrackedInteractiveObject.Remove(PhysicsTriggerInfo.OtherInteractiveObject);
            OnTriggerExitSuccess(PhysicsTriggerInfo);
        }
Ejemplo n.º 4
0
        public ObjectsInsideDeflectionRangeSystem(CoreInteractiveObject associatedInteractiveObject,
                                                  ProjectileDeflectionTrackingInteractiveObjectActionInherentData projectileDeflectionTrackingInteractiveObjectActionInherentData,
                                                  Action <CoreInteractiveObject> OnInteractiveObjectJusInsideAndFiltered = null, Action <CoreInteractiveObject> OnInteractiveObjectJustOutsideAndFiltered = null)
        {
            this.associatedInteractiveObject = associatedInteractiveObject;
            this._projectileDeflectionTrackingInteractiveObjectActionInherentData = projectileDeflectionTrackingInteractiveObjectActionInherentData;
            this.SphereOverlapRangeObject = null;
            this.OnInteractiveObjectJusInsideAndFiltered   = OnInteractiveObjectJusInsideAndFiltered;
            this.OnInteractiveObjectJustOutsideAndFiltered = OnInteractiveObjectJustOutsideAndFiltered;

            this.SphereOverlapRangeObject = new SphereOverlapRangeObject(associatedInteractiveObject.InteractiveGameObject.InteractiveGameObjectParent, new SphereRangeObjectInitialization()
            {
                name        = "ProjectileDeflectionRange",
                RangeTypeID = RangeTypeID.NOT_DISPLAYED,
                IsTakingIntoAccountObstacles = false,
                SphereRangeTypeDefinition    = new SphereRangeTypeDefinition()
                {
                    Radius = this._projectileDeflectionTrackingInteractiveObjectActionInherentData.ProjectileDetectionRadius
                }
            }, associatedInteractiveObject, delegate(InteractiveObjectPhysicsTriggerInfo InteractiveObjectPhysicsTriggerInfo) { return(InteractiveObjectPhysicsTriggerInfo.GetOtherInteractiveObjectTag().IsDealingDamage); },
                                                                         "ProjectileDeflectionRange", OnInteractiveObjectJusInsideAndFiltered: OnInteractiveObjectJusInsideAndFiltered, OnInteractiveObjectJustOutsideAndFiltered: OnInteractiveObjectJustOutsideAndFiltered);
            SetDeflectionRangeCenterAsLogicColliderCenter();
            this.SphereOverlapRangeObject.ManuallyDetectInsideColliders();
        }
Ejemplo n.º 5
0
        public LevelChunkTrackerSystem(LevelChunkInteractiveObject AssociatedLevelChunkInteractiveObject, LevelChunkInteractiveObjectDefinition LevelChunkInteractiveObjectDefinition,
                                       Action <CoreInteractiveObject> OnLevelChunkTriggerEnterAction, Action <CoreInteractiveObject> OnLevelChunkTriggerExitAction)
        {
            this.LevelChunkTrackerRange = new BoxRangeObjectV2(AssociatedLevelChunkInteractiveObject.InteractiveGameObject.InteractiveGameObjectParent, new BoxRangeObjectInitialization()
            {
                BoxRangeTypeDefinition = new BoxRangeTypeDefinition()
                {
                    Center = LevelChunkInteractiveObjectDefinition.LocalCenter,
                    Size   = LevelChunkInteractiveObjectDefinition.LocalSize
                },
                RangeTypeID = RangeTypeID.NOT_DISPLAYED,
                IsTakingIntoAccountObstacles = false
            }, AssociatedLevelChunkInteractiveObject, nameof(LevelChunkTrackerSystem.LevelChunkTrackerRange));

            this.LevelChunkTrackerRange.RegisterPhysicsEventListener(
                new InteractiveObjectPhysicsEventListenerDelegated((InteractiveObjectPhysicsTriggerInfo) => InteractiveObjectPhysicsTriggerInfo.GetOtherInteractiveObjectTag().IsPlayer, OnLevelChunkTriggerEnterAction, OnLevelChunkTriggerExitAction)
                );
        }
Ejemplo n.º 6
0
 public override bool ColliderSelectionGuard(InteractiveObjectPhysicsTriggerInfo interactiveObjectPhysicsTriggerInfo)
 {
     return(this.SelectionGuard.Invoke(interactiveObjectPhysicsTriggerInfo.GetOtherInteractiveObjectTag()));
 }
Ejemplo n.º 7
0
 public override void OnTriggerExit(InteractiveObjectPhysicsTriggerInfo PhysicsTriggerInfo)
 {
     this.AssociatedObstacleListener.RemoveNearSquareObstacle((ObstacleInteractiveObject)PhysicsTriggerInfo.OtherInteractiveObject);
 }
Ejemplo n.º 8
0
 public override void OnTriggerEnter(InteractiveObjectPhysicsTriggerInfo PhysicsTriggerInfo)
 {
     OnPlayerTriggerInSelectionEnter.Invoke(PhysicsTriggerInfo.OtherInteractiveObject);
 }
Ejemplo n.º 9
0
 protected virtual void OnTriggerExitSuccess(InteractiveObjectPhysicsTriggerInfo interactiveObjectPhysicsTriggerInfo)
 {
 }
Ejemplo n.º 10
0
 private bool PhysicsEventGuard(InteractiveObjectPhysicsTriggerInfo InteractiveObjectPhysicsTriggerInfo)
 {
     return(InteractiveObjectPhysicsTriggerInfo.GetOtherInteractiveObjectTag().IsTakingDamage);
 }