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; } } }
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); } }
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; } }
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; } }
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); }