Example #1
0
        void playingAnimations_CollectionChanged(object sender, TrackingCollectionChangedEventArgs e)
        {
            var item = (PlayingAnimation)e.Item;

            switch (e.Action)
            {
            case NotifyCollectionChangedAction.Add:
            {
                item.attached = true;
                break;
            }

            case NotifyCollectionChangedAction.Remove:
            {
                var evaluator = item.Evaluator;
                if (evaluator != null)
                {
                    Blender.ReleaseEvaluator(evaluator);
                    item.Evaluator = null;
                }

                item.endedTCS?.TrySetResult(true);
                item.endedTCS = null;
                item.attached = false;
                break;
            }
            }
        }
        /// <summary>
        /// The <see cref="AudioSystem"/> listeners collection has been modified.
        /// Mark AudioEmitter not for update if removed from the list.
        /// Create the AudioEmitter data and mark it for update  if added to the list.
        /// </summary>
        /// <param name="o"></param>
        /// <param name="args"></param>
        private void OnListenerCollectionChanged(object o, TrackingCollectionChangedEventArgs args)
        {
            if (!args.CollectionChanged) // no keys have been added or removed, only one of the values changed
            {
                return;
            }

            var listenersData = matchingEntities.Values.Where(x => x.ListenerComponent == args.Key);

            if (args.Action == NotifyCollectionChangedAction.Add)   // A new listener have been added
            {
                foreach (var listenerData in listenersData)
                {
                    InitializeAudioEmitter(listenerData);
                    listenerData.ShouldBeComputed = true;
                }
            }
            else if (args.Action == NotifyCollectionChangedAction.Remove) // A listener have been removed
            {
                foreach (var listenerData in listenersData)
                {
                    listenerData.ShouldBeComputed = false;
                }
            }
        }
Example #3
0
        private void Slots_CollectionChanged(object sender, TrackingCollectionChangedEventArgs e)
        {
            switch (e.Action)
            {
            case NotifyCollectionChangedAction.Add:
            {
                var slot          = (Slot)e.Item;
                var slots         = slot.Direction == SlotDirection.Input ? InputSlots : OutputSlots;
                var slotViewModel = new VisualScriptSlotViewModel(ViewModel, slot);
                slots.Add(slotViewModel);
                ViewModel.Slots.Add(slot, slotViewModel);
                break;
            }

            case NotifyCollectionChangedAction.Remove:
            {
                var slot          = (Slot)e.Item;
                var slots         = slot.Direction == SlotDirection.Input ? InputSlots : OutputSlots;
                var slotViewModel = ViewModel.Slots[slot];
                slots.Remove(slotViewModel);
                ViewModel.Slots.Remove(slot);
                break;
            }

            default:
                throw new NotSupportedException();
            }
        }
Example #4
0
 private void MeshListenerOnCollectionChanged(object sender, TrackingCollectionChangedEventArgs trackingCollectionChangedEventArgs)
 {
     throw new NotImplementedException();
     //var updater = updaters.Where(particleUpdater => particleUpdater.Mesh != null).FirstOrDefault(particleUpdater => ReferenceEquals(sender, particleUpdater.Mesh.SubMeshes));
     //if (updater != null)
     //    updater.Emitter.OnMeshUpdate(updater.Entity, trackingCollectionChangedEventArgs);
 }
Example #5
0
        private void OnListenerCollectionChanged(object o, TrackingCollectionChangedEventArgs args)
        {
            if (!args.CollectionChanged) // no keys have been added or removed, only one of the values changed
            {
                return;
            }

            // A listener have been Added or Removed.
            // We need to create/destroy all SoundInstances associated to that listener for each AudioEmitterComponent.

            for (int a = 0; a < ComponentDataValues.Count; a++)
            {
                var associatedData = ComponentDataValues[a];

                var soundControllers = associatedData.AudioEmitterComponent.SoundToController.Values;

                foreach (var soundController in soundControllers)
                {
                    if (args.Action == NotifyCollectionChangedAction.Add) // A new listener have been added
                    {
                        soundController.CreateSoundInstance((AudioListenerComponent)args.Key, false);
                    }
                    else if (args.Action == NotifyCollectionChangedAction.Remove) // A listener have been removed
                    {
                        soundController.DestroySoundInstances((AudioListenerComponent)args.Key);
                    }
                }
            }
        }
Example #6
0
        /// <summary>
        /// Notification that the modules (plugins) have changed.
        /// Pool's fields may need to be updated if new are required or old ones are no longer needed.
        /// </summary>
        /// <param name="sender">Sender</param>
        /// <param name="e">Event arguments</param>
        private void ModulesChanged(object sender, TrackingCollectionChangedEventArgs e)
        {
            var module = e.Item as ParticleModule;

            if (module == null)
            {
                return;
            }

            switch (e.Action)
            {
            case NotifyCollectionChangedAction.Add:
                for (int i = 0; i < module.RequiredFields.Count; i++)
                {
                    AddRequiredField(module.RequiredFields[i]);
                }
                break;

            case NotifyCollectionChangedAction.Remove:
                for (int i = 0; i < module.RequiredFields.Count; i++)
                {
                    RemoveRequiredField(module.RequiredFields[i]);
                }
                break;
            }
        }
        private void OnListenerCollectionChanged(object o, TrackingCollectionChangedEventArgs args)
        {
            if (!args.CollectionChanged)// no keys have been added or removed, only one of the values changed
            {
                return;
            }

            // A listener have been Added or Removed.
            // We need to create/destroy all SoundEffectInstances associated to that listener for each AudioEmitterComponent.

            foreach (var associatedData in ComponentDatas.Values)
            {
                var listenerControllerToSoundInstance = associatedData.ListenerControllerToSoundInstance;
                var soundControllers = associatedData.AudioEmitterComponent.SoundEffectToController.Values;

                foreach (var soundController in soundControllers)
                {
                    var currentTupple = Tuple.Create((AudioListenerComponent)args.Key, soundController);

                    if (args.Action == NotifyCollectionChangedAction.Add)   // A new listener have been added
                    {
                        listenerControllerToSoundInstance[currentTupple] = soundController.CreateSoundInstance();
                    }
                    else if (args.Action == NotifyCollectionChangedAction.Remove) // A listener have been removed
                    {
                        soundController.DestroySoundInstance(listenerControllerToSoundInstance[currentTupple]);
                        listenerControllerToSoundInstance.Remove(currentTupple);
                    }
                }
            }
        }
Example #8
0
        private void UpdateTargetConnectors(object sender, TrackingCollectionChangedEventArgs e)
        {
            // Unregister ourselves
            ((NodeVertexControl)Target).Connectors.CollectionChanged -= UpdateTargetConnectors;

            // Update edge
            UpdateEdge();
        }
        public void OnMeshUpdate(Entity entity, TrackingCollectionChangedEventArgs updateArgs)
        {
            var update = MeshUpdate;

            if (update != null)
            {
                update(this, Entity, updateArgs);
            }
        }
 void globalLights_CollectionChanged(object sender, TrackingCollectionChangedEventArgs e)
 {
     if (e.Action == NotifyCollectionChangedAction.Add)
     {
         InternalAddEntity(((LightComponent)e.Item).Entity);
     }
     else if (e.Action == NotifyCollectionChangedAction.Remove)
     {
         InternalRemoveEntity(((LightComponent)e.Item).Entity);
     }
 }
Example #11
0
 private void GameSystems_CollectionChanged(object sender, TrackingCollectionChangedEventArgs e)
 {
     if (e.Action == NotifyCollectionChangedAction.Add)
     {
         GameSystems_ItemAdded(sender, e);
     }
     else if (e.Action == NotifyCollectionChangedAction.Remove)
     {
         GameSystems_ItemRemoved(sender, e);
     }
 }
Example #12
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;
         }
     }
 }
Example #13
0
 private void OnSoundsOnCollectionChanged(object sender, TrackingCollectionChangedEventArgs args)
 {
     switch (args.Action)
     {
         case NotifyCollectionChangedAction.Add:
             AttachSound((SoundBase)args.Item);
             break;
         case NotifyCollectionChangedAction.Remove:
             DetachSound((SoundBase)args.Item);
             break;
     }
 }
Example #14
0
        private void GameSystemsOnCollectionChanged(object sender, TrackingCollectionChangedEventArgs trackingCollectionChangedEventArgs)
        {
            if (trackingCollectionChangedEventArgs.Action == NotifyCollectionChangedAction.Add)
            {
                if (trackingCollectionChangedEventArgs.Item is DynamicNavigationMeshSystem dynamicNavigationMeshSystem)
                {
                    dynamicNavigationMeshSystem.Enabled = true;

                    // No longer need to listen to changes
                    Game.GameSystems.CollectionChanged -= GameSystemsOnCollectionChanged;
                }
            }
        }
Example #15
0
        private void GameSystemsOnCollectionChanged(object sender, TrackingCollectionChangedEventArgs e)
        {
            if (dynamicNavigationMeshSystem != null)
            {
                return;
            }

            // Handle addition of dynamic navigation mesh system
            if (e.Action == NotifyCollectionChangedAction.Add)
            {
                SetDynamicNavigationSystem(e.Item as DynamicNavigationMeshSystem);
            }
        }
Example #16
0
        private void rootEntities_CollectionChanged(object sender, TrackingCollectionChangedEventArgs e)
        {
            switch (e.Action)
            {
            case NotifyCollectionChangedAction.Add:
                transformationRoots.Add(((Entity)e.Item).Transform);
                break;

            case NotifyCollectionChangedAction.Remove:
                transformationRoots.Remove(((Entity)e.Item).Transform);
                break;
            }
        }
Example #17
0
 void playingAnimations_CollectionChanged(object sender, TrackingCollectionChangedEventArgs e)
 {
     if (e.Action == NotifyCollectionChangedAction.Remove)
     {
         var item      = (PlayingAnimation)e.Item;
         var evaluator = item.Evaluator;
         if (evaluator != null)
         {
             Blender.ReleaseEvaluator(evaluator);
             item.Evaluator = null;
         }
     }
 }
Example #18
0
        private void Entities_CollectionChanged(object sender, TrackingCollectionChangedEventArgs e)
        {
            switch (e.Action)
            {
            case NotifyCollectionChangedAction.Add:
                Add((Entity)e.Item);
                break;

            case NotifyCollectionChangedAction.Remove:
                Remove((Entity)e.Item);
                break;
            }
        }
Example #19
0
        //private void entities_CollectionChanged(object sender, TrackingCollectionChangedEventArgs e)
        //{
        //    var entity = (Entity)e.Item;
        //    switch (e.Action)
        //    {
        //        case NotifyCollectionChangedAction.Add:
        //            InternalAddEntity(entity);
        //            break;
        //        case NotifyCollectionChangedAction.Remove:
        //            InternalRemoveEntity(entity);
        //            break;
        //    }
        //}

        private void systems_CollectionChanged(object sender, TrackingCollectionChangedEventArgs e)
        {
            switch (e.Action)
            {
            case NotifyCollectionChangedAction.Add:
                OnProcessorAdded((EntityProcessor)e.Item);
                break;

            case NotifyCollectionChangedAction.Remove:
                OnProcessorRemoved((EntityProcessor)e.Item);
                break;
            }
        }
Example #20
0
        private void Children_CollectionChanged(object sender, TrackingCollectionChangedEventArgs e)
        {
            switch (e.Action)
            {
            case NotifyCollectionChangedAction.Add:
                Add((Scene)e.Item);
                break;

            case NotifyCollectionChangedAction.Remove:
                Remove((Scene)e.Item);
                break;
            }
        }
Example #21
0
        private void GameSystems_ItemRemoved(object sender, TrackingCollectionChangedEventArgs e)
        {
            var gameSystem = (IGameSystemBase)e.Item;

            if (State == GameSystemState.None)
            {
                pendingGameSystems.Remove(gameSystem);
            }

            var contentableSystem = gameSystem as IContentable;

            if (contentableSystem != null)
            {
                lock (contentableGameSystems)
                {
                    contentableGameSystems.Remove(contentableSystem);
                }

                // UnLoads the content of IContentable when running
                if (State == GameSystemState.ContentLoaded)
                {
                    contentableSystem.UnloadContent();
                }
            }

            var updateableSystem = gameSystem as IUpdateable;

            if (updateableSystem != null)
            {
                lock (updateableGameSystems)
                {
                    var key = new KeyValuePair <IUpdateable, ProfilingKey>(updateableSystem, null);
                    updateableGameSystems.Remove(key);
                }

                updateableSystem.UpdateOrderChanged -= UpdateableGameSystem_UpdateOrderChanged;
            }

            var drawableSystem = gameSystem as IDrawable;

            if (drawableSystem != null)
            {
                lock (drawableGameSystems)
                {
                    var key = new KeyValuePair <IDrawable, ProfilingKey>(drawableSystem, null);
                    drawableGameSystems.Remove(key);
                }

                drawableSystem.DrawOrderChanged -= DrawableGameSystem_DrawOrderChanged;
            }
        }
Example #22
0
        void Components_CollectionChanged(object sender, TrackingCollectionChangedEventArgs e)
        {
            // Remove entity owner from previous EntityComponentData.
            if (e.OldItem is EntityComponentData)
            {
                ((EntityComponentData)e.OldItem).Entity = null;
            }

            // Set entity owner to this new EntityComponentData.
            if (e.Item is EntityComponentData)
            {
                ((EntityComponentData)e.Item).Entity = this;
            }
        }
Example #23
0
        private void GameSystems_ItemAdded(object sender, TrackingCollectionChangedEventArgs e)
        {
            var gameSystem = (IGameSystemBase)e.Item;

            // If the game is already running, then we can initialize the game system now
            if (State >= GameSystemState.Initialized)
            {
                gameSystem.Initialize();
            }
            else
            {
                // else we need to initialize it later
                pendingGameSystems.Add(gameSystem);
            }

            // Add a contentable system to a separate list
            var contentableSystem = gameSystem as IContentable;

            if (contentableSystem != null)
            {
                lock (contentableGameSystems)
                {
                    if (!contentableGameSystems.Contains(contentableSystem))
                    {
                        contentableGameSystems.Add(contentableSystem);
                    }
                }
                // Load the content of IContentable when running
                if (State >= GameSystemState.ContentLoaded)
                {
                    contentableSystem.LoadContent();
                }
            }

            // Add an updateable system to the separate list
            var updateableGameSystem = gameSystem as IUpdateable;

            if (updateableGameSystem != null && AddGameSystem(updateableGameSystem, updateableGameSystems, UpdateableComparer.Default, GameProfilingKeys.GameUpdate))
            {
                updateableGameSystem.UpdateOrderChanged += UpdateableGameSystem_UpdateOrderChanged;
            }

            // Add a drawable system to the separate list
            var drawableGameSystem = gameSystem as IDrawable;

            if (drawableGameSystem != null && AddGameSystem(drawableGameSystem, drawableGameSystems, DrawableComparer.Default, GameProfilingKeys.GameDraw))
            {
                drawableGameSystem.DrawOrderChanged += DrawableGameSystem_DrawOrderChanged;
            }
        }
Example #24
0
        private void Bindings_CollectionChanged(object sender, TrackingCollectionChangedEventArgs e)
        {
            var virtualButtonBinding = (VirtualButtonBinding)e.Item;

            switch (e.Action)
            {
            case NotifyCollectionChangedAction.Add:
                AddBinding(virtualButtonBinding);
                break;

            case NotifyCollectionChangedAction.Remove:
                RemoveBinding(virtualButtonBinding);
                break;
            }
        }
Example #25
0
        void Processors_CollectionChanged(object sender, TrackingCollectionChangedEventArgs e)
        {
            var renderer = (Renderer)e.Item;

            switch (e.Action)
            {
            case NotifyCollectionChangedAction.Add:
                renderer.Load();
                break;

            case NotifyCollectionChangedAction.Remove:
                renderer.Unload();
                break;
            }
        }
Example #26
0
        private void Pipelines_CollectionChanged(object sender, TrackingCollectionChangedEventArgs e)
        {
            var renderPass = (RenderPass)e.Item;

            switch (e.Action)
            {
            case NotifyCollectionChangedAction.Add:
                RenderPassAdded(renderPass);
                break;

            case NotifyCollectionChangedAction.Remove:
                RenderPassRemoved(renderPass);
                break;
            }
        }
Example #27
0
        private void Slots_CollectionChanged(object sender, TrackingCollectionChangedEventArgs e)
        {
            switch (e.Action)
            {
            case NotifyCollectionChangedAction.Add:
                OnSlotAdd((Slot)e.Item);
                break;

            case NotifyCollectionChangedAction.Remove:
                OnSlotRemove((Slot)e.Item);
                break;

            default:
                throw new NotSupportedException();
            }
        }
Example #28
0
        private void ChildrenCollectionChanged(object sender, TrackingCollectionChangedEventArgs e)
        {
            switch (e.Action)
            {
            case NotifyCollectionChangedAction.Add:
                AddItem((TransformComponent)e.Item);
                break;

            case NotifyCollectionChangedAction.Remove:
                RemoveItem((TransformComponent)e.Item);
                break;

            default:
                throw new NotSupportedException();
            }
        }
        private void RenderFeatures_CollectionChanged(object sender, TrackingCollectionChangedEventArgs e)
        {
            var renderFeature = (SubRenderFeature)e.Item;

            switch (e.Action)
            {
            case System.Collections.Specialized.NotifyCollectionChangedAction.Add:
                renderFeature.AttachRootRenderFeature(this);
                renderFeature.Initialize(Context);
                break;

            case System.Collections.Specialized.NotifyCollectionChangedAction.Remove:
                renderFeature.Dispose();
                break;
            }
        }
Example #30
0
        void rootEntities_CollectionChanged(object sender, TrackingCollectionChangedEventArgs e)
        {
            switch (e.Action)
            {
            case NotifyCollectionChangedAction.Add:
                EntityManager.Add((Entity)e.Item);
                break;

            case NotifyCollectionChangedAction.Remove:
                EntityManager.Remove((Entity)e.Item);
                break;

            default:
                throw new NotSupportedException();
            }
        }
        private void OnMeshUpdate(ParticleEmitterComponent particleEmitterComponent, Entity entity, TrackingCollectionChangedEventArgs arg3)
        {
            if (entity.Name.StartsWith("maguma_"))
            {
                var meshComponent = entity.Get(ModelComponent.Key);
                if (meshComponent == null)
                    return;

                foreach (var effectMesh in meshComponent.SubMeshes)
                {
                    var subMeshData = effectMesh.MeshData.Value.SubMeshDatas[MeshData.StandardSubMeshData];
                    var buffer = subMeshData.GetVertexBufferData<Vector3>("POSITION");
                    var gpuBuffer = Buffer.Structured.New(renderContext.GraphicsDevice, buffer);
                    Parameters.Set(ScriptParticleSmoke.VerticesEmitterKey, gpuBuffer);
                    break;
                }
            }
        }