NavMesh System Complete

Finally this system is completed! And its crucial for a lot of things. Why? Well, I can modify it so that a static background can have objects that are actually just a mesh area. And then this mesh area can have its properties, colour, actions... Everything but the visual part, that can only be achieved with objects.

After the object mesh and the player movement, I will start work on a networking system for events and actions. It will support GML code, but it will mainly focus on the programs functions. However, this wont be probably finished soon, so after a base has been laid, I will put it aside until I can finish the rest of the engine.

Thanks to TheSnidr and slayer 64 for assistance with the code.


NavMesh Ready

The NavMesh is almost ready. Here is a quick explanation on how it works:
You start the mesh by clicking anywhere on the screen to create a node (red circle). Nodes can be deleted and moved (green one) so the mesh can be further edited after placement. I am currently trying to add the function to insert a node between two old ones...


NavMesh Types

I am currently thinking what kind of a NavMesh creation I would put in the tool/engine I am making. What is a NavMesh? Well, it is a area that the program uses to set the boundaries in which the player can move freely. So that doesn't mean that you can only move on a single 2D path, you can move in "3D". Something like this:
So now you can move not just left right, but up and down. This kind of movement system is used in all point and click games (save the few exceptions). So the NavMesh is the red line. And it's the whole mesh, or the area in which the player can move.
But now comes the problem how should the mesh be created. And I have two answers. The first way of doing it, is using nodes at every corner that can be moved around, and new ones created. So you would end up with a single NM. The second possibility is to use rectangles, that can be manipulated to create blocks or parts of the mesh. Then they would be connected using a connector tool.

Both of these have their good sides and bad sides, but what kind do you prefer, and which one would be simpler to use?