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);
     }
 }
Beispiel #3
0
 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;
     }
 }
Beispiel #5
0
    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;
    }