public override void OnInspectorGUI() { BSPVirtualMapGeneratorBehaviour t = (BSPVirtualMapGeneratorBehaviour)target; GeneratorBehaviour gen = t.gameObject.GetComponent <GeneratorBehaviour>(); int maxSplits = 2; if (gen != null) { maxSplits = Mathf.Min(gen.MapHeight, gen.MapWidth) / 4; // No more than these splits or it will behave strangely! } // Entrance/Exit (COMMON) EditorGUILayout.BeginHorizontal(); t.createStartAndEnd = EditorGUILayout.Toggle("Create Entrance and Exit", t.createStartAndEnd); if (t.HasRooms && t.createStartAndEnd) { t.forceStartAndEndInRooms = EditorGUILayout.Toggle("Force in Room", t.forceStartAndEndInRooms); } EditorGUILayout.EndHorizontal(); if (t.createStartAndEnd) { EditorGUILayout.MinMaxSlider(new GUIContent("Min & Max distance % between entrance and exit"), ref t.minimumDistanceBetweenStartAndEnd, ref t.maximumDistanceBetweenStartAndEnd, 0, 100); } t.nSplits = EditorGUILayout.IntSlider(new GUIContent("Number of splits", "The higher this is, the more and smaller rooms you get."), t.nSplits, 0, maxSplits); t.splitRange = EditorGUILayout.Slider(new GUIContent("Split range", "Max range for splitting dungeon sections"), t.splitRange, 0f, 0.5f); EditorGUILayout.MinMaxSlider(new GUIContent("Room size range", "Min & Max range for room size"), ref t.roomSizeMinRange, ref t.roomSizeMaxRange, 0f, 1f); t.maxCorridorWidth = EditorGUILayout.IntSlider(new GUIContent("Max corridor width", "Large corridors are sometimes added."), t.maxCorridorWidth, 1, 4); }
// Moving agent to a point public void moveTo(Point point) { // if the truck is driving / moving then move it if ((currStatus == TruckStatus.DRIVING || currStatus == TruckStatus.BOOSTED) && point != null) { // Moving is now using translate to make the game more consistent Vector2 dir = point.getCurrPosition() - position; this.transform.Translate(dir.normalized * property.speed * Time.deltaTime * (currStatus == TruckStatus.BOOSTED ? 2f : 1f), Space.World); position = this.gameObject.transform.position; if (isNowAt(point.getCurrPosition()) && point.getIsGenerator()) { // Check if the answer you give is correct answer and despawn the truck GeneratorBehaviour generator = point.gameObject.GetComponent <GeneratorBehaviour>(); GameEvents.current.TruckAnswerEnter(); generator.checkAnswer(charCharge); despawn(); } else if (isNowAt(point.getCurrPosition())) { // If the agent reach a destination that is not end point changeTargetFromCurrPoint(point); } } }
override public PhysicalMap Generate(VirtualMap[] maps, GeneratorBehaviour generator, MapInterpreter interpreter){ PrefabSectionsPhysicalMap physMap = ScriptableObject.CreateInstance<PrefabSectionsPhysicalMap>(); physMap.Initialise(maps,generator,interpreter); physMap.behaviour = this; physMap.Generate(); return physMap; }
public override void OnInspectorGUI() { MapInterpreterBehaviour t = (MapInterpreterBehaviour)target; if (g == null) { g = t.gameObject.GetComponent <GeneratorBehaviour>(); } if (p == null) { p = t.gameObject.GetComponent <PhysicalMapBehaviour>(); } if (v == null) { v = t.gameObject.GetComponent <VirtualMapGeneratorBehaviour>(); } t.drawRocks = EditorGUILayout.Toggle("Draw Rocks", t.drawRocks); t.drawWallCorners = EditorGUILayout.Toggle("Draw Wall Corners", t.drawWallCorners); t.drawDoors = EditorGUILayout.Toggle("Place Doors in Passages", t.drawDoors); if (v != null && v.HasRooms) { t.createColumnsInRooms = EditorGUILayout.Toggle("Draw Columns in Rooms", t.createColumnsInRooms); } t.useDirectionalFloors = EditorGUILayout.Toggle("Use Directional Floors", t.useDirectionalFloors); if (t.useDirectionalFloors) { t.randomOrientations = false; } else { t.randomOrientations = EditorGUILayout.Toggle("Randomize Orientations", t.randomOrientations); } if (t.useDirectionalFloors) { t.isolateDirectionalWallsForRooms = EditorGUILayout.Toggle(new GUIContent("Isolate Rooms", "If enabled, room corners will be isolated from the rest of the dungeon."), t.isolateDirectionalWallsForRooms); } t.usePerimeter = EditorGUILayout.Toggle("Use Perimeter Walls", t.usePerimeter); // if (t.usePerimeter) t.internalPerimeter =EditorGUILayout.Toggle("Internal Perimeter",t.internalPerimeter); if (g.mapDimensionsType == MapDimensionsType.THREE_DEE) { t.addCeilingToCorridors = EditorGUILayout.Toggle("Add Ceiling to Corridors", t.addCeilingToCorridors); if (v.HasRooms) { t.addCeilingToRooms = EditorGUILayout.Toggle("Add Ceiling To Rooms", t.addCeilingToRooms); } } }
public override void OnInspectorGUI() { DrawDefaultInspector(); GeneratorBehaviour generator = target as GeneratorBehaviour; if (!generator) { return; } //generator.Parameter.ChunkSize = EditorGUILayout.IntField("Chunk Resolution", generator.Parameter.ChunkSize); EditorGUI.BeginDisabledGroup(!generator.Network || !generator.Network.UseLocalGenerator && !generator.Network.Connected || generator.PendingChunks); if (GUILayout.Button("Generate")) { generator.GenerateMap(); } EditorGUI.EndDisabledGroup(); }
public override void OnInspectorGUI() { PhysicalMapBehaviour t = (PhysicalMapBehaviour)target; if (g == null) { g = t.gameObject.GetComponent <GeneratorBehaviour>(); } if (i == null) { i = t.gameObject.GetComponent <MapInterpreterBehaviour>(); } if (v == null) { v = t.gameObject.GetComponent <VirtualMapGeneratorBehaviour>(); } if (v.createStartAndEnd) { t.createEntranceAndExit = EditorGUILayout.Toggle("Add Entrance and Exit", t.createEntranceAndExit); if (t.createEntranceAndExit) { // EditorGUILayout.BeginHorizontal(); t.createPlayer = EditorGUILayout.Toggle("Add Player", t.createPlayer); if (t.createPlayer) { t.playerPrefab = EditorGUILayout.ObjectField("Player Prefab", t.playerPrefab, typeof(GameObject), true) as GameObject; } // EditorGUILayout.EndHorizontal(); } } if (!t.AutomaticBatching) { t.enabledBatching = EditorGUILayout.Toggle("Perform Batching", t.enabledBatching); } if (!t.AutomaticOrientation && !t.ForcedOrientation) { t.mapPlaneOrientation = (MapPlaneOrientation)EditorGUILayout.EnumPopup("Orientation", t.mapPlaneOrientation); } }
public override void OnInspectorGUI() { errorStyle = new GUIStyle(); errorStyle.normal.textColor = Color.red; GeneratorBehaviour t = (GeneratorBehaviour)target; PhysicalMapBehaviour physicalMapBehaviour = t.gameObject.GetComponent <PhysicalMapBehaviour>(); MapInterpreterBehaviour interpreterBehaviour = t.gameObject.GetComponent <MapInterpreterBehaviour>(); VirtualMapGeneratorBehaviour vmapGeneratorBehaviour = t.gameObject.GetComponent <VirtualMapGeneratorBehaviour>(); targetInstance = t; t.mapDimensionsType = (MapDimensionsType)EditorGUILayout.EnumPopup("Map Dimensions Type", t.mapDimensionsType); t.MapWidth = EditorGUILayout.IntSlider("Map Width", t.MapWidth, 2, GeneratorBehaviour.MAX_SIZE); t.MapHeight = EditorGUILayout.IntSlider("Map Length", t.MapHeight, 2, GeneratorBehaviour.MAX_SIZE); EditorGUILayout.BeginHorizontal(); t.useSeed = EditorGUILayout.Toggle("Use seed", t.useSeed); EditorGUI.BeginDisabledGroup(t.useSeed == false); t.seed = EditorGUILayout.IntSlider("Seed", t.seed, 0, 10000); EditorGUI.EndDisabledGroup(); EditorGUILayout.EndHorizontal(); if (t.mapDimensionsType == MapDimensionsType.THREE_DEE) { t.multiStorey = EditorGUILayout.Toggle("Multi-Storey", t.multiStorey); if (t.multiStorey) { t.numberOfStoreys = EditorGUILayout.IntSlider("Number of Storeys", t.numberOfStoreys, 1, 10); } else { t.numberOfStoreys = 1; } } else { t.multiStorey = false; t.numberOfStoreys = 1; } this.showAdvanced = EditorGUILayout.Foldout(this.showAdvanced, "Advanced Options"); if (this.showAdvanced) { GUILayout.BeginHorizontal(); t.printTimings = EditorGUILayout.Toggle("Print Timings", t.printTimings); GUILayout.EndHorizontal(); EditorGUILayout.LabelField("Last used seed: " + t.lastUsedSeed); showDebugCoordinates = EditorGUILayout.Toggle("Show Debug Coordinates", showDebugCoordinates); showDebugConnections = EditorGUILayout.Toggle("Show Debug Connections", showDebugConnections); } EditorGUI.BeginDisabledGroup(Application.isPlaying == true); bool canGenerate = true; if (vmapGeneratorBehaviour == null) { GUILayout.Label("Attach a Virtual Map Generator Behaviour to enable generation!", errorStyle); canGenerate = false; } if (physicalMapBehaviour == null) { GUILayout.Label("Attach a Physical Map Behaviour to enable generation!", errorStyle); canGenerate = false; } else if (t.mapDimensionsType == MapDimensionsType.THREE_DEE && !physicalMapBehaviour.SupportsThreeDeeMap) { GUILayout.Label("The attached Physical Map Behaviour does not support a 3D map!", errorStyle); canGenerate = false; } if (interpreterBehaviour == null) { GUILayout.Label("Attach a Map Interpreter Behaviour to enable generation!", errorStyle); canGenerate = false; } EditorGUI.BeginDisabledGroup(!canGenerate); if (GUILayout.Button("Generate!")) { t.Generate(); } EditorGUI.EndDisabledGroup(); #region Save/Load buttons EditorGUILayout.BeginHorizontal(); if (GUILayout.Button("Save")) { SavePrefab(); } EditorGUILayout.EndHorizontal(); #endregion EditorGUI.EndDisabledGroup(); }
public void Start() { this.generator = this.gameObject.GetComponent <GeneratorBehaviour>(); GenerateNewMap(); }
void OnGUI() { this.generator = EditorGUILayout.ObjectField(this.generator, typeof(GeneratorBehaviour), true) as GeneratorBehaviour; if (debugger == null) { debugger = new GeneratorDebugger(); } if (generator != null) { debugger.generator = generator; // if (debugger == null) { // GUIStyle style = new GUIStyle(); // style.normal.textColor = Color.red; // GUILayout.Label("Add a Generator Debugger component to the generator you want to debug!",style); // return; // } EditorGUI.BeginDisabledGroup(Application.isPlaying == true); PhysicalMap physicalMap = generator.physicalMap; if (physicalMap == null) { GUIStyle style = new GUIStyle(); style.normal.textColor = Color.red; GUILayout.Label("No map has been generated, generate first!", style); } EditorGUI.BeginDisabledGroup(physicalMap == null || generator == null); // int i = 0; // foreach(PhysicalMapZone zone in physicalMap.zones){ for (int i = 0; i < physicalMap.zones.Count; i++) { if (GUILayout.Button("Select Storey " + i)) { List <GameObject> gos = debugger.SelectObjectsByZone(i); if (gos != null) { Selection.objects = gos.ToArray(); } } // i++; } foreach (SelectionObjectType sot in System.Enum.GetValues(typeof(SelectionObjectType)).Cast <SelectionObjectType>()) { if (GUILayout.Button("Select " + sot)) { List <GameObject> gos = debugger.SelectObjects(sot); if (gos != null) { Selection.objects = gos.ToArray(); } } } if (GUILayout.Button("Clear")) { debugger.Clear(); // Debug.Log (Selection.objects); // Debug.Log (debugger); Selection.objects = new Object[0]; } EditorGUI.EndDisabledGroup(); } else { GUILayout.Label("Link your GeneratorBehaviour here."); } }