SMG-Decomp
A decompilation of Super Mario Galaxy 1
Loading...
Searching...
No Matches
CameraRepulsiveArea.cpp
1#include "Game/AreaObj/CameraRepulsiveArea.hpp"
2
3CameraRepulsiveArea::~CameraRepulsiveArea() {
4
5}
6
7CameraRepulsiveSphere::~CameraRepulsiveSphere() {
8
9}
10
11CameraRepulsiveCylinder::~CameraRepulsiveCylinder() {
12
13}
14
15TVec3f CameraRepulsiveSphere::getRepulsion(const TVec3f &rRep) {
16 TVec3f ret;
17 ret.x = 0.0f;
18 ret.y = 0.0f;
19 ret.z = 0.0f;
20 return ret;
21}
22
23TVec3f CameraRepulsiveCylinder::getRepulsion(const TVec3f &rRep) {
24 TVec3f position;
25 MR::calcCylinderPos(&position, this);
26 TVec3f upVec;
27 MR::calcCylinderUpVec(&upVec, this);
28
29 TVec3f ret(rRep);
30 ret -= position;
31 f32 dot = ret.dot(upVec);
32 TVec3f _14;
33 TVec3f _8(upVec);
34 _8.scale(dot);
35 ret -= _8;
36
37 PSVECCrossProduct(ret.toVec(), upVec.toVec(), _14.toVec());
38 f32 mag = PSVECMag(_14.toVec());
39 f32 radius = MR::getCylinderRadius(this);
40
41 f32 scale = (2.0f * mag) / radius;
42
43 // denom = scale^3
44 f32 denom = scale;
45
46 for (int i = 0; i < 2; i++) {
47 denom *= scale;
48 }
49
50 ret.scale(1.0f / denom);
51 return ret;
52}
53
54const char* CameraRepulsiveArea::getManagerName() const {
55 return "CameraRepulsiveArea";
56}