diff --git a/Assets/Scenes/SampleScene.unity b/Assets/Scenes/SampleScene.unity index bae5b32..b7bc75a 100644 --- a/Assets/Scenes/SampleScene.unity +++ b/Assets/Scenes/SampleScene.unity @@ -238,6 +238,7 @@ cameraControl: {fileID: 1256630291} frequency: 0.2 frequencyVariance: 0.1 + roads: {fileID: 1714391592} --- !u!4 &128843416 Transform: m_ObjectHideFlags: 0 @@ -1758,7 +1759,6 @@ m_Name: m_EditorClassIdentifier: config: {fileID: 128843415} - roads: {fileID: 1714391592} --- !u!114 &1812881470 MonoBehaviour: m_ObjectHideFlags: 0 diff --git a/Assets/Scenes/SampleScene.unity b/Assets/Scenes/SampleScene.unity index bae5b32..b7bc75a 100644 --- a/Assets/Scenes/SampleScene.unity +++ b/Assets/Scenes/SampleScene.unity @@ -238,6 +238,7 @@ cameraControl: {fileID: 1256630291} frequency: 0.2 frequencyVariance: 0.1 + roads: {fileID: 1714391592} --- !u!4 &128843416 Transform: m_ObjectHideFlags: 0 @@ -1758,7 +1759,6 @@ m_Name: m_EditorClassIdentifier: config: {fileID: 128843415} - roads: {fileID: 1714391592} --- !u!114 &1812881470 MonoBehaviour: m_ObjectHideFlags: 0 diff --git a/Assets/Scripts/Buttons/LoadButton.cs b/Assets/Scripts/Buttons/LoadButton.cs index f61547a..f67ef11 100644 --- a/Assets/Scripts/Buttons/LoadButton.cs +++ b/Assets/Scripts/Buttons/LoadButton.cs @@ -10,29 +10,22 @@ public class LoadButton : MonoBehaviour, IPointerDownHandler { public Config config; - public Transform roads; - public void OnPointerDown(PointerEventData eventData) { - #if UNITY_EDITOR - config.onClick(); - string filePath = EditorUtility.OpenFilePanel("Open a road network", "", "json"); - if (filePath.Length == 0) { - return; - } + public static void loadRoadNetworkFromFile(string filename, Config config) { config.roadNetwork.clear(); - string fileContent = File.ReadAllText(filePath); + string fileContent = File.ReadAllText(filename); SaveStruct saveData = JsonUtility.FromJson(fileContent); List nodes = new List(); List<(SpawnNodeData, List)> spawnNodeData = new List<(SpawnNodeData, List)>(); foreach (SaveNode saveNode in saveData.nodes) { Node node = null; if (saveNode.type == "spawn") { - node = new SpawnNode(saveNode.position, roads, config).init(); + node = new SpawnNode(saveNode.position, config.roads, config).init(); spawnNodeData.Add((node.nodeData as SpawnNodeData, saveNode.targets)); } else if (saveNode.type == "exit") { - node = new ExitNode(saveNode.position, roads, config).init(); + node = new ExitNode(saveNode.position, config.roads, config).init(); } else { - CustomNode customNode = new CustomNode(saveNode.position, roads, config); + CustomNode customNode = new CustomNode(saveNode.position, config.roads, config); customNode.lightPhase = saveNode.lightPhase; if (customNode.lightPhase != 0) { customNode.isPassable = false; @@ -53,8 +46,18 @@ foreach (Node node in road.nodes) { node.roads.Add(road); } - road.initialize(roads); + road.initialize(config.roads); } + } + + public void OnPointerDown(PointerEventData eventData) { + #if UNITY_EDITOR + config.onClick(); + string filePath = EditorUtility.OpenFilePanel("Open a road network", "", "json"); + if (filePath.Length == 0) { + return; + } + loadRoadNetworkFromFile(filePath, config); #endif } } diff --git a/Assets/Scenes/SampleScene.unity b/Assets/Scenes/SampleScene.unity index bae5b32..b7bc75a 100644 --- a/Assets/Scenes/SampleScene.unity +++ b/Assets/Scenes/SampleScene.unity @@ -238,6 +238,7 @@ cameraControl: {fileID: 1256630291} frequency: 0.2 frequencyVariance: 0.1 + roads: {fileID: 1714391592} --- !u!4 &128843416 Transform: m_ObjectHideFlags: 0 @@ -1758,7 +1759,6 @@ m_Name: m_EditorClassIdentifier: config: {fileID: 128843415} - roads: {fileID: 1714391592} --- !u!114 &1812881470 MonoBehaviour: m_ObjectHideFlags: 0 diff --git a/Assets/Scripts/Buttons/LoadButton.cs b/Assets/Scripts/Buttons/LoadButton.cs index f61547a..f67ef11 100644 --- a/Assets/Scripts/Buttons/LoadButton.cs +++ b/Assets/Scripts/Buttons/LoadButton.cs @@ -10,29 +10,22 @@ public class LoadButton : MonoBehaviour, IPointerDownHandler { public Config config; - public Transform roads; - public void OnPointerDown(PointerEventData eventData) { - #if UNITY_EDITOR - config.onClick(); - string filePath = EditorUtility.OpenFilePanel("Open a road network", "", "json"); - if (filePath.Length == 0) { - return; - } + public static void loadRoadNetworkFromFile(string filename, Config config) { config.roadNetwork.clear(); - string fileContent = File.ReadAllText(filePath); + string fileContent = File.ReadAllText(filename); SaveStruct saveData = JsonUtility.FromJson(fileContent); List nodes = new List(); List<(SpawnNodeData, List)> spawnNodeData = new List<(SpawnNodeData, List)>(); foreach (SaveNode saveNode in saveData.nodes) { Node node = null; if (saveNode.type == "spawn") { - node = new SpawnNode(saveNode.position, roads, config).init(); + node = new SpawnNode(saveNode.position, config.roads, config).init(); spawnNodeData.Add((node.nodeData as SpawnNodeData, saveNode.targets)); } else if (saveNode.type == "exit") { - node = new ExitNode(saveNode.position, roads, config).init(); + node = new ExitNode(saveNode.position, config.roads, config).init(); } else { - CustomNode customNode = new CustomNode(saveNode.position, roads, config); + CustomNode customNode = new CustomNode(saveNode.position, config.roads, config); customNode.lightPhase = saveNode.lightPhase; if (customNode.lightPhase != 0) { customNode.isPassable = false; @@ -53,8 +46,18 @@ foreach (Node node in road.nodes) { node.roads.Add(road); } - road.initialize(roads); + road.initialize(config.roads); } + } + + public void OnPointerDown(PointerEventData eventData) { + #if UNITY_EDITOR + config.onClick(); + string filePath = EditorUtility.OpenFilePanel("Open a road network", "", "json"); + if (filePath.Length == 0) { + return; + } + loadRoadNetworkFromFile(filePath, config); #endif } } diff --git a/Assets/Scripts/Buttons/SaveTravelTimes.cs b/Assets/Scripts/Buttons/SaveTravelTimes.cs index 4bdafb2..574a030 100644 --- a/Assets/Scripts/Buttons/SaveTravelTimes.cs +++ b/Assets/Scripts/Buttons/SaveTravelTimes.cs @@ -15,17 +15,21 @@ public List travelTimes; } - public void OnPointerDown(PointerEventData eventData) { - #if UNITY_EDITOR + public static void saveTravelTimesToFile(string filename, Config config) { Times time = new Times(); time.travelTimes = config.travelTimes; string jsonData = JsonUtility.ToJson(time); + File.WriteAllBytes(filename, Encoding.ASCII.GetBytes(jsonData)); + } + + public void OnPointerDown(PointerEventData eventData) { + #if UNITY_EDITOR string filePath = EditorUtility.SaveFilePanel("Save travel times", "", "times.json", "json"); if (filePath.Length == 0) { return; } - File.WriteAllBytes(filePath, Encoding.ASCII.GetBytes(jsonData)); + saveTravelTimesToFile(filePath, config); #endif } } diff --git a/Assets/Scenes/SampleScene.unity b/Assets/Scenes/SampleScene.unity index bae5b32..b7bc75a 100644 --- a/Assets/Scenes/SampleScene.unity +++ b/Assets/Scenes/SampleScene.unity @@ -238,6 +238,7 @@ cameraControl: {fileID: 1256630291} frequency: 0.2 frequencyVariance: 0.1 + roads: {fileID: 1714391592} --- !u!4 &128843416 Transform: m_ObjectHideFlags: 0 @@ -1758,7 +1759,6 @@ m_Name: m_EditorClassIdentifier: config: {fileID: 128843415} - roads: {fileID: 1714391592} --- !u!114 &1812881470 MonoBehaviour: m_ObjectHideFlags: 0 diff --git a/Assets/Scripts/Buttons/LoadButton.cs b/Assets/Scripts/Buttons/LoadButton.cs index f61547a..f67ef11 100644 --- a/Assets/Scripts/Buttons/LoadButton.cs +++ b/Assets/Scripts/Buttons/LoadButton.cs @@ -10,29 +10,22 @@ public class LoadButton : MonoBehaviour, IPointerDownHandler { public Config config; - public Transform roads; - public void OnPointerDown(PointerEventData eventData) { - #if UNITY_EDITOR - config.onClick(); - string filePath = EditorUtility.OpenFilePanel("Open a road network", "", "json"); - if (filePath.Length == 0) { - return; - } + public static void loadRoadNetworkFromFile(string filename, Config config) { config.roadNetwork.clear(); - string fileContent = File.ReadAllText(filePath); + string fileContent = File.ReadAllText(filename); SaveStruct saveData = JsonUtility.FromJson(fileContent); List nodes = new List(); List<(SpawnNodeData, List)> spawnNodeData = new List<(SpawnNodeData, List)>(); foreach (SaveNode saveNode in saveData.nodes) { Node node = null; if (saveNode.type == "spawn") { - node = new SpawnNode(saveNode.position, roads, config).init(); + node = new SpawnNode(saveNode.position, config.roads, config).init(); spawnNodeData.Add((node.nodeData as SpawnNodeData, saveNode.targets)); } else if (saveNode.type == "exit") { - node = new ExitNode(saveNode.position, roads, config).init(); + node = new ExitNode(saveNode.position, config.roads, config).init(); } else { - CustomNode customNode = new CustomNode(saveNode.position, roads, config); + CustomNode customNode = new CustomNode(saveNode.position, config.roads, config); customNode.lightPhase = saveNode.lightPhase; if (customNode.lightPhase != 0) { customNode.isPassable = false; @@ -53,8 +46,18 @@ foreach (Node node in road.nodes) { node.roads.Add(road); } - road.initialize(roads); + road.initialize(config.roads); } + } + + public void OnPointerDown(PointerEventData eventData) { + #if UNITY_EDITOR + config.onClick(); + string filePath = EditorUtility.OpenFilePanel("Open a road network", "", "json"); + if (filePath.Length == 0) { + return; + } + loadRoadNetworkFromFile(filePath, config); #endif } } diff --git a/Assets/Scripts/Buttons/SaveTravelTimes.cs b/Assets/Scripts/Buttons/SaveTravelTimes.cs index 4bdafb2..574a030 100644 --- a/Assets/Scripts/Buttons/SaveTravelTimes.cs +++ b/Assets/Scripts/Buttons/SaveTravelTimes.cs @@ -15,17 +15,21 @@ public List travelTimes; } - public void OnPointerDown(PointerEventData eventData) { - #if UNITY_EDITOR + public static void saveTravelTimesToFile(string filename, Config config) { Times time = new Times(); time.travelTimes = config.travelTimes; string jsonData = JsonUtility.ToJson(time); + File.WriteAllBytes(filename, Encoding.ASCII.GetBytes(jsonData)); + } + + public void OnPointerDown(PointerEventData eventData) { + #if UNITY_EDITOR string filePath = EditorUtility.SaveFilePanel("Save travel times", "", "times.json", "json"); if (filePath.Length == 0) { return; } - File.WriteAllBytes(filePath, Encoding.ASCII.GetBytes(jsonData)); + saveTravelTimesToFile(filePath, config); #endif } } diff --git a/Assets/Scripts/Config.cs b/Assets/Scripts/Config.cs index ae87792..1de8e19 100644 --- a/Assets/Scripts/Config.cs +++ b/Assets/Scripts/Config.cs @@ -1,6 +1,7 @@ using System.Collections; using System.Collections.Generic; using UnityEngine; +using System.Globalization; public class Config : MonoBehaviour { public Material roadMaterial, roadEditMaterial, carBrakingMaterial, carAccelerationMaterial; @@ -17,6 +18,21 @@ public CameraControl cameraControl; public float frequency, frequencyVariance; + private string roadNetworkFileName, outputFileName; + private float time; + public Transform roads; + + + private static string getCLIArgumentValue(string name) { + string[] arguments = System.Environment.GetCommandLineArgs(); + for (int i = 0; i < arguments.Length; i++) { + if (arguments[i] == name && arguments.Length > i + 1) { + return arguments[i + 1]; + } + } + return ""; + } + public void click(Mode mode, int index) { onClick(); futureMode = mode; @@ -28,9 +44,29 @@ mode = Mode.ClickButton; } - void Update() { + private void Start() { + roadNetworkFileName = getCLIArgumentValue("-i"); + outputFileName = getCLIArgumentValue("-o"); + string timeString = getCLIArgumentValue("-t"); + + if (roadNetworkFileName.Length > 0) { + LoadButton.loadRoadNetworkFromFile(roadNetworkFileName, this); + } + if (timeString.Length > 0) { + time = float.Parse(timeString, CultureInfo.InvariantCulture.NumberFormat); + } else { + time = float.PositiveInfinity; + } + } + + private void Update() { if (Input.GetAxis("Fire1") == 0.0f && mode == Mode.ClickButton) { mode = futureMode; } + time -= Time.deltaTime; + if (time <= 0) { + SaveTravelTimes.saveTravelTimesToFile(outputFileName, this); + Application.Quit(); + } } } diff --git a/Assets/Scenes/SampleScene.unity b/Assets/Scenes/SampleScene.unity index bae5b32..b7bc75a 100644 --- a/Assets/Scenes/SampleScene.unity +++ b/Assets/Scenes/SampleScene.unity @@ -238,6 +238,7 @@ cameraControl: {fileID: 1256630291} frequency: 0.2 frequencyVariance: 0.1 + roads: {fileID: 1714391592} --- !u!4 &128843416 Transform: m_ObjectHideFlags: 0 @@ -1758,7 +1759,6 @@ m_Name: m_EditorClassIdentifier: config: {fileID: 128843415} - roads: {fileID: 1714391592} --- !u!114 &1812881470 MonoBehaviour: m_ObjectHideFlags: 0 diff --git a/Assets/Scripts/Buttons/LoadButton.cs b/Assets/Scripts/Buttons/LoadButton.cs index f61547a..f67ef11 100644 --- a/Assets/Scripts/Buttons/LoadButton.cs +++ b/Assets/Scripts/Buttons/LoadButton.cs @@ -10,29 +10,22 @@ public class LoadButton : MonoBehaviour, IPointerDownHandler { public Config config; - public Transform roads; - public void OnPointerDown(PointerEventData eventData) { - #if UNITY_EDITOR - config.onClick(); - string filePath = EditorUtility.OpenFilePanel("Open a road network", "", "json"); - if (filePath.Length == 0) { - return; - } + public static void loadRoadNetworkFromFile(string filename, Config config) { config.roadNetwork.clear(); - string fileContent = File.ReadAllText(filePath); + string fileContent = File.ReadAllText(filename); SaveStruct saveData = JsonUtility.FromJson(fileContent); List nodes = new List(); List<(SpawnNodeData, List)> spawnNodeData = new List<(SpawnNodeData, List)>(); foreach (SaveNode saveNode in saveData.nodes) { Node node = null; if (saveNode.type == "spawn") { - node = new SpawnNode(saveNode.position, roads, config).init(); + node = new SpawnNode(saveNode.position, config.roads, config).init(); spawnNodeData.Add((node.nodeData as SpawnNodeData, saveNode.targets)); } else if (saveNode.type == "exit") { - node = new ExitNode(saveNode.position, roads, config).init(); + node = new ExitNode(saveNode.position, config.roads, config).init(); } else { - CustomNode customNode = new CustomNode(saveNode.position, roads, config); + CustomNode customNode = new CustomNode(saveNode.position, config.roads, config); customNode.lightPhase = saveNode.lightPhase; if (customNode.lightPhase != 0) { customNode.isPassable = false; @@ -53,8 +46,18 @@ foreach (Node node in road.nodes) { node.roads.Add(road); } - road.initialize(roads); + road.initialize(config.roads); } + } + + public void OnPointerDown(PointerEventData eventData) { + #if UNITY_EDITOR + config.onClick(); + string filePath = EditorUtility.OpenFilePanel("Open a road network", "", "json"); + if (filePath.Length == 0) { + return; + } + loadRoadNetworkFromFile(filePath, config); #endif } } diff --git a/Assets/Scripts/Buttons/SaveTravelTimes.cs b/Assets/Scripts/Buttons/SaveTravelTimes.cs index 4bdafb2..574a030 100644 --- a/Assets/Scripts/Buttons/SaveTravelTimes.cs +++ b/Assets/Scripts/Buttons/SaveTravelTimes.cs @@ -15,17 +15,21 @@ public List travelTimes; } - public void OnPointerDown(PointerEventData eventData) { - #if UNITY_EDITOR + public static void saveTravelTimesToFile(string filename, Config config) { Times time = new Times(); time.travelTimes = config.travelTimes; string jsonData = JsonUtility.ToJson(time); + File.WriteAllBytes(filename, Encoding.ASCII.GetBytes(jsonData)); + } + + public void OnPointerDown(PointerEventData eventData) { + #if UNITY_EDITOR string filePath = EditorUtility.SaveFilePanel("Save travel times", "", "times.json", "json"); if (filePath.Length == 0) { return; } - File.WriteAllBytes(filePath, Encoding.ASCII.GetBytes(jsonData)); + saveTravelTimesToFile(filePath, config); #endif } } diff --git a/Assets/Scripts/Config.cs b/Assets/Scripts/Config.cs index ae87792..1de8e19 100644 --- a/Assets/Scripts/Config.cs +++ b/Assets/Scripts/Config.cs @@ -1,6 +1,7 @@ using System.Collections; using System.Collections.Generic; using UnityEngine; +using System.Globalization; public class Config : MonoBehaviour { public Material roadMaterial, roadEditMaterial, carBrakingMaterial, carAccelerationMaterial; @@ -17,6 +18,21 @@ public CameraControl cameraControl; public float frequency, frequencyVariance; + private string roadNetworkFileName, outputFileName; + private float time; + public Transform roads; + + + private static string getCLIArgumentValue(string name) { + string[] arguments = System.Environment.GetCommandLineArgs(); + for (int i = 0; i < arguments.Length; i++) { + if (arguments[i] == name && arguments.Length > i + 1) { + return arguments[i + 1]; + } + } + return ""; + } + public void click(Mode mode, int index) { onClick(); futureMode = mode; @@ -28,9 +44,29 @@ mode = Mode.ClickButton; } - void Update() { + private void Start() { + roadNetworkFileName = getCLIArgumentValue("-i"); + outputFileName = getCLIArgumentValue("-o"); + string timeString = getCLIArgumentValue("-t"); + + if (roadNetworkFileName.Length > 0) { + LoadButton.loadRoadNetworkFromFile(roadNetworkFileName, this); + } + if (timeString.Length > 0) { + time = float.Parse(timeString, CultureInfo.InvariantCulture.NumberFormat); + } else { + time = float.PositiveInfinity; + } + } + + private void Update() { if (Input.GetAxis("Fire1") == 0.0f && mode == Mode.ClickButton) { mode = futureMode; } + time -= Time.deltaTime; + if (time <= 0) { + SaveTravelTimes.saveTravelTimesToFile(outputFileName, this); + Application.Quit(); + } } } diff --git a/ProjectSettings/ProjectSettings.asset b/ProjectSettings/ProjectSettings.asset index 608e172..83acfd7 100644 --- a/ProjectSettings/ProjectSettings.asset +++ b/ProjectSettings/ProjectSettings.asset @@ -42,8 +42,8 @@ m_SplashScreenLogos: [] m_VirtualRealitySplashScreen: {fileID: 0} m_HolographicTrackingLossScreen: {fileID: 0} - defaultScreenWidth: 1024 - defaultScreenHeight: 768 + defaultScreenWidth: 400 + defaultScreenHeight: 300 defaultScreenWidthWeb: 960 defaultScreenHeightWeb: 600 m_StereoRenderingPath: 0 @@ -99,7 +99,7 @@ xboxEnableFitness: 0 visibleInBackground: 1 allowFullscreenSwitch: 1 - fullscreenMode: 1 + fullscreenMode: 3 xboxSpeechDB: 0 xboxEnableHeadOrientation: 0 xboxEnableGuest: 0