Esempio n. 1
0
    private void dmLogoSegaMainFunc(AppMain.MTS_TASK_TCB tcb)
    {
        AppMain.DMS_LOGO_SEGA_WORK work = (AppMain.DMS_LOGO_SEGA_WORK)tcb.work;
        work.h_se.snd_ctrl_param.volume = !AppMain.GsSystemBgmIsPlay() ? 1f : 0.0f;
        if (AppMain.AoSysIsShowPlatformUI())
        {
            if (AppMain.IzFadeIsExe())
            {
                AppMain.IzFadeSetStopUpdate1Frame((AppMain.IZS_FADE_WORK)null);
            }
        }
        else
        {
            if (work.func != null)
            {
                work.func(work);
            }
            if (((int)work.flag & 1) != 0)
            {
                this.dmLogoSegaPreEnd(work);
                AppMain.mtTaskChangeTcbProcedure(tcb, new AppMain.GSF_TASK_PROCEDURE(this.gmLogoSegaPreEndWaitFunc));
                work.timer = 0;
                return;
            }
        }
        float frame = 0.0f;

        if (!AppMain.AoSysIsShowPlatformUI() && ((int)work.flag & 2) != 0)
        {
            frame = 1f;
        }
        AppMain.AoActSysSetDrawTaskPrio();
        for (int index = 0; index < 8; ++index)
        {
            AppMain.AoActSetTexture(AppMain.AoTexGetTexList(AppMain.dm_logo_sega_aos_tex[(int)AppMain.dm_logo_sega_tex_id_tbl[index]]));
            AppMain.AoActUpdate(work.act[index], frame);
            AppMain.AoActDraw(work.act[index]);
        }
        AppMain.NNS_RGBA diffuse = new AppMain.NNS_RGBA(1f, 1f, 1f, 1f);
        AppMain.NNS_RGB  ambient = new AppMain.NNS_RGB(1f, 1f, 1f);
        if (!AppMain.AoSysIsShowPlatformUI())
        {
            AppMain.amTrailEFUpdate((ushort)1);
        }
        if (AppMain.g_obj.glb_camera_id != -1)
        {
            AppMain.SNNS_VECTOR disp_pos   = new AppMain.SNNS_VECTOR();
            AppMain.SNNS_VECTOR snnsVector = new AppMain.SNNS_VECTOR();
            AppMain.SNNS_MATRIX dst        = new AppMain.SNNS_MATRIX();
            AppMain.nnMakeUnitMatrix(ref dst);
            AppMain.ObjDraw3DNNSetCameraEx(AppMain.g_obj.glb_camera_id, AppMain.g_obj.glb_camera_type, 0U);
            AppMain.ObjCameraDispPosGet(AppMain.g_obj.glb_camera_id, out disp_pos);
            AppMain.amVectorSet(ref snnsVector, -dst.M03, -dst.M13, -dst.M23);
            AppMain.nnAddVector(ref disp_pos, ref snnsVector, ref disp_pos);
            AppMain.amEffectSetCameraPos(ref disp_pos);
        }
        AppMain.nnSetPrimitive3DMaterial(ref diffuse, ref ambient, 1f);
        AppMain.amTrailEFDraw((ushort)1, AppMain.dm_logo_sega_aos_tex[0].texlist, 0U);
    }
Esempio n. 2
0
 public void Assign(ref AppMain.SNNS_MATRIX matrix)
 {
     this.M00 = matrix.M00;
     this.M01 = matrix.M01;
     this.M02 = matrix.M02;
     this.M03 = matrix.M03;
     this.M10 = matrix.M10;
     this.M11 = matrix.M11;
     this.M12 = matrix.M12;
     this.M13 = matrix.M13;
     this.M20 = matrix.M20;
     this.M21 = matrix.M21;
     this.M22 = matrix.M22;
     this.M23 = matrix.M23;
     this.M30 = matrix.M30;
     this.M31 = matrix.M31;
     this.M32 = matrix.M32;
     this.M33 = matrix.M33;
 }
Esempio n. 3
0
 private static void gmPlyEfctTrailSysMain(AppMain.MTS_TASK_TCB tcb)
 {
     if (AppMain.ObjObjectPauseCheck(0U) == 0U)
     {
         AppMain.amTrailEFUpdate((ushort)1);
     }
     if (AppMain.g_obj.glb_camera_id == -1 || AppMain.ObjCameraGet(AppMain.g_obj.glb_camera_id) == null)
     {
         return;
     }
     AppMain.SNNS_VECTOR disp_pos   = new AppMain.SNNS_VECTOR();
     AppMain.SNNS_VECTOR snnsVector = new AppMain.SNNS_VECTOR();
     AppMain.SNNS_MATRIX dst        = new AppMain.SNNS_MATRIX();
     AppMain.NNS_RGBA    diffuse    = new AppMain.NNS_RGBA(1f, 1f, 1f, 1f);
     AppMain.SNNS_RGB    ambient    = new AppMain.SNNS_RGB(1f, 1f, 1f);
     AppMain.nnMakeUnitMatrix(ref dst);
     AppMain.ObjDraw3DNNSetCameraEx(AppMain.g_obj.glb_camera_id, AppMain.g_obj.glb_camera_type, 0U);
     AppMain.ObjCameraDispPosGet(AppMain.g_obj.glb_camera_id, out disp_pos);
     AppMain.amVectorSet(ref snnsVector, -dst.M03, -dst.M13, -dst.M23);
     AppMain.nnAddVector(ref disp_pos, ref snnsVector, ref disp_pos);
     AppMain.amEffectSetCameraPos(ref disp_pos);
     AppMain.nnSetPrimitive3DMaterial(ref diffuse, ref ambient, 1f);
     AppMain.amTrailEFDraw((ushort)1, (AppMain.NNS_TEXLIST)AppMain.ObjDataGet(18).pData, 0U);
 }
Esempio n. 4
0
    private static void gmRingDrawEnd()
    {
        if (AppMain.gm_ring_sys_work.draw_ring_count <= (ushort)0 || !AppMain.GmMainIsDrawEnable())
        {
            return;
        }
        AppMain.VecU16 vecU16 = new AppMain.VecU16();
        vecU16.x = (ushort)0;
        vecU16.y = AppMain.gm_ring_sys_work.dir;
        vecU16.z = AppMain.GmMainGetObjectRotation();
        AppMain.GMS_RING_SYS_WORK gmRingSysWork = AppMain.gm_ring_sys_work;
        uint drawRingCount = (uint)AppMain.gm_ring_sys_work.draw_ring_count;

        AppMain.SNNS_VECTOR disp_pos;
        AppMain.ObjCameraDispPosGet(0, out disp_pos);
        float s1;
        float c1;

        AppMain.nnSinCos((int)vecU16.z - 8192, out s1, out c1);
        s1 *= 13.57638f;
        float num1 = c1 * 13.57638f;
        float s2;
        float c2;

        AppMain.nnSinCos((int)vecU16.z - 24576, out s2, out c2);
        float num2 = s2 * 13.57638f;
        float num3 = c2 * 13.57638f;

        AppMain.VecFx32     vecFx32    = new AppMain.VecFx32(gmRingSysWork.draw_ring_pos[0]);
        AppMain.SNNS_MATRIX snnsMatrix = new AppMain.SNNS_MATRIX();
        AppMain.nnMakeUnitMatrix(ref snnsMatrix);
        AppMain.nnTranslateMatrix(ref snnsMatrix, ref snnsMatrix, AppMain.FX_FX32_TO_F32(vecFx32.x), -AppMain.FX_FX32_TO_F32(vecFx32.y), AppMain.FX_FX32_TO_F32(vecFx32.z));
        AppMain._AMS_PARAM_DRAW_PRIMITIVE.type    = 1;
        AppMain._AMS_PARAM_DRAW_PRIMITIVE.count   = 6 * (int)drawRingCount - 2;
        AppMain._AMS_PARAM_DRAW_PRIMITIVE.ablend  = 0;
        AppMain._AMS_PARAM_DRAW_PRIMITIVE.bldSrc  = 768;
        AppMain._AMS_PARAM_DRAW_PRIMITIVE.bldDst  = 774;
        AppMain._AMS_PARAM_DRAW_PRIMITIVE.bldMode = 32774;
        AppMain._AMS_PARAM_DRAW_PRIMITIVE.aTest   = (short)1;
        AppMain._AMS_PARAM_DRAW_PRIMITIVE.zMask   = (short)0;
        AppMain._AMS_PARAM_DRAW_PRIMITIVE.zTest   = (short)1;
        AppMain._AMS_PARAM_DRAW_PRIMITIVE.noSort  = (short)1;
        AppMain._AMS_PARAM_DRAW_PRIMITIVE.texlist = AppMain.gm_ring_obj_3d.texlist;
        AppMain._AMS_PARAM_DRAW_PRIMITIVE.texId   = 0;
        AppMain._AMS_PARAM_DRAW_PRIMITIVE.uwrap   = 1;
        AppMain._AMS_PARAM_DRAW_PRIMITIVE.vwrap   = 1;
        uint color = AppMain.gm_ring_sys_work.color;

        AppMain._AMS_PARAM_DRAW_PRIMITIVE.vtxPCT3D = AppMain.amDrawAlloc_NNS_PRIM3D_PCT(AppMain._AMS_PARAM_DRAW_PRIMITIVE.count);
        AppMain.NNS_PRIM3D_PCT[] buffer = AppMain._AMS_PARAM_DRAW_PRIMITIVE.vtxPCT3D.buffer;
        int offset = AppMain._AMS_PARAM_DRAW_PRIMITIVE.vtxPCT3D.offset;

        AppMain._AMS_PARAM_DRAW_PRIMITIVE.format3D = 4;
        for (int index1 = 0; (long)index1 < (long)drawRingCount; ++index1)
        {
            int    index2 = offset + 6 * index1;
            ushort num4   = (ushort)((uint)AppMain.gm_ring_sys_work.draw_ring_uv_frame / 4U);
            buffer[index2].Tex.u     = buffer[index2 + 1].Tex.u = AppMain.gm_ring_roll_uv[0][(int)num4];
            buffer[index2 + 2].Tex.u = buffer[index2 + 3].Tex.u = AppMain.gm_ring_roll_uv[0][(int)num4] + 0.25f;
            buffer[index2].Tex.v     = buffer[index2 + 2].Tex.v = AppMain.gm_ring_roll_uv[1][(int)num4];
            buffer[index2 + 1].Tex.v = buffer[index2 + 3].Tex.v = AppMain.gm_ring_roll_uv[1][(int)num4] + 0.25f;
            buffer[index2].Col       = color;
            buffer[index2 + 1].Col   = buffer[index2 + 2].Col = buffer[index2 + 3].Col = buffer[index2].Col;
            buffer[index2].Pos.x     = s1 + AppMain.FX_FX32_TO_F32(gmRingSysWork.draw_ring_pos[index1].x - vecFx32.x);
            buffer[index2 + 1].Pos.x = num2 + AppMain.FX_FX32_TO_F32(gmRingSysWork.draw_ring_pos[index1].x - vecFx32.x);
            buffer[index2 + 2].Pos.x = -num2 + AppMain.FX_FX32_TO_F32(gmRingSysWork.draw_ring_pos[index1].x - vecFx32.x);
            buffer[index2 + 3].Pos.x = -s1 + AppMain.FX_FX32_TO_F32(gmRingSysWork.draw_ring_pos[index1].x - vecFx32.x);
            buffer[index2].Pos.y     = num1 - AppMain.FX_FX32_TO_F32(gmRingSysWork.draw_ring_pos[index1].y - vecFx32.y);
            buffer[index2 + 1].Pos.y = num3 - AppMain.FX_FX32_TO_F32(gmRingSysWork.draw_ring_pos[index1].y - vecFx32.y);
            buffer[index2 + 2].Pos.y = -num3 - AppMain.FX_FX32_TO_F32(gmRingSysWork.draw_ring_pos[index1].y - vecFx32.y);
            buffer[index2 + 3].Pos.y = -num1 - AppMain.FX_FX32_TO_F32(gmRingSysWork.draw_ring_pos[index1].y - vecFx32.y);
            buffer[index2].Pos.z     = buffer[index2 + 1].Pos.z = buffer[index2 + 2].Pos.z = buffer[index2 + 3].Pos.z = AppMain.FX_FX32_TO_F32(gmRingSysWork.draw_ring_pos[index1].z - vecFx32.z) - 1f;
            if (index1 != 0)
            {
                buffer[index2 - 1] = buffer[index2];
            }
            if ((long)(index1 + 1) < (long)drawRingCount)
            {
                buffer[index2 + 4] = buffer[index2 + 3];
            }
        }
        AppMain._AMS_PARAM_DRAW_PRIMITIVE.sortZ = AppMain.nnDistanceVector(ref buffer[offset].Pos, ref disp_pos);
        AppMain.amMatrixPush(ref snnsMatrix);
        AppMain.ObjDraw3DNNDrawPrimitive(AppMain._AMS_PARAM_DRAW_PRIMITIVE);
        AppMain.amMatrixPop();
    }
Esempio n. 5
0
    // Token: 0x06000D9A RID: 3482 RVA: 0x0007781C File Offset: 0x00075A1C
    private static void gmRingDrawEnd()
    {
        if (AppMain.gm_ring_sys_work.draw_ring_count <= 0)
        {
            return;
        }
        if (!AppMain.GmMainIsDrawEnable())
        {
            return;
        }
        AppMain.VecU16 vecU = default(AppMain.VecU16);
        vecU.x = 0;
        vecU.y = AppMain.gm_ring_sys_work.dir;
        vecU.z = AppMain.GmMainGetObjectRotation();
        AppMain.GMS_RING_SYS_WORK gms_RING_SYS_WORK = AppMain.gm_ring_sys_work;
        uint draw_ring_count = (uint)AppMain.gm_ring_sys_work.draw_ring_count;

        AppMain.SNNS_VECTOR snns_VECTOR;
        AppMain.ObjCameraDispPosGet(0, out snns_VECTOR);
        float num;
        float num2;

        AppMain.nnSinCos(( int )vecU.z + -8192, out num, out num2);
        num  *= 13.576385f;
        num2 *= 13.576385f;
        float num3;
        float num4;

        AppMain.nnSinCos(( int )vecU.z + -24576, out num3, out num4);
        num3 *= 13.576385f;
        num4 *= 13.576385f;
        AppMain.VecFx32     vecFx       = new AppMain.VecFx32(gms_RING_SYS_WORK.draw_ring_pos[0]);
        AppMain.SNNS_MATRIX snns_MATRIX = default(AppMain.SNNS_MATRIX);
        AppMain.nnMakeUnitMatrix(ref snns_MATRIX);
        AppMain.nnTranslateMatrix(ref snns_MATRIX, ref snns_MATRIX, AppMain.FX_FX32_TO_F32(vecFx.x), -AppMain.FX_FX32_TO_F32(vecFx.y), AppMain.FX_FX32_TO_F32(vecFx.z));
        AppMain._AMS_PARAM_DRAW_PRIMITIVE.type    = 1;
        AppMain._AMS_PARAM_DRAW_PRIMITIVE.count   = ( int )(6U * draw_ring_count - 2U);
        AppMain._AMS_PARAM_DRAW_PRIMITIVE.ablend  = 0;
        AppMain._AMS_PARAM_DRAW_PRIMITIVE.bldSrc  = 768;
        AppMain._AMS_PARAM_DRAW_PRIMITIVE.bldDst  = 774;
        AppMain._AMS_PARAM_DRAW_PRIMITIVE.bldMode = 32774;
        AppMain._AMS_PARAM_DRAW_PRIMITIVE.aTest   = 1;
        AppMain._AMS_PARAM_DRAW_PRIMITIVE.zMask   = 0;
        AppMain._AMS_PARAM_DRAW_PRIMITIVE.zTest   = 1;
        AppMain._AMS_PARAM_DRAW_PRIMITIVE.noSort  = 1;
        AppMain._AMS_PARAM_DRAW_PRIMITIVE.texlist = AppMain.gm_ring_obj_3d.texlist;
        AppMain._AMS_PARAM_DRAW_PRIMITIVE.texId   = 0;
        AppMain._AMS_PARAM_DRAW_PRIMITIVE.uwrap   = 1;
        AppMain._AMS_PARAM_DRAW_PRIMITIVE.vwrap   = 1;
        uint color = AppMain.gm_ring_sys_work.color;

        AppMain._AMS_PARAM_DRAW_PRIMITIVE.vtxPCT3D = AppMain.amDrawAlloc_NNS_PRIM3D_PCT(AppMain._AMS_PARAM_DRAW_PRIMITIVE.count);
        AppMain.NNS_PRIM3D_PCT[] buffer = AppMain._AMS_PARAM_DRAW_PRIMITIVE.vtxPCT3D.buffer;
        int offset = AppMain._AMS_PARAM_DRAW_PRIMITIVE.vtxPCT3D.offset;

        AppMain._AMS_PARAM_DRAW_PRIMITIVE.format3D = 4;
        int num5 = 0;

        while (( long )num5 < ( long )(( ulong )draw_ring_count))
        {
            int    num6 = offset + 6 * num5;
            ushort num7 = (ushort)(AppMain.gm_ring_sys_work.draw_ring_uv_frame / 4);
            buffer[num6].Tex.u     = (buffer[num6 + 1].Tex.u = AppMain.gm_ring_roll_uv[0][( int )num7]);
            buffer[num6 + 2].Tex.u = (buffer[num6 + 3].Tex.u = AppMain.gm_ring_roll_uv[0][( int )num7] + 0.25f);
            buffer[num6].Tex.v     = (buffer[num6 + 2].Tex.v = AppMain.gm_ring_roll_uv[1][( int )num7]);
            buffer[num6 + 1].Tex.v = (buffer[num6 + 3].Tex.v = AppMain.gm_ring_roll_uv[1][( int )num7] + 0.25f);
            buffer[num6].Col       = color;
            buffer[num6 + 1].Col   = (buffer[num6 + 2].Col = (buffer[num6 + 3].Col = buffer[num6].Col));
            buffer[num6].Pos.x     = num + AppMain.FX_FX32_TO_F32(gms_RING_SYS_WORK.draw_ring_pos[num5].x - vecFx.x);
            buffer[num6 + 1].Pos.x = num3 + AppMain.FX_FX32_TO_F32(gms_RING_SYS_WORK.draw_ring_pos[num5].x - vecFx.x);
            buffer[num6 + 2].Pos.x = -num3 + AppMain.FX_FX32_TO_F32(gms_RING_SYS_WORK.draw_ring_pos[num5].x - vecFx.x);
            buffer[num6 + 3].Pos.x = -num + AppMain.FX_FX32_TO_F32(gms_RING_SYS_WORK.draw_ring_pos[num5].x - vecFx.x);
            buffer[num6].Pos.y     = num2 - AppMain.FX_FX32_TO_F32(gms_RING_SYS_WORK.draw_ring_pos[num5].y - vecFx.y);
            buffer[num6 + 1].Pos.y = num4 - AppMain.FX_FX32_TO_F32(gms_RING_SYS_WORK.draw_ring_pos[num5].y - vecFx.y);
            buffer[num6 + 2].Pos.y = -num4 - AppMain.FX_FX32_TO_F32(gms_RING_SYS_WORK.draw_ring_pos[num5].y - vecFx.y);
            buffer[num6 + 3].Pos.y = -num2 - AppMain.FX_FX32_TO_F32(gms_RING_SYS_WORK.draw_ring_pos[num5].y - vecFx.y);
            buffer[num6].Pos.z     = (buffer[num6 + 1].Pos.z = (buffer[num6 + 2].Pos.z = (buffer[num6 + 3].Pos.z = -1f + AppMain.FX_FX32_TO_F32(gms_RING_SYS_WORK.draw_ring_pos[num5].z - vecFx.z))));
            if (num5 != 0)
            {
                buffer[num6 - 1] = buffer[num6];
            }
            if (( long )(num5 + 1) < ( long )(( ulong )draw_ring_count))
            {
                buffer[num6 + 4] = buffer[num6 + 3];
            }
            num5++;
        }
        AppMain._AMS_PARAM_DRAW_PRIMITIVE.sortZ = AppMain.nnDistanceVector(ref buffer[offset].Pos, ref snns_VECTOR);
        AppMain.amMatrixPush(ref snns_MATRIX);
        AppMain.ObjDraw3DNNDrawPrimitive(AppMain._AMS_PARAM_DRAW_PRIMITIVE);
        AppMain.amMatrixPop();
    }
    // Token: 0x060007AE RID: 1966 RVA: 0x00043EFC File Offset: 0x000420FC
    private void dmLogoSegaMainFunc(AppMain.MTS_TASK_TCB tcb)
    {
        AppMain.DMS_LOGO_SEGA_WORK dms_LOGO_SEGA_WORK = (AppMain.DMS_LOGO_SEGA_WORK)tcb.work;
        if (AppMain.GsSystemBgmIsPlay())
        {
            dms_LOGO_SEGA_WORK.h_se.snd_ctrl_param.volume = 0f;
        }
        else
        {
            dms_LOGO_SEGA_WORK.h_se.snd_ctrl_param.volume = 1f;
        }
        if (AppMain.AoSysIsShowPlatformUI())
        {
            if (AppMain.IzFadeIsExe())
            {
                AppMain.IzFadeSetStopUpdate1Frame(null);
            }
        }
        else
        {
            if (dms_LOGO_SEGA_WORK.func != null)
            {
                dms_LOGO_SEGA_WORK.func(dms_LOGO_SEGA_WORK);
            }
            if ((dms_LOGO_SEGA_WORK.flag & 1U) != 0U)
            {
                this.dmLogoSegaPreEnd(dms_LOGO_SEGA_WORK);
                AppMain.mtTaskChangeTcbProcedure(tcb, new AppMain.GSF_TASK_PROCEDURE(this.gmLogoSegaPreEndWaitFunc));
                dms_LOGO_SEGA_WORK.timer = 0;
                return;
            }
        }
        float frame = 0f;

        if (!AppMain.AoSysIsShowPlatformUI() && (dms_LOGO_SEGA_WORK.flag & 2U) != 0U)
        {
            frame = 1f;
        }
        AppMain.AoActSysSetDrawTaskPrio();
        for (int i = 0; i < 8; i++)
        {
            AppMain.AoActSetTexture(AppMain.AoTexGetTexList(AppMain.dm_logo_sega_aos_tex[( int )AppMain.dm_logo_sega_tex_id_tbl[i]]));
            AppMain.AoActUpdate(dms_LOGO_SEGA_WORK.act[i], frame);
            AppMain.AoActDraw(dms_LOGO_SEGA_WORK.act[i]);
        }
        AppMain.NNS_RGBA nns_RGBA = new AppMain.NNS_RGBA(1f, 1f, 1f, 1f);
        AppMain.NNS_RGB  nns_RGB  = new AppMain.NNS_RGB(1f, 1f, 1f);
        if (!AppMain.AoSysIsShowPlatformUI())
        {
            AppMain.amTrailEFUpdate(1);
        }
        if (AppMain.g_obj.glb_camera_id != -1)
        {
            AppMain.SNNS_VECTOR snns_VECTOR  = default(AppMain.SNNS_VECTOR);
            AppMain.SNNS_VECTOR snns_VECTOR2 = default(AppMain.SNNS_VECTOR);
            AppMain.SNNS_MATRIX snns_MATRIX  = default(AppMain.SNNS_MATRIX);
            AppMain.nnMakeUnitMatrix(ref snns_MATRIX);
            AppMain.ObjDraw3DNNSetCameraEx(AppMain.g_obj.glb_camera_id, AppMain.g_obj.glb_camera_type, 0U);
            AppMain.ObjCameraDispPosGet(AppMain.g_obj.glb_camera_id, out snns_VECTOR);
            AppMain.amVectorSet(ref snns_VECTOR2, -snns_MATRIX.M03, -snns_MATRIX.M13, -snns_MATRIX.M23);
            AppMain.nnAddVector(ref snns_VECTOR, ref snns_VECTOR2, ref snns_VECTOR);
            AppMain.amEffectSetCameraPos(ref snns_VECTOR);
        }
        AppMain.nnSetPrimitive3DMaterial(ref nns_RGBA, ref nns_RGB, 1f);
        AppMain.NNS_TEXLIST texlist = AppMain.dm_logo_sega_aos_tex[0].texlist;
        AppMain.amTrailEFDraw(1, texlist, 0U);
    }
Esempio n. 7
0
    private static void GmTvxExecuteDraw()
    {
        AppMain.GMS_TVX_DRAW_WORK[] gmTvxDrawWork = AppMain.gm_tvx_draw_work;
        if (gmTvxDrawWork == null || gmTvxDrawWork[0].tex == null)
        {
            return;
        }
        uint lightColor = AppMain.GmMainGetLightColor();

        AppMain._AMS_PARAM_DRAW_PRIMITIVE.bldSrc   = 770;
        AppMain._AMS_PARAM_DRAW_PRIMITIVE.bldDst   = 771;
        AppMain._AMS_PARAM_DRAW_PRIMITIVE.bldMode  = 32774;
        AppMain._AMS_PARAM_DRAW_PRIMITIVE.aTest    = (short)1;
        AppMain._AMS_PARAM_DRAW_PRIMITIVE.zMask    = (short)0;
        AppMain._AMS_PARAM_DRAW_PRIMITIVE.zTest    = (short)1;
        AppMain._AMS_PARAM_DRAW_PRIMITIVE.noSort   = (short)1;
        AppMain._AMS_PARAM_DRAW_PRIMITIVE.format3D = 4;
        for (uint index1 = 0; (long)index1 < (long)AppMain.GMD_TVX_DRAW_WORK_NUM && gmTvxDrawWork[(int)index1].tex_id != -1; ++index1)
        {
            AppMain._AMS_PARAM_DRAW_PRIMITIVE.ablend  = 0;
            AppMain._AMS_PARAM_DRAW_PRIMITIVE.texlist = gmTvxDrawWork[(int)index1].tex;
            AppMain._AMS_PARAM_DRAW_PRIMITIVE.uwrap   = gmTvxDrawWork[(int)index1].u_wrap;
            AppMain._AMS_PARAM_DRAW_PRIMITIVE.vwrap   = gmTvxDrawWork[(int)index1].v_wrap;
            AppMain._AMS_PARAM_DRAW_PRIMITIVE.type    = 1;
            AppMain._AMS_PARAM_DRAW_PRIMITIVE.count   = (int)gmTvxDrawWork[(int)index1].all_vtx_num + (int)gmTvxDrawWork[(int)index1].stack_num * 2 - 2;
            AppMain.NNS_PRIM3D_PCT_ARRAY nnsPriM3DPctArray = AppMain.amDrawAlloc_NNS_PRIM3D_PCT(AppMain._AMS_PARAM_DRAW_PRIMITIVE.count);
            AppMain.NNS_PRIM3D_PCT[]     buffer            = nnsPriM3DPctArray.buffer;
            int offset = nnsPriM3DPctArray.offset;
            int num1   = 0;
            AppMain._AMS_PARAM_DRAW_PRIMITIVE.vtxPCT3D = nnsPriM3DPctArray;
            AppMain._AMS_PARAM_DRAW_PRIMITIVE.texId    = gmTvxDrawWork[(int)index1].tex_id;
            AppMain.SNNS_MATRIX snnsMatrix1 = new AppMain.SNNS_MATRIX();
            AppMain.SNNS_MATRIX snnsMatrix2 = new AppMain.SNNS_MATRIX();
            AppMain.nnMakeUnitMatrix(ref snnsMatrix2);
            for (uint index2 = 0; index2 < gmTvxDrawWork[(int)index1].stack_num; ++index2)
            {
                AppMain.GMS_TVX_DRAW_STACK gmsTvxDrawStack = gmTvxDrawWork[(int)index1].stack[(int)index2];
                if (((int)gmsTvxDrawStack.disp_flag & (int)AppMain.GMD_TVX_DISP_BLEND) != 0)
                {
                    AppMain._AMS_PARAM_DRAW_PRIMITIVE.ablend = 1;
                }
                float num2 = AppMain.FXM_FX32_TO_FLOAT(gmsTvxDrawStack.pos.x);
                float num3 = -AppMain.FXM_FX32_TO_FLOAT(gmsTvxDrawStack.pos.y);
                float num4 = AppMain.FXM_FX32_TO_FLOAT(gmsTvxDrawStack.pos.z);
                AppMain.nnMakeUnitMatrix(ref snnsMatrix1);
                if (((int)gmsTvxDrawStack.disp_flag & (int)AppMain.GMD_TVX_DISP_ROTATE) != 0)
                {
                    AppMain.nnRotateZMatrix(ref snnsMatrix1, ref snnsMatrix1, (int)(ushort)gmsTvxDrawStack.rotate_z);
                }
                if (((int)gmsTvxDrawStack.disp_flag & (int)AppMain.GMD_TVX_DISP_SCALE) != 0)
                {
                    AppMain.nnScaleMatrix(ref snnsMatrix1, ref snnsMatrix1, AppMain.FXM_FX32_TO_FLOAT(gmsTvxDrawStack.scale.x), AppMain.FXM_FX32_TO_FLOAT(gmsTvxDrawStack.scale.y), AppMain.FXM_FX32_TO_FLOAT(gmsTvxDrawStack.scale.z));
                }
                uint num5 = lightColor;
                if (((int)gmsTvxDrawStack.disp_flag & (int)AppMain.GMD_TVX_DISP_LIGHT_DISABLE) != 0)
                {
                    num5 = gmsTvxDrawStack.color;
                }
                AppMain.SNNS_VECTOR src = new AppMain.SNNS_VECTOR();
                int num6 = num1 + offset;
                AppMain.AOS_TVX_VERTEX[] vtx = gmsTvxDrawStack.vtx;
                for (int index3 = 0; (long)index3 < (long)gmsTvxDrawStack.vtx_num; ++index3)
                {
                    src.x = vtx[index3].x;
                    src.y = vtx[index3].y;
                    src.z = vtx[index3].z;
                    int index4 = num6 + index3;
                    if (gmsTvxDrawStack.disp_flag != 0U)
                    {
                        AppMain.nnTransformVector(ref buffer[index4].Pos, ref snnsMatrix1, ref src);
                    }
                    else
                    {
                        buffer[index4].Pos.Assign(src.x, src.y, src.z);
                    }
                    buffer[index4].Pos.x += num2;
                    buffer[index4].Pos.y += num3;
                    buffer[index4].Pos.z += num4;
                    buffer[index4].Tex.u  = vtx[index3].u + gmsTvxDrawStack.coord.u;
                    buffer[index4].Tex.v  = vtx[index3].v + gmsTvxDrawStack.coord.v;
                    buffer[index4].Col    = vtx[index3].c & num5;
                }
                num1 += (int)gmsTvxDrawStack.vtx_num + 2;
                if (index2 != 0U)
                {
                    int index3 = num6 - 1;
                    buffer[index3] = buffer[index3 + 1];
                }
                if ((int)index2 != (int)gmTvxDrawWork[(int)index1].stack_num - 1)
                {
                    int index3 = num6 + ((int)gmsTvxDrawStack.vtx_num - 1);
                    buffer[index3 + 1] = buffer[index3];
                }
            }
            AppMain.amMatrixPush(ref snnsMatrix2);
            AppMain.ObjDraw3DNNDrawPrimitive(AppMain._AMS_PARAM_DRAW_PRIMITIVE);
            AppMain.amMatrixPop();
            gmTvxDrawWork[(int)index1].tex         = (AppMain.NNS_TEXLIST)null;
            gmTvxDrawWork[(int)index1].tex_id      = -1;
            gmTvxDrawWork[(int)index1].stack_num   = 0U;
            gmTvxDrawWork[(int)index1].all_vtx_num = 0U;
        }
    }
 // Token: 0x06000A69 RID: 2665 RVA: 0x0005C7FC File Offset: 0x0005A9FC
 public static void amMatrixPush(ref AppMain.SNNS_MATRIX mtx)
 {
     AppMain.NNS_MATRIXSTACK mstk = AppMain._amMatrixGetCurrentStack();
     AppMain.nnPushMatrix(mstk, ref mtx);
 }
    // Token: 0x0600052C RID: 1324 RVA: 0x0002B92C File Offset: 0x00029B2C
    private static void GmTvxExecuteDraw()
    {
        AppMain.GMS_TVX_DRAW_WORK[] array = AppMain.gm_tvx_draw_work;
        if (array == null)
        {
            return;
        }
        if (array[0].tex == null)
        {
            return;
        }
        uint num = AppMain.GmMainGetLightColor();

        AppMain._AMS_PARAM_DRAW_PRIMITIVE.bldSrc   = 770;
        AppMain._AMS_PARAM_DRAW_PRIMITIVE.bldDst   = 771;
        AppMain._AMS_PARAM_DRAW_PRIMITIVE.bldMode  = 32774;
        AppMain._AMS_PARAM_DRAW_PRIMITIVE.aTest    = 1;
        AppMain._AMS_PARAM_DRAW_PRIMITIVE.zMask    = 0;
        AppMain._AMS_PARAM_DRAW_PRIMITIVE.zTest    = 1;
        AppMain._AMS_PARAM_DRAW_PRIMITIVE.noSort   = 1;
        AppMain._AMS_PARAM_DRAW_PRIMITIVE.format3D = 4;
        uint num2 = 0U;

        while (( ulong )num2 < ( ulong )(( long )AppMain.GMD_TVX_DRAW_WORK_NUM))
        {
            if (array[( int )(( UIntPtr )num2)].tex_id == -1)
            {
                return;
            }
            AppMain._AMS_PARAM_DRAW_PRIMITIVE.ablend  = 0;
            AppMain._AMS_PARAM_DRAW_PRIMITIVE.texlist = array[( int )(( UIntPtr )num2)].tex;
            AppMain._AMS_PARAM_DRAW_PRIMITIVE.uwrap   = array[( int )(( UIntPtr )num2)].u_wrap;
            AppMain._AMS_PARAM_DRAW_PRIMITIVE.vwrap   = array[( int )(( UIntPtr )num2)].v_wrap;
            AppMain._AMS_PARAM_DRAW_PRIMITIVE.type    = 1;
            AppMain._AMS_PARAM_DRAW_PRIMITIVE.count   = ( int )(array[( int )(( UIntPtr )num2)].all_vtx_num + array[( int )(( UIntPtr )num2)].stack_num * 2U - 2U);
            AppMain.NNS_PRIM3D_PCT_ARRAY nns_PRIM3D_PCT_ARRAY = AppMain.amDrawAlloc_NNS_PRIM3D_PCT(AppMain._AMS_PARAM_DRAW_PRIMITIVE.count);
            AppMain.NNS_PRIM3D_PCT[]     buffer = nns_PRIM3D_PCT_ARRAY.buffer;
            int offset = nns_PRIM3D_PCT_ARRAY.offset;
            int num3   = 0;
            AppMain._AMS_PARAM_DRAW_PRIMITIVE.vtxPCT3D = nns_PRIM3D_PCT_ARRAY;
            AppMain._AMS_PARAM_DRAW_PRIMITIVE.texId    = array[( int )(( UIntPtr )num2)].tex_id;
            AppMain.SNNS_MATRIX snns_MATRIX  = default(AppMain.SNNS_MATRIX);
            AppMain.SNNS_MATRIX snns_MATRIX2 = default(AppMain.SNNS_MATRIX);
            AppMain.nnMakeUnitMatrix(ref snns_MATRIX2);
            for (uint num4 = 0U; num4 < array[( int )(( UIntPtr )num2)].stack_num; num4 += 1U)
            {
                AppMain.GMS_TVX_DRAW_STACK gms_TVX_DRAW_STACK = array[(int)((UIntPtr)num2)].stack[(int)((UIntPtr)num4)];
                if ((gms_TVX_DRAW_STACK.disp_flag & AppMain.GMD_TVX_DISP_BLEND) != 0U)
                {
                    AppMain._AMS_PARAM_DRAW_PRIMITIVE.ablend = 1;
                }
                float num5 = AppMain.FXM_FX32_TO_FLOAT(gms_TVX_DRAW_STACK.pos.x);
                float num6 = -AppMain.FXM_FX32_TO_FLOAT(gms_TVX_DRAW_STACK.pos.y);
                float num7 = AppMain.FXM_FX32_TO_FLOAT(gms_TVX_DRAW_STACK.pos.z);
                AppMain.nnMakeUnitMatrix(ref snns_MATRIX);
                if ((gms_TVX_DRAW_STACK.disp_flag & AppMain.GMD_TVX_DISP_ROTATE) != 0U)
                {
                    AppMain.nnRotateZMatrix(ref snns_MATRIX, ref snns_MATRIX, ( int )(( ushort )gms_TVX_DRAW_STACK.rotate_z));
                }
                if ((gms_TVX_DRAW_STACK.disp_flag & AppMain.GMD_TVX_DISP_SCALE) != 0U)
                {
                    AppMain.nnScaleMatrix(ref snns_MATRIX, ref snns_MATRIX, AppMain.FXM_FX32_TO_FLOAT(gms_TVX_DRAW_STACK.scale.x), AppMain.FXM_FX32_TO_FLOAT(gms_TVX_DRAW_STACK.scale.y), AppMain.FXM_FX32_TO_FLOAT(gms_TVX_DRAW_STACK.scale.z));
                }
                uint num8 = num;
                if ((gms_TVX_DRAW_STACK.disp_flag & AppMain.GMD_TVX_DISP_LIGHT_DISABLE) != 0U)
                {
                    num8 = gms_TVX_DRAW_STACK.color;
                }
                AppMain.SNNS_VECTOR snns_VECTOR = default(AppMain.SNNS_VECTOR);
                int num9 = num3 + offset;
                AppMain.AOS_TVX_VERTEX[] vtx = gms_TVX_DRAW_STACK.vtx;
                int num10 = 0;
                while (( long )num10 < ( long )(( ulong )gms_TVX_DRAW_STACK.vtx_num))
                {
                    snns_VECTOR.x = vtx[num10].x;
                    snns_VECTOR.y = vtx[num10].y;
                    snns_VECTOR.z = vtx[num10].z;
                    int num11 = num9 + num10;
                    if (gms_TVX_DRAW_STACK.disp_flag != 0U)
                    {
                        AppMain.nnTransformVector(ref buffer[num11].Pos, ref snns_MATRIX, ref snns_VECTOR);
                    }
                    else
                    {
                        buffer[num11].Pos.Assign(snns_VECTOR.x, snns_VECTOR.y, snns_VECTOR.z);
                    }
                    AppMain.NNS_PRIM3D_PCT[] array2 = buffer;
                    int num12 = num11;
                    array2[num12].Pos.x = array2[num12].Pos.x + num5;
                    AppMain.NNS_PRIM3D_PCT[] array3 = buffer;
                    int num13 = num11;
                    array3[num13].Pos.y = array3[num13].Pos.y + num6;
                    AppMain.NNS_PRIM3D_PCT[] array4 = buffer;
                    int num14 = num11;
                    array4[num14].Pos.z = array4[num14].Pos.z + num7;
                    buffer[num11].Tex.u = vtx[num10].u + gms_TVX_DRAW_STACK.coord.u;
                    buffer[num11].Tex.v = vtx[num10].v + gms_TVX_DRAW_STACK.coord.v;
                    buffer[num11].Col   = (vtx[num10].c & num8);
                    num10++;
                }
                num3 += ( int )(gms_TVX_DRAW_STACK.vtx_num + 2U);
                if (num4 != 0U)
                {
                    int num15 = num9 - 1;
                    buffer[num15] = buffer[num15 + 1];
                }
                if (num4 != array[( int )(( UIntPtr )num2)].stack_num - 1U)
                {
                    int num15 = num9 + (int)(gms_TVX_DRAW_STACK.vtx_num - 1U);
                    buffer[num15 + 1] = buffer[num15];
                }
            }
            AppMain.amMatrixPush(ref snns_MATRIX2);
            AppMain.ObjDraw3DNNDrawPrimitive(AppMain._AMS_PARAM_DRAW_PRIMITIVE);
            AppMain.amMatrixPop();
            array[( int )(( UIntPtr )num2)].tex         = null;
            array[( int )(( UIntPtr )num2)].tex_id      = -1;
            array[( int )(( UIntPtr )num2)].stack_num   = 0U;
            array[( int )(( UIntPtr )num2)].all_vtx_num = 0U;
            num2 += 1U;
        }
    }
Esempio n. 10
0
 private static void nnSetPrimitive3DMatrix(ref AppMain.SNNS_MATRIX mtx)
 {
     AppMain.nnCopyMatrix(AppMain.nndrawprim3d.nnsPrim3DMatrix, ref mtx);
 }