X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=src%2Fcollision.h;h=e823a08fefb978825e4fe76f24508a818d398163;hb=fadf248892eae825b57d283032594ed924d8dbea;hp=17243140148a8686e1a1fe50974935816979eb6c;hpb=5a4d8ffad3b172eae67844deda6b65273b7c9757;p=oweals%2Fminetest.git diff --git a/src/collision.h b/src/collision.h index 172431401..e823a08fe 100644 --- a/src/collision.h +++ b/src/collision.h @@ -23,21 +23,39 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "common_irrlicht.h" class Map; +class IGameDef; struct collisionMoveResult { bool touching_ground; + bool collides; collisionMoveResult(): - touching_ground(false) + touching_ground(false), + collides(false) {} }; -collisionMoveResult collisionMoveSimple(Map *map, f32 pos_max_d, - const core::aabbox3d &box_0, +// Moves using a single iteration; speed should not exceed pos_max_d/dtime +collisionMoveResult collisionMoveSimple(Map *map, IGameDef *gamedef, + f32 pos_max_d, const core::aabbox3d &box_0, f32 dtime, v3f &pos_f, v3f &speed_f); -//{return collisionMoveResult();} +// Moves using as many iterations as needed +collisionMoveResult collisionMovePrecise(Map *map, IGameDef *gamedef, + f32 pos_max_d, const core::aabbox3d &box_0, + f32 dtime, v3f &pos_f, v3f &speed_f); + +enum CollisionType +{ + COLLISION_FALL +}; + +struct CollisionInfo +{ + CollisionType t; + f32 speed; +}; #endif