SMG-Decomp
A decompilation of Super Mario Galaxy 1
Loading...
Searching...
No Matches
CameraUtil.cpp
1#include "Game/Util.hpp"
2#include "Game/LiveActor/ActorCameraInfo.hpp"
3#include "Game/Camera/CameraContext.hpp"
4#include "Game/Camera/CameraDirector.hpp"
5#include "Game/Camera/CameraParamChunk.hpp"
6#include "Game/Scene/SceneObjHolder.hpp"
7
8namespace MR {
9 f32 getAspect() {
10 return MR::getSceneObj<CameraContext*>(SceneObj_CameraContext)->getAspect();
11 }
12
13 f32 getNearZ() {
14 return MR::getSceneObj<CameraContext*>(SceneObj_CameraContext)->mNearZ;
15 }
16
17 f32 getFarZ() {
18 return MR::getSceneObj<CameraContext*>(SceneObj_CameraContext)->mFarZ;
19 }
20
21 f32 getFovy() {
22 return MR::getSceneObj<CameraContext*>(SceneObj_CameraContext)->mFovy;
23 }
24
25 void setNearZ(f32 nearZ) {
26 MR::getSceneObj<CameraContext*>(SceneObj_CameraContext)->setNearZ(nearZ);
27 }
28
29 void setFovy(f32 fovy) {
30 MR::getSceneObj<CameraContext*>(SceneObj_CameraContext)->setFovy(fovy);
31 }
32
33 void setShakeOffset(f32 a1, f32 a2) {
34 MR::getSceneObj<CameraContext*>(SceneObj_CameraContext)->setShakeOffset(a1, a2);
35 }
36
37 TVec3f getCamPos() {
38 TPos3f viewMtx = *MR::getSceneObj<CameraContext*>(SceneObj_CameraContext)->getInvViewMtx();
39 TVec3f pos;
40 MR::extractMtxTrans(viewMtx.toMtxPtr(), &pos);
41 return pos;
42 }
43
44 TVec3f getCamXDir() {
45 TPos3f viewMtx = *MR::getSceneObj<CameraContext*>(SceneObj_CameraContext)->getInvViewMtx();
46 TVec3f dir;
47 viewMtx.getXDir(dir);
48 MR::normalizeOrZero(&dir);
49 return -dir;
50 }
51
52 TVec3f getCamYDir() {
53 TPos3f viewMtx = *MR::getSceneObj<CameraContext*>(SceneObj_CameraContext)->getInvViewMtx();
54 TVec3f dir;
55 viewMtx.getYDir(dir);
56 MR::normalizeOrZero(&dir);
57 return -dir;
58 }
59
60 TVec3f getCamZdir() {
61 TPos3f viewMtx = *MR::getSceneObj<CameraContext*>(SceneObj_CameraContext)->getInvViewMtx();
62 TVec3f dir;
63 viewMtx.getZDir(dir);
64 MR::normalizeOrZero(&dir);
65 return -dir;
66 }
67
68 void createMirrorCamera() {
69 MR::createSceneObj(SceneObj_MirrorCamera);
70 }
71
72 bool isExistMirrorCamera() {
73 return MR::isExistSceneObj(SceneObj_MirrorCamera);
74 }
75
76 // MR::getMirrorCameraViewMtx
77 // MR::getMirrorModelTexMtx
78
79 void completeCameraParameters() {
80 MR::getCameraDirector()->closeCreatingCameraChunk();
81 }
82
83 void resetCameraMan() {
84 MR::getCameraDirector()->requestToResetCameraMan();
85 }
86
87 void startCameraInterpolation(u32 intr) {
88 MR::getCameraDirector()->setInterpolation(intr);
89 }
90
91 void declareEventCamera(const ActorCameraInfo *pInfo, const char *pEventName) {
92 MR::getCameraDirector()->declareEvent(pInfo->mZoneID, pEventName);
93 }
94
95 void endEventCamera(const ActorCameraInfo *pInfo, const char *pEventName, bool a3, s32 a4) {
96 MR::getCameraDirector()->endEvent(pInfo->mZoneID, pEventName, a3, a4);
97 }
98
99 void declareGlobalEventCameraAbyss(const char *pEventName) {
100 MR::getCameraDirector()->declareEvent(0, pEventName);
101 CameraParamChunkEvent* chunk = MR::getCameraDirector()->getEventParameter(0, pEventName);
102
103 if (chunk) {
104 chunk->setCameraType("CAM_TYPE_EYEPOS_FIX_THERE", MR::getCameraDirector()->mHolder);
105 chunk->mGeneralParam->mNum1 = 1;
106 chunk->_64 = true;
107 }
108 }
109};