void Update() { if (SaveAndLoad.GetInputField().isFocused) { return; } var ray = Camera.main.ScreenPointToRay(Input.mousePosition); RaycastHit hit; //Shortcuts if (Input.GetKeyDown(KeyCode.KeypadPlus) || Input.GetKeyDown(KeyCode.Plus)) { manip.NextVariation(); } if (Input.GetKeyDown(KeyCode.KeypadMinus) || Input.GetKeyDown(KeyCode.Minus)) { manip.PrevVariation(); } if (Input.GetKeyDown(KeyCode.Keypad2)) { var infos = BlockManipulator.GetSelectedInfos(); BlockManipulator.DeselectAll(); for (int i = 0; i < infos.Length; i++) { TileSpawner.SpawnFull(infos [i].Info, infos [i].transform.position + Vector3.back * 4f, infos[i].Blendshapes, infos[i].transform.rotation.eulerAngles); } } if (Input.GetKeyDown(KeyCode.Keypad8)) { var infos = BlockManipulator.GetSelectedInfos(); BlockManipulator.DeselectAll(); for (int i = 0; i < infos.Length; i++) { TileSpawner.SpawnFull(infos [i].Info, infos [i].transform.position + Vector3.forward * 4f, infos[i].Blendshapes, infos[i].transform.rotation.eulerAngles); } } if (Input.GetKeyDown(KeyCode.Keypad4)) { var infos = BlockManipulator.GetSelectedInfos(); BlockManipulator.DeselectAll(); for (int i = 0; i < infos.Length; i++) { TileSpawner.SpawnFull(infos [i].Info, infos [i].transform.position + Vector3.left * 4f, infos[i].Blendshapes, infos[i].transform.rotation.eulerAngles); } } if (Input.GetKeyDown(KeyCode.Keypad6)) { var infos = BlockManipulator.GetSelectedInfos(); BlockManipulator.DeselectAll(); for (int i = 0; i < infos.Length; i++) { TileSpawner.SpawnFull(infos [i].Info, infos [i].transform.position + Vector3.right * 4f, infos[i].Blendshapes, infos[i].transform.rotation.eulerAngles); } } if (Input.GetKeyDown(KeyCode.Keypad7)) { var infos = BlockManipulator.GetSelectedInfos(); BlockManipulator.DeselectAll(); for (int i = 0; i < infos.Length; i++) { TileSpawner.SpawnFull(infos [i].Info, infos [i].transform.position + Vector3.down * 4f, infos[i].Blendshapes, infos[i].transform.rotation.eulerAngles); } } if (Input.GetKeyDown(KeyCode.Keypad9)) { var infos = BlockManipulator.GetSelectedInfos(); BlockManipulator.DeselectAll(); for (int i = 0; i < infos.Length; i++) { TileSpawner.SpawnFull(infos [i].Info, infos [i].transform.position + Vector3.up * 4f, infos[i].Blendshapes, infos[i].transform.rotation.eulerAngles); } } if (Input.GetKeyDown(KeyCode.Delete)) { manip.DestroySelected(); } if (Input.GetKeyDown(KeyCode.X)) { if (Input.GetKey(KeyCode.LeftShift)) { manip.MoveSelectedBy(Vector3.left * 4f); } else { manip.MoveSelectedBy(Vector3.right * 4f); } } if (Input.GetKeyDown(KeyCode.U)) { if (Input.GetKey(KeyCode.LeftShift)) { manip.MoveSelectedBy(Vector3.down * 4f); } else { manip.MoveSelectedBy(Vector3.up * 4f); } } if (Input.GetKeyDown(KeyCode.Z) || Input.GetKeyDown(KeyCode.Y)) { if (Input.GetKey(KeyCode.LeftShift)) { manip.MoveSelectedBy(Vector3.back * 4f); } else { manip.MoveSelectedBy(Vector3.forward * 4f); } } if (Input.GetKeyDown(KeyCode.T)) { manip.SetMoveInGrid(!BlockManipulator.moveInGrid); snapToggle.isOn = !snapToggle.isOn; } if (BlockManipulator.moveInGrid) { if (Input.GetKeyDown(KeyCode.Q)) { manip.RotateSelectedBy(new Vector3(0, -90, 0)); } else if (Input.GetKeyDown(KeyCode.E)) { manip.RotateSelectedBy(new Vector3(0, 90, 0)); } } else { if (Input.GetKey(KeyCode.Q)) { manip.RotateSelectedBy(new Vector3(0, 30 * Time.deltaTime, 0)); } else if (Input.GetKey(KeyCode.E)) { manip.RotateSelectedBy(new Vector3(0, -30 * Time.deltaTime, 0)); } } if (Input.GetMouseButton(0)) { if (moving != null) { moving.Move(); } } if (Input.GetMouseButtonUp(0)) { if (moving != null) { moving.EndMove(); } moving = null; } if (EventSystem.current.IsPointerOverGameObject()) //is mouse over UI { return; } if (Physics.Raycast(ray, out hit, 100f, controlsMask)) { if (Input.GetMouseButton(0)) { manip.SetManipulating(true); } if (Input.GetMouseButtonDown(0)) { var m = hit.collider.GetComponent <MoveSelected> (); if (m != null) { m.StartMove(); } moving = m; } } if (!BlockManipulator.IsManipulating && Physics.Raycast(ray, out hit, 100f, objectMask)) { if (grid != null) { grid.Move(hit.point); } } if (!BlockManipulator.IsManipulating && Input.GetMouseButtonDown(0)) { if (Physics.Raycast(ray, out hit, 100f, objectMask)) { if (Input.GetKey(KeyCode.LeftShift)) { BlockManipulator.AddSelectItem(hit.collider.gameObject); } else { BlockManipulator.SelectItem(hit.collider.gameObject.transform.root.gameObject); } } } }
public static void SpawnFull(BlockInfo info, Vector3 pos, float[] Blendshapes, Vector3 rot, bool addSelect = true) { var block = ListBlockTypes.AllBlocks.types [info.BlockId]; GameObject[] tile = null; switch (info.TileTypeId) { case 0: switch (info.MyTileKind) { case TileKind.Normal: tile = block.wallTiles [info.UpperVariation].variations; break; case TileKind.InnerCorner: tile = block.wallTiles [info.UpperVariation].innerCorners; break; case TileKind.OuterCorner: tile = block.wallTiles [info.UpperVariation].outerCorners; break; default: break; } break; case 1: switch (info.MyTileKind) { case TileKind.Normal: tile = block.floorTiles [info.UpperVariation].variations; break; case TileKind.InnerCorner: tile = block.floorTiles [info.UpperVariation].innerCorners; break; case TileKind.OuterCorner: tile = block.floorTiles [info.UpperVariation].outerCorners; break; default: break; } break; case 2: switch (info.MyTileKind) { case TileKind.Normal: tile = block.ceilingTiles [info.UpperVariation].variations; break; case TileKind.InnerCorner: tile = block.ceilingTiles [info.UpperVariation].innerCorners; break; case TileKind.OuterCorner: tile = block.ceilingTiles [info.UpperVariation].outerCorners; break; default: break; } break; case 3: tile = block.traps; break; case 4: tile = block.puzzles; break; case 5: tile = block.other; break; default: break; } if (tile.Length == 0) { return; } info.Variation += 10 * tile.Length; info.Variation %= tile.Length; var go = Instantiate(tile [info.Variation]); go.transform.position = pos; if (rot != Vector3.zero) { go.transform.rotation = Quaternion.Euler(rot); } var iOb = go.AddComponent <InfoOnBlock> (); iOb.Info = info; iOb.Blendshapes = Blendshapes; if (iOb.Blendshapes != null) { BlendshapeEditor.ApplyAll(iOb.GetComponent <SkinnedMeshRenderer> (), iOb); } if (addSelect) { BlockManipulator.AddSelectItem(go); } }