private void Awake() { RigidBody = GetComponentInParent <Rigidbody>(); Actions = GetComponentInParent <VehicleActions>(); Dynamics = GetComponentInParent <IVehicleDynamics>(); MapOrigin = MapOrigin.Find(); }
private void Start() { MapOrigin = MapOrigin.Find(); PedSpawnCheckBitmask = LayerMask.GetMask("Pedestrian", "Agent", "NPC"); SpawnBoundsSize = new Vector3(MapOrigin.PedSpawnBoundSize, 50f, MapOrigin.PedSpawnBoundSize); PedMaxCount = MapOrigin.PedMaxCount; SimulatorCamera = SimulatorManager.Instance.CameraManager.SimulatorCamera; SpawnInfo[] spawnInfos = FindObjectsOfType <SpawnInfo>(); Loader.Instance.Network.MessagesManager?.RegisterObject(this); var pt = Vector3.zero; if (spawnInfos.Length > 0) { pt = spawnInfos[0].transform.position; } if (Loader.Instance.Network.IsClient) { return; } if (NavMesh.SamplePosition(pt, out NavMeshHit hit, 1f, NavMesh.AllAreas)) { InitPedestrians(); if (PedestriansActive) { SetPedOnMap(); } }
private void Start() { MapOrigin = MapOrigin.Find(); PedSpawnCheckBitmask = LayerMask.GetMask("Pedestrian", "Agent", "NPC"); SpawnBoundsSize = new Vector3(MapOrigin.PedSpawnBoundSize, 50f, MapOrigin.PedSpawnBoundSize); PedMaxCount = MapOrigin.PedMaxCount; SimulatorCamera = SimulatorManager.Instance.CameraManager.SimulatorCamera; SpawnInfo[] spawnInfos = FindObjectsOfType <SpawnInfo>(); var pt = Vector3.zero; if (spawnInfos.Length > 0) { pt = spawnInfos[0].transform.position; } NavMeshHit hit; if (NavMesh.SamplePosition(pt, out hit, 1f, NavMesh.AllAreas)) { InitPedestrians(); if (PedestriansActive) { SetPedOnMap(); } } else { var sceneName = SceneManager.GetActiveScene().name; Debug.LogError($"{sceneName} is missing Pedestrian NavMesh"); gameObject.SetActive(false); } }
public override void OnInspectorGUI() { MapOrigin origin = (MapOrigin)target; DrawDefaultInspector(); int currentlySelected = -1; if (origin.TimeZoneSerialized != null) { currentlySelected = Array.FindIndex(TimeZones, tz => tz.DisplayName == origin.TimeZoneString); if (currentlySelected == -1) { var timeZone = origin.TimeZone; currentlySelected = Array.FindIndex(TimeZones, tz => tz.BaseUtcOffset == timeZone.BaseUtcOffset); } } var values = TimeZones.Select(tz => tz.DisplayName.Replace("&", "&&")).ToArray(); currentlySelected = EditorGUILayout.Popup(currentlySelected, values); if (currentlySelected != -1) { if (!origin.TimeZone.Equals(TimeZones[currentlySelected])) { origin.TimeZoneSerialized = TimeZones[currentlySelected].ToSerializedString(); origin.TimeZoneString = TimeZones[currentlySelected].DisplayName; EditorUtility.SetDirty(origin); } } }
private void Start() { MapOrigin = MapOrigin.Find(); spawnsManager = GetComponent <SpawnsManager>(); PedSpawnCheckBitmask = LayerMask.GetMask("Pedestrian", "Agent", "NPC"); PedMaxCount = MapOrigin.PedMaxCount; SimCameraManager = SimulatorManager.Instance.CameraManager; SimulatorCamera = SimCameraManager.SimulatorCamera; MapManager = SimulatorManager.Instance.MapManager; SpawnInfo[] spawnInfos = FindObjectsOfType <SpawnInfo>(); Loader.Instance.Network.MessagesManager?.RegisterObject(this); var pt = Vector3.zero; if (spawnInfos.Length > 0) { pt = spawnInfos[0].transform.position; } if (Loader.Instance.Network.IsClient) { return; } if (NavMesh.SamplePosition(pt, out NavMeshHit hit, 1f, NavMesh.AllAreas)) { if (!SimulatorManager.Instance.IsAPI && !Loader.Instance.Network.IsClient) { SpawnPedPool(); if (PedestriansActive) { SetPedOnMap(true); } } }
public void Start() { RigidBody = GetComponentInParent <Rigidbody>(); MapOrigin = MapOrigin.Find(); Task.Run(Publisher); }
private void OnSceneGUI() { Origin = (MapOrigin)target; if (Origin == null) { return; } if (Origin.transform.rotation != Quaternion.Euler(new Vector3(0f, -90f, 0f))) { Origin.transform.rotation = Quaternion.Euler(new Vector3(0f, -90f, 0f)); HelpText = "MapOrigin transform must be -90 in the Y axis"; } var style = new GUIStyle(); Handles.BeginGUI(); if (GUILayout.Button("Orient Scene", GUILayout.Width(125))) { SceneView sceneView = SceneView.lastActiveSceneView; sceneView.orthographic = true; sceneView.LookAt(new Vector3(0f, 0f, 0f), Quaternion.Euler(90, -90, 0)); } Handles.EndGUI(); var size = HandleUtility.GetHandleSize(Origin.transform.position); style.fontSize = (int)(65 / size); style.fontStyle = FontStyle.Bold; style.normal.textColor = Color.red; Handles.Label(Origin.transform.position + Origin.transform.forward + new Vector3(0, 1, 0), "N", style); style.normal.textColor = Color.white; Handles.Label(Origin.transform.position + Origin.transform.right + new Vector3(0, 1, 0), "E", style); Handles.Label(Origin.transform.position - Origin.transform.forward + new Vector3(0, 1, 0), "S", style); Handles.Label(Origin.transform.position - Origin.transform.right + new Vector3(0, 1, 0), "W", style); }
// read map origin, update MapOrigin bool CreateOrUpdateMapOrigin(Map apolloMap, MapOrigin mapOrigin) { var header = apolloMap.header; var geoReference = header.projection.proj; var items = geoReference.Split('+') .Select(s => s.Split('=')) .Where(s => s.Length > 1) .ToDictionary(element => element[0].Trim(), element => element[1].Trim()); if (!items.ContainsKey("proj") || items["proj"] != "utm") { return(false); } double latitude, longitude; longitude = (header.left + header.right) / 2; latitude = (header.top + header.bottom) / 2; int zoneNumber; if (items.ContainsKey("zone")) { zoneNumber = int.Parse(items["zone"]); } else { zoneNumber = MapOrigin.GetZoneNumberFromLatLon(latitude, longitude); } mapOrigin.UTMZoneId = zoneNumber; mapOrigin.FromLatitudeLongitude(latitude, longitude, out mapOrigin.OriginNorthing, out mapOrigin.OriginEasting); return(true); }
private void AddReferencePoint(MapOrigin origin) { var index = FindObjectsOfType <MapOriginReferencePoint>(true).Length + 1; var p = new GameObject("ReferencePoint" + index).AddComponent <MapOriginReferencePoint>(); if (SceneView.lastActiveSceneView != null) { var camera = SceneView.lastActiveSceneView.camera.transform; if (Physics.Raycast(new Ray(camera.position, camera.forward), out var hit)) { p.transform.position = hit.point; } } var gps = origin.GetGpsLocation(p.transform.position); p.latitue = gps.Latitude; p.longitude = gps.Longitude; var mapHolder = FindObjectOfType <MapHolder>().transform; var holder = mapHolder.Find("ReferencePoints"); if (holder == null) { holder = new GameObject("ReferencePoints").transform; holder.parent = mapHolder; } p.transform.parent = holder; Selection.activeGameObject = p.gameObject; }
private void Start() { MapOrigin = MapOrigin.Find(); NPCSpawnCheckBitmask = LayerMask.GetMask("NPC", "Agent"); SpawnBoundsSize = new Vector3(MapOrigin.NPCSpawnBoundSize, 50f, MapOrigin.NPCSpawnBoundSize); NPCMaxCount = MapOrigin.NPCMaxCount; SimulatorCamera = SimulatorManager.Instance.CameraManager.SimulatorCamera; MapManager = SimulatorManager.Instance.MapManager; NPCVehicles.Clear(); foreach (var data in Simulator.Web.Config.NPCVehicles) { NPCVehicles.Add(new NPCS { NPCType = data.Value.NPCType, Prefab = data.Value.prefab, }); if (NPCColorData.Count(d => d.Type == data.Value.NPCType) == 0) { Debug.LogWarning($"NPC of type {data.Value.NPCType} loaded but no colors to pick configured for this type"); } } var network = Loader.Instance.Network; network.MessagesManager?.RegisterObject(this); if (!SimulatorManager.Instance.IsAPI && !network.IsClient) { SpawnNPCPool(); if (NPCActive) { SetNPCOnMap(); } } }
public void ExportHDMap() { mapManager = FindObjectOfType <MapManager>(); if (mapManager == null) { Debug.LogError("Error! No MapManager.cs in scene!"); return; } mapManager.SetMapForExport(); //use the settings from current tool PROXIMITY = proximity; ARROWSIZE = arrowSize; MapOrigin mapOrigin = FindObjectOfType <MapOrigin>(); if (mapOrigin == null) { Debug.LogError("Error! No MapOrigin.cs in scene!"); return; } OriginEasting = mapOrigin.OriginEasting; OriginNorthing = mapOrigin.OriginNorthing; Angle = mapOrigin.Angle; if (Calculate()) { Export(); } }
public void Execute(JSONNode args) { var api = ApiManager.Instance; var map = MapOrigin.Find(); if (map == null) { api.SendError(this, "MapOrigin not found. Is the scene loaded?"); return; } var position = args["transform"]["position"].ReadDouble3(); var rotation = args["transform"]["rotation"].ReadDouble3(); double northing, easting; map.PositionToNorthingEasting(position, out northing, out easting); double latitude, longitude; map.NorthingEastingToLatLong(northing, easting, out latitude, out longitude); var result = new JSONObject(); result.Add("latitude", new JSONNumber(latitude)); result.Add("longitude", new JSONNumber(longitude)); result.Add("northing", new JSONNumber(northing)); result.Add("easting", new JSONNumber(easting)); result.Add("altitude", new JSONNumber(position.y + map.AltitudeOffset)); result.Add("orientation", new JSONNumber(-rotation.y)); api.SendResult(this, result); }
private void Start() { MapOrigin = MapOrigin.Find(); spawnsManager = GetComponent <SpawnsManager>(); NPCMaxCount = MapOrigin.NPCMaxCount; SimCameraManager = SimulatorManager.Instance.CameraManager; SimulatorCamera = SimCameraManager.SimulatorCamera; MapManager = SimulatorManager.Instance.MapManager; InitSpawn = true; NPCVehicles.Clear(); if (Loader.Instance.CurrentSimulation == null) { return; } if (Loader.Instance.CurrentSimulation.NPCs == null) { Loader.Instance.CurrentSimulation.NPCs = Simulator.Web.Config.NPCVehicles.Values.ToArray(); } foreach (var data in Loader.Instance.CurrentSimulation.NPCs) { if (data.Enabled) { GameObject obj = null; foreach (var item in Simulator.Web.Config.NPCVehicles.Values) { if (item.Name == data.Name) { obj = item.Prefab; } } NPCVehicles.Add(new NPCAssetData { NPCType = data.NPCType, Prefab = obj, }); if (NPCColorData.Count(d => d.Type == data.NPCType) == 0) { Debug.LogWarning($"NPC of type {data.NPCType} loaded but no colors to pick configured for this type"); } } } var network = Loader.Instance.Network; network.MessagesManager?.RegisterObject(this); if (!SimulatorManager.Instance.IsAPI && !network.IsClient) { SpawnNPCPool(); if (NPCActive) { SetNPCOnMap(true); } } }
void Start() { MapOrigin = MapOrigin.Find(); WireframeBoxes = SimulatorManager.Instance.WireframeBoxes; rangeTrigger.SetCallbacks(WhileInRange); rangeTrigger.transform.localScale = MaxDistance * UnityEngine.Vector3.one; nextSend = Time.time + 1.0f / Frequency; }
public void Execute(JSONNode argsArray) { var api = ApiManager.Instance; var map = MapOrigin.Find(); if (map == null) { api.SendError(this, "MapOrigin not found. Is the scene loaded?"); return; } var results = new JSONArray(); var arr = argsArray.AsArray; foreach (var args in arr.Children) { Vector3 position; if (args["latitude"] == null) { var northing = args["northing"].AsDouble; var easting = args["easting"].AsDouble; position = map.NorthingEastingToPosition(northing, easting); } else { var latitude = args["latitude"].AsDouble; var longitude = args["longitude"].AsDouble; double northing, easting; map.LatLongToNorthingEasting(latitude, longitude, out northing, out easting); position = map.NorthingEastingToPosition(northing, easting); } var altitude = args["altitude"]; if (altitude != null) { position.y = altitude.AsFloat - map.AltitudeOffset; } Vector3 rotation = Vector3.zero; var orientation = args["orientation"]; if (orientation != null) { rotation.y = -orientation.AsFloat; } var result = new JSONObject(); result.Add("position", position); result.Add("rotation", rotation); results.Add(result); } api.SendResult(this, results); }
private void Awake() { if (Agent == null) { Agent = transform.root.gameObject; } AddUIElement(); MapOrigin = GameObject.Find("/MapOrigin").GetComponent <MapOrigin>(); }
public void Init(MapOrigin origin) { this.origin = origin; var gps = origin.GetGpsLocation(origin.transform.position); latitude = Math.Round(gps.Latitude, 6); longitude = Math.Round(gps.Longitude, 6); minSize = new Vector2(250, 120); maxSize = new Vector2(300, 120); }
public override void OnBridgeSetup(IBridge bridge) { Bridge = bridge; Writer = bridge.AddWriter <CanBusData>(Topic); RigidBody = GetComponentInParent <Rigidbody>(); Actions = GetComponentInParent <VehicleActions>(); Dynamics = GetComponentInParent <VehicleDynamics>(); MapOrigin = MapOrigin.Find(); }
void Start() { WireframeBoxes = SimulatorManager.Instance.WireframeBoxes; rangeTrigger.SetCallbacks(WhileInRange); rangeTrigger.transform.localScale = MaxDistance * Vector3.one; nextSend = SimulatorManager.Instance.CurrentTime + 1.0f / Frequency; MapOrigin = MapOrigin.Find(); startTime = SimulatorManager.Instance.CurrentTime; prevTimes = new Dictionary <string, double>(); isToRecord = false; }
public void Execute(JSONNode args) { var api = ApiManager.Instance; var map = MapOrigin.Find(); if (map == null) { api.SendError("MapOrigin not found. Is the scene loaded?"); return; } Vector3 position; if (args["latitude"] == null) { var northing = args["northing"].AsDouble; var easting = args["easting"].AsDouble; position = map.FromNorthingEasting(northing, easting); } else { var latitude = args["latitude"].AsDouble; var longitude = args["longitude"].AsDouble; double northing, easting; map.FromLatitudeLongitude(latitude, longitude, out northing, out easting); position = map.FromNorthingEasting(northing, easting); } var altitude = args["altitude"]; if (altitude != null) { position.y = altitude.AsFloat - map.AltitudeOffset; } Vector3 rotation = Vector3.zero; var orientation = args["orientation"]; if (orientation != null) { rotation.y = -orientation.AsFloat; } var result = new JSONObject(); result.Add("position", position); result.Add("rotation", rotation); api.SendResult(result); }
protected virtual void Start() { MapOrigin = MapOrigin.Find(); SpawnsManager = GetComponent <SpawnsManager>(); NPCMaxCount = MapOrigin.NPCMaxCount; NPCVehicles.Clear(); InitialSpawn = false; if (Loader.Instance.CurrentSimulation == null) { return; } if (Loader.Instance.CurrentSimulation.NPCs == null) { Loader.Instance.CurrentSimulation.NPCs = Simulator.Web.Config.NPCVehicles.Values.ToArray(); } foreach (var data in Loader.Instance.CurrentSimulation.NPCs) { if (data.Enabled) { GameObject obj = null; foreach (var item in Simulator.Web.Config.NPCVehicles.Values) { if (item.Name == data.Name) { obj = item.Prefab; } } NPCVehicles.Add(new NPCAssetData { NPCType = data.NPCType, Prefab = obj, Name = data.Name, AssetGuid = data.AssetGuid }); if (NPCColorData.Count(d => d.Type == data.NPCType) == 0) { Debug.LogWarning($"NPC of type {data.NPCType} loaded but no colors to pick configured for this type"); } } } var network = Loader.Instance.Network; network.MessagesManager?.RegisterObject(this); if (!SimulatorManager.Instance.IsAPI && !network.IsClient) // TODO API mode always remove need to pool check { SpawnNPCPool(); } }
Manifest PrepareSceneManifest(Entry sceneEntry, HashSet <Scene> currentScenes) { Scene scene = EditorSceneManager.OpenScene(sceneEntry.mainAssetFile, OpenSceneMode.Additive); NodeTreeLoader[] loaders = GameObject.FindObjectsOfType <NodeTreeLoader>(); string dataPath = GameObject.FindObjectOfType <NodeTreeLoader>()?.GetFullDataPath(); List <Tuple <string, string> > loaderPaths = new List <Tuple <string, string> >(); foreach (NodeTreeLoader loader in loaders) { loaderPaths.Add(new Tuple <string, string>(Utilities.Utility.StringToGUID(loader.GetDataPath()).ToString(), loader.GetFullDataPath())); } try { foreach (GameObject root in scene.GetRootGameObjects()) { MapOrigin origin = root.GetComponentInChildren <MapOrigin>(); if (origin != null) { var manifest = new Manifest { assetName = sceneEntry.name, assetGuid = Guid.NewGuid().ToString(), bundleFormat = BundleConfig.Versions[BundleConfig.BundleTypes.Environment], description = origin.Description, licenseName = origin.LicenseName, authorName = "", authorUrl = "", fmuName = "", }; manifest.additionalFiles = new Dictionary <string, string>(); foreach (Tuple <string, string> t in loaderPaths) { if (!manifest.additionalFiles.ContainsKey($"pointcloud_{t.Item1}")) { manifest.additionalFiles.Add($"pointcloud_{t.Item1}", t.Item2); } } return(manifest); } } throw new Exception($"Build failed: MapOrigin on {sceneEntry.name} not found. Please add a MapOrigin component."); } finally { if (!currentScenes.Contains(scene)) { EditorSceneManager.CloseScene(scene, true); } } }
protected virtual void Initialize() { if (IsInitialized) { return; } MapOrigin = MapOrigin.Find(); SpawnBoundsSize = new Vector3(MapOrigin.NPCSpawnBoundSize, 50f, MapOrigin.NPCSpawnBoundSize); VisibleLM = LayerMask.GetMask("Default", "NPC", "Pedestrian", "Obstacle"); NPCSpawnCheckBitmask = LayerMask.GetMask("NPC", "Agent", "Pedestrian"); CacheSpawnPoints(); IsInitialized = true; }
public void ExportHDMap() { //use the settings from current tool PROXIMITY = proximity; ARROWSIZE = arrowSize; MapOrigin mapOrigin = GameObject.Find("/MapOrigin").GetComponent <MapOrigin>(); OriginEasting = mapOrigin.OriginEasting; OriginNorthing = mapOrigin.OriginNorthing; Angle = mapOrigin.Angle; if (Calculate()) { Export(); } }
private void Start() { MapOrigin = MapOrigin.Find(); NPCSpawnCheckBitmask = LayerMask.GetMask("NPC", "Agent"); SpawnBoundsSize = new Vector3(MapOrigin.NPCSpawnBoundSize, 50f, MapOrigin.NPCSpawnBoundSize); NPCMaxCount = MapOrigin.NPCMaxCount; SimulatorCamera = SimulatorManager.Instance.CameraManager.SimulatorCamera; if (!SimulatorManager.Instance.IsAPI) { SpawnNPCPool(); if (NPCActive) { SetNPCOnMap(); } } }
void Start() { WireframeBoxes = SimulatorManager.Instance.WireframeBoxes; if (RangeTrigger == null) { RangeTrigger = GetComponentInChildren <RangeTrigger>(); } RangeTrigger.SetCallbacks(WhileInRange); RangeTrigger.transform.localScale = MaxDistance * Vector3.one; MapOrigin = MapOrigin.Find(); Detected = new Dictionary <uint, Tuple <Detected3DObject, Collider> >(); CurrentIDs = new HashSet <uint>(); StartCoroutine(OnPublish()); }
private void Awake() { if (Agent == null) { Agent = transform.root.gameObject; } AddUIElement(); MapOrigin mapOrigin = GameObject.Find("/MapOrigin").GetComponent <MapOrigin>(); OriginEasting = mapOrigin.OriginEasting; OriginNorthing = mapOrigin.OriginNorthing; Angle = mapOrigin.Angle; if (targetEnv == ROSTargetEnvironment.AUTOWARE) { Angle = 0; } UTMZoneId = mapOrigin.UTMZoneId; }
private void Start() { MapOrigin = MapOrigin.Find(); NPCSpawnCheckBitmask = LayerMask.GetMask("NPC", "Agent"); SpawnBoundsSize = new Vector3(MapOrigin.NPCSpawnBoundSize, 50f, MapOrigin.NPCSpawnBoundSize); NPCMaxCount = MapOrigin.NPCMaxCount; SimulatorCamera = SimulatorManager.Instance.CameraManager.SimulatorCamera; var network = Loader.Instance.Network; network.MessagesManager?.RegisterObject(this); if (!SimulatorManager.Instance.IsAPI && !network.IsClient) { SpawnNPCPool(); if (NPCActive) { SetNPCOnMap(); } } }
Vector3 GetPosition(ROSTargetEnvironment targetEnv, double easting, double northing) { MapOrigin mapOrigin = GameObject.Find("/MapOrigin").GetComponent <MapOrigin>(); if (targetEnv == ROSTargetEnvironment.APOLLO || targetEnv == ROSTargetEnvironment.APOLLO35) { easting += 500000; } easting -= mapOrigin.OriginEasting; northing -= mapOrigin.OriginNorthing; float x = (float)easting; float z = (float)northing; if (targetEnv == ROSTargetEnvironment.AUTOWARE) { return(new Vector3(x, 0, z)); } return(Quaternion.Euler(0f, -mapOrigin.Angle, 0f) * new Vector3(x, 0, z)); }
void OnGUI() { GUILayout.Space(10); if (GUILayout.Button("Open Google Maps \u2316")) { Application.OpenURL($"https://www.google.com/maps/@{latitude},{longitude},15z"); } GUILayout.Space(10); latitude = EditorGUILayout.DoubleField("Latitude", latitude); longitude = EditorGUILayout.DoubleField("Longitude", longitude); GUILayout.Space(10); if (GUILayout.Button("Import Coordinates")) { origin.UTMZoneId = MapOrigin.GetZoneNumberFromLatLon(latitude, longitude); origin.FromLatitudeLongitude(latitude, longitude, out var northing, out var easting); origin.OriginNorthing = Math.Round(northing, 2); origin.OriginEasting = Math.Round(easting, 2); this.Close(); } }