public void UpdateTile(Vector3 position, Color color, HexTile.TileHeight height, bool add, bool remove) { position = transform.InverseTransformPoint(position); HexPoint point = HexPoint.FromPosition(position); if (add && !_tiles.ContainsKey(point)) { int x = point.X + point.Z / 2; int y = point.Z; Vector3 newPos; newPos.x = (x + (y & 1) / 2f) * (BoardUtils.innerRadius * 2f); newPos.y = y * BoardUtils.outerRadius * 1.5f; newPos.z = 0f; HexTile tile = new HexTile(point, newPos, color, height); _tiles.Add(point.Z, point, tile); } else if (remove && _tiles.ContainsKey(point)) { _tiles.Remove(point); } else if (_tiles.ContainsKey(point)) { HexTile hexTile = _tiles.Get(point); hexTile.SetColor(color); hexTile.SetHeight(height); } _tiles.Triangulate(); }
public void LoadJsonTileList(List <HexTileJson> jsonList) { _tiles.Initialize(); for (int i = 0; i < jsonList.Count; i++) { HexPoint point = new HexPoint(jsonList[i].hexPoint.x, jsonList[i].hexPoint.y, jsonList[i].hexPoint.z); Vector3 position = new Vector3(jsonList[i].point.x, jsonList[i].point.y, jsonList[i].point.z); Color color = new Color(jsonList[i].color.r, jsonList[i].color.g, jsonList[i].color.b); HexTile.TileHeight height = jsonList[i].height.height; _tiles.CreateTile(point, position, color, height); } _tiles.Triangulate(); }
private void CreateTile(int x, int y) { Vector3 position; position.x = (x + (y & 1) / 2f) * (BoardUtils.innerRadius * 2f); position.y = y * BoardUtils.outerRadius * 1.5f; position.z = 0f; HexPoint point = HexPoint.FromOffsetPoint(x, y); HexTile.TileHeight height = (Random.Range(0, 2) & 1) == 0 ? HexTile.TileHeight.DEFAULT : HexTile.TileHeight.LOW; Color color = BoardUtils.colors[Random.Range(0, BoardUtils.colors.Length)]; HexTile tile = new HexTile(point, position, color, height); Add(y, point, tile); }
public void CreateTile(HexPoint point, Vector3 position, Color color, HexTile.TileHeight height) { HexTile tile = new HexTile(point, position, color, height); Add(point.Z, point, tile); }
public override void OnInspectorGUI() { // serializedObject.Update(); MapEditor mapEditor = (MapEditor)target; SerializedProperty tps = serializedObject.FindProperty("colors"); EditorGUI.BeginChangeCheck(); EditorGUILayout.PropertyField(tps, true); if (EditorGUI.EndChangeCheck()) { serializedObject.ApplyModifiedProperties(); } EditorGUILayout.BeginHorizontal(); for (int i = 0; i < mapEditor.colors.Length; i++) { if (mapEditor.selectedColor == i) { GUI.color = Color.Lerp(Color.black, mapEditor.colors[i], 0.5f); } else { GUI.color = mapEditor.colors[i]; } if (GUILayout.Button("")) { mapEditor.OnChangeColor(i); } } EditorGUILayout.EndHorizontal(); GUI.color = mapEditor.editorDefaultColor; HexTile.TileHeight selectedHeight = (HexTile.TileHeight)EditorGUILayout.EnumPopup("Height", mapEditor.selectedHeight); if (selectedHeight != mapEditor.selectedHeight) { mapEditor.OnChangeHeight(selectedHeight); } EditorGUILayout.BeginHorizontal(); GUI.color = mapEditor.add ? mapEditor.editorSelectedColor : mapEditor.editorDefaultColor; if (GUILayout.Button("Add", GUILayout.Height(30))) { mapEditor.OnAdd(); } GUI.color = mapEditor.remove ? mapEditor.editorSelectedColor : mapEditor.editorDefaultColor; if (GUILayout.Button("Remove", GUILayout.Height(30))) { mapEditor.OnRemove(); } EditorGUILayout.EndHorizontal(); GUI.color = mapEditor.editorDefaultColor; EditorGUILayout.BeginHorizontal(); if (GUILayout.Button("Save", GUILayout.Height(30))) { mapEditor.OnSave(); } if (GUILayout.Button("Load", GUILayout.Height(30))) { mapEditor.OnLoad(); } EditorGUILayout.EndHorizontal(); if (GUILayout.Button("Initialize", GUILayout.Height(30))) { mapEditor.OnInitialize(); } }
public void OnChangeHeight(HexTile.TileHeight height) { selectedHeight = height; }