private void doKeyDir(int dir, bool needDraw) { if (_selectData != null && _selectData is GSceneElementEditorData) { GSceneElementEditorData currentSelect = (GSceneElementEditorData)_selectData; int x = currentSelect.component.x; int z = currentSelect.component.z; int nx = x; int nz = z; switch (dir) { case 0: { nx = x + 1; } break; case 1: { nz = z + 1; } break; case 2: { nx = x - 1; } break; case 3: { nz = z - 1; } break; } int xNum = _gridShows.GetLength(0); int zNum = _gridShows.GetLength(1); if (nx >= 0 && nx < xNum && nz >= 0 && nz < zNum) { GSceneElementEditorData nData = _gridShows[nx, nz]; selectElement(nData); if (needDraw) { doGridChange(nData, currentSelect.component.type); } } } }
private void doGridChange(GSceneElementEditorData eData, int type) { if (eData.childObj != null) { GameObject.DestroyImmediate(eData.childObj); } GameObject go = createGridShow(type); if (go != null) { go.transform.SetParent(eData.gameObject.transform); go.transform.localPosition = Vector3.zero; eData.childObj = go; } //赋值 _grids[eData.component.x, eData.component.z] = (byte)type; eData.component.type = type; _lastType = type; }
private void makeGridShow(int x, int z, int v) { GameObject grid = GameObject.Instantiate(_gridAsset); grid.transform.SetParent(_wallLayer.transform); Vector3 vec = grid.transform.position; vec.y = 0.01f; setVectorByGrid(ref vec, x, z); grid.transform.position = vec; GGridComponent component = grid.GetComponent <GGridComponent>(); component.setChangeFunc(onGridChanged); component.x = x; component.z = z; component.type = v; GSceneElementEditorData eData = new GSceneElementEditorData(); eData.component = component; eData.gameObject = grid; eData.canPick = false; _gridShows[x, z] = eData; _gridShowsDicByObj.put(grid, eData); GameObject go = createGridShow(v); if (go != null) { go.transform.SetParent(grid.transform); go.transform.localPosition = Vector3.zero; eData.childObj = go; } }
public void onGridChanged(GGridComponent component) { GSceneElementEditorData eData = _gridShows[component.x, component.z]; doGridChange(eData, component.type); }