X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=src%2Fcollision.h;h=87a50282870c11cb5075bce68a99a50f7c496a95;hb=b504a1aa4bdc56676b4b1c398ebfe98d336f8f6e;hp=4d47171eaff9f6e0bfdf7d841f43a9829a3d72d1;hpb=921151d97a2fb2238ab514324fb95e2732248b96;p=minetest.git diff --git a/src/collision.h b/src/collision.h index 4d47171ea..87a502828 100644 --- a/src/collision.h +++ b/src/collision.h @@ -33,14 +33,25 @@ enum CollisionType COLLISION_OBJECT, }; +enum CollisionAxis +{ + COLLISION_AXIS_NONE = -1, + COLLISION_AXIS_X, + COLLISION_AXIS_Y, + COLLISION_AXIS_Z, +}; + struct CollisionInfo { CollisionInfo() = default; CollisionType type = COLLISION_NODE; + CollisionAxis axis = COLLISION_AXIS_NONE; v3s16 node_p = v3s16(-32768,-32768,-32768); // COLLISION_NODE + ActiveObject *object = nullptr; // COLLISION_OBJECT v3f old_speed; v3f new_speed; + int plane = -1; }; struct collisionMoveResult @@ -65,9 +76,9 @@ collisionMoveResult collisionMoveSimple(Environment *env,IGameDef *gamedef, // Checks for collision of a moving aabbox with a static aabbox // Returns -1 if no collision, 0 if X collision, 1 if Y collision, 2 if Z collision // dtime receives time until first collision, invalid if -1 is returned -int axisAlignedCollision( +CollisionAxis axisAlignedCollision( const aabb3f &staticbox, const aabb3f &movingbox, - const v3f &speed, f32 d, f32 *dtime); + const v3f &speed, f32 *dtime); // Helper function: // Checks if moving the movingbox up by the given distance would hit a ceiling.