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; }
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); }