1#include "Game/Gravity.hpp"
2#include "Game/Util.hpp"
4PlanetGravity::PlanetGravity() {
10 mGravityType = GRAVITY_TYPE_NORMAL;
11 mGravityPower = GRAVITY_POWER_NORMAL;
14 mValidFollower =
true;
15 mIsRegistered =
false;
19void PlanetGravity::setPriority(s32 priority) {
23bool PlanetGravity::calcGravity(TVec3f *pDest,
const TVec3f &rPosition)
const {
31 if (!calcOwnGravityVector(&gravity, &radius, rPosition))
42 gravity.scaleInline(4000000.0f / (radius * radius));
47 inverse.negateInline(gravity);
59bool PlanetGravity::isInRangeSquare(f32 radius)
const {
66 f32 distance = range + mDistant;
67 return radius < distance * distance;
71bool PlanetGravity::isInRangeDistance(f32 radius)
const {
78 f32 distance = range + mDistant;
79 return radius < distance;
83bool PlanetGravity::calcGravityFromMassPosition(TVec3f *pDirection, f32 *pScalar,
const TVec3f &rPosition,
const TVec3f &rMassPosition)
const {
87 direction.subInline(rPosition, rMassPosition);
88 MR::separateScalarAndDirection(&scalar, &direction, direction);
90 if (!isInRangeDistance(scalar))
94 *pDirection = direction;
103void PlanetGravity::updateIdentityMtx() {