Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System.Collections;
- using System.Collections.Generic;
- using Sirenix.OdinInspector;
- using UnityEngine;
- public class RadialMenu : SerializedMonoBehaviour
- {
- public int amountOfItems = 3;
- public Vector2 outlineSize;
- List<RadialMenuElement> radialElements;
- public RadialMenuElement prefab;
- [Range(0,30)]
- public float elementOffset;
- [Button("Create New Radial Menu")]
- public void CreateNewRadial()
- {
- DestroyElements();
- radialElements = new List<RadialMenuElement>();
- float anglePerElement = 360f/amountOfItems;
- for (int i = 0; i < amountOfItems; i++)
- {
- float angle = anglePerElement / 2 + i * anglePerElement;
- Vector3 direction = Quaternion.Euler(0, 0, angle - anglePerElement/2) * Vector3.down;
- RadialMenuElement newElement = InstantiateNewElement(angle, direction,anglePerElement);
- radialElements.Add(newElement);
- }
- }
- void DestroyElements()
- {
- RadialMenuElement[] radialChildElements = GetComponentsInChildren<RadialMenuElement>();
- if (radialChildElements != null)
- {
- foreach (RadialMenuElement radialMenuElement in radialChildElements)
- {
- //todo need to change to regular destroy on deployment
- Destroy(radialMenuElement.gameObject);
- }
- radialElements = null;
- }
- }
- public RadialMenuElement InstantiateNewElement(float zRot, Vector3 direction, float fillAmount)
- {
- RadialMenuElement newElement = Instantiate(prefab);
- newElement.transform.SetParent(transform);
- newElement.StartElement(outlineSize,zRot,transform.position + direction*elementOffset,fillAmount);
- return newElement;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement