LoadedObjects = { Entities = {}, Collisions = {}, Platforms = {}, Ladders = {}, Hazards = {} } -- level functions function LoadedObjects.DrawCollisions() for _, collision in pairs(LoadedObjects.Collisions) do collision: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 _, collision in pairs(objectType) do if collision.disable then -- Dont calculate if dissabled elseif x >= collision.from.x and x <= collision.to.x and y >= collision.from.y and y <= collision.to.y then collision.isColliding = true return true end end return false end function isThereAnyCollisionAt(x,y) local Check = { LoadedObjects.Collisions, LoadedObjects.Ladders, LoadedObjects.Platforms } for _, type in pairs(Check) do local result = isThereObjectAt(x,y,type) if result then return result end 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