예제 #1
0
        public PureDataMultipleItem GetPureDataRandomItem(PureDataContainer container, List <int> childrenIds, object source)
        {
            PureDataMultipleItem        randomAudioItem = new PureDataMultipleItem(container.Name, pureData);
            List <PureDataSubContainer> childcontainers = new List <PureDataSubContainer>();
            List <float> weights = new List <float>();

            for (int i = 0; i < childrenIds.Count; i++)
            {
                PureDataSubContainer childContainer = container.GetSubContainerWithID(childrenIds[i]);
                if (childContainer != null)
                {
                    childcontainers.Add(childContainer);
                    weights.Add(childContainer.weight);
                }
            }

            PureDataSubContainer randomChildContainer = HelperFunctions.WeightedRandom(childcontainers, weights);

            if (randomAudioItem != null)
            {
                PureDataItem childAudioItem = GetSubContainerAudioItem(container, randomChildContainer, source);
                if (childAudioItem != null)
                {
                    randomAudioItem.AddItem(childAudioItem);
                }
            }

            return(randomAudioItem);
        }
예제 #2
0
        public PureDataMultipleItem GetPureDataSwitchItem(PureDataContainer container, List <int> childrenIds, object source)
        {
            PureDataMultipleItem switchAudioItem = new PureDataMultipleItem(container.Name, pureData);
            int stateIndex = int.MinValue;

            PureDataSubContainer[] childrenSubContainers = container.IdsToSubContainers(childrenIds);

            if (childrenSubContainers[0].parentId == 0)
            {
                stateIndex = container.switchSettings.GetCurrentStateIndex();
            }
            else
            {
                PureDataSubContainer parentSubContainer = container.GetSubContainerWithID(childrenSubContainers[0].parentId);
                stateIndex = parentSubContainer.switchSettings.GetCurrentStateIndex();
            }

            if (stateIndex != int.MinValue)
            {
                foreach (PureDataSubContainer childSubContainer in childrenSubContainers)
                {
                    if (childSubContainer.switchSettings.stateIndex == stateIndex)
                    {
                        PureDataItem childAudioItem = GetSubContainerAudioItem(container, childSubContainer, source);

                        if (childAudioItem != null)
                        {
                            switchAudioItem.AddItem(childAudioItem);
                        }
                    }
                }
            }

            return(switchAudioItem);
        }
예제 #3
0
        public void Remove(PureDataContainer container)
        {
            if (parentId == 0)
            {
                container.childrenIds.Remove(id);
            }
            else
            {
                PureDataSubContainer parent = container.GetSubContainerWithID(parentId);
                if (parent != null)
                {
                    parent.childrenIds.Remove(id);
                }
            }

            if (container.subContainers.Contains(this))
            {
                container.subContainers.Remove(this);
            }

            foreach (int childrenId in childrenIds.ToArray())
            {
                container.GetSubContainerWithID(childrenId).Remove(container);
            }
        }
예제 #4
0
        void OnAudioSourceCleared(object data)
        {
            PureDataSubContainer subContainer = data as PureDataSubContainer;

            subContainer.Setup    = null;
            subContainer.infoName = "";
            containerManagerSerialized.Update();
        }
		public PureDataSourceItem GetSourceItem(PureDataSubContainer subContainer, object source) {
			PureDataSourceItem sourceAudioItem = null;
			
			switch (subContainer.type) {
				default:
					sourceAudioItem = GetSourceItem(subContainer.infoName, source);
					sourceAudioItem.ApplyOptions(subContainer.options);
					break;
			}
			return sourceAudioItem;
		}
예제 #6
0
        public PureDataSingleItem GetPureDataSourceItem(PureDataSubContainer subContainer, object source)
        {
            PureDataSingleItem sourceAudioItem = null;

            switch (subContainer.type)
            {
            default:
                sourceAudioItem = GetPureDataSingleItem(subContainer.infoName, source);
                sourceAudioItem.ApplyOptions(subContainer.options);
                break;
            }
            return(sourceAudioItem);
        }
예제 #7
0
        public PureDataSubContainer[] IdsToSubContainers(List <int> ids)
        {
            List <PureDataSubContainer> childrenSubContainers = new List <PureDataSubContainer>();

            for (int i = 0; i < ids.Count; i++)
            {
                PureDataSubContainer childSubContainer = GetSubContainerWithID(ids[i]);
                if (childSubContainer != null)
                {
                    childrenSubContainers.Add(childSubContainer);
                }
            }
            return(childrenSubContainers.ToArray());
        }
예제 #8
0
        public PureDataItem GetSubContainerAudioItem(PureDataContainer container, PureDataSubContainer subContainer, object source)
        {
            PureDataItem item = null;

            if (subContainer.IsSource)
            {
                item = GetPureDataSourceItem(subContainer, source);
            }
            else
            {
                item = GetPureDataContainerItem(container, subContainer, source);
            }
            return(item);
        }
예제 #9
0
        PureDataSubContainer.Types GetParentContainerType(PureDataSubContainer subContainer, PureDataContainer container)
        {
            PureDataSubContainer.Types type = PureDataSubContainer.Types.AudioSource;

            if (subContainer.parentId != 0)
            {
                type = container.GetSubContainerWithID(subContainer.parentId).type;
            }
            else
            {
                type = container.type.ConvertByName <PureDataSubContainer.Types>();
            }

            return(type);
        }
		public PureDataContainerItemInternal GetContainerItem(PureDataContainer container, PureDataSubContainer subContainer, object source) {
			PureDataContainerItemInternal multipleAudioItem = null;
			
			switch (subContainer.type) {
				case PureDataSubContainer.Types.RandomContainer:
					multipleAudioItem = GetRandomItem(container, subContainer.childrenIds, source);
					break;
				case PureDataSubContainer.Types.SwitchContainer:
					multipleAudioItem = GetSwitchItem(container, subContainer.childrenIds, source);
					break;
				default:
					multipleAudioItem = GetMixItem(container, subContainer.childrenIds, source);
					break;
			}
			return multipleAudioItem;
		}
		public PureDataSubContainer(PureDataContainer container, int parentId, PureDataSubContainer subContainer, PureData pureData) {
			this.Copy(subContainer, "id", "parentId", "childrenIds");
			
			this.name = container.Name;
			this.id = container.GetUniqueID();
			this.parentId = parentId;
			this.pureData = pureData;
			
			switchSettings = new PureDataSwitchSettings(pureData);
			
			if (parentId == 0) {
				container.childrenIds.Add(id);
			}
			else {
				container.GetSubContainerWithID(parentId).childrenIds.Add(id);
			}
		}
예제 #12
0
        void ShowSubContainers(List <int> ids)
        {
            for (int i = 0; i < ids.Count; i++)
            {
                currentSubContainer         = currentContainer.GetSubContainerWithID(ids[i]);
                currentSubContainerIndex    = currentContainer.subContainers.IndexOf(currentSubContainer);
                currentSubContainerProperty = subContainersProperty.GetArrayElementAtIndex(currentSubContainerIndex);

                if (DeleteFoldOut <PureDataSetup>(subContainersProperty, currentSubContainerIndex, currentSubContainer.Name.ToGUIContent(), GetContainerStyle(currentSubContainer.type), OnSubContainerDropped, OnSubContainerReorder))
                {
                    currentSubContainer.Remove(currentContainer);
                    break;
                }

                ShowSubContainer();
            }
        }
예제 #13
0
        void AdjustName(string prefix, PureDataSubContainer subContainer, PureDataContainer container)
        {
            subContainer.Name = prefix;

            if (subContainer.IsContainer)
            {
                subContainer.Name += string.Format(" ({0})", subContainer.childrenIds.Count);
            }

            if (GetParentContainerType(subContainer, container) == PureDataSubContainer.Types.RandomContainer)
            {
                subContainer.Name += " | Weight: " + subContainer.weight;
            }
            else if (GetParentContainerType(subContainer, container) == PureDataSubContainer.Types.SwitchContainer)
            {
                subContainer.Name += " | State: " + subContainer.switchSettings.stateName;
            }
        }
예제 #14
0
        public PureDataSubContainer GetSubContainerWithID(int id)
        {
            if (!pureData.generalSettings.applicationPlaying && !IdDict.ContainsKey(id))
            {
                return(null);
            }

            PureDataSubContainer subContainer = null;

            try {
                subContainer = IdDict[id];
            }
            catch {
                Logger.LogError(string.Format("SubContainer with id {0} was not found.", id));
            }

            return(subContainer);
        }
예제 #15
0
        public PureDataSubContainer(PureDataContainer container, int parentId, PureDataSubContainer subContainer, PureData pureData)
        {
            this.Copy(subContainer, "id", "parentId", "childrenIds");

            this.name     = container.Name;
            this.id       = container.GetUniqueID();
            this.parentId = parentId;
            this.pureData = pureData;

            switchSettings = new PureDataSwitchSettings(pureData);

            if (parentId == 0)
            {
                container.childrenIds.Add(id);
            }
            else
            {
                container.GetSubContainerWithID(parentId).childrenIds.Add(id);
            }
        }
예제 #16
0
        void OnSubContainerReorder(SerializedProperty arrayProperty, int sourceIndex, int targetIndex)
        {
            PureDataSubContainer sourceSubContainer = currentContainer.subContainers[sourceIndex];
            PureDataSubContainer targetSubContainer = currentContainer.subContainers[targetIndex];
            List <int>           sourceParentIds    = sourceSubContainer.parentId == 0 ? currentContainer.childrenIds : currentContainer.GetSubContainerWithID(sourceSubContainer.parentId).childrenIds;
            List <int>           targetParentIds    = targetSubContainer.parentId == 0 ? currentContainer.childrenIds : currentContainer.GetSubContainerWithID(targetSubContainer.parentId).childrenIds;

            if (sourceParentIds == targetParentIds)
            {
                int sourceSubContainerIndex = sourceParentIds.IndexOf(sourceSubContainer.id);
                int targetSubContainerIndex = targetParentIds.IndexOf(targetSubContainer.id);
                sourceParentIds.Move(sourceSubContainerIndex, targetSubContainerIndex);
            }
            else
            {
                int targetSubContainerIndex = targetParentIds.IndexOf(targetSubContainer.id);
                targetParentIds.Insert(targetSubContainerIndex, sourceSubContainer.id);
                sourceParentIds.Remove(sourceSubContainer.id);
                sourceSubContainer.parentId = targetSubContainer.parentId;
            }
            containerManagerSerialized.Update();
        }
		public PureDataSourceOrContainerItem GetSubContainerItem(PureDataContainer container, PureDataSubContainer subContainer, object source) {
			PureDataSourceOrContainerItem item = null;
			
			if (subContainer.IsSource) {
				item = GetSourceItem(subContainer, source);
			}
			else {
				item = GetContainerItem(container, subContainer, source);
			}
			return item;
		}
예제 #18
0
        public PureDataMultipleItem GetPureDataContainerItem(PureDataContainer container, PureDataSubContainer subContainer, object source)
        {
            PureDataMultipleItem multipleAudioItem = null;

            switch (subContainer.type)
            {
            case PureDataSubContainer.Types.RandomContainer:
                multipleAudioItem = GetPureDataRandomItem(container, subContainer.childrenIds, source);
                break;

            case PureDataSubContainer.Types.SwitchContainer:
                multipleAudioItem = GetPureDataSwitchItem(container, subContainer.childrenIds, source);
                break;

            default:
                multipleAudioItem = GetPureDataMixItem(container, subContainer.childrenIds, source);
                break;
            }
            return(multipleAudioItem);
        }
예제 #19
0
		void ShowSubContainers(List<int> ids) {
			for (int i = 0; i < ids.Count; i++) {
				currentSubContainer = currentContainer.GetSubContainerWithID(ids[i]);
				currentSubContainerIndex = currentContainer.subContainers.IndexOf(currentSubContainer);
				currentSubContainerProperty = subContainersProperty.GetArrayElementAtIndex(currentSubContainerIndex);
		
				if (DeleteFoldOut<PureDataSetup>(subContainersProperty, currentSubContainerIndex, currentSubContainer.Name.ToGUIContent(), GetContainerStyle(currentSubContainer.type), OnSubContainerDropped, OnSubContainerReorder)) {
					currentSubContainer.Remove(currentContainer);
					break;
				}
		
				ShowSubContainer();
			}
		}
예제 #20
0
		void AdjustName(string prefix, PureDataSubContainer subContainer, PureDataContainer container) {
			subContainer.Name = prefix;
		
			if (subContainer.IsContainer) {
				subContainer.Name += string.Format(" ({0})", subContainer.childrenIds.Count);
			}
		
			if (GetParentContainerType(subContainer, container) == PureDataSubContainer.Types.RandomContainer) {
				subContainer.Name += " | Weight: " + subContainer.weight;
			}
			else if (GetParentContainerType(subContainer, container) == PureDataSubContainer.Types.SwitchContainer) {
				subContainer.Name += " | State: " + subContainer.switchSettings.stateName;
			}
		}
예제 #21
0
		PureDataSubContainer.Types GetParentContainerType(PureDataSubContainer subContainer, PureDataContainer container) {
			PureDataSubContainer.Types type = PureDataSubContainer.Types.AudioSource;
		
			if (subContainer.parentId != 0) {
				type = container.GetSubContainerWithID(subContainer.parentId).type;
			}
			else {
				type = container.type.ConvertByName<PureDataSubContainer.Types>();
			}
		
			return type;
		}
예제 #22
0
		GUIStyle GetContainerStyle(PureDataSubContainer.Types type) {
			GUIStyle style = new GUIStyle("foldout");
			style.fontStyle = FontStyle.Bold;
			Color textColor = style.normal.textColor;
		
			switch (type) {
				case PureDataSubContainer.Types.AudioSource:
					textColor = new Color(1, 0.5F, 0.3F, 10);
					break;
				case PureDataSubContainer.Types.MixContainer:
					textColor = new Color(0, 1, 1, 10);
					break;
				case PureDataSubContainer.Types.RandomContainer:
					textColor = new Color(1, 1, 0, 10);
					break;
				case PureDataSubContainer.Types.SwitchContainer:
					textColor = new Color(0.5F, 1, 0.3F, 10);
					break;
			}
		
			style.normal.textColor = textColor * 0.7F;
			style.onNormal.textColor = textColor * 0.7F;
			style.focused.textColor = textColor * 0.85F;
			style.onFocused.textColor = textColor * 0.85F;
			style.active.textColor = textColor * 0.85F;
			style.onActive.textColor = textColor * 0.85F;
		
			return style;
		}