# NNSG3dMatAnmResult

## Syntax

    #include <nnsys/g3d/anm.h>

    typedef enum
    {
        NNS_G3D_MATANM_RESULTFLAG_TEXMTX_SCALEONE  = 0x00000001,
        NNS_G3D_MATANM_RESULTFLAG_TEXMTX_ROTZERO   = 0x00000002,
        NNS_G3D_MATANM_RESULTFLAG_TEXMTX_TRANSZERO = 0x00000004,

        NNS_G3D_MATANM_RESULTFLAG_TEXMTX_SET       = 0x00000008,
        NNS_G3D_MATANM_RESULTFLAG_TEXMTX_MULT      = 0x00000010,
        NNS_G3D_MATANM_RESULTFLAG_WIREFRAME        = 0x00000020
    }
    NNSG3dMatAnmResultFlag;

    typedef struct NNSG3dMatAnmResult_
    {
        NNSG3dMatAnmResultFlag flag;
        u32                    prmMatColor0;
        u32                    prmMatColor1;
        u32                    prmPolygonAttr;
        u32                    prmTexImage;
        u32                    prmTexPltt;

        fx32                   scaleS, scaleT;
        fx16                   sinR, cosR;
        fx32                   transS, transT;

        u16                    origWidth, origHeight;
        fx32                   magW, magH;
    }
    NNSG3dMatAnmResult;

## Description

The `NNSG3dMatAnmResult` structure stores material information. GD3 uses the information stored in this structure to send commands to the Geometry Engine. The structure is created and used during the execution of the `NNSi_G3dFuncSbc_MAT` function (when called during processing of the SBC's MAT command).
To implement material animation, the `NNSi_G3dFuncSbc_MAT` function acts internally to set the data stored in this structure in accordance with the animation data.
By setting a callback in `NNS_G3D_SBC_MAT`, the material's settings can also be controlled from the user program.

Data Member | Description
--- | ---
flag | Flag of type `NNSG3dMatAnmResultFlag`.
prmMatColor0 | Stores diffuse and ambient. Equivalent to the parameter of the `MaterialColor0` geometry command.
prmMatColor1 | Stores specular and emission. Equivalent to the parameter of the `MaterialColor1` geometry command.
prmPolygonAttr | Stores the polygon attribute values. Equivalent to the parameters of the `PolygonAttr` geometry command.
prmTexImage | Stores the texture parameters. Equivalent to the parameters of the `TexImageParam` geometry command.
prmTexPltt | Stores the texture palette's base address. Equivalent to the parameter of the `TexPlttBase` geometry command.
scaleS | The texture's scale value in the `S` direction.
scaleT | The texture's scale value in the `T` direction.
sinR | The sine of the texture's rotation angle.
cosR | The cosine of the texture's rotation angle.
transS | The texture's translation component in the `S` direction.
transT | The texture's translation component in the `T` direction.
origWidth | The width of the texture corresponding to the material at time of `g3dcvtr` output.
origHeight | The height of the texture corresponding to the material at time of `g3dcvtr` output.
magW | The magnification determined when binding model and texture. Normally this is FX32_ONE.
magH | The magnification determined when binding model and texture. Normally this is FX32_ONE.

`NNSG3dMatAnmResultFlag` Values | Description
--- | ---
`NNS_G3D_MATANM_RESULTFLAG_TEXMTX_SCALEONE` | When this flag is set, the values stored in `scaleS` and `scaleT` are disabled. Both are treated as if `FX32_ONE` has been entered.
`NNS_G3D_MATANM_RESULTFLAG_TEXMTX_ROTZERO` | When this flag is set, the values stored in `sinR` and `cosR` are disabled. `sinR` is `0`, but `cosR` is treated as if `FX32_ONE` has been entered.
`NNS_G3D_MATANM_RESULTFLAG_TEXMTX_TRANSZERO` | When this flag is set, the values stored in `transS` and `transT` are disabled. Both are treated as if `0` has been entered.
`NNS_G3D_MATANM_RESULTFLAG_TEXMTX_SET` | When this flag is set, the texture matrix corresponding to this structure's settings is set as the current texture matrix.
`NNS_G3D_MATANM_RESULTFLAG_TEXMTX_MULT` | When this flag is set, the current texture matric is multiplied by the texture matrix corresponding to this structure's settings.
`NNS_G3D_MATANM_RESULTFLAG_WIREFRAME` | When this flag is set, the polygons belonging to the material are rendered as wireframes.

## See Also

Kernel, Rendering Engine

## Revision History

2004/10/13 Initial version.

CONFIDENTIAL