// Token: 0x060018E8 RID: 6376 RVA: 0x000E2E04 File Offset: 0x000E1004 private static void aoWinSysMakeCommandA(uint state, AppMain.NNS_TEXLIST texlist, uint tex_id, float x, float y, float w, float h, float z) { AppMain.AMS_PARAM_DRAW_PRIMITIVE ams_PARAM_DRAW_PRIMITIVE = GlobalPool <AppMain.AMS_PARAM_DRAW_PRIMITIVE> .Alloc(); ams_PARAM_DRAW_PRIMITIVE.mtx = null; ams_PARAM_DRAW_PRIMITIVE.vtxPCT3D = null; ams_PARAM_DRAW_PRIMITIVE.format3D = 4; ams_PARAM_DRAW_PRIMITIVE.type = 1; ams_PARAM_DRAW_PRIMITIVE.count = 8; ams_PARAM_DRAW_PRIMITIVE.texlist = texlist; ams_PARAM_DRAW_PRIMITIVE.texId = ( int )tex_id; ams_PARAM_DRAW_PRIMITIVE.ablend = 1; ams_PARAM_DRAW_PRIMITIVE.sortZ = z; ams_PARAM_DRAW_PRIMITIVE.aTest = 0; ams_PARAM_DRAW_PRIMITIVE.zMask = 1; ams_PARAM_DRAW_PRIMITIVE.zTest = 0; ams_PARAM_DRAW_PRIMITIVE.noSort = 1; ams_PARAM_DRAW_PRIMITIVE.uwrap = 1; ams_PARAM_DRAW_PRIMITIVE.vwrap = 1; AppMain.NNS_PRIM3D_PCT_ARRAY nns_PRIM3D_PCT_ARRAY = AppMain.amDrawAlloc_NNS_PRIM3D_PCT(8); AppMain.aoWinSysMakeVertex00A(nns_PRIM3D_PCT_ARRAY, x, y, w, h); ams_PARAM_DRAW_PRIMITIVE.vtxPCT3D = nns_PRIM3D_PCT_ARRAY; AppMain.amDrawPrimitive3D(state, ams_PARAM_DRAW_PRIMITIVE); nns_PRIM3D_PCT_ARRAY = AppMain.amDrawAlloc_NNS_PRIM3D_PCT(8); AppMain.aoWinSysMakeVertex01A(nns_PRIM3D_PCT_ARRAY, x, y, w, h); ams_PARAM_DRAW_PRIMITIVE.vtxPCT3D = nns_PRIM3D_PCT_ARRAY; AppMain.amDrawPrimitive3D(state, ams_PARAM_DRAW_PRIMITIVE); nns_PRIM3D_PCT_ARRAY = AppMain.amDrawAlloc_NNS_PRIM3D_PCT(8); AppMain.aoWinSysMakeVertex02A(nns_PRIM3D_PCT_ARRAY, x, y, w, h); ams_PARAM_DRAW_PRIMITIVE.vtxPCT3D = nns_PRIM3D_PCT_ARRAY; AppMain.amDrawPrimitive3D(state, ams_PARAM_DRAW_PRIMITIVE); GlobalPool <AppMain.AMS_PARAM_DRAW_PRIMITIVE> .Release(ams_PARAM_DRAW_PRIMITIVE); }
private static void aoWinSysMakeCommandA( uint state, AppMain.NNS_TEXLIST texlist, uint tex_id, float x, float y, float w, float h, float z) { AppMain.AMS_PARAM_DRAW_PRIMITIVE setParam = AppMain.GlobalPool <AppMain.AMS_PARAM_DRAW_PRIMITIVE> .Alloc(); setParam.mtx = (AppMain.NNS_MATRIX)null; setParam.vtxPCT3D = (AppMain.NNS_PRIM3D_PCT_ARRAY)null; setParam.format3D = 4; setParam.type = 1; setParam.count = 8; setParam.texlist = texlist; setParam.texId = (int)tex_id; setParam.ablend = 1; setParam.sortZ = z; setParam.aTest = (short)0; setParam.zMask = (short)1; setParam.zTest = (short)0; setParam.noSort = (short)1; setParam.uwrap = 1; setParam.vwrap = 1; AppMain.NNS_PRIM3D_PCT_ARRAY array1 = AppMain.amDrawAlloc_NNS_PRIM3D_PCT(8); AppMain.aoWinSysMakeVertex00A(array1, x, y, w, h); setParam.vtxPCT3D = array1; AppMain.amDrawPrimitive3D(state, setParam); AppMain.NNS_PRIM3D_PCT_ARRAY array2 = AppMain.amDrawAlloc_NNS_PRIM3D_PCT(8); AppMain.aoWinSysMakeVertex01A(array2, x, y, w, h); setParam.vtxPCT3D = array2; AppMain.amDrawPrimitive3D(state, setParam); AppMain.NNS_PRIM3D_PCT_ARRAY array3 = AppMain.amDrawAlloc_NNS_PRIM3D_PCT(8); AppMain.aoWinSysMakeVertex02A(array3, x, y, w, h); setParam.vtxPCT3D = array3; AppMain.amDrawPrimitive3D(state, setParam); AppMain.GlobalPool <AppMain.AMS_PARAM_DRAW_PRIMITIVE> .Release(setParam); }
private static void GmWaterSurfaceDrawNoWaterField( float left, float top, float right, float bottom) { AppMain.AMS_PARAM_DRAW_PRIMITIVE setParam = AppMain.GlobalPool <AppMain.AMS_PARAM_DRAW_PRIMITIVE> .Alloc(); setParam.aTest = (short)0; setParam.zMask = (short)0; setParam.zTest = (short)1; setParam.ablend = 1; setParam.noSort = (short)1; AppMain.NNS_PRIM3D_PC[] nnsPriM3DPcArray = AppMain.amDrawAlloc_NNS_PRIM3D_PC(6); float f32 = AppMain.FX_FX32_TO_F32(1310720); nnsPriM3DPcArray[0].Pos.Assign(left, top, f32); nnsPriM3DPcArray[1].Pos.Assign(right, top, f32); nnsPriM3DPcArray[2].Pos.Assign(left, bottom, f32); nnsPriM3DPcArray[5].Pos.Assign(right, bottom, f32); uint num = AppMain.AMD_RGBA8888(byte.MaxValue, byte.MaxValue, byte.MaxValue, (byte)0); nnsPriM3DPcArray[0].Col = num; nnsPriM3DPcArray[1].Col = num; nnsPriM3DPcArray[2].Col = num; nnsPriM3DPcArray[5].Col = num; nnsPriM3DPcArray[3] = nnsPriM3DPcArray[1]; nnsPriM3DPcArray[4] = nnsPriM3DPcArray[2]; setParam.format3D = 2; setParam.type = 0; setParam.vtxPC3D = nnsPriM3DPcArray; setParam.texlist = (AppMain.NNS_TEXLIST)null; setParam.texId = 0; setParam.count = 6; setParam.sortZ = -1f; AppMain.gmWaterSurfaceMatrixPush(9U); AppMain.amDrawPrimitive3D(9U, setParam); AppMain.gmWaterSurfaceMatrixPop(9U); AppMain.GlobalPool <AppMain.AMS_PARAM_DRAW_PRIMITIVE> .Release(setParam); }
private static int _amEffectSetDrawMode( AppMain.AMS_AME_RUNTIME runtime, AppMain.AMS_PARAM_DRAW_PRIMITIVE param, int NodeBlend) { AppMain.AMS_AME_NODE node = runtime.node; int num = 0; param.ablend = num; param.aTest = ((int)node.flag & 2) == 0 ? (short)0 : (short)1; param.zMask = ((int)node.flag & 33554432) == 0 ? (short)0 : (short)1; param.zTest = ((int)node.flag & 16777216) != 0 ? (short)1 : (short)0; if (((int)node.flag & 1) != 0) { num = 1; param.ablend = num; switch (NodeBlend) { case 50: param.bldSrc = 770; param.bldDst = 771; param.bldMode = 32774; break; case 162: param.bldSrc = 770; param.bldDst = 1; param.bldMode = 32774; break; case 674: param.bldSrc = 770; param.bldDst = 1; param.bldMode = 32779; break; } } return(num); }
public void Assign(AppMain.AMS_PARAM_DRAW_PRIMITIVE other) { this.mtx = other.mtx; this.type = other.type; this.vtxPCT3D = other.vtxPCT3D; this.vtxPC3D = other.vtxPC3D; this.vtxPCT2D = other.vtxPCT2D; this.vtxPC2D = other.vtxPC2D; this.formatXD = other.formatXD; this.count = other.count; this.texlist = other.texlist; this.texId = other.texId; this.ablend = other.ablend; this.sortZ = other.sortZ; this.bldSrc = other.bldSrc; this.bldDst = other.bldDst; this.bldMode = other.bldMode; this.aTest = other.aTest; this.zMask = other.zMask; this.zTest = other.zTest; this.noSort = other.noSort; this.uwrap = other.vwrap; this.vwrap = other.vwrap; }
// Token: 0x06001175 RID: 4469 RVA: 0x0009915C File Offset: 0x0009735C private static void GmWaterSurfaceDrawNoWaterField(float left, float top, float right, float bottom) { 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 = 0; ams_PARAM_DRAW_PRIMITIVE.zTest = 1; ams_PARAM_DRAW_PRIMITIVE.ablend = 1; ams_PARAM_DRAW_PRIMITIVE.noSort = 1; AppMain.NNS_PRIM3D_PC[] array = AppMain.amDrawAlloc_NNS_PRIM3D_PC(6); float z = AppMain.FX_FX32_TO_F32(1310720); array[0].Pos.Assign(left, top, z); array[1].Pos.Assign(right, top, z); array[2].Pos.Assign(left, bottom, z); array[5].Pos.Assign(right, bottom, z); uint col = AppMain.AMD_RGBA8888(byte.MaxValue, byte.MaxValue, byte.MaxValue, 0); array[0].Col = col; array[1].Col = col; array[2].Col = col; array[5].Col = col; array[3] = array[1]; array[4] = array[2]; ams_PARAM_DRAW_PRIMITIVE.format3D = 2; ams_PARAM_DRAW_PRIMITIVE.type = 0; ams_PARAM_DRAW_PRIMITIVE.vtxPC3D = array; ams_PARAM_DRAW_PRIMITIVE.texlist = null; ams_PARAM_DRAW_PRIMITIVE.texId = 0; ams_PARAM_DRAW_PRIMITIVE.count = 6; ams_PARAM_DRAW_PRIMITIVE.sortZ = -1f; AppMain.gmWaterSurfaceMatrixPush(9U); AppMain.amDrawPrimitive3D(9U, ams_PARAM_DRAW_PRIMITIVE); AppMain.gmWaterSurfaceMatrixPop(9U); GlobalPool <AppMain.AMS_PARAM_DRAW_PRIMITIVE> .Release(ams_PARAM_DRAW_PRIMITIVE); }
// Token: 0x06001161 RID: 4449 RVA: 0x00098858 File Offset: 0x00096A58 private static void IzFadeSetWork(AppMain.IZS_FADE_WORK fade_work, ushort dt_prio, uint draw_state, uint fade_set_type, byte start_col_r, byte start_col_g, byte start_col_b, byte start_col_a, byte end_col_r, byte end_col_g, byte end_col_b, byte end_col_a, float time, bool draw_start, bool conti_state) { AppMain.NNS_RGBA start_col = default(AppMain.NNS_RGBA); ushort vtx_no = 1; if (!conti_state) { fade_work.Clear(); start_col.r = ( float )start_col_r; start_col.g = ( float )start_col_g; start_col.b = ( float )start_col_b; start_col.a = ( float )start_col_a; } else if (fade_set_type == 1U) { start_col = fade_work.now_col; vtx_no = fade_work.vtx_no; } else { start_col.r = ( float )start_col_r; start_col.g = ( float )start_col_g; start_col.b = ( float )start_col_b; start_col.a = ( float )start_col_a; } fade_work.count = 0f; fade_work.start_col = start_col; fade_work.end_col.r = ( float )end_col_r; fade_work.end_col.g = ( float )end_col_g; fade_work.end_col.b = ( float )end_col_b; fade_work.end_col.a = ( float )end_col_a; fade_work.now_col = fade_work.start_col; fade_work.time = time; fade_work.speed = 1f; fade_work.dt_prio = dt_prio; fade_work.draw_state = draw_state; fade_work.vtx_no = vtx_no; AppMain.nnMakeUnitMatrix(fade_work.mtx); fade_work.flag &= 4294967294U; if (draw_start) { fade_work.flag |= 1U; } AppMain.AMS_PARAM_DRAW_PRIMITIVE prim_param = fade_work.prim_param; prim_param.vtxPC2D = fade_work.vtx[( int )fade_work.vtx_no]; prim_param.mtx = fade_work.mtx; prim_param.format2D = 1; prim_param.type = 1; prim_param.count = 4; prim_param.texlist = null; prim_param.texId = -1; prim_param.ablend = 1; prim_param.zOffset = -1f; AppMain.amDrawGetPrimBlendParam(0, prim_param); prim_param.aTest = 0; prim_param.zMask = 1; prim_param.zTest = 0; for (int i = 0; i < 2; i++) { fade_work.vtx[i][0].Pos.x = 0f; fade_work.vtx[i][0].Pos.y = 0f; fade_work.vtx[i][1].Pos.x = 0f; fade_work.vtx[i][1].Pos.y = AppMain.AMD_SCREEN_HEIGHT; fade_work.vtx[i][2].Pos.x = AppMain.AMD_SCREEN_WIDTH; fade_work.vtx[i][2].Pos.y = 0f; fade_work.vtx[i][3].Pos.x = AppMain.AMD_SCREEN_WIDTH; fade_work.vtx[i][3].Pos.y = AppMain.AMD_SCREEN_HEIGHT; } }
public static void GmDecoGlareDraw(AppMain.OBS_OBJECT_WORK obj_work) { int userWork = (int)obj_work.user_work; if (userWork < 14) { return; } AppMain.GMS_DECOGLARE_PARAM gmsDecoglareParam; switch (userWork) { case 14: case 109: gmsDecoglareParam = AppMain._gm_decoGlare_param[0]; break; case 15: gmsDecoglareParam = AppMain._gm_decoGlare_param[1]; break; case 16: case 110: gmsDecoglareParam = AppMain._gm_decoGlare_param[2]; break; case 54: gmsDecoglareParam = AppMain._gm_decoGlare_param[3]; break; default: return; } if (!AppMain.amDrawIsRegistComplete(AppMain.pIF.regId) || AppMain.pIF.drawFlag != 1 || ((int)obj_work.disp_flag & 32) != 0) { return; } AppMain.VecFx32 vecFx32 = new AppMain.VecFx32(obj_work.pos); float num1 = (float)(vecFx32.x >> 12); float num2 = -(float)(vecFx32.y >> 12); float Z = 256f; AppMain.AMS_PARAM_DRAW_PRIMITIVE setParam = AppMain.GlobalPool <AppMain.AMS_PARAM_DRAW_PRIMITIVE> .Alloc(); setParam.aTest = (short)0; setParam.zMask = (short)0; setParam.zTest = (short)1; setParam.ablend = 1; switch (gmsDecoglareParam.ablend) { case 0: AppMain.amDrawGetPrimBlendParam(0, setParam); break; case 1: AppMain.amDrawGetPrimBlendParam(1, setParam); break; } AppMain.NNS_PRIM3D_PCT_ARRAY nnsPriM3DPctArray = AppMain.amDrawAlloc_NNS_PRIM3D_PCT(6); AppMain.NNS_PRIM3D_PCT[] buffer = nnsPriM3DPctArray.buffer; int offset = nnsPriM3DPctArray.offset; float num3 = gmsDecoglareParam.size * 0.5f; float num4 = gmsDecoglareParam.size * 0.5f; float num5 = num1 + 10f; float num6 = num2 - 10f; buffer[offset].Pos.Assign(num5 - num3, num6 + num4, Z); buffer[offset + 1].Pos.Assign(num5 + num3, num6 + num4, Z); buffer[offset + 2].Pos.Assign(num5 - num3, num6 - num4, Z); buffer[offset + 5].Pos.Assign(num5 + num3, num6 - num4, Z); buffer[offset].Col = gmsDecoglareParam.color; buffer[offset + 1].Col = gmsDecoglareParam.color; buffer[offset + 2].Col = gmsDecoglareParam.color; buffer[offset + 5].Col = gmsDecoglareParam.color; buffer[offset].Tex.u = 0.0f; buffer[offset].Tex.v = 0.0f; buffer[offset + 1].Tex.u = 1f; buffer[offset + 1].Tex.v = 0.0f; buffer[offset + 2].Tex.u = 0.0f; buffer[offset + 2].Tex.v = 1f; buffer[offset + 5].Tex.u = 1f; buffer[offset + 5].Tex.v = 1f; buffer[offset + 3] = buffer[offset + 1]; buffer[offset + 4] = buffer[offset + 2]; setParam.format3D = 4; setParam.type = 0; setParam.vtxPCT3D = nnsPriM3DPctArray; setParam.texlist = AppMain.pIF.texlist; setParam.texId = AppMain.pIF.texId; setParam.count = 6; setParam.sortZ = gmsDecoglareParam.sort_z; AppMain.amDrawPrimitive3D(4U, setParam); AppMain.GlobalPool <AppMain.AMS_PARAM_DRAW_PRIMITIVE> .Release(setParam); }
public static int _amDrawPlane(object r) { AppMain.AMS_AME_RUNTIME runtime = (AppMain.AMS_AME_RUNTIME)r; AppMain.AMS_AME_NODE_PLANE node = (AppMain.AMS_AME_NODE_PLANE)runtime.node; AppMain.AMS_AME_LIST next = runtime.active_head.next; AppMain.AMS_AME_LIST activeTail = runtime.active_tail; AppMain.AMS_PARAM_DRAW_PRIMITIVE setParam = AppMain.GlobalPool <AppMain.AMS_PARAM_DRAW_PRIMITIVE> .Alloc(); int num1 = AppMain._amEffectSetDrawMode(runtime, setParam, node.blend); AppMain.SNNS_VECTOR4D pDst = new AppMain.SNNS_VECTOR4D(); float zBias = node.z_bias; AppMain.amVectorSet(out pDst, zBias * AppMain._am_ef_worldViewMtx.M20, zBias * AppMain._am_ef_worldViewMtx.M21, zBias * AppMain._am_ef_worldViewMtx.M22); AppMain.SNNS_VECTOR snnsVector = new AppMain.SNNS_VECTOR(); if (((int)node.flag & 4096) != 0) { AppMain.NNS_PRIM3D_PCT_ARRAY nnsPriM3DPctArray = AppMain.amDrawAlloc_NNS_PRIM3D_PCT(6 * (int)runtime.active_num); AppMain.NNS_PRIM3D_PCT[] buffer = nnsPriM3DPctArray.buffer; int offset = nnsPriM3DPctArray.offset; float num2 = 0.0f; for (; next != activeTail; next = next.next) { AppMain.AMS_AME_RUNTIME_WORK_PLANE runtimeWorkPlane = (AppMain.AMS_AME_RUNTIME_WORK_PLANE)(AppMain.AMS_AME_RUNTIME_WORK) next; AppMain.amMatrixPush(); AppMain.NNS_MATRIX current = AppMain.amMatrixGetCurrent(); float x = runtimeWorkPlane.size.x; float y = runtimeWorkPlane.size.y; AppMain.amVectorAdd(ref snnsVector, runtimeWorkPlane.position, ref pDst); AppMain.NNS_QUATERNION rotate = runtimeWorkPlane.rotate; AppMain.amQuatMultiMatrix(ref rotate, ref snnsVector); runtimeWorkPlane.rotate = rotate; num2 = AppMain.nnDistanceVector(ref snnsVector, AppMain._am_ef_camPos); buffer[offset].Pos.Assign(-x, y, 0.0f); buffer[offset + 1].Pos.Assign(x, y, 0.0f); buffer[offset + 2].Pos.Assign(-x, -y, 0.0f); buffer[offset + 5].Pos.Assign(x, -y, 0.0f); AppMain.nnTransformVector(ref buffer[offset].Pos, current, ref buffer[offset].Pos); AppMain.nnTransformVector(ref buffer[offset + 1].Pos, current, ref buffer[offset + 1].Pos); AppMain.nnTransformVector(ref buffer[offset + 2].Pos, current, ref buffer[offset + 2].Pos); AppMain.nnTransformVector(ref buffer[offset + 5].Pos, current, ref buffer[offset + 5].Pos); buffer[offset + 5].Col = AppMain.AMD_RGBA8888(runtimeWorkPlane.color.r, runtimeWorkPlane.color.g, runtimeWorkPlane.color.b, runtimeWorkPlane.color.a); buffer[offset].Col = buffer[offset + 1].Col = buffer[offset + 2].Col = buffer[offset + 5].Col; buffer[offset].Tex.u = runtimeWorkPlane.st.x; buffer[offset].Tex.v = runtimeWorkPlane.st.y; buffer[offset + 1].Tex.u = runtimeWorkPlane.st.z; buffer[offset + 1].Tex.v = runtimeWorkPlane.st.y; buffer[offset + 2].Tex.u = runtimeWorkPlane.st.x; buffer[offset + 2].Tex.v = runtimeWorkPlane.st.w; buffer[offset + 5].Tex.u = runtimeWorkPlane.st.z; buffer[offset + 5].Tex.v = runtimeWorkPlane.st.w; buffer[offset + 3] = buffer[offset + 1]; buffer[offset + 4] = buffer[offset + 2]; offset += 6; AppMain.amMatrixPop(); } setParam.format3D = 4; setParam.type = 0; setParam.vtxPCT3D = nnsPriM3DPctArray; setParam.texlist = runtime.texlist; setParam.texId = (int)node.texture_id; setParam.count = 6 * (int)runtime.active_num; setParam.ablend = num1; setParam.sortZ = num2; AppMain.amDrawPrimitive3D(runtime.ecb.drawState, setParam); } else { AppMain.NNS_PRIM3D_PC[] nnsPriM3DPcArray1 = AppMain.amDrawAlloc_NNS_PRIM3D_PC(6 * (int)runtime.active_num); int index = 0; AppMain.NNS_PRIM3D_PC[] nnsPriM3DPcArray2 = nnsPriM3DPcArray1; float num2 = 0.0f; for (; next != activeTail; next = next.next) { AppMain.AMS_AME_RUNTIME_WORK_PLANE runtimeWorkPlane = (AppMain.AMS_AME_RUNTIME_WORK_PLANE)(AppMain.AMS_AME_RUNTIME_WORK) next; AppMain.amMatrixPush(); AppMain.NNS_MATRIX current = AppMain.amMatrixGetCurrent(); float x = runtimeWorkPlane.size.x; float y = runtimeWorkPlane.size.y; AppMain.amVectorAdd(ref snnsVector, runtimeWorkPlane.position, ref pDst); AppMain.NNS_QUATERNION rotate = runtimeWorkPlane.rotate; AppMain.amQuatMultiMatrix(ref rotate, ref snnsVector); runtimeWorkPlane.rotate = rotate; num2 = AppMain.nnDistanceVector(ref snnsVector, AppMain._am_ef_camPos); nnsPriM3DPcArray1[index].Pos.Assign(-x, y, 0.0f); nnsPriM3DPcArray1[index + 1].Pos.Assign(x, y, 0.0f); nnsPriM3DPcArray1[index + 2].Pos.Assign(-x, -y, 0.0f); nnsPriM3DPcArray1[index + 5].Pos.Assign(x, -y, 0.0f); AppMain.nnTransformVector(ref nnsPriM3DPcArray1[index].Pos, current, ref nnsPriM3DPcArray1[index].Pos); AppMain.nnTransformVector(ref nnsPriM3DPcArray1[index + 1].Pos, current, ref nnsPriM3DPcArray1[index + 1].Pos); AppMain.nnTransformVector(ref nnsPriM3DPcArray1[index + 2].Pos, current, ref nnsPriM3DPcArray1[index + 2].Pos); AppMain.nnTransformVector(ref nnsPriM3DPcArray1[index + 5].Pos, current, ref nnsPriM3DPcArray1[index + 5].Pos); nnsPriM3DPcArray1[index + 5].Col = AppMain.AMD_RGBA8888(runtimeWorkPlane.color.r, runtimeWorkPlane.color.g, runtimeWorkPlane.color.b, runtimeWorkPlane.color.a); nnsPriM3DPcArray1[index].Col = nnsPriM3DPcArray1[index + 1].Col = nnsPriM3DPcArray1[index + 2].Col = nnsPriM3DPcArray1[index + 5].Col; nnsPriM3DPcArray1[index + 3] = nnsPriM3DPcArray1[index + 1]; nnsPriM3DPcArray1[index + 4] = nnsPriM3DPcArray1[index + 2]; index += 6; AppMain.amMatrixPop(); } setParam.format3D = 2; setParam.type = 0; setParam.vtxPC3D = nnsPriM3DPcArray2; setParam.texlist = runtime.texlist; setParam.texId = -1; setParam.count = 6 * (int)runtime.active_num; setParam.ablend = num1; setParam.sortZ = num2; AppMain.amDrawPrimitive3D(runtime.ecb.drawState, setParam); } AppMain.GlobalPool <AppMain.AMS_PARAM_DRAW_PRIMITIVE> .Release(setParam); return(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); }
public static int _amDrawLine(object r) { AppMain.AMS_AME_RUNTIME runtime = (AppMain.AMS_AME_RUNTIME)r; AppMain.AMS_AME_NODE_LINE node = (AppMain.AMS_AME_NODE_LINE)runtime.node; AppMain.AMS_AME_LIST next = runtime.active_head.next; AppMain.AMS_AME_LIST activeTail = runtime.active_tail; AppMain.AMS_PARAM_DRAW_PRIMITIVE setParam = AppMain.amDrawAlloc_AMS_PARAM_DRAW_PRIMITIVE(); int num1 = AppMain._amEffectSetDrawMode(runtime, setParam, node.blend); AppMain.NNS_VECTOR4D amDrawLineOffset = AppMain._amDrawLine_offset; AppMain.NNS_VECTOR4D amDrawLineEye = AppMain._amDrawLine_eye; float zBias = node.z_bias; AppMain.amVectorSet(amDrawLineOffset, zBias * AppMain._am_ef_worldViewMtx.M20, zBias * AppMain._am_ef_worldViewMtx.M21, zBias * AppMain._am_ef_worldViewMtx.M22); AppMain.amVectorSet(amDrawLineEye, AppMain._am_ef_worldViewMtx.M20, AppMain._am_ef_worldViewMtx.M21, AppMain._am_ef_worldViewMtx.M22); AppMain.NNS_VECTOR4D amDrawLinePos0 = AppMain._amDrawLine_pos0; AppMain.NNS_VECTOR4D amDrawLinePos1 = AppMain._amDrawLine_pos1; AppMain.NNS_VECTOR amDrawLineVel = (AppMain.NNS_VECTOR)AppMain._amDrawLine_vel; AppMain.NNS_VECTOR amDrawLineCross = (AppMain.NNS_VECTOR)AppMain._amDrawLine_cross; if (((int)node.flag & 4096) != 0) { AppMain.NNS_PRIM3D_PCT_ARRAY nnsPriM3DPctArray = AppMain.amDrawAlloc_NNS_PRIM3D_PCT(6 * (int)runtime.active_num); AppMain.NNS_PRIM3D_PCT[] buffer = nnsPriM3DPctArray.buffer; int offset = nnsPriM3DPctArray.offset; float num2 = 0.0f; for (; next != activeTail; next = next.next) { AppMain.AMS_AME_RUNTIME_WORK_LINE ameRuntimeWorkLine = (AppMain.AMS_AME_RUNTIME_WORK_LINE)(AppMain.AMS_AME_RUNTIME_WORK) next; double num3 = (double)AppMain.amVectorUnit(amDrawLineVel, ameRuntimeWorkLine.velocity); AppMain.nnScaleVector((AppMain.NNS_VECTOR)amDrawLinePos0, amDrawLineVel, ameRuntimeWorkLine.length); AppMain.amVectorAdd(amDrawLinePos1, ameRuntimeWorkLine.position, amDrawLineOffset); AppMain.nnAddVector((AppMain.NNS_VECTOR)amDrawLinePos0, (AppMain.NNS_VECTOR)amDrawLinePos0, (AppMain.NNS_VECTOR)amDrawLinePos1); num2 = AppMain.nnDistanceVector((AppMain.NNS_VECTOR)amDrawLinePos0, AppMain._am_ef_camPos); AppMain.nnCrossProductVector(amDrawLineCross, amDrawLineVel, (AppMain.NNS_VECTOR)amDrawLineEye); AppMain.nnNormalizeVector(amDrawLineCross, amDrawLineCross); AppMain.nnScaleVector(amDrawLineVel, amDrawLineCross, ameRuntimeWorkLine.outside_width); AppMain.nnSubtractVector(ref buffer[offset].Pos, (AppMain.NNS_VECTOR)amDrawLinePos0, amDrawLineVel); AppMain.nnAddVector(ref buffer[offset + 1].Pos, (AppMain.NNS_VECTOR)amDrawLinePos0, amDrawLineVel); AppMain.nnScaleVector(amDrawLineVel, amDrawLineCross, ameRuntimeWorkLine.inside_width); AppMain.nnSubtractVector(ref buffer[offset + 2].Pos, (AppMain.NNS_VECTOR)amDrawLinePos1, amDrawLineVel); AppMain.nnAddVector(ref buffer[offset + 5].Pos, (AppMain.NNS_VECTOR)amDrawLinePos1, amDrawLineVel); buffer[offset + 1].Col = AppMain.AMD_RGBA8888(ameRuntimeWorkLine.outside_color.r, ameRuntimeWorkLine.outside_color.g, ameRuntimeWorkLine.outside_color.b, ameRuntimeWorkLine.outside_color.a); buffer[offset].Col = buffer[offset + 1].Col; buffer[offset + 5].Col = AppMain.AMD_RGBA8888(ameRuntimeWorkLine.inside_color.r, ameRuntimeWorkLine.inside_color.g, ameRuntimeWorkLine.inside_color.b, ameRuntimeWorkLine.inside_color.a); buffer[offset + 2].Col = buffer[offset + 5].Col; AppMain.Vector4D_Quat st = ameRuntimeWorkLine.st; buffer[offset].Tex.u = st.x; buffer[offset].Tex.v = st.y; buffer[offset + 1].Tex.u = st.z; buffer[offset + 1].Tex.v = st.y; buffer[offset + 2].Tex.u = st.x; buffer[offset + 2].Tex.v = st.w; buffer[offset + 5].Tex.u = st.z; buffer[offset + 5].Tex.v = st.w; buffer[offset + 3] = buffer[offset + 1]; buffer[offset + 4] = buffer[offset + 2]; offset += 6; } setParam.format3D = 4; setParam.type = 0; setParam.vtxPCT3D = nnsPriM3DPctArray; setParam.texlist = runtime.texlist; setParam.texId = (int)node.texture_id; setParam.count = 6 * (int)runtime.active_num; setParam.ablend = num1; setParam.sortZ = num2; AppMain.amDrawPrimitive3D(runtime.ecb.drawState, setParam); } else { AppMain.NNS_PRIM3D_PC[] nnsPriM3DPcArray1 = new AppMain.NNS_PRIM3D_PC[6 * (int)runtime.active_num]; int index = 0; AppMain.NNS_PRIM3D_PC[] nnsPriM3DPcArray2 = nnsPriM3DPcArray1; float num2 = 0.0f; for (; next != activeTail; next = next.next) { AppMain.AMS_AME_RUNTIME_WORK_LINE ameRuntimeWorkLine = (AppMain.AMS_AME_RUNTIME_WORK_LINE)(AppMain.AMS_AME_RUNTIME_WORK) next; double num3 = (double)AppMain.amVectorUnit(amDrawLineVel, ameRuntimeWorkLine.velocity); AppMain.nnScaleVector((AppMain.NNS_VECTOR)amDrawLinePos0, amDrawLineVel, ameRuntimeWorkLine.length); AppMain.amVectorAdd(amDrawLinePos1, ameRuntimeWorkLine.position, amDrawLineOffset); AppMain.nnAddVector((AppMain.NNS_VECTOR)amDrawLinePos0, (AppMain.NNS_VECTOR)amDrawLinePos0, (AppMain.NNS_VECTOR)amDrawLinePos1); num2 = AppMain.nnDistanceVector((AppMain.NNS_VECTOR)amDrawLinePos0, AppMain._am_ef_camPos); AppMain.nnCrossProductVector(amDrawLineCross, amDrawLineVel, (AppMain.NNS_VECTOR)amDrawLineEye); AppMain.nnNormalizeVector(amDrawLineCross, amDrawLineCross); AppMain.nnScaleVector(amDrawLineVel, amDrawLineCross, ameRuntimeWorkLine.outside_width); AppMain.nnSubtractVector(ref nnsPriM3DPcArray1[index].Pos, (AppMain.NNS_VECTOR)amDrawLinePos0, amDrawLineVel); AppMain.nnAddVector(ref nnsPriM3DPcArray1[index + 1].Pos, (AppMain.NNS_VECTOR)amDrawLinePos0, amDrawLineVel); AppMain.nnScaleVector(amDrawLineVel, amDrawLineCross, ameRuntimeWorkLine.inside_width); AppMain.nnSubtractVector(ref nnsPriM3DPcArray1[index + 2].Pos, (AppMain.NNS_VECTOR)amDrawLinePos1, amDrawLineVel); AppMain.nnAddVector(ref nnsPriM3DPcArray1[index + 5].Pos, (AppMain.NNS_VECTOR)amDrawLinePos1, amDrawLineVel); nnsPriM3DPcArray1[index + 1].Col = AppMain.AMD_RGBA8888(ameRuntimeWorkLine.outside_color.r, ameRuntimeWorkLine.outside_color.g, ameRuntimeWorkLine.outside_color.b, ameRuntimeWorkLine.outside_color.a); nnsPriM3DPcArray1[index].Col = nnsPriM3DPcArray1[index + 1].Col; nnsPriM3DPcArray1[index + 5].Col = AppMain.AMD_RGBA8888(ameRuntimeWorkLine.inside_color.r, ameRuntimeWorkLine.inside_color.g, ameRuntimeWorkLine.inside_color.b, ameRuntimeWorkLine.inside_color.a); nnsPriM3DPcArray1[index + 2].Col = nnsPriM3DPcArray1[index + 5].Col; nnsPriM3DPcArray1[index + 3] = nnsPriM3DPcArray1[index + 1]; nnsPriM3DPcArray1[index + 4] = nnsPriM3DPcArray1[index + 2]; index += 6; } setParam.format3D = 2; setParam.type = 0; setParam.vtxPC3D = nnsPriM3DPcArray2; setParam.texlist = runtime.texlist; setParam.texId = -1; setParam.count = 6 * (int)runtime.active_num; setParam.ablend = num1; setParam.sortZ = num2; AppMain.amDrawPrimitive3D(runtime.ecb.drawState, setParam); } return(0); }
// Token: 0x060008DE RID: 2270 RVA: 0x00050904 File Offset: 0x0004EB04 public static void gmGmkBridgeDrawFunc(OBS_OBJECT_WORK obj_work) { AppMain.GMS_ENEMY_3D_WORK gms_ENEMY_3D_WORK = (AppMain.GMS_ENEMY_3D_WORK)obj_work; int num = (int)(obj_work.user_work * 53248U * 5U); int num2 = (int)(obj_work.user_flag - (uint)(obj_work.pos.x + -393216)); int denom = num2; int denom2 = num - num2; int v = (int)gms_ENEMY_3D_WORK.ene_com.col_work.obj_col.ofst_y << 12; obj_work.ofst.x = -366592; obj_work.ofst.y = 26624; if ((obj_work.disp_flag & 32U) != 0U) { return; } uint col = AppMain.GmMainGetLightColor(); AppMain.NNS_TEXLIST texlist = obj_work.obj_3d.texlist; AppMain.VecFx32 vecFx = default(AppMain.VecFx32); vecFx.x = obj_work.pos.x + obj_work.ofst.x; vecFx.y = -(obj_work.pos.y + obj_work.ofst.y); vecFx.z = obj_work.pos.z + obj_work.ofst.z; NNS_MATRIX nns_MATRIX = GlobalPool <NNS_MATRIX> .Alloc(); AppMain.nnMakeUnitMatrix(nns_MATRIX); AppMain.nnTranslateMatrix(nns_MATRIX, nns_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 ams_PARAM_DRAW_PRIMITIVE = GlobalPool <AppMain.AMS_PARAM_DRAW_PRIMITIVE> .Alloc(); ams_PARAM_DRAW_PRIMITIVE.type = 0; ams_PARAM_DRAW_PRIMITIVE.count = ( int )(30U * obj_work.user_work); ams_PARAM_DRAW_PRIMITIVE.ablend = 0; ams_PARAM_DRAW_PRIMITIVE.bldSrc = 770; ams_PARAM_DRAW_PRIMITIVE.bldDst = 771; ams_PARAM_DRAW_PRIMITIVE.bldMode = 32774; ams_PARAM_DRAW_PRIMITIVE.aTest = 1; ams_PARAM_DRAW_PRIMITIVE.zMask = 0; ams_PARAM_DRAW_PRIMITIVE.zTest = 1; ams_PARAM_DRAW_PRIMITIVE.noSort = 1; ams_PARAM_DRAW_PRIMITIVE.uwrap = 1; ams_PARAM_DRAW_PRIMITIVE.vwrap = 1; ams_PARAM_DRAW_PRIMITIVE.texlist = texlist; ams_PARAM_DRAW_PRIMITIVE.texId = 0; ams_PARAM_DRAW_PRIMITIVE.vtxPCT3D = AppMain.amDrawAlloc_NNS_PRIM3D_PCT(ams_PARAM_DRAW_PRIMITIVE.count); AppMain.NNS_PRIM3D_PCT[] buffer = ams_PARAM_DRAW_PRIMITIVE.vtxPCT3D.buffer; int offset = ams_PARAM_DRAW_PRIMITIVE.vtxPCT3D.offset; ams_PARAM_DRAW_PRIMITIVE.format3D = 4; for (int i = 0; i < ( int )(( short )obj_work.user_work); i++) { for (int j = 0; j < 5; j++) { if (obj_work.user_timer != 0) { int num3 = i * 53248 * 5 + j * 53248; int v2; if (num3 < num2) { v2 = AppMain.FX_Div(num3, denom); } else if (num3 > num2) { num3 = num - num3; v2 = AppMain.FX_Div(num3, denom2); } else { v2 = 4096; } obj_work.ofst.y = 26624 + AppMain.FX_Mul(v, v2) * obj_work.user_timer / 16; } int num4 = j + 5 * i; float num5 = AppMain.FX_FX32_TO_F32(53248 * num4); float num6 = AppMain.FX_FX32_TO_F32(obj_work.ofst.y); int num7 = offset + num4 * 6; buffer[num7].Tex.u = (buffer[num7 + 1].Tex.u = 0.1f); buffer[num7 + 2].Tex.u = (buffer[num7 + 3].Tex.u = 0.9f); buffer[num7].Tex.v = (buffer[num7 + 2].Tex.v = 0.1f); buffer[num7 + 1].Tex.v = (buffer[num7 + 3].Tex.v = 0.9f); buffer[num7].Col = col; buffer[num7 + 1].Col = (buffer[num7 + 2].Col = (buffer[num7 + 3].Col = buffer[num7].Col)); buffer[num7].Pos.x = (buffer[num7 + 1].Pos.x = 6.5f + num5); buffer[num7 + 2].Pos.x = (buffer[num7 + 3].Pos.x = -6.5f + num5); buffer[num7].Pos.y = (buffer[num7 + 2].Pos.y = 13f - num6); buffer[num7 + 1].Pos.y = (buffer[num7 + 3].Pos.y = -num6); buffer[num7].Pos.z = (buffer[num7 + 1].Pos.z = (buffer[num7 + 2].Pos.z = (buffer[num7 + 3].Pos.z = -1f))); buffer[num7 + 4] = buffer[num7 + 2]; buffer[num7 + 5] = buffer[num7 + 3]; buffer[num7 + 3] = buffer[num7 + 1]; } } AppMain.amMatrixPush(nns_MATRIX); AppMain.ObjDraw3DNNDrawPrimitive(ams_PARAM_DRAW_PRIMITIVE); AppMain.amMatrixPop(); GlobalPool <AppMain.AMS_PARAM_DRAW_PRIMITIVE> .Release(ams_PARAM_DRAW_PRIMITIVE); GlobalPool <NNS_MATRIX> .Release(nns_MATRIX); }
public static void gmGmkBridgeDrawFunc(AppMain.OBS_OBJECT_WORK obj_work) { AppMain.GMS_ENEMY_3D_WORK gmsEnemy3DWork = (AppMain.GMS_ENEMY_3D_WORK)obj_work; int num1 = (int)obj_work.user_work * 53248 * 5; int num2 = (int)obj_work.user_flag - (obj_work.pos.x - 393216); int denom1 = num2; int denom2 = num1 - num2; int v1 = (int)gmsEnemy3DWork.ene_com.col_work.obj_col.ofst_y << 12; obj_work.ofst.x = -366592; obj_work.ofst.y = 26624; if (((int)obj_work.disp_flag & 32) != 0) { return; } uint lightColor = AppMain.GmMainGetLightColor(); AppMain.NNS_TEXLIST texlist = obj_work.obj_3d.texlist; AppMain.VecFx32 vecFx32 = new AppMain.VecFx32(); vecFx32.x = obj_work.pos.x + obj_work.ofst.x; vecFx32.y = -(obj_work.pos.y + obj_work.ofst.y); vecFx32.z = obj_work.pos.z + obj_work.ofst.z; AppMain.NNS_MATRIX nnsMatrix = AppMain.GlobalPool <AppMain.NNS_MATRIX> .Alloc(); AppMain.nnMakeUnitMatrix(nnsMatrix); AppMain.nnTranslateMatrix(nnsMatrix, nnsMatrix, 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 prim = AppMain.GlobalPool <AppMain.AMS_PARAM_DRAW_PRIMITIVE> .Alloc(); prim.type = 0; prim.count = 30 * (int)obj_work.user_work; prim.ablend = 0; prim.bldSrc = 770; prim.bldDst = 771; prim.bldMode = 32774; prim.aTest = (short)1; prim.zMask = (short)0; prim.zTest = (short)1; prim.noSort = (short)1; prim.uwrap = 1; prim.vwrap = 1; prim.texlist = texlist; prim.texId = 0; prim.vtxPCT3D = AppMain.amDrawAlloc_NNS_PRIM3D_PCT(prim.count); AppMain.NNS_PRIM3D_PCT[] buffer = prim.vtxPCT3D.buffer; int offset = prim.vtxPCT3D.offset; prim.format3D = 4; for (int index1 = 0; index1 < (int)(short)obj_work.user_work; ++index1) { for (int index2 = 0; index2 < 5; ++index2) { if (obj_work.user_timer != 0) { int numer = index1 * 53248 * 5 + index2 * 53248; int v2 = numer >= num2 ? (numer <= num2 ? 4096 : AppMain.FX_Div(num1 - numer, denom2)) : AppMain.FX_Div(numer, denom1); obj_work.ofst.y = 26624 + AppMain.FX_Mul(v1, v2) * obj_work.user_timer / 16; } int num3 = index2 + 5 * index1; float f32_1 = AppMain.FX_FX32_TO_F32(53248 * num3); float f32_2 = AppMain.FX_FX32_TO_F32(obj_work.ofst.y); int index3 = offset + num3 * 6; buffer[index3].Tex.u = buffer[index3 + 1].Tex.u = 0.1f; buffer[index3 + 2].Tex.u = buffer[index3 + 3].Tex.u = 0.9f; buffer[index3].Tex.v = buffer[index3 + 2].Tex.v = 0.1f; buffer[index3 + 1].Tex.v = buffer[index3 + 3].Tex.v = 0.9f; buffer[index3].Col = lightColor; buffer[index3 + 1].Col = buffer[index3 + 2].Col = buffer[index3 + 3].Col = buffer[index3].Col; buffer[index3].Pos.x = buffer[index3 + 1].Pos.x = 6.5f + f32_1; buffer[index3 + 2].Pos.x = buffer[index3 + 3].Pos.x = f32_1 - 6.5f; buffer[index3].Pos.y = buffer[index3 + 2].Pos.y = 13f - f32_2; buffer[index3 + 1].Pos.y = buffer[index3 + 3].Pos.y = -0.0f - f32_2; buffer[index3].Pos.z = buffer[index3 + 1].Pos.z = buffer[index3 + 2].Pos.z = buffer[index3 + 3].Pos.z = -1f; buffer[index3 + 4] = buffer[index3 + 2]; buffer[index3 + 5] = buffer[index3 + 3]; buffer[index3 + 3] = buffer[index3 + 1]; } } AppMain.amMatrixPush(nnsMatrix); AppMain.ObjDraw3DNNDrawPrimitive(prim); AppMain.amMatrixPop(); AppMain.GlobalPool <AppMain.AMS_PARAM_DRAW_PRIMITIVE> .Release(prim); AppMain.GlobalPool <AppMain.NNS_MATRIX> .Release(nnsMatrix); }
public static int _amDrawSprite(object r) { AppMain.AMS_AME_RUNTIME runtime = (AppMain.AMS_AME_RUNTIME)r; AppMain.AMS_AME_NODE_SPRITE node = (AppMain.AMS_AME_NODE_SPRITE)runtime.node; AppMain.AMS_AME_LIST next = runtime.active_head.next; AppMain.AMS_AME_LIST activeTail = runtime.active_tail; AppMain.AMS_PARAM_DRAW_PRIMITIVE setParam = AppMain.GlobalPool <AppMain.AMS_PARAM_DRAW_PRIMITIVE> .Alloc(); int num1 = AppMain._amEffectSetDrawMode(runtime, setParam, node.blend); AppMain.SNNS_VECTOR snnsVector1 = new AppMain.SNNS_VECTOR(); AppMain.SNNS_VECTOR snnsVector2 = new AppMain.SNNS_VECTOR(); AppMain.SNNS_VECTOR snnsVector3 = new AppMain.SNNS_VECTOR(); float zBias = node.z_bias; AppMain.amVectorSet(ref snnsVector1, zBias * AppMain._am_ef_worldViewMtx.M20, zBias * AppMain._am_ef_worldViewMtx.M21, zBias * AppMain._am_ef_worldViewMtx.M22); AppMain.amVectorSet(ref snnsVector2, AppMain._am_ef_worldViewMtx.M10, AppMain._am_ef_worldViewMtx.M11, AppMain._am_ef_worldViewMtx.M12); AppMain.amVectorSet(ref snnsVector3, AppMain._am_ef_worldViewMtx.M00, AppMain._am_ef_worldViewMtx.M01, AppMain._am_ef_worldViewMtx.M02); AppMain.SNNS_VECTOR snnsVector4 = new AppMain.SNNS_VECTOR(); AppMain.SNNS_VECTOR snnsVector5 = new AppMain.SNNS_VECTOR(); AppMain.SNNS_VECTOR snnsVector6 = new AppMain.SNNS_VECTOR(); if (((int)node.flag & 4096) != 0) { AppMain.NNS_PRIM3D_PCT_ARRAY nnsPriM3DPctArray = AppMain.amDrawAlloc_NNS_PRIM3D_PCT(6 * (int)runtime.active_num); AppMain.NNS_PRIM3D_PCT[] buffer = nnsPriM3DPctArray.buffer; int offset = nnsPriM3DPctArray.offset; float num2 = 0.0f; for (; next != activeTail; next = next.next) { AppMain.AMS_AME_RUNTIME_WORK_SPRITE runtimeWorkSprite = (AppMain.AMS_AME_RUNTIME_WORK_SPRITE)(AppMain.AMS_AME_RUNTIME_WORK) next; float pSn; float pCs; AppMain.amSinCos(runtimeWorkSprite.twist, out pSn, out pCs); AppMain.amVectorGetAverage(ref snnsVector5, ref snnsVector3, ref snnsVector2, pCs, -pSn); AppMain.amVectorGetAverage(ref snnsVector6, ref snnsVector3, ref snnsVector2, pSn, pCs); AppMain.nnScaleVector(ref snnsVector5, ref snnsVector5, runtimeWorkSprite.size.x); AppMain.nnScaleVector(ref snnsVector6, ref snnsVector6, runtimeWorkSprite.size.y); AppMain.amVectorAdd(ref snnsVector4, runtimeWorkSprite.position, ref snnsVector1); num2 = AppMain.nnDistanceVector(ref snnsVector4, AppMain._am_ef_camPos); AppMain.nnSubtractVector(ref buffer[offset].Pos, ref snnsVector4, ref snnsVector5); AppMain.nnAddVector(ref buffer[offset].Pos, ref buffer[offset].Pos, ref snnsVector6); AppMain.nnAddVector(ref buffer[offset + 1].Pos, ref snnsVector4, ref snnsVector5); AppMain.nnAddVector(ref buffer[offset + 1].Pos, ref buffer[offset + 1].Pos, ref snnsVector6); AppMain.nnSubtractVector(ref buffer[offset + 2].Pos, ref snnsVector4, ref snnsVector5); AppMain.nnSubtractVector(ref buffer[offset + 2].Pos, ref buffer[offset + 2].Pos, ref snnsVector6); AppMain.nnAddVector(ref buffer[offset + 5].Pos, ref snnsVector4, ref snnsVector5); AppMain.nnSubtractVector(ref buffer[offset + 5].Pos, ref buffer[offset + 5].Pos, ref snnsVector6); buffer[offset + 5].Col = AppMain.AMD_RGBA8888(runtimeWorkSprite.color.r, runtimeWorkSprite.color.g, runtimeWorkSprite.color.b, runtimeWorkSprite.color.a); buffer[offset].Col = buffer[offset + 1].Col = buffer[offset + 2].Col = buffer[offset + 5].Col; buffer[offset].Tex.u = runtimeWorkSprite.st.x; buffer[offset].Tex.v = runtimeWorkSprite.st.y; buffer[offset + 1].Tex.u = runtimeWorkSprite.st.z; buffer[offset + 1].Tex.v = runtimeWorkSprite.st.y; buffer[offset + 2].Tex.u = runtimeWorkSprite.st.x; buffer[offset + 2].Tex.v = runtimeWorkSprite.st.w; buffer[offset + 5].Tex.u = runtimeWorkSprite.st.z; buffer[offset + 5].Tex.v = runtimeWorkSprite.st.w; buffer[offset + 3] = buffer[offset + 1]; buffer[offset + 4] = buffer[offset + 2]; offset += 6; } setParam.format3D = 4; setParam.type = 0; setParam.vtxPCT3D = nnsPriM3DPctArray; setParam.texlist = runtime.texlist; setParam.texId = (int)node.texture_id; setParam.count = 6 * (int)runtime.active_num; setParam.ablend = num1; setParam.sortZ = num2; AppMain.amDrawPrimitive3D(runtime.ecb.drawState, setParam); } else { AppMain.NNS_PRIM3D_PC[] nnsPriM3DPcArray1 = AppMain.amDrawAlloc_NNS_PRIM3D_PC(6 * (int)runtime.active_num); int index = 0; AppMain.NNS_PRIM3D_PC[] nnsPriM3DPcArray2 = nnsPriM3DPcArray1; float num2 = 0.0f; for (; next != activeTail; next = next.next) { AppMain.AMS_AME_RUNTIME_WORK_SPRITE runtimeWorkSprite = (AppMain.AMS_AME_RUNTIME_WORK_SPRITE)(AppMain.AMS_AME_RUNTIME_WORK) next; float pSn; float pCs; AppMain.amSinCos(runtimeWorkSprite.twist, out pSn, out pCs); AppMain.amVectorGetAverage(ref snnsVector5, ref snnsVector3, ref snnsVector2, pCs, -pSn); AppMain.amVectorGetAverage(ref snnsVector6, ref snnsVector3, ref snnsVector2, pSn, pCs); AppMain.nnScaleVector(ref snnsVector5, ref snnsVector5, runtimeWorkSprite.size.x); AppMain.nnScaleVector(ref snnsVector6, ref snnsVector6, runtimeWorkSprite.size.y); AppMain.amVectorAdd(ref snnsVector4, runtimeWorkSprite.position, ref snnsVector1); num2 = AppMain.nnDistanceVector(ref snnsVector4, AppMain._am_ef_camPos); AppMain.nnSubtractVector(ref nnsPriM3DPcArray1[index].Pos, ref snnsVector4, ref snnsVector5); AppMain.nnAddVector(ref nnsPriM3DPcArray1[index].Pos, ref nnsPriM3DPcArray1[index].Pos, ref snnsVector6); AppMain.nnAddVector(ref nnsPriM3DPcArray1[index + 1].Pos, ref snnsVector4, ref snnsVector5); AppMain.nnAddVector(ref nnsPriM3DPcArray1[index + 1].Pos, ref nnsPriM3DPcArray1[index + 1].Pos, ref snnsVector6); AppMain.nnSubtractVector(ref nnsPriM3DPcArray1[index + 2].Pos, ref snnsVector4, ref snnsVector5); AppMain.nnSubtractVector(ref nnsPriM3DPcArray1[index + 2].Pos, ref nnsPriM3DPcArray1[index + 2].Pos, ref snnsVector6); AppMain.nnAddVector(ref nnsPriM3DPcArray1[index + 5].Pos, ref snnsVector4, ref snnsVector5); AppMain.nnSubtractVector(ref nnsPriM3DPcArray1[index + 5].Pos, ref nnsPriM3DPcArray1[index + 5].Pos, ref snnsVector6); nnsPriM3DPcArray1[index + 5].Col = AppMain.AMD_RGBA8888(runtimeWorkSprite.color.r, runtimeWorkSprite.color.g, runtimeWorkSprite.color.b, runtimeWorkSprite.color.a); nnsPriM3DPcArray1[index].Col = nnsPriM3DPcArray1[index + 1].Col = nnsPriM3DPcArray1[index + 2].Col = nnsPriM3DPcArray1[index + 5].Col; nnsPriM3DPcArray1[index + 3] = nnsPriM3DPcArray1[index + 1]; nnsPriM3DPcArray1[index + 4] = nnsPriM3DPcArray1[index + 2]; index += 6; } setParam.format3D = 2; setParam.type = 0; setParam.vtxPC3D = nnsPriM3DPcArray2; setParam.texlist = runtime.texlist; setParam.texId = -1; setParam.count = 6 * (int)runtime.active_num; setParam.ablend = num1; setParam.sortZ = num2; AppMain.amDrawPrimitive3D(runtime.ecb.drawState, setParam); } AppMain.GlobalPool <AppMain.AMS_PARAM_DRAW_PRIMITIVE> .Release(setParam); return(0); }
// Token: 0x060004F4 RID: 1268 RVA: 0x0002A6CC File Offset: 0x000288CC public static void GmDecoGlareDraw(OBS_OBJECT_WORK obj_work) { int user_work = (int)obj_work.user_work; if (user_work < 14) { return; } int num = user_work; AppMain.GMS_DECOGLARE_PARAM gms_DECOGLARE_PARAM; switch (num) { case 14: break; case 15: gms_DECOGLARE_PARAM = AppMain._gm_decoGlare_param[1]; goto IL_65; case 16: goto IL_53; default: if (num == 54) { gms_DECOGLARE_PARAM = AppMain._gm_decoGlare_param[3]; goto IL_65; } switch (num) { case 109: break; case 110: goto IL_53; default: return; } break; } gms_DECOGLARE_PARAM = AppMain._gm_decoGlare_param[0]; goto IL_65; IL_53: gms_DECOGLARE_PARAM = AppMain._gm_decoGlare_param[2]; IL_65: if (!AppMain.amDrawIsRegistComplete(AppMain.pIF.regId)) { return; } if (AppMain.pIF.drawFlag != 1) { return; } if ((obj_work.disp_flag & 32U) != 0U) { return; } AppMain.VecFx32 vecFx = new AppMain.VecFx32(obj_work.pos); float num2 = (float)(vecFx.x >> 12); float num3 = -(float)(vecFx.y >> 12); float z = 256f; 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 = 0; ams_PARAM_DRAW_PRIMITIVE.zTest = 1; ams_PARAM_DRAW_PRIMITIVE.ablend = 1; switch (gms_DECOGLARE_PARAM.ablend) { case 0: AppMain.amDrawGetPrimBlendParam(0, ams_PARAM_DRAW_PRIMITIVE); break; case 1: AppMain.amDrawGetPrimBlendParam(1, ams_PARAM_DRAW_PRIMITIVE); break; } AppMain.NNS_PRIM3D_PCT_ARRAY nns_PRIM3D_PCT_ARRAY = AppMain.amDrawAlloc_NNS_PRIM3D_PCT(6); AppMain.NNS_PRIM3D_PCT[] buffer = nns_PRIM3D_PCT_ARRAY.buffer; int offset = nns_PRIM3D_PCT_ARRAY.offset; float num4 = gms_DECOGLARE_PARAM.size * 0.5f; float num5 = gms_DECOGLARE_PARAM.size * 0.5f; num2 += 10f; num3 -= 10f; buffer[offset].Pos.Assign(num2 - num4, num3 + num5, z); buffer[offset + 1].Pos.Assign(num2 + num4, num3 + num5, z); buffer[offset + 2].Pos.Assign(num2 - num4, num3 - num5, z); buffer[offset + 5].Pos.Assign(num2 + num4, num3 - num5, z); buffer[offset].Col = gms_DECOGLARE_PARAM.color; buffer[offset + 1].Col = gms_DECOGLARE_PARAM.color; buffer[offset + 2].Col = gms_DECOGLARE_PARAM.color; buffer[offset + 5].Col = gms_DECOGLARE_PARAM.color; buffer[offset].Tex.u = 0f; buffer[offset].Tex.v = 0f; buffer[offset + 1].Tex.u = 1f; buffer[offset + 1].Tex.v = 0f; buffer[offset + 2].Tex.u = 0f; buffer[offset + 2].Tex.v = 1f; buffer[offset + 5].Tex.u = 1f; buffer[offset + 5].Tex.v = 1f; buffer[offset + 3] = buffer[offset + 1]; buffer[offset + 4] = buffer[offset + 2]; 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.texlist = AppMain.pIF.texlist; ams_PARAM_DRAW_PRIMITIVE.texId = AppMain.pIF.texId; ams_PARAM_DRAW_PRIMITIVE.count = 6; ams_PARAM_DRAW_PRIMITIVE.sortZ = gms_DECOGLARE_PARAM.sort_z; AppMain.amDrawPrimitive3D(4U, ams_PARAM_DRAW_PRIMITIVE); GlobalPool <AppMain.AMS_PARAM_DRAW_PRIMITIVE> .Release(ams_PARAM_DRAW_PRIMITIVE); }
private static void _amTrailDrawNormal(AppMain.AMS_TRAIL_EFFECT pEffect) { AppMain.AMS_TRAIL_PARAM work = pEffect.Work; AppMain.AMS_TRAIL_PARTSDATA amsTrailPartsdata = AppMain.pTr.trailData[(int)work.trailId]; AppMain.AMS_TRAIL_PARTS trailTail = amsTrailPartsdata.trailTail; AppMain.AMS_TRAIL_PARTS trailHead = amsTrailPartsdata.trailHead; AppMain.AMS_TRAIL_PARTS pPrev1 = trailTail.pPrev; if (trailTail.pPrev.pPrev == trailHead || (double)work.time <= 0.0) { return; } AppMain.NNS_RGBA startColor = work.startColor; AppMain.NNS_RGBA ptclColor = work.ptclColor; AppMain.NNS_VECTOR nnsVector1 = new AppMain.NNS_VECTOR(); AppMain.NNS_VECTOR nnsVector2 = new AppMain.NNS_VECTOR(); AppMain.NNS_VECTOR nnsVector3 = new AppMain.NNS_VECTOR(); float num1 = 1f; AppMain.AMS_PARAM_DRAW_PRIMITIVE setParam = AppMain.GlobalPool <AppMain.AMS_PARAM_DRAW_PRIMITIVE> .Alloc(); int num2 = 1; AppMain.amDrawGetPrimBlendParam((int)work.blendType, setParam); if (work.zTest != (short)0) { setParam.zTest = (short)1; } if (work.zMask != (short)0) { setParam.zMask = (short)1; } AppMain.amVectorSet(nnsVector3, 0.0f, 0.0f, 1f); if ((double)work.time < (double)work.vanish_time) { num1 = work.time / work.vanish_time; } work.vanish_rate = num1; startColor.a = work.startColor.a * num1; ptclColor.a = work.ptclColor.a * num1; float startSize = work.startSize; float ptclSize = work.ptclSize; if (work.ptclFlag != (short)0 && work.ptclTexId != (short)-1) { AppMain.NNS_PRIM3D_PCT_ARRAY nnsPriM3DPctArray = AppMain.amDrawAlloc_NNS_PRIM3D_PCT(6); AppMain.NNS_PRIM3D_PCT[] buffer = nnsPriM3DPctArray.buffer; int offset = nnsPriM3DPctArray.offset; float num3 = AppMain.nnDistanceVector(pPrev1.pos, AppMain._am_ef_camPos); AppMain.mppAssertNotImpl(); buffer[offset].Col = AppMain.AMD_FCOLTORGBA8888(ptclColor.r, ptclColor.g, ptclColor.b, ptclColor.a); buffer[offset + 1].Col = buffer[offset + 2].Col = buffer[offset + 5].Col = buffer[offset].Col; buffer[offset].Tex.u = 0.0f; buffer[offset].Tex.v = 0.0f; buffer[offset + 1].Tex.u = 1f; buffer[offset + 1].Tex.v = 0.0f; buffer[offset + 2].Tex.u = 0.0f; buffer[offset + 2].Tex.v = 1f; buffer[offset + 5].Tex.u = 1f; buffer[offset + 5].Tex.v = 1f; buffer[offset + 3] = buffer[offset + 1]; buffer[offset + 4] = buffer[offset + 2]; setParam.format3D = 4; setParam.type = 0; setParam.vtxPCT3D = nnsPriM3DPctArray; setParam.texlist = work.texlist; setParam.texId = (int)work.ptclTexId; setParam.count = 6; setParam.ablend = num2; setParam.sortZ = num3; AppMain.amDrawPrimitive3D(pEffect.drawState, setParam); } if (work.trailPartsNum < (short)3) { return; } if (work.texlist == null || work.texId == -1) { AppMain.NNS_PRIM3D_PC[] _pv = AppMain.amDrawAlloc_NNS_PRIM3D_PC(6 * ((int)work.trailPartsNum - 1)); AppMain.NNS_PRIM3D_PC[] nnsPriM3DPcArray = _pv; int num3 = 0; float num4 = AppMain.nnDistanceVector(pPrev1.pos, AppMain._am_ef_camPos); AppMain.nnCrossProductVector(nnsVector1, nnsVector3, pPrev1.dir); AppMain.nnNormalizeVector(nnsVector1, nnsVector1); AppMain.nnScaleVector(nnsVector2, nnsVector1, startSize); AppMain.nnAddVector(ref _pv[0].Pos, pPrev1.pos, nnsVector2); AppMain.nnAddVector(ref _pv[1].Pos, pPrev1.pPrev.pos, nnsVector2); AppMain.nnSubtractVector(ref _pv[2].Pos, pPrev1.pos, nnsVector2); AppMain.nnSubtractVector(ref _pv[5].Pos, pPrev1.pPrev.pos, nnsVector2); _pv[5].Col = AppMain.AMD_FCOLTORGBA8888(startColor.r, startColor.g, startColor.b, startColor.a); _pv[0].Col = _pv[1].Col = _pv[2].Col = _pv[5].Col; _pv[3] = _pv[1]; _pv[4] = _pv[2]; int pv = num3 + 6; AppMain.AMS_TRAIL_PARTS pPrev2 = pPrev1.pPrev; work.list_no = (short)1; while (pPrev2 != trailHead.pNext) { AppMain.mppAssertNotImpl(); pPrev2.m_Flag &= 4294967293U; ++work.list_no; AppMain._amTrailDrawPartsNormal(pPrev2, work, _pv, pv); pPrev2 = pPrev2.pPrev; pv += 6; } setParam.format3D = 2; setParam.type = 0; setParam.vtxPC3D = nnsPriM3DPcArray; setParam.texlist = work.texlist; setParam.texId = work.texId; setParam.count = 6 * ((int)work.trailPartsNum - 1); setParam.ablend = num2; setParam.sortZ = num4; AppMain.amDrawPrimitive3D(pEffect.drawState, setParam); } else { AppMain.NNS_PRIM3D_PCT_ARRAY nnsPriM3DPctArray = AppMain.amDrawAlloc_NNS_PRIM3D_PCT(6 * ((int)work.trailPartsNum - 1)); AppMain.NNS_PRIM3D_PCT[] buffer = nnsPriM3DPctArray.buffer; int offset = nnsPriM3DPctArray.offset; int num3 = offset; float num4 = (float)((int)work.trailPartsNum - 1) / (float)work.trailPartsNum * work.vanish_rate; float num5 = AppMain.nnDistanceVector(pPrev1.pos, AppMain._am_ef_camPos); AppMain.nnCrossProductVector(nnsVector1, nnsVector3, pPrev1.dir); AppMain.nnNormalizeVector(nnsVector1, nnsVector1); AppMain.nnScaleVector(nnsVector2, nnsVector1, startSize); AppMain.nnAddVector(ref buffer[offset].Pos, pPrev1.pos, nnsVector2); AppMain.nnAddVector(ref buffer[offset + 1].Pos, pPrev1.pPrev.pos, nnsVector2); AppMain.nnSubtractVector(ref buffer[offset + 2].Pos, pPrev1.pos, nnsVector2); AppMain.nnSubtractVector(ref buffer[offset + 5].Pos, pPrev1.pPrev.pos, nnsVector2); buffer[offset + 5].Col = AppMain.AMD_FCOLTORGBA8888(startColor.r, startColor.g, startColor.b, startColor.a); buffer[offset].Col = buffer[offset + 1].Col = buffer[offset + 2].Col = buffer[offset + 5].Col; buffer[offset].Tex.u = 1f; buffer[offset].Tex.v = 0.0f; buffer[offset + 1].Tex.u = num4; buffer[offset + 1].Tex.v = 0.0f; buffer[offset + 2].Tex.u = 1f; buffer[offset + 2].Tex.v = 1f; buffer[offset + 5].Tex.u = num4; buffer[offset + 5].Tex.v = 1f; buffer[offset + 3] = buffer[offset + 1]; buffer[offset + 4] = buffer[offset + 2]; int pv = num3 + 6; AppMain.AMS_TRAIL_PARTS pPrev2 = pPrev1.pPrev; work.list_no = (short)1; while (pPrev2 != trailHead.pNext) { pPrev2.m_Flag &= 4294967293U; ++work.list_no; AppMain._amTrailDrawPartsNormalTex(pPrev2, work, buffer, pv); pPrev2 = pPrev2.pPrev; pv += 6; } setParam.format3D = 4; setParam.type = 0; setParam.vtxPCT3D = nnsPriM3DPctArray; setParam.texlist = work.texlist; setParam.texId = work.texId; setParam.count = 6 * ((int)work.trailPartsNum - 1); setParam.ablend = num2; setParam.sortZ = num5; AppMain.amDrawPrimitive3D(pEffect.drawState, setParam); } //AppMain.GlobalPool<AppMain.NNS_VECTOR>.Release(nnsVector1); //AppMain.GlobalPool<AppMain.NNS_VECTOR>.Release(nnsVector2); //AppMain.GlobalPool<AppMain.NNS_VECTOR>.Release(nnsVector3); }
// Token: 0x06001B08 RID: 6920 RVA: 0x000F5E48 File Offset: 0x000F4048 public static void GmGmkPulleyDrawServerMain() { if (!AppMain.GmMainIsDrawEnable()) { return; } AppMain.GMS_GMK_PULLEY_MANAGER gms_GMK_PULLEY_MANAGER = AppMain.gm_gmk_pulley_manager; if (gms_GMK_PULLEY_MANAGER.num <= 0U) { return; } AppMain.AMS_PARAM_DRAW_PRIMITIVE ams_PARAM_DRAW_PRIMITIVE = AppMain.GlobalPool <AppMain.AMS_PARAM_DRAW_PRIMITIVE> .Alloc(); ams_PARAM_DRAW_PRIMITIVE.type = 1; ams_PARAM_DRAW_PRIMITIVE.ablend = 0; ams_PARAM_DRAW_PRIMITIVE.bldSrc = 768; ams_PARAM_DRAW_PRIMITIVE.bldDst = 774; ams_PARAM_DRAW_PRIMITIVE.bldMode = 32774; ams_PARAM_DRAW_PRIMITIVE.aTest = 1; ams_PARAM_DRAW_PRIMITIVE.zMask = 0; ams_PARAM_DRAW_PRIMITIVE.zTest = 1; ams_PARAM_DRAW_PRIMITIVE.noSort = 1; ams_PARAM_DRAW_PRIMITIVE.texlist = gms_GMK_PULLEY_MANAGER.texlist; ams_PARAM_DRAW_PRIMITIVE.texId = ( int )gms_GMK_PULLEY_MANAGER.tex_id; uint col = AppMain.GmMainGetLightColor(); ams_PARAM_DRAW_PRIMITIVE.uwrap = 1; ams_PARAM_DRAW_PRIMITIVE.vwrap = 1; ams_PARAM_DRAW_PRIMITIVE.count = ( int )(gms_GMK_PULLEY_MANAGER.num * 6U - 2U); ams_PARAM_DRAW_PRIMITIVE.vtxPCT3D = AppMain.amDrawAlloc_NNS_PRIM3D_PCT(ams_PARAM_DRAW_PRIMITIVE.count); AppMain.NNS_PRIM3D_PCT[] buffer = ams_PARAM_DRAW_PRIMITIVE.vtxPCT3D.buffer; int offset = ams_PARAM_DRAW_PRIMITIVE.vtxPCT3D.offset; ams_PARAM_DRAW_PRIMITIVE.format3D = 4; AppMain.NNS_MATRIX nns_MATRIX = AppMain.GlobalPool <AppMain.NNS_MATRIX> .Alloc(); AppMain.NNS_VECTOR nns_VECTOR = AppMain.GlobalPool <AppMain.NNS_VECTOR> .Alloc(); int num = 0; while (( long )num < ( long )(( ulong )gms_GMK_PULLEY_MANAGER.num)) { int num2 = offset + num * 6; int num3 = offset + num * 6 - 1; int num4 = offset + num * 6 + 4; AppMain.GMS_GMK_PULLEY_REGISTER gms_GMK_PULLEY_REGISTER = gms_GMK_PULLEY_MANAGER.reg[num]; Vector3 vector; vector.X = AppMain.FX_FX32_TO_F32(gms_GMK_PULLEY_REGISTER.vec.x); vector.Y = AppMain.FX_FX32_TO_F32(gms_GMK_PULLEY_REGISTER.vec.y); vector.Z = AppMain.FX_FX32_TO_F32(gms_GMK_PULLEY_REGISTER.vec.z); AppMain.NNS_VECTOR[] array = AppMain.gm_gmk_pulley_pos[(int)gms_GMK_PULLEY_REGISTER.type]; AppMain.NNS_TEXCOORD[] array2 = AppMain.gm_gmk_pulley_tex[(int)gms_GMK_PULLEY_REGISTER.type]; if (gms_GMK_PULLEY_REGISTER.flip != 0) { AppMain.nnMakeRotateYMatrix(nns_MATRIX, ( int )gms_GMK_PULLEY_REGISTER.flip); } float num5 = 0f; if (gms_GMK_PULLEY_REGISTER.type == 2) { num5 = 2f; } for (int i = 0; i < 4; i++) { if (gms_GMK_PULLEY_REGISTER.flip != 0) { AppMain.nnTransformVector(nns_VECTOR, nns_MATRIX, array[i]); } else { AppMain.nnCopyVector(nns_VECTOR, array[i]); } int num6 = num2 + i; buffer[num6].Pos.x = nns_VECTOR.x + vector.X; buffer[num6].Pos.y = nns_VECTOR.y - vector.Y + num5; buffer[num6].Pos.z = nns_VECTOR.z + vector.Z; buffer[num6].Tex.u = array2[i].u; buffer[num6].Tex.v = array2[i].v; buffer[num6].Col = col; } if (num != 0) { buffer[num3] = buffer[num2]; } if (( long )num != ( long )(( ulong )(gms_GMK_PULLEY_MANAGER.num - 1U))) { buffer[num4] = buffer[num2 + 3]; } num++; } AppMain.GlobalPool <AppMain.NNS_VECTOR> .Release(nns_VECTOR); AppMain.GlobalPool <AppMain.NNS_MATRIX> .Release(nns_MATRIX); AppMain.NNS_MATRIX nns_MATRIX2 = AppMain.GlobalPool <AppMain.NNS_MATRIX> .Alloc(); AppMain.nnMakeUnitMatrix(nns_MATRIX2); AppMain.amMatrixPush(nns_MATRIX2); AppMain.ObjDraw3DNNDrawPrimitive(ams_PARAM_DRAW_PRIMITIVE, 0U, 0, 0); AppMain.amMatrixPop(); AppMain.GlobalPool <AppMain.AMS_PARAM_DRAW_PRIMITIVE> .Release(ams_PARAM_DRAW_PRIMITIVE); AppMain.GlobalPool <AppMain.NNS_MATRIX> .Release(nns_MATRIX2); gms_GMK_PULLEY_MANAGER.num = 0U; }
// Token: 0x06000036 RID: 54 RVA: 0x000030B0 File Offset: 0x000012B0 private static void _amTrailDrawNormal(AppMain.AMS_TRAIL_EFFECT pEffect) { AppMain.AMS_TRAIL_PARAM work = pEffect.Work; AppMain.AMS_TRAIL_PARTSDATA ams_TRAIL_PARTSDATA = AppMain.pTr.trailData[(int)work.trailId]; AppMain.AMS_TRAIL_PARTS trailTail = ams_TRAIL_PARTSDATA.trailTail; AppMain.AMS_TRAIL_PARTS trailHead = ams_TRAIL_PARTSDATA.trailHead; AppMain.AMS_TRAIL_PARTS pPrev = trailTail.pPrev; if (trailTail.pPrev.pPrev == trailHead) { return; } if (work.time <= 0f) { return; } NNS_RGBA startColor = work.startColor; NNS_RGBA ptclColor = work.ptclColor; NNS_VECTOR nns_VECTOR = GlobalPool <NNS_VECTOR> .Alloc(); NNS_VECTOR nns_VECTOR2 = GlobalPool <NNS_VECTOR> .Alloc(); NNS_VECTOR nns_VECTOR3 = GlobalPool <NNS_VECTOR> .Alloc(); float num = 1f; AppMain.AMS_PARAM_DRAW_PRIMITIVE ams_PARAM_DRAW_PRIMITIVE = GlobalPool <AppMain.AMS_PARAM_DRAW_PRIMITIVE> .Alloc(); int ablend = 1; AppMain.amDrawGetPrimBlendParam((int)work.blendType, ams_PARAM_DRAW_PRIMITIVE); if (work.zTest != 0) { ams_PARAM_DRAW_PRIMITIVE.zTest = 1; } if (work.zMask != 0) { ams_PARAM_DRAW_PRIMITIVE.zMask = 1; } AppMain.amVectorSet(nns_VECTOR3, 0f, 0f, 1f); if (work.time < work.vanish_time) { num = work.time / work.vanish_time; } work.vanish_rate = num; startColor.a = work.startColor.a * num; ptclColor.a = work.ptclColor.a * num; float startSize = work.startSize; float ptclSize = work.ptclSize; if (work.ptclFlag != 0 && work.ptclTexId != -1) { AppMain.NNS_PRIM3D_PCT_ARRAY nns_PRIM3D_PCT_ARRAY = AppMain.amDrawAlloc_NNS_PRIM3D_PCT(6); AppMain.NNS_PRIM3D_PCT[] buffer = nns_PRIM3D_PCT_ARRAY.buffer; int offset = nns_PRIM3D_PCT_ARRAY.offset; float sortZ = AppMain.nnDistanceVector(pPrev.pos, AppMain._am_ef_camPos); AppMain.mppAssertNotImpl(); buffer[offset].Col = AppMain.AMD_FCOLTORGBA8888(ptclColor.r, ptclColor.g, ptclColor.b, ptclColor.a); buffer[offset + 1].Col = (buffer[offset + 2].Col = (buffer[offset + 5].Col = buffer[offset].Col)); buffer[offset].Tex.u = 0f; buffer[offset].Tex.v = 0f; buffer[offset + 1].Tex.u = 1f; buffer[offset + 1].Tex.v = 0f; buffer[offset + 2].Tex.u = 0f; buffer[offset + 2].Tex.v = 1f; buffer[offset + 5].Tex.u = 1f; buffer[offset + 5].Tex.v = 1f; buffer[offset + 3] = buffer[offset + 1]; buffer[offset + 4] = buffer[offset + 2]; 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.texlist = work.texlist; ams_PARAM_DRAW_PRIMITIVE.texId = (int)work.ptclTexId; ams_PARAM_DRAW_PRIMITIVE.count = 6; ams_PARAM_DRAW_PRIMITIVE.ablend = ablend; ams_PARAM_DRAW_PRIMITIVE.sortZ = sortZ; AppMain.amDrawPrimitive3D(pEffect.drawState, ams_PARAM_DRAW_PRIMITIVE); } if (work.trailPartsNum < 3) { return; } if (work.texlist == null || work.texId == -1) { AppMain.NNS_PRIM3D_PC[] array = AppMain.amDrawAlloc_NNS_PRIM3D_PC((int)(6 * (work.trailPartsNum - 1))); AppMain.NNS_PRIM3D_PC[] vtxPC3D = array; int num2 = 0; float sortZ = AppMain.nnDistanceVector(pPrev.pos, AppMain._am_ef_camPos); AppMain.nnCrossProductVector(nns_VECTOR, nns_VECTOR3, pPrev.dir); AppMain.nnNormalizeVector(nns_VECTOR, nns_VECTOR); AppMain.nnScaleVector(nns_VECTOR2, nns_VECTOR, startSize); AppMain.nnAddVector(ref array[0].Pos, pPrev.pos, nns_VECTOR2); AppMain.nnAddVector(ref array[1].Pos, pPrev.pPrev.pos, nns_VECTOR2); AppMain.nnSubtractVector(ref array[2].Pos, pPrev.pos, nns_VECTOR2); AppMain.nnSubtractVector(ref array[5].Pos, pPrev.pPrev.pos, nns_VECTOR2); array[5].Col = AppMain.AMD_FCOLTORGBA8888(startColor.r, startColor.g, startColor.b, startColor.a); array[0].Col = (array[1].Col = (array[2].Col = array[5].Col)); array[3] = array[1]; array[4] = array[2]; num2 += 6; pPrev = pPrev.pPrev; work.list_no = 1; while (pPrev != trailHead.pNext) { AppMain.mppAssertNotImpl(); pPrev.m_Flag &= 4294967293U; AppMain.AMS_TRAIL_PARAM ams_TRAIL_PARAM = work; ams_TRAIL_PARAM.list_no += 1; AppMain._amTrailDrawPartsNormal(pPrev, work, array, num2); pPrev = pPrev.pPrev; num2 += 6; } ams_PARAM_DRAW_PRIMITIVE.format3D = 2; ams_PARAM_DRAW_PRIMITIVE.type = 0; ams_PARAM_DRAW_PRIMITIVE.vtxPC3D = vtxPC3D; ams_PARAM_DRAW_PRIMITIVE.texlist = work.texlist; ams_PARAM_DRAW_PRIMITIVE.texId = work.texId; ams_PARAM_DRAW_PRIMITIVE.count = (int)(6 * (work.trailPartsNum - 1)); ams_PARAM_DRAW_PRIMITIVE.ablend = ablend; ams_PARAM_DRAW_PRIMITIVE.sortZ = sortZ; AppMain.amDrawPrimitive3D(pEffect.drawState, ams_PARAM_DRAW_PRIMITIVE); } else { AppMain.NNS_PRIM3D_PCT_ARRAY nns_PRIM3D_PCT_ARRAY2 = AppMain.amDrawAlloc_NNS_PRIM3D_PCT((int)(6 * (work.trailPartsNum - 1))); AppMain.NNS_PRIM3D_PCT[] buffer2 = nns_PRIM3D_PCT_ARRAY2.buffer; int offset2 = nns_PRIM3D_PCT_ARRAY2.offset; int num3 = offset2; float num4 = (float)(work.trailPartsNum - 1) / (float)work.trailPartsNum; num4 *= work.vanish_rate; float sortZ = AppMain.nnDistanceVector(pPrev.pos, AppMain._am_ef_camPos); AppMain.nnCrossProductVector(nns_VECTOR, nns_VECTOR3, pPrev.dir); AppMain.nnNormalizeVector(nns_VECTOR, nns_VECTOR); AppMain.nnScaleVector(nns_VECTOR2, nns_VECTOR, startSize); AppMain.nnAddVector(ref buffer2[offset2].Pos, pPrev.pos, nns_VECTOR2); AppMain.nnAddVector(ref buffer2[offset2 + 1].Pos, pPrev.pPrev.pos, nns_VECTOR2); AppMain.nnSubtractVector(ref buffer2[offset2 + 2].Pos, pPrev.pos, nns_VECTOR2); AppMain.nnSubtractVector(ref buffer2[offset2 + 5].Pos, pPrev.pPrev.pos, nns_VECTOR2); buffer2[offset2 + 5].Col = AppMain.AMD_FCOLTORGBA8888(startColor.r, startColor.g, startColor.b, startColor.a); buffer2[offset2].Col = (buffer2[offset2 + 1].Col = (buffer2[offset2 + 2].Col = buffer2[offset2 + 5].Col)); buffer2[offset2].Tex.u = 1f; buffer2[offset2].Tex.v = 0f; buffer2[offset2 + 1].Tex.u = num4; buffer2[offset2 + 1].Tex.v = 0f; buffer2[offset2 + 2].Tex.u = 1f; buffer2[offset2 + 2].Tex.v = 1f; buffer2[offset2 + 5].Tex.u = num4; buffer2[offset2 + 5].Tex.v = 1f; buffer2[offset2 + 3] = buffer2[offset2 + 1]; buffer2[offset2 + 4] = buffer2[offset2 + 2]; num3 += 6; pPrev = pPrev.pPrev; work.list_no = 1; while (pPrev != trailHead.pNext) { pPrev.m_Flag &= 4294967293U; AppMain.AMS_TRAIL_PARAM ams_TRAIL_PARAM2 = work; ams_TRAIL_PARAM2.list_no += 1; AppMain._amTrailDrawPartsNormalTex(pPrev, work, buffer2, num3); pPrev = pPrev.pPrev; num3 += 6; } ams_PARAM_DRAW_PRIMITIVE.format3D = 4; ams_PARAM_DRAW_PRIMITIVE.type = 0; ams_PARAM_DRAW_PRIMITIVE.vtxPCT3D = nns_PRIM3D_PCT_ARRAY2; ams_PARAM_DRAW_PRIMITIVE.texlist = work.texlist; ams_PARAM_DRAW_PRIMITIVE.texId = work.texId; ams_PARAM_DRAW_PRIMITIVE.count = (int)(6 * (work.trailPartsNum - 1)); ams_PARAM_DRAW_PRIMITIVE.ablend = ablend; ams_PARAM_DRAW_PRIMITIVE.sortZ = sortZ; AppMain.amDrawPrimitive3D(pEffect.drawState, ams_PARAM_DRAW_PRIMITIVE); } GlobalPool <NNS_VECTOR> .Release(nns_VECTOR); GlobalPool <NNS_VECTOR> .Release(nns_VECTOR2); GlobalPool <NNS_VECTOR> .Release(nns_VECTOR3); }
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); } }
public static void GmGmkPulleyDrawServerMain() { if (!AppMain.GmMainIsDrawEnable()) { return; } AppMain.GMS_GMK_PULLEY_MANAGER gmkPulleyManager = AppMain.gm_gmk_pulley_manager; if (gmkPulleyManager.num <= 0U) { return; } AppMain.AMS_PARAM_DRAW_PRIMITIVE prim = AppMain.GlobalPool <AppMain.AMS_PARAM_DRAW_PRIMITIVE> .Alloc(); prim.type = 1; prim.ablend = 0; prim.bldSrc = 768; prim.bldDst = 774; prim.bldMode = 32774; prim.aTest = (short)1; prim.zMask = (short)0; prim.zTest = (short)1; prim.noSort = (short)1; prim.texlist = gmkPulleyManager.texlist; prim.texId = (int)gmkPulleyManager.tex_id; uint lightColor = AppMain.GmMainGetLightColor(); prim.uwrap = 1; prim.vwrap = 1; prim.count = (int)gmkPulleyManager.num * 6 - 2; prim.vtxPCT3D = AppMain.amDrawAlloc_NNS_PRIM3D_PCT(prim.count); AppMain.NNS_PRIM3D_PCT[] buffer = prim.vtxPCT3D.buffer; int offset = prim.vtxPCT3D.offset; prim.format3D = 4; AppMain.NNS_MATRIX nnsMatrix1 = AppMain.GlobalPool <AppMain.NNS_MATRIX> .Alloc(); AppMain.NNS_VECTOR dst = new AppMain.NNS_VECTOR(); for (int index1 = 0; (long)index1 < (long)gmkPulleyManager.num; ++index1) { int index2 = offset + index1 * 6; int index3 = offset + index1 * 6 - 1; int index4 = offset + index1 * 6 + 4; AppMain.GMS_GMK_PULLEY_REGISTER gmkPulleyRegister = gmkPulleyManager.reg[index1]; Vector3 vector3; vector3.X = AppMain.FX_FX32_TO_F32(gmkPulleyRegister.vec.x); vector3.Y = AppMain.FX_FX32_TO_F32(gmkPulleyRegister.vec.y); vector3.Z = AppMain.FX_FX32_TO_F32(gmkPulleyRegister.vec.z); AppMain.NNS_VECTOR[] gmGmkPulleyPo = AppMain.gm_gmk_pulley_pos[(int)gmkPulleyRegister.type]; AppMain.NNS_TEXCOORD[] nnsTexcoordArray = AppMain.gm_gmk_pulley_tex[(int)gmkPulleyRegister.type]; if (gmkPulleyRegister.flip != (ushort)0) { AppMain.nnMakeRotateYMatrix(nnsMatrix1, (int)gmkPulleyRegister.flip); } float num = 0.0f; if (gmkPulleyRegister.type == (ushort)2) { num = 2f; } for (int index5 = 0; index5 < 4; ++index5) { if (gmkPulleyRegister.flip != (ushort)0) { AppMain.nnTransformVector(dst, nnsMatrix1, gmGmkPulleyPo[index5]); } else { AppMain.nnCopyVector(dst, gmGmkPulleyPo[index5]); } int index6 = index2 + index5; buffer[index6].Pos.x = dst.x + vector3.X; buffer[index6].Pos.y = dst.y - vector3.Y + num; buffer[index6].Pos.z = dst.z + vector3.Z; buffer[index6].Tex.u = nnsTexcoordArray[index5].u; buffer[index6].Tex.v = nnsTexcoordArray[index5].v; buffer[index6].Col = lightColor; } if (index1 != 0) { buffer[index3] = buffer[index2]; } if ((long)index1 != (long)(gmkPulleyManager.num - 1U)) { buffer[index4] = buffer[index2 + 3]; } } //AppMain.GlobalPool<AppMain.NNS_VECTOR>.Release(dst); AppMain.GlobalPool <AppMain.NNS_MATRIX> .Release(nnsMatrix1); AppMain.NNS_MATRIX nnsMatrix2 = AppMain.GlobalPool <AppMain.NNS_MATRIX> .Alloc(); AppMain.nnMakeUnitMatrix(nnsMatrix2); AppMain.amMatrixPush(nnsMatrix2); AppMain.ObjDraw3DNNDrawPrimitive(prim, 0U, 0, 0); AppMain.amMatrixPop(); AppMain.GlobalPool <AppMain.AMS_PARAM_DRAW_PRIMITIVE> .Release(prim); AppMain.GlobalPool <AppMain.NNS_MATRIX> .Release(nnsMatrix2); gmkPulleyManager.num = 0U; }