public override void OnInspectorGUI() { base.OnInspectorGUI(); ICellGridGenerator gridGenerator = (ICellGridGenerator)target; if (GUILayout.Button("Generate Grid")) { gridGenerator.GenerateGrid(); } if (GUILayout.Button("Clear Grid")) { var children = new List <GameObject>(); foreach (Transform cell in gridGenerator.CellsParent) { children.Add(cell.gameObject); } children.ForEach(c => DestroyImmediate(c)); } }
void GenerateBaseStructure() { if (GridHelperUtils.CheckMissingParameters(parameterValues)) { return; } GridHelperUtils.ClearScene(); var mapType = mapTypes[mapTypeIndex]; var camera = Camera.main; if (camera == null) { var cameraObject = new GameObject("Main Camera"); cameraObject.tag = "MainCamera"; cameraObject.AddComponent <Camera>(); camera = cameraObject.GetComponent <Camera>(); } if (useMovableCamera) { camera.gameObject.AddComponent <CameraController>(); camera.gameObject.GetComponent <CameraController>().ScrollSpeed = cameraScrollSpeed; camera.gameObject.GetComponent <CameraController>().ScrollEdge = cameraScrollEdge; } cellGrid = new GameObject("CellGrid"); players = new GameObject("Players"); units = new GameObject("Units"); guiController = new GameObject("GUIController"); directionalLight = new GameObject("DirectionalLight"); var light = directionalLight.AddComponent <Light>(); light.type = LightType.Directional; light.transform.Rotate(45f, 0, 0); for (int i = 0; i < nHumanPlayer; i++) { var player = new GameObject(string.Format("Player_{0}", players.transform.childCount)); player.AddComponent <HumanPlayer>(); player.GetComponent <Player>().PlayerNumber = players.transform.childCount; player.transform.parent = players.transform; } for (int i = 0; i < nComputerPlayer; i++) { var aiPlayer = new GameObject(string.Format("AI_Player_{0}", players.transform.childCount)); aiPlayer.AddComponent <NaiveAiPlayer>(); aiPlayer.GetComponent <Player>().PlayerNumber = players.transform.childCount; aiPlayer.transform.parent = players.transform; } Type selectedGenerator = generators[generatorIndex]; var cellGridScript = cellGrid.AddComponent <CellGrid>(); ICellGridGenerator generator = (ICellGridGenerator)Activator.CreateInstance(selectedGenerator); generator.CellsParent = cellGrid.transform; var unitGenerator = cellGrid.AddComponent <CustomUnitGenerator>(); unitGenerator.UnitsParent = units.transform; unitGenerator.CellsParent = cellGrid.transform; var guiControllerScript = guiController.AddComponent <GUIController>(); guiControllerScript.CellGrid = cellGridScript; foreach (var fieldName in parameterValues.Keys) { FieldInfo prop = generator.GetType().GetField(fieldName); if (null != prop) { prop.SetValue(generator, parameterValues[fieldName]); } } GridInfo gridInfo = generator.GenerateGrid(); camera.transform.position = gridInfo.Center; camera.transform.position -= new Vector3(0, 0, (gridInfo.Dimensions.x > gridInfo.Dimensions.y ? gridInfo.Dimensions.x : gridInfo.Dimensions.y) * Mathf.Sqrt(3) / 2); if (mapType.Equals(MAP_TYPE_3D)) { var rotationVector = new Vector3(90f, 0f, 0f); camera.transform.parent = cellGrid.transform; cellGrid.transform.Rotate(rotationVector); players.transform.Rotate(rotationVector); units.transform.Rotate(rotationVector); directionalLight.transform.Rotate(rotationVector); camera.transform.parent = null; camera.transform.SetAsFirstSibling(); } }