コード例 #1
0
ファイル: AudioEmitterProcessor.cs プロジェクト: zetz/xenko
        private void OnSoundControllerListChanged(object o, AudioEmitterComponent.ControllerCollectionChangedEventArgs args)
        {
            AssociatedData associatedData;

            if (!ComponentDatas.TryGetValue(args.EmitterComponent, out associatedData))
            {
                return;
            }

            // A new SoundEffect have been associated to the AudioEmitterComponenent or an old SoundEffect have been deleted.
            // We need to create/destroy the corresponding SoundEffectInstances.

            var listeners = audioSystem.Listeners.Keys;

            foreach (var listener in listeners)
            {
                var currentTuple = Tuple.Create(listener, args.Controller);

                if (args.Action == NotifyCollectionChangedAction.Add)
                {
                    associatedData.ListenerControllerToSoundInstance[currentTuple] = args.Controller.CreateSoundInstance();
                }
                else if (args.Action == NotifyCollectionChangedAction.Remove)
                {
                    args.Controller.DestroySoundInstance(associatedData.ListenerControllerToSoundInstance[currentTuple]);
                    associatedData.ListenerControllerToSoundInstance.Remove(currentTuple);
                }
            }
        }
コード例 #2
0
ファイル: LightProcessor.cs プロジェクト: Ethereal77/stride
 public RenderLight GetRenderLight(LightComponent lightComponent)
 {
     ComponentDatas.TryGetValue(lightComponent, out var renderLight);
     return(renderLight);
 }