コード例 #1
0
        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;
        }
コード例 #2
0
        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();
        }
コード例 #3
0
    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);
    }
コード例 #4
0
    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);
        }
    }