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