Example #1
0
 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 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_MODEL(AppMain.AMS_AME_RUNTIME_WORK rtm_work)
 {
     this.rtm_work_    = rtm_work;
     this.rotate_axis_ = new AppMain.Vector4D_Buf(rtm_work.dummy, 0);
     this.scale_       = new AppMain.Vector4D_Buf(rtm_work.dummy, AppMain.Vector4D_Buf.SizeBytes);
     this.color_       = new AppMain.AMS_RGBA8888_Buf(rtm_work.dummy, AppMain.Vector4D_Buf.SizeBytes + AppMain.Vector4D_Buf.SizeBytes);
 }
Example #4
0
 public static void _amApplyVortex(
     AppMain.AMS_AME_ECB ecb,
     AppMain.AMS_AME_NODE node,
     AppMain.AMS_AME_RUNTIME_WORK work)
 {
     AppMain.AMS_AME_NODE_VORTEX amsAmeNodeVortex = (AppMain.AMS_AME_NODE_VORTEX)node;
     AppMain.NNS_VECTOR4D        nnsVectoR4D1     = new AppMain.NNS_VECTOR4D();
     AppMain.NNS_VECTOR4D        nnsVectoR4D2     = new AppMain.NNS_VECTOR4D();
     AppMain.NNS_VECTOR4D        nnsVectoR4D3     = new AppMain.NNS_VECTOR4D();
     AppMain.NNS_VECTOR4D        nnsVectoR4D4     = new AppMain.NNS_VECTOR4D();
     AppMain.amVectorCopy(nnsVectoR4D1, amsAmeNodeVortex.position);
     AppMain.amVectorCopy(nnsVectoR4D3, amsAmeNodeVortex.axis);
     if (((int)amsAmeNodeVortex.flag & 1) != 0)
     {
         AppMain.amVectorAdd(nnsVectoR4D1, ecb.translate);
     }
     if (((int)amsAmeNodeVortex.flag & 2) != 0)
     {
         AppMain.amQuatMultiVector(nnsVectoR4D3, nnsVectoR4D3, ref ecb.rotate, null);
     }
     AppMain.amVectorSub(nnsVectoR4D2, work.position, nnsVectoR4D1);
     AppMain.amVectorOuterProduct(nnsVectoR4D4, nnsVectoR4D3, nnsVectoR4D2);
     AppMain.amVectorScale(nnsVectoR4D2, nnsVectoR4D4, AppMain._am_unit_time);
     AppMain.amVectorAdd(work.velocity, nnsVectoR4D2);
     AppMain.amVectorOuterProduct(nnsVectoR4D4, nnsVectoR4D3, nnsVectoR4D4);
     AppMain.amVectorScale(nnsVectoR4D2, nnsVectoR4D4, AppMain._am_unit_time);
     AppMain.amVectorAdd(work.velocity, nnsVectoR4D2);
     //AppMain.GlobalPool<AppMain.NNS_VECTOR4D>.Release(nnsVectoR4D1);
     //AppMain.GlobalPool<AppMain.NNS_VECTOR4D>.Release(nnsVectoR4D2);
     //AppMain.GlobalPool<AppMain.NNS_VECTOR4D>.Release(nnsVectoR4D3);
     //AppMain.GlobalPool<AppMain.NNS_VECTOR4D>.Release(nnsVectoR4D4);
 }
Example #5
0
 public static void amEffectSetTranslate(AppMain.AMS_AME_ECB ecb, AppMain.NNS_VECTOR4D translate)
 {
     AppMain.amVectorCopy(ecb.translate, translate);
     for (AppMain.AMS_AME_ENTRY amsAmeEntry = ecb.entry_head; amsAmeEntry != null; amsAmeEntry = (AppMain.AMS_AME_ENTRY)amsAmeEntry.next)
     {
         AppMain.AMS_AME_RUNTIME runtime = amsAmeEntry.runtime;
         if ((runtime.state & 8192) != 0 && ((int)runtime.node.flag & 67108864) == 0)
         {
             if (runtime.work != null)
             {
                 AppMain.amVectorAdd(runtime.work.position, ((AppMain.AMS_AME_NODE_TR_ROT)runtime.node).translate, translate);
             }
             if ((int)runtime.work_num + (int)runtime.active_num != 0)
             {
                 AppMain.AMS_AME_RUNTIME_WORK next1 = (AppMain.AMS_AME_RUNTIME_WORK)runtime.work_head.next;
                 for (AppMain.AMS_AME_RUNTIME_WORK workTail = (AppMain.AMS_AME_RUNTIME_WORK)runtime.work_tail; next1 != workTail; next1 = (AppMain.AMS_AME_RUNTIME_WORK)next1.next)
                 {
                     AppMain.amVectorAdd(next1.position, ((AppMain.AMS_AME_NODE_TR_ROT)runtime.node).translate, translate);
                 }
                 AppMain.AMS_AME_RUNTIME_WORK next2 = (AppMain.AMS_AME_RUNTIME_WORK)runtime.active_head.next;
                 for (AppMain.AMS_AME_RUNTIME_WORK activeTail = (AppMain.AMS_AME_RUNTIME_WORK)runtime.active_tail; next2 != activeTail; next2 = (AppMain.AMS_AME_RUNTIME_WORK)next2.next)
                 {
                     AppMain.amVectorAdd(next2.position, ((AppMain.AMS_AME_NODE_TR_ROT)runtime.node).translate, translate);
                 }
             }
         }
     }
 }
Example #6
0
    public static void _amApplyDrag(
        AppMain.AMS_AME_ECB ecb,
        AppMain.AMS_AME_NODE node,
        AppMain.AMS_AME_RUNTIME_WORK work)
    {
        AppMain.AMS_AME_NODE_DRAG amsAmeNodeDrag = (AppMain.AMS_AME_NODE_DRAG)node;
        float amUnitTime = AppMain._am_unit_time;

        AppMain.NNS_VECTOR4D nnsVectoR4D1 = new AppMain.NNS_VECTOR4D();
        AppMain.NNS_VECTOR4D nnsVectoR4D2 = new AppMain.NNS_VECTOR4D();
        AppMain.NNS_VECTOR4D nnsVectoR4D3 = new AppMain.NNS_VECTOR4D();
        AppMain.amVectorCopy(nnsVectoR4D3, amsAmeNodeDrag.position);
        if (((int)amsAmeNodeDrag.flag & 1) != 0)
        {
            AppMain.amVectorAdd(nnsVectoR4D3, ecb.translate);
        }
        AppMain.amVectorSub(nnsVectoR4D2, work.position, nnsVectoR4D3);
        double num = (double)AppMain.amVectorUnit(nnsVectoR4D2);

        AppMain.amVectorScale(nnsVectoR4D1, nnsVectoR4D2, (float)((double)amsAmeNodeDrag.magnitude * (double)amUnitTime * (double)amUnitTime * 0.5));
        AppMain.amVectorAdd(work.position, nnsVectoR4D1);
        AppMain.amVectorScale(nnsVectoR4D1, nnsVectoR4D2, amsAmeNodeDrag.magnitude * amUnitTime);
        AppMain.amVectorAdd(work.velocity, nnsVectoR4D1);
        //AppMain.GlobalPool<AppMain.NNS_VECTOR4D>.Release(nnsVectoR4D1);
        //AppMain.GlobalPool<AppMain.NNS_VECTOR4D>.Release(nnsVectoR4D2);
        //AppMain.GlobalPool<AppMain.NNS_VECTOR4D>.Release(nnsVectoR4D3);
    }
Example #7
0
 public static void amEffectFreeRuntimeWork(AppMain.AMS_AME_RUNTIME_WORK work)
 {
     AppMain._am_work_ref[AppMain._am_work_free] = work;
     ++AppMain._am_work_free;
     if (AppMain._am_work_free < 1024)
     {
         return;
     }
     AppMain._am_work_free = 0;
 }
Example #8
0
 public void Clear()
 {
     this.ecb             = (AppMain.AMS_AME_ECB)null;
     this.runtime         = (AppMain.AMS_AME_RUNTIME)null;
     this.node            = (AppMain.AMS_AME_NODE)null;
     this.work            = (AppMain.AMS_AME_RUNTIME_WORK)null;
     this.position        = default;
     this.velocity        = default;
     this.parent_position = default;
     this.parent_velocity = default;
 }
Example #9
0
 public static AppMain.AMS_AME_RUNTIME_WORK _amAllocRuntimeWork()
 {
     AppMain.AMS_AME_RUNTIME_WORK amsAmeRuntimeWork = AppMain._am_work_ref[AppMain._am_work_alloc];
     ++AppMain._am_work_alloc;
     if (AppMain._am_work_alloc >= 1024)
     {
         AppMain._am_work_alloc = 0;
     }
     amsAmeRuntimeWork.Clear();
     return(amsAmeRuntimeWork);
 }
Example #10
0
 public static void amEffectSetRotate(
     AppMain.AMS_AME_ECB ecb,
     ref AppMain.NNS_QUATERNION q,
     int offset)
 {
     ecb.rotate = q;
     for (AppMain.AMS_AME_ENTRY amsAmeEntry = ecb.entry_head; amsAmeEntry != null; amsAmeEntry = (AppMain.AMS_AME_ENTRY)amsAmeEntry.next)
     {
         AppMain.AMS_AME_RUNTIME runtime = amsAmeEntry.runtime;
         if ((runtime.state & 8192) != 0 && ((int)runtime.node.flag & 134217728) == 0)
         {
             if (runtime.work != null)
             {
                 if (offset != 0)
                 {
                     AppMain.amQuatMulti(ref runtime.work.rotate[0], ref ((AppMain.AMS_AME_NODE_TR_ROT)runtime.node).rotate, ref q);
                 }
                 else
                 {
                     runtime.work.rotate[0] = q;
                 }
             }
             if ((int)runtime.work_num + (int)runtime.active_num != 0)
             {
                 AppMain.AMS_AME_RUNTIME_WORK next1 = (AppMain.AMS_AME_RUNTIME_WORK)runtime.work_head.next;
                 for (AppMain.AMS_AME_RUNTIME_WORK workTail = (AppMain.AMS_AME_RUNTIME_WORK)runtime.work_tail; next1 != workTail; next1 = (AppMain.AMS_AME_RUNTIME_WORK)next1.next)
                 {
                     if (offset != 0)
                     {
                         AppMain.amQuatMulti(ref next1.rotate[0], ref ((AppMain.AMS_AME_NODE_TR_ROT)runtime.node).rotate, ref q);
                     }
                     else
                     {
                         next1.rotate[0] = q;
                     }
                 }
                 AppMain.AMS_AME_RUNTIME_WORK next2 = (AppMain.AMS_AME_RUNTIME_WORK)runtime.active_head.next;
                 for (AppMain.AMS_AME_RUNTIME_WORK activeTail = (AppMain.AMS_AME_RUNTIME_WORK)runtime.active_tail; next2 != activeTail; next2 = (AppMain.AMS_AME_RUNTIME_WORK)next2.next)
                 {
                     if (offset != 0)
                     {
                         AppMain.amQuatMulti(ref next2.rotate[0], ref ((AppMain.AMS_AME_NODE_TR_ROT)runtime.node).rotate, ref q);
                     }
                     else
                     {
                         next2.rotate[0] = q;
                     }
                 }
             }
         }
     }
 }
Example #11
0
    public static void _amApplyNoise(
        AppMain.AMS_AME_ECB ecb,
        AppMain.AMS_AME_NODE node,
        AppMain.AMS_AME_RUNTIME_WORK work)
    {
        AppMain.AMS_AME_NODE_NOISE amsAmeNodeNoise = (AppMain.AMS_AME_NODE_NOISE)node;
        float num = amsAmeNodeNoise.magnitude * AppMain._am_unit_time;

        AppMain.SNNS_VECTOR4D pSrc;
        pSrc.x = (AppMain.nnRandom() - 0.5f) * num * amsAmeNodeNoise.axis.x;
        pSrc.y = (AppMain.nnRandom() - 0.5f) * num * amsAmeNodeNoise.axis.y;
        pSrc.z = (AppMain.nnRandom() - 0.5f) * num * amsAmeNodeNoise.axis.z;
        pSrc.w = 1f;
        AppMain.amVectorAdd(work.position, ref pSrc);
    }
Example #12
0
    public static void _amApplyUniform(
        AppMain.AMS_AME_ECB ecb,
        AppMain.AMS_AME_NODE node,
        AppMain.AMS_AME_RUNTIME_WORK work)
    {
        AppMain.AMS_AME_NODE_UNIFORM amsAmeNodeUniform = (AppMain.AMS_AME_NODE_UNIFORM)node;
        float amUnitTime = AppMain._am_unit_time;

        AppMain.NNS_VECTOR4D nnsVectoR4D = new AppMain.NNS_VECTOR4D();
        AppMain.amVectorScale(nnsVectoR4D, amsAmeNodeUniform.direction, amsAmeNodeUniform.magnitude * amUnitTime);
        if (((int)amsAmeNodeUniform.flag & 2) != 0)
        {
            AppMain.amQuatMultiVector(nnsVectoR4D, nnsVectoR4D, ref ecb.rotate, null);
        }
        AppMain.amVectorAdd(work.position, nnsVectoR4D);
        //AppMain.GlobalPool<AppMain.NNS_VECTOR4D>.Release(nnsVectoR4D);
    }
Example #13
0
    public static void _amApplyGravity(
        AppMain.AMS_AME_ECB ecb,
        AppMain.AMS_AME_NODE node,
        AppMain.AMS_AME_RUNTIME_WORK work)
    {
        AppMain.AMS_AME_NODE_GRAVITY amsAmeNodeGravity = (AppMain.AMS_AME_NODE_GRAVITY)node;
        float amUnitTime = AppMain._am_unit_time;

        AppMain.NNS_VECTOR4D nnsVectoR4D1 = new AppMain.NNS_VECTOR4D();
        AppMain.NNS_VECTOR4D nnsVectoR4D2 = new AppMain.NNS_VECTOR4D();
        AppMain.amVectorCopy(nnsVectoR4D2, amsAmeNodeGravity.direction);
        if (((int)amsAmeNodeGravity.flag & 2) != 0)
        {
            AppMain.amQuatMultiVector(nnsVectoR4D2, nnsVectoR4D2, ref ecb.rotate, null);
        }
        AppMain.amVectorScale(nnsVectoR4D1, nnsVectoR4D2, (float)((double)amsAmeNodeGravity.magnitude * (double)amUnitTime * (double)amUnitTime * 0.5));
        AppMain.amVectorAdd(work.position, nnsVectoR4D1);
        AppMain.amVectorScale(nnsVectoR4D1, nnsVectoR4D2, amsAmeNodeGravity.magnitude * amUnitTime);
        AppMain.amVectorAdd(work.velocity, nnsVectoR4D1);
        //AppMain.GlobalPool<AppMain.NNS_VECTOR4D>.Release(nnsVectoR4D1);
        //AppMain.GlobalPool<AppMain.NNS_VECTOR4D>.Release(nnsVectoR4D2);
    }
Example #14
0
    public static void _amApplyRadial(
        AppMain.AMS_AME_ECB ecb,
        AppMain.AMS_AME_NODE node,
        AppMain.AMS_AME_RUNTIME_WORK work)
    {
        AppMain.AMS_AME_NODE_RADIAL amsAmeNodeRadial = (AppMain.AMS_AME_NODE_RADIAL)node;
        float amUnitTime = AppMain._am_unit_time;

        AppMain.NNS_VECTOR4D nnsVectoR4D1 = new AppMain.NNS_VECTOR4D();
        AppMain.NNS_VECTOR4D nnsVectoR4D2 = new AppMain.NNS_VECTOR4D();
        AppMain.amVectorCopy(nnsVectoR4D2, amsAmeNodeRadial.position);
        if (((int)amsAmeNodeRadial.flag & 1) != 0)
        {
            AppMain.amVectorAdd(nnsVectoR4D2, ecb.translate);
        }
        AppMain.amVectorSub(nnsVectoR4D1, work.position, nnsVectoR4D2);
        float  num1 = 1f / (float)Math.Pow((double)AppMain.amVectorScalor(nnsVectoR4D1), (double)amsAmeNodeRadial.attenuation);
        double num2 = (double)AppMain.amVectorScaleUnit(nnsVectoR4D1, nnsVectoR4D1, amsAmeNodeRadial.magnitude * num1 * amUnitTime);

        AppMain.amVectorAdd(work.position, nnsVectoR4D1);
        //AppMain.GlobalPool<AppMain.NNS_VECTOR4D>.Release(nnsVectoR4D1);
        //AppMain.GlobalPool<AppMain.NNS_VECTOR4D>.Release(nnsVectoR4D2);
    }
Example #15
0
 public new void Clear()
 {
     this.next           = (AppMain.AMS_AME_LIST)null;
     this.prev           = (AppMain.AMS_AME_LIST)null;
     this.state          = 0;
     this.amount         = 0.0f;
     this.count          = 0U;
     this.ecb            = (AppMain.AMS_AME_ECB)null;
     this.node           = (AppMain.AMS_AME_NODE)null;
     this.parent_runtime = (AppMain.AMS_AME_RUNTIME)null;
     this.spawn_runtime  = (AppMain.AMS_AME_RUNTIME)null;
     this.work           = (AppMain.AMS_AME_RUNTIME_WORK)null;
     this.child_head.Clear();
     this.child_tail.Clear();
     this.child_num = 0;
     this.work_head.Clear();
     this.work_tail.Clear();
     this.active_head.Clear();
     this.active_tail.Clear();
     this.work_num   = (short)0;
     this.active_num = (short)0;
     this.texlist    = (AppMain.NNS_TEXLIST)null;
 }
Example #16
0
 private void amEffectRotate(AppMain.AMS_AME_ECB ecb, ref AppMain.NNS_QUATERNION q)
 {
     AppMain.amQuatMulti(ref ecb.rotate, ref ecb.rotate, ref q);
     for (AppMain.AMS_AME_ENTRY amsAmeEntry = ecb.entry_head; amsAmeEntry != null; amsAmeEntry = (AppMain.AMS_AME_ENTRY)amsAmeEntry.next)
     {
         AppMain.AMS_AME_RUNTIME runtime = amsAmeEntry.runtime;
         if ((runtime.state & 8192) != 0 && ((int)runtime.node.flag & 134217728) == 0)
         {
             if (runtime.work != null)
             {
                 AppMain.amQuatMulti(ref runtime.work.rotate[0], ref runtime.work.rotate[0], ref q);
             }
             if ((int)runtime.work_num + (int)runtime.active_num != 0)
             {
                 AppMain.AMS_AME_LIST next1 = runtime.work_head.next;
                 for (AppMain.AMS_AME_LIST workTail = runtime.work_tail; next1 != workTail; next1 = next1.next)
                 {
                     AppMain.AMS_AME_RUNTIME_WORK amsAmeRuntimeWork = (AppMain.AMS_AME_RUNTIME_WORK)next1;
                     if (runtime.work != null)
                     {
                         AppMain.amQuatMulti(ref amsAmeRuntimeWork.rotate[0], ref runtime.work.rotate[0], ref q);
                     }
                 }
                 AppMain.AMS_AME_LIST next2 = runtime.active_head.next;
                 for (AppMain.AMS_AME_LIST activeTail = runtime.active_tail; next2 != activeTail; next2 = next2.next)
                 {
                     AppMain.AMS_AME_RUNTIME_WORK amsAmeRuntimeWork = (AppMain.AMS_AME_RUNTIME_WORK)next2;
                     if (runtime.work != null)
                     {
                         AppMain.amQuatMulti(ref amsAmeRuntimeWork.rotate[0], ref runtime.work.rotate[0], ref q);
                     }
                 }
             }
         }
     }
 }
Example #17
0
 public static void _amFreeRuntime(AppMain.AMS_AME_RUNTIME runtime)
 {
     if (runtime.work != null)
     {
         AppMain.amEffectFreeRuntimeWork(runtime.work);
     }
     AppMain.AMS_AME_RUNTIME_WORK next1 = (AppMain.AMS_AME_RUNTIME_WORK)runtime.work_head.next;
     for (AppMain.AMS_AME_RUNTIME_WORK workTail = (AppMain.AMS_AME_RUNTIME_WORK)runtime.work_tail; next1 != workTail; next1 = (AppMain.AMS_AME_RUNTIME_WORK)next1.next)
     {
         AppMain.amEffectFreeRuntimeWork(next1);
     }
     AppMain.AMS_AME_RUNTIME_WORK next2 = (AppMain.AMS_AME_RUNTIME_WORK)runtime.active_head.next;
     for (AppMain.AMS_AME_RUNTIME_WORK activeTail = (AppMain.AMS_AME_RUNTIME_WORK)runtime.active_tail; next2 != activeTail; next2 = (AppMain.AMS_AME_RUNTIME_WORK)next2.next)
     {
         AppMain.amEffectFreeRuntimeWork(next2);
     }
     AppMain._am_runtime_ref[AppMain._am_runtime_free] = runtime;
     ++AppMain._am_runtime_free;
     if (AppMain._am_runtime_free < 512)
     {
         return;
     }
     AppMain._am_runtime_free = 0;
 }
Example #18
0
    public static void _amCreateSpawnParticle(
        AppMain.AMS_AME_RUNTIME runtime,
        AppMain.AMS_AME_RUNTIME_WORK work)
    {
        AppMain.NNS_VECTOR4D pVec = new AppMain.NNS_VECTOR4D();
        AppMain.amVectorInit(pVec);
        AppMain.AMS_AME_CREATE_PARAM amsAmeCreateParam = AppMain.GlobalPool <AppMain.AMS_AME_CREATE_PARAM> .Alloc();

        amsAmeCreateParam.ecb             = runtime.ecb;
        amsAmeCreateParam.runtime         = runtime.spawn_runtime;
        amsAmeCreateParam.node            = runtime.spawn_runtime.node;
        amsAmeCreateParam.position        = pVec;
        amsAmeCreateParam.velocity        = pVec;
        amsAmeCreateParam.parent_position = work.position;
        amsAmeCreateParam.parent_velocity = work.velocity;
        if ((runtime.state & 8192) != 0)
        {
            runtime.spawn_runtime.state |= 8192;
        }
        AppMain._amCreateParticle(amsAmeCreateParam);
        if (AppMain.AMD_AME_NODE_TYPE(runtime.node) == AppMain.AMD_AME_NODE_TYPE(amsAmeCreateParam.node))
        {
            AppMain.AMS_AME_NODE node1 = runtime.node;
            AppMain.AMS_AME_NODE node2 = amsAmeCreateParam.node;
            switch (AppMain.AMD_AME_NODE_TYPE(amsAmeCreateParam.node))
            {
            case 512:
                AppMain.AMS_AME_RUNTIME_WORK_SIMPLE_SPRITE workSimpleSprite = (AppMain.AMS_AME_RUNTIME_WORK_SIMPLE_SPRITE)work;
                AppMain.AMS_AME_RUNTIME_WORK_SIMPLE_SPRITE work1            = (AppMain.AMS_AME_RUNTIME_WORK_SIMPLE_SPRITE)amsAmeCreateParam.work;
                if (((int)node1.flag & (int)node2.flag & 131072) != 0 && (((int)workSimpleSprite.flag ^ (int)work1.flag) & 8) != 0)
                {
                    work1.flag ^= 8U;
                    work1.set_st(work1.st.z, work1.st.y, work1.st.x, work1.st.w);
                }
                if (((int)node1.flag & (int)node2.flag & 262144) != 0 && (((int)workSimpleSprite.flag ^ (int)work1.flag) & 16) != 0)
                {
                    work1.flag ^= 16U;
                    work1.set_st(work1.st.x, work1.st.w, work1.st.z, work1.st.y);
                    break;
                }
                break;

            case 513:
                AppMain.AMS_AME_RUNTIME_WORK_SPRITE runtimeWorkSprite = (AppMain.AMS_AME_RUNTIME_WORK_SPRITE)work;
                AppMain.AMS_AME_RUNTIME_WORK_SPRITE work2             = (AppMain.AMS_AME_RUNTIME_WORK_SPRITE)amsAmeCreateParam.work;
                if (((int)node1.flag & (int)node2.flag & 4) != 0)
                {
                    if (((int)runtimeWorkSprite.flag & 4) != 0)
                    {
                        work2.flag |= 4U;
                    }
                    else
                    {
                        work2.flag &= 4294967291U;
                    }
                }
                if (((int)node1.flag & (int)node2.flag & 131072) != 0 && (((int)runtimeWorkSprite.flag ^ (int)work2.flag) & 8) != 0)
                {
                    work2.flag ^= 8U;
                    work2.set_st(work2.st.z, work2.st.y, work2.st.x, work2.st.w);
                }
                if (((int)node1.flag & (int)node2.flag & 262144) != 0 && (((int)runtimeWorkSprite.flag ^ (int)work2.flag) & 16) != 0)
                {
                    work2.flag ^= 16U;
                    work2.set_st(work2.st.x, work2.st.w, work2.st.z, work2.st.y);
                    break;
                }
                break;

            case 514:
                AppMain.AMS_AME_RUNTIME_WORK_LINE ameRuntimeWorkLine = (AppMain.AMS_AME_RUNTIME_WORK_LINE)work;
                AppMain.AMS_AME_RUNTIME_WORK_LINE work3 = (AppMain.AMS_AME_RUNTIME_WORK_LINE)amsAmeCreateParam.work;
                if (((int)node1.flag & (int)node2.flag & 131072) != 0 && (((int)ameRuntimeWorkLine.flag ^ (int)work3.flag) & 8) != 0)
                {
                    work3.flag ^= 8U;
                    work3.set_st(work3.st.z, work3.st.y, work3.st.x, work3.st.w);
                }
                if (((int)node1.flag & (int)node2.flag & 262144) != 0 && (((int)ameRuntimeWorkLine.flag ^ (int)work3.flag) & 16) != 0)
                {
                    work3.flag ^= 16U;
                    work3.set_st(work3.st.x, work3.st.w, work3.st.z, work3.st.y);
                    break;
                }
                break;

            case 515:
                AppMain.AMS_AME_RUNTIME_WORK_PLANE runtimeWorkPlane = (AppMain.AMS_AME_RUNTIME_WORK_PLANE)work;
                AppMain.AMS_AME_RUNTIME_WORK_PLANE work4            = (AppMain.AMS_AME_RUNTIME_WORK_PLANE)amsAmeCreateParam.work;
                if (((int)node1.flag & (int)node2.flag & 131072) != 0 && (((int)runtimeWorkPlane.flag ^ (int)work4.flag) & 8) != 0)
                {
                    work4.flag ^= 8U;
                    work4.set_st(work4.st.z, work4.st.y, work4.st.x, work4.st.w);
                }
                if (((int)node1.flag & (int)node2.flag & 262144) != 0 && (((int)runtimeWorkPlane.flag ^ (int)work4.flag) & 16) != 0)
                {
                    work4.flag ^= 16U;
                    work4.set_st(work4.st.x, work4.st.w, work4.st.z, work4.st.y);
                    break;
                }
                break;
            }
        }
        AppMain.GlobalPool <AppMain.AMS_AME_CREATE_PARAM> .Release(amsAmeCreateParam);

        //AppMain.GlobalPool<AppMain.NNS_VECTOR4D>.Release(pVec);
    }
 public AMS_AME_RUNTIME_WORK_DIRECTIONAL(AppMain.AMS_AME_RUNTIME_WORK rtm_work)
 {
     this.rtm_work_ = rtm_work;
 }
 public AMS_AME_RUNTIME_WORK_SURFACE(AppMain.AMS_AME_RUNTIME_WORK rtm_work)
 {
     this.rtm_work_ = rtm_work;
 }
Example #21
0
 public AMS_AME_RUNTIME_WORK_OMNI(AppMain.AMS_AME_RUNTIME_WORK rtm_work)
 {
     this.rtm_work_ = rtm_work;
 }
Example #22
0
    public static void amEffectUpdate(AppMain.AMS_AME_ECB ecb)
    {
        if (ecb.entry_num <= 0)
        {
            return;
        }
        if (ecb.skip_update != 0)
        {
            ecb.skip_update = 0;
        }
        for (AppMain.AMS_AME_ENTRY amsAmeEntry = ecb.entry_head; amsAmeEntry != null; amsAmeEntry = (AppMain.AMS_AME_ENTRY)amsAmeEntry.next)
        {
            AppMain.AMS_AME_RUNTIME runtime = amsAmeEntry.runtime;
            AppMain.AMS_AME_NODE    node1   = runtime.node;
            int num1 = AppMain.AMD_AME_NODE_TYPE(node1);
            if ((runtime.state & 16384) != 0 && (int)runtime.work_num + (int)runtime.active_num == 0)
            {
                if (runtime.spawn_runtime != null)
                {
                    runtime.spawn_runtime.state |= 16384;
                }
                runtime.state |= 32768;
            }
            else
            {
                switch (num1 & 65280)
                {
                case 256:
                    if (runtime.work != null)
                    {
                        AppMain.AmeDelegateFunc ameDelegateFunc = AppMain._am_emitter_func[((num1 & (int)byte.MaxValue) << 2) + 1];
                        if (runtime.work != null)
                        {
                            if (ameDelegateFunc((object)runtime) != 0)
                            {
                                runtime.state |= 32768;
                                AppMain.AMS_AME_LIST next = runtime.child_head.next;
                                for (AppMain.AMS_AME_LIST childTail = runtime.child_tail; next != childTail; next = next.next)
                                {
                                    ((AppMain.AMS_AME_RUNTIME)next).state |= 16384;
                                }
                                if (runtime.parent_runtime != null)
                                {
                                    AppMain.amEffectDisconnectLink((AppMain.AMS_AME_LIST)runtime);
                                    --runtime.parent_runtime.work_num;
                                    continue;
                                }
                                continue;
                            }
                            for (AppMain.AMS_AME_NODE node2 = node1.child; node2 != null; node2 = node2.sibling)
                            {
                                if (AppMain.AMD_AME_IS_FIELD(node2))
                                {
                                    AppMain._am_field_func[AppMain.AMD_AME_NODE_TYPE(node2) & (int)byte.MaxValue](runtime.ecb, node2, runtime.work);
                                }
                            }
                            continue;
                        }
                        continue;
                    }
                    continue;

                case 512:
                    if (runtime.work_num != (short)0)
                    {
                        AppMain.AMS_AME_RUNTIME_WORK next     = (AppMain.AMS_AME_RUNTIME_WORK)runtime.work_head.next;
                        AppMain.AMS_AME_RUNTIME_WORK workTail = (AppMain.AMS_AME_RUNTIME_WORK)runtime.work_tail;
                        while (next != workTail)
                        {
                            AppMain.AMS_AME_RUNTIME_WORK amsAmeRuntimeWork = next;
                            next = (AppMain.AMS_AME_RUNTIME_WORK)next.next;
                            amsAmeRuntimeWork.time += AppMain._am_unit_frame;
                            if ((double)amsAmeRuntimeWork.time > 0.0)
                            {
                                amsAmeRuntimeWork.time -= AppMain._am_unit_frame;
                                AppMain.amEffectDisconnectLink((AppMain.AMS_AME_LIST)amsAmeRuntimeWork);
                                AppMain._amConnectLinkToTail(runtime.active_tail, (AppMain.AMS_AME_LIST)amsAmeRuntimeWork);
                                --runtime.work_num;
                                ++runtime.active_num;
                            }
                        }
                    }
                    int num2 = AppMain._am_particle_func[((num1 & (int)byte.MaxValue) << 2) + 1]((object)runtime);
                    AppMain.AMS_AME_RUNTIME_WORK next1      = (AppMain.AMS_AME_RUNTIME_WORK)runtime.active_head.next;
                    AppMain.AMS_AME_LIST         activeTail = runtime.active_tail;
                    AppMain.AMS_AME_RUNTIME_WORK work;
                    for (AppMain.AMS_AME_LIST next2 = runtime.active_head.next; next2 != activeTail; next2 = work.next)
                    {
                        work = (AppMain.AMS_AME_RUNTIME_WORK)next2;
                        for (AppMain.AMS_AME_NODE node2 = node1.child; node2 != null; node2 = node2.sibling)
                        {
                            if (AppMain.AMD_AME_IS_FIELD(node2))
                            {
                                AppMain._am_field_func[AppMain.AMD_AME_NODE_TYPE(node2) & (int)byte.MaxValue](runtime.ecb, node2, work);
                            }
                        }
                    }
                    continue;

                default:
                    continue;
                }
            }
        }
        for (AppMain.AMS_AME_ENTRY entry = ecb.entry_head; entry != null; entry = (AppMain.AMS_AME_ENTRY)entry.next)
        {
            if ((entry.runtime.state & 32768) != 0)
            {
                AppMain._amFreeRuntime(entry.runtime);
                AppMain._amDelEntry(ecb, entry);
            }
        }
        if (ecb.entry_num != 0)
        {
            return;
        }
        AppMain.amEffectDelete(ecb);
    }