Exemplo n.º 1
0
 private void amEffectTranslate(AppMain.AMS_AME_ECB ecb, AppMain.NNS_VECTOR4D translate)
 {
     AppMain.amVectorAdd(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, translate);
             }
             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.amVectorAdd(((AppMain.AMS_AME_RUNTIME_WORK)next1).position, translate);
                 }
                 AppMain.AMS_AME_LIST next2 = runtime.active_head.next;
                 for (AppMain.AMS_AME_LIST activeTail = runtime.active_tail; next2 != activeTail; next2 = next2.next)
                 {
                     AppMain.amVectorAdd(((AppMain.AMS_AME_RUNTIME_WORK)next2).position, translate);
                 }
             }
         }
     }
 }
Exemplo n.º 2
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);
    }
Exemplo n.º 3
0
 public static void _amDelEntry(AppMain.AMS_AME_ECB ecb, AppMain.AMS_AME_ENTRY entry)
 {
     if (entry.prev == null)
     {
         ecb.entry_head = (AppMain.AMS_AME_ENTRY)entry.next;
     }
     else
     {
         entry.prev.next = entry.next;
     }
     if (entry.next == null)
     {
         ecb.entry_tail = (AppMain.AMS_AME_ENTRY)entry.prev;
     }
     else
     {
         entry.next.prev = entry.prev;
     }
     AppMain._am_entry_ref[AppMain._am_entry_free] = entry;
     ++AppMain._am_entry_free;
     if (AppMain._am_entry_free >= 512)
     {
         AppMain._am_entry_free = 0;
     }
     --ecb.entry_num;
 }
Exemplo n.º 4
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);
                 }
             }
         }
     }
 }
Exemplo n.º 5
0
    private void amEffectUpdateGroup(int attr, int flag)
    {
        uint num1 = (uint)(attr & -65536);
        uint num2 = (uint)(attr & (int)ushort.MaxValue);

        if (num1 == 0U)
        {
            num1 = 4294901760U;
        }
        switch (flag)
        {
        case 0:
            for (AppMain.AMS_AME_ECB next = (AppMain.AMS_AME_ECB)AppMain._am_ecb_head.next; next != AppMain._am_ecb_tail; next = (AppMain.AMS_AME_ECB)next.next)
            {
                if (((long)next.attribute & (long)num1) != 0L && ((long)next.attribute & (long)num2) != 0L)
                {
                    AppMain.amEffectUpdate(next);
                }
            }
            break;

        case 1:
            for (AppMain.AMS_AME_ECB next = (AppMain.AMS_AME_ECB)AppMain._am_ecb_head.next; next != AppMain._am_ecb_tail; next = (AppMain.AMS_AME_ECB)next.next)
            {
                if (((long)next.attribute & (long)num1 | (long)next.attribute & (long)num2) == (long)attr)
                {
                    AppMain.amEffectUpdate(next);
                }
            }
            break;
        }
    }
Exemplo n.º 6
0
 public static void amEffectKill(AppMain.AMS_AME_ECB ecb)
 {
     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 ((AppMain.AMD_AME_NODE_TYPE(runtime.node) & 65280) == 256 && (runtime.state & 32768) == 0)
         {
             if (runtime.spawn_runtime != null)
             {
                 runtime.spawn_runtime.state |= 16384;
             }
             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;
             }
         }
     }
 }
Exemplo n.º 7
0
 public void Clear()
 {
     this.ecb               = (AppMain.AMS_AME_ECB)null;
     this.texlist           = (AppMain.NNS_TEXLIST)null;
     this.texlistbuf        = (object)null;
     this.texlist_data_work = (AppMain.OBS_DATA_WORK)null;
     this._object           = (AppMain.NNS_OBJECT)null;
     this.object_data_work  = (AppMain.OBS_DATA_WORK)null;
     this.eff               = (object)null;
     this.eff_data_work     = (AppMain.OBS_DATA_WORK)null;
     this.ambtex            = (object)null;
     this.ambtex_data_work  = (AppMain.OBS_DATA_WORK)null;
     this.model             = (object)null;
     this.model_data_work   = (AppMain.OBS_DATA_WORK)null;
     this.flag              = 0U;
     this.command_state     = 0U;
     this.disp_rot.Clear();
     this.disp_ofst.Clear();
     this.dup_draw_ofst.Clear();
     this.user_dir_quat.Clear();
     this.user_attr       = 0;
     this.tex_reg_index   = 0;
     this.model_reg_index = 0;
     this.speed           = 0.0f;
 }
Exemplo n.º 8
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);
 }
Exemplo n.º 9
0
 public static void amEffectDraw(AppMain.AMS_AME_ECB ecb, AppMain.NNS_TEXLIST texlist, uint state)
 {
     ecb.drawState = state;
     if (AppMain._am_enable_draw == 0 || ecb.entry_num <= 0)
     {
         return;
     }
     if ((double)ecb.bounding.radius > 0.0)
     {
         AppMain.NNS_VECTOR4D pPos = new AppMain.NNS_VECTOR4D();
         if (AppMain._amEffectFrustumCulling(pPos, AppMain._am_view_frustum, ecb.bounding) == 0)
         {
             return;
         }
         //AppMain.GlobalPool<AppMain.NNS_VECTOR4D>.Release(pPos);
     }
     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;
         runtime.texlist = texlist;
         if (AppMain.AMD_AME_SUPER_CLASS_ID(runtime.node) == 512 && runtime.active_num != (short)0)
         {
             int num = AppMain._am_particle_func[(AppMain.AMD_AME_CLASS_ID(runtime.node) << 2) + 2]((object)runtime);
         }
     }
 }
Exemplo n.º 10
0
 public static void amEffectSetObject(
     AppMain.AMS_AME_ECB ecb,
     AppMain.NNS_OBJECT object_,
     int state)
 {
     ecb.pObj         = object_;
     ecb.drawObjState = (uint)state;
 }
Exemplo n.º 11
0
 public static void amEffectExecute()
 {
     for (AppMain.AMS_AME_ECB next = (AppMain.AMS_AME_ECB)AppMain._am_ecb_head.next; next != AppMain._am_ecb_tail; next = (AppMain.AMS_AME_ECB)next.next)
     {
         if (next.entry_num < 0)
         {
             AppMain._amEffectFinalize(next);
         }
     }
 }
Exemplo n.º 12
0
    private static AppMain.AMS_AME_ECB _amEffectCreate(
        AppMain.AMS_AME_HEADER header,
        int attribute,
        int priority)
    {
        AppMain.AMS_AME_ECB amsAmeEcb = AppMain._am_ecb_ref[AppMain._am_ecb_alloc];
        ++AppMain._am_ecb_alloc;
        if (AppMain._am_ecb_alloc >= 128)
        {
            AppMain._am_ecb_alloc = 0;
        }
        amsAmeEcb.Clear();
        amsAmeEcb.attribute    = attribute;
        amsAmeEcb.priority     = priority;
        amsAmeEcb.transparency = 256;
        amsAmeEcb.size_rate    = 1f;
        AppMain.amVectorInit(ref amsAmeEcb.translate);
        AppMain.amQuatInit(ref amsAmeEcb.rotate);
        amsAmeEcb.bounding.Assign(header.bounding);
        AppMain.AMS_AME_ECB next = (AppMain.AMS_AME_ECB)AppMain._am_ecb_head.next;
        while (next != AppMain._am_ecb_tail && next.priority <= priority)
        {
            next = (AppMain.AMS_AME_ECB)next.next;
        }
        next.prev.next = (AppMain.AMS_AME_LIST)amsAmeEcb;
        amsAmeEcb.prev = next.prev;
        next.prev      = (AppMain.AMS_AME_LIST)amsAmeEcb;
        amsAmeEcb.next = (AppMain.AMS_AME_LIST)next;
        AppMain.AMS_AME_CREATE_PARAM amsAmeCreateParam = new AppMain.AMS_AME_CREATE_PARAM();
        AppMain.NNS_VECTOR4D         amEffectCreateVec = AppMain._amEffectCreate_vec;
        AppMain.AMS_AME_NODE         sibling           = header.node[0];
        AppMain.amVectorInit(ref amEffectCreateVec);
        for (; sibling != null; sibling = sibling.sibling)
        {
            amsAmeCreateParam.ecb             = amsAmeEcb;
            amsAmeCreateParam.runtime         = (AppMain.AMS_AME_RUNTIME)null;
            amsAmeCreateParam.node            = sibling;
            amsAmeCreateParam.position        = amEffectCreateVec;
            amsAmeCreateParam.velocity        = amEffectCreateVec;
            amsAmeCreateParam.parent_position = amEffectCreateVec;
            amsAmeCreateParam.parent_velocity = amEffectCreateVec;
            switch (AppMain.AMD_AME_SUPER_CLASS_ID(sibling))
            {
            case 256:
                AppMain._amCreateRuntimeEmitter(amsAmeCreateParam).state |= 8192;
                break;

            case 512:
                AppMain._amCreateRuntimeParticle(amsAmeCreateParam).state |= 8192;
                break;
            }
        }
        amsAmeEcb.skip_update = 1;
        return(amsAmeEcb);
    }
Exemplo n.º 13
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;
 }
Exemplo n.º 14
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;
                     }
                 }
             }
         }
     }
 }
Exemplo n.º 15
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);
    }
Exemplo n.º 16
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);
    }
Exemplo n.º 17
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);
    }
Exemplo n.º 18
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);
    }
Exemplo n.º 19
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;
 }
Exemplo n.º 20
0
 public static void _amAddEntry(AppMain.AMS_AME_ECB ecb, AppMain.AMS_AME_RUNTIME runtime)
 {
     AppMain.AMS_AME_ENTRY amsAmeEntry = AppMain._am_entry_ref[AppMain._am_entry_alloc];
     ++AppMain._am_entry_alloc;
     if (AppMain._am_entry_alloc >= 512)
     {
         AppMain._am_entry_alloc = 0;
     }
     amsAmeEntry.runtime = runtime;
     if (ecb.entry_head == null)
     {
         ecb.entry_head   = amsAmeEntry;
         amsAmeEntry.prev = (AppMain.AMS_AME_LIST)null;
     }
     if (ecb.entry_tail != null)
     {
         amsAmeEntry.prev    = (AppMain.AMS_AME_LIST)ecb.entry_tail;
         ecb.entry_tail.next = (AppMain.AMS_AME_LIST)amsAmeEntry;
     }
     ecb.entry_tail   = amsAmeEntry;
     amsAmeEntry.next = (AppMain.AMS_AME_LIST)null;
     ++ecb.entry_num;
 }
Exemplo n.º 21
0
 public static void _amEffectFinalize(AppMain.AMS_AME_ECB ecb)
 {
     for (AppMain.AMS_AME_ENTRY entry = ecb.entry_head; entry != null; entry = (AppMain.AMS_AME_ENTRY)entry.next)
     {
         AppMain.AMS_AME_RUNTIME runtime = entry.runtime;
         if (AppMain.AMD_AME_SUPER_CLASS_ID(runtime.node) == 256 && runtime.parent_runtime != null)
         {
             AppMain.amEffectDisconnectLink((AppMain.AMS_AME_LIST)runtime);
             --runtime.parent_runtime.work_num;
         }
         AppMain._amFreeRuntime(entry.runtime);
         AppMain._amDelEntry(ecb, entry);
     }
     ecb.prev.next = ecb.next;
     ecb.next.prev = ecb.prev;
     AppMain._am_ecb_ref[AppMain._am_ecb_free] = ecb;
     ++AppMain._am_ecb_free;
     if (AppMain._am_ecb_free < 128)
     {
         return;
     }
     AppMain._am_ecb_free = 0;
 }
Exemplo n.º 22
0
 public static AppMain.AMS_AME_RUNTIME _amCreateRuntimeGroup(
     AppMain.AMS_AME_ECB ecb,
     AppMain.AMS_AME_NODE node)
 {
     AppMain.AMS_AME_RUNTIME runtime = AppMain._amAllocRuntime();
     runtime.ecb              = ecb;
     runtime.node             = node;
     runtime.child_head.next  = runtime.child_tail;
     runtime.child_tail.prev  = runtime.child_head;
     runtime.work_head.next   = runtime.work_tail;
     runtime.work_tail.prev   = runtime.work_head;
     runtime.active_head.next = runtime.active_tail;
     runtime.active_tail.prev = runtime.active_head;
     for (AppMain.AMS_AME_NODE node1 = node.child; node1 != null; node1 = node1.sibling)
     {
         if (AppMain.AMD_AME_IS_PARTICLE(node1))
         {
             runtime.spawn_runtime = AppMain._amCreateRuntimeGroup(ecb, node1);
             break;
         }
     }
     AppMain._amAddEntry(ecb, runtime);
     return(runtime);
 }
Exemplo n.º 23
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);
                     }
                 }
             }
         }
     }
 }
Exemplo n.º 24
0
    private void amEffectDrawGroup(AppMain.NNS_TEXLIST texlist, int attr, uint state, int flag)
    {
        if (AppMain._am_enable_draw == 0)
        {
            return;
        }
        uint num1 = (uint)(attr & -65536);
        uint num2 = (uint)(attr & (int)ushort.MaxValue);

        if (num1 == 0U)
        {
            num1 = 4294901760U;
        }
        switch (flag)
        {
        case 0:
            for (AppMain.AMS_AME_ECB next = (AppMain.AMS_AME_ECB)AppMain._am_ecb_head.next; next != AppMain._am_ecb_tail; next = (AppMain.AMS_AME_ECB)next.next)
            {
                if (0L != ((long)next.attribute & (long)num1) && 0L != ((long)next.attribute & (long)num2))
                {
                    AppMain.amEffectDraw(next, texlist, state);
                }
            }
            break;

        case 1:
            for (AppMain.AMS_AME_ECB next = (AppMain.AMS_AME_ECB)AppMain._am_ecb_head.next; next != AppMain._am_ecb_tail; next = (AppMain.AMS_AME_ECB)next.next)
            {
                if (((long)next.attribute & (long)num1 | (long)next.attribute & (long)num2) == (long)attr)
                {
                    AppMain.amEffectDraw(next, texlist, state);
                }
            }
            break;
        }
    }
Exemplo n.º 25
0
 public static int amEffectIsDelete(AppMain.AMS_AME_ECB ecb)
 {
     return(ecb.entry_num >= 0 ? 0 : 1);
 }
Exemplo n.º 26
0
 public static void amEffectDelete(AppMain.AMS_AME_ECB ecb)
 {
     ecb.entry_num = -1;
 }
Exemplo n.º 27
0
 private void amEffectRotate(AppMain.AMS_AME_ECB ecb, int x, int y, int z)
 {
     AppMain.NNS_QUATERNION nnsQuaternion = new AppMain.NNS_QUATERNION();
     AppMain.amQuatEulerToQuatXYZ(ref nnsQuaternion, x, y, z);
     this.amEffectRotate(ecb, ref nnsQuaternion);
 }
Exemplo n.º 28
0
 private void amEffectSetTransparency(AppMain.AMS_AME_ECB ecb, float t)
 {
     ecb.transparency = (int)((double)t * 256.0);
 }
Exemplo n.º 29
0
 public static void amEffectSetRotate(AppMain.AMS_AME_ECB ecb, ref AppMain.NNS_QUATERNION q)
 {
     AppMain.amEffectSetRotate(ecb, ref q, 0);
 }
Exemplo n.º 30
0
 public static void amEffectSetSizeRate(AppMain.AMS_AME_ECB ecb, float t)
 {
     ecb.size_rate = t;
 }