public void ChangeCurrentDrawGeoType(GeoTypes geoType) { CurrentDrawGeoType = geoType; foreach (KeyValuePair <GeoTypes, GeoButton> kv in GeoButtons) { kv.Value.IsSelected = geoType == kv.Key; } EditArea.MyState = EditArea.States.Draw; }
void Start() { foreach (string s in Enum.GetNames(typeof(GeoTypes))) { GeoTypes gt = (GeoTypes)Enum.Parse(typeof(GeoTypes), s); GeoButton geoButton = GameObjectPoolManager.Instance.PoolDict[GameObjectPoolManager.PrefabNames.GeoButton].AllocateGameObject <GeoButton>(TopMenu); geoButton.Initialize(gt, ChangeCurrentDrawGeoType); GeoButtons.Add(gt, geoButton); } }
public void Initialize(GeoTypes geoType, UnityAction <GeoTypes> clickAction) { MyGeoType = geoType; Image.sprite = GeoManager.Instance.DefaultGeoSprites[(int)MyGeoType]; DescText.text = Geo.GeoDescDict[geoType]; if (clickAction != null) { Button.onClick.AddListener(delegate { clickAction(geoType); }); } }
public void Initialize(GeoTypes geoTypes, Vector2 size, Color color, int sortingOrder = -1) { geoType = geoTypes; SpriteRenderer.sprite = GeoManager.Instance.DrawGeoSprites[(int)geoTypes]; BorderSR.sprite = GeoManager.Instance.DrawGeoBorderSprites[(int)geoTypes]; SpriteRenderer.size = size; BorderSR.size = size; Collider.size = size; SpriteRenderer.color = color; if (sortingOrder != -1) { SpriteRenderer.sortingOrder = sortingOrder; BorderSR.sortingOrder = sortingOrder + 1; } }
public void OnMouseLeftDrag() { Vector2 startPos = MouseLeftDownPos; endPos = Camera.main.ScreenToWorldPoint(Input.mousePosition); switch (MyState) { case States.None: { break; } case States.Select: { if (StartDragMove) { if (CurrentEditGeoElement != null) { CurrentEditGeoElement.transform.Translate(endPos.x - lastMousePos.x, endPos.y - lastMousePos.y, 0, Space.World); } } break; } case States.Draw: { break; } case States.DuringDrawing: { GeoTypes gt = UIManager.Instance.GetBaseUIForm <CreatureEditorPanel>().CurrentDrawGeoType; GeoManager.GeoDrawingSetting gds = GeoManager.Instance.GeoDrawingSettingsDict[gt]; Color c = UIManager.Instance.GetBaseUIForm <CreatureEditorPanel>().GetCurrentColor(); if (CurrentEditGeoElement == null) { CurrentEditGeoElement = GameObjectPoolManager.Instance.PoolDict[GameObjectPoolManager.PrefabNames.GeoElement].AllocateGameObject <GeoElement>(transform); CurrentEditGeoElement.transform.position = startPos; CurrentEditGeoElement.transform.localRotation = Quaternion.AngleAxis(gds.DefaultRotation, Vector3.back); float size = (endPos - startPos).magnitude * gds.SizeRatio; SortingOrder += 2; CurrentEditGeoElement.Initialize(gt, Vector2.one * size, c, SortingOrder); GeoElements.Add(CurrentEditGeoElement); break; } else { float rotateAngle = Vector2.SignedAngle(endPos - startPos, Vector2.right) + gds.DefaultRotation; CurrentEditGeoElement.transform.localRotation = Quaternion.AngleAxis(rotateAngle, Vector3.back); float size = (endPos - startPos).magnitude * gds.SizeRatio; CurrentEditGeoElement.Initialize(gt, Vector2.one * size, c, SortingOrder); Vector2 rotatedOffset = new Vector2(gds.PivotOffset.x * Mathf.Cos(Mathf.Deg2Rad * rotateAngle) + gds.PivotOffset.y * Mathf.Sin(Mathf.Deg2Rad * rotateAngle), -gds.PivotOffset.x * Mathf.Sin(Mathf.Deg2Rad * rotateAngle) + gds.PivotOffset.y * Mathf.Cos(Mathf.Deg2Rad * rotateAngle)); Vector2 pivotPos = startPos + rotatedOffset * size / GameManager.Instance.ScaleFactor / GameManager.Instance.ScaleFactor; CurrentEditGeoElement.transform.position = pivotPos; break; } } case States.Delete: { break; } } lastMousePos = endPos; }