--------------------------------
-- @module PhysicsWorld
-- @parent_module cc
--------------------------------
-- set the gravity value of this physics world.
-- param gravity A gravity value of this physics world.
-- @function [parent=#PhysicsWorld] setGravity
-- @param self
-- @param #vec2_table gravity
-- @return PhysicsWorld#PhysicsWorld self (return value: cc.PhysicsWorld)
--------------------------------
-- Get all the bodys that in this physics world.
-- return A Vector& object contains all bodies in this physics world.
-- @function [parent=#PhysicsWorld] getAllBodies
-- @param self
-- @return array_table#array_table ret (return value: array_table)
--------------------------------
-- Get the bebug draw mask.
-- return An interger number.
-- @function [parent=#PhysicsWorld] getDebugDrawMask
-- @param self
-- @return int#int ret (return value: int)
--------------------------------
-- set the number of substeps in an update of the physics world.
-- One physics update will be divided into several substeps to increase its accuracy.
-- param steps An interger number, default value is 1.
-- @function [parent=#PhysicsWorld] setSubsteps
-- @param self
-- @param #int steps
-- @return PhysicsWorld#PhysicsWorld self (return value: cc.PhysicsWorld)
--------------------------------
-- To control the step of physics.
-- If you want control it by yourself( fixed-timestep for example ), you can set this to false and call step by yourself.
-- attention If you set auto step to false, setSpeed setSubsteps and setUpdateRate won't work, you need to control the time step by yourself.
-- param autoStep A bool object, defaut value is true.
-- @function [parent=#PhysicsWorld] setAutoStep
-- @param self
-- @param #bool autoStep
-- @return PhysicsWorld#PhysicsWorld self (return value: cc.PhysicsWorld)
--------------------------------
-- Adds a joint to this physics world.
-- This joint will be added to this physics world at next frame.
-- attention If this joint is already added to another physics world, it will be removed from that world first and then add to this world.
-- param joint A pointer to an existing PhysicsJoint object.
-- @function [parent=#PhysicsWorld] addJoint
-- @param self
-- @param #cc.PhysicsJoint joint
-- @return PhysicsWorld#PhysicsWorld self (return value: cc.PhysicsWorld)
--------------------------------
-- Remove all joints from this physics world.
-- attention This function is invoked in the destructor of this physics world, you do not use this api in common.
-- param destroy true all joints will be destroyed after remove from this world, false otherwise.
-- @function [parent=#PhysicsWorld] removeAllJoints
-- @param self
-- @return PhysicsWorld#PhysicsWorld self (return value: cc.PhysicsWorld)
--------------------------------
-- Get the auto step of this physics world.
-- return A bool object.
-- @function [parent=#PhysicsWorld] isAutoStep
-- @param self
-- @return bool#bool ret (return value: bool)
--------------------------------
-- @overload self, int
-- @overload self, cc.PhysicsBody
-- @function [parent=#PhysicsWorld] removeBody
-- @param self
-- @param #cc.PhysicsBody body
-- @return PhysicsWorld#PhysicsWorld self (return value: cc.PhysicsWorld)
--------------------------------
-- Remove a joint from this physics world.
-- If this world is not locked, the joint is removed immediately, otherwise at next frame.
-- If this joint is connected with a body, it will be removed from the body also.
-- param joint A pointer to an existing PhysicsJoint object.
-- param destroy true this joint will be destroyed after remove from this world, false otherwise.
-- @function [parent=#PhysicsWorld] removeJoint
-- @param self
-- @param #cc.PhysicsJoint joint
-- @param #bool destroy
-- @return PhysicsWorld#PhysicsWorld self (return value: cc.PhysicsWorld)
--------------------------------
-- Get phsyics shapes that contains the point.
-- All shapes contains the point will be pushed in a Vector object.
-- attention The point must lie inside a shape.
-- param point A Vec2 object contains the position of the point.
-- return A Vector object contains all found PhysicsShape pointer.
-- @function [parent=#PhysicsWorld] getShapes
-- @param self
-- @param #vec2_table point
-- @return array_table#array_table ret (return value: array_table)
--------------------------------
-- The step for physics world.
-- The times passing for simulate the physics.
-- attention You need to setAutoStep(false) first before it can work.
-- param delta A float number.
-- @function [parent=#PhysicsWorld] step
-- @param self
-- @param #float delta
-- @return PhysicsWorld#PhysicsWorld self (return value: cc.PhysicsWorld)
--------------------------------
-- Set the debug draw mask of this physics world.
-- This physics world will draw shapes and joints by DrawNode acoording to mask.
-- param mask Mask has four value:DEBUGDRAW_NONE, DEBUGDRAW_SHAPE, DEBUGDRAW_JOINT, DEBUGDRAW_CONTACT and DEBUGDRAW_ALL, default is DEBUGDRAW_NONE
-- @function [parent=#PhysicsWorld] setDebugDrawMask
-- @param self
-- @param #int mask
-- @return PhysicsWorld#PhysicsWorld self (return value: cc.PhysicsWorld)
--------------------------------
-- Get the gravity value of this physics world.
-- return A Vec2 object.
-- @function [parent=#PhysicsWorld] getGravity
-- @param self
-- @return vec2_table#vec2_table ret (return value: vec2_table)
--------------------------------
-- Set the update rate of this physics world
-- Update rate is the value of EngineUpdateTimes/PhysicsWorldUpdateTimes.
-- Set it higher can improve performance, set it lower can improve accuracy of physics world simulation.
-- attention if you setAutoStep(false), this won't work.
-- param rate An interger number, default value is 1.0.
-- @function [parent=#PhysicsWorld] setUpdateRate
-- @param self
-- @param #int rate
-- @return PhysicsWorld#PhysicsWorld self (return value: cc.PhysicsWorld)
--------------------------------
-- Get the number of substeps of this physics world.
-- return An interger number.
-- @function [parent=#PhysicsWorld] getSubsteps
-- @param self
-- @return int#int ret (return value: int)
--------------------------------
-- Get the speed of this physics world.
-- return A float number.
-- @function [parent=#PhysicsWorld] getSpeed
-- @param self
-- @return float#float ret (return value: float)
--------------------------------
-- Get the update rate of this physics world.
-- return An interger number.
-- @function [parent=#PhysicsWorld] getUpdateRate
-- @param self
-- @return int#int ret (return value: int)
--------------------------------
-- Remove all bodies from physics world.
-- If this world is not locked, those body are removed immediately, otherwise at next frame.
-- @function [parent=#PhysicsWorld] removeAllBodies
-- @param self
-- @return PhysicsWorld#PhysicsWorld self (return value: cc.PhysicsWorld)
--------------------------------
-- Set the speed of this physics world.
-- attention if you setAutoStep(false), this won't work.
-- param speed A float number. Speed is the rate at which the simulation executes. default value is 1.0.
-- @function [parent=#PhysicsWorld] setSpeed
-- @param self
-- @param #float speed
-- @return PhysicsWorld#PhysicsWorld self (return value: cc.PhysicsWorld)
--------------------------------
-- Get the nearest phsyics shape that contains the point.
-- Query this physics world at point and return the closest shape.
-- param point A Vec2 object contains the position of the point.
-- return A PhysicsShape object pointer or nullptr if no shapes were found
-- @function [parent=#PhysicsWorld] getShape
-- @param self
-- @param #vec2_table point
-- @return PhysicsShape#PhysicsShape ret (return value: cc.PhysicsShape)
--------------------------------
-- Get a body by tag.
-- param tag An interger number that identifies a PhysicsBody object.
-- return A PhysicsBody object pointer or nullptr if no shapes were found.
-- @function [parent=#PhysicsWorld] getBody
-- @param self
-- @param #int tag
-- @return PhysicsBody#PhysicsBody ret (return value: cc.PhysicsBody)
return nil