Esempio n. 1
0
        public bool RegisterGroupComponent(GroupComponent groupComponent, string targetGroupComponentPath, bool createProxy = true)
        {
            if (!_allowExternalGroupComponents)
            {
                DebugLog.Print("External GroupComponent registration is disabled");
                return(false);
            }
            bool      result          = false;
            Component componentByName = GetComponentByName(targetGroupComponentPath);

            if (groupComponent != null)
            {
                groupComponent.Initialise(componentByName, isComponentInstance: false);
                if (componentByName != null)
                {
                    componentByName.AddComponent(groupComponent);
                }
                else
                {
                    _components.Add(groupComponent);
                }
                if (createProxy)
                {
                    GameObject gameObject = new GameObject();
                    gameObject.hideFlags = HideFlags.DontSave;
                    GroupComponentProxy groupComponentProxy = gameObject.AddComponent <GroupComponentProxy>();
                    groupComponentProxy._groupComponent = groupComponent;
                    groupComponentProxy.name            = groupComponent.name + "_Proxy";
                    if (componentByName != null)
                    {
                        groupComponentProxy.transform.parent = componentByName.transform;
                    }
                    else
                    {
                        groupComponentProxy.transform.parent = base.gameObject.transform;
                    }
                    _groupComponentProxies.Add(groupComponentProxy);
                }
                else if (componentByName != null)
                {
                    groupComponent.transform.parent = componentByName.transform;
                }
                else
                {
                    groupComponent.transform.parent = base.gameObject.transform;
                }
                if (componentByName != null)
                {
                    VolumeMeter component = componentByName.GetComponent <VolumeMeter>();
                    if (component != null)
                    {
                        component.CollectAudioComponents();
                    }
                }
                DebugLog.Print("GroupComponent [" + groupComponent.name + "] registred succesfuly");
                result = true;
            }
            else
            {
                DebugLog.Print("GroupComponent [" + groupComponent.name + "] failed to register", DebugLevel.Error);
            }
            return(result);
        }
Esempio n. 2
0
        public bool UnregisterGroupComponent(GroupComponent groupComponent, bool ignoreFadeOut = true)
        {
            if (!_allowExternalGroupComponents)
            {
                DebugLog.Print("External GroupComponent registration is disabled");
                return(false);
            }
            bool result = true;

            if (groupComponent != null)
            {
                if (!ignoreFadeOut)
                {
                    for (int i = 0; i < _groupComponentProxies.Count; i++)
                    {
                        GroupComponentProxy groupComponentProxy = _groupComponentProxies[i];
                        if (groupComponentProxy._groupComponent == groupComponent)
                        {
                            groupComponent.Stop();
                            GameObject gameObject = new GameObject();
                            groupComponentProxy._groupComponent = gameObject.AddComponent <GroupComponent>();
                            groupComponentProxy._groupComponent.transform.parent = groupComponentProxy.transform;
                            groupComponentProxy._groupComponent.name             = groupComponent.name;
                            groupComponentProxy._groupComponent.CopyPropertiesFrom(groupComponent);
                            if (groupComponent.ParentComponent != null)
                            {
                                groupComponent.ParentComponent.RemoveComponent(groupComponent);
                                groupComponent.ParentComponent.AddComponent(groupComponentProxy._groupComponent);
                            }
                            else
                            {
                                _components.Remove(groupComponent);
                                _components.Remove(groupComponentProxy._groupComponent);
                            }
                            Component[] childComponents = groupComponent.GetChildComponents();
                            for (int j = 0; j < childComponents.Length; j++)
                            {
                                groupComponentProxy._groupComponent.AddComponent(childComponents[j]);
                                childComponents[j].transform.parent = groupComponentProxy._groupComponent.transform;
                                childComponents[j].ParentComponent  = groupComponentProxy._groupComponent;
                            }
                            _groupComponentProxies.Remove(groupComponentProxy);
                            _groupComponentProxiesToDestroy.Add(groupComponentProxy);
                            groupComponentProxy._groupComponent.SetComponentActive(groupComponent.IsComponentActive());
                            DebugLog.Print("GroupComponent [" + groupComponent.name + "] scheduled to be unregistered");
                        }
                    }
                }
                else
                {
                    if (groupComponent.ParentComponent != null)
                    {
                        groupComponent.ParentComponent.RemoveComponent(groupComponent);
                    }
                    else
                    {
                        _components.Remove(groupComponent);
                    }
                    for (int k = 0; k < _groupComponentProxies.Count; k++)
                    {
                        GroupComponentProxy groupComponentProxy2 = _groupComponentProxies[k];
                        if (groupComponentProxy2 != null && groupComponentProxy2._groupComponent == groupComponent)
                        {
                            _groupComponentProxies.Remove(groupComponentProxy2);
                            UnityEngine.Object.DestroyImmediate(groupComponentProxy2.gameObject);
                            break;
                        }
                    }
                    DebugLog.Print("GroupComponent [" + groupComponent.name + "] unregistered succesfuly");
                }
                result = false;
            }
            else
            {
                DebugLog.Print("GroupComponent [" + groupComponent.name + "] failed to unregistred", DebugLevel.Error);
            }
            return(result);
        }
Esempio n. 3
0
 public void Awake()
 {
     if (_isInitialised)
     {
         return;
     }
     _instance = this;
     if (_VRAudioManager.HasVRSolutions())
     {
         FabricAudioListener fabricAudioListener = (FabricAudioListener)UnityEngine.Object.FindObjectOfType(typeof(FabricAudioListener));
         if (fabricAudioListener != null)
         {
             GameObject audioListener = _VRAudioManager.GetAudioListener();
             if (audioListener != null)
             {
                 audioListener.transform.parent = fabricAudioListener.gameObject.transform;
             }
         }
         if (_audioSourcePool == 0)
         {
             _audioSourcePool = 100;
         }
     }
     if (_audioSourcePool > 0)
     {
         if (_audioSourcePoolManager == null)
         {
             _audioSourcePoolManager = base.gameObject.GetComponentInChildren <AudioSourcePool>();
             if (_audioSourcePoolManager == null)
             {
                 _audioSourcePoolManager = AudioSourcePool.Create();
             }
             _audioSourcePoolManager.Initialise(_audioSourcePool, _audioSourcePoolFadeInTime, _audioSourcePoolFadeOutTime);
         }
         if (_audioSourcePoolManager != null)
         {
             _audioSourcePoolManager.Refresh();
         }
     }
     InitialiseComponents();
     RefreshComponents();
     if (_dontDestroyOnLoad)
     {
         if (Application.isPlaying)
         {
             UnityEngine.Object.DontDestroyOnLoad(base.gameObject);
         }
         DebugLog.Print("FabricManager initialised (DontDestroyOnLoad flag enabled)");
     }
     else
     {
         DebugLog.Print("FabricManager initialised (DontDestroyOnLoad flag disabled)");
     }
     if (Application.isEditor)
     {
         CodeProfiler.enabled = true;
         FabricManager[] array = UnityEngine.Object.FindObjectsOfType(typeof(FabricManager)) as FabricManager[];
         if (array.Length > 1)
         {
             DebugLog.Print("More than two FabricManager instances available!!!", DebugLevel.Error);
         }
     }
     for (int i = 0; i < _musicTimeSignatures.Count; i++)
     {
         _musicTimeSignatures[i].Init();
     }
     _isInitialised = true;
 }