示例#1
0
    // Token: 0x060018E8 RID: 6376 RVA: 0x000E2E04 File Offset: 0x000E1004
    private static void aoWinSysMakeCommandA(uint state, AppMain.NNS_TEXLIST texlist, uint tex_id, float x, float y, float w, float h, float z)
    {
        AppMain.AMS_PARAM_DRAW_PRIMITIVE ams_PARAM_DRAW_PRIMITIVE = GlobalPool <AppMain.AMS_PARAM_DRAW_PRIMITIVE> .Alloc();

        ams_PARAM_DRAW_PRIMITIVE.mtx      = null;
        ams_PARAM_DRAW_PRIMITIVE.vtxPCT3D = null;
        ams_PARAM_DRAW_PRIMITIVE.format3D = 4;
        ams_PARAM_DRAW_PRIMITIVE.type     = 1;
        ams_PARAM_DRAW_PRIMITIVE.count    = 8;
        ams_PARAM_DRAW_PRIMITIVE.texlist  = texlist;
        ams_PARAM_DRAW_PRIMITIVE.texId    = ( int )tex_id;
        ams_PARAM_DRAW_PRIMITIVE.ablend   = 1;
        ams_PARAM_DRAW_PRIMITIVE.sortZ    = z;
        ams_PARAM_DRAW_PRIMITIVE.aTest    = 0;
        ams_PARAM_DRAW_PRIMITIVE.zMask    = 1;
        ams_PARAM_DRAW_PRIMITIVE.zTest    = 0;
        ams_PARAM_DRAW_PRIMITIVE.noSort   = 1;
        ams_PARAM_DRAW_PRIMITIVE.uwrap    = 1;
        ams_PARAM_DRAW_PRIMITIVE.vwrap    = 1;
        AppMain.NNS_PRIM3D_PCT_ARRAY nns_PRIM3D_PCT_ARRAY = AppMain.amDrawAlloc_NNS_PRIM3D_PCT(8);
        AppMain.aoWinSysMakeVertex00A(nns_PRIM3D_PCT_ARRAY, x, y, w, h);
        ams_PARAM_DRAW_PRIMITIVE.vtxPCT3D = nns_PRIM3D_PCT_ARRAY;
        AppMain.amDrawPrimitive3D(state, ams_PARAM_DRAW_PRIMITIVE);
        nns_PRIM3D_PCT_ARRAY = AppMain.amDrawAlloc_NNS_PRIM3D_PCT(8);
        AppMain.aoWinSysMakeVertex01A(nns_PRIM3D_PCT_ARRAY, x, y, w, h);
        ams_PARAM_DRAW_PRIMITIVE.vtxPCT3D = nns_PRIM3D_PCT_ARRAY;
        AppMain.amDrawPrimitive3D(state, ams_PARAM_DRAW_PRIMITIVE);
        nns_PRIM3D_PCT_ARRAY = AppMain.amDrawAlloc_NNS_PRIM3D_PCT(8);
        AppMain.aoWinSysMakeVertex02A(nns_PRIM3D_PCT_ARRAY, x, y, w, h);
        ams_PARAM_DRAW_PRIMITIVE.vtxPCT3D = nns_PRIM3D_PCT_ARRAY;
        AppMain.amDrawPrimitive3D(state, ams_PARAM_DRAW_PRIMITIVE);
        GlobalPool <AppMain.AMS_PARAM_DRAW_PRIMITIVE> .Release(ams_PARAM_DRAW_PRIMITIVE);
    }
示例#2
0
    private static void aoWinSysMakeCommandA(
        uint state,
        AppMain.NNS_TEXLIST texlist,
        uint tex_id,
        float x,
        float y,
        float w,
        float h,
        float z)
    {
        AppMain.AMS_PARAM_DRAW_PRIMITIVE setParam = AppMain.GlobalPool <AppMain.AMS_PARAM_DRAW_PRIMITIVE> .Alloc();

        setParam.mtx      = (AppMain.NNS_MATRIX)null;
        setParam.vtxPCT3D = (AppMain.NNS_PRIM3D_PCT_ARRAY)null;
        setParam.format3D = 4;
        setParam.type     = 1;
        setParam.count    = 8;
        setParam.texlist  = texlist;
        setParam.texId    = (int)tex_id;
        setParam.ablend   = 1;
        setParam.sortZ    = z;
        setParam.aTest    = (short)0;
        setParam.zMask    = (short)1;
        setParam.zTest    = (short)0;
        setParam.noSort   = (short)1;
        setParam.uwrap    = 1;
        setParam.vwrap    = 1;
        AppMain.NNS_PRIM3D_PCT_ARRAY array1 = AppMain.amDrawAlloc_NNS_PRIM3D_PCT(8);
        AppMain.aoWinSysMakeVertex00A(array1, x, y, w, h);
        setParam.vtxPCT3D = array1;
        AppMain.amDrawPrimitive3D(state, setParam);
        AppMain.NNS_PRIM3D_PCT_ARRAY array2 = AppMain.amDrawAlloc_NNS_PRIM3D_PCT(8);
        AppMain.aoWinSysMakeVertex01A(array2, x, y, w, h);
        setParam.vtxPCT3D = array2;
        AppMain.amDrawPrimitive3D(state, setParam);
        AppMain.NNS_PRIM3D_PCT_ARRAY array3 = AppMain.amDrawAlloc_NNS_PRIM3D_PCT(8);
        AppMain.aoWinSysMakeVertex02A(array3, x, y, w, h);
        setParam.vtxPCT3D = array3;
        AppMain.amDrawPrimitive3D(state, setParam);
        AppMain.GlobalPool <AppMain.AMS_PARAM_DRAW_PRIMITIVE> .Release(setParam);
    }
示例#3
0
    private static void GmWaterSurfaceDrawNoWaterField(
        float left,
        float top,
        float right,
        float bottom)
    {
        AppMain.AMS_PARAM_DRAW_PRIMITIVE setParam = AppMain.GlobalPool <AppMain.AMS_PARAM_DRAW_PRIMITIVE> .Alloc();

        setParam.aTest  = (short)0;
        setParam.zMask  = (short)0;
        setParam.zTest  = (short)1;
        setParam.ablend = 1;
        setParam.noSort = (short)1;
        AppMain.NNS_PRIM3D_PC[] nnsPriM3DPcArray = AppMain.amDrawAlloc_NNS_PRIM3D_PC(6);
        float f32 = AppMain.FX_FX32_TO_F32(1310720);

        nnsPriM3DPcArray[0].Pos.Assign(left, top, f32);
        nnsPriM3DPcArray[1].Pos.Assign(right, top, f32);
        nnsPriM3DPcArray[2].Pos.Assign(left, bottom, f32);
        nnsPriM3DPcArray[5].Pos.Assign(right, bottom, f32);
        uint num = AppMain.AMD_RGBA8888(byte.MaxValue, byte.MaxValue, byte.MaxValue, (byte)0);

        nnsPriM3DPcArray[0].Col = num;
        nnsPriM3DPcArray[1].Col = num;
        nnsPriM3DPcArray[2].Col = num;
        nnsPriM3DPcArray[5].Col = num;
        nnsPriM3DPcArray[3]     = nnsPriM3DPcArray[1];
        nnsPriM3DPcArray[4]     = nnsPriM3DPcArray[2];
        setParam.format3D       = 2;
        setParam.type           = 0;
        setParam.vtxPC3D        = nnsPriM3DPcArray;
        setParam.texlist        = (AppMain.NNS_TEXLIST)null;
        setParam.texId          = 0;
        setParam.count          = 6;
        setParam.sortZ          = -1f;
        AppMain.gmWaterSurfaceMatrixPush(9U);
        AppMain.amDrawPrimitive3D(9U, setParam);
        AppMain.gmWaterSurfaceMatrixPop(9U);
        AppMain.GlobalPool <AppMain.AMS_PARAM_DRAW_PRIMITIVE> .Release(setParam);
    }
示例#4
0
    private static int _amEffectSetDrawMode(
        AppMain.AMS_AME_RUNTIME runtime,
        AppMain.AMS_PARAM_DRAW_PRIMITIVE param,
        int NodeBlend)
    {
        AppMain.AMS_AME_NODE node = runtime.node;
        int num = 0;

        param.ablend = num;
        param.aTest  = ((int)node.flag & 2) == 0 ? (short)0 : (short)1;
        param.zMask  = ((int)node.flag & 33554432) == 0 ? (short)0 : (short)1;
        param.zTest  = ((int)node.flag & 16777216) != 0 ? (short)1 : (short)0;
        if (((int)node.flag & 1) != 0)
        {
            num          = 1;
            param.ablend = num;
            switch (NodeBlend)
            {
            case 50:
                param.bldSrc  = 770;
                param.bldDst  = 771;
                param.bldMode = 32774;
                break;

            case 162:
                param.bldSrc  = 770;
                param.bldDst  = 1;
                param.bldMode = 32774;
                break;

            case 674:
                param.bldSrc  = 770;
                param.bldDst  = 1;
                param.bldMode = 32779;
                break;
            }
        }
        return(num);
    }
示例#5
0
 public void Assign(AppMain.AMS_PARAM_DRAW_PRIMITIVE other)
 {
     this.mtx      = other.mtx;
     this.type     = other.type;
     this.vtxPCT3D = other.vtxPCT3D;
     this.vtxPC3D  = other.vtxPC3D;
     this.vtxPCT2D = other.vtxPCT2D;
     this.vtxPC2D  = other.vtxPC2D;
     this.formatXD = other.formatXD;
     this.count    = other.count;
     this.texlist  = other.texlist;
     this.texId    = other.texId;
     this.ablend   = other.ablend;
     this.sortZ    = other.sortZ;
     this.bldSrc   = other.bldSrc;
     this.bldDst   = other.bldDst;
     this.bldMode  = other.bldMode;
     this.aTest    = other.aTest;
     this.zMask    = other.zMask;
     this.zTest    = other.zTest;
     this.noSort   = other.noSort;
     this.uwrap    = other.vwrap;
     this.vwrap    = other.vwrap;
 }
示例#6
0
    // Token: 0x06001175 RID: 4469 RVA: 0x0009915C File Offset: 0x0009735C
    private static void GmWaterSurfaceDrawNoWaterField(float left, float top, float right, float bottom)
    {
        AppMain.AMS_PARAM_DRAW_PRIMITIVE ams_PARAM_DRAW_PRIMITIVE = GlobalPool <AppMain.AMS_PARAM_DRAW_PRIMITIVE> .Alloc();

        ams_PARAM_DRAW_PRIMITIVE.aTest  = 0;
        ams_PARAM_DRAW_PRIMITIVE.zMask  = 0;
        ams_PARAM_DRAW_PRIMITIVE.zTest  = 1;
        ams_PARAM_DRAW_PRIMITIVE.ablend = 1;
        ams_PARAM_DRAW_PRIMITIVE.noSort = 1;
        AppMain.NNS_PRIM3D_PC[] array = AppMain.amDrawAlloc_NNS_PRIM3D_PC(6);
        float z = AppMain.FX_FX32_TO_F32(1310720);

        array[0].Pos.Assign(left, top, z);
        array[1].Pos.Assign(right, top, z);
        array[2].Pos.Assign(left, bottom, z);
        array[5].Pos.Assign(right, bottom, z);
        uint col = AppMain.AMD_RGBA8888(byte.MaxValue, byte.MaxValue, byte.MaxValue, 0);

        array[0].Col = col;
        array[1].Col = col;
        array[2].Col = col;
        array[5].Col = col;
        array[3]     = array[1];
        array[4]     = array[2];
        ams_PARAM_DRAW_PRIMITIVE.format3D = 2;
        ams_PARAM_DRAW_PRIMITIVE.type     = 0;
        ams_PARAM_DRAW_PRIMITIVE.vtxPC3D  = array;
        ams_PARAM_DRAW_PRIMITIVE.texlist  = null;
        ams_PARAM_DRAW_PRIMITIVE.texId    = 0;
        ams_PARAM_DRAW_PRIMITIVE.count    = 6;
        ams_PARAM_DRAW_PRIMITIVE.sortZ    = -1f;
        AppMain.gmWaterSurfaceMatrixPush(9U);
        AppMain.amDrawPrimitive3D(9U, ams_PARAM_DRAW_PRIMITIVE);
        AppMain.gmWaterSurfaceMatrixPop(9U);
        GlobalPool <AppMain.AMS_PARAM_DRAW_PRIMITIVE> .Release(ams_PARAM_DRAW_PRIMITIVE);
    }
    // Token: 0x06001161 RID: 4449 RVA: 0x00098858 File Offset: 0x00096A58
    private static void IzFadeSetWork(AppMain.IZS_FADE_WORK fade_work, ushort dt_prio, uint draw_state, uint fade_set_type, byte start_col_r, byte start_col_g, byte start_col_b, byte start_col_a, byte end_col_r, byte end_col_g, byte end_col_b, byte end_col_a, float time, bool draw_start, bool conti_state)
    {
        AppMain.NNS_RGBA start_col = default(AppMain.NNS_RGBA);
        ushort           vtx_no    = 1;

        if (!conti_state)
        {
            fade_work.Clear();
            start_col.r = ( float )start_col_r;
            start_col.g = ( float )start_col_g;
            start_col.b = ( float )start_col_b;
            start_col.a = ( float )start_col_a;
        }
        else if (fade_set_type == 1U)
        {
            start_col = fade_work.now_col;
            vtx_no    = fade_work.vtx_no;
        }
        else
        {
            start_col.r = ( float )start_col_r;
            start_col.g = ( float )start_col_g;
            start_col.b = ( float )start_col_b;
            start_col.a = ( float )start_col_a;
        }
        fade_work.count      = 0f;
        fade_work.start_col  = start_col;
        fade_work.end_col.r  = ( float )end_col_r;
        fade_work.end_col.g  = ( float )end_col_g;
        fade_work.end_col.b  = ( float )end_col_b;
        fade_work.end_col.a  = ( float )end_col_a;
        fade_work.now_col    = fade_work.start_col;
        fade_work.time       = time;
        fade_work.speed      = 1f;
        fade_work.dt_prio    = dt_prio;
        fade_work.draw_state = draw_state;
        fade_work.vtx_no     = vtx_no;
        AppMain.nnMakeUnitMatrix(fade_work.mtx);
        fade_work.flag &= 4294967294U;
        if (draw_start)
        {
            fade_work.flag |= 1U;
        }
        AppMain.AMS_PARAM_DRAW_PRIMITIVE prim_param = fade_work.prim_param;
        prim_param.vtxPC2D  = fade_work.vtx[( int )fade_work.vtx_no];
        prim_param.mtx      = fade_work.mtx;
        prim_param.format2D = 1;
        prim_param.type     = 1;
        prim_param.count    = 4;
        prim_param.texlist  = null;
        prim_param.texId    = -1;
        prim_param.ablend   = 1;
        prim_param.zOffset  = -1f;
        AppMain.amDrawGetPrimBlendParam(0, prim_param);
        prim_param.aTest = 0;
        prim_param.zMask = 1;
        prim_param.zTest = 0;
        for (int i = 0; i < 2; i++)
        {
            fade_work.vtx[i][0].Pos.x = 0f;
            fade_work.vtx[i][0].Pos.y = 0f;
            fade_work.vtx[i][1].Pos.x = 0f;
            fade_work.vtx[i][1].Pos.y = AppMain.AMD_SCREEN_HEIGHT;
            fade_work.vtx[i][2].Pos.x = AppMain.AMD_SCREEN_WIDTH;
            fade_work.vtx[i][2].Pos.y = 0f;
            fade_work.vtx[i][3].Pos.x = AppMain.AMD_SCREEN_WIDTH;
            fade_work.vtx[i][3].Pos.y = AppMain.AMD_SCREEN_HEIGHT;
        }
    }
示例#8
0
    public static void GmDecoGlareDraw(AppMain.OBS_OBJECT_WORK obj_work)
    {
        int userWork = (int)obj_work.user_work;

        if (userWork < 14)
        {
            return;
        }
        AppMain.GMS_DECOGLARE_PARAM gmsDecoglareParam;
        switch (userWork)
        {
        case 14:
        case 109:
            gmsDecoglareParam = AppMain._gm_decoGlare_param[0];
            break;

        case 15:
            gmsDecoglareParam = AppMain._gm_decoGlare_param[1];
            break;

        case 16:
        case 110:
            gmsDecoglareParam = AppMain._gm_decoGlare_param[2];
            break;

        case 54:
            gmsDecoglareParam = AppMain._gm_decoGlare_param[3];
            break;

        default:
            return;
        }
        if (!AppMain.amDrawIsRegistComplete(AppMain.pIF.regId) || AppMain.pIF.drawFlag != 1 || ((int)obj_work.disp_flag & 32) != 0)
        {
            return;
        }
        AppMain.VecFx32 vecFx32 = new AppMain.VecFx32(obj_work.pos);
        float           num1    = (float)(vecFx32.x >> 12);
        float           num2    = -(float)(vecFx32.y >> 12);
        float           Z       = 256f;

        AppMain.AMS_PARAM_DRAW_PRIMITIVE setParam = AppMain.GlobalPool <AppMain.AMS_PARAM_DRAW_PRIMITIVE> .Alloc();

        setParam.aTest  = (short)0;
        setParam.zMask  = (short)0;
        setParam.zTest  = (short)1;
        setParam.ablend = 1;
        switch (gmsDecoglareParam.ablend)
        {
        case 0:
            AppMain.amDrawGetPrimBlendParam(0, setParam);
            break;

        case 1:
            AppMain.amDrawGetPrimBlendParam(1, setParam);
            break;
        }
        AppMain.NNS_PRIM3D_PCT_ARRAY nnsPriM3DPctArray = AppMain.amDrawAlloc_NNS_PRIM3D_PCT(6);
        AppMain.NNS_PRIM3D_PCT[]     buffer            = nnsPriM3DPctArray.buffer;
        int   offset = nnsPriM3DPctArray.offset;
        float num3   = gmsDecoglareParam.size * 0.5f;
        float num4   = gmsDecoglareParam.size * 0.5f;
        float num5   = num1 + 10f;
        float num6   = num2 - 10f;

        buffer[offset].Pos.Assign(num5 - num3, num6 + num4, Z);
        buffer[offset + 1].Pos.Assign(num5 + num3, num6 + num4, Z);
        buffer[offset + 2].Pos.Assign(num5 - num3, num6 - num4, Z);
        buffer[offset + 5].Pos.Assign(num5 + num3, num6 - num4, Z);
        buffer[offset].Col       = gmsDecoglareParam.color;
        buffer[offset + 1].Col   = gmsDecoglareParam.color;
        buffer[offset + 2].Col   = gmsDecoglareParam.color;
        buffer[offset + 5].Col   = gmsDecoglareParam.color;
        buffer[offset].Tex.u     = 0.0f;
        buffer[offset].Tex.v     = 0.0f;
        buffer[offset + 1].Tex.u = 1f;
        buffer[offset + 1].Tex.v = 0.0f;
        buffer[offset + 2].Tex.u = 0.0f;
        buffer[offset + 2].Tex.v = 1f;
        buffer[offset + 5].Tex.u = 1f;
        buffer[offset + 5].Tex.v = 1f;
        buffer[offset + 3]       = buffer[offset + 1];
        buffer[offset + 4]       = buffer[offset + 2];
        setParam.format3D        = 4;
        setParam.type            = 0;
        setParam.vtxPCT3D        = nnsPriM3DPctArray;
        setParam.texlist         = AppMain.pIF.texlist;
        setParam.texId           = AppMain.pIF.texId;
        setParam.count           = 6;
        setParam.sortZ           = gmsDecoglareParam.sort_z;
        AppMain.amDrawPrimitive3D(4U, setParam);
        AppMain.GlobalPool <AppMain.AMS_PARAM_DRAW_PRIMITIVE> .Release(setParam);
    }
示例#9
0
    public static int _amDrawPlane(object r)
    {
        AppMain.AMS_AME_RUNTIME          runtime    = (AppMain.AMS_AME_RUNTIME)r;
        AppMain.AMS_AME_NODE_PLANE       node       = (AppMain.AMS_AME_NODE_PLANE)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.GlobalPool <AppMain.AMS_PARAM_DRAW_PRIMITIVE> .Alloc();

        int num1 = AppMain._amEffectSetDrawMode(runtime, setParam, node.blend);

        AppMain.SNNS_VECTOR4D pDst = new AppMain.SNNS_VECTOR4D();
        float zBias = node.z_bias;

        AppMain.amVectorSet(out pDst, zBias * AppMain._am_ef_worldViewMtx.M20, zBias * AppMain._am_ef_worldViewMtx.M21, zBias * AppMain._am_ef_worldViewMtx.M22);
        AppMain.SNNS_VECTOR snnsVector = 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 (; next != activeTail; next = next.next)
            {
                AppMain.AMS_AME_RUNTIME_WORK_PLANE runtimeWorkPlane = (AppMain.AMS_AME_RUNTIME_WORK_PLANE)(AppMain.AMS_AME_RUNTIME_WORK) next;
                AppMain.amMatrixPush();
                AppMain.NNS_MATRIX current = AppMain.amMatrixGetCurrent();
                float x = runtimeWorkPlane.size.x;
                float y = runtimeWorkPlane.size.y;
                AppMain.amVectorAdd(ref snnsVector, runtimeWorkPlane.position, ref pDst);
                AppMain.NNS_QUATERNION rotate = runtimeWorkPlane.rotate;
                AppMain.amQuatMultiMatrix(ref rotate, ref snnsVector);
                runtimeWorkPlane.rotate = rotate;
                num2 = AppMain.nnDistanceVector(ref snnsVector, AppMain._am_ef_camPos);
                buffer[offset].Pos.Assign(-x, y, 0.0f);
                buffer[offset + 1].Pos.Assign(x, y, 0.0f);
                buffer[offset + 2].Pos.Assign(-x, -y, 0.0f);
                buffer[offset + 5].Pos.Assign(x, -y, 0.0f);
                AppMain.nnTransformVector(ref buffer[offset].Pos, current, ref buffer[offset].Pos);
                AppMain.nnTransformVector(ref buffer[offset + 1].Pos, current, ref buffer[offset + 1].Pos);
                AppMain.nnTransformVector(ref buffer[offset + 2].Pos, current, ref buffer[offset + 2].Pos);
                AppMain.nnTransformVector(ref buffer[offset + 5].Pos, current, ref buffer[offset + 5].Pos);
                buffer[offset + 5].Col   = AppMain.AMD_RGBA8888(runtimeWorkPlane.color.r, runtimeWorkPlane.color.g, runtimeWorkPlane.color.b, runtimeWorkPlane.color.a);
                buffer[offset].Col       = buffer[offset + 1].Col = buffer[offset + 2].Col = buffer[offset + 5].Col;
                buffer[offset].Tex.u     = runtimeWorkPlane.st.x;
                buffer[offset].Tex.v     = runtimeWorkPlane.st.y;
                buffer[offset + 1].Tex.u = runtimeWorkPlane.st.z;
                buffer[offset + 1].Tex.v = runtimeWorkPlane.st.y;
                buffer[offset + 2].Tex.u = runtimeWorkPlane.st.x;
                buffer[offset + 2].Tex.v = runtimeWorkPlane.st.w;
                buffer[offset + 5].Tex.u = runtimeWorkPlane.st.z;
                buffer[offset + 5].Tex.v = runtimeWorkPlane.st.w;
                buffer[offset + 3]       = buffer[offset + 1];
                buffer[offset + 4]       = buffer[offset + 2];
                offset += 6;
                AppMain.amMatrixPop();
            }
            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 (; next != activeTail; next = next.next)
            {
                AppMain.AMS_AME_RUNTIME_WORK_PLANE runtimeWorkPlane = (AppMain.AMS_AME_RUNTIME_WORK_PLANE)(AppMain.AMS_AME_RUNTIME_WORK) next;
                AppMain.amMatrixPush();
                AppMain.NNS_MATRIX current = AppMain.amMatrixGetCurrent();
                float x = runtimeWorkPlane.size.x;
                float y = runtimeWorkPlane.size.y;
                AppMain.amVectorAdd(ref snnsVector, runtimeWorkPlane.position, ref pDst);
                AppMain.NNS_QUATERNION rotate = runtimeWorkPlane.rotate;
                AppMain.amQuatMultiMatrix(ref rotate, ref snnsVector);
                runtimeWorkPlane.rotate = rotate;
                num2 = AppMain.nnDistanceVector(ref snnsVector, AppMain._am_ef_camPos);
                nnsPriM3DPcArray1[index].Pos.Assign(-x, y, 0.0f);
                nnsPriM3DPcArray1[index + 1].Pos.Assign(x, y, 0.0f);
                nnsPriM3DPcArray1[index + 2].Pos.Assign(-x, -y, 0.0f);
                nnsPriM3DPcArray1[index + 5].Pos.Assign(x, -y, 0.0f);
                AppMain.nnTransformVector(ref nnsPriM3DPcArray1[index].Pos, current, ref nnsPriM3DPcArray1[index].Pos);
                AppMain.nnTransformVector(ref nnsPriM3DPcArray1[index + 1].Pos, current, ref nnsPriM3DPcArray1[index + 1].Pos);
                AppMain.nnTransformVector(ref nnsPriM3DPcArray1[index + 2].Pos, current, ref nnsPriM3DPcArray1[index + 2].Pos);
                AppMain.nnTransformVector(ref nnsPriM3DPcArray1[index + 5].Pos, current, ref nnsPriM3DPcArray1[index + 5].Pos);
                nnsPriM3DPcArray1[index + 5].Col = AppMain.AMD_RGBA8888(runtimeWorkPlane.color.r, runtimeWorkPlane.color.g, runtimeWorkPlane.color.b, runtimeWorkPlane.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;
                AppMain.amMatrixPop();
            }
            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);
        }
        AppMain.GlobalPool <AppMain.AMS_PARAM_DRAW_PRIMITIVE> .Release(setParam);

        return(0);
    }
示例#10
0
    // Token: 0x06001188 RID: 4488 RVA: 0x00099524 File Offset: 0x00097724
    private static void gmWaterSurfaceProc(MTS_TASK_TCB tcb)
    {
        AppMain.GMS_WATER_SURFACE_INFO gms_WATER_SURFACE_INFO = (AppMain.GMS_WATER_SURFACE_INFO)tcb.work;
        float speed = 0f;

        if (AppMain.ObjObjectPauseCheck(0U) == 0U)
        {
            float num = (float)(gms_WATER_SURFACE_INFO.water_time - gms_WATER_SURFACE_INFO.water_counter);
            if (num != 0f)
            {
                float num2 = (gms_WATER_SURFACE_INFO.next_water_level - gms_WATER_SURFACE_INFO.now_water_level) / num;
                gms_WATER_SURFACE_INFO.now_water_level += num2;
                if (1 > ( ushort )AppMain.MTM_MATH_ABS(gms_WATER_SURFACE_INFO.now_water_level - gms_WATER_SURFACE_INFO.next_water_level))
                {
                    gms_WATER_SURFACE_INFO.water_time    = 0;
                    gms_WATER_SURFACE_INFO.water_counter = 0;
                }
                else
                {
                    AppMain.GMS_WATER_SURFACE_INFO gms_WATER_SURFACE_INFO2 = gms_WATER_SURFACE_INFO;
                    gms_WATER_SURFACE_INFO2.water_counter += 1;
                }
            }
            else
            {
                gms_WATER_SURFACE_INFO.now_water_level = gms_WATER_SURFACE_INFO.next_water_level;
            }
            if (!gms_WATER_SURFACE_INFO.flag_draw)
            {
                AppMain.gmWaterSurfaceGameSystemSetWaterLevel(ushort.MaxValue);
                return;
            }
            AppMain.gmWaterSurfaceGameSystemSetWaterLevel(( ushort )gms_WATER_SURFACE_INFO.now_water_level);
            speed = AppMain.amSystemGetFrameRateMain();
        }
        OBS_CAMERA obs_CAMERA = ObjCamera.Get(6);
        float      x          = obs_CAMERA.disp_pos.x;
        float      num3       = obs_CAMERA.disp_pos.y;
        float      num4       = -gms_WATER_SURFACE_INFO.now_water_level - num3;

        if (num4 < ( float )(-( float )(AppMain.OBD_LCD_Y / 2 + 32)))
        {
            AppMain.GMS_WATER_SURFACE_MGR gms_WATER_SURFACE_MGR = AppMain.gmWaterSurfaceGetMgr();
            if (gms_WATER_SURFACE_MGR != null)
            {
                gms_WATER_SURFACE_MGR.render_target = null;
            }
            return;
        }
        bool flag = false;

        if (num4 > ( float )AppMain.OBD_LCD_Y * 0.8f)
        {
            num3 = obs_CAMERA.disp_pos.y;
            num4 = ( float )AppMain.OBD_LCD_Y * 0.8f;
            flag = true;
        }
        int   roll  = obs_CAMERA.roll;
        float scale = 1f / obs_CAMERA.scale;

        AppMain.dwaterUpdate(speed, x, num3, num4, roll, scale);
        if (!AppMain.GmMainIsDrawEnable())
        {
            return;
        }
        AppMain.dwaterSetParam();
        uint drawflag = 0U;

        AppMain.ObjDraw3DNNSetCameraEx(6, 1, 9U);
        if (gms_WATER_SURFACE_INFO.flag_enable_ref && !flag)
        {
            AppMain.dwaterDrawReflection(9U, drawflag);
        }
        AppMain.ObjDraw3DNNUserFunc(AppMain._gmWaterSurfaceTcbProcPreDrawDT, null, 0, 9U);
        AppMain.ObjDraw3DNNSetCameraEx(AppMain.g_obj.glb_camera_id, 1, 9U);
        AppMain.ObjDraw3DNNSetCameraEx(6, 1, 4U);
        AppMain.AMS_PARAM_DRAW_PRIMITIVE ams_PARAM_DRAW_PRIMITIVE = GlobalPool <AppMain.AMS_PARAM_DRAW_PRIMITIVE> .Alloc();

        ams_PARAM_DRAW_PRIMITIVE.aTest   = 0;
        ams_PARAM_DRAW_PRIMITIVE.zMask   = 1;
        ams_PARAM_DRAW_PRIMITIVE.zTest   = 1;
        ams_PARAM_DRAW_PRIMITIVE.ablend  = 1;
        ams_PARAM_DRAW_PRIMITIVE.bldSrc  = 770;
        ams_PARAM_DRAW_PRIMITIVE.bldDst  = 1;
        ams_PARAM_DRAW_PRIMITIVE.bldMode = 32774;
        AppMain.NNS_PRIM3D_PCT_ARRAY nns_PRIM3D_PCT_ARRAY = AppMain.amDrawAlloc_NNS_PRIM3D_PCT(18);
        AppMain.NNS_PRIM3D_PCT[]     buffer = nns_PRIM3D_PCT_ARRAY.buffer;
        int        offset      = nns_PRIM3D_PCT_ARRAY.offset;
        OBS_CAMERA obs_CAMERA2 = ObjCamera.Get(0);

        x    = obs_CAMERA2.disp_pos.x;
        num3 = -gms_WATER_SURFACE_INFO.now_water_level;
        float num5 = AppMain.FX_FX32_TO_F32(1310720);
        float num6 = obs_CAMERA2.znear + 1f;
        float num7 = 300f;

        num4 = num3 - (obs_CAMERA2.disp_pos.y - 300f);
        uint col = AppMain.AMD_RGBA8888(byte.MaxValue, byte.MaxValue, byte.MaxValue, 96);

        for (int i = 0; i < 3; i++)
        {
            float num8 = num6 * (float)(i + 1);
            int   num9 = offset + i * 6;
            buffer[num9].Pos.Assign(x - num7, num3, num5 - num8);
            buffer[1 + num9].Pos.Assign(x + num7, num3, num5 - num8);
            buffer[2 + num9].Pos.Assign(x - num7, num3 - num4, num5 - num8);
            buffer[5 + num9].Pos.Assign(x + num7, num3 - num4, num5 - num8);
            buffer[num9].Col     = col;
            buffer[1 + num9].Col = col;
            buffer[2 + num9].Col = col;
            buffer[5 + num9].Col = col;
            float num10;
            float num11;
            AppMain.nnSinCos(AppMain.NNM_DEGtoA32(AppMain._dmap_water.speed_surface * 360f), out num10, out num11);
            float num12 = num7 * 2f / 128f * 0.5f;
            float num13;
            float num14;
            float num15;
            float v;
            if (i == 0)
            {
                num13  = x / 270f;
                num13 -= ( float )(( int )num13) - AppMain._dmap_water.speed_surface;
                num14  = num13 + num12;
                num15  = 0.3f;
                v      = num15 + num4 / 128f * 0.5f + num11 / 5f;
            }
            else if (i == 1)
            {
                num14  = x / 270f;
                num14 -= ( float )(( int )num14) + AppMain._dmap_water.speed_surface * 2f;
                num13  = num14 - num12 * 0.75f;
                num15  = 1f;
                v      = num15 - num4 * 0.75f / 128f * 0.5f + num10 / 5f;
            }
            else
            {
                num13                = 0.171875f;
                num14                = num13 + 0.0078125f;
                num15                = 0.5f;
                v                    = num15 + 0.0078125f;
                buffer[num9].Col     = AppMain.AMD_RGBA8888(32, 176, 64, 112);
                buffer[1 + num9].Col = buffer[num9].Col;
                buffer[2 + num9].Col = buffer[num9].Col;
                buffer[5 + num9].Col = buffer[num9].Col;
            }
            buffer[num9].Tex.u     = num13;
            buffer[num9].Tex.v     = num15;
            buffer[1 + num9].Tex.u = num14;
            buffer[1 + num9].Tex.v = num15;
            buffer[2 + num9].Tex.u = num13;
            buffer[2 + num9].Tex.v = v;
            buffer[5 + num9].Tex.u = num14;
            buffer[5 + num9].Tex.v = v;
            buffer[3 + num9]       = buffer[1 + num9];
            buffer[4 + num9]       = buffer[2 + num9];
        }
        ams_PARAM_DRAW_PRIMITIVE.format3D = 4;
        ams_PARAM_DRAW_PRIMITIVE.type     = 0;
        ams_PARAM_DRAW_PRIMITIVE.vtxPCT3D = nns_PRIM3D_PCT_ARRAY;
        ams_PARAM_DRAW_PRIMITIVE.count    = 18;
        ams_PARAM_DRAW_PRIMITIVE.sortZ    = -num6;
        ams_PARAM_DRAW_PRIMITIVE.texId    = 0;
        ams_PARAM_DRAW_PRIMITIVE.texlist  = AppMain._dmap_water.tex_color.texlist;
        ams_PARAM_DRAW_PRIMITIVE.uwrap    = 0;
        ams_PARAM_DRAW_PRIMITIVE.vwrap    = 0;
        AppMain.gmWaterSurfaceMatrixPush(4U);
        AppMain.ObjDraw3DNNDrawPrimitive(ams_PARAM_DRAW_PRIMITIVE, 4U);
        AppMain.gmWaterSurfaceMatrixPop(4U);
        if (!flag)
        {
            AppMain.dwaterDrawSurface(4U, drawflag);
        }
        AppMain.ObjDraw3DNNSetCameraEx(AppMain.g_obj.glb_camera_id, 1, 4U);
        AppMain.ObjDraw3DNNUserFunc(AppMain.gmWaterSurfaceTcbProcPostDrawDT, null, 0, 8U);
        GlobalPool <AppMain.AMS_PARAM_DRAW_PRIMITIVE> .Release(ams_PARAM_DRAW_PRIMITIVE);
    }
示例#11
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);
    }
示例#12
0
    // Token: 0x060008DE RID: 2270 RVA: 0x00050904 File Offset: 0x0004EB04
    public static void gmGmkBridgeDrawFunc(OBS_OBJECT_WORK obj_work)
    {
        AppMain.GMS_ENEMY_3D_WORK gms_ENEMY_3D_WORK = (AppMain.GMS_ENEMY_3D_WORK)obj_work;
        int num    = (int)(obj_work.user_work * 53248U * 5U);
        int num2   = (int)(obj_work.user_flag - (uint)(obj_work.pos.x + -393216));
        int denom  = num2;
        int denom2 = num - num2;
        int v      = (int)gms_ENEMY_3D_WORK.ene_com.col_work.obj_col.ofst_y << 12;

        obj_work.ofst.x = -366592;
        obj_work.ofst.y = 26624;
        if ((obj_work.disp_flag & 32U) != 0U)
        {
            return;
        }
        uint col = AppMain.GmMainGetLightColor();

        AppMain.NNS_TEXLIST texlist = obj_work.obj_3d.texlist;
        AppMain.VecFx32     vecFx   = default(AppMain.VecFx32);
        vecFx.x = obj_work.pos.x + obj_work.ofst.x;
        vecFx.y = -(obj_work.pos.y + obj_work.ofst.y);
        vecFx.z = obj_work.pos.z + obj_work.ofst.z;
        NNS_MATRIX nns_MATRIX = GlobalPool <NNS_MATRIX> .Alloc();

        AppMain.nnMakeUnitMatrix(nns_MATRIX);
        AppMain.nnTranslateMatrix(nns_MATRIX, nns_MATRIX, AppMain.FX_FX32_TO_F32(vecFx.x), AppMain.FX_FX32_TO_F32(vecFx.y), AppMain.FX_FX32_TO_F32(vecFx.z));
        AppMain.AMS_PARAM_DRAW_PRIMITIVE ams_PARAM_DRAW_PRIMITIVE = GlobalPool <AppMain.AMS_PARAM_DRAW_PRIMITIVE> .Alloc();

        ams_PARAM_DRAW_PRIMITIVE.type     = 0;
        ams_PARAM_DRAW_PRIMITIVE.count    = ( int )(30U * obj_work.user_work);
        ams_PARAM_DRAW_PRIMITIVE.ablend   = 0;
        ams_PARAM_DRAW_PRIMITIVE.bldSrc   = 770;
        ams_PARAM_DRAW_PRIMITIVE.bldDst   = 771;
        ams_PARAM_DRAW_PRIMITIVE.bldMode  = 32774;
        ams_PARAM_DRAW_PRIMITIVE.aTest    = 1;
        ams_PARAM_DRAW_PRIMITIVE.zMask    = 0;
        ams_PARAM_DRAW_PRIMITIVE.zTest    = 1;
        ams_PARAM_DRAW_PRIMITIVE.noSort   = 1;
        ams_PARAM_DRAW_PRIMITIVE.uwrap    = 1;
        ams_PARAM_DRAW_PRIMITIVE.vwrap    = 1;
        ams_PARAM_DRAW_PRIMITIVE.texlist  = texlist;
        ams_PARAM_DRAW_PRIMITIVE.texId    = 0;
        ams_PARAM_DRAW_PRIMITIVE.vtxPCT3D = AppMain.amDrawAlloc_NNS_PRIM3D_PCT(ams_PARAM_DRAW_PRIMITIVE.count);
        AppMain.NNS_PRIM3D_PCT[] buffer = ams_PARAM_DRAW_PRIMITIVE.vtxPCT3D.buffer;
        int offset = ams_PARAM_DRAW_PRIMITIVE.vtxPCT3D.offset;

        ams_PARAM_DRAW_PRIMITIVE.format3D = 4;
        for (int i = 0; i < ( int )(( short )obj_work.user_work); i++)
        {
            for (int j = 0; j < 5; j++)
            {
                if (obj_work.user_timer != 0)
                {
                    int num3 = i * 53248 * 5 + j * 53248;
                    int v2;
                    if (num3 < num2)
                    {
                        v2 = AppMain.FX_Div(num3, denom);
                    }
                    else if (num3 > num2)
                    {
                        num3 = num - num3;
                        v2   = AppMain.FX_Div(num3, denom2);
                    }
                    else
                    {
                        v2 = 4096;
                    }
                    obj_work.ofst.y = 26624 + AppMain.FX_Mul(v, v2) * obj_work.user_timer / 16;
                }
                int   num4 = j + 5 * i;
                float num5 = AppMain.FX_FX32_TO_F32(53248 * num4);
                float num6 = AppMain.FX_FX32_TO_F32(obj_work.ofst.y);
                int   num7 = offset + num4 * 6;
                buffer[num7].Tex.u     = (buffer[num7 + 1].Tex.u = 0.1f);
                buffer[num7 + 2].Tex.u = (buffer[num7 + 3].Tex.u = 0.9f);
                buffer[num7].Tex.v     = (buffer[num7 + 2].Tex.v = 0.1f);
                buffer[num7 + 1].Tex.v = (buffer[num7 + 3].Tex.v = 0.9f);
                buffer[num7].Col       = col;
                buffer[num7 + 1].Col   = (buffer[num7 + 2].Col = (buffer[num7 + 3].Col = buffer[num7].Col));
                buffer[num7].Pos.x     = (buffer[num7 + 1].Pos.x = 6.5f + num5);
                buffer[num7 + 2].Pos.x = (buffer[num7 + 3].Pos.x = -6.5f + num5);
                buffer[num7].Pos.y     = (buffer[num7 + 2].Pos.y = 13f - num6);
                buffer[num7 + 1].Pos.y = (buffer[num7 + 3].Pos.y = -num6);
                buffer[num7].Pos.z     = (buffer[num7 + 1].Pos.z = (buffer[num7 + 2].Pos.z = (buffer[num7 + 3].Pos.z = -1f)));
                buffer[num7 + 4]       = buffer[num7 + 2];
                buffer[num7 + 5]       = buffer[num7 + 3];
                buffer[num7 + 3]       = buffer[num7 + 1];
            }
        }
        AppMain.amMatrixPush(nns_MATRIX);
        AppMain.ObjDraw3DNNDrawPrimitive(ams_PARAM_DRAW_PRIMITIVE);
        AppMain.amMatrixPop();
        GlobalPool <AppMain.AMS_PARAM_DRAW_PRIMITIVE> .Release(ams_PARAM_DRAW_PRIMITIVE);

        GlobalPool <NNS_MATRIX> .Release(nns_MATRIX);
    }
示例#13
0
    public static void gmGmkBridgeDrawFunc(AppMain.OBS_OBJECT_WORK obj_work)
    {
        AppMain.GMS_ENEMY_3D_WORK gmsEnemy3DWork = (AppMain.GMS_ENEMY_3D_WORK)obj_work;
        int num1   = (int)obj_work.user_work * 53248 * 5;
        int num2   = (int)obj_work.user_flag - (obj_work.pos.x - 393216);
        int denom1 = num2;
        int denom2 = num1 - num2;
        int v1     = (int)gmsEnemy3DWork.ene_com.col_work.obj_col.ofst_y << 12;

        obj_work.ofst.x = -366592;
        obj_work.ofst.y = 26624;
        if (((int)obj_work.disp_flag & 32) != 0)
        {
            return;
        }
        uint lightColor = AppMain.GmMainGetLightColor();

        AppMain.NNS_TEXLIST texlist = obj_work.obj_3d.texlist;
        AppMain.VecFx32     vecFx32 = new AppMain.VecFx32();
        vecFx32.x = obj_work.pos.x + obj_work.ofst.x;
        vecFx32.y = -(obj_work.pos.y + obj_work.ofst.y);
        vecFx32.z = obj_work.pos.z + obj_work.ofst.z;
        AppMain.NNS_MATRIX nnsMatrix = AppMain.GlobalPool <AppMain.NNS_MATRIX> .Alloc();

        AppMain.nnMakeUnitMatrix(nnsMatrix);
        AppMain.nnTranslateMatrix(nnsMatrix, nnsMatrix, AppMain.FX_FX32_TO_F32(vecFx32.x), AppMain.FX_FX32_TO_F32(vecFx32.y), AppMain.FX_FX32_TO_F32(vecFx32.z));
        AppMain.AMS_PARAM_DRAW_PRIMITIVE prim = AppMain.GlobalPool <AppMain.AMS_PARAM_DRAW_PRIMITIVE> .Alloc();

        prim.type     = 0;
        prim.count    = 30 * (int)obj_work.user_work;
        prim.ablend   = 0;
        prim.bldSrc   = 770;
        prim.bldDst   = 771;
        prim.bldMode  = 32774;
        prim.aTest    = (short)1;
        prim.zMask    = (short)0;
        prim.zTest    = (short)1;
        prim.noSort   = (short)1;
        prim.uwrap    = 1;
        prim.vwrap    = 1;
        prim.texlist  = texlist;
        prim.texId    = 0;
        prim.vtxPCT3D = AppMain.amDrawAlloc_NNS_PRIM3D_PCT(prim.count);
        AppMain.NNS_PRIM3D_PCT[] buffer = prim.vtxPCT3D.buffer;
        int offset = prim.vtxPCT3D.offset;

        prim.format3D = 4;
        for (int index1 = 0; index1 < (int)(short)obj_work.user_work; ++index1)
        {
            for (int index2 = 0; index2 < 5; ++index2)
            {
                if (obj_work.user_timer != 0)
                {
                    int numer = index1 * 53248 * 5 + index2 * 53248;
                    int v2    = numer >= num2 ? (numer <= num2 ? 4096 : AppMain.FX_Div(num1 - numer, denom2)) : AppMain.FX_Div(numer, denom1);
                    obj_work.ofst.y = 26624 + AppMain.FX_Mul(v1, v2) * obj_work.user_timer / 16;
                }
                int   num3   = index2 + 5 * index1;
                float f32_1  = AppMain.FX_FX32_TO_F32(53248 * num3);
                float f32_2  = AppMain.FX_FX32_TO_F32(obj_work.ofst.y);
                int   index3 = offset + num3 * 6;
                buffer[index3].Tex.u     = buffer[index3 + 1].Tex.u = 0.1f;
                buffer[index3 + 2].Tex.u = buffer[index3 + 3].Tex.u = 0.9f;
                buffer[index3].Tex.v     = buffer[index3 + 2].Tex.v = 0.1f;
                buffer[index3 + 1].Tex.v = buffer[index3 + 3].Tex.v = 0.9f;
                buffer[index3].Col       = lightColor;
                buffer[index3 + 1].Col   = buffer[index3 + 2].Col = buffer[index3 + 3].Col = buffer[index3].Col;
                buffer[index3].Pos.x     = buffer[index3 + 1].Pos.x = 6.5f + f32_1;
                buffer[index3 + 2].Pos.x = buffer[index3 + 3].Pos.x = f32_1 - 6.5f;
                buffer[index3].Pos.y     = buffer[index3 + 2].Pos.y = 13f - f32_2;
                buffer[index3 + 1].Pos.y = buffer[index3 + 3].Pos.y = -0.0f - f32_2;
                buffer[index3].Pos.z     = buffer[index3 + 1].Pos.z = buffer[index3 + 2].Pos.z = buffer[index3 + 3].Pos.z = -1f;
                buffer[index3 + 4]       = buffer[index3 + 2];
                buffer[index3 + 5]       = buffer[index3 + 3];
                buffer[index3 + 3]       = buffer[index3 + 1];
            }
        }
        AppMain.amMatrixPush(nnsMatrix);
        AppMain.ObjDraw3DNNDrawPrimitive(prim);
        AppMain.amMatrixPop();
        AppMain.GlobalPool <AppMain.AMS_PARAM_DRAW_PRIMITIVE> .Release(prim);

        AppMain.GlobalPool <AppMain.NNS_MATRIX> .Release(nnsMatrix);
    }
示例#14
0
    public static int _amDrawSprite(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;
        AppMain.AMS_PARAM_DRAW_PRIMITIVE setParam   = AppMain.GlobalPool <AppMain.AMS_PARAM_DRAW_PRIMITIVE> .Alloc();

        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 (; next != activeTail; next = next.next)
            {
                AppMain.AMS_AME_RUNTIME_WORK_SPRITE runtimeWorkSprite = (AppMain.AMS_AME_RUNTIME_WORK_SPRITE)(AppMain.AMS_AME_RUNTIME_WORK) next;
                float pSn;
                float pCs;
                AppMain.amSinCos(runtimeWorkSprite.twist, out pSn, out pCs);
                AppMain.amVectorGetAverage(ref snnsVector5, ref snnsVector3, ref snnsVector2, pCs, -pSn);
                AppMain.amVectorGetAverage(ref snnsVector6, ref snnsVector3, ref snnsVector2, pSn, pCs);
                AppMain.nnScaleVector(ref snnsVector5, ref snnsVector5, runtimeWorkSprite.size.x);
                AppMain.nnScaleVector(ref snnsVector6, ref snnsVector6, runtimeWorkSprite.size.y);
                AppMain.amVectorAdd(ref snnsVector4, runtimeWorkSprite.position, ref snnsVector1);
                num2 = AppMain.nnDistanceVector(ref snnsVector4, AppMain._am_ef_camPos);
                AppMain.nnSubtractVector(ref buffer[offset].Pos, ref snnsVector4, ref snnsVector5);
                AppMain.nnAddVector(ref buffer[offset].Pos, ref buffer[offset].Pos, ref snnsVector6);
                AppMain.nnAddVector(ref buffer[offset + 1].Pos, ref snnsVector4, ref snnsVector5);
                AppMain.nnAddVector(ref buffer[offset + 1].Pos, ref buffer[offset + 1].Pos, ref snnsVector6);
                AppMain.nnSubtractVector(ref buffer[offset + 2].Pos, ref snnsVector4, ref snnsVector5);
                AppMain.nnSubtractVector(ref buffer[offset + 2].Pos, ref buffer[offset + 2].Pos, ref snnsVector6);
                AppMain.nnAddVector(ref buffer[offset + 5].Pos, ref snnsVector4, ref snnsVector5);
                AppMain.nnSubtractVector(ref buffer[offset + 5].Pos, ref buffer[offset + 5].Pos, ref snnsVector6);
                buffer[offset + 5].Col   = AppMain.AMD_RGBA8888(runtimeWorkSprite.color.r, runtimeWorkSprite.color.g, runtimeWorkSprite.color.b, runtimeWorkSprite.color.a);
                buffer[offset].Col       = buffer[offset + 1].Col = buffer[offset + 2].Col = buffer[offset + 5].Col;
                buffer[offset].Tex.u     = runtimeWorkSprite.st.x;
                buffer[offset].Tex.v     = runtimeWorkSprite.st.y;
                buffer[offset + 1].Tex.u = runtimeWorkSprite.st.z;
                buffer[offset + 1].Tex.v = runtimeWorkSprite.st.y;
                buffer[offset + 2].Tex.u = runtimeWorkSprite.st.x;
                buffer[offset + 2].Tex.v = runtimeWorkSprite.st.w;
                buffer[offset + 5].Tex.u = runtimeWorkSprite.st.z;
                buffer[offset + 5].Tex.v = runtimeWorkSprite.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 (; next != activeTail; next = next.next)
            {
                AppMain.AMS_AME_RUNTIME_WORK_SPRITE runtimeWorkSprite = (AppMain.AMS_AME_RUNTIME_WORK_SPRITE)(AppMain.AMS_AME_RUNTIME_WORK) next;
                float pSn;
                float pCs;
                AppMain.amSinCos(runtimeWorkSprite.twist, out pSn, out pCs);
                AppMain.amVectorGetAverage(ref snnsVector5, ref snnsVector3, ref snnsVector2, pCs, -pSn);
                AppMain.amVectorGetAverage(ref snnsVector6, ref snnsVector3, ref snnsVector2, pSn, pCs);
                AppMain.nnScaleVector(ref snnsVector5, ref snnsVector5, runtimeWorkSprite.size.x);
                AppMain.nnScaleVector(ref snnsVector6, ref snnsVector6, runtimeWorkSprite.size.y);
                AppMain.amVectorAdd(ref snnsVector4, runtimeWorkSprite.position, ref snnsVector1);
                num2 = AppMain.nnDistanceVector(ref snnsVector4, AppMain._am_ef_camPos);
                AppMain.nnSubtractVector(ref nnsPriM3DPcArray1[index].Pos, ref snnsVector4, ref snnsVector5);
                AppMain.nnAddVector(ref nnsPriM3DPcArray1[index].Pos, ref nnsPriM3DPcArray1[index].Pos, ref snnsVector6);
                AppMain.nnAddVector(ref nnsPriM3DPcArray1[index + 1].Pos, ref snnsVector4, ref snnsVector5);
                AppMain.nnAddVector(ref nnsPriM3DPcArray1[index + 1].Pos, ref nnsPriM3DPcArray1[index + 1].Pos, ref snnsVector6);
                AppMain.nnSubtractVector(ref nnsPriM3DPcArray1[index + 2].Pos, ref snnsVector4, ref snnsVector5);
                AppMain.nnSubtractVector(ref nnsPriM3DPcArray1[index + 2].Pos, ref nnsPriM3DPcArray1[index + 2].Pos, ref snnsVector6);
                AppMain.nnAddVector(ref nnsPriM3DPcArray1[index + 5].Pos, ref snnsVector4, ref snnsVector5);
                AppMain.nnSubtractVector(ref nnsPriM3DPcArray1[index + 5].Pos, ref nnsPriM3DPcArray1[index + 5].Pos, ref snnsVector6);
                nnsPriM3DPcArray1[index + 5].Col = AppMain.AMD_RGBA8888(runtimeWorkSprite.color.r, runtimeWorkSprite.color.g, runtimeWorkSprite.color.b, runtimeWorkSprite.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);
        }
        AppMain.GlobalPool <AppMain.AMS_PARAM_DRAW_PRIMITIVE> .Release(setParam);

        return(0);
    }
示例#15
0
    // Token: 0x060004F4 RID: 1268 RVA: 0x0002A6CC File Offset: 0x000288CC
    public static void GmDecoGlareDraw(OBS_OBJECT_WORK obj_work)
    {
        int user_work = (int)obj_work.user_work;

        if (user_work < 14)
        {
            return;
        }
        int num = user_work;

        AppMain.GMS_DECOGLARE_PARAM gms_DECOGLARE_PARAM;
        switch (num)
        {
        case 14:
            break;

        case 15:
            gms_DECOGLARE_PARAM = AppMain._gm_decoGlare_param[1];
            goto IL_65;

        case 16:
            goto IL_53;

        default:
            if (num == 54)
            {
                gms_DECOGLARE_PARAM = AppMain._gm_decoGlare_param[3];
                goto IL_65;
            }
            switch (num)
            {
            case 109:
                break;

            case 110:
                goto IL_53;

            default:
                return;
            }
            break;
        }
        gms_DECOGLARE_PARAM = AppMain._gm_decoGlare_param[0];
        goto IL_65;
IL_53:
        gms_DECOGLARE_PARAM = AppMain._gm_decoGlare_param[2];
IL_65:
        if (!AppMain.amDrawIsRegistComplete(AppMain.pIF.regId))
        {
            return;
        }
        if (AppMain.pIF.drawFlag != 1)
        {
            return;
        }
        if ((obj_work.disp_flag & 32U) != 0U)
        {
            return;
        }
        AppMain.VecFx32 vecFx = new AppMain.VecFx32(obj_work.pos);
        float           num2  = (float)(vecFx.x >> 12);
        float           num3  = -(float)(vecFx.y >> 12);
        float           z     = 256f;

        AppMain.AMS_PARAM_DRAW_PRIMITIVE ams_PARAM_DRAW_PRIMITIVE = GlobalPool <AppMain.AMS_PARAM_DRAW_PRIMITIVE> .Alloc();

        ams_PARAM_DRAW_PRIMITIVE.aTest  = 0;
        ams_PARAM_DRAW_PRIMITIVE.zMask  = 0;
        ams_PARAM_DRAW_PRIMITIVE.zTest  = 1;
        ams_PARAM_DRAW_PRIMITIVE.ablend = 1;
        switch (gms_DECOGLARE_PARAM.ablend)
        {
        case 0:
            AppMain.amDrawGetPrimBlendParam(0, ams_PARAM_DRAW_PRIMITIVE);
            break;

        case 1:
            AppMain.amDrawGetPrimBlendParam(1, ams_PARAM_DRAW_PRIMITIVE);
            break;
        }
        AppMain.NNS_PRIM3D_PCT_ARRAY nns_PRIM3D_PCT_ARRAY = AppMain.amDrawAlloc_NNS_PRIM3D_PCT(6);
        AppMain.NNS_PRIM3D_PCT[]     buffer = nns_PRIM3D_PCT_ARRAY.buffer;
        int   offset = nns_PRIM3D_PCT_ARRAY.offset;
        float num4   = gms_DECOGLARE_PARAM.size * 0.5f;
        float num5   = gms_DECOGLARE_PARAM.size * 0.5f;

        num2 += 10f;
        num3 -= 10f;
        buffer[offset].Pos.Assign(num2 - num4, num3 + num5, z);
        buffer[offset + 1].Pos.Assign(num2 + num4, num3 + num5, z);
        buffer[offset + 2].Pos.Assign(num2 - num4, num3 - num5, z);
        buffer[offset + 5].Pos.Assign(num2 + num4, num3 - num5, z);
        buffer[offset].Col                = gms_DECOGLARE_PARAM.color;
        buffer[offset + 1].Col            = gms_DECOGLARE_PARAM.color;
        buffer[offset + 2].Col            = gms_DECOGLARE_PARAM.color;
        buffer[offset + 5].Col            = gms_DECOGLARE_PARAM.color;
        buffer[offset].Tex.u              = 0f;
        buffer[offset].Tex.v              = 0f;
        buffer[offset + 1].Tex.u          = 1f;
        buffer[offset + 1].Tex.v          = 0f;
        buffer[offset + 2].Tex.u          = 0f;
        buffer[offset + 2].Tex.v          = 1f;
        buffer[offset + 5].Tex.u          = 1f;
        buffer[offset + 5].Tex.v          = 1f;
        buffer[offset + 3]                = buffer[offset + 1];
        buffer[offset + 4]                = buffer[offset + 2];
        ams_PARAM_DRAW_PRIMITIVE.format3D = 4;
        ams_PARAM_DRAW_PRIMITIVE.type     = 0;
        ams_PARAM_DRAW_PRIMITIVE.vtxPCT3D = nns_PRIM3D_PCT_ARRAY;
        ams_PARAM_DRAW_PRIMITIVE.texlist  = AppMain.pIF.texlist;
        ams_PARAM_DRAW_PRIMITIVE.texId    = AppMain.pIF.texId;
        ams_PARAM_DRAW_PRIMITIVE.count    = 6;
        ams_PARAM_DRAW_PRIMITIVE.sortZ    = gms_DECOGLARE_PARAM.sort_z;
        AppMain.amDrawPrimitive3D(4U, ams_PARAM_DRAW_PRIMITIVE);
        GlobalPool <AppMain.AMS_PARAM_DRAW_PRIMITIVE> .Release(ams_PARAM_DRAW_PRIMITIVE);
    }
示例#16
0
    private static void _amTrailDrawNormal(AppMain.AMS_TRAIL_EFFECT pEffect)
    {
        AppMain.AMS_TRAIL_PARAM     work = pEffect.Work;
        AppMain.AMS_TRAIL_PARTSDATA amsTrailPartsdata = AppMain.pTr.trailData[(int)work.trailId];
        AppMain.AMS_TRAIL_PARTS     trailTail         = amsTrailPartsdata.trailTail;
        AppMain.AMS_TRAIL_PARTS     trailHead         = amsTrailPartsdata.trailHead;
        AppMain.AMS_TRAIL_PARTS     pPrev1            = trailTail.pPrev;
        if (trailTail.pPrev.pPrev == trailHead || (double)work.time <= 0.0)
        {
            return;
        }
        AppMain.NNS_RGBA   startColor = work.startColor;
        AppMain.NNS_RGBA   ptclColor  = work.ptclColor;
        AppMain.NNS_VECTOR nnsVector1 = new AppMain.NNS_VECTOR();
        AppMain.NNS_VECTOR nnsVector2 = new AppMain.NNS_VECTOR();
        AppMain.NNS_VECTOR nnsVector3 = new AppMain.NNS_VECTOR();
        float num1 = 1f;

        AppMain.AMS_PARAM_DRAW_PRIMITIVE setParam = AppMain.GlobalPool <AppMain.AMS_PARAM_DRAW_PRIMITIVE> .Alloc();

        int num2 = 1;

        AppMain.amDrawGetPrimBlendParam((int)work.blendType, setParam);
        if (work.zTest != (short)0)
        {
            setParam.zTest = (short)1;
        }
        if (work.zMask != (short)0)
        {
            setParam.zMask = (short)1;
        }
        AppMain.amVectorSet(nnsVector3, 0.0f, 0.0f, 1f);
        if ((double)work.time < (double)work.vanish_time)
        {
            num1 = work.time / work.vanish_time;
        }
        work.vanish_rate = num1;
        startColor.a     = work.startColor.a * num1;
        ptclColor.a      = work.ptclColor.a * num1;
        float startSize = work.startSize;
        float ptclSize  = work.ptclSize;

        if (work.ptclFlag != (short)0 && work.ptclTexId != (short)-1)
        {
            AppMain.NNS_PRIM3D_PCT_ARRAY nnsPriM3DPctArray = AppMain.amDrawAlloc_NNS_PRIM3D_PCT(6);
            AppMain.NNS_PRIM3D_PCT[]     buffer            = nnsPriM3DPctArray.buffer;
            int   offset = nnsPriM3DPctArray.offset;
            float num3   = AppMain.nnDistanceVector(pPrev1.pos, AppMain._am_ef_camPos);
            AppMain.mppAssertNotImpl();
            buffer[offset].Col       = AppMain.AMD_FCOLTORGBA8888(ptclColor.r, ptclColor.g, ptclColor.b, ptclColor.a);
            buffer[offset + 1].Col   = buffer[offset + 2].Col = buffer[offset + 5].Col = buffer[offset].Col;
            buffer[offset].Tex.u     = 0.0f;
            buffer[offset].Tex.v     = 0.0f;
            buffer[offset + 1].Tex.u = 1f;
            buffer[offset + 1].Tex.v = 0.0f;
            buffer[offset + 2].Tex.u = 0.0f;
            buffer[offset + 2].Tex.v = 1f;
            buffer[offset + 5].Tex.u = 1f;
            buffer[offset + 5].Tex.v = 1f;
            buffer[offset + 3]       = buffer[offset + 1];
            buffer[offset + 4]       = buffer[offset + 2];
            setParam.format3D        = 4;
            setParam.type            = 0;
            setParam.vtxPCT3D        = nnsPriM3DPctArray;
            setParam.texlist         = work.texlist;
            setParam.texId           = (int)work.ptclTexId;
            setParam.count           = 6;
            setParam.ablend          = num2;
            setParam.sortZ           = num3;
            AppMain.amDrawPrimitive3D(pEffect.drawState, setParam);
        }
        if (work.trailPartsNum < (short)3)
        {
            return;
        }
        if (work.texlist == null || work.texId == -1)
        {
            AppMain.NNS_PRIM3D_PC[] _pv = AppMain.amDrawAlloc_NNS_PRIM3D_PC(6 * ((int)work.trailPartsNum - 1));
            AppMain.NNS_PRIM3D_PC[] nnsPriM3DPcArray = _pv;
            int   num3 = 0;
            float num4 = AppMain.nnDistanceVector(pPrev1.pos, AppMain._am_ef_camPos);
            AppMain.nnCrossProductVector(nnsVector1, nnsVector3, pPrev1.dir);
            AppMain.nnNormalizeVector(nnsVector1, nnsVector1);
            AppMain.nnScaleVector(nnsVector2, nnsVector1, startSize);
            AppMain.nnAddVector(ref _pv[0].Pos, pPrev1.pos, nnsVector2);
            AppMain.nnAddVector(ref _pv[1].Pos, pPrev1.pPrev.pos, nnsVector2);
            AppMain.nnSubtractVector(ref _pv[2].Pos, pPrev1.pos, nnsVector2);
            AppMain.nnSubtractVector(ref _pv[5].Pos, pPrev1.pPrev.pos, nnsVector2);
            _pv[5].Col = AppMain.AMD_FCOLTORGBA8888(startColor.r, startColor.g, startColor.b, startColor.a);
            _pv[0].Col = _pv[1].Col = _pv[2].Col = _pv[5].Col;
            _pv[3]     = _pv[1];
            _pv[4]     = _pv[2];
            int pv = num3 + 6;
            AppMain.AMS_TRAIL_PARTS pPrev2 = pPrev1.pPrev;
            work.list_no = (short)1;
            while (pPrev2 != trailHead.pNext)
            {
                AppMain.mppAssertNotImpl();
                pPrev2.m_Flag &= 4294967293U;
                ++work.list_no;
                AppMain._amTrailDrawPartsNormal(pPrev2, work, _pv, pv);
                pPrev2 = pPrev2.pPrev;
                pv    += 6;
            }
            setParam.format3D = 2;
            setParam.type     = 0;
            setParam.vtxPC3D  = nnsPriM3DPcArray;
            setParam.texlist  = work.texlist;
            setParam.texId    = work.texId;
            setParam.count    = 6 * ((int)work.trailPartsNum - 1);
            setParam.ablend   = num2;
            setParam.sortZ    = num4;
            AppMain.amDrawPrimitive3D(pEffect.drawState, setParam);
        }
        else
        {
            AppMain.NNS_PRIM3D_PCT_ARRAY nnsPriM3DPctArray = AppMain.amDrawAlloc_NNS_PRIM3D_PCT(6 * ((int)work.trailPartsNum - 1));
            AppMain.NNS_PRIM3D_PCT[]     buffer            = nnsPriM3DPctArray.buffer;
            int   offset = nnsPriM3DPctArray.offset;
            int   num3   = offset;
            float num4   = (float)((int)work.trailPartsNum - 1) / (float)work.trailPartsNum * work.vanish_rate;
            float num5   = AppMain.nnDistanceVector(pPrev1.pos, AppMain._am_ef_camPos);
            AppMain.nnCrossProductVector(nnsVector1, nnsVector3, pPrev1.dir);
            AppMain.nnNormalizeVector(nnsVector1, nnsVector1);
            AppMain.nnScaleVector(nnsVector2, nnsVector1, startSize);
            AppMain.nnAddVector(ref buffer[offset].Pos, pPrev1.pos, nnsVector2);
            AppMain.nnAddVector(ref buffer[offset + 1].Pos, pPrev1.pPrev.pos, nnsVector2);
            AppMain.nnSubtractVector(ref buffer[offset + 2].Pos, pPrev1.pos, nnsVector2);
            AppMain.nnSubtractVector(ref buffer[offset + 5].Pos, pPrev1.pPrev.pos, nnsVector2);
            buffer[offset + 5].Col   = AppMain.AMD_FCOLTORGBA8888(startColor.r, startColor.g, startColor.b, startColor.a);
            buffer[offset].Col       = buffer[offset + 1].Col = buffer[offset + 2].Col = buffer[offset + 5].Col;
            buffer[offset].Tex.u     = 1f;
            buffer[offset].Tex.v     = 0.0f;
            buffer[offset + 1].Tex.u = num4;
            buffer[offset + 1].Tex.v = 0.0f;
            buffer[offset + 2].Tex.u = 1f;
            buffer[offset + 2].Tex.v = 1f;
            buffer[offset + 5].Tex.u = num4;
            buffer[offset + 5].Tex.v = 1f;
            buffer[offset + 3]       = buffer[offset + 1];
            buffer[offset + 4]       = buffer[offset + 2];
            int pv = num3 + 6;
            AppMain.AMS_TRAIL_PARTS pPrev2 = pPrev1.pPrev;
            work.list_no = (short)1;
            while (pPrev2 != trailHead.pNext)
            {
                pPrev2.m_Flag &= 4294967293U;
                ++work.list_no;
                AppMain._amTrailDrawPartsNormalTex(pPrev2, work, buffer, pv);
                pPrev2 = pPrev2.pPrev;
                pv    += 6;
            }
            setParam.format3D = 4;
            setParam.type     = 0;
            setParam.vtxPCT3D = nnsPriM3DPctArray;
            setParam.texlist  = work.texlist;
            setParam.texId    = work.texId;
            setParam.count    = 6 * ((int)work.trailPartsNum - 1);
            setParam.ablend   = num2;
            setParam.sortZ    = num5;
            AppMain.amDrawPrimitive3D(pEffect.drawState, setParam);
        }
        //AppMain.GlobalPool<AppMain.NNS_VECTOR>.Release(nnsVector1);
        //AppMain.GlobalPool<AppMain.NNS_VECTOR>.Release(nnsVector2);
        //AppMain.GlobalPool<AppMain.NNS_VECTOR>.Release(nnsVector3);
    }
    // Token: 0x06001B08 RID: 6920 RVA: 0x000F5E48 File Offset: 0x000F4048
    public static void GmGmkPulleyDrawServerMain()
    {
        if (!AppMain.GmMainIsDrawEnable())
        {
            return;
        }
        AppMain.GMS_GMK_PULLEY_MANAGER gms_GMK_PULLEY_MANAGER = AppMain.gm_gmk_pulley_manager;
        if (gms_GMK_PULLEY_MANAGER.num <= 0U)
        {
            return;
        }
        AppMain.AMS_PARAM_DRAW_PRIMITIVE ams_PARAM_DRAW_PRIMITIVE = AppMain.GlobalPool <AppMain.AMS_PARAM_DRAW_PRIMITIVE> .Alloc();

        ams_PARAM_DRAW_PRIMITIVE.type    = 1;
        ams_PARAM_DRAW_PRIMITIVE.ablend  = 0;
        ams_PARAM_DRAW_PRIMITIVE.bldSrc  = 768;
        ams_PARAM_DRAW_PRIMITIVE.bldDst  = 774;
        ams_PARAM_DRAW_PRIMITIVE.bldMode = 32774;
        ams_PARAM_DRAW_PRIMITIVE.aTest   = 1;
        ams_PARAM_DRAW_PRIMITIVE.zMask   = 0;
        ams_PARAM_DRAW_PRIMITIVE.zTest   = 1;
        ams_PARAM_DRAW_PRIMITIVE.noSort  = 1;
        ams_PARAM_DRAW_PRIMITIVE.texlist = gms_GMK_PULLEY_MANAGER.texlist;
        ams_PARAM_DRAW_PRIMITIVE.texId   = ( int )gms_GMK_PULLEY_MANAGER.tex_id;
        uint col = AppMain.GmMainGetLightColor();

        ams_PARAM_DRAW_PRIMITIVE.uwrap    = 1;
        ams_PARAM_DRAW_PRIMITIVE.vwrap    = 1;
        ams_PARAM_DRAW_PRIMITIVE.count    = ( int )(gms_GMK_PULLEY_MANAGER.num * 6U - 2U);
        ams_PARAM_DRAW_PRIMITIVE.vtxPCT3D = AppMain.amDrawAlloc_NNS_PRIM3D_PCT(ams_PARAM_DRAW_PRIMITIVE.count);
        AppMain.NNS_PRIM3D_PCT[] buffer = ams_PARAM_DRAW_PRIMITIVE.vtxPCT3D.buffer;
        int offset = ams_PARAM_DRAW_PRIMITIVE.vtxPCT3D.offset;

        ams_PARAM_DRAW_PRIMITIVE.format3D = 4;
        AppMain.NNS_MATRIX nns_MATRIX = AppMain.GlobalPool <AppMain.NNS_MATRIX> .Alloc();

        AppMain.NNS_VECTOR nns_VECTOR = AppMain.GlobalPool <AppMain.NNS_VECTOR> .Alloc();

        int num = 0;

        while (( long )num < ( long )(( ulong )gms_GMK_PULLEY_MANAGER.num))
        {
            int num2 = offset + num * 6;
            int num3 = offset + num * 6 - 1;
            int num4 = offset + num * 6 + 4;
            AppMain.GMS_GMK_PULLEY_REGISTER gms_GMK_PULLEY_REGISTER = gms_GMK_PULLEY_MANAGER.reg[num];
            Vector3 vector;
            vector.X = AppMain.FX_FX32_TO_F32(gms_GMK_PULLEY_REGISTER.vec.x);
            vector.Y = AppMain.FX_FX32_TO_F32(gms_GMK_PULLEY_REGISTER.vec.y);
            vector.Z = AppMain.FX_FX32_TO_F32(gms_GMK_PULLEY_REGISTER.vec.z);
            AppMain.NNS_VECTOR[]   array  = AppMain.gm_gmk_pulley_pos[(int)gms_GMK_PULLEY_REGISTER.type];
            AppMain.NNS_TEXCOORD[] array2 = AppMain.gm_gmk_pulley_tex[(int)gms_GMK_PULLEY_REGISTER.type];
            if (gms_GMK_PULLEY_REGISTER.flip != 0)
            {
                AppMain.nnMakeRotateYMatrix(nns_MATRIX, ( int )gms_GMK_PULLEY_REGISTER.flip);
            }
            float num5 = 0f;
            if (gms_GMK_PULLEY_REGISTER.type == 2)
            {
                num5 = 2f;
            }
            for (int i = 0; i < 4; i++)
            {
                if (gms_GMK_PULLEY_REGISTER.flip != 0)
                {
                    AppMain.nnTransformVector(nns_VECTOR, nns_MATRIX, array[i]);
                }
                else
                {
                    AppMain.nnCopyVector(nns_VECTOR, array[i]);
                }
                int num6 = num2 + i;
                buffer[num6].Pos.x = nns_VECTOR.x + vector.X;
                buffer[num6].Pos.y = nns_VECTOR.y - vector.Y + num5;
                buffer[num6].Pos.z = nns_VECTOR.z + vector.Z;
                buffer[num6].Tex.u = array2[i].u;
                buffer[num6].Tex.v = array2[i].v;
                buffer[num6].Col   = col;
            }
            if (num != 0)
            {
                buffer[num3] = buffer[num2];
            }
            if (( long )num != ( long )(( ulong )(gms_GMK_PULLEY_MANAGER.num - 1U)))
            {
                buffer[num4] = buffer[num2 + 3];
            }
            num++;
        }
        AppMain.GlobalPool <AppMain.NNS_VECTOR> .Release(nns_VECTOR);

        AppMain.GlobalPool <AppMain.NNS_MATRIX> .Release(nns_MATRIX);

        AppMain.NNS_MATRIX nns_MATRIX2 = AppMain.GlobalPool <AppMain.NNS_MATRIX> .Alloc();

        AppMain.nnMakeUnitMatrix(nns_MATRIX2);
        AppMain.amMatrixPush(nns_MATRIX2);
        AppMain.ObjDraw3DNNDrawPrimitive(ams_PARAM_DRAW_PRIMITIVE, 0U, 0, 0);
        AppMain.amMatrixPop();
        AppMain.GlobalPool <AppMain.AMS_PARAM_DRAW_PRIMITIVE> .Release(ams_PARAM_DRAW_PRIMITIVE);

        AppMain.GlobalPool <AppMain.NNS_MATRIX> .Release(nns_MATRIX2);

        gms_GMK_PULLEY_MANAGER.num = 0U;
    }
示例#18
0
    // Token: 0x06000036 RID: 54 RVA: 0x000030B0 File Offset: 0x000012B0
    private static void _amTrailDrawNormal(AppMain.AMS_TRAIL_EFFECT pEffect)
    {
        AppMain.AMS_TRAIL_PARAM     work = pEffect.Work;
        AppMain.AMS_TRAIL_PARTSDATA ams_TRAIL_PARTSDATA = AppMain.pTr.trailData[(int)work.trailId];
        AppMain.AMS_TRAIL_PARTS     trailTail           = ams_TRAIL_PARTSDATA.trailTail;
        AppMain.AMS_TRAIL_PARTS     trailHead           = ams_TRAIL_PARTSDATA.trailHead;
        AppMain.AMS_TRAIL_PARTS     pPrev = trailTail.pPrev;
        if (trailTail.pPrev.pPrev == trailHead)
        {
            return;
        }
        if (work.time <= 0f)
        {
            return;
        }
        NNS_RGBA   startColor = work.startColor;
        NNS_RGBA   ptclColor  = work.ptclColor;
        NNS_VECTOR nns_VECTOR = GlobalPool <NNS_VECTOR> .Alloc();

        NNS_VECTOR nns_VECTOR2 = GlobalPool <NNS_VECTOR> .Alloc();

        NNS_VECTOR nns_VECTOR3 = GlobalPool <NNS_VECTOR> .Alloc();

        float num = 1f;

        AppMain.AMS_PARAM_DRAW_PRIMITIVE ams_PARAM_DRAW_PRIMITIVE = GlobalPool <AppMain.AMS_PARAM_DRAW_PRIMITIVE> .Alloc();

        int ablend = 1;

        AppMain.amDrawGetPrimBlendParam((int)work.blendType, ams_PARAM_DRAW_PRIMITIVE);
        if (work.zTest != 0)
        {
            ams_PARAM_DRAW_PRIMITIVE.zTest = 1;
        }
        if (work.zMask != 0)
        {
            ams_PARAM_DRAW_PRIMITIVE.zMask = 1;
        }
        AppMain.amVectorSet(nns_VECTOR3, 0f, 0f, 1f);
        if (work.time < work.vanish_time)
        {
            num = work.time / work.vanish_time;
        }
        work.vanish_rate = num;
        startColor.a     = work.startColor.a * num;
        ptclColor.a      = work.ptclColor.a * num;
        float startSize = work.startSize;
        float ptclSize  = work.ptclSize;

        if (work.ptclFlag != 0 && work.ptclTexId != -1)
        {
            AppMain.NNS_PRIM3D_PCT_ARRAY nns_PRIM3D_PCT_ARRAY = AppMain.amDrawAlloc_NNS_PRIM3D_PCT(6);
            AppMain.NNS_PRIM3D_PCT[]     buffer = nns_PRIM3D_PCT_ARRAY.buffer;
            int   offset = nns_PRIM3D_PCT_ARRAY.offset;
            float sortZ  = AppMain.nnDistanceVector(pPrev.pos, AppMain._am_ef_camPos);
            AppMain.mppAssertNotImpl();
            buffer[offset].Col                = AppMain.AMD_FCOLTORGBA8888(ptclColor.r, ptclColor.g, ptclColor.b, ptclColor.a);
            buffer[offset + 1].Col            = (buffer[offset + 2].Col = (buffer[offset + 5].Col = buffer[offset].Col));
            buffer[offset].Tex.u              = 0f;
            buffer[offset].Tex.v              = 0f;
            buffer[offset + 1].Tex.u          = 1f;
            buffer[offset + 1].Tex.v          = 0f;
            buffer[offset + 2].Tex.u          = 0f;
            buffer[offset + 2].Tex.v          = 1f;
            buffer[offset + 5].Tex.u          = 1f;
            buffer[offset + 5].Tex.v          = 1f;
            buffer[offset + 3]                = buffer[offset + 1];
            buffer[offset + 4]                = buffer[offset + 2];
            ams_PARAM_DRAW_PRIMITIVE.format3D = 4;
            ams_PARAM_DRAW_PRIMITIVE.type     = 0;
            ams_PARAM_DRAW_PRIMITIVE.vtxPCT3D = nns_PRIM3D_PCT_ARRAY;
            ams_PARAM_DRAW_PRIMITIVE.texlist  = work.texlist;
            ams_PARAM_DRAW_PRIMITIVE.texId    = (int)work.ptclTexId;
            ams_PARAM_DRAW_PRIMITIVE.count    = 6;
            ams_PARAM_DRAW_PRIMITIVE.ablend   = ablend;
            ams_PARAM_DRAW_PRIMITIVE.sortZ    = sortZ;
            AppMain.amDrawPrimitive3D(pEffect.drawState, ams_PARAM_DRAW_PRIMITIVE);
        }
        if (work.trailPartsNum < 3)
        {
            return;
        }
        if (work.texlist == null || work.texId == -1)
        {
            AppMain.NNS_PRIM3D_PC[] array   = AppMain.amDrawAlloc_NNS_PRIM3D_PC((int)(6 * (work.trailPartsNum - 1)));
            AppMain.NNS_PRIM3D_PC[] vtxPC3D = array;
            int   num2  = 0;
            float sortZ = AppMain.nnDistanceVector(pPrev.pos, AppMain._am_ef_camPos);
            AppMain.nnCrossProductVector(nns_VECTOR, nns_VECTOR3, pPrev.dir);
            AppMain.nnNormalizeVector(nns_VECTOR, nns_VECTOR);
            AppMain.nnScaleVector(nns_VECTOR2, nns_VECTOR, startSize);
            AppMain.nnAddVector(ref array[0].Pos, pPrev.pos, nns_VECTOR2);
            AppMain.nnAddVector(ref array[1].Pos, pPrev.pPrev.pos, nns_VECTOR2);
            AppMain.nnSubtractVector(ref array[2].Pos, pPrev.pos, nns_VECTOR2);
            AppMain.nnSubtractVector(ref array[5].Pos, pPrev.pPrev.pos, nns_VECTOR2);
            array[5].Col = AppMain.AMD_FCOLTORGBA8888(startColor.r, startColor.g, startColor.b, startColor.a);
            array[0].Col = (array[1].Col = (array[2].Col = array[5].Col));
            array[3]     = array[1];
            array[4]     = array[2];
            num2        += 6;
            pPrev        = pPrev.pPrev;
            work.list_no = 1;
            while (pPrev != trailHead.pNext)
            {
                AppMain.mppAssertNotImpl();
                pPrev.m_Flag &= 4294967293U;
                AppMain.AMS_TRAIL_PARAM ams_TRAIL_PARAM = work;
                ams_TRAIL_PARAM.list_no += 1;
                AppMain._amTrailDrawPartsNormal(pPrev, work, array, num2);
                pPrev = pPrev.pPrev;
                num2 += 6;
            }
            ams_PARAM_DRAW_PRIMITIVE.format3D = 2;
            ams_PARAM_DRAW_PRIMITIVE.type     = 0;
            ams_PARAM_DRAW_PRIMITIVE.vtxPC3D  = vtxPC3D;
            ams_PARAM_DRAW_PRIMITIVE.texlist  = work.texlist;
            ams_PARAM_DRAW_PRIMITIVE.texId    = work.texId;
            ams_PARAM_DRAW_PRIMITIVE.count    = (int)(6 * (work.trailPartsNum - 1));
            ams_PARAM_DRAW_PRIMITIVE.ablend   = ablend;
            ams_PARAM_DRAW_PRIMITIVE.sortZ    = sortZ;
            AppMain.amDrawPrimitive3D(pEffect.drawState, ams_PARAM_DRAW_PRIMITIVE);
        }
        else
        {
            AppMain.NNS_PRIM3D_PCT_ARRAY nns_PRIM3D_PCT_ARRAY2 = AppMain.amDrawAlloc_NNS_PRIM3D_PCT((int)(6 * (work.trailPartsNum - 1)));
            AppMain.NNS_PRIM3D_PCT[]     buffer2 = nns_PRIM3D_PCT_ARRAY2.buffer;
            int   offset2 = nns_PRIM3D_PCT_ARRAY2.offset;
            int   num3    = offset2;
            float num4    = (float)(work.trailPartsNum - 1) / (float)work.trailPartsNum;
            num4 *= work.vanish_rate;
            float sortZ = AppMain.nnDistanceVector(pPrev.pos, AppMain._am_ef_camPos);
            AppMain.nnCrossProductVector(nns_VECTOR, nns_VECTOR3, pPrev.dir);
            AppMain.nnNormalizeVector(nns_VECTOR, nns_VECTOR);
            AppMain.nnScaleVector(nns_VECTOR2, nns_VECTOR, startSize);
            AppMain.nnAddVector(ref buffer2[offset2].Pos, pPrev.pos, nns_VECTOR2);
            AppMain.nnAddVector(ref buffer2[offset2 + 1].Pos, pPrev.pPrev.pos, nns_VECTOR2);
            AppMain.nnSubtractVector(ref buffer2[offset2 + 2].Pos, pPrev.pos, nns_VECTOR2);
            AppMain.nnSubtractVector(ref buffer2[offset2 + 5].Pos, pPrev.pPrev.pos, nns_VECTOR2);
            buffer2[offset2 + 5].Col   = AppMain.AMD_FCOLTORGBA8888(startColor.r, startColor.g, startColor.b, startColor.a);
            buffer2[offset2].Col       = (buffer2[offset2 + 1].Col = (buffer2[offset2 + 2].Col = buffer2[offset2 + 5].Col));
            buffer2[offset2].Tex.u     = 1f;
            buffer2[offset2].Tex.v     = 0f;
            buffer2[offset2 + 1].Tex.u = num4;
            buffer2[offset2 + 1].Tex.v = 0f;
            buffer2[offset2 + 2].Tex.u = 1f;
            buffer2[offset2 + 2].Tex.v = 1f;
            buffer2[offset2 + 5].Tex.u = num4;
            buffer2[offset2 + 5].Tex.v = 1f;
            buffer2[offset2 + 3]       = buffer2[offset2 + 1];
            buffer2[offset2 + 4]       = buffer2[offset2 + 2];
            num3        += 6;
            pPrev        = pPrev.pPrev;
            work.list_no = 1;
            while (pPrev != trailHead.pNext)
            {
                pPrev.m_Flag &= 4294967293U;
                AppMain.AMS_TRAIL_PARAM ams_TRAIL_PARAM2 = work;
                ams_TRAIL_PARAM2.list_no += 1;
                AppMain._amTrailDrawPartsNormalTex(pPrev, work, buffer2, num3);
                pPrev = pPrev.pPrev;
                num3 += 6;
            }
            ams_PARAM_DRAW_PRIMITIVE.format3D = 4;
            ams_PARAM_DRAW_PRIMITIVE.type     = 0;
            ams_PARAM_DRAW_PRIMITIVE.vtxPCT3D = nns_PRIM3D_PCT_ARRAY2;
            ams_PARAM_DRAW_PRIMITIVE.texlist  = work.texlist;
            ams_PARAM_DRAW_PRIMITIVE.texId    = work.texId;
            ams_PARAM_DRAW_PRIMITIVE.count    = (int)(6 * (work.trailPartsNum - 1));
            ams_PARAM_DRAW_PRIMITIVE.ablend   = ablend;
            ams_PARAM_DRAW_PRIMITIVE.sortZ    = sortZ;
            AppMain.amDrawPrimitive3D(pEffect.drawState, ams_PARAM_DRAW_PRIMITIVE);
        }
        GlobalPool <NNS_VECTOR> .Release(nns_VECTOR);

        GlobalPool <NNS_VECTOR> .Release(nns_VECTOR2);

        GlobalPool <NNS_VECTOR> .Release(nns_VECTOR3);
    }
示例#19
0
    private static void gmWaterSurfaceProc(AppMain.MTS_TASK_TCB tcb)
    {
        AppMain.GMS_WATER_SURFACE_INFO work = (AppMain.GMS_WATER_SURFACE_INFO)tcb.work;
        float speed = 0.0f;

        if (AppMain.ObjObjectPauseCheck(0U) == 0U)
        {
            float num1 = (float)((int)work.water_time - (int)work.water_counter);
            if ((double)num1 != 0.0)
            {
                float num2 = (work.next_water_level - work.now_water_level) / num1;
                work.now_water_level += num2;
                if ((ushort)1 > (ushort)AppMain.MTM_MATH_ABS(work.now_water_level - work.next_water_level))
                {
                    work.water_time    = (ushort)0;
                    work.water_counter = (ushort)0;
                }
                else
                {
                    ++work.water_counter;
                }
            }
            else
            {
                work.now_water_level = work.next_water_level;
            }
            if (work.flag_draw)
            {
                AppMain.gmWaterSurfaceGameSystemSetWaterLevel((ushort)work.now_water_level);
                speed = AppMain.amSystemGetFrameRateMain();
            }
            else
            {
                AppMain.gmWaterSurfaceGameSystemSetWaterLevel(ushort.MaxValue);
                return;
            }
        }
        AppMain.OBS_CAMERA obsCamera1 = AppMain.ObjCameraGet(6);
        float x1 = obsCamera1.disp_pos.x;
        float y  = obsCamera1.disp_pos.y;
        float dy = -work.now_water_level - y;

        if ((double)dy < (double)-((int)AppMain.OBD_LCD_Y / 2 + 32))
        {
            AppMain.GMS_WATER_SURFACE_MGR mgr = AppMain.gmWaterSurfaceGetMgr();
            if (mgr == null)
            {
                return;
            }
            mgr.render_target = (AppMain.AMS_RENDER_TARGET)null;
        }
        else
        {
            bool flag = false;
            if ((double)dy > (double)AppMain.OBD_LCD_Y * 0.800000011920929)
            {
                y    = obsCamera1.disp_pos.y;
                dy   = (float)AppMain.OBD_LCD_Y * 0.8f;
                flag = true;
            }
            int   roll  = obsCamera1.roll;
            float scale = 1f / obsCamera1.scale;
            AppMain.dwaterUpdate(speed, x1, y, dy, roll, scale);
            if (!AppMain.GmMainIsDrawEnable())
            {
                return;
            }
            AppMain.dwaterSetParam();
            uint drawflag = 0;
            AppMain.ObjDraw3DNNSetCameraEx(6, 1, 9U);
            if (work.flag_enable_ref && !flag)
            {
                AppMain.dwaterDrawReflection(9U, drawflag);
            }
            AppMain.ObjDraw3DNNUserFunc(AppMain._gmWaterSurfaceTcbProcPreDrawDT, (object)null, 0, 9U);
            AppMain.ObjDraw3DNNSetCameraEx(AppMain.g_obj.glb_camera_id, 1, 9U);
            AppMain.ObjDraw3DNNSetCameraEx(6, 1, 4U);
            AppMain.AMS_PARAM_DRAW_PRIMITIVE prim = AppMain.GlobalPool <AppMain.AMS_PARAM_DRAW_PRIMITIVE> .Alloc();

            prim.aTest   = (short)0;
            prim.zMask   = (short)1;
            prim.zTest   = (short)1;
            prim.ablend  = 1;
            prim.bldSrc  = 770;
            prim.bldDst  = 1;
            prim.bldMode = 32774;
            AppMain.NNS_PRIM3D_PCT_ARRAY nnsPriM3DPctArray = AppMain.amDrawAlloc_NNS_PRIM3D_PCT(18);
            AppMain.NNS_PRIM3D_PCT[]     buffer            = nnsPriM3DPctArray.buffer;
            int offset = nnsPriM3DPctArray.offset;
            AppMain.OBS_CAMERA obsCamera2 = AppMain.ObjCameraGet(0);
            float x2   = obsCamera2.disp_pos.x;
            float Y    = -work.now_water_level;
            float f32  = AppMain.FX_FX32_TO_F32(1310720);
            float num1 = obsCamera2.znear + 1f;
            float num2 = 300f;
            float num3 = Y - (obsCamera2.disp_pos.y - 300f);
            uint  num4 = AppMain.AMD_RGBA8888(byte.MaxValue, byte.MaxValue, byte.MaxValue, (byte)96);
            for (int index1 = 0; index1 < 3; ++index1)
            {
                float num5   = num1 * (float)(index1 + 1);
                int   index2 = offset + index1 * 6;
                buffer[index2].Pos.Assign(x2 - num2, Y, f32 - num5);
                buffer[1 + index2].Pos.Assign(x2 + num2, Y, f32 - num5);
                buffer[2 + index2].Pos.Assign(x2 - num2, Y - num3, f32 - num5);
                buffer[5 + index2].Pos.Assign(x2 + num2, Y - num3, f32 - num5);
                buffer[index2].Col     = num4;
                buffer[1 + index2].Col = num4;
                buffer[2 + index2].Col = num4;
                buffer[5 + index2].Col = num4;
                float s;
                float c;
                AppMain.nnSinCos(AppMain.NNM_DEGtoA32(AppMain._dmap_water.speed_surface * 360f), out s, out c);
                float num6 = (float)((double)num2 * 2.0 / 128.0 * 0.5);
                float num7;
                float num8;
                float num9;
                float num10;
                if (index1 == 0)
                {
                    float num11 = x2 / 270f;
                    num7  = num11 - ((float)(int)num11 - AppMain._dmap_water.speed_surface);
                    num8  = num7 + num6;
                    num9  = 0.3f;
                    num10 = (float)((double)num9 + (double)num3 / 128.0 * 0.5 + (double)c / 5.0);
                }
                else if (index1 == 1)
                {
                    float num11 = x2 / 270f;
                    num8  = num11 - ((float)(int)num11 + AppMain._dmap_water.speed_surface * 2f);
                    num7  = num8 - num6 * 0.75f;
                    num9  = 1f;
                    num10 = (float)((double)num9 - (double)num3 * 0.75 / 128.0 * 0.5 + (double)s / 5.0);
                }
                else
                {
                    num7  = 11f / 64f;
                    num8  = num7 + 1f / 128f;
                    num9  = 0.5f;
                    num10 = num9 + 1f / 128f;
                    buffer[index2].Col     = AppMain.AMD_RGBA8888((byte)32, (byte)176, (byte)64, (byte)112);
                    buffer[1 + index2].Col = buffer[index2].Col;
                    buffer[2 + index2].Col = buffer[index2].Col;
                    buffer[5 + index2].Col = buffer[index2].Col;
                }
                buffer[index2].Tex.u     = num7;
                buffer[index2].Tex.v     = num9;
                buffer[1 + index2].Tex.u = num8;
                buffer[1 + index2].Tex.v = num9;
                buffer[2 + index2].Tex.u = num7;
                buffer[2 + index2].Tex.v = num10;
                buffer[5 + index2].Tex.u = num8;
                buffer[5 + index2].Tex.v = num10;
                buffer[3 + index2]       = buffer[1 + index2];
                buffer[4 + index2]       = buffer[2 + index2];
            }
            prim.format3D = 4;
            prim.type     = 0;
            prim.vtxPCT3D = nnsPriM3DPctArray;
            prim.count    = 18;
            prim.sortZ    = -num1;
            prim.texId    = 0;
            prim.texlist  = AppMain._dmap_water.tex_color.texlist;
            prim.uwrap    = 0;
            prim.vwrap    = 0;
            AppMain.gmWaterSurfaceMatrixPush(4U);
            AppMain.ObjDraw3DNNDrawPrimitive(prim, 4U);
            AppMain.gmWaterSurfaceMatrixPop(4U);
            if (!flag)
            {
                AppMain.dwaterDrawSurface(4U, drawflag);
            }
            AppMain.ObjDraw3DNNSetCameraEx(AppMain.g_obj.glb_camera_id, 1, 4U);
            AppMain.ObjDraw3DNNUserFunc(new AppMain.OBF_DRAW_USER_DT_FUNC(AppMain.gmWaterSurfaceTcbProcPostDrawDT), (object)null, 0, 8U);
            AppMain.GlobalPool <AppMain.AMS_PARAM_DRAW_PRIMITIVE> .Release(prim);
        }
    }
示例#20
0
    public static void GmGmkPulleyDrawServerMain()
    {
        if (!AppMain.GmMainIsDrawEnable())
        {
            return;
        }
        AppMain.GMS_GMK_PULLEY_MANAGER gmkPulleyManager = AppMain.gm_gmk_pulley_manager;
        if (gmkPulleyManager.num <= 0U)
        {
            return;
        }
        AppMain.AMS_PARAM_DRAW_PRIMITIVE prim = AppMain.GlobalPool <AppMain.AMS_PARAM_DRAW_PRIMITIVE> .Alloc();

        prim.type    = 1;
        prim.ablend  = 0;
        prim.bldSrc  = 768;
        prim.bldDst  = 774;
        prim.bldMode = 32774;
        prim.aTest   = (short)1;
        prim.zMask   = (short)0;
        prim.zTest   = (short)1;
        prim.noSort  = (short)1;
        prim.texlist = gmkPulleyManager.texlist;
        prim.texId   = (int)gmkPulleyManager.tex_id;
        uint lightColor = AppMain.GmMainGetLightColor();

        prim.uwrap    = 1;
        prim.vwrap    = 1;
        prim.count    = (int)gmkPulleyManager.num * 6 - 2;
        prim.vtxPCT3D = AppMain.amDrawAlloc_NNS_PRIM3D_PCT(prim.count);
        AppMain.NNS_PRIM3D_PCT[] buffer = prim.vtxPCT3D.buffer;
        int offset = prim.vtxPCT3D.offset;

        prim.format3D = 4;
        AppMain.NNS_MATRIX nnsMatrix1 = AppMain.GlobalPool <AppMain.NNS_MATRIX> .Alloc();

        AppMain.NNS_VECTOR dst = new AppMain.NNS_VECTOR();
        for (int index1 = 0; (long)index1 < (long)gmkPulleyManager.num; ++index1)
        {
            int index2 = offset + index1 * 6;
            int index3 = offset + index1 * 6 - 1;
            int index4 = offset + index1 * 6 + 4;
            AppMain.GMS_GMK_PULLEY_REGISTER gmkPulleyRegister = gmkPulleyManager.reg[index1];
            Vector3 vector3;
            vector3.X = AppMain.FX_FX32_TO_F32(gmkPulleyRegister.vec.x);
            vector3.Y = AppMain.FX_FX32_TO_F32(gmkPulleyRegister.vec.y);
            vector3.Z = AppMain.FX_FX32_TO_F32(gmkPulleyRegister.vec.z);
            AppMain.NNS_VECTOR[]   gmGmkPulleyPo    = AppMain.gm_gmk_pulley_pos[(int)gmkPulleyRegister.type];
            AppMain.NNS_TEXCOORD[] nnsTexcoordArray = AppMain.gm_gmk_pulley_tex[(int)gmkPulleyRegister.type];
            if (gmkPulleyRegister.flip != (ushort)0)
            {
                AppMain.nnMakeRotateYMatrix(nnsMatrix1, (int)gmkPulleyRegister.flip);
            }
            float num = 0.0f;
            if (gmkPulleyRegister.type == (ushort)2)
            {
                num = 2f;
            }
            for (int index5 = 0; index5 < 4; ++index5)
            {
                if (gmkPulleyRegister.flip != (ushort)0)
                {
                    AppMain.nnTransformVector(dst, nnsMatrix1, gmGmkPulleyPo[index5]);
                }
                else
                {
                    AppMain.nnCopyVector(dst, gmGmkPulleyPo[index5]);
                }
                int index6 = index2 + index5;
                buffer[index6].Pos.x = dst.x + vector3.X;
                buffer[index6].Pos.y = dst.y - vector3.Y + num;
                buffer[index6].Pos.z = dst.z + vector3.Z;
                buffer[index6].Tex.u = nnsTexcoordArray[index5].u;
                buffer[index6].Tex.v = nnsTexcoordArray[index5].v;
                buffer[index6].Col   = lightColor;
            }
            if (index1 != 0)
            {
                buffer[index3] = buffer[index2];
            }
            if ((long)index1 != (long)(gmkPulleyManager.num - 1U))
            {
                buffer[index4] = buffer[index2 + 3];
            }
        }
        //AppMain.GlobalPool<AppMain.NNS_VECTOR>.Release(dst);
        AppMain.GlobalPool <AppMain.NNS_MATRIX> .Release(nnsMatrix1);

        AppMain.NNS_MATRIX nnsMatrix2 = AppMain.GlobalPool <AppMain.NNS_MATRIX> .Alloc();

        AppMain.nnMakeUnitMatrix(nnsMatrix2);
        AppMain.amMatrixPush(nnsMatrix2);
        AppMain.ObjDraw3DNNDrawPrimitive(prim, 0U, 0, 0);
        AppMain.amMatrixPop();
        AppMain.GlobalPool <AppMain.AMS_PARAM_DRAW_PRIMITIVE> .Release(prim);

        AppMain.GlobalPool <AppMain.NNS_MATRIX> .Release(nnsMatrix2);

        gmkPulleyManager.num = 0U;
    }