public static int _amInitSprite(object p) { AppMain.AMS_AME_CREATE_PARAM amsAmeCreateParam = (AppMain.AMS_AME_CREATE_PARAM)p; AppMain.AMS_AME_NODE_SPRITE node = (AppMain.AMS_AME_NODE_SPRITE)amsAmeCreateParam.node; AppMain.AMS_AME_RUNTIME_WORK_SPRITE work = (AppMain.AMS_AME_RUNTIME_WORK_SPRITE)amsAmeCreateParam.work; work.time = -node.start_time; AppMain.AMS_RGBA8888 colorStart = node.color_start; colorStart.color = node.color_start.color; colorStart.a = (byte)((int)colorStart.a * amsAmeCreateParam.ecb.transparency >> 8); work.set_color(colorStart.color); AppMain.amVectorAdd(work.position, amsAmeCreateParam.parent_position.Value, amsAmeCreateParam.position.Value); AppMain.amVectorAdd(work.position, node.translate); AppMain.amVectorScale(work.velocity, amsAmeCreateParam.parent_velocity.Value, node.inheritance_rate); AppMain.amVectorAdd(work.velocity, amsAmeCreateParam.velocity.Value); float z = node.size + node.size_chaos * AppMain.nnRandom(); work.set_size(z * node.scale_x_start, z * node.scale_x_start, z, 0.0f); work.twist = node.twist_angle + node.twist_angle_chaos * AppMain.nnRandom(); if (((int)node.flag & 4) != 0 && (double)AppMain.nnRandom() > 0.5) { work.flag |= 4U; } work.twist_speed = ((int)work.flag & 4) == 0 ? node.twist_angle_speed : -node.twist_angle_speed; if (((int)node.flag & 32768) != 0) { work.tex_time = 0.0f; work.tex_no = 0; if (((int)node.flag & 524288) != 0) { work.tex_no = (int)(100.0 * (double)AppMain.nnRandom()) % node.tex_anim.key_num; } AppMain.AMS_AME_TEX_ANIM_KEY amsAmeTexAnimKey = node.tex_anim.key_buf[work.tex_no]; work.set_st(amsAmeTexAnimKey.l, amsAmeTexAnimKey.t, amsAmeTexAnimKey.r, amsAmeTexAnimKey.b); } else if (((int)node.flag & 8192) != 0) { work.set_st(node.cropping_l, node.cropping_t, node.cropping_r, node.cropping_b); } else { work.set_st(0.0f, 0.0f, 1f, 1f); } if (((int)node.flag & 1048576) != 0 || ((int)node.flag & 131072) != 0 && (double)AppMain.nnRandom() > 0.5) { work.flag |= 8U; work.set_st(work.st.z, work.st.y, work.st.x, work.st.w); } if (((int)node.flag & 2097152) != 0 || ((int)node.flag & 262144) != 0 && (double)AppMain.nnRandom() > 0.5) { work.flag |= 16U; work.set_st(work.st.x, work.st.w, work.st.z, work.st.y); } return(0); }
public static void amEffectLerpColor( out AppMain.AMS_RGBA8888 pCO, ref AppMain.AMS_RGBA8888 pC1, ref AppMain.AMS_RGBA8888 pC2, float rate) { int num = (int)((double)rate * 256.0); pCO = new AppMain.AMS_RGBA8888(); pCO.r = (byte)(((int)pC1.r << 8) + ((int)pC2.r - (int)pC1.r) * num >> 8); pCO.g = (byte)(((int)pC1.g << 8) + ((int)pC2.g - (int)pC1.g) * num >> 8); pCO.b = (byte)(((int)pC1.b << 8) + ((int)pC2.b - (int)pC1.b) * num >> 8); pCO.a = (byte)(((int)pC1.a << 8) + ((int)pC2.a - (int)pC1.a) * num >> 8); }
public static int _amInitLine(object p) { AppMain.AMS_AME_CREATE_PARAM amsAmeCreateParam = (AppMain.AMS_AME_CREATE_PARAM)p; AppMain.AMS_AME_NODE_LINE node = (AppMain.AMS_AME_NODE_LINE)amsAmeCreateParam.node; AppMain.AMS_AME_RUNTIME_WORK_LINE work = (AppMain.AMS_AME_RUNTIME_WORK_LINE)amsAmeCreateParam.work; work.time = -node.start_time; work.length = node.length_start; work.inside_width = node.inside_width_start; work.outside_width = node.outside_width_start; AppMain.AMS_RGBA8888 insideColorStart = node.inside_color_start; insideColorStart.a = (byte)((int)insideColorStart.a * amsAmeCreateParam.ecb.transparency >> 8); work.set_inside_color(insideColorStart.color); AppMain.AMS_RGBA8888 outsideColorStart = node.outside_color_start; outsideColorStart.a = (byte)((int)outsideColorStart.a * amsAmeCreateParam.ecb.transparency >> 8); work.set_outside_color(outsideColorStart.color); AppMain.amVectorAdd(ref work.position, ref amsAmeCreateParam.parent_position.UnsafeValue, ref amsAmeCreateParam.position.UnsafeValue); AppMain.amVectorAdd(work.position, node.translate); AppMain.amVectorScale(work.velocity, amsAmeCreateParam.parent_velocity.Value, node.inheritance_rate); AppMain.amVectorAdd(work.velocity, amsAmeCreateParam.velocity.Value); if (((int)node.flag & 32768) != 0) { work.tex_time = 0.0f; work.tex_no = 0; if (((int)node.flag & 524288) != 0) { work.tex_no = (int)(100.0 * (double)AppMain.nnRandom()) % node.tex_anim.key_num; } AppMain.AMS_AME_TEX_ANIM_KEY amsAmeTexAnimKey = node.tex_anim.key_buf[work.tex_no]; work.set_st(amsAmeTexAnimKey.l, amsAmeTexAnimKey.t, amsAmeTexAnimKey.r, amsAmeTexAnimKey.b); } else if (((int)node.flag & 8192) != 0) { work.set_st(node.cropping_l, node.cropping_t, node.cropping_r, node.cropping_b); } else { work.set_st(0.0f, 0.0f, 1f, 1f); } if (((int)node.flag & 1048576) != 0 || ((int)node.flag & 131072) != 0 && (double)AppMain.nnRandom() > 0.5) { work.flag |= 8U; work.set_st(work.st.z, work.st.y, work.st.x, work.st.w); } if (((int)node.flag & 2097152) != 0 || ((int)node.flag & 262144) != 0 && (double)AppMain.nnRandom() > 0.5) { work.flag |= 16U; work.set_st(work.st.x, work.st.w, work.st.z, work.st.y); } return(0); }
public static int _amInitPlane(object p) { AppMain.AMS_AME_CREATE_PARAM amsAmeCreateParam = (AppMain.AMS_AME_CREATE_PARAM)p; AppMain.AMS_AME_NODE_PLANE node = (AppMain.AMS_AME_NODE_PLANE)amsAmeCreateParam.node; AppMain.AMS_AME_RUNTIME_WORK_PLANE work = (AppMain.AMS_AME_RUNTIME_WORK_PLANE)amsAmeCreateParam.work; work.time = -node.start_time; AppMain.AMS_RGBA8888 colorStart = node.color_start; work.set_color(colorStart.r, colorStart.g, colorStart.b, (byte)((int)colorStart.a * amsAmeCreateParam.ecb.transparency >> 8)); AppMain.amVectorAdd(work.position, amsAmeCreateParam.parent_position.Value, amsAmeCreateParam.position.Value); AppMain.amVectorAdd(work.position, node.translate); AppMain.amVectorScale(work.velocity, amsAmeCreateParam.parent_velocity.Value, node.inheritance_rate); AppMain.amVectorAdd(work.velocity, amsAmeCreateParam.velocity.Value); if (((int)node.flag & 4) != 0) { AppMain.NNS_VECTOR4D nnsVectoR4D = new AppMain.NNS_VECTOR4D(); float radian = (float)((double)AppMain.nnRandom() * 2.0 * 3.14159274101257); AppMain.amVectorRandom(nnsVectoR4D); AppMain.NNS_QUATERNION rotate = work.rotate; AppMain.amQuatRotAxisToQuat(ref rotate, nnsVectoR4D, radian); work.rotate = rotate; //AppMain.GlobalPool<AppMain.NNS_VECTOR4D>.Release(nnsVectoR4D); } else { work.rotate = node.rotate; } if (((int)node.flag & 8) != 0) { AppMain.NNS_VECTOR4D pDst = new AppMain.NNS_VECTOR4D(); AppMain.amVectorRandom(pDst); work.set_rotate_axis(pDst.x, pDst.y, pDst.z, node.rotate_axis.w); //AppMain.GlobalPool<AppMain.NNS_VECTOR4D>.Release(pDst); } else { work.rotate_axis.Assign(node.rotate_axis); } float z = node.size + node.size_chaos * AppMain.nnRandom(); work.set_size(z * node.scale_x_start, z * node.scale_y_start, z, 0.0f); if (((int)node.flag & 32768) != 0) { work.tex_time = 0.0f; work.tex_no = 0; if (((int)node.flag & 524288) != 0) { work.tex_no = (int)(100.0 * (double)AppMain.nnRandom()) % node.tex_anim.key_num; } AppMain.AMS_AME_TEX_ANIM_KEY amsAmeTexAnimKey = node.tex_anim.key_buf[work.tex_no]; work.set_st(amsAmeTexAnimKey.l, amsAmeTexAnimKey.t, amsAmeTexAnimKey.r, amsAmeTexAnimKey.b); } else if (((int)node.flag & 8192) != 0) { work.set_st(node.cropping_l, node.cropping_t, node.cropping_r, node.cropping_b); } else { work.set_st(0.0f, 0.0f, 1f, 1f); } if (((int)node.flag & 1048576) != 0 || ((int)node.flag & 131072) != 0 && (double)AppMain.nnRandom() > 0.5) { work.flag |= 8U; work.set_st(work.st.z, work.st.y, work.st.x, work.st.w); } if (((int)node.flag & 2097152) != 0 || ((int)node.flag & 262144) != 0 && (double)AppMain.nnRandom() > 0.5) { work.flag |= 16U; work.set_st(work.st.x, work.st.w, work.st.z, work.st.y); } return(0); }