/// <summary> /// Record the new selection region & create pop-up menu. /// </summary> private void EndDrawing() { // If the shape drawn is not valid, forget about it. if (!IsValidShape()) { _userDrawnShapePoints.Clear(); return; } // Generate hull using points drawn by the user. var hullLines = HullGenerator.Compute(_userDrawnShapePoints, Concavity, ScaleFactor); _userDrawnHullVertices = HullGenerator.CastLineListToPoints(hullLines); _userDrawnHullLines = HullGenerator.CastLineListToVecArrays(hullLines); // Stop showing the line drawn by the user. _userDrawnShapePoints.Clear(); // If there's no object selected, create one. if (_numObjects == 0) { SelectionButtonClicked(0); } else // If there are already objects, display the pop-up menu and let the user choose. { Assert.IsTrue(_numObjects > 0); CreatePopUpMenu(); } }
static void Main(string[] args) { int width = 640; int height = 380; string image = "Images\\MultipleFracture.png"; VideoMode videoMode = new VideoMode((uint)width, (uint)height); RenderWindow renderWindow = new RenderWindow(videoMode, "Hull generator test"); GameResources resources = new GameResources("C:\\Users\\Dmitry\\Documents\\GitHub\\TileEngineSfml\\TileEngineSfmlCs\\TileEngineSfmlMapEditor\\Resources"); GameResources.Instance = resources; ResourceEntry entry = resources.GetEntry(image); Stream fs = resources.CopyStream(entry); Texture texture = new Texture(fs); Sprite sprite = new Sprite(texture); fs.Close(); fs.Dispose(); Icon icon = new Icon(image); Debug.WriteLine("Generating hulls..."); List <Polygon> hulls = HullGenerator.GetConvexHulls(icon); Debug.WriteLine("Rendering loop starts"); View view = renderWindow.GetView(); view.Center = new Vector2f(-8, 0); view.Size = new Vector2f(128, (uint)(128.0f * height / width)); renderWindow.SetView(view); while (renderWindow.IsOpen) { renderWindow.DispatchEvents(); renderWindow.Clear(); renderWindow.Draw(sprite); foreach (var polygon in hulls) { DrawPolygon(renderWindow, polygon); } renderWindow.Display(); } }