New release, version 0.3.0, download is in
OriginalPost.
Took a bit of a sanity break, but I'm back at it now. Spent a bit of time hemming and hawing on how I wanted snapping behavior to work. I think I've figured something out, we'll see, it's still a work in progress. Position snapping is finished, and Scale & Rotation only support Delta snapping at the moment.
Cleaned up and refactored a lot code, mainly with Manipulation.
Now, what to work on next...
Quote: "That was the plan for my editor but IMA's started popping up..."
I'm not familiar with the term "IMA".
RayLib was something I came across in my searching as well. Might give it another look.
Though, I'm in the mindset that I'd like to implement as much as is reasonable/practical myself rather then rely on libraries. If RayLib is just an abstraction on top of something like SDL, then I'd rather just directly use SDL.
Quote: "And with Memblocks you do have direct/full access to the Mesh data."
True, in a very clumsy and indirect way.
Quote: "Do you mean this?"
Not quite, that's similar to the way I've done Camera controls in some of my games.
However, the pivot point for the camera is arbitrary in this app. So, I needed something more generalized. Something like so:
FUNCTION rot3_p(Pa REF AS Vec3, Pp REF AS Vec3, A REF AS Vec3, T AS FLOAT)
// Rotate PointA around PointP on an arbitrary Axis. (Pa = PointA, Pp = PointPivot, A = Axis, T = Theta)
// Get Delta.
dPA_X AS FLOAT : dPA_X = Pa.x - Pp.x
dPA_Y AS FLOAT : dPA_Y = Pa.y - Pp.y
dPA_Z AS FLOAT : dPA_Z = Pa.z - Pp.z
T = -T // @fix -Theta?
Result AS Vec3
Result.x = Pp.x + ( (A.x * A.x * (1-cos(T)) + cos(T)) * dPA_X ) + ( (A.y * A.x * (1-cos(T)) - A.z * sin(T)) * dPA_Y ) + ( (A.z * A.x * (1-cos(T)) + A.y * sin(T)) * dPA_Z )
Result.y = Pp.y + ( (A.x * A.y * (1-cos(T)) + A.z * sin(T)) * dPA_X ) + ( (A.y * A.y * (1-cos(T)) + cos(T)) * dPA_Y ) + ( (A.z * A.y * (1-cos(T)) - A.x * sin(T)) * dPA_Z )
Result.z = Pp.z + ( (A.x * A.z * (1-cos(T)) - A.y * sin(T)) * dPA_X ) + ( (A.y * A.z * (1-cos(T)) + A.x * sin(T)) * dPA_Y ) + ( (A.z * A.z * (1-cos(T)) + cos(T)) * dPA_Z )
ENDFUNCTION Result