public void SliceToRemove(PiUI.PiData sliceToRemove) { if (!slicesToRemove.Contains(sliceToRemove)) { slicesToRemove.Add(sliceToRemove); } }
private void SpawnNewPoi(PiUI.PiData poiNoteData, bool isRandom) { if (!isRandom) { if (!isPoiMenuOpen) { return; } poiNoteMenu.CloseMenu(); isPoiMenuOpen = false; } else { if (Random.value > 0.5f) { nextPoiSize = PoiSizeType.BigPoi; } else { nextPoiSize = PoiSizeType.SmolPoi; } float personalityChance = Random.value; if (Random.value < 0.3f) { nextPoiPersonality = PoiPersonalityType.ShiPoi; } else if (Random.value < 0.6f) { nextPoiPersonality = PoiPersonalityType.NormiPoi; } else { nextPoiPersonality = PoiPersonalityType.FabPoi; } int randomNoteIndex = (int)Random.Range(0, poiNoteMenu.piData.Length - 0.5f); poiNoteData = poiNoteMenu.piData[randomNoteIndex]; } nextPoiNote = poiNoteData.order; nextPoiColor = poiNoteData.highlightedColor; poofEffectParticle.Play(); spawnPoint.GetComponent <AudioSource>().Play(); GameObject newPoi = Instantiate(poiPrefab, spawnPoint.position, Quaternion.identity); newPoi.GetComponent <PoiController>().SetPoiProperties(nextPoiSize, nextPoiNote, nextPoiColor, nextPoiPersonality); }
public void SetData(PiUI.PiData piData, float iR, float oR, PiUI creator) { parent = creator; if (!thisImg || !sliceIcon || !sliceLabel) { thisImg = GetComponent <Image>( ); sliceIcon = transform.GetChild(0).GetComponent <Image>( ); sliceLabel = GetComponentInChildren <Text>( ); } innerRadius = iR; outerRadius = oR; normalColor = piData.nonHighlightedColor; highlightColor = piData.highlightedColor; disabledColor = piData.disabledColor; clickEvent = piData.onSlicePressed; //new id = piData.id; onClickMenu = piData.onClickMenu; if (parent.fade) { thisImg.color = Color.clear; } maxAngle = transform.rotation.eulerAngles.z; minAngle = transform.rotation.eulerAngles.z - (thisImg.fillAmount * 360); if (transform.rotation.eulerAngles.z == 359f || transform.rotation.eulerAngles.z == 0) { transform.rotation = Quaternion.identity; maxAngle = 359f; minAngle = 359f - (thisImg.fillAmount * 360); } sliceIcon.rectTransform.sizeDelta = new Vector2(piData.iconSize, piData.iconSize); sliceLabel.text = piData.sliceLabel; sliceIcon.sprite = piData.icon; sliceIcon.transform.position = Center( ); sliceLabel.transform.position = Center( ) - new Vector2(0, sliceIcon.rectTransform.sizeDelta.y + parent.textVerticalOffset) * parent.scaleModifier * transform.localScale.magnitude; isInteractable = piData.isInteractable; onHoverEvents = piData.hoverFunctions; if (onHoverEvents) { onHoverEnter = piData.onHoverEnter; onHoverExit = piData.onHoverExit; } }
private void EditPoiMenus() { // Poi Personality Menu poiPersonalityMenu.openTransition = PiUI.TransitionType.ScaleAndFan; poiPersonalityMenu.closeTransition = PiUI.TransitionType.ScaleAndFan; foreach (PiUI.PiData poiPersonalityData in poiPersonalityMenu.piData) { poiPersonalityData.onSlicePressed.AddListener(delegate { ShowPoiSizeMenu(poiPersonalityData); }); } // Poi Size Menu poiSizeMenu.openTransition = PiUI.TransitionType.ScaleAndFan; poiSizeMenu.closeTransition = PiUI.TransitionType.ScaleAndFan; foreach (PiUI.PiData poiSizeData in poiSizeMenu.piData) { poiSizeData.onSlicePressed.AddListener(delegate { ShowPoiNoteMenu(poiSizeData); }); } // Poi Note Menu poiNoteMenu.openTransition = PiUI.TransitionType.ScaleAndFan; poiNoteMenu.closeTransition = PiUI.TransitionType.ScaleAndFan; foreach (PiUI.PiData poiNoteData in poiNoteMenu.piData) { poiNoteData.onSlicePressed.AddListener(delegate { SpawnNewPoi(poiNoteData, false); }); } // Edit colors poiNoteMenu.syncColors = false; float H = 0f; float S = 0.8f; float V = 0.7f; float HIncrement = (float)1 / poiNoteMenu.piData.Length; // Color each pie based on a rainbow scheme for (int i = 0; i < poiNoteMenu.piData.Length; i++) { PiUI.PiData data = poiNoteMenu.piData[i]; poiNoteMenu.piData[i].nonHighlightedColor = Color.HSVToRGB(H % 1, S, V); poiNoteMenu.piData[i].highlightedColor = Color.HSVToRGB(H % 1, 1f, 1f); H += HIncrement; } poiNoteMenu.UpdatePiUI(); }
private void ShowPoiNoteMenu(PiUI.PiData poiSizeData) { if (!Input.GetMouseButtonDown(0)) { return; } switch (poiSizeData.sliceLabel) { case ("Big Poi"): nextPoiSize = PoiSizeType.BigPoi; break; case ("Smol Poi"): nextPoiSize = PoiSizeType.SmolPoi; break; } poiSizeMenu.CloseMenu(); poiNoteMenu.OpenMenu(new Vector2(Screen.width / 2f, Screen.height / 2f)); }
private void ShowPoiSizeMenu(PiUI.PiData poiPersonalityData) { if (!Input.GetMouseButtonDown(0)) { return; } switch (poiPersonalityData.sliceLabel) { case ("Shi Poi"): nextPoiPersonality = PoiPersonalityType.ShiPoi; break; case ("Normi Poi"): nextPoiPersonality = PoiPersonalityType.NormiPoi; break; case ("Fab Poi"): nextPoiPersonality = PoiPersonalityType.FabPoi; break; } poiPersonalityMenu.CloseMenu(); poiSizeMenu.OpenMenu(new Vector2(Screen.width / 2f, Screen.height / 2f)); }
public override void OnInspectorGUI() { if (lastAngles == null) { lastAngles = new float[myTarget.piData.Length]; } if (GUILayout.Button("Change PiCut State")) { myTarget.piCut.gameObject.SetActive(!myTarget.piCut.gameObject.activeInHierarchy); } if (GUILayout.Button("Sync Colors")) { myTarget.SyncColor( ); } if (!myTarget.dynamicallyScaleToResolution) { if (!itemsNotToDraw.Contains("defaultResolution")) { itemsNotToDraw.Add("defaultResolution"); } } else { itemsNotToDraw.Remove("defaultResolution"); } if (!myTarget.outline) { if (!itemsNotToDraw.Contains("outlineColor")) { itemsNotToDraw.Add("outlineColor"); } } else { itemsNotToDraw.Remove("outlineColor"); } if (!myTarget.syncColors) { if (!itemsNotToDraw.Contains("syncNormal")) { itemsNotToDraw.Add("syncNormal"); } if (!itemsNotToDraw.Contains("syncSelected")) { itemsNotToDraw.Add("syncSelected"); } if (!itemsNotToDraw.Contains("syncDisabled")) { itemsNotToDraw.Add("syncDisabled"); } } else { itemsNotToDraw.Remove("syncNormal"); itemsNotToDraw.Remove("syncSelected"); itemsNotToDraw.Remove("syncDisabled"); } serializedObject.Update( ); if (itemsNotToDraw.Count == 0) { EditorUtility.SetDirty(myTarget); } else { DrawPropertiesExcluding(serializedObject, itemsNotToDraw.ToArray( )); EditorUtility.SetDirty(myTarget); } serializedObject.ApplyModifiedProperties( ); serializedObject.Update( ); myTarget.piData = myTarget.piData.ToList( ).OrderBy(x => x.order).ToArray( ); var sprop = serializedObject.FindProperty("piData"); for (var i = 0; i < myTarget.piData.Length; i++) { if (!slicesToRemove.Contains(myTarget.piData[i])) { myTarget.piData[i].OnInspectorGUI(sprop.GetArrayElementAtIndex(i), myTarget, addSlice, removeSlice, angleUpdate); } if (i < myTarget.piData.Length - 1) { GUILayout.Space(10); } } if (myTarget.piData.Length < 1) { myTarget.piData = new PiUI.PiData[1]; } myTarget.sliceCount = myTarget.piData.Length; if (slicesToAdd > 0) { Undo.RecordObject(myTarget, "Add Slice"); PiUI.PiData[] tempArray = new PiUI.PiData[myTarget.piData.Length + slicesToAdd]; for (int i = myTarget.piData.Length; i < tempArray.Length; i++) { tempArray[i] = new PiUI.PiData( ); tempArray[i].SetValues(myTarget.piData[myTarget.piData.Length - 1]); tempArray[i].order = i; } for (int j = 0; j < myTarget.piData.Length; j++) { tempArray[j] = myTarget.piData[j]; } slicesToAdd = 0; myTarget.piData = tempArray; } else if (slicesToRemove.Count > 0 && myTarget.piData.Length > 1) { Undo.RecordObject(myTarget, "Removed Slice"); PiUI.PiData[] tempArray = new PiUI.PiData[myTarget.piData.Length - slicesToRemove.Count]; int addedSlices = 0; for (int i = 0; i < myTarget.piData.Length; i++) { if (!slicesToRemove.Contains(myTarget.piData[i])) { tempArray[addedSlices] = myTarget.piData[i]; tempArray[addedSlices].order = addedSlices; addedSlices++; } } myTarget.piData = tempArray; slicesToRemove = new List <PiUI.PiData>( ); } serializedObject.ApplyModifiedProperties( ); if (SumOfAngles() > 360) { for (int i = 0; i < myTarget.piData.Length; i++) { AngleUpdate(i); } } if (SumOfAngles() < 360) { myTarget.piData[myTarget.piData.Length - 1].angle = 360 - SumOfAngles( ); } /* * if (myTarget.piData.Length != myTarget.sliceCount) * { * if (myTarget.piData.Length < myTarget.sliceCount) * { * PiUI.PiData[] temp = new PiUI.PiData[myTarget.sliceCount]; * for (int j = 0; j < myTarget.piData.Length; ++) * { * PiUI.PiData instance = myTarget.piData[i]; * temp[i] = instance; * } * PiUI.PiData duplicateValue = myTarget.piData[myTarget.piData.Length - 1]; * for (int j = myTarget.piData.Length - 1; j < myTarget.sliceCount; j++) * { * PiUI.PiData instance = new PiUI.PiData( ); * if (duplicateValue != null) * instance.SetValues(duplicateValue); * temp[j] = instance; * } * myTarget.piData = temp; * } * else if (myTarget.piData.Length > myTarget.sliceCount) * { * PiUI.PiData[] temp = new PiUI.PiData[myTarget.sliceCount]; * for (int i = 0; i < myTarget.sliceCount; i++) * { * PiUI.PiData instance = myTarget.piData[i]; * temp[i] = instance; * } * myTarget.piData = temp; * } * lastAngles = new float[myTarget.piData.Length]; * } * float sumOfAngles = 0; * for (int i = 0; i < myTarget.piData.Length; i++) * { * if (myTarget.piData[i].angle == 0 || myTarget.piData[i].angle < 20) * { * myTarget.piData[i].angle = 360 / myTarget.sliceCount; * } * sumOfAngles += myTarget.piData[i].angle; * // lastAngles[i] = myTarget.piData[i].angle; * } */ }