aboutsummaryrefslogtreecommitdiff
path: root/src/cameras.h
blob: e02a3936caca79d7b91df3c77f338162dbc46422 (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
#include "gameCommon.h"

#ifndef CAMERAS_H
#define CAMERAS_H

#define FIRST_PERSON_CAMERA_DISTANCE 5.0
#define THIRD_PERSON_CAMERA_DISTANCE (Vector3){0.0, 10.0, -20.0}
#define DEBUG_CAMERA_POSITION (Vector3){0.0, 200.0, 100.0}

#define CAMERA_COUNT 4

// Each camera has a game loop callback and a init callback.
typedef void (*CameraInitCb)(Game * game, Camera3D * camera);
typedef void (*CameraCb)(Game * game, Camera3D * camera);

extern const CameraInitCb cameraInitCallbacks[CAMERA_COUNT];
extern const CameraCb cameraCallbacks[CAMERA_COUNT];

typedef enum CameraId {
    FIRST_PERSON_CAMERA,
    THIRD_PERSON_CAMERA,
    ZOOM_CAMERA,
    DEBUG_CAMERA
} CameraId;

// A array of the cameras.
typedef Camera3D Cameras[CAMERA_COUNT];

void initCameras(Game * game, Cameras cameras);
void runCameraUpdate(Game * game, Cameras cameras, CameraId id);

#endif