public AMS_AME_RUNTIME_WORK_SIMPLE_SPRITE(AppMain.AMS_AME_RUNTIME_WORK rtm_work) { this.rtm_work_ = rtm_work; this.st_ = new AppMain.Vector4D_Quat(rtm_work.rotate); this.size_ = new AppMain.Vector4D_Buf(rtm_work.dummy, 0); this.color_ = new AppMain.AMS_RGBA8888_Buf(rtm_work.dummy, AppMain.Vector4D_Buf.SizeBytes); }
public AMS_AME_RUNTIME_WORK_LINE(AppMain.AMS_AME_RUNTIME_WORK rtm_work) { this.rtm_work_ = rtm_work; this.st_ = new AppMain.Vector4D_Quat(rtm_work.rotate); this.inside_color_ = new AppMain.AMS_RGBA8888_Buf(rtm_work.dummy, 0); this.outside_color_ = new AppMain.AMS_RGBA8888_Buf(rtm_work.dummy, AppMain.AMS_RGBA8888_Buf.SizeBytes); }
public static int _amDrawSimpleSprite(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_RUNTIME_WORK_SIMPLE_SPRITE next1 = (AppMain.AMS_AME_RUNTIME_WORK_SIMPLE_SPRITE)(AppMain.AMS_AME_RUNTIME_WORK) runtime.active_head.next; AppMain.AMS_AME_LIST next2 = 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.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 (; next2 != activeTail; next2 = next2.next) { AppMain.AMS_AME_RUNTIME_WORK_SIMPLE_SPRITE workSimpleSprite = (AppMain.AMS_AME_RUNTIME_WORK_SIMPLE_SPRITE)(AppMain.AMS_AME_RUNTIME_WORK) next2; AppMain.nnScaleVector(ref snnsVector5, ref snnsVector3, workSimpleSprite.size.y); AppMain.nnScaleVector(ref snnsVector6, ref snnsVector2, workSimpleSprite.size.x); AppMain.amVectorAdd(ref snnsVector4, workSimpleSprite.position, ref snnsVector1); num2 = AppMain.nnDistanceVector(ref snnsVector4, AppMain._am_ef_camPos); AppMain.nnSubtractVector(ref buffer[offset + 2].Pos, ref snnsVector4, ref snnsVector5); AppMain.nnAddVector(ref buffer[offset + 2].Pos, ref buffer[offset + 2].Pos, ref snnsVector6); AppMain.nnAddVector(ref buffer[offset].Pos, ref snnsVector4, ref snnsVector5); AppMain.nnAddVector(ref buffer[offset].Pos, ref buffer[offset].Pos, ref snnsVector6); AppMain.nnSubtractVector(ref buffer[offset + 5].Pos, ref snnsVector4, ref snnsVector5); AppMain.nnSubtractVector(ref buffer[offset + 5].Pos, ref buffer[offset + 5].Pos, ref snnsVector6); AppMain.nnAddVector(ref buffer[offset + 1].Pos, ref snnsVector4, ref snnsVector5); AppMain.nnSubtractVector(ref buffer[offset + 1].Pos, ref buffer[offset + 1].Pos, ref snnsVector6); buffer[offset + 5].Col = AppMain.AMD_RGBA8888(workSimpleSprite.color.r, workSimpleSprite.color.g, workSimpleSprite.color.b, workSimpleSprite.color.a); buffer[offset].Col = buffer[offset + 1].Col = buffer[offset + 2].Col = buffer[offset + 5].Col; AppMain.Vector4D_Quat st = workSimpleSprite.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 = AppMain.amDrawAlloc_NNS_PRIM3D_PC(6 * (int)runtime.active_num); int index = 0; AppMain.NNS_PRIM3D_PC[] nnsPriM3DPcArray2 = nnsPriM3DPcArray1; float num2 = 0.0f; for (; next2 != activeTail; next2 = next2.next) { AppMain.AMS_AME_RUNTIME_WORK_SIMPLE_SPRITE workSimpleSprite = (AppMain.AMS_AME_RUNTIME_WORK_SIMPLE_SPRITE)(AppMain.AMS_AME_RUNTIME_WORK) next2; AppMain.nnScaleVector(ref snnsVector5, ref snnsVector3, workSimpleSprite.size.x); AppMain.nnScaleVector(ref snnsVector6, ref snnsVector2, workSimpleSprite.size.y); AppMain.amVectorAdd(ref snnsVector4, workSimpleSprite.position, ref snnsVector1); num2 = AppMain.nnDistanceVector(ref snnsVector4, AppMain._am_ef_camPos); AppMain.nnSubtractVector(ref nnsPriM3DPcArray1[index + 2].Pos, ref snnsVector4, ref snnsVector5); AppMain.nnAddVector(ref nnsPriM3DPcArray1[index + 2].Pos, ref nnsPriM3DPcArray1[index + 2].Pos, ref snnsVector6); AppMain.nnAddVector(ref nnsPriM3DPcArray1[index].Pos, ref snnsVector4, ref snnsVector5); AppMain.nnAddVector(ref nnsPriM3DPcArray1[index].Pos, ref nnsPriM3DPcArray1[index].Pos, ref snnsVector6); AppMain.nnSubtractVector(ref nnsPriM3DPcArray1[index + 5].Pos, ref snnsVector4, ref snnsVector5); AppMain.nnSubtractVector(ref nnsPriM3DPcArray1[index + 5].Pos, ref nnsPriM3DPcArray1[index + 5].Pos, ref snnsVector6); AppMain.nnAddVector(ref nnsPriM3DPcArray1[index + 1].Pos, ref snnsVector4, ref snnsVector5); AppMain.nnSubtractVector(ref nnsPriM3DPcArray1[index + 1].Pos, ref nnsPriM3DPcArray1[index + 1].Pos, ref snnsVector6); nnsPriM3DPcArray1[index + 5].Col = AppMain.AMD_RGBA8888(workSimpleSprite.color.r, workSimpleSprite.color.g, workSimpleSprite.color.b, workSimpleSprite.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); } return(0); }
public static int _amUpdateSimpleSprite(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; int transparency = runtime.ecb.transparency; float num1; float num2; if ((double)node.life >= 0.0) { num1 = node.life; num2 = 1f / num1; } else { num1 = float.MaxValue; num2 = 0.0f; } float sizeRate = runtime.ecb.size_rate; float num3 = node.scale_x_start * sizeRate; float num4 = node.scale_y_start * sizeRate; float num5 = node.scale_x_end * sizeRate; float num6 = node.scale_y_end * sizeRate; for (; next != activeTail; next = next.next) { AppMain.AMS_AME_RUNTIME_WORK_SIMPLE_SPRITE workSimpleSprite = (AppMain.AMS_AME_RUNTIME_WORK_SIMPLE_SPRITE)(AppMain.AMS_AME_RUNTIME_WORK) next; workSimpleSprite.time += AppMain._am_unit_frame; float rate = workSimpleSprite.time * num2; AppMain.NNS_VECTOR4D amEffectVel = AppMain._amEffect_vel; AppMain.amVectorScale(amEffectVel, workSimpleSprite.velocity, AppMain._am_unit_time); AppMain.amVectorAdd(workSimpleSprite.position, amEffectVel); if ((double)workSimpleSprite.time >= (double)num1) { if (runtime.spawn_runtime != null) { AppMain._amCreateSpawnParticle(runtime, (AppMain.AMS_AME_RUNTIME_WORK)workSimpleSprite); } AppMain.amEffectDisconnectLink((AppMain.AMS_AME_LIST)workSimpleSprite); --runtime.active_num; AppMain.amEffectFreeRuntimeWork((AppMain.AMS_AME_RUNTIME_WORK)workSimpleSprite); } else { float num7 = 1f - rate; float num8 = (float)((double)num3 * (double)num7 + (double)num5 * (double)rate); float num9 = (float)((double)num4 * (double)num7 + (double)num6 * (double)rate); AppMain.Vector4D_Buf size = workSimpleSprite.size; workSimpleSprite.set_size(size.z * num8, size.z * num9, size.z, size.w); AppMain.AMS_RGBA8888 pCO; AppMain.amEffectLerpColor(out pCO, ref node.color_start, ref node.color_end, rate); pCO.a = (byte)((int)pCO.a * transparency >> 8); workSimpleSprite.set_color(pCO.color); if (((int)node.flag & 32768) != 0) { AppMain.AMS_AME_TEX_ANIM texAnim = node.tex_anim; if (((int)workSimpleSprite.flag & 2) == 0) { workSimpleSprite.tex_time += AppMain._am_unit_frame; if ((double)workSimpleSprite.tex_time >= (double)texAnim.key_buf[workSimpleSprite.tex_no].time) { workSimpleSprite.tex_time = 0.0f; ++workSimpleSprite.tex_no; if (workSimpleSprite.tex_no == texAnim.key_num) { if (((int)node.flag & 65536) != 0) { workSimpleSprite.tex_no = 0; } else { workSimpleSprite.tex_no = texAnim.key_num - 1; workSimpleSprite.flag |= 2U; } } } } AppMain.AMS_AME_TEX_ANIM_KEY amsAmeTexAnimKey = texAnim.key_buf[workSimpleSprite.tex_no]; Vector4 vector4 = new Vector4(amsAmeTexAnimKey.l, amsAmeTexAnimKey.t, amsAmeTexAnimKey.r, amsAmeTexAnimKey.b); if (((int)workSimpleSprite.flag & 8) != 0) { float x = vector4.X; vector4.X = vector4.Z; vector4.Z = x; } if (((int)workSimpleSprite.flag & 16) != 0) { float y = vector4.Y; vector4.Y = vector4.W; vector4.W = y; } workSimpleSprite.set_st(vector4.X, vector4.Y, vector4.Z, vector4.W); } else if (((int)node.flag & 16384) != 0) { float num10 = node.scroll_u * AppMain._am_unit_time; float num11 = node.scroll_v * AppMain._am_unit_time; if (((int)workSimpleSprite.flag & 8) != 0) { num10 = -num10; } if (((int)workSimpleSprite.flag & 16) != 0) { num11 = -num11; } AppMain.Vector4D_Quat st = workSimpleSprite.st; Vector4 vector4 = new Vector4(st.x + num10, st.y + num11, st.z + num10, st.w + num11); workSimpleSprite.set_st(vector4.X, vector4.Y, vector4.Z, vector4.W); } } } return(0); }
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); }