Esempio n. 1
0
 public void snap(bool onlyTiles)
 {
     _selection = Selection.transforms;
     try {
         for (int i = 0; i < Selection.transforms.Length; i++)
         {
             TileToolTile TTT = (TileToolTile)_selection[i].GetComponent(typeof(TileToolTile));
             if (onlyTiles && (TTT != null) || !onlyTiles)
             {
                 if (!onlyTiles)
                 {
                     Undo.RecordObjects(_selection, "TileTool: Snapping");
                 }
                 Vector3 t = Selection.transforms[i].transform.position;
                 t.x = round(t.x);
                 t.y = round(t.y);
                 t.z = round(t.z);
                 Selection.transforms[i].transform.position = t;
             }
         }
         prevPosition = Selection.transforms[0].position;
     } catch (System.Exception e) {
         Debug.LogError("Nothing to move.  " + e);
     }
 }
Esempio n. 2
0
    public void AutoRemoveSidesInit(GameObject gameObj)
    {
        TileToolTile TTT = gameObj.GetComponent <TileToolTile>();

        if (TTT != null)
        {
            TTT.Init();
        }
    }
Esempio n. 3
0
 public void ResetTilePositionBuffers()
 {
     rTile = null;
     lTile = null;
     fTile = null;
     bTile = null;
     uTile = null;
     dTile = null;
 }
Esempio n. 4
0
    public void ManualRemoveSide(Transform t, string side)
    {
        TileToolTile TTT = (TileToolTile)t.GetComponent(typeof(TileToolTile));

        if (TTT != null)
        {
            Undo.RegisterCompleteObjectUndo(t.gameObject, "TileTool: Manual Remove Side " + side);
            TTT.RemoveSide((MeshFilter)t.Find("Model").GetComponent(typeof(MeshFilter)), side, t.gameObject);
        }
    }
Esempio n. 5
0
    public void AutoRemoveSides(GameObject gameObj)
    {
        TileToolTile TTT = gameObj.GetComponent <TileToolTile>();

        if (TTT != null)
        {
            Undo.RegisterCompleteObjectUndo(gameObj, "TileTool: Auto Remove Side");
            TTT.DetectTiles();
        }
    }
Esempio n. 6
0
 public void Move(Vector3 dir, bool dupe)
 {
     if (Selection.transforms.Length > 0)
     {
         TileToolGroup TTG = (TileToolGroup)Selection.activeTransform.GetComponent(typeof(TileToolGroup));
         if (TTG != null)
         {
             Transform[] glist = null;
             glist = new Transform[Selection.activeTransform.childCount];
             Transform o = Selection.activeTransform;
             for (int k = 0; k < Selection.activeTransform.childCount; k++)
             {
                 glist[k] = o.GetChild(k);
             }
             _selection = glist;
         }
         else
         {
             _selection = Selection.transforms;
         }
         GameObject[] newSelection = new GameObject[_selection.Length];
         for (int i = 0; i < _selection.Length; i++)
         {
             TileToolTile TTT = (TileToolTile)_selection[i].GetComponent(typeof(TileToolTile));
             if (TTT != null)
             {
                 if (dupe)
                 {
                     UnityEngine.Object dupePrefab = PrefabUtility.GetPrefabParent(_selection[i].gameObject);
                     GameObject         dupeTarget = (GameObject)PrefabUtility.InstantiatePrefab(dupePrefab as GameObject) as GameObject;
                     dupeTarget.transform.position = _selection[i].transform.position + dir;
                     dupeTarget.transform.rotation = _selection[i].transform.rotation;
                     dupeTarget.transform.parent   = _selection[i].transform.parent;
                     newSelection[i] = dupeTarget.gameObject;
                     Undo.RegisterCreatedObjectUndo(dupeTarget.gameObject, "TileTool: Move & Duplicate");
                 }
                 else
                 {
                     Undo.RegisterCompleteObjectUndo(_selection[i].gameObject, "TileTool: Move & Duplicate");
                     _selection[i].transform.position += dir;
                 }
             }
         }
         if (dupe)
         {
             Selection.objects = newSelection;
         }
     }
 }
Esempio n. 7
0
 public void CycleGameObjects(bool next)
 {
     if (_style != null)
     {
         _selection = Selection.transforms;
         if (next)
         {
             this._tileCycleCounter++;
         }
         else
         {
             this._tileCycleCounter--;
         }
         if (_tileCycleCounter >= _style._tiles.Length)
         {
             _tileCycleCounter = 0;
         }
         else if (_tileCycleCounter < 0)
         {
             _tileCycleCounter = _style._tiles.Length - 1;
         }
         GameObject[] s = null;
         s = new GameObject[_selection.Length];
         for (int i = 0; i < _selection.Length; i++)
         {
             TileToolTile TTT = (TileToolTile)_selection[i].GetComponent(typeof(TileToolTile));
             if (TTT != null)
             {
                 GameObject newObject = (GameObject)PrefabUtility.InstantiatePrefab(_style._tiles[_tileCycleCounter]);
                 Transform  newT      = newObject.transform;
                 newT.position   = _selection[i].position;
                 newT.rotation   = _selection[i].rotation;
                 newT.localScale = _selection[i].localScale;
                 newT.parent     = _selection[i].transform.parent;
                 Undo.RegisterCreatedObjectUndo(newObject, "TileTool: Cycle Tiles");
                 Undo.DestroyObjectImmediate(_selection[i].gameObject);
                 s[i] = newObject;
             }
         }
         Selection.objects = s;
     }
     else
     {
         Debug.Log("No Style");
     }
 }
Esempio n. 8
0
    public void OnEnable()
    {
        tex = Resources.Load("TT_SideHelp") as Texture;
        TileToolTile target_cs = (TileToolTile)target;

        target_cs.FindAndSetTileValues();
        TileToolStyle TTS = target_cs.gameObject.GetComponent <TileToolStyle>();

        if (!TTS)
        {
            target_cs.gameObject.AddComponent <TileToolStyle>();
        }
        if (GUI.changed)
        {
            EditorUtility.SetDirty(target_cs);
        }
    }
Esempio n. 9
0
    public void ResetToPrefab()
    {
        if (Selection.activeTransform.GetComponent(typeof(TileToolGroup)) != null)
        {
            Transform[] glist = null;
            glist = new Transform[Selection.activeTransform.childCount];
            Transform o = Selection.activeTransform;
            for (int k = 0; k < Selection.activeTransform.childCount; k++)
            {
                glist[k] = o.GetChild(k);
            }
            _selection = glist;
        }
        else
        {
            _selection = Selection.transforms;             //Add selection to array
        }
        Undo.RecordObjects(_selection, "TileTool: Reset To Prefab");
        int sl = _selection.Length;

        if (_selection.Length > 0)
        {
            for (int i = 0; i < _selection.Length; i++)
            {
                float p = (float)i;
                EditorUtility.DisplayProgressBar("TileTool: Tile Reset", "", p / sl);
                TileToolTile TTT = (TileToolTile)_selection[i].GetComponent(typeof(TileToolTile));
                if (TTT != null)
                {
                    Undo.RegisterCompleteObjectUndo(_selection[i].gameObject, "TileTool: Prefab Reset");
                    Vector3 scale = _selection[i].localScale;
                    PrefabUtility.RevertPrefabInstance(_selection[i].gameObject);
                    _selection[i].localScale = scale;
                }
            }
        }
    }
Esempio n. 10
0
 public void DetectTiles()
 {
     ResetTilePositionBuffers();
     WorldRotationSides();
     Collider[] hitColliders = Physics.OverlapSphere(transform.position, 1.0f, TileLayer);
     for (int i = 0; i < hitColliders.Length; i++)
     {
         TileToolTile currentTR = hitColliders[i].transform.parent.GetComponent <TileToolTile>();
         if (currentTR != null)
         {
             if ((rTile == null) && currentTR.transform.position.x < transform.position.x && currentTR.transform.position.z == transform.position.z && (currentTR.transform.position.y == transform.position.y || currentTR.transform.position.y == transform.position.y - .5f && !liquid || currentTR.transform.position.y == transform.position.y + .5f && !liquid))
             {
                 rTile           = currentTR;
                 currentTR.lTile = this;
                 currentTR.WorldRotationSides();
                 if (CompareSides(rSideWorld, rTile.lSideWorld, currentTR.transform.position.y == transform.position.y))
                 {
                     RemoveSide(transform.Find("Model").GetComponent <MeshFilter>(), "right", gameObject);
                 }
             }
             else if ((lTile == null) && currentTR.transform.position.x > transform.position.x && currentTR.transform.position.z == transform.position.z && (currentTR.transform.position.y == transform.position.y || currentTR.transform.position.y == transform.position.y - .5f && !liquid || currentTR.transform.position.y == transform.position.y + .5f && !liquid))
             {
                 lTile = currentTR;
                 currentTR.WorldRotationSides();
                 if (CompareSides(lSideWorld, lTile.rSideWorld, currentTR.transform.position.y == transform.position.y))
                 {
                     RemoveSide(transform.Find("Model").GetComponent <MeshFilter>(), "left", gameObject);
                 }
             }
             else if ((uTile == null) && currentTR.transform.position.y > transform.position.y && currentTR.transform.position.x == transform.position.x && currentTR.transform.position.z == transform.position.z)
             {
                 uTile = currentTR;
                 currentTR.WorldRotationSides();
                 if (CompareSides(uSideWorld, uTile.dSideWorld, true))
                 {
                     RemoveSide(transform.Find("Model").GetComponent <MeshFilter>(), "up", gameObject);
                 }
             }
             else if ((dTile == null) && currentTR.transform.position.y < transform.position.y && currentTR.transform.position.x == transform.position.x && currentTR.transform.position.z == transform.position.z)
             {
                 dTile = currentTR;
                 currentTR.WorldRotationSides();
                 if (CompareSides(dSideWorld, dTile.uSideWorld, true))
                 {
                     RemoveSide(transform.Find("Model").GetComponent <MeshFilter>(), "down", gameObject);
                 }
             }
             else if ((fTile == null) && currentTR.transform.position.z > transform.position.z && currentTR.transform.position.x == transform.position.x && (currentTR.transform.position.y == transform.position.y || currentTR.transform.position.y == transform.position.y - .5f && !liquid || currentTR.transform.position.y == transform.position.y + .5f && !liquid))
             {
                 fTile = currentTR;
                 currentTR.WorldRotationSides();
                 if (CompareSides(fSideWorld, fTile.bSideWorld, currentTR.transform.position.y == transform.position.y))
                 {
                     RemoveSide(transform.Find("Model").GetComponent <MeshFilter>(), "front", gameObject);
                 }
             }
             else if ((bTile == null) && currentTR.transform.position.z < transform.position.z && currentTR.transform.position.x == transform.position.x && (currentTR.transform.position.y == transform.position.y || currentTR.transform.position.y == transform.position.y - .5f && !liquid || currentTR.transform.position.y == transform.position.y + .5f && !liquid))
             {
                 bTile = currentTR;
                 currentTR.WorldRotationSides();
                 if (CompareSides(bSideWorld, bTile.fSideWorld, currentTR.transform.position.y == transform.position.y))
                 {
                     RemoveSide(transform.Find("Model").GetComponent <MeshFilter>(), "back", gameObject);
                 }
             }
         }
     }
 }