//action on mouse public void onMouseClick(int mouseX, int mouseY) { foreach (var f in frames) { if (f.GlobalRectangle.Contains(mouseX, mouseY)) { return; } Console.WriteLine("click on frame"); } //if (frames.Count > 1) return; DVector2 mousePosition; ViewLayer.GlobeCamera.ScreenToSpherical(mouseX, mouseY, out mousePosition); var posts = new List <Post>(); Gis.GeoPoint currentpost = new Gis.GeoPoint(); if (globePostsVK != null && globePostsVK.IsVisible) { for (int i = 0; i < Control.PostsVK.Count; i++) { var post = globePostsVK.PointsCpu[i]; if (post.Color.Alpha == 0) { continue; } var distance = GeoHelper.DistanceBetweenTwoPoints(mousePosition, new DVector2(post.Lon, post.Lat)); if (distance < post.Tex0.Z) { if (!(Game.GameInterface is CustomGameInterface)) { return; } posts.Add(Control.PostsVK[i]); currentpost = post; } } } Log.Message(DMathUtil.RadiansToDegrees(mousePosition.X) + ""); Log.Message(DMathUtil.RadiansToDegrees(mousePosition.Y) + ""); var ui = ((CustomGameInterface)Game.GameInterface).ui; if (posts.Count > 0) { //for (int i = 0; i < frames.Count; i++) //{ // var f = frames[i]; // f.Parent.Remove(f); // f = null; //} //frames.Clear(); List <InstagramPost> instPost = new List <InstagramPost>(); foreach (var po in posts) { var ins = new InstagramPost() { Likes = po?.likes?.count > 0? po.likes.count.ToString() : 0.ToString(), Text = po.text, TimeStamp = ConvertFromUnixTimestamp((double)po.date * 1000), Url = String.IsNullOrEmpty(po.photo_url) ? "" : po.photo_url, }; instPost.Add(ins); } var frame = FrameHelper.createWebPhotoFrameGeoTag(ui, mouseX, mouseY, maxImageSize, maxImageSize, "inst_load", posts[0].photo_url, 0, instPost.ToArray(), currentpost); frames.Add(frame); var p = (Panel as GisPanel); p.Frame.Insert(0, frame); } else { for (int i = 0; i < frames.Count; i++) { var f = frames[i]; f.Parent.Remove(f); f = null; } frames.Clear(); } }