summaryrefslogtreecommitdiff
path: root/src/engine/HM_Intro.h
blob: 1f9b142e94e02fb205715a651bac1613d1aa816a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
#ifndef _HM_INTRO_H
#define _HM_INTRO_H

#include <libultraship.h>
#include <libultra/gbi.h>
#include "CoreMath.h"

#ifdef __cplusplus
extern "C" {
#endif
#include "common_structs.h"
#ifdef __cplusplus
}
#endif

#ifdef __cplusplus
class HarbourMastersIntro {
public:
    HarbourMastersIntro();

    void HM_InitIntro();
    void HM_TickIntro();
    void HM_DrawIntro();
private:
    void Setup();
    void Sync();
    void Bob(FVector& pos, IRotator& rot, f32 bobAmp, f32 bobSpeed, f32 tiltAmp, f32 tiltSpeed, f32 rollAmp, f32 rollSpeed);
    void SpagBob(FVector& pos, IRotator& rot, f32 bobAmp, f32 bobSpeed, f32 tiltAmp, f32 tiltSpeed, f32 rollAmp, f32 rollSpeed);
    void MoveCloserToCamera(float moveSpeed);

    struct HMCamera {
        FVector Pos;
        FVector LookAt;
    };

    Mtx PerspectiveMatrix;
    Mtx LookAtMatrix;
    HMCamera _camera;

    f32 _cameraSpeed;
    f32 _cameraMaxSpeed;
    f32 _cameraAcceleration;

    FVector _pos;
    IRotator _rot;
    FVector _scale;

    FVector _shipPos;
    IRotator _shipRot;

    FVector _ship2Pos;
    IRotator _ship2Rot;

    s32 _water = 0;

    FVector _posHM64;
    IRotator _rotHM64;

    FVector _hPos;
    IRotator _hRot;
    FVector _hScale;

    FVector lusPos;
    IRotator lusRot;
    FVector lusScale;
    int32_t DespawnValue = 0;
};

extern "C" {
#endif

void HM_InitIntro(void);
void HM_TickIntro(void);
void HM_DrawIntro(void);

#ifdef __cplusplus
}
#endif

#endif // _HM_INTRO_H