private void UpdateMarker(MarkerInstance marker) { double px = marker.data.longitude; double py = marker.data.latitude; Vector2 screenPosition = control.GetScreenPosition(px, py); if (screenPosition.x < 0 || screenPosition.x > Screen.width || screenPosition.y < 0 || screenPosition.y > Screen.height) { marker.gameObject.SetActive(false); return; } RectTransform markerRectTransform = marker.transform; if (!marker.gameObject.activeSelf) { marker.gameObject.SetActive(true); } Vector2 point; RectTransformUtility.ScreenPointToLocalPointInRectangle(markerRectTransform.parent as RectTransform, screenPosition, worldCamera, out point); markerRectTransform.localPosition = point; }
private void Start() { map = OnlineMaps.instance; control = OnlineMapsTileSetControl.instance; map.OnMapUpdated += UpdateMarkers; OnlineMapsCameraOrbit.instance.OnCameraControl += UpdateMarkers; markers = new List <MarkerInstance>(); foreach (MarkerData data in datas) { GameObject markerGameObject = Instantiate(prefab) as GameObject; markerGameObject.name = data.title; RectTransform rectTransform = markerGameObject.transform as RectTransform; rectTransform.SetParent(container); markerGameObject.transform.localScale = Vector3.one; MarkerInstance marker = new MarkerInstance(); marker.data = data; marker.gameObject = markerGameObject; marker.transform = rectTransform; SetText(rectTransform, "Title", data.title); SetText(rectTransform, "Population", data.population); markers.Add(marker); } UpdateMarkers(); }
public void addMarkerInstance(MapPointMarker mapPointMarker) { mapPointMarker.assignTexture(null); GameObject markerGameObject = GameObject.Instantiate(customMarkerGameObject, customMarkerCanvas.transform) as GameObject; //gObject.transform.parent = mapPointMarker.getMarker3D().instance.transform; RectTransform rectTransform = markerGameObject.transform as RectTransform; //rectTransform.SetParent(customMarkerContainer); markerGameObject.transform.localScale = Vector3.one; MarkerInstance marker = new MarkerInstance(); MarkerData data = new MarkerData(); data.title = mapPointMarker.getGridCluster().getNumPoints().ToString(); data.longitude = mapPointMarker.getX(); data.latitude = mapPointMarker.getY(); marker.data = data; marker.gameObject = markerGameObject; marker.transform = rectTransform; //marker.transform.Rotate(new Vector3(90, 180, 0)); /* * Quaternion quatRotation = Quaternion.identity; * quatRotation.x = 45; * quatRotation.y = 180; * * marker.transform.localRotation = quatRotation;*/ marker.mapMarker = mapPointMarker; mapPointMarker.markerInstance = marker; mapPointMarker.getMarker2D().texture = null; mapPointMarker.getMarker2D().enabled = false; if (mapPointMarker.getMarker3D() != null) { mapPointMarker.getMarker3D().enabled = false; mapPointMarker.getMarker3D().instance.SetActive(false); } SetText(rectTransform, "Title", data.title); markers.Add(marker); }
private void UpdateMarker(MarkerInstance marker) { //Debug.Log("PABLO: - UPDATE MARKER VISIBILITY"); if (marker == null) { return; } double px = marker.data.longitude; double py = marker.data.latitude; Vector2 screenPosition = control.GetScreenPosition(px, py); if (screenPosition.x < 0 || screenPosition.x > Screen.width || screenPosition.y < 0 || screenPosition.y > Screen.height) { marker.gameObject.SetActive(false); return; } if (marker.mapMarker != null && marker.mapMarker.isVisible()) { int numPoints = marker.mapMarker.getGridCluster().getNumVisiblePoints(); string newTitle = numPoints.ToString(); if (!newTitle.Equals(marker.data.title)) { marker.data.title = newTitle; SetText(marker.transform, "Title", newTitle); } if (SilkMap.instance.map.GetDimension() == 3) { /* * marker.transform.localPosition = marker.mapMarker.getMarker3D().transform.localPosition; * if (marker.transform.localRotation.eulerAngles.x == 90) * marker.transform.Rotate(new Vector3(-45, 0, 0)); */ var position = OnlineMapsTileSetControl.instance.GetWorldPosition(marker.mapMarker.getVector2()); marker.transform.localPosition = new Vector3(position.x, -position.z, 3f); marker.transform.localRotation = Quaternion.Euler(new Vector3(-45, 180, 0)); } else { /* * Vector2 newPosition = OnlineMapsControlBase.instance.GetPosition(new Vector2(marker.mapMarker.getX(), marker.mapMarker.getY())); * marker.transform.localPosition = new Vector3(-newPosition.x, marker.transform.localPosition.y+0.5f, newPosition.y); * if (marker.transform.localRotation.eulerAngles.x == 45) * marker.transform.Rotate(new Vector3(45, 0, 0)); */ var position = OnlineMapsTileSetControl.instance.GetWorldPosition(marker.mapMarker.getVector2()); marker.transform.localPosition = new Vector3(position.x, -position.z, 0f); marker.transform.localRotation = Quaternion.Euler(new Vector3(0, 180, 0)); } if (!marker.gameObject.activeSelf) { marker.gameObject.SetActive(true); } /* * Vector2 screenPosition = control.GetScreenPosition(px, py); * * if (screenPosition.x < 0 || screenPosition.x > Screen.width || * screenPosition.y < 0 || screenPosition.y > Screen.height) * { * marker.gameObject.SetActive(false); * return; * } * * RectTransform markerRectTransform = marker.transform; * * if (!marker.gameObject.activeSelf) marker.gameObject.SetActive(true); * * Camera worldCamera = null; * if (customMarkerCanvas.renderMode != RenderMode.ScreenSpaceOverlay) * worldCamera = canvas.worldCamera; * * Vector2 point; * RectTransformUtility.ScreenPointToLocalPointInRectangle(markerRectTransform as RectTransform, screenPosition, worldCamera, out point); * markerRectTransform.localPosition = point;*/ } else { marker.gameObject.SetActive(false); } }