コード例 #1
0
 private void GameSystemsOnCollectionChanged(object sender, TrackingCollectionChangedEventArgs trackingCollectionChangedEventArgs)
 {
     // Detect addition of dynamic navigation mesh system
     if (dynamicNavigationMeshSystem == null)
     {
         dynamicNavigationMeshSystem = gameSystemCollection.OfType <DynamicNavigationMeshSystem>().FirstOrDefault();
         if (dynamicNavigationMeshSystem != null)
         {
             dynamicNavigationMeshSystem.NavigationMeshUpdated += DynamicNavigationMeshSystemOnNavigationMeshUpdatedUpdated;
         }
     }
 }
コード例 #2
0
ファイル: BoundingBoxProcessor.cs プロジェクト: Aggror/Stride
        protected override void OnSystemAdd()
        {
            // TODO Plugins
            // This is the same kind of entry point as used in PhysicsProcessor
            var gameSystems      = Services.GetSafeServiceAs <IGameSystemCollection>();
            var navigationSystem = gameSystems.OfType <DynamicNavigationMeshSystem>().FirstOrDefault();

            if (navigationSystem == null)
            {
                navigationSystem = new DynamicNavigationMeshSystem(Services);
                gameSystems.Add(navigationSystem);
            }
        }
コード例 #3
0
        public override void Start()
        {
            DynamicNavigationMeshSystem dynamicNavigationMeshSystem = Game.GameSystems.OfType <DynamicNavigationMeshSystem>().FirstOrDefault();

            // Wait for the dynamic navigation to be registered
            if (dynamicNavigationMeshSystem == null)
            {
                Game.GameSystems.CollectionChanged += GameSystemsOnCollectionChanged;
            }
            else
            {
                dynamicNavigationMeshSystem.Enabled = true;
            }
        }
コード例 #4
0
        private void SetDynamicNavigationSystem(DynamicNavigationMeshSystem newDynamicNavigationMeshSystem)
        {
            if (dynamicNavigationMeshSystem != null)
            {
                return;
            }

            if (newDynamicNavigationMeshSystem != null)
            {
                dynamicNavigationMeshSystem = newDynamicNavigationMeshSystem;

                newDynamicNavigationMeshSystem.NavigationMeshUpdated += DynamicNavigationMeshSystemOnNavigationMeshUpdated;

                // Initialize dynamic navigation mesh system with game settings
                if (gameSettingsProviderService.CurrentGameSettings != null)
                {
                    var navigationSettings = gameSettingsProviderService.CurrentGameSettings.GetOrDefault <NavigationSettings>();
                    sceneEditorController.InvokeAsync(() => newDynamicNavigationMeshSystem.InitializeSettingsFromNavigationSettings(navigationSettings));
                }

                newDynamicNavigationMeshSystem.EnabledChanged += NewDynamicNavigationMeshSystemOnEnabledChanged;
            }
        }
コード例 #5
0
        protected override async Task LoadContent()
        {
            await base.LoadContent();

            entityA = SceneSystem.SceneInstance.RootScene.Entities.FirstOrDefault(x => x.Name == "A");
            entityB = SceneSystem.SceneInstance.RootScene.Entities.FirstOrDefault(x => x.Name == "B");

            entityA.Add(controllerA = new PlayerController());
            entityB.Add(controllerB = new PlayerController());

            filterAB = SceneSystem.SceneInstance.RootScene.Entities.FirstOrDefault(x => x.Name == "FilterAB");
            filterB  = SceneSystem.SceneInstance.RootScene.Entities.FirstOrDefault(x => x.Name == "FilterB");

            dynamicNavigation = (DynamicNavigationMeshSystem)GameSystems.FirstOrDefault(x => x is DynamicNavigationMeshSystem);
            if (dynamicNavigation == null)
            {
                throw new Exception("Failed to find dynamic navigation mesh system");
            }

            dynamicNavigation.AutomaticRebuild = false;
            dynamicNavigation.Enabled          = true;

            Script.AddTask(RunAsyncTests);
        }