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;
 }
Example #6
0
    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);
    }
Example #7
0
    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();
    }
Example #8
0
        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;
        }
Example #9
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;
        }
Example #14
0
    /// <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);
        }
    }
Example #15
0
    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;
    }
Example #19
0
    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);
    }
Example #20
0
    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;
    }
Example #21
0
        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;
     }
 }
Example #24
0
    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);
        }
    }
Example #26
0
    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;
    }
Example #27
0
    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);
    }
Example #28
0
    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);
    }
Example #29
0
    /// <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();
    }
Example #30
0
    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();
    }
Example #31
0
    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);
        }
    }
Example #32
0
 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);
     }
 }
Example #33
0
    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();
    }
Example #36
0
	public void setMarker(OnlineMapsMarker3D marker){
		this.marker = marker;
	}
Example #37
0
 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;
 }
Example #39
0
    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();
        }
    }
Example #46
0
    // 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;
        }
    }