#include <libultra/types.h>

#include "dynlist_macros.h"
#include "dynlists.h"
#include "../dynlist_proc.h"

struct DynList dynlist_spot_shape[] = {
    BeginList(),

    StartGroup("spotvg"),
        MakeVertex(0.0, 0.0, 0.0),
        MakeVertex(1.0, -1.0, 1.0),
            SetParamF(PARM_F_ALPHA, 0.0),
        MakeVertex(1.0, 1.0, 1.0),
            SetParamF(PARM_F_ALPHA, 0.0),
        MakeVertex(-1.0, 1.0, 1.0),
            SetParamF(PARM_F_ALPHA, 0.0),
        MakeVertex(-1.0, -1.0, 1.0),
            SetParamF(PARM_F_ALPHA, 0.0),
        MakeVertex(0.0, 0.0, 0.0),
    EndGroup("spotvg"),

    StartGroup("spotpg"),
        MakeDynObj(D_FACE, NULL),
            SetMaterial(0),
            SetParamPtr(PARM_PTR_OBJ_VTX, 2),
            SetParamPtr(PARM_PTR_OBJ_VTX, 3),
            SetParamPtr(PARM_PTR_OBJ_VTX, 5),
        MakeDynObj(D_FACE, NULL),
            SetMaterial(0),
            SetParamPtr(PARM_PTR_OBJ_VTX, 3),
            SetParamPtr(PARM_PTR_OBJ_VTX, 4),
            SetParamPtr(PARM_PTR_OBJ_VTX, 5),
        MakeDynObj(D_FACE, NULL),
            SetMaterial(0),
            SetParamPtr(PARM_PTR_OBJ_VTX, 4),
            SetParamPtr(PARM_PTR_OBJ_VTX, 1),
            SetParamPtr(PARM_PTR_OBJ_VTX, 5),
        MakeDynObj(D_FACE, NULL),
            SetMaterial(0),
            SetParamPtr(PARM_PTR_OBJ_VTX, 1),
            SetParamPtr(PARM_PTR_OBJ_VTX, 2),
            SetParamPtr(PARM_PTR_OBJ_VTX, 5),
        MakeDynObj(D_FACE, NULL),
            SetMaterial(0),
            SetParamPtr(PARM_PTR_OBJ_VTX, 0),
            SetParamPtr(PARM_PTR_OBJ_VTX, 3),
            SetParamPtr(PARM_PTR_OBJ_VTX, 2),
        MakeDynObj(D_FACE, NULL),
            SetMaterial(0),
            SetParamPtr(PARM_PTR_OBJ_VTX, 0),
            SetParamPtr(PARM_PTR_OBJ_VTX, 4),
            SetParamPtr(PARM_PTR_OBJ_VTX, 3),
        MakeDynObj(D_FACE, NULL),
            SetMaterial(0),
            SetParamPtr(PARM_PTR_OBJ_VTX, 0),
            SetParamPtr(PARM_PTR_OBJ_VTX, 1),
            SetParamPtr(PARM_PTR_OBJ_VTX, 4),
        MakeDynObj(D_FACE, NULL),
            SetMaterial(0),
            SetParamPtr(PARM_PTR_OBJ_VTX, 0),
            SetParamPtr(PARM_PTR_OBJ_VTX, 2),
            SetParamPtr(PARM_PTR_OBJ_VTX, 1),
    EndGroup("spotpg"),

    UseObj("spotpg"),
        MapVertices("spotvg"),

    MakeDynObj(D_SHAPE, "spot_sh"),
        SetNodeGroup("spotvg"),
        SetPlaneGroup("spotpg"),
        SetParamF(PARM_F_ALPHA, 0.1),

    EndList(),
};
