summaryrefslogtreecommitdiff
path: root/src/overlays/actors/ovl_Obj_Ending/z_obj_ending.c
blob: e1b862b256a3608593d3c5809f86abf1a322ea72 (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
/*
 * File: z_obj_ending.c
 * Overlay: ovl_Obj_Ending
 * Description: The stump and lighting at the end of the credits
 */

#include "z_obj_ending.h"
#include "assets/objects/object_ending_obj/object_ending_obj.h"

#define FLAGS (ACTOR_FLAG_UPDATE_CULLING_DISABLED | ACTOR_FLAG_DRAW_CULLING_DISABLED)

void ObjEnding_Init(Actor* thisx, PlayState* play);
void ObjEnding_Update(Actor* thisx, PlayState* play);
void ObjEnding_Draw(Actor* thisx, PlayState* play);

ActorProfile Obj_Ending_Profile = {
    /**/ ACTOR_OBJ_ENDING,
    /**/ ACTORCAT_BG,
    /**/ FLAGS,
    /**/ OBJECT_ENDING_OBJ,
    /**/ sizeof(ObjEnding),
    /**/ ObjEnding_Init,
    /**/ Actor_Noop,
    /**/ ObjEnding_Update,
    /**/ ObjEnding_Draw,
};

static ObjEndingModelInfo sModelInfo[] = {
    { { object_ending_obj_DL_003440, object_ending_obj_DL_0031A0 }, NULL },
    { { NULL, object_ending_obj_DL_0003D0 }, object_ending_obj_Matanimheader_001FF8 },
};

static InitChainEntry sInitChain[] = {
    ICHAIN_VEC3F_DIV1000(scale, 100, ICHAIN_STOP),
};

void ObjEnding_Init(Actor* thisx, PlayState* play) {
    ObjEnding* this = (ObjEnding*)thisx;
    AnimatedMaterial* animMat;

    Actor_ProcessInitChain(thisx, sInitChain);
    this->modelInfo = &sModelInfo[thisx->params];
    animMat = this->modelInfo->animMat;
    if (animMat != NULL) {
        this->animMat = Lib_SegmentedToVirtual(animMat);
    }
}

void ObjEnding_Update(Actor* thisx, PlayState* play) {
}

void ObjEnding_Draw(Actor* thisx, PlayState* play) {
    ObjEnding* this = (ObjEnding*)thisx;
    Gfx* dl1;
    Gfx* dl2;

    if (this->animMat != NULL) {
        AnimatedMat_Draw(play, this->animMat);
    }
    dl1 = this->modelInfo->dLists[0];
    if (dl1 != NULL) {
        Gfx_DrawDListOpa(play, dl1);
    }
    dl2 = this->modelInfo->dLists[1];
    if (dl2 != NULL) {
        Gfx_DrawDListXlu(play, dl2);
    }
}