Location(0, 0) -> vector.createTerrainPoint(0, 0)
MoveLocation(loc, 0, 0) -> vec.getTerrainPoint(0, 0)
GetLocationX(loc) -> vec.x
GetLocationY(loc) -> vec.y
GetLocationZ(loc) -> vec.z
CreateUnitAtLoc(p, id, loc, 0) -> CreateUnit(p, id, vec.x, vec.y, 0)
vec.x = 0.0 -> MoveLocation(loc, 0.0, GetLocationY(loc)) //no way to retain the z value
vec.y = 0.0 -> MoveLocation(loc, GetLocationX(loc), 0.0) //no way to retain the z value
vec.z = 0.0 //impossible with locations