protected override void AfterUpdate() { RaycastHit hit; if (Physics.Raycast(activeCamera.ScreenPointToRay(Input.mousePosition), out hit)) { OnlineMapsMarker3DInstance instance = hit.collider.gameObject.GetComponent<OnlineMapsMarker3DInstance>(); if (instance != null) { api.tooltip = instance.marker.label; api.tooltipMarker = instance.marker; } } if (allowAddMarker3DByN && Input.GetKeyUp(KeyCode.N)) { OnlineMapsMarker3D m = new OnlineMapsMarker3D { position = GetCoords() }; m.Init(transform); m.Update(api.topLeftPosition, api.bottomRightPosition, api.zoom); List<OnlineMapsMarker3D> markerList = markers3D.ToList(); markerList.Add(m); markers3D = markerList.ToArray(); } }
private void OnGUIMarkers() { if (control.markers3D == null) control.markers3D = new OnlineMapsMarker3D[0]; if (GUILayout.Button("Add marker")) { OnlineMapsMarker3D marker = new OnlineMapsMarker3D {position = control.GetComponent<OnlineMaps>().position}; List<OnlineMapsMarker3D> markers = new List<OnlineMapsMarker3D>(control.markers3D) {marker}; control.markers3D = markers.ToArray(); } int index = 1; bool hasDeleted = false; OnlineMaps map = control.GetComponent<OnlineMaps>(); for (int i = 0; i < control.markers3D.Length; i++) OnGUIMarker(i, ref index, ref hasDeleted, map); if (hasDeleted) { List<OnlineMapsMarker3D> markers = control.markers3D.ToList(); markers.RemoveAll(m => m == null); control.markers3D = markers.ToArray(); } EditorGUILayout.Space(); }
/// <summary> /// Removes the specified 3D marker. /// </summary> /// <param name="marker">3D marker</param> public void RemoveMarker3D(OnlineMapsMarker3D marker) { List<OnlineMapsMarker3D> ms = markers3D.ToList(); ms.Remove(marker); markers3D = ms.ToArray(); if (marker.instance != null) Destroy(marker.instance); }
private void Start() { // Gets the current 3D control. OnlineMapsControlBase3D control = GetComponent<OnlineMapsControlBase3D>(); if (control == null) { Debug.LogError("You must use the 3D control (Texture or Tileset)."); return; } //Create a marker to show the current GPS coordinates. //Instead of "null", you can specify the texture desired marker. locationMarker = control.AddMarker3D(Vector2.zero, prefab); //Hide handle until the coordinates are not received. locationMarker.enabled = false; // Gets Location Service Component. OnlineMapsLocationService ls = OnlineMapsLocationService.instance; if (ls == null) { Debug.LogError( "Location Service not found.\nAdd Location Service Component (Component / Infinity Code / Online Maps / Plugins / Location Service)."); return; } //Subscribe to the GPS coordinates change ls.OnLocationChanged += OnLocationChanged; ls.OnCompassChanged += OnCompassChanged; //Subscribe to zoom change OnlineMaps.instance.OnChangeZoom += OnChangeZoom; }
/// <summary> /// Adds a new 3D marker on the map. /// </summary> /// <param name="markerPosition">Vector2. X - Longituge, Y - Latitude.</param> /// <param name="prefab">Marker prefab.</param> /// <returns>Marker instance.</returns> public OnlineMapsMarker3D AddMarker3D(Vector2 markerPosition, GameObject prefab) { List<OnlineMapsMarker3D> ms = markers3D.ToList(); OnlineMapsMarker3D marker = new OnlineMapsMarker3D { position = markerPosition, prefab = prefab }; marker.Init(transform); ms.Add(marker); markers3D = ms.ToArray(); return marker; }
private void Start() { // Get instance of OnlineMapsControlBase3D (Texture or Tileset) OnlineMapsControlBase3D control = GetComponent<OnlineMapsControlBase3D>(); // Marker position. Geographic coordinates. Vector2 markerPosition = new Vector2(0, 0); // Create 3D marker marker3D = control.AddMarker3D(markerPosition, markerPrefab); // Specifies that marker should be shown only when zoom from 1 to 10. marker3D.range = new OnlineMapsRange(1, 10); }
public void RemoveAllMarker3D() { for (int i = 0; i < OnlineMapsMarker3DManager.instance.Count; i++) { OnlineMapsMarker3D marker = OnlineMapsMarker3DManager.instance[i]; if (marker.instance != null) { OnlineMapsUtils.Destroy(marker.instance); } marker.Dispose(); } OnlineMapsMarker3DManager.RemoveAllItems(); }
private void OnMapClick() { control.GetCoords(out targetLng, out targetLat); if (targetMarker == null) { targetMarker = OnlineMapsMarker3DManager.CreateItem(targetLng, targetLat, targetPrefab); targetMarker.scale = targetScale; } else { targetMarker.SetPosition(targetLng, targetLat); } double tx1, ty1, tx2, ty2; map.projection.CoordinatesToTile(lng, lat, map.zoom, out tx1, out ty1); map.projection.CoordinatesToTile(targetLng, targetLat, map.zoom, out tx2, out ty2); rotation = (float)OnlineMapsUtils.Angle2D(tx1, ty1, tx2, ty2) - 90; hasTargetPoint = true; if (lineRenderer == null) { GameObject go = new GameObject("LineRenderer"); go.transform.SetParent(transform, false); lineRenderer = go.AddComponent <LineRenderer>(); lineRenderer.material = lineRendererMaterial; #if UNITY_2017_3_OR_NEWER lineRenderer.positionCount = 2; lineRenderer.widthCurve = AnimationCurve.Constant(0, 1, 10); #elif UNITY_2017_1_OR_NEWER lineRenderer.positionCount = 2; lineRenderer.widthCurve = AnimationCurve.Linear(0, 10, 1, 10); #else lineRenderer.SetVertexCount(2); lineRenderer.SetWidth(10, 10); #endif } else { lineRenderer.enabled = true; } Vector3 p1 = control.GetWorldPosition(lng, lat); lineRenderer.SetPosition(0, p1); lineRenderer.SetPosition(1, p1); lineRendererProgress = 0; }
private void UpdateScale(OnlineMapsMarker3D marker3D) { if (marker3D.sizeType == OnlineMapsMarker3D.SizeType.scene) { transform.localScale = new Vector3(_scale, _scale, _scale); } else if (marker3D.sizeType == OnlineMapsMarker3D.SizeType.realWorld) { float coof = (1 << (OnlineMaps.MAXZOOM - OnlineMaps.instance.zoom)) / OnlineMaps.instance.zoomCoof; float s = _scale / coof; transform.localScale = new Vector3(s, s, s); } lastZoom = OnlineMaps.instance.floatZoom; }
public override void graphicReset() { if (marker2D != null) { marker2D.Dispose(); } if (marker3D != null) { marker3D.Dispose(); } marker2D = null; marker3D = null; }
/// <summary> /// Removes the specified 3D marker. /// </summary> /// <param name="marker">3D marker</param> public void RemoveMarker3D(OnlineMapsMarker3D marker) { if (OnRemoveMarker3D != null && OnRemoveMarker3D(marker)) { return; } List <OnlineMapsMarker3D> ms = markers3D.ToList(); ms.Remove(marker); markers3D = ms.ToArray(); if (marker.instance != null) { OnlineMapsUtils.DestroyImmediate(marker.instance); } }
private void Start() { // Create a new markers. OnlineMapsMarker3D marker1 = OnlineMapsControlBase3D.instance.AddMarker3D(new Vector2(0, 0), prefab); OnlineMapsMarker3D marker2 = OnlineMapsControlBase3D.instance.AddMarker3D(new Vector2(10, 0), prefab); // Create new customData. marker1.customData = new MarkerClickCountExampleCustomData(); marker2.customData = new MarkerClickCountExampleCustomData(); // Subscribe to click event. marker1.OnClick += OnMarkerClick; marker2.OnClick += OnMarkerClick; marker1.OnPress += OnPress; }
private void Start() { // Create a new markers. OnlineMapsMarker3D marker1 = OnlineMapsMarker3DManager.CreateItem(new Vector2(0, 0), prefab); OnlineMapsMarker3D marker2 = OnlineMapsMarker3DManager.CreateItem(new Vector2(10, 0), prefab); // Create new customData. marker1["clickCount"] = new MarkerClickCountExampleCustomData(); marker2["clickCount"] = new MarkerClickCountExampleCustomData(); // Subscribe to click event. marker1.OnClick += OnMarkerClick; marker2.OnClick += OnMarkerClick; marker1.OnPress += OnPress; }
/// <summary> /// Removes all 3D markers that contain a tag. /// </summary> /// <param name="tags">Tags of 3D markers that must be removed.</param> public void RemoveMarkers3DByTag(params string[] tags) { if (tags.Length == 0) { return; } int countRemoved = 0; for (int i = 0; i < markers3D.Length; i++) { OnlineMapsMarker3D marker = markers3D[i]; if (marker.tags == null || marker.tags.Count == 0) { continue; } bool hasTag = false; for (int j = 0; j < tags.Length; j++) { if (marker.tags.Contains(tags[j])) { hasTag = true; break; } } if (hasTag) { marker.Dispose(); if (marker.instance != null) { OnlineMapsUtils.DestroyImmediate(marker.instance); } countRemoved++; } else { markers3D[i - countRemoved] = marker; } } if (countRemoved > 0) { Array.Resize(ref markers3D, markers3D.Length - countRemoved); } }
private static void LoadMarkers3D(OnlineMapsXML el, OnlineMaps api) { OnlineMapsControlBase3D control = api.GetComponent <OnlineMapsControlBase3D>(); List <OnlineMapsMarker3D> markers = new List <OnlineMapsMarker3D>(); foreach (OnlineMapsXML m in el) { OnlineMapsMarker3D marker = new OnlineMapsMarker3D(); marker.position = m.Get <Vector2>("Position"); marker.range = m.Get <OnlineMapsRange>("Range"); marker.label = m.Get <string>("Label"); marker.prefab = GetObject(m.Get <int>("Prefab")) as GameObject; marker.rotation = Quaternion.Euler(m.Get <Vector3>("Rotation")); markers.Add(marker); } control.markers3D = markers.ToArray(); }
/// <summary> /// Adds a new 3D marker on the map. /// </summary> /// <param name="markerPosition">Vector2. X - Longituge, Y - Latitude.</param> /// <param name="prefab">Marker prefab.</param> /// <returns>Marker instance.</returns> public OnlineMapsMarker3D AddMarker3D(Vector2 markerPosition, GameObject prefab) { List <OnlineMapsMarker3D> ms = markers3D.ToList(); OnlineMapsMarker3D marker = new OnlineMapsMarker3D { position = markerPosition, prefab = prefab, control = this, scale = marker3DScale, allowDefaultMarkerEvents = allowDefaultMarkerEvents }; marker.Init(transform); ms.Add(marker); markers3D = ms.ToArray(); return(marker); }
/// <summary> /// Removes 3D marker by index. /// </summary> /// <param name="markerIndex">Marker index.</param> public void RemoveMarker3DAt(int markerIndex) { if (markerIndex < 0 || markerIndex >= markers3D.Length) { return; } OnlineMapsMarker3D marker = markers3D[markerIndex]; List <OnlineMapsMarker3D> ms = markers3D.ToList(); ms.Remove(marker); markers3D = ms.ToArray(); if (marker.instance != null) { Destroy(marker.instance); } }
private void Start() { //Create a marker to show the current GPS coordinates. //Instead of "null", you can specify the texture desired marker. locationMarker = GetComponent<OnlineMapsTextureControl>().AddMarker3D(Vector2.zero, prefab); //Hide handle until the coordinates are not received. locationMarker.enabled = false; //Subscribe to the GPS coordinates change OnlineMapsLocationService ls = GetComponent<OnlineMapsLocationService>(); ls.OnLocationChanged += OnLocationChanged; ls.OnCompassChanged += OnCompassChanged; //Subscribe to zoom change OnlineMaps.instance.OnChangeZoom += OnChangeZoom; }
public bool moveWaypoint(float altitude) { Debug.Log("moving waypoint"); // Screen coordinate of the cursor. Vector3 mousePosition = Input.mousePosition; Debug.Log("mousePosition: " + mousePosition); Vector3 mouseGeoLocation = OnlineMapsControlBase.instance.GetCoords(mousePosition); Debug.Log("mouseGeoLocation: " + mouseGeoLocation); //mouseGeoLocation.z = 100; // should create a new marker newSphere = Instantiate(prefabSphere, mouseGeoLocation, Quaternion.identity); newSphere.transform.name = (pointCounter++).ToString(); newSphere.AddComponent <LineRenderer>(); newSphere.GetComponent <LineRenderer>().startWidth = 100; newSphere.GetComponent <LineRenderer>().endWidth = 100; Renderer newSphereRenderer = newSphere.GetComponent(typeof(Renderer)) as Renderer; newSphereRenderer.enabled = true; OnlineMapsMarker3D marker = OnlineMapsMarker3DManager.CreateItem(mouseGeoLocation, newSphere); marker.altitudeType = OnlineMapsAltitudeType.relative; marker.altitude = altitude; // create waypoint object and add it to list Waypoint point = new Waypoint(marker); Waypoint temp = spawnUI.selectedWaypoint; point.Number = pointCounter; point.Marker.altitude = temp.Marker.altitude; points[points.FindIndex(ind => ind.Equals(temp))] = point; deleteWaypoint(temp); OnlineMaps.instance.Redraw(); remove.removeUI(); remove.resetSphereStatus(); return(true); }
private void Start() { defaultZoom = OnlineMaps.instance.zoom; // Lock map zoom range OnlineMaps.instance.zoomRange = new OnlineMapsRange(2, 19.5f); // Gets the current 3D control. OnlineMapsControlBase3D control = OnlineMapsControlBase3D.instance; if (control == null) { Debug.LogError("You must use the 3D control (Texture or Tileset)."); return; } //Create a marker to show the current GPS coordinates. //Instead of "null", you can specify the texture desired marker. locationMarker = OnlineMapsMarker3DManager.CreateItem(Vector2.zero, prefab); //Hide handle until the coordinates are not received. locationMarker.enabled = false; locationMarker.scale = scaleSize; locationMarker.instance.name = "Player"; markerSprite = locationMarker.instance.transform.GetChild(0); // Gets Location Service Component. OnlineMapsLocationService ls = OnlineMapsLocationService.instance; if (ls == null) { Debug.LogError( "Location Service not found.\nAdd Location Service Component (Component / Infinity Code / Online Maps / Plugins / Location Service)."); return; } //Subscribe to the GPS coordinates change ls.OnLocationChanged += OnLocationChanged; ls.OnCompassChanged += OnCompassChanged; //Subscribe to zoom change OnlineMaps.instance.OnChangeZoom += OnChangeZoom; }
private void Start() { // Get instance of OnlineMapsControlBase3D (Texture or Tileset) OnlineMapsControlBase3D control = OnlineMapsControlBase3D.instance; if (control == null) { Debug.LogError("You must use the 3D control (Texture or Tileset)."); return; } // Marker position. Geographic coordinates. Vector2 markerPosition = new Vector2(0, 0); // Create 3D marker marker3D = OnlineMapsMarker3DManager.CreateItem(markerPosition, markerPrefab); // Specifies that marker should be shown only when zoom from 1 to 10. marker3D.range = new OnlineMapsRange(1, 10); }
public MapPointMarker(float longitud, float latitud, GameObject prefabObject, bool cluster) : base(longitud, latitud) { //Debug.Log("Longi,Lat --> " + longitud+","+latitud); marker3D = OnlineMapsMarker3DManager.CreateItem(new Vector2(longitud, latitud), prefabObject); if (marker3D != null) { marker3D.transform.name = this.label; } marker2D = OnlineMapsMarkerManager.CreateItem(new Vector2(longitud, latitud), ""); this.cluster = cluster; /*if (this.cluster) * { * if (marker3D != null) marker3D.DestroyInstance(); * marker3D = null; * }*/ this.initData(); if (marker2D != null) { marker2D.OnClick += OnMarkerClick; if (dimension == MapPoint.THREE_DIMENSION) { marker2D.enabled = false; } } if (marker3D != null) { marker3D.OnClick += OnMarkerClick; if (dimension == MapPoint.TWO_DIMENSION) { marker3D.enabled = false; } } }
private void UpdateMarker() { if (_marker == null) { if (markerType == OnlineMapsLocationServiceMarkerType.twoD) { OnlineMapsMarker m2d = OnlineMapsMarkerManager.CreateItem(position, marker2DTexture, markerTooltip); _marker = m2d; m2d.align = marker2DAlign; m2d.scale = markerScale; if (useCompassForMarker) { m2d.rotationDegree = trueHeading; } } else { OnlineMapsControlBase3D control = map.control as OnlineMapsControlBase3D; if (control == null) { Debug.LogError("You must use the 3D control (Texture or Tileset)."); createMarkerInUserPosition = false; return; } OnlineMapsMarker3D m3d = OnlineMapsMarker3DManager.CreateItem(position, marker3DPrefab); _marker = m3d; m3d.sizeType = marker3DSizeType; m3d.scale = markerScale; m3d.label = markerTooltip; if (useCompassForMarker) { m3d.rotationY = trueHeading; } } } else { _marker.position = position; } }
private static void Load(OnlineMaps api) { api.position = LoadPref("Position", api.position); api.zoom = LoadPref("Zoom", api.zoom); api.provider = (OnlineMapsProviderEnum) LoadPref("Provider", 0); api.customProviderURL = LoadPref("CustomProviderURL", "http://localhost/{zoom}/{y}/{x}"); api.type = LoadPref("Type", 0); api.labels = LoadPref("Labels", false); api.markers = new OnlineMapsMarker[LoadPref("Marker_Count", 0)]; for (int i = 0; i < api.markers.Length; i++) { OnlineMapsMarker marker = new OnlineMapsMarker(); marker.position = LoadPref("Marker_" + i + "_Position", marker.position); marker.range = LoadPref("Marker_" + i + "_Range", marker.range); int mid = LoadPref("Marker_" + i + "_Texture", 0); if (mid != 0) marker.texture = EditorUtility.InstanceIDToObject(mid) as Texture2D; marker.label = LoadPref("Marker_" + i + "_Label", marker.label); marker.align = (OnlineMapsAlign) LoadPref("Marker_" + i + "_Align", (int) marker.align); api.markers[i] = marker; } OnlineMapsTextureControl control = api.gameObject.GetComponent<OnlineMapsTextureControl>(); if (control != null) { control.markers3D = new OnlineMapsMarker3D[LoadPref("Marker3D_Count", 0)]; for (int i = 0; i < control.markers3D.Length; i++) { OnlineMapsMarker3D marker = new OnlineMapsMarker3D(); marker.position = LoadPref("Marker3D_" + i + "_Position", marker.position); marker.range = LoadPref("Marker3D_" + i + "_Range", marker.range); Debug.Log(marker.range); int mid = LoadPref("Marker3D_" + i + "_Prefab", 0); marker.prefab = EditorUtility.InstanceIDToObject(mid) as GameObject; marker.label = LoadPref("Marker3D_" + i + "_Label", marker.label); control.markers3D[i] = marker; } } }
protected void UpdateMarkers3D() { int zoom = map.zoom; double tlx, tly, brx, bry; map.GetCorners(out tlx, out tly, out brx, out bry); double ttlx, ttly, tbrx, tbry; map.projection.CoordinatesToTile(tlx, tly, zoom, out ttlx, out ttly); map.projection.CoordinatesToTile(brx, bry, zoom, out tbrx, out tbry); Bounds bounds = GetComponent <Collider>().bounds; float bestYScale = GetBestElevationYScale(tlx, tly, brx, bry); for (int i = 0; i < markers3D.Length; i++) { OnlineMapsMarker3D marker = markers3D[i]; marker.Update(map, this, bounds, tlx, tly, brx, bry, zoom, ttlx, ttly, tbrx, tbry, bestYScale); } }
void Start() { defaultZoom = OnlineMaps.instance.zoom; // Add OnClick events to dynamic markers dynamicMarker = OnlineMapsMarker3DManager.CreateItem(Longitude_User, Latitude_User, POIManager.instance.POI_Prefab); dynamicMarker.instance.name = string.Format("Marker_{0}", POI_Name); //dynamicMarker.OnClick += OnMarkerClick; //dynamicMarker.label = POI_Name; //dynamicMarker.SetDraggable(); SpriteRenderer render = dynamicMarker.instance.GetComponentInChildren <SpriteRenderer>(); render.sprite = ColorMarker == null ? render.sprite : ColorMarker; POIMarker markerPOI = dynamicMarker.instance.AddComponent <POIMarker>(); markerPOI.data = this; markerPOI.OnClickPOI += OnMarkerClick; //Subscribe to zoom change OnlineMaps.instance.OnChangeZoom += OnChangeZoom; }
public void RemoveMarker3DAt(int markerIndex) { if (OnRemoveMarker3DAt != null && OnRemoveMarker3DAt(markerIndex)) { return; } if (markerIndex < 0 || markerIndex >= OnlineMapsMarker3DManager.CountItems) { return; } OnlineMapsMarker3D marker = OnlineMapsMarker3DManager.instance[markerIndex]; if (marker.instance != null) { OnlineMapsUtils.Destroy(marker.instance); } marker.Dispose(); OnlineMapsMarker3DManager.RemoveItemAt(markerIndex); }
public bool importWaypoint(int number, int frame, int command, decimal delay, decimal radius, decimal pass, decimal yaw, float longitude, float latitude, float altitude) { string commandS = Waypoint.intToCommand(command); // Screen set pointer lat lon Vector3 mouseGeoLocation = new Vector3(latitude, longitude); // should create a new marker newSphere = Instantiate(prefabSphere, mouseGeoLocation, Quaternion.identity); newSphere.transform.name = (pointCounter++).ToString(); newSphere.AddComponent <LineRenderer>(); newSphere.GetComponent <LineRenderer>().startWidth = 100; newSphere.GetComponent <LineRenderer>().endWidth = 100; Renderer newSphereRenderer = newSphere.GetComponent(typeof(Renderer)) as Renderer; newSphereRenderer.enabled = true; OnlineMapsMarker3D marker = OnlineMapsMarker3DManager.CreateItem(mouseGeoLocation, newSphere); marker.altitudeType = OnlineMapsAltitudeType.relative; marker.altitude = altitude; // create waypoint object and add it to list Waypoint point = new Waypoint(marker); point.Number = pointCounter; point.Frame = frame; point.Command = commandS; point.Delay = delay; point.Radius = radius; point.Pass = pass; point.Yaw = yaw; points.Add(point); OnlineMaps.instance.Redraw(); return(true); }
/// <summary> /// Removes 3D marker by index. /// </summary> /// <param name="markerIndex">Marker index.</param> public void RemoveMarker3DAt(int markerIndex) { if (OnRemoveMarker3DAt != null && OnRemoveMarker3DAt(markerIndex)) { return; } if (markerIndex < 0 || markerIndex >= markers3D.Length) { return; } OnlineMapsMarker3D marker = markers3D[markerIndex]; List <OnlineMapsMarker3D> ms = markers3D.ToList(); ms.Remove(marker); markers3D = ms.ToArray(); if (marker.instance != null) { OnlineMapsUtils.DestroyImmediate(marker.instance); } marker.Dispose(); }
private static void LoadMarkers3D(OnlineMapsXML el, OnlineMaps api) { OnlineMapsControlBase3D control = api.GetComponent <OnlineMapsControlBase3D>(); List <OnlineMapsMarker3D> markers = new List <OnlineMapsMarker3D>(); foreach (OnlineMapsXML m in el) { OnlineMapsMarker3D marker = new OnlineMapsMarker3D(); double mx = m.Get <double>("Longitude"); double my = m.Get <double>("Latitude"); marker.SetPosition(mx, my); Debug.Log(m["Range"].outerXml); marker.range = m.Get <OnlineMapsRange>("Range"); marker.label = m.Get <string>("Label"); marker.prefab = GetObject(m.Get <int>("Prefab")) as GameObject; marker.rotation = Quaternion.Euler(m.Get <Vector3>("Rotation")); markers.Add(marker); } control.markers3D = markers.ToArray(); }
public void RemoveClicked() { if (OnlineMapsControlBase3D.instance.markers3D.Length == 0) { return; } OnlineMapsMarker3D closest = OnlineMapsControlBase3D.instance.markers3D[0]; var minDistance = float.PositiveInfinity; foreach (OnlineMapsMarker3D marker in OnlineMapsControlBase3D.instance.markers3D) { var distance = (OnlineMaps.instance.position - marker.position).magnitude; if (distance < minDistance) { closest = marker; minDistance = distance; } } if (closest != null && closest.instance.activeInHierarchy) { OnlineMapsControlBase3D.instance.RemoveMarker3D(closest); } }
public void skalerMarker(OnlineMapsMarker3D marker, float d) { if (d == null) { marker.instance.GetComponent<Renderer> ().material.color = new Color (1f, 1f, 1f); marker.instance.transform.localScale = new Vector3 ((float)defaultMarkerScale, minimumMarkerHeight, (float)defaultMarkerScale); return; } if (d < minimumMarkerHeight) { marker.instance.GetComponent<Renderer> ().material.color = new Color (1f, 1f, 1f); marker.instance.transform.localScale = new Vector3 ((float)defaultMarkerScale, minimumMarkerHeight, (float)defaultMarkerScale); } else { marker.instance.GetComponent<Renderer> ().material.color = new Color ((((d / maxMarkerHeight)/2f)+0.5f), (maxMarkerHeight - d) / maxMarkerHeight, 0f); marker.instance.transform.localScale = new Vector3 ((float)defaultMarkerScale, d, (float)defaultMarkerScale); } }
private void OnMarkerDrag(OnlineMapsMarker3D obj) { var position = OnlineMapsControlBase3D.instance.GetCoords(); obj.SetPosition(position.x, position.y); }
protected override void AfterUpdate() { base.AfterUpdate(); Vector2 inputPosition = GetInputPosition(); if (allowCameraControl) { #if (!UNITY_ANDROID && !UNITY_IPHONE) || UNITY_EDITOR if (Input.GetMouseButton(1)) { isCameraControl = true; if (lastInputPosition != inputPosition && lastInputPosition != Vector2.zero) { Vector2 offset = lastInputPosition - inputPosition; cameraRotation.x -= offset.y / 10f * cameraSpeed.x; cameraRotation.y -= offset.x / 10f * cameraSpeed.y; } lastInputPosition = inputPosition; } else if (isCameraControl) { lastInputPosition = Vector2.zero; isCameraControl = false; } #else if (!allowZoom && allowCameraControl) { if (Input.touchCount == 2) { Vector2 p1 = Input.GetTouch(0).position; Vector2 p2 = Input.GetTouch(1).position; Vector2 center = Vector2.Lerp(p1, p2, 0.5f); if (lastGestureCenter == Vector2.zero) { lastGestureCenter = center; } else if (lastGestureCenter != center) { Vector2 offset = lastGestureCenter - center; cameraRotation.x -= offset.y / 10f * cameraSpeed.x; cameraRotation.y -= offset.x / 10f * cameraSpeed.y; lastGestureCenter = center; } lastInputPosition = center; } else { lastGestureCenter = Vector2.zero; } } #endif UpdateCameraPosition(); } if (map.showMarkerTooltip == OnlineMapsShowMarkerTooltip.onHover) { OnlineMapsMarkerInstanceBase markerInstance = GetBillboardMarkerFromScreen(inputPosition); if (markerInstance != null) { map.tooltip = markerInstance.marker.label; map.tooltipMarker = markerInstance.marker; } } if (allowAddMarker3DByN && Input.GetKeyUp(KeyCode.N)) { OnlineMapsMarker3D marker = AddMarker3D(GetCoords(), default3DMarker != null? Instantiate(default3DMarker) as GameObject: null); marker.control = this; marker.scale = marker3DScale; } }
protected void DrawMarkersGUI(ref bool dirty) { EditorGUILayout.BeginVertical(GUI.skin.box); showMarkers = OnlineMapsEditor.Foldout(showMarkers, string.Format("3D markers (Count: {0})", pMarkers3D.arraySize)); if (showMarkers) { EditorGUILayout.PropertyField(pDefault3DMarker); EditorGUILayout.PropertyField(pMarker3DScale); EditorGUILayout.PropertyField(pAllowDefaultMarkerEvents); int removedIndex = -1; EditorGUI.BeginChangeCheck(); for (int i = 0; i < pMarkers3D.arraySize; i++) { EditorGUILayout.BeginVertical(GUI.skin.box); OnlineMapsMarker3DPropertyDrawer.isRemoved = false; OnlineMapsMarker3DPropertyDrawer.isEnabledChanged = null; EditorGUILayout.PropertyField(pMarkers3D.GetArrayElementAtIndex(i), new GUIContent("Marker " + (i + 1))); if (OnlineMapsMarker3DPropertyDrawer.isRemoved) { removedIndex = i; } if (OnlineMapsMarker3DPropertyDrawer.isEnabledChanged.HasValue) { control.markers3D[i].enabled = OnlineMapsMarker3DPropertyDrawer.isEnabledChanged.Value; } EditorGUILayout.EndHorizontal(); } if (EditorGUI.EndChangeCheck()) { dirty = true; } if (removedIndex != -1) { ArrayUtility.RemoveAt(ref control.markers3D, removedIndex); dirty = true; } EditorGUILayout.Space(); if (GUILayout.Button("Add Marker")) { if (!Application.isPlaying) { OnlineMapsMarker3D marker = new OnlineMapsMarker3D { position = control.GetComponent <OnlineMaps>().position, scale = pMarker3DScale.floatValue }; ArrayUtility.Add(ref control.markers3D, marker); } else { GameObject prefab = GameObject.CreatePrimitive(PrimitiveType.Cube); control.AddMarker3D(OnlineMaps.instance.position, prefab); OnlineMapsUtils.DestroyImmediate(prefab); } dirty = true; } } EditorGUILayout.EndVertical(); }
public void setMarker(OnlineMapsMarker3D marker){ this.marker = marker; }
public void RemoveMarker3D(OnlineMapsMarker3D marker) { OnlineMapsMarker3DManager.RemoveItem(marker); }
/// <summary> /// Adds a existing 3D marker on the map. /// </summary> /// <param name="marker">Instance of 3D marker.</param> /// <returns>Instance of 3D marker.</returns> public OnlineMapsMarker3D AddMarker3D(OnlineMapsMarker3D marker) { List<OnlineMapsMarker3D> ms = markers3D.ToList(); ms.Add(marker); markers3D = ms.ToArray(); return marker; }
void Populate(string filePath) { /* lokaliteter = new ArrayList (); lokaliteter.Add (new Lokalitet ("12394", "Ørnøya", new Vector2(63.759167f, 8.449133f))); lokaliteter.Add (new Lokalitet ("31959", "Rataren", new Vector2(63.782383f, 8.526367f))); */ var excelReader = new ExcelReader (); lokaliteter = excelReader.readFile (filePath, lokaliteter); OnlineMapsControlBase3D control = onlineMaps.GetComponent<OnlineMapsControlBase3D> (); control.RemoveAllMarker3D (); onlineMaps.RemoveAllDrawingElements (); enhetDrawingLines.Clear (); for (int i = 0; i < lokaliteter.Count; i++) { Lokalitet l = lokaliteter [i] as Lokalitet; GameObject mapObject = (GameObject)Resources.Load ("markerPrefab", typeof(GameObject)); //GameObject mapObject = Instantiate(Resources.Load("markerPrefab", typeof(GameObject))) as GameObject; //mapObject.name = lokaliteter[i].getLokalitetsnavn(); Vector2 position = l.getCoordinates (); marker = control.AddMarker3D (position, mapObject); marker.position = position; marker.label = l.getLokalitetsnavn (); marker.scale = defaultMarkerScale; marker.customData = l; control = onlineMaps.GetComponent<OnlineMapsControlBase3D> (); l.setMarker (marker); //control.AddMarker3D (marker); List<Enhet> enheter = l.getEnheter(); float radius = 0.1f; //var circlePoints = new List<Vector2> (); for(int j=0; j<l.getEnheter().Count; j++){ Enhet e = enheter[j] as Enhet; GameObject mapObjectChild = (GameObject)Resources.Load ("markerEnhetPrefab", typeof(GameObject)); //GameObject mapObjectChild = Instantiate(Resources.Load("markerEnhetPrefab", typeof(GameObject))) as GameObject; //mapObjectChild.name = enheter[j].getEnhetsId(); var angle = j * Mathf.PI * 2 / enheter.Count; position = l.getCoordinates (); var pos = new Vector2 (position.x + Mathf.Cos (angle) * radius, position.y + Mathf.Sin (angle) * radius * 0.5f); marker = control.AddMarker3D (pos, mapObjectChild); marker.label = l.getLokalitetsnavn () + ": " + e.getEnhetsId().Replace(" ", ""); marker.scale = defaultMarkerScale; marker.customData = e; e.setMarker (marker); //Destroy(mapObjectChild); //circlePoints.Add (pos); var linePoints = new List<Vector2> (); linePoints.Add (l.getCoordinates ()); linePoints.Add (pos); OnlineMapsDrawingElement line = new OnlineMapsDrawingLine (linePoints, Color.black, 0.3f); //onlineMaps.AddDrawingElement (line); enhetDrawingLines.Add (line); } //OnlineMapsDrawingElement circle = new OnlineMapsDrawingPoly (circlePoints); //onlineMaps.AddDrawingElement (circle); if (visEnhet) { foreach (var line in enhetDrawingLines) { onlineMaps.AddDrawingElement (line); } } //Destroy(mapObject); } UpdateSliderDates (); oppdaterMarkers (); dataTypeChanged (); }
public MapPointMarker(OnlineMapsMarker3D marker) : base(marker.position.x, marker.position.y) { this.marker3D = marker; this.marker2D = OnlineMapsMarkerManager.CreateItem(new Vector2(marker.position.x, marker.position.y), ""); this.initData(); }
protected void DrawMarkersGUI() { if (control.markers3D == null) control.markers3D = new OnlineMapsMarker3D[0]; EditorGUILayout.BeginVertical(GUI.skin.box); showMarkers = OnlineMapsEditor.Foldout(showMarkers, "3D markers"); if (showMarkers) { EditorGUI.BeginChangeCheck(); control.marker3DScale = EditorGUILayout.FloatField("Marker3D Scale: ", control.marker3DScale); control.allowDefaultMarkerEvents = EditorGUILayout.Toggle("Allow Default Marker Events: ", control.allowDefaultMarkerEvents); if (EditorGUI.EndChangeCheck()) EditorUtility.SetDirty(control); int index = 1; bool hasDeleted = false; OnlineMaps map = control.GetComponent<OnlineMaps>(); for (int i = 0; i < control.markers3D.Length; i++) DrawMarkerGUI(i, ref index, ref hasDeleted, map); if (hasDeleted) { List<OnlineMapsMarker3D> markers = control.markers3D.ToList(); markers.RemoveAll(m => m == null); control.markers3D = markers.ToArray(); if (Application.isPlaying) OnlineMaps.instance.Redraw(); EditorUtility.SetDirty(control); } EditorGUILayout.Space(); if (GUILayout.Button("Add marker")) { if (!Application.isPlaying) { OnlineMapsMarker3D marker = new OnlineMapsMarker3D { position = control.GetComponent<OnlineMaps>().position, scale = control.marker3DScale }; List<OnlineMapsMarker3D> markers = new List<OnlineMapsMarker3D>(control.markers3D) { marker }; control.markers3D = markers.ToArray(); } else { GameObject prefab = GameObject.CreatePrimitive(PrimitiveType.Cube); control.AddMarker3D(OnlineMaps.instance.position, prefab); DestroyImmediate(prefab); } EditorUtility.SetDirty(control); } } EditorGUILayout.EndVertical(); }
protected void DrawMarkersGUI(ref bool dirty) { if (control.markers3D == null) { control.markers3D = new OnlineMapsMarker3D[0]; dirty = true; } EditorGUILayout.BeginVertical(GUI.skin.box); showMarkers = OnlineMapsEditor.Foldout(showMarkers, "3D markers"); if (showMarkers) { EditorGUI.BeginChangeCheck(); control.marker3DScale = EditorGUILayout.FloatField("Marker3D Scale: ", control.marker3DScale); control.allowDefaultMarkerEvents = EditorGUILayout.Toggle("Allow Default Marker Events: ", control.allowDefaultMarkerEvents); if (EditorGUI.EndChangeCheck()) { dirty = true; } int index = 1; bool hasDeleted = false; OnlineMaps map = control.GetComponent <OnlineMaps>(); for (int i = 0; i < control.markers3D.Length; i++) { DrawMarkerGUI(i, ref index, ref hasDeleted, map, ref dirty); } if (hasDeleted) { List <OnlineMapsMarker3D> markers = control.markers3D.ToList(); markers.RemoveAll(m => m == null); control.markers3D = markers.ToArray(); if (Application.isPlaying) { OnlineMaps.instance.Redraw(); } dirty = true; } EditorGUILayout.Space(); if (GUILayout.Button("Add marker")) { if (!Application.isPlaying) { OnlineMapsMarker3D marker = new OnlineMapsMarker3D { position = control.GetComponent <OnlineMaps>().position, scale = control.marker3DScale }; List <OnlineMapsMarker3D> markers = new List <OnlineMapsMarker3D>(control.markers3D) { marker }; control.markers3D = markers.ToArray(); } else { GameObject prefab = GameObject.CreatePrimitive(PrimitiveType.Cube); control.AddMarker3D(OnlineMaps.instance.position, prefab); DestroyImmediate(prefab); } EditorUtility.SetDirty(control); } } EditorGUILayout.EndVertical(); }
private static void LoadMarkers3D(OnlineMapsXML el, OnlineMaps api) { OnlineMapsControlBase3D control = api.GetComponent<OnlineMapsControlBase3D>(); List<OnlineMapsMarker3D> markers = new List<OnlineMapsMarker3D>(); foreach (OnlineMapsXML m in el) { OnlineMapsMarker3D marker = new OnlineMapsMarker3D(); marker.position = m.Get<Vector2>("Position"); marker.range = m.Get<OnlineMapsRange>("Range"); marker.label = m.Get<string>("Label"); marker.prefab = GetObject(m.Get<int>("Prefab")) as GameObject; marker.rotation = Quaternion.Euler(m.Get<Vector3>("Rotation")); markers.Add(marker); } control.markers3D = markers.ToArray(); }
/// <summary> /// Adds a new 3D marker on the map. /// </summary> /// <param name="markerPosition">Vector2. X - Longituge, Y - Latitude.</param> /// <param name="prefab">Marker prefab.</param> /// <returns>Marker instance.</returns> public OnlineMapsMarker3D AddMarker3D(Vector2 markerPosition, GameObject prefab) { List<OnlineMapsMarker3D> ms = markers3D.ToList(); OnlineMapsMarker3D marker = new OnlineMapsMarker3D { position = markerPosition, prefab = prefab, control = this, scale = marker3DScale, allowDefaultMarkerEvents = allowDefaultMarkerEvents }; marker.Init(transform); ms.Add(marker); markers3D = ms.ToArray(); return marker; }
protected override void AfterUpdate() { base.AfterUpdate(); if (api.showMarkerTooltip == OnlineMapsShowMarkerTooltip.onHover) { OnlineMapsMarkerInstanceBase markerInstance = GetBillboardMarkerFromScreen(Input.mousePosition); if (markerInstance != null) { api.tooltip = markerInstance.marker.label; api.tooltipMarker = markerInstance.marker; } } if (allowAddMarker3DByN && Input.GetKeyUp(KeyCode.N)) { OnlineMapsMarker3D m = new OnlineMapsMarker3D { position = GetCoords(), scale = marker3DScale, control = this }; m.Init(transform); double tlx, tly, brx, bry; api.GetTopLeftPosition(out tlx, out tly); api.GetBottomRightPosition(out brx, out bry); m.Update(tlx, tly, brx, bry, api.zoom); List<OnlineMapsMarker3D> markerList = markers3D.ToList(); markerList.Add(m); markers3D = markerList.ToArray(); } }
// Update is called once per frame void Update() { if (doFinalizeLoad) { if (!doFinalizeLoad2) { doFinalizeLoad2 = true; } else { int count = 0; for (int ii = 0; ii < OnlineMapsControlBase3D.instance.markers3D.Length; ii++) { var isAsset = false; var prefabType = OnlineMapsControlBase3D.instance.markers3D[ii].prefab; foreach (var assetP in assetPrefab) { if (prefabType.name == assetP.name) { isAsset = true; } } if (!isAsset) { //Appropriately rename for running the study if (SceneManager.GetActiveScene().name.Contains("Study") && StudyFlowControl.visualizationType.Contains("line")) { switch (types[count]) { case "FanLowComponentLowUncertainty": types[count] = "LineCloudLow"; break; case "FanLowComponentMidUncertainty": types[count] = "LineCloudMid"; break; case "FanLowComponentHighUncertainty": types[count] = "LineCloudHigh"; break; } } var temp = OnlineMapsControlBase3D.instance.markers3D[ii].transform.gameObject.GetComponent <ConeHelper>().ChangePrefabToType(types[count], scales[count], zooms[count]); temp.transform.rotation = rotations[count]; count++; } /* * foreach (Transform child in OnlineMapsControlBase3D.instance.markers3D[ii].transform) * { * print(child.name); * if (!child.name.Contains("Cylinder")) * { * child.rotation = rotations[ii]; * OnlineMapsControlBase3D.instance.markers3D[ii].transform.gameObject.GetComponent<ConeHelper>().ChangePrefabToType(types[ii]); * break; * } * }*/ } rotations.Clear(); types.Clear(); doFinalizeLoad = false; doFinalizeLoad2 = false; } } if (isAnimating) { GameObject.Find("TimeSlider").GetComponent <Slider>().value += 2 * Time.deltaTime; if (GameObject.Find("TimeSlider").GetComponent <Slider>().value >= GameObject.Find("TimeSlider").GetComponent <Slider>().maxValue) { ResetTimeInformation(); LogHelper.AnimationLooped(StudyFlowControl.TrueQuestionID); } else { TimeStepChangedLerp(); } } if (Input.GetKeyDown(KeyCode.Escape)) { //SceneManager.LoadScene("Menu", LoadSceneMode.Single); } if (!manipulationEnabled) { return; } if (Input.GetKeyDown(KeyCode.Home)) { SaveScreenshot(); } if (isDragging) { if (Input.GetMouseButtonUp(0)) { isDragging = false; dragged = null; } else { OnMarkerDrag(dragged); } } if (isRotating) { if (Input.GetMouseButtonUp(0) || rotated == null) { isRotating = false; rotated = null; } else { OnRotateCone(rotated); } } if (Input.GetMouseButtonDown(0) && !isDragging && !isRotating && !isFileWindowOpen) { RaycastHit[] hits; var ray = Camera.main.ScreenPointToRay(Input.mousePosition); hits = Physics.RaycastAll(ray).OrderBy(h => h.distance).ToArray(); var bestDistance = float.MaxValue; OnlineMapsMarker3D bestMarker = null; if (hits.Length > 0) { foreach (OnlineMapsMarker3D marker in OnlineMapsControlBase3D.instance.markers3D) { var distance = CheckHitMarker(hits, marker.instance.gameObject); if (distance >= 0 && distance < bestDistance) { bestDistance = distance; bestMarker = marker; } } if (bestMarker != null) { OnlineMapsControlBase3D.instance.allowUserControl = false; isDragging = true; dragged = bestMarker; OnMarkerDrag(dragged); } if (!isDragging) { foreach (GameObject cone in GameObject.FindGameObjectsWithTag("Uncertainty")) { if (CheckHit(hits, cone)) { OnlineMapsControlBase3D.instance.allowUserControl = false; isRotating = true; rotated = cone; OnRotateCone(rotated); break; } } } } } if (!isDragging && !isRotating && !isFileWindowOpen) { OnlineMapsControlBase3D.instance.allowUserControl = true; } }