I think it would be awesome if we could get just some more fundamentals implemented...
1.
Predefined functions for working with angles in 2D and 3D:
GetDistanceToAngle(fromAngle as float, toAngle as float),
GetShortestDistanceToAngle(fromAngle as float, toAngle as float),
AngleIsWithinDegrees(testAngle as float, AngleToCompareTo as float, degrees as float),
AngleIsBetweenAngles(testAngle as float, Angle1 as float, Angle2 as float),
AngleAddWithLimits(angle as float, valueToAdd as float, angleMin as float, angleMax as float). I've already implemented this in my little Extended API project I posted in the past week but it would be awesome to have these as part of the api itself because I think such things are incredibly useful for game development and they will perform much faster as part of the internal api
2.
Implementing function references and callbacks for AppGameKit Tier 1 BASIC. It would be fantastic if we could pass in a function reference to another function so it could be stored and later when appropriate this other function could make a callback.
Basically I was thinking a new type of variable could be implemented. Something like FuncRef so we could do something like...
type TSomething
callback as FunctionRef
something1 as integer
something2 as integer
endtype
global list as TSomething[]
function CallbackTest(functionToNotify as FunctionRef, value1 as integer, value2 as integer)
list.length = list.length + 1
list[list.length].callback = functionToNotify
list[list.length].something1 = value1
list[list.length].something1 = value2
endfunction
function UpdateList()
i as integer
for i=0 to list.length
// do some work and when a certain condition is reached...
CallFunction list[i].callback
next i
endfunction
That is just a rough example and the signature of the function references would need to be handled but I would be content at the simplest if every function reference always accepted an array of float values as parameters. It could also accept a special FuncRefType that has predefined fields such as an array of integers and an array of floats. Like a one shot thing defined in the api solely for this purpose. So we would populate that FuncRefType.integerList[0] = SomeValue, etc and when using CallFunction the FuncRefType is passed over. But you may come up with something much better.
3.
Implementing Min, MinF, Max, MaxF, Sgn and SgnF in the math section of the api just to provide some more very standard functionality and maximize the performance of using these.
4.
Predefined #constant / const int values for ALL key codes within the api itself like KEY_A, KEY_LEFT, etc just in the interest of convenience and everyone not needing to duplicate these in every project including their own file. They are so common in use it just makes sense to have them as part of the api imho.