37 static bool isClose(
const Npc& npc,
const Npc& p,
float dist);
40 static bool isClose(
const Npc& npc,
const Tempest::Vec3& p,
float dist);
79 void tickMobsi (uint64_t dt);
80 bool tickSlide (uint64_t dt);
81 void tickGravity(uint64_t dt);
82 void tickSwim (uint64_t dt);
83 void tickClimb (uint64_t dt);
84 void tickJumpup (uint64_t dt);
85 bool tickRun(uint64_t dt,
MvFlags moveFlg);
87 bool tryMove (
float x,
float y,
float z);
88 bool tryMove (
float x,
float y,
float z,
DynamicWorld::CollisionTest& out);
90 enum Flags : uint32_t {
102 void setInAir (
bool f);
103 void setAsJumpup (
bool f);
104 void setAsClimb (
bool f);
105 void setAsSlide (
bool f);
106 void setInWater (
bool f);
107 void setAsSwim (
bool f);
108 void setAsDive (
bool f);
109 void setAsFalling(
bool f);
111 bool slideDir()
const;
112 bool isForward(
const Tempest::Vec3& dp)
const;
113 bool isBackward(
const Tempest::Vec3& dp)
const;
114 bool testMoveDirection(
const Tempest::Vec3& dp,
const Tempest::Vec3& dir)
const;
115 void applyRotation(Tempest::Vec3& out,
const Tempest::Vec3& in)
const;
116 void applyRotation(Tempest::Vec3& out,
const Tempest::Vec3& in,
float radians)
const;
117 auto animMoveSpeed(uint64_t dt)
const -> Tempest::Vec3;
118 auto npcMoveSpeed (uint64_t dt,
MvFlags moveFlg) -> Tempest::Vec3;
119 auto go2NpcMoveSpeed (
const Tempest::Vec3& dp,
const Npc &tg) -> Tempest::Vec3;
120 auto go2WpMoveSpeed (Tempest::Vec3 dp,
const Tempest::Vec3& to) -> Tempest::Vec3;
126 float stepHeight()
const;
127 float slideAngle()
const;
128 float slideAngle2()
const;
130 void emitWaterSplash(
float y);
132 void rayMain (
const Tempest::Vec3& pos)
const;
133 float dropRay (
const Tempest::Vec3& pos,
bool& hasCol)
const;
134 float waterRay (
const Tempest::Vec3& pos,
bool* hasCol =
nullptr)
const;
135 auto normalRay(
const Tempest::Vec3& pos)
const -> Tempest::Vec3;
138 float x=0, y=0, z=std::numeric_limits<float>::infinity();
141 float x=0, y=0, z=std::numeric_limits<float>::infinity();
145 mutable CacheLand cache;
146 mutable CacheWater cacheW;
148 std::string_view portal;
149 std::string_view formerPortal;
150 Flags flags = NoFlags;
153 Tempest::Vec3 fallSpeed ={};
156 uint64_t climbStart=0;
157 Tempest::Vec3 climbPos0={};
158 float climbHeight=0.f;
161 uint64_t diveStart = 0;
162 uint64_t lastBounce = 0;
164 static const float gravity;
165 static const float eps;
166 static const int32_t flyOverWaterHint;
167 static const float waterPadd;