Exemplo n.º 1
0
 private static void GmWaterSurfaceRequestAddWatarLevel(
     float water_level,
     ushort time,
     bool flag_add_time)
 {
     if (AppMain.gmWaterSurfaceGameSystemGetZoneType(AppMain.gmWaterSurfaceGameSystemGetStageId()) != 2)
     {
         return;
     }
     AppMain.GMS_WATER_SURFACE_MGR mgr = AppMain.gmWaterSurfaceGetMgr();
     if (mgr == null)
     {
         return;
     }
     AppMain.GMS_WATER_SURFACE_INFO work = (AppMain.GMS_WATER_SURFACE_INFO)mgr.tcb_water.work;
     if (flag_add_time)
     {
         work.water_time += time;
     }
     else
     {
         work.water_time    = time;
         work.water_counter = (ushort)0;
     }
     work.next_water_level += water_level;
     work.now_water_level   = (float)AppMain.gmWaterSurfaceGameSystemGetWaterLevel();
 }
Exemplo n.º 2
0
    // Token: 0x06001185 RID: 4485 RVA: 0x00099484 File Offset: 0x00097684
    private static void gmWaterSurfaceTcbProcPreDrawDT(object data)
    {
        AppMain.AMS_RENDER_TARGET ams_RENDER_TARGET = AppMain._am_render_manager.targetp;
        if (ams_RENDER_TARGET == AppMain._gm_mapFar_render_work)
        {
            ams_RENDER_TARGET = AppMain._am_draw_target;
        }
        else
        {
            ams_RENDER_TARGET = AppMain._gm_mapFar_render_work;
        }
        if (ams_RENDER_TARGET.width == 0)
        {
            return;
        }
        AppMain.amDrawEndScene();
        NNS_RGBA_U8 color = new NNS_RGBA_U8(0, 0, 0, byte.MaxValue);

        AppMain.amRenderCopyTarget(ams_RENDER_TARGET, color);
        AppMain.GMS_WATER_SURFACE_MGR gms_WATER_SURFACE_MGR = AppMain.gmWaterSurfaceGetMgr();
        if (gms_WATER_SURFACE_MGR != null)
        {
            gms_WATER_SURFACE_MGR.render_target = ams_RENDER_TARGET;
        }
    }
Exemplo n.º 3
0
    // Token: 0x06001171 RID: 4465 RVA: 0x00099044 File Offset: 0x00097244
    private static void GmWaterSurfaceRequestAddWatarLevel(float water_level, ushort time, bool flag_add_time)
    {
        int stage_id = AppMain.gmWaterSurfaceGameSystemGetStageId();
        int num      = AppMain.gmWaterSurfaceGameSystemGetZoneType(stage_id);

        if (num == 2)
        {
            AppMain.GMS_WATER_SURFACE_MGR gms_WATER_SURFACE_MGR = AppMain.gmWaterSurfaceGetMgr();
            if (gms_WATER_SURFACE_MGR == null)
            {
                return;
            }
            AppMain.GMS_WATER_SURFACE_INFO gms_WATER_SURFACE_INFO = (AppMain.GMS_WATER_SURFACE_INFO)gms_WATER_SURFACE_MGR.tcb_water.work;
            if (flag_add_time)
            {
                AppMain.GMS_WATER_SURFACE_INFO gms_WATER_SURFACE_INFO2 = gms_WATER_SURFACE_INFO;
                gms_WATER_SURFACE_INFO2.water_time += time;
            }
            else
            {
                gms_WATER_SURFACE_INFO.water_time    = time;
                gms_WATER_SURFACE_INFO.water_counter = 0;
            }
            gms_WATER_SURFACE_INFO.next_water_level += water_level;
            gms_WATER_SURFACE_INFO.now_water_level   = ( float )AppMain.gmWaterSurfaceGameSystemGetWaterLevel();
        }
    }
Exemplo n.º 4
0
 private static void gmWaterSurfaceTcbProcDrawDT(object data)
 {
     AppMain.GMS_WATER_SURFACE_MGR mgr = AppMain.gmWaterSurfaceGetMgr();
     if (mgr == null || mgr.render_target == null || mgr.render_target.width == 0)
     {
         return;
     }
     AppMain.dwaterDrawWater(mgr.render_target);
 }
Exemplo n.º 5
0
 // Token: 0x06001184 RID: 4484 RVA: 0x00099454 File Offset: 0x00097654
 private static void gmWaterSurfaceDeleteTcb()
 {
     AppMain.GMS_WATER_SURFACE_MGR gms_WATER_SURFACE_MGR = AppMain.gmWaterSurfaceGetMgr();
     if (gms_WATER_SURFACE_MGR.tcb_water != null)
     {
         AppMain.mtTaskClearTcb(gms_WATER_SURFACE_MGR.tcb_water);
         gms_WATER_SURFACE_MGR.tcb_water = null;
     }
 }
Exemplo n.º 6
0
 // Token: 0x06001174 RID: 4468 RVA: 0x0009913C File Offset: 0x0009733C
 private static AppMain.AMS_RENDER_TARGET GmWaterSurfaceGetRenderTarget()
 {
     AppMain.GMS_WATER_SURFACE_MGR gms_WATER_SURFACE_MGR = AppMain.gmWaterSurfaceGetMgr();
     if (gms_WATER_SURFACE_MGR == null)
     {
         return(null);
     }
     return(gms_WATER_SURFACE_MGR.render_target);
 }
Exemplo n.º 7
0
 private static void gmWaterSurfaceDeleteTcb()
 {
     AppMain.GMS_WATER_SURFACE_MGR mgr = AppMain.gmWaterSurfaceGetMgr();
     if (mgr.tcb_water == null)
     {
         return;
     }
     AppMain.mtTaskClearTcb(mgr.tcb_water);
     mgr.tcb_water = (AppMain.MTS_TASK_TCB)null;
 }
Exemplo n.º 8
0
 private static AppMain.MTS_TASK_TCB gmWaterSurfaceCreateTcb()
 {
     AppMain.GMS_WATER_SURFACE_MGR mgr = AppMain.gmWaterSurfaceGetMgr();
     mgr.tcb_water = AppMain.MTM_TASK_MAKE_TCB(new AppMain.GSF_TASK_PROCEDURE(AppMain.gmWaterSurfaceProc), (AppMain.GSF_TASK_PROCEDURE)null, 0U, (ushort)0, 8202U, 5, (AppMain.TaskWorkFactoryDelegate)(() => (object)new AppMain.GMS_WATER_SURFACE_INFO()), "GM WATER SURFACE");
     AppMain.GMS_WATER_SURFACE_INFO work = (AppMain.GMS_WATER_SURFACE_INFO)mgr.tcb_water.work;
     work.now_water_level  = (float)AppMain.gmWaterSurfaceGameSystemGetWaterLevel();
     work.next_water_level = (float)ushort.MaxValue;
     work.water_time       = (ushort)0;
     work.water_counter    = (ushort)0;
     work.flag_draw        = true;
     work.flag_enable_ref  = true;
     return(mgr.tcb_water);
 }
Exemplo n.º 9
0
 private static void GmWaterSurfaceSetFlagEnableRef(bool flag_enable_ref)
 {
     if (AppMain.gmWaterSurfaceGameSystemGetZoneType(AppMain.gmWaterSurfaceGameSystemGetStageId()) != 2)
     {
         return;
     }
     AppMain.GMS_WATER_SURFACE_MGR mgr = AppMain.gmWaterSurfaceGetMgr();
     if (mgr == null)
     {
         return;
     }
     ((AppMain.GMS_WATER_SURFACE_INFO)mgr.tcb_water.work).flag_enable_ref = flag_enable_ref;
 }
Exemplo n.º 10
0
 // Token: 0x06001183 RID: 4483 RVA: 0x000993B4 File Offset: 0x000975B4
 private static MTS_TASK_TCB gmWaterSurfaceCreateTcb()
 {
     AppMain.GMS_WATER_SURFACE_MGR gms_WATER_SURFACE_MGR = AppMain.gmWaterSurfaceGetMgr();
     gms_WATER_SURFACE_MGR.tcb_water = AppMain.MTM_TASK_MAKE_TCB(AppMain.gmWaterSurfaceProc, null, 0U, 0, 8202U, 5, () => new AppMain.GMS_WATER_SURFACE_INFO(), "GM WATER SURFACE");
     AppMain.GMS_WATER_SURFACE_INFO gms_WATER_SURFACE_INFO = (AppMain.GMS_WATER_SURFACE_INFO)gms_WATER_SURFACE_MGR.tcb_water.work;
     gms_WATER_SURFACE_INFO.now_water_level  = ( float )AppMain.gmWaterSurfaceGameSystemGetWaterLevel();
     gms_WATER_SURFACE_INFO.next_water_level = 65535f;
     gms_WATER_SURFACE_INFO.water_time       = 0;
     gms_WATER_SURFACE_INFO.water_counter    = 0;
     gms_WATER_SURFACE_INFO.flag_draw        = true;
     gms_WATER_SURFACE_INFO.flag_enable_ref  = true;
     return(gms_WATER_SURFACE_MGR.tcb_water);
 }
Exemplo n.º 11
0
    // Token: 0x06001173 RID: 4467 RVA: 0x000990FC File Offset: 0x000972FC
    private static void GmWaterSurfaceSetFlagEnableRef(bool flag_enable_ref)
    {
        int stage_id = AppMain.gmWaterSurfaceGameSystemGetStageId();
        int num      = AppMain.gmWaterSurfaceGameSystemGetZoneType(stage_id);

        if (num == 2)
        {
            AppMain.GMS_WATER_SURFACE_MGR gms_WATER_SURFACE_MGR = AppMain.gmWaterSurfaceGetMgr();
            if (gms_WATER_SURFACE_MGR == null)
            {
                return;
            }
            AppMain.GMS_WATER_SURFACE_INFO gms_WATER_SURFACE_INFO = (AppMain.GMS_WATER_SURFACE_INFO)gms_WATER_SURFACE_MGR.tcb_water.work;
            gms_WATER_SURFACE_INFO.flag_enable_ref = flag_enable_ref;
        }
    }
Exemplo n.º 12
0
 private static void gmWaterSurfaceTcbProcPreDrawDT(object data)
 {
     AppMain.AMS_RENDER_TARGET target = AppMain._am_render_manager.targetp != AppMain._gm_mapFar_render_work ? AppMain._gm_mapFar_render_work : AppMain._am_draw_target;
     if (target.width == 0)
     {
         return;
     }
     AppMain.amDrawEndScene();
     AppMain.NNS_RGBA_U8 color = new AppMain.NNS_RGBA_U8((byte)0, (byte)0, (byte)0, byte.MaxValue);
     AppMain.amRenderCopyTarget(target, color);
     AppMain.GMS_WATER_SURFACE_MGR mgr = AppMain.gmWaterSurfaceGetMgr();
     if (mgr == null)
     {
         return;
     }
     mgr.render_target = target;
 }
Exemplo n.º 13
0
    private static void gmWaterSurfaceProc(AppMain.MTS_TASK_TCB tcb)
    {
        AppMain.GMS_WATER_SURFACE_INFO work = (AppMain.GMS_WATER_SURFACE_INFO)tcb.work;
        float speed = 0.0f;

        if (AppMain.ObjObjectPauseCheck(0U) == 0U)
        {
            float num1 = (float)((int)work.water_time - (int)work.water_counter);
            if ((double)num1 != 0.0)
            {
                float num2 = (work.next_water_level - work.now_water_level) / num1;
                work.now_water_level += num2;
                if ((ushort)1 > (ushort)AppMain.MTM_MATH_ABS(work.now_water_level - work.next_water_level))
                {
                    work.water_time    = (ushort)0;
                    work.water_counter = (ushort)0;
                }
                else
                {
                    ++work.water_counter;
                }
            }
            else
            {
                work.now_water_level = work.next_water_level;
            }
            if (work.flag_draw)
            {
                AppMain.gmWaterSurfaceGameSystemSetWaterLevel((ushort)work.now_water_level);
                speed = AppMain.amSystemGetFrameRateMain();
            }
            else
            {
                AppMain.gmWaterSurfaceGameSystemSetWaterLevel(ushort.MaxValue);
                return;
            }
        }
        AppMain.OBS_CAMERA obsCamera1 = AppMain.ObjCameraGet(6);
        float x1 = obsCamera1.disp_pos.x;
        float y  = obsCamera1.disp_pos.y;
        float dy = -work.now_water_level - y;

        if ((double)dy < (double)-((int)AppMain.OBD_LCD_Y / 2 + 32))
        {
            AppMain.GMS_WATER_SURFACE_MGR mgr = AppMain.gmWaterSurfaceGetMgr();
            if (mgr == null)
            {
                return;
            }
            mgr.render_target = (AppMain.AMS_RENDER_TARGET)null;
        }
        else
        {
            bool flag = false;
            if ((double)dy > (double)AppMain.OBD_LCD_Y * 0.800000011920929)
            {
                y    = obsCamera1.disp_pos.y;
                dy   = (float)AppMain.OBD_LCD_Y * 0.8f;
                flag = true;
            }
            int   roll  = obsCamera1.roll;
            float scale = 1f / obsCamera1.scale;
            AppMain.dwaterUpdate(speed, x1, y, dy, roll, scale);
            if (!AppMain.GmMainIsDrawEnable())
            {
                return;
            }
            AppMain.dwaterSetParam();
            uint drawflag = 0;
            AppMain.ObjDraw3DNNSetCameraEx(6, 1, 9U);
            if (work.flag_enable_ref && !flag)
            {
                AppMain.dwaterDrawReflection(9U, drawflag);
            }
            AppMain.ObjDraw3DNNUserFunc(AppMain._gmWaterSurfaceTcbProcPreDrawDT, (object)null, 0, 9U);
            AppMain.ObjDraw3DNNSetCameraEx(AppMain.g_obj.glb_camera_id, 1, 9U);
            AppMain.ObjDraw3DNNSetCameraEx(6, 1, 4U);
            AppMain.AMS_PARAM_DRAW_PRIMITIVE prim = AppMain.GlobalPool <AppMain.AMS_PARAM_DRAW_PRIMITIVE> .Alloc();

            prim.aTest   = (short)0;
            prim.zMask   = (short)1;
            prim.zTest   = (short)1;
            prim.ablend  = 1;
            prim.bldSrc  = 770;
            prim.bldDst  = 1;
            prim.bldMode = 32774;
            AppMain.NNS_PRIM3D_PCT_ARRAY nnsPriM3DPctArray = AppMain.amDrawAlloc_NNS_PRIM3D_PCT(18);
            AppMain.NNS_PRIM3D_PCT[]     buffer            = nnsPriM3DPctArray.buffer;
            int offset = nnsPriM3DPctArray.offset;
            AppMain.OBS_CAMERA obsCamera2 = AppMain.ObjCameraGet(0);
            float x2   = obsCamera2.disp_pos.x;
            float Y    = -work.now_water_level;
            float f32  = AppMain.FX_FX32_TO_F32(1310720);
            float num1 = obsCamera2.znear + 1f;
            float num2 = 300f;
            float num3 = Y - (obsCamera2.disp_pos.y - 300f);
            uint  num4 = AppMain.AMD_RGBA8888(byte.MaxValue, byte.MaxValue, byte.MaxValue, (byte)96);
            for (int index1 = 0; index1 < 3; ++index1)
            {
                float num5   = num1 * (float)(index1 + 1);
                int   index2 = offset + index1 * 6;
                buffer[index2].Pos.Assign(x2 - num2, Y, f32 - num5);
                buffer[1 + index2].Pos.Assign(x2 + num2, Y, f32 - num5);
                buffer[2 + index2].Pos.Assign(x2 - num2, Y - num3, f32 - num5);
                buffer[5 + index2].Pos.Assign(x2 + num2, Y - num3, f32 - num5);
                buffer[index2].Col     = num4;
                buffer[1 + index2].Col = num4;
                buffer[2 + index2].Col = num4;
                buffer[5 + index2].Col = num4;
                float s;
                float c;
                AppMain.nnSinCos(AppMain.NNM_DEGtoA32(AppMain._dmap_water.speed_surface * 360f), out s, out c);
                float num6 = (float)((double)num2 * 2.0 / 128.0 * 0.5);
                float num7;
                float num8;
                float num9;
                float num10;
                if (index1 == 0)
                {
                    float num11 = x2 / 270f;
                    num7  = num11 - ((float)(int)num11 - AppMain._dmap_water.speed_surface);
                    num8  = num7 + num6;
                    num9  = 0.3f;
                    num10 = (float)((double)num9 + (double)num3 / 128.0 * 0.5 + (double)c / 5.0);
                }
                else if (index1 == 1)
                {
                    float num11 = x2 / 270f;
                    num8  = num11 - ((float)(int)num11 + AppMain._dmap_water.speed_surface * 2f);
                    num7  = num8 - num6 * 0.75f;
                    num9  = 1f;
                    num10 = (float)((double)num9 - (double)num3 * 0.75 / 128.0 * 0.5 + (double)s / 5.0);
                }
                else
                {
                    num7  = 11f / 64f;
                    num8  = num7 + 1f / 128f;
                    num9  = 0.5f;
                    num10 = num9 + 1f / 128f;
                    buffer[index2].Col     = AppMain.AMD_RGBA8888((byte)32, (byte)176, (byte)64, (byte)112);
                    buffer[1 + index2].Col = buffer[index2].Col;
                    buffer[2 + index2].Col = buffer[index2].Col;
                    buffer[5 + index2].Col = buffer[index2].Col;
                }
                buffer[index2].Tex.u     = num7;
                buffer[index2].Tex.v     = num9;
                buffer[1 + index2].Tex.u = num8;
                buffer[1 + index2].Tex.v = num9;
                buffer[2 + index2].Tex.u = num7;
                buffer[2 + index2].Tex.v = num10;
                buffer[5 + index2].Tex.u = num8;
                buffer[5 + index2].Tex.v = num10;
                buffer[3 + index2]       = buffer[1 + index2];
                buffer[4 + index2]       = buffer[2 + index2];
            }
            prim.format3D = 4;
            prim.type     = 0;
            prim.vtxPCT3D = nnsPriM3DPctArray;
            prim.count    = 18;
            prim.sortZ    = -num1;
            prim.texId    = 0;
            prim.texlist  = AppMain._dmap_water.tex_color.texlist;
            prim.uwrap    = 0;
            prim.vwrap    = 0;
            AppMain.gmWaterSurfaceMatrixPush(4U);
            AppMain.ObjDraw3DNNDrawPrimitive(prim, 4U);
            AppMain.gmWaterSurfaceMatrixPop(4U);
            if (!flag)
            {
                AppMain.dwaterDrawSurface(4U, drawflag);
            }
            AppMain.ObjDraw3DNNSetCameraEx(AppMain.g_obj.glb_camera_id, 1, 4U);
            AppMain.ObjDraw3DNNUserFunc(new AppMain.OBF_DRAW_USER_DT_FUNC(AppMain.gmWaterSurfaceTcbProcPostDrawDT), (object)null, 0, 8U);
            AppMain.GlobalPool <AppMain.AMS_PARAM_DRAW_PRIMITIVE> .Release(prim);
        }
    }
Exemplo n.º 14
0
    // Token: 0x06001188 RID: 4488 RVA: 0x00099524 File Offset: 0x00097724
    private static void gmWaterSurfaceProc(MTS_TASK_TCB tcb)
    {
        AppMain.GMS_WATER_SURFACE_INFO gms_WATER_SURFACE_INFO = (AppMain.GMS_WATER_SURFACE_INFO)tcb.work;
        float speed = 0f;

        if (AppMain.ObjObjectPauseCheck(0U) == 0U)
        {
            float num = (float)(gms_WATER_SURFACE_INFO.water_time - gms_WATER_SURFACE_INFO.water_counter);
            if (num != 0f)
            {
                float num2 = (gms_WATER_SURFACE_INFO.next_water_level - gms_WATER_SURFACE_INFO.now_water_level) / num;
                gms_WATER_SURFACE_INFO.now_water_level += num2;
                if (1 > ( ushort )AppMain.MTM_MATH_ABS(gms_WATER_SURFACE_INFO.now_water_level - gms_WATER_SURFACE_INFO.next_water_level))
                {
                    gms_WATER_SURFACE_INFO.water_time    = 0;
                    gms_WATER_SURFACE_INFO.water_counter = 0;
                }
                else
                {
                    AppMain.GMS_WATER_SURFACE_INFO gms_WATER_SURFACE_INFO2 = gms_WATER_SURFACE_INFO;
                    gms_WATER_SURFACE_INFO2.water_counter += 1;
                }
            }
            else
            {
                gms_WATER_SURFACE_INFO.now_water_level = gms_WATER_SURFACE_INFO.next_water_level;
            }
            if (!gms_WATER_SURFACE_INFO.flag_draw)
            {
                AppMain.gmWaterSurfaceGameSystemSetWaterLevel(ushort.MaxValue);
                return;
            }
            AppMain.gmWaterSurfaceGameSystemSetWaterLevel(( ushort )gms_WATER_SURFACE_INFO.now_water_level);
            speed = AppMain.amSystemGetFrameRateMain();
        }
        OBS_CAMERA obs_CAMERA = ObjCamera.Get(6);
        float      x          = obs_CAMERA.disp_pos.x;
        float      num3       = obs_CAMERA.disp_pos.y;
        float      num4       = -gms_WATER_SURFACE_INFO.now_water_level - num3;

        if (num4 < ( float )(-( float )(AppMain.OBD_LCD_Y / 2 + 32)))
        {
            AppMain.GMS_WATER_SURFACE_MGR gms_WATER_SURFACE_MGR = AppMain.gmWaterSurfaceGetMgr();
            if (gms_WATER_SURFACE_MGR != null)
            {
                gms_WATER_SURFACE_MGR.render_target = null;
            }
            return;
        }
        bool flag = false;

        if (num4 > ( float )AppMain.OBD_LCD_Y * 0.8f)
        {
            num3 = obs_CAMERA.disp_pos.y;
            num4 = ( float )AppMain.OBD_LCD_Y * 0.8f;
            flag = true;
        }
        int   roll  = obs_CAMERA.roll;
        float scale = 1f / obs_CAMERA.scale;

        AppMain.dwaterUpdate(speed, x, num3, num4, roll, scale);
        if (!AppMain.GmMainIsDrawEnable())
        {
            return;
        }
        AppMain.dwaterSetParam();
        uint drawflag = 0U;

        AppMain.ObjDraw3DNNSetCameraEx(6, 1, 9U);
        if (gms_WATER_SURFACE_INFO.flag_enable_ref && !flag)
        {
            AppMain.dwaterDrawReflection(9U, drawflag);
        }
        AppMain.ObjDraw3DNNUserFunc(AppMain._gmWaterSurfaceTcbProcPreDrawDT, null, 0, 9U);
        AppMain.ObjDraw3DNNSetCameraEx(AppMain.g_obj.glb_camera_id, 1, 9U);
        AppMain.ObjDraw3DNNSetCameraEx(6, 1, 4U);
        AppMain.AMS_PARAM_DRAW_PRIMITIVE ams_PARAM_DRAW_PRIMITIVE = GlobalPool <AppMain.AMS_PARAM_DRAW_PRIMITIVE> .Alloc();

        ams_PARAM_DRAW_PRIMITIVE.aTest   = 0;
        ams_PARAM_DRAW_PRIMITIVE.zMask   = 1;
        ams_PARAM_DRAW_PRIMITIVE.zTest   = 1;
        ams_PARAM_DRAW_PRIMITIVE.ablend  = 1;
        ams_PARAM_DRAW_PRIMITIVE.bldSrc  = 770;
        ams_PARAM_DRAW_PRIMITIVE.bldDst  = 1;
        ams_PARAM_DRAW_PRIMITIVE.bldMode = 32774;
        AppMain.NNS_PRIM3D_PCT_ARRAY nns_PRIM3D_PCT_ARRAY = AppMain.amDrawAlloc_NNS_PRIM3D_PCT(18);
        AppMain.NNS_PRIM3D_PCT[]     buffer = nns_PRIM3D_PCT_ARRAY.buffer;
        int        offset      = nns_PRIM3D_PCT_ARRAY.offset;
        OBS_CAMERA obs_CAMERA2 = ObjCamera.Get(0);

        x    = obs_CAMERA2.disp_pos.x;
        num3 = -gms_WATER_SURFACE_INFO.now_water_level;
        float num5 = AppMain.FX_FX32_TO_F32(1310720);
        float num6 = obs_CAMERA2.znear + 1f;
        float num7 = 300f;

        num4 = num3 - (obs_CAMERA2.disp_pos.y - 300f);
        uint col = AppMain.AMD_RGBA8888(byte.MaxValue, byte.MaxValue, byte.MaxValue, 96);

        for (int i = 0; i < 3; i++)
        {
            float num8 = num6 * (float)(i + 1);
            int   num9 = offset + i * 6;
            buffer[num9].Pos.Assign(x - num7, num3, num5 - num8);
            buffer[1 + num9].Pos.Assign(x + num7, num3, num5 - num8);
            buffer[2 + num9].Pos.Assign(x - num7, num3 - num4, num5 - num8);
            buffer[5 + num9].Pos.Assign(x + num7, num3 - num4, num5 - num8);
            buffer[num9].Col     = col;
            buffer[1 + num9].Col = col;
            buffer[2 + num9].Col = col;
            buffer[5 + num9].Col = col;
            float num10;
            float num11;
            AppMain.nnSinCos(AppMain.NNM_DEGtoA32(AppMain._dmap_water.speed_surface * 360f), out num10, out num11);
            float num12 = num7 * 2f / 128f * 0.5f;
            float num13;
            float num14;
            float num15;
            float v;
            if (i == 0)
            {
                num13  = x / 270f;
                num13 -= ( float )(( int )num13) - AppMain._dmap_water.speed_surface;
                num14  = num13 + num12;
                num15  = 0.3f;
                v      = num15 + num4 / 128f * 0.5f + num11 / 5f;
            }
            else if (i == 1)
            {
                num14  = x / 270f;
                num14 -= ( float )(( int )num14) + AppMain._dmap_water.speed_surface * 2f;
                num13  = num14 - num12 * 0.75f;
                num15  = 1f;
                v      = num15 - num4 * 0.75f / 128f * 0.5f + num10 / 5f;
            }
            else
            {
                num13                = 0.171875f;
                num14                = num13 + 0.0078125f;
                num15                = 0.5f;
                v                    = num15 + 0.0078125f;
                buffer[num9].Col     = AppMain.AMD_RGBA8888(32, 176, 64, 112);
                buffer[1 + num9].Col = buffer[num9].Col;
                buffer[2 + num9].Col = buffer[num9].Col;
                buffer[5 + num9].Col = buffer[num9].Col;
            }
            buffer[num9].Tex.u     = num13;
            buffer[num9].Tex.v     = num15;
            buffer[1 + num9].Tex.u = num14;
            buffer[1 + num9].Tex.v = num15;
            buffer[2 + num9].Tex.u = num13;
            buffer[2 + num9].Tex.v = v;
            buffer[5 + num9].Tex.u = num14;
            buffer[5 + num9].Tex.v = v;
            buffer[3 + num9]       = buffer[1 + num9];
            buffer[4 + num9]       = buffer[2 + num9];
        }
        ams_PARAM_DRAW_PRIMITIVE.format3D = 4;
        ams_PARAM_DRAW_PRIMITIVE.type     = 0;
        ams_PARAM_DRAW_PRIMITIVE.vtxPCT3D = nns_PRIM3D_PCT_ARRAY;
        ams_PARAM_DRAW_PRIMITIVE.count    = 18;
        ams_PARAM_DRAW_PRIMITIVE.sortZ    = -num6;
        ams_PARAM_DRAW_PRIMITIVE.texId    = 0;
        ams_PARAM_DRAW_PRIMITIVE.texlist  = AppMain._dmap_water.tex_color.texlist;
        ams_PARAM_DRAW_PRIMITIVE.uwrap    = 0;
        ams_PARAM_DRAW_PRIMITIVE.vwrap    = 0;
        AppMain.gmWaterSurfaceMatrixPush(4U);
        AppMain.ObjDraw3DNNDrawPrimitive(ams_PARAM_DRAW_PRIMITIVE, 4U);
        AppMain.gmWaterSurfaceMatrixPop(4U);
        if (!flag)
        {
            AppMain.dwaterDrawSurface(4U, drawflag);
        }
        AppMain.ObjDraw3DNNSetCameraEx(AppMain.g_obj.glb_camera_id, 1, 4U);
        AppMain.ObjDraw3DNNUserFunc(AppMain.gmWaterSurfaceTcbProcPostDrawDT, null, 0, 8U);
        GlobalPool <AppMain.AMS_PARAM_DRAW_PRIMITIVE> .Release(ams_PARAM_DRAW_PRIMITIVE);
    }