コード例 #1
0
        public override void Tick(float d)
        {
            if (this.TrackedHealthGlobeInteractiveObject == null)
            {
                foreach (var interactiveObject in InteractiveObjectV2Manager.Get().InteractiveObjects)
                {
                    if (interactiveObject is HealthGlobeInteractiveObject HealthGlobeInteractiveObject)
                    {
                        if (!HealthGlobeInteractiveObject.IsMoving())
                        {
                            var destinationCalculationResult = this.PlayerInteractiveObject.SetDestination(new ForwardAgentMovementCalculationStrategy(new AIDestination(interactiveObject.InteractiveGameObject.GetTransform().WorldPosition, null)));

                            if (destinationCalculationResult == NavMeshPathStatus.PathComplete || destinationCalculationResult == NavMeshPathStatus.PathPartial)
                            {
                                this.TrackedHealthGlobeInteractiveObject = HealthGlobeInteractiveObject;
                                break;
                            }
                        }
                    }
                }
            }
            else
            {
                if (this.TrackedHealthGlobeInteractiveObject.IsAskingToBeDestroyed)
                {
                    this.isEnded = true;
                }
            }
        }
コード例 #2
0
        private void FixedUpdate()
        {
            var d = Time.fixedDeltaTime;

            PlayerInteractiveObjectManager.Get().FixedTick(d);
            InteractiveObjectV2Manager.Get().FixedTick(d);
        }
コード例 #3
0
        private void LateUpdate()
        {
            var d = Time.deltaTime;

            PlayerInteractiveObjectManager.Get().LateTick(d);
            InteractiveObjectV2Manager.Get().LateTick(d);
            PlayerActionEntryPoint.Get().LateTick(d);

            ObstacleOcclusionCalculationManagerV2.Get().LateTick();
            RangeIntersectionCalculationManagerV2.Get().LateTick();
        }
コード例 #4
0
        public override ASequencedAction[] BuildScenarioActions()
        {
            this.EnemyObject             = InteractiveObjectV2Manager.Get().InteractiveObjects.Find(o => o.InteractiveGameObject.GetAssociatedGameObjectName() == EnemyObjectName);
            this.PlayerInteractiveObject = PlayerInteractiveObjectManager.Get().PlayerInteractiveObject;

            return(new ASequencedAction[]
            {
                new AIWarpActionV2(this.PlayerInteractiveObject, this.PlayerStartPosition, null)
                .Then(new WaitForSecondsAction(1.5f)
                      .Then(new AIMoveToActionV2(this.PlayerTargetPosition, null, AIMovementSpeedAttenuationFactor.RUN, (strategy) => { this.PlayerInteractiveObject.SetDestination(strategy); }, this.PlayerInteractiveObject.SetAISpeedAttenuationFactor))
                      )
            });
        }
コード例 #5
0
        public override ASequencedAction[] BuildScenarioActions()
        {
            /// By default player has infinite health
            PlayerInteractiveObjectManager.Get().PlayerInteractiveObject.DealDamage(-99999999, null);

            var playerObject = PlayerInteractiveObjectManager.Get().PlayerInteractiveObject;
            var enemyObject  = InteractiveObjectV2Manager.Get().InteractiveObjects.Find(o => o.InteractiveGameObject.GetAssociatedGameObjectName() == "GameObject");

            return(new ASequencedAction[]
            {
                new ProjectileDeflectionTestScenarioAction(enemyObject, playerObject)
                .Then(new HealthGlobeRecoveryScenarioAction(playerObject))
            });
        }
コード例 #6
0
        private void StartTest()
        {
            this.TestControllerConfiguration.TestControllerDefinition.StartTest = false;
            var aTestScenarioDefinition = this.TestControllerConfiguration.TestControllerDefinition.aTestScenarioDefinition;

            this.TestEntitiesPrefabInstance = GameObject.Instantiate(aTestScenarioDefinition.TestEntitiesPrefab);
            aTestScenarioDefinition.BeforeObjectInitialization();
            RangeObjectV2Manager.InitializeAllRangeObjects();
            InteractiveObjectV2Manager.Get().InitializeAllInteractiveObjectsInitializer();

            /// By default player has infinite health
            PlayerInteractiveObjectManager.Get().PlayerInteractiveObject.DealDamage(9999999, null);

            this.SequencedActionPlayer = new SequencedActionPlayer(aTestScenarioDefinition.BuildScenarioActions());
            this.SequencedActionPlayer.Play();
        }
コード例 #7
0
 public void OnTriggerExit(Collider other)
 {
     InteractiveObjectV2Manager.Get().InteractiveObjectsIndexedByLogicCollider.TryGetValue(other, out CoreInteractiveObject OtherInteractiveObject);
     if (OtherInteractiveObject != null && ((this.AssociatedInteractiveObject != null && OtherInteractiveObject != this.AssociatedInteractiveObject) || this.AssociatedInteractiveObject == null))
     {
         this.CurrentlyTrackedColliders.Remove(other);
         var RangeObjectPhysicsTriggerInfo = new RangeObjectPhysicsTriggerInfo {
             Other = other, OtherInteractiveObject = OtherInteractiveObject
         };
         for (var i = 0; i < this.PhysicsEventListeners.Count; i++)
         {
             if (this.PhysicsEventListeners[i].ColliderSelectionGuard(RangeObjectPhysicsTriggerInfo))
             {
                 this.PhysicsEventListeners[i].OnTriggerExit(RangeObjectPhysicsTriggerInfo);
             }
         }
     }
 }
コード例 #8
0
        public override ASequencedAction[] BuildScenarioActions()
        {
            this.EnemyObject = InteractiveObjectV2Manager.Get().InteractiveObjects.Find(o => o.InteractiveGameObject.GetAssociatedGameObjectName() == EnemyObjectName);

            this.PlayerInteractiveObject = PlayerInteractiveObjectManager.Get().PlayerInteractiveObject;

            return(new ASequencedAction[]
            {
                new AIWarpActionV2(this.PlayerInteractiveObject, this.Fire1PlayerPosition, null)
                .Then(new TargetAndFireToInteractiveObjectAction(this.EnemyObject)
                      .Then(new AIMoveToActionV2(Vector3.zero, null, AIMovementSpeedAttenuationFactor.RUN, (strategy) => { this.PlayerInteractiveObject.SetDestination(strategy); }, this.PlayerInteractiveObject.SetAISpeedAttenuationFactor).Then(BuildWarpPlayerBehindEnemyAction())
                            .Then(new TargetAndFireToInteractiveObjectAction(this.EnemyObject)
                                  .Then(new AIWarpActionV2(this.PlayerInteractiveObject, Vector3.zero, null))
                                  )
                            )
                      )
            });
        }
コード例 #9
0
    private void Tick()
    {
        if (Application.isPlaying)
        {
            var allInteractiveObjects = InteractiveObjectV2Manager.Get().InteractiveObjects;
            foreach (var interactiveObject in allInteractiveObjects)
            {
                OnInteractiveObjectCreated(interactiveObject);
            }

            var allRangeObjects = RangeObjectV2Manager.Get().RangeObjects;
            foreach (var rangeObject in allRangeObjects)
            {
                OnInteractiveObjectCreated(rangeObject);
            }

            SelectedInteractiveObjectDetail.OnGui();
        }
    }
コード例 #10
0
    private void OnSearchTextChange(ChangeEvent <string> evt)
    {
        if (Application.isPlaying)
        {
            var allInteractiveObjects = InteractiveObjectV2Manager.Get().InteractiveObjects;
            var allRangeObjects       = RangeObjectV2Manager.Get().RangeObjects;

            var allInteractiveObjectsClassname = allInteractiveObjects.ToList()
                                                 .Select(i => i).Where(i => string.IsNullOrEmpty(SeachTextElement.text) || i.InteractiveGameObject.InteractiveGameObjectParent.name.ToLower().Contains(SeachTextElement.text.ToLower())).ToList()
                                                 .ConvertAll(i => i.GetType().Name)
                                                 .Union(
                allRangeObjects.Select(r => r).Where(r => string.IsNullOrEmpty(SeachTextElement.text) || r.RangeGameObjectV2.RangeGameObject.name.ToLower().Contains(SeachTextElement.text.ToLower())).ToList()
                .ConvertAll(r => r.GetType().Name)
                )
                                                 .ToList();
            foreach (var classHeaderElement in ClassHeaderElements)
            {
                classHeaderElement.Value.style.display = allInteractiveObjectsClassname.Contains(classHeaderElement.Key) ? DisplayStyle.Flex : DisplayStyle.None;
            }
        }
    }
コード例 #11
0
        private void Start()
        {
            OnStart();


            RangeObjectV2Manager.Get().Init();
            GroundEffectsManagerV2.Get().Init(LevelManagementConfigurationGameObject.Get().LevelConfiguration.ConfigurationInherentData[LevelManager.Get().GetCurrentLevel()].LevelRangeEffectInherentData);
            InteractiveObjectV2Manager.Get().Init();

            CameraMovementManager.Get().Init();

            CircleFillBarRendererManager.Get().Init();
            TutorialManager.Get().Init();
            SelectableObjectManagerV2.Get().Init(GameInputManager.Get());

            PlayerActionEntryPoint.Get().Init();
#if UNITY_EDITOR
            EditorOnlyManagers = new EditorOnlyManagers();
            EditorOnlyManagers.Init();
#endif
        }
コード例 #12
0
        private void ClearTest()
        {
            this.TestControllerConfiguration.TestControllerDefinition.ClearTest = false;
            this.SequencedActionPlayer.Kill();

            var allInteractiveObjects = InteractiveObjectV2Manager.Get().InteractiveObjects;

            List <RangeObjectV2> ExcludedRangesToDestroy = new List <RangeObjectV2>();

            for (var i = allInteractiveObjects.Count - 1; i >= 0; i--)
            {
                //We dont remove the level chunk
                if (allInteractiveObjects[i].GetType() != typeof(LevelChunkInteractiveObject))
                {
                    allInteractiveObjects[i].Destroy();
                }
                else
                {
                    ExcludedRangesToDestroy.Add((allInteractiveObjects[i] as LevelChunkInteractiveObject).GetLevelChunkRangeObject());
                }
            }

            for (var i = RangeObjectV2Manager.Get().RangeObjects.Count - 1; i >= 0; i--)
            {
                if (!ExcludedRangesToDestroy.Contains(RangeObjectV2Manager.Get().RangeObjects[i]))
                {
                    RangeObjectV2Manager.Get().RangeObjects[i].OnDestroy();
                }
            }

            MonoBehaviour.Destroy(TestEntitiesPrefabInstance);
            GameTestMockedInputManager.MockedInstance.GetGameTestMockedXInput().GameTestInputMockedValues.Reset();

            ///Reset camera position
            CameraMovementJobManager.Get().SetTargetPosition(this.InitialCameraPivotPointTransform);
            CameraMovementJobManager.Get().SetCameraZoon(this.InitialCameraZoom);

            ///Reset time management
            TimeManagementManager.Get().Reset();
        }
コード例 #13
0
        public void ManuallyDetectInsideColliders()
        {
            var overlappingCollider = PhysicsIntersection.BoxOverlapColliderWorld(this.RangeGameObjectV2.BoundingCollider as BoxCollider);

            if (overlappingCollider != null)
            {
                for (var i = 0; i < overlappingCollider.Length; i++)
                {
                    InteractiveObjectV2Manager.Get().InteractiveObjectsIndexedByLogicCollider.TryGetValue(overlappingCollider[i], out CoreInteractiveObject interactiveObject);
                    if (interactiveObject != null)
                    {
                        if (this.InteractiveObjectSelectionGuard.Invoke(new InteractiveObjectPhysicsTriggerInfo()
                        {
                            Other = overlappingCollider[i], OtherInteractiveObject = interactiveObject
                        }))
                        {
                            //  Debug.Log(MyLog.Format(interactiveObject.InteractiveGameObject.GetAssociatedGameObjectName()));
                            this.OnTriggerEnter(interactiveObject);
                        }
                    }
                }
            }
        }
コード例 #14
0
        public void ManuallyDetectInsideColliders()
        {
            var overlappingCollider = Physics.OverlapSphere(this.RangeGameObjectV2.RangeGameObject.transform.localToWorldMatrix.MultiplyPoint(this.SphereBoundingCollider.center),
                                                            this.SphereBoundingCollider.radius);

            if (overlappingCollider != null)
            {
                for (var i = 0; i < overlappingCollider.Length; i++)
                {
                    InteractiveObjectV2Manager.Get().InteractiveObjectsIndexedByLogicCollider.TryGetValue(overlappingCollider[i], out CoreInteractiveObject interactiveObject);
                    if (interactiveObject != null)
                    {
                        if (this.InteractiveObjectSelectionGuard.Invoke(new InteractiveObjectPhysicsTriggerInfo()
                        {
                            Other = overlappingCollider[i], OtherInteractiveObject = interactiveObject
                        }))
                        {
                            this.OnTriggerEnter(interactiveObject);
                        }
                    }
                }
            }
        }
コード例 #15
0
        private void Update()
        {
            var d = Time.deltaTime;

            BeforeTick(d);


            TutorialManager.Get().Tick(d);
            PuzzleTutorialEventSenderManager.Get().Tick(d);

            BlockingCutscenePlayerManager.Get().Tick(d);

            PlayerActionEntryPoint.Get().Tick(d);

            PlayerInteractiveObjectManager.Get().Tick(d);
            PlayerInteractiveObjectManager.Get().AfterTicks(d);

            CameraMovementManager.Get().Tick(d);

            ObstacleOcclusionCalculationManagerV2.Get().Tick(d);
            RangeIntersectionCalculationManagerV2.Get().Tick(d);

            RangeObjectV2Manager.Get().Tick(d);

            InteractiveObjectV2Manager.Get().Tick(d);

            InteractiveObjectV2Manager.Get().AfterTicks(d);

            GroundEffectsManagerV2.Get().Tick(d);
            DottedLineRendererManager.Get().Tick();
            SelectableObjectManagerV2.Get().Tick(d);
            CircleFillBarRendererManager.Get().Tick(d);

#if UNITY_EDITOR
            EditorOnlyManagers.Tick(d);
#endif
        }
コード例 #16
0
        public override ASequencedAction[] BuildScenarioActions()
        {
            CoreInteractiveObject targettedObject0 = null;
            CoreInteractiveObject targettedObject1 = null;
            CoreInteractiveObject targettedObject2 = null;

            IEM_ProjectileFireActionInput_Retriever playerInteractiveObject = PlayerInteractiveObjectManager.Get().PlayerInteractiveObject;

            foreach (var io in InteractiveObjectV2Manager.Get().InteractiveObjects)
            {
                if (io.InteractiveGameObject.GetAssociatedGameObjectName() == TestTargettedObjectName0)
                {
                    targettedObject0 = io;
                }

                if (io.InteractiveGameObject.GetAssociatedGameObjectName() == TestTargettedObjectName1)
                {
                    targettedObject1 = io;
                }

                if (io.InteractiveGameObject.GetAssociatedGameObjectName() == TestTargettedObjectName2)
                {
                    targettedObject2 = io;
                }
            }

            GameObject AimPhysicsTestPoint0Object = GameObject.Find(AimPhysicsTestPoint0);
            GameObject AimPhysicsTestPoint1Object = GameObject.Find(AimPhysicsTestPoint1);


            return(new ASequencedAction[]
            {
                new EnsureTargetLockAction(playerInteractiveObject, targettedObject0)
                .Then(new Target_FireInteractiveObject_AndWait_Action(targettedObject0, new Target_FireInteractiveObject_AndWait_ActionDefintion(() => targettedObject0.IsAskingToBeDestroyed))
                      .Then(new EnsureTargetLockAction(playerInteractiveObject, targettedObject1)
                            .Then(new Target_FireInteractiveObject_AndWait_Action(targettedObject1, new Target_FireInteractiveObject_AndWait_ActionDefintion(() => targettedObject1.IsAskingToBeDestroyed))
                                  .Then(new EnsureTargetLockAction(playerInteractiveObject, targettedObject2)
                                        .Then(new Target_FireInteractiveObject_AndWait_Action(targettedObject2, new Target_FireInteractiveObject_AndWait_ActionDefintion(() => targettedObject2.IsAskingToBeDestroyed))
                                              .Then(new WaitForSecondsAction(0.5f)
                                                    .Then(new TimeFreezePressedAction()
                                                          .Then(new StartAimingAction()
                                                                .Then(new MoveTargetCursorSmoothScreenPosition(
                                                                          new MoveTargetCursorSmoothScreenPositionData(Camera.main.ScreenToViewportPoint(TargetCursorManager.Get().GetTargetCursorScreenPosition()), Camera.main.WorldToViewportPoint(AimPhysicsTestPoint0Object.transform.position), 0.1f))
                                                                      .Then(new StopAimingAction()
                                                                            .Then(new TimeFreezePressedAction()
                                                                                  .Then(new StartAimingAction()
                                                                                        .Then(new MoveTargetCursorSmoothScreenPosition(
                                                                                                  new MoveTargetCursorSmoothScreenPositionData(new Vector2(0.5f, 0.5f), Camera.main.WorldToViewportPoint(AimPhysicsTestPoint0Object.transform.position), 0.1f)))
                                                                                        )
                                                                                  )
                                                                            )
                                                                      )
                                                                ))
                                                    )
                                              )
                                        )
                                  )
                            )
                      )
            });
        }