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(); }
// 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(); } }
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); }
// 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); }
// 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; } }
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); } }
// 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); }