Exemplo n.º 1
0
    private void ProcessTargetClick()
    {
        switch (PreviousEditorMode)
        {
        case EditorModes.Move: {
            if (!_selectedObject)
            {
                break;
            }
            _grid.MoveCube(_selectedObject.transform.position, _markerPosition);
            break;
        }

        case EditorModes.Connect: {
            BoxClasses.BaseBox component = _selectedObject.GetComponentInChildren <BoxClasses.BaseBox>();
            if (component.CanBeConnected())
            {
                GameObject targetObject = _grid.GetCubeAt(_markerPosition);
                component.ConnectTo(targetObject);
            }
            break;
        }
        }

        EditorMode = PreviousEditorMode;
    }
Exemplo n.º 2
0
    public static CubeGrid ToGrid(string path)
    {
        CubeGridXML XMLObject = LoadFromFile(path);
        CubeGrid    _grid     = ScriptableObject.CreateInstance <CubeGrid>();

        _grid.m_CubeLibrary = AssetDatabase.LoadAssetAtPath(XMLObject.CubeLibraryPath, typeof(CubeLibrary)) as CubeLibrary;
        _grid.gridSize      = XMLObject.CubeSize;

        CubeLibrary _lib = _grid.m_CubeLibrary;

        KeyValuePair <string, GameObject>[] LibraryList = _lib.GetObjectsAndGuids();
        List <StructNeedTarget>             NeedTarget  = new List <StructNeedTarget>();


        foreach (SerializableXMLElement iterator in XMLObject.Elements)
        {
            GameObject NewCube = null;
            string     NewGuid = "";
            int        index   = 0;
            foreach (KeyValuePair <string, GameObject> _pairiterator in LibraryList)
            {
                if (_pairiterator.Key == iterator._guid)
                {
                    NewCube = _lib.GetGameObjectByIndex(index);
                    NewGuid = iterator._guid;
                    break;
                }
                index++;
            }

            GameObject CreatedCube = null;
            if (NewCube == null)
            {
                continue;
            }

            _grid.currentPrefab     = NewCube;
            _grid.currentPrefabGuid = NewGuid;
            _grid.CreateCubeAt(iterator._position.V3, out CreatedCube);

            CreatedCube.transform.forward = iterator._forward.V3;
            CreatedCube.transform.up      = iterator._up.V3;
            CreatedCube.transform.right   = iterator._right.V3;

            if (iterator._usetarget)
            {
                StructNeedTarget CurrentTarget = new StructNeedTarget();
                CurrentTarget.SetArgs(CreatedCube, iterator._target.V3);
                NeedTarget.Add(CurrentTarget);
            }
        }

        // пройдемся и проставим таргет по позиции
        foreach (StructNeedTarget targetObj in NeedTarget.ToArray())
        {
            targetObj.comp.SetTarget(_grid.GetCubeAt(targetObj.targetPos));
        }

        return(_grid);
    }