#ifndef __TRANSFORM_IDS_H__
#define __TRANSFORM_IDS_H__

#include "PR/ultratypes.h"
#include "rt64_extended_gbi.h"

#define PROJECTION_GAMEPLAY_TRANSFORM_ID       0x00001000
#define PROJECTION_SKYBOX_TRANSFORM_ID         0x00001001
#define PROJECTION_TRANSITION_TRANSFORM_ID     0x00001002
#define PROJECTION_PRESS_START_TRANSFORM_ID    0x00001003
#define PROJECTION_BOTTLES_BONUS_TRANSFORM_ID  0x00001004
#define PROJECTION_BK_LOGO_TRANSFORM_ID        0x00001005
#define PROJECTION_COPYRIGHT_TRANSFORM_ID      0x00001006
#define PROJECTION_GAME_OVER_TRANSFORM_ID      0x00001007
#define PROJECTION_THE_END_TRANSFORM_ID        0x00001008
#define PROJECTION_PORTRAIT_TRANSFORM_ID_START 0x00001100 // 1 for each portrait ID

#define MAP_MODEL_OPA_TRANSFORM_ID_START 0x00400000
#define MAP_MODEL_XLU_TRANSFORM_ID_START 0x00800000

#define TRANSITION_MODEL_TRANSFORM_ID_START 0x00F00000

#define SKYBOX_MODEL_TRANSFORM_ID_COUNT 256
#define SKYBOX_TRANSFORM_ID_START 0x00F20000

#define ZOOMBOX_TRANSFORM_ID_START 0x00F30000
#define ZOOMBOX_PORTRAIT_TRANSFORM_ID_START 0x00F31000

#define PROJECTILE_TRANSFORM_ID_START 0x00F32000

#define MARKER_TRANSFORM_ID_COUNT 256 // Number of transform IDs for each ActorMarker.
#define BANJO_TRANSFORM_ID_START 0x01000000
#define MARKER_TRANSFORM_ID_START (BANJO_TRANSFORM_ID_START + MARKER_TRANSFORM_ID_COUNT)

#define PROP_TRANSFORM_ID_COUNT 256
#define PROP_TRANSFORM_ID_START 0x02000000

#define PARTICLE_EMITTER_TRANSFORM_ID_COUNT (256 * 256) // Number of transform IDs for each particle manager.
#define PARTICLE_MODEL_TRANSFORM_ID_COUNT 256 // Number of transform IDs for each model particle.
#define PARTICLE_EMITTER_MODEL_ID_COUNT (PARTICLE_EMITTER_TRANSFORM_ID_COUNT / PARTICLE_MODEL_TRANSFORM_ID_COUNT) // Number of model transform IDs for a model particle emitter.
#define PARTICLE_TRANSFORM_ID_START         0x03000000
#define PARTICLE_EMITTER_TRANSFORM_ID_TOTAL 0x02000000
#define PARTICLE_EMITTER_MAX_ID (PARTICLE_EMITTER_TRANSFORM_ID_TOTAL / PARTICLE_EMITTER_TRANSFORM_ID_COUNT)

void reset_projection_ids();

extern s32 cur_drawn_model_is_map;
extern s32 cur_drawn_model_transform_id;
extern s32 cur_perspective_projection_transform_id;
extern s32 cur_ortho_projection_transform_id;

#endif
