Exemple #1
0
    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);
    }
Exemple #2
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);
    }
Exemple #3
0
 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);
 }
Exemple #4
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);
    }