Пример #1
0
        /// <summary>
        /// On RangeObject destroyed, every <see cref="RangeIntersectionCalculator"/> in <see cref="AllRangeIntersectionCalculatorV2"/> that references the
        /// <paramref name="RangeObjectV2"/> must be destroyed.
        /// </summary>
        private void OnRangeObjectDestroyed(RangeObjectV2 RangeObjectV2)
        {
            List <RangeIntersectionCalculator> RangeIntersectionCalculatorsToDestroy = null;

            for (var i = 0; i < this.AllRangeIntersectionCalculatorV2.Count; i++)
            {
                var currentIntersectionCalculator = this.AllRangeIntersectionCalculatorV2[i];
                if (currentIntersectionCalculator.GetAssociatedRangeObject() == RangeObjectV2)
                {
                    if (RangeIntersectionCalculatorsToDestroy == null)
                    {
                        RangeIntersectionCalculatorsToDestroy = new List <RangeIntersectionCalculator>();
                    }

                    RangeIntersectionCalculatorsToDestroy.Add(currentIntersectionCalculator);
                }
            }

            if (RangeIntersectionCalculatorsToDestroy != null)
            {
                foreach (var rangeIntersectionCalculatorToDestroy in RangeIntersectionCalculatorsToDestroy)
                {
                    rangeIntersectionCalculatorToDestroy.OnDestroy();
                    this.AllRangeIntersectionCalculatorV2.Remove(rangeIntersectionCalculatorToDestroy);
                }
            }
        }
Пример #2
0
 public void OnRangeObjectDestroyed(RangeObjectV2 RangeObjectV2)
 {
     if (this.OnRangeObjectDestroyedEvent != null)
     {
         this.OnRangeObjectDestroyedEvent.Invoke(RangeObjectV2);
     }
 }
Пример #3
0
        private void OnRangeObjectCreated(RangeObjectV2 RangeObjectV2)
        {
            var rangeTypeID = RangeObjectV2.RangeObjectInitialization.RangeTypeID;

            if (rangeTypeID != RangeTypeID.NOT_DISPLAYED)
            {
                if (!rangeRenderDatas.ContainsKey(rangeTypeID))
                {
                    rangeRenderDatas[rangeTypeID] = new Dictionary <int, AbstractRangeRenderData>();
                }

                if (RangeObjectV2.GetType() == typeof(SphereRangeObjectV2))
                {
                    var SphereRangeObjectRenderingDataProvider = new SphereRangeObjectRenderingDataProvider((SphereRangeObjectV2)RangeObjectV2, rangeTypeID);
                    var addedRange = new SphereGroundEffectManager(RangeTypeConfiguration.ConfigurationInherentData[rangeTypeID], SphereRangeObjectRenderingDataProvider);
                    addedRange.OnRangeCreated(SphereRangeObjectRenderingDataProvider);
                    rangeRenderDatas[rangeTypeID].Add(SphereRangeObjectRenderingDataProvider.BoundingCollider.GetInstanceID(), new CircleRangeRenderData(addedRange));
                }
                else if (RangeObjectV2.GetType() == typeof(BoxRangeObjectV2))
                {
                    var BoxRangeObjectRenderingDataProvider = new BoxRangeObjectRenderingDataProvider((BoxRangeObjectV2)RangeObjectV2, rangeTypeID);
                    var addedRange = new BoxGroundEffectManager(RangeTypeConfiguration.ConfigurationInherentData[rangeTypeID], BoxRangeObjectRenderingDataProvider);
                    addedRange.OnRangeCreated(BoxRangeObjectRenderingDataProvider);
                    rangeRenderDatas[rangeTypeID].Add(BoxRangeObjectRenderingDataProvider.BoundingCollider.GetInstanceID(), new BoxRangeRenderData(addedRange));
                }
                else if (RangeObjectV2.GetType() == typeof(RoundedFrustumRangeObjectV2))
                {
                    var RoundedFrustumRangeObjectRenderingDataProvider = new FrustumRangeObjectRenderingDataProvider((RoundedFrustumRangeObjectV2)RangeObjectV2, rangeTypeID);
                    var addedRange = new RoundedFrustumGroundEffectManager(RangeTypeConfiguration.ConfigurationInherentData[rangeTypeID], RoundedFrustumRangeObjectRenderingDataProvider);
                    addedRange.OnRangeCreated(RoundedFrustumRangeObjectRenderingDataProvider);
                    rangeRenderDatas[rangeTypeID].Add(RoundedFrustumRangeObjectRenderingDataProvider.BoundingCollider.GetInstanceID(), new RoundedFrustumRenderData(addedRange));
                }
            }
        }
Пример #4
0
 public void OnRangeObjectCreated(RangeObjectV2 RangeObjectV2)
 {
     if (this.OnRangeObjectAllCreatedEvent != null)
     {
         this.OnRangeObjectAllCreatedEvent.Invoke(RangeObjectV2);
     }
 }
Пример #5
0
 protected ARangeObjectRenderingDataProvider(RangeObjectV2 rangeObjectV2Ref, RangeTypeID RangeTypeID)
 {
     RangeObjectV2Ref      = rangeObjectV2Ref;
     this.RangeTypeID      = RangeTypeID;
     this.BoundingCollider = rangeObjectV2Ref.RangeGameObjectV2.BoundingCollider;
     this.ObstacleListener = rangeObjectV2Ref.GetObstacleListener();
 }
Пример #6
0
 public FrustumRangeObjectPositioningSystem(FrustumV2 Frustum, RangeObjectV2 RoundedFrustumRangeObjectV2) : base(RoundedFrustumRangeObjectV2)
 {
     Frustum.CalculateFrustumWorldPositionyFace(out FrustumPointsPositions LocalFrustumPointPositions, new TransformStruct {
         WorldPosition = Vector3.zero, WorldRotationEuler = Vector3.zero, LossyScale = Vector3.one
     });
     this.RangeFrustumWorldPositioning = new RangeFrustumWorldPositioning
     {
         LocalFrustumPositions = LocalFrustumPointPositions
     };
 }
Пример #7
0
 public InteractiveIntersectionListenerDelegated(RangeObjectV2 associatedRangeObject, Func <InteractiveObjectTag, bool> InteractiveObjectSelectionGuardAction,
                                                 Action <CoreInteractiveObject> OnInterestedNothingAction   = null, Action <CoreInteractiveObject> OnJustIntersectedAction    = null, Action <CoreInteractiveObject> OnJustNotIntersectedAction = null,
                                                 Action <CoreInteractiveObject> OnTriggerEnterSuccessAction = null, Action <CoreInteractiveObject> OnTriggerExitSuccessAction = null) : base(associatedRangeObject)
 {
     this.OnInterestedNothingAction             = OnInterestedNothingAction;
     this.OnJustIntersectedAction               = OnJustIntersectedAction;
     this.OnJustNotIntersectedAction            = OnJustNotIntersectedAction;
     this.OnTriggerEnterSuccessAction           = OnTriggerEnterSuccessAction;
     this.OnTriggerExitSuccessAction            = OnTriggerExitSuccessAction;
     this.InteractiveObjectSelectionGuardAction = InteractiveObjectSelectionGuardAction;
 }
Пример #8
0
 public RangeIntersectionV2Listener_Delegated(RangeObjectV2 associatedRangeObject, InteractiveObjectTagStruct InteractiveObjectSelectionGuard,
                                              Action <CoreInteractiveObject> OnInterestedNothingAction   = null, Action <CoreInteractiveObject> OnJustIntersectedAction    = null, Action <CoreInteractiveObject> OnJustNotIntersectedAction = null,
                                              Action <CoreInteractiveObject> OnTriggerEnterSuccessAction = null, Action <CoreInteractiveObject> OnTriggerExitSuccessAction = null) : base(associatedRangeObject)
 {
     this.OnInterestedNothingAction       = OnInterestedNothingAction;
     this.OnJustIntersectedAction         = OnJustIntersectedAction;
     this.OnJustNotIntersectedAction      = OnJustNotIntersectedAction;
     this.OnTriggerEnterSuccessAction     = OnTriggerEnterSuccessAction;
     this.OnTriggerExitSuccessAction      = OnTriggerExitSuccessAction;
     this.InteractiveObjectSelectionGuard = InteractiveObjectSelectionGuard;
 }
Пример #9
0
 private void OnRangeObjectDestroyed(RangeObjectV2 RangeObjectV2)
 {
     if (RangeObjectV2.RangeObjectInitialization.RangeTypeID != RangeTypeID.NOT_DISPLAYED)
     {
         rangeRenderDatas[RangeObjectV2.RangeObjectInitialization.RangeTypeID][RangeObjectV2.RangeGameObjectV2.BoundingCollider.GetInstanceID()].OnRangeDestroyed();
         rangeRenderDatas[RangeObjectV2.RangeObjectInitialization.RangeTypeID].Remove(RangeObjectV2.RangeGameObjectV2.BoundingCollider.GetInstanceID());
         if (rangeRenderDatas[RangeObjectV2.RangeObjectInitialization.RangeTypeID].Count == 0)
         {
             rangeRenderDatas.Remove(RangeObjectV2.RangeObjectInitialization.RangeTypeID);
         }
     }
 }
Пример #10
0
 public RangeIntersectionCalculator(RangeObjectV2 RangeObject, CoreInteractiveObject TrackedInteractiveObject)
 {
     this.AssociatedRangeObject                 = RangeObject;
     this.TrackedInteractiveObject              = TrackedInteractiveObject;
     this.sightModuleMovementChangeTracker      = new BlittableTransformChangeListenerManager(true, true);
     this.inRangeCollidersMovementChangeTracker = new BlittableTransformChangeListenerManager(true, true);
     this.RangeIntersectionCalculatorV2UniqueID = _rangeIntersectionCalculatorManager.OnRangeIntersectionCalculatorV2ManagerCreation(this);
     RangeIntersectionCalculationManagerV2.ManualCalculation(new List <RangeIntersectionCalculator>()
     {
         this
     }, forceCalculation: true);
 }
Пример #11
0
        private void CommontInit(RangeObjectInitialization RangeObjectInitialization, RangeObjectV2 RangeObjectV2, CoreInteractiveObject AssociatedInteractiveObject, string objectName)
        {
            this.assocaitedRangeObject = RangeObjectV2;
            this.RangeGameObject       = new GameObject(objectName);
            if (this.attachedGameObject != null)
            {
                this.RangeGameObject.transform.parent = this.attachedGameObject.transform;
            }

            this.RangeGameObject.transform.localRotation = Quaternion.identity;
            this.RangeGameObject.transform.localPosition = Vector3.zero;

            var rigidbody = this.RangeGameObject.AddComponent <Rigidbody>();

            rigidbody.useGravity  = false;
            rigidbody.isKinematic = true;

            this.InteractiveInteractiveObjectPhysicsListener = this.RangeGameObject.AddComponent <InteractiveInteractiveObjectPhysicsListener>();
            this.InteractiveInteractiveObjectPhysicsListener.Init(AssociatedInteractiveObject);
        }
Пример #12
0
        public static RangeObjectV2 FromRangeObjectInitialization(RangeObjectInitialization RangeObjectInitialization, GameObject parent)
        {
            RangeObjectV2 rangeObjectV2 = null;

            if (RangeObjectInitialization.GetType() == typeof(SphereRangeObjectInitialization))
            {
                rangeObjectV2 = new SphereRangeObjectV2(parent, (SphereRangeObjectInitialization)RangeObjectInitialization, null);
            }
            else if (RangeObjectInitialization.GetType() == typeof(BoxRangeObjectInitialization))
            {
                rangeObjectV2 = new BoxRangeObjectV2(parent, (BoxRangeObjectInitialization)RangeObjectInitialization, null);
            }
            else if (RangeObjectInitialization.GetType() == typeof(FrustumRangeObjectInitialization))
            {
                rangeObjectV2 = new FrustumRangeObjectV2(parent, (FrustumRangeObjectInitialization)RangeObjectInitialization, null);
            }
            else if (RangeObjectInitialization.GetType() == typeof(RoundedFrustumRangeObjectInitialization))
            {
                rangeObjectV2 = new RoundedFrustumRangeObjectV2(parent, (RoundedFrustumRangeObjectInitialization)RangeObjectInitialization, null);
            }

            return(rangeObjectV2);
        }
Пример #13
0
 protected AInteractiveIntersectionListener(RangeObjectV2 associatedRangeObject)
 {
     this.associatedRangeObject = associatedRangeObject;
 }
Пример #14
0
 public RangeGameObjectV2(GameObject attachedGameObject, RoundedFrustumRangeObjectInitialization FrustumRangeObjectInitialization, RangeObjectV2 RangeObjectV2, CoreInteractiveObject AssociatedInteractiveObject, string objectName)
 {
     this.attachedGameObject = attachedGameObject;
     this.CommontInit(FrustumRangeObjectInitialization, RangeObjectV2, AssociatedInteractiveObject, objectName);
     this.BoundingCollider = RangeObjectBoundingColliderBuilder.BuildBoundingCollider(FrustumRangeObjectInitialization, this);
 }
Пример #15
0
 private void OnRangeObjectDestroyed(RangeObjectV2 rangeObjectV2)
 {
     RangeObjects.Remove(rangeObjectV2);
 }
Пример #16
0
 private void OnRangeObjectCreated(RangeObjectV2 rangeObjectV2)
 {
     RangeObjects.Add(rangeObjectV2);
     rangeObjectV2.RegisterOnRangeObjectDestroyedEventListener(this.OnRangeObjectDestroyed);
 }
Пример #17
0
 public RangeObstacleListenerSystem(RangeObjectV2 rangeObjectV2Ref, RangeObjectV2PhysicsEventListenerComponent rangeObjectV2PhysicsEventListenerComponent) : base(rangeObjectV2Ref)
 {
     this.ObstacleListener = new ObstacleListenerSystem(new Func <TransformStruct>(() => rangeObjectV2Ref.GetTransform()));
     this.RangeObstaclePhysicsEventListener = new RangeObstaclePhysicsEventListener(this.ObstacleListener);
     rangeObjectV2PhysicsEventListenerComponent.AddPhysicsEventListener(this.RangeObstaclePhysicsEventListener);
 }
Пример #18
0
 public RangeExternalPhysicsOnlyListenersSystem(RangeObjectV2 rangeObjectV2Ref, RangeObjectV2PhysicsEventListenerComponent rangeObjectV2PhysicsEventListenerComponent) : base(rangeObjectV2Ref)
 {
     this._rangeObjectV2PhysicsEventListenerComponent = rangeObjectV2PhysicsEventListenerComponent;
 }
Пример #19
0
 protected ARangeObjectSystem(RangeObjectV2 rangeObjectV2Ref)
 {
     RangeObjectV2Ref = rangeObjectV2Ref;
 }
Пример #20
0
 protected ARangeIntersectionV2Listener(RangeObjectV2 associatedRangeObject)
 {
     this.associatedRangeObject = associatedRangeObject;
 }
Пример #21
0
 private void OnRangeObjectCreated(RangeObjectV2 rangeObjectV2)
 {
     RangeObjects.Add(rangeObjectV2);
 }
Пример #22
0
 public RangeIntersectionV2System(RangeObjectV2 rangeObjectV2Ref) : base(rangeObjectV2Ref)
 {
 }
Пример #23
0
 public RangeObstacleListenerSystem(RangeObjectV2 rangeObjectV2Ref, InteractiveInteractiveObjectPhysicsListener interactiveInteractiveObjectPhysicsListener) : base(rangeObjectV2Ref)
 {
     this.ObstacleListener = new ObstacleListenerSystem(new Func <TransformStruct>(() => rangeObjectV2Ref.GetTransform()));
     this._interactiveObstaclePhysicsEventListener = new InteractiveObstaclePhysicsEventListener(this.ObstacleListener);
     interactiveInteractiveObjectPhysicsListener.AddPhysicsEventListener(this._interactiveObstaclePhysicsEventListener);
 }
Пример #24
0
 public RangeExternalPhysicsOnlyListenersSystem(RangeObjectV2 rangeObjectV2Ref, InteractiveInteractiveObjectPhysicsListener interactiveInteractiveObjectPhysicsListener) : base(rangeObjectV2Ref)
 {
     this._interactiveInteractiveObjectPhysicsListener = interactiveInteractiveObjectPhysicsListener;
 }