LoadedObjects = {} -- level functions function LoadedObjects.DrawCollisions() for _, ladder in pairs(LoadedObjects.Collisions) do ladder:Draw(1) end for _, platform in pairs(LoadedObjects.Platforms) do if platform.disable == true then platform:Draw(2) end if platform.disable == false then platform:Draw(1) end end for _, ladder in pairs(LoadedObjects.Ladders) do ladder:Draw(2) end for _, hazard in pairs(LoadedObjects.Hazards) do hazard:Draw(1) end end -- returns true if theres a collision at that point function isThereObjectAt(x,y,objectType) for _, object in pairs(objectType) do if object.disable then -- Dont calculate if dissabled elseif x >= object.from.x and x <= object.to.x and y >= object.from.y and y <= object.to.y then object.isColliding = true return true end end return false end function isThereCollisionAt(x,y) if x >= 0 and x < #CollisionTable and y >= 0 and y < #CollisionTable[0] then return CollisionTable[math.floor(y)][math.floor(x)] end return false end -- flags function SetCollisionFlags() local Check = { LoadedObjects.Collisions, LoadedObjects.Ladders, LoadedObjects.Platforms, LoadedObjects.Hazards } for _, type in pairs(Check) do for _, object in pairs(type) do object.isColliding = false end end for _, platform in pairs(LoadedObjects.Platforms) do if main_Player.pos.y < platform.from.y then platform.disable = false else platform.disable = true end end for _, platform in pairs(LoadedObjects.Hazards) do if main_Player.isOnGround then platform.disable = true else platform.disable = false end end end