예제 #1
0
    private static void gmGmkRockRideDrawFunc(AppMain.OBS_OBJECT_WORK obj_work)
    {
        AppMain.VecU16 vecU16          = new AppMain.VecU16(obj_work.dir);
        ushort         userTimerAngleZ = AppMain.gmGmkRockRideGetUserTimerAngleZ(obj_work);

        obj_work.dir.z = obj_work.spd_m >= 0 ? userTimerAngleZ : userTimerAngleZ;
        ushort userWork = (ushort)obj_work.user_work;

        obj_work.dir.x = userWork;
        AppMain.ObjDrawActionSummary(obj_work);
        obj_work.dir.Assign(vecU16);
    }
예제 #2
0
    private static void gmRingDrawFuncRing3D(AppMain.GMS_RING_WORK ring_work)
    {
        AppMain.VecU16 vecU16 = new AppMain.VecU16();
        vecU16.x = (ushort)0;
        vecU16.y = AppMain.gm_ring_sys_work.dir;
        AppMain.OBS_CAMERA obsCamera = AppMain.ObjCameraGet(AppMain.g_obj.glb_camera_id);
        vecU16.z = (ushort)-obsCamera.roll;
        int drawRingCount = (int)AppMain.gm_ring_sys_work.draw_ring_count;

        AppMain.gm_ring_sys_work.draw_ring_pos[drawRingCount].x = ring_work.pos.x;
        AppMain.gm_ring_sys_work.draw_ring_pos[drawRingCount].y = ring_work.pos.y;
        AppMain.gm_ring_sys_work.draw_ring_pos[drawRingCount].z = ring_work.pos.z;
        ++AppMain.gm_ring_sys_work.draw_ring_count;
    }
예제 #3
0
    private static void gmGmkRockFallDrawFunc(AppMain.OBS_OBJECT_WORK obj_work)
    {
        AppMain.VecU16 vecU16 = new AppMain.VecU16(obj_work.dir);
        ushort         roll   = ((AppMain.GMS_GMK_ROCK_FALL_WORK)obj_work).roll;

        obj_work.dir.y = roll;
        ushort userWork = (ushort)obj_work.user_work;

        obj_work.dir.z  = userWork;
        obj_work.dir.z += roll;
        AppMain.ObjDrawActionSummary(obj_work);
        AppMain.ObjDrawActionSummary(obj_work);
        obj_work.dir.Assign(vecU16);
    }
예제 #4
0
    // Token: 0x06000FE4 RID: 4068 RVA: 0x0008A9AC File Offset: 0x00088BAC
    private static void gmGmkRockFallDrawFunc(OBS_OBJECT_WORK obj_work)
    {
        AppMain.VecU16 vecU = new AppMain.VecU16(obj_work.dir);
        AppMain.GMS_GMK_ROCK_FALL_WORK gms_GMK_ROCK_FALL_WORK = (AppMain.GMS_GMK_ROCK_FALL_WORK)obj_work;
        ushort roll = gms_GMK_ROCK_FALL_WORK.roll;

        obj_work.dir.y = roll;
        ushort z = (ushort)obj_work.user_work;

        obj_work.dir.z = z;
        obj_work.dir.z = ( ushort )(obj_work.dir.z + roll);
        AppMain.ObjDrawActionSummary(obj_work);
        AppMain.ObjDrawActionSummary(obj_work);
        obj_work.dir.Assign(vecU);
    }
예제 #5
0
    // Token: 0x06000DA2 RID: 3490 RVA: 0x000783E0 File Offset: 0x000765E0
    private static void gmRingDrawFuncRing3D(AppMain.GMS_RING_WORK ring_work)
    {
        AppMain.VecU16 vecU = default(AppMain.VecU16);
        vecU.x = 0;
        vecU.y = AppMain.gm_ring_sys_work.dir;
        AppMain.OBS_CAMERA obs_CAMERA = AppMain.ObjCameraGet(AppMain.g_obj.glb_camera_id);
        vecU.z = ( ushort )(-( ushort )obs_CAMERA.roll);
        int draw_ring_count = (int)AppMain.gm_ring_sys_work.draw_ring_count;

        AppMain.gm_ring_sys_work.draw_ring_pos[draw_ring_count].x = ring_work.pos.x;
        AppMain.gm_ring_sys_work.draw_ring_pos[draw_ring_count].y = ring_work.pos.y;
        AppMain.gm_ring_sys_work.draw_ring_pos[draw_ring_count].z = ring_work.pos.z;
        AppMain.GMS_RING_SYS_WORK gms_RING_SYS_WORK = AppMain.gm_ring_sys_work;
        gms_RING_SYS_WORK.draw_ring_count += 1;
    }
예제 #6
0
    private static void gmGmkRockChaseDrawFunc(AppMain.OBS_OBJECT_WORK obj_work)
    {
        AppMain.GMS_GMK_ROCK_CHASE_WORK rock_work = (AppMain.GMS_GMK_ROCK_CHASE_WORK)obj_work;
        AppMain.VecU16 vecU16 = new AppMain.VecU16(obj_work.dir);
        ushort         angleZ = AppMain.gmGmkRockChaseGetAngleZ(rock_work);

        obj_work.dir.z = obj_work.spd_m >= 0 ? angleZ : angleZ;
        ushort userWork = (ushort)obj_work.user_work;

        obj_work.dir.x  = userWork;
        obj_work.pos.y += rock_work.current_bound;
        AppMain.ObjDrawActionSummary(obj_work);
        AppMain.ObjDrawActionSummary(obj_work);
        obj_work.dir.Assign(vecU16);
        obj_work.pos.y -= rock_work.current_bound;
    }
예제 #7
0
    // Token: 0x06000675 RID: 1653 RVA: 0x00039C60 File Offset: 0x00037E60
    public static void gmGmkTruckDispFunc(OBS_OBJECT_WORK obj_work)
    {
        AppMain.GMS_GMK_TRUCK_WORK gms_GMK_TRUCK_WORK = (AppMain.GMS_GMK_TRUCK_WORK)obj_work;
        AppMain.ObjDrawActionSummary(obj_work);
        AppMain.VecU16 dir = obj_work.dir;
        uint           num = obj_work.disp_flag | 16777216U;

        AppMain.nnMakeRotateXYZMatrix(gms_GMK_TRUCK_WORK.obj_3d_tire.user_obj_mtx_r, ( int )gms_GMK_TRUCK_WORK.tire_dir, ( int )gms_GMK_TRUCK_WORK.slope_f_y_dir, ( int )gms_GMK_TRUCK_WORK.slope_f_z_dir);
        AppMain.VecFx32 vecFx;
        vecFx.x = AppMain.FXM_FLOAT_TO_FX32(gms_GMK_TRUCK_WORK.tire_pos_f.M03);
        vecFx.y = AppMain.FXM_FLOAT_TO_FX32(-gms_GMK_TRUCK_WORK.tire_pos_f.M13);
        vecFx.z = AppMain.FXM_FLOAT_TO_FX32(gms_GMK_TRUCK_WORK.tire_pos_f.M23);
        AppMain.ObjDrawAction3DNN(gms_GMK_TRUCK_WORK.obj_3d_tire, new AppMain.VecFx32?(vecFx), new AppMain.VecU16?(dir), obj_work.scale, ref num);
        vecFx.x = AppMain.FXM_FLOAT_TO_FX32(gms_GMK_TRUCK_WORK.tire_pos_b.M03);
        vecFx.y = AppMain.FXM_FLOAT_TO_FX32(-gms_GMK_TRUCK_WORK.tire_pos_b.M13);
        vecFx.z = AppMain.FXM_FLOAT_TO_FX32(gms_GMK_TRUCK_WORK.tire_pos_b.M23);
        AppMain.ObjDrawAction3DNN(gms_GMK_TRUCK_WORK.obj_3d_tire, new AppMain.VecFx32?(vecFx), new AppMain.VecU16?(dir), obj_work.scale, ref num);
    }
    // Token: 0x060008AD RID: 2221 RVA: 0x0004E70C File Offset: 0x0004C90C
    private static void gmGmkRockRideDrawFunc(AppMain.OBS_OBJECT_WORK obj_work)
    {
        AppMain.VecU16 vecU = new AppMain.VecU16(obj_work.dir);
        ushort         z    = AppMain.gmGmkRockRideGetUserTimerAngleZ(obj_work);

        if (obj_work.spd_m < 0)
        {
            obj_work.dir.z = z;
        }
        else
        {
            obj_work.dir.z = z;
        }
        ushort x = (ushort)obj_work.user_work;

        obj_work.dir.x = x;
        AppMain.ObjDrawActionSummary(obj_work);
        obj_work.dir.Assign(vecU);
    }
예제 #9
0
    // Token: 0x06000FE5 RID: 4069 RVA: 0x0008AA20 File Offset: 0x00088C20
    private static void gmGmkRockChaseDrawFunc(OBS_OBJECT_WORK obj_work)
    {
        AppMain.GMS_GMK_ROCK_CHASE_WORK gms_GMK_ROCK_CHASE_WORK = (AppMain.GMS_GMK_ROCK_CHASE_WORK)obj_work;
        AppMain.VecU16 vecU = new AppMain.VecU16(obj_work.dir);
        ushort         z    = AppMain.gmGmkRockChaseGetAngleZ(gms_GMK_ROCK_CHASE_WORK);

        if (obj_work.spd_m < 0)
        {
            obj_work.dir.z = z;
        }
        else
        {
            obj_work.dir.z = z;
        }
        ushort x = (ushort)obj_work.user_work;

        obj_work.dir.x = x;
        obj_work.pos.y = obj_work.pos.y + gms_GMK_ROCK_CHASE_WORK.current_bound;
        AppMain.ObjDrawActionSummary(obj_work);
        AppMain.ObjDrawActionSummary(obj_work);
        obj_work.dir.Assign(vecU);
        obj_work.pos.y = obj_work.pos.y - gms_GMK_ROCK_CHASE_WORK.current_bound;
    }
예제 #10
0
    private static void gmRingDrawEnd()
    {
        if (AppMain.gm_ring_sys_work.draw_ring_count <= (ushort)0 || !AppMain.GmMainIsDrawEnable())
        {
            return;
        }
        AppMain.VecU16 vecU16 = new AppMain.VecU16();
        vecU16.x = (ushort)0;
        vecU16.y = AppMain.gm_ring_sys_work.dir;
        vecU16.z = AppMain.GmMainGetObjectRotation();
        AppMain.GMS_RING_SYS_WORK gmRingSysWork = AppMain.gm_ring_sys_work;
        uint drawRingCount = (uint)AppMain.gm_ring_sys_work.draw_ring_count;

        AppMain.SNNS_VECTOR disp_pos;
        AppMain.ObjCameraDispPosGet(0, out disp_pos);
        float s1;
        float c1;

        AppMain.nnSinCos((int)vecU16.z - 8192, out s1, out c1);
        s1 *= 13.57638f;
        float num1 = c1 * 13.57638f;
        float s2;
        float c2;

        AppMain.nnSinCos((int)vecU16.z - 24576, out s2, out c2);
        float num2 = s2 * 13.57638f;
        float num3 = c2 * 13.57638f;

        AppMain.VecFx32     vecFx32    = new AppMain.VecFx32(gmRingSysWork.draw_ring_pos[0]);
        AppMain.SNNS_MATRIX snnsMatrix = new AppMain.SNNS_MATRIX();
        AppMain.nnMakeUnitMatrix(ref snnsMatrix);
        AppMain.nnTranslateMatrix(ref snnsMatrix, ref snnsMatrix, 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.type    = 1;
        AppMain._AMS_PARAM_DRAW_PRIMITIVE.count   = 6 * (int)drawRingCount - 2;
        AppMain._AMS_PARAM_DRAW_PRIMITIVE.ablend  = 0;
        AppMain._AMS_PARAM_DRAW_PRIMITIVE.bldSrc  = 768;
        AppMain._AMS_PARAM_DRAW_PRIMITIVE.bldDst  = 774;
        AppMain._AMS_PARAM_DRAW_PRIMITIVE.bldMode = 32774;
        AppMain._AMS_PARAM_DRAW_PRIMITIVE.aTest   = (short)1;
        AppMain._AMS_PARAM_DRAW_PRIMITIVE.zMask   = (short)0;
        AppMain._AMS_PARAM_DRAW_PRIMITIVE.zTest   = (short)1;
        AppMain._AMS_PARAM_DRAW_PRIMITIVE.noSort  = (short)1;
        AppMain._AMS_PARAM_DRAW_PRIMITIVE.texlist = AppMain.gm_ring_obj_3d.texlist;
        AppMain._AMS_PARAM_DRAW_PRIMITIVE.texId   = 0;
        AppMain._AMS_PARAM_DRAW_PRIMITIVE.uwrap   = 1;
        AppMain._AMS_PARAM_DRAW_PRIMITIVE.vwrap   = 1;
        uint color = AppMain.gm_ring_sys_work.color;

        AppMain._AMS_PARAM_DRAW_PRIMITIVE.vtxPCT3D = AppMain.amDrawAlloc_NNS_PRIM3D_PCT(AppMain._AMS_PARAM_DRAW_PRIMITIVE.count);
        AppMain.NNS_PRIM3D_PCT[] buffer = AppMain._AMS_PARAM_DRAW_PRIMITIVE.vtxPCT3D.buffer;
        int offset = AppMain._AMS_PARAM_DRAW_PRIMITIVE.vtxPCT3D.offset;

        AppMain._AMS_PARAM_DRAW_PRIMITIVE.format3D = 4;
        for (int index1 = 0; (long)index1 < (long)drawRingCount; ++index1)
        {
            int    index2 = offset + 6 * index1;
            ushort num4   = (ushort)((uint)AppMain.gm_ring_sys_work.draw_ring_uv_frame / 4U);
            buffer[index2].Tex.u     = buffer[index2 + 1].Tex.u = AppMain.gm_ring_roll_uv[0][(int)num4];
            buffer[index2 + 2].Tex.u = buffer[index2 + 3].Tex.u = AppMain.gm_ring_roll_uv[0][(int)num4] + 0.25f;
            buffer[index2].Tex.v     = buffer[index2 + 2].Tex.v = AppMain.gm_ring_roll_uv[1][(int)num4];
            buffer[index2 + 1].Tex.v = buffer[index2 + 3].Tex.v = AppMain.gm_ring_roll_uv[1][(int)num4] + 0.25f;
            buffer[index2].Col       = color;
            buffer[index2 + 1].Col   = buffer[index2 + 2].Col = buffer[index2 + 3].Col = buffer[index2].Col;
            buffer[index2].Pos.x     = s1 + AppMain.FX_FX32_TO_F32(gmRingSysWork.draw_ring_pos[index1].x - vecFx32.x);
            buffer[index2 + 1].Pos.x = num2 + AppMain.FX_FX32_TO_F32(gmRingSysWork.draw_ring_pos[index1].x - vecFx32.x);
            buffer[index2 + 2].Pos.x = -num2 + AppMain.FX_FX32_TO_F32(gmRingSysWork.draw_ring_pos[index1].x - vecFx32.x);
            buffer[index2 + 3].Pos.x = -s1 + AppMain.FX_FX32_TO_F32(gmRingSysWork.draw_ring_pos[index1].x - vecFx32.x);
            buffer[index2].Pos.y     = num1 - AppMain.FX_FX32_TO_F32(gmRingSysWork.draw_ring_pos[index1].y - vecFx32.y);
            buffer[index2 + 1].Pos.y = num3 - AppMain.FX_FX32_TO_F32(gmRingSysWork.draw_ring_pos[index1].y - vecFx32.y);
            buffer[index2 + 2].Pos.y = -num3 - AppMain.FX_FX32_TO_F32(gmRingSysWork.draw_ring_pos[index1].y - vecFx32.y);
            buffer[index2 + 3].Pos.y = -num1 - AppMain.FX_FX32_TO_F32(gmRingSysWork.draw_ring_pos[index1].y - vecFx32.y);
            buffer[index2].Pos.z     = buffer[index2 + 1].Pos.z = buffer[index2 + 2].Pos.z = buffer[index2 + 3].Pos.z = AppMain.FX_FX32_TO_F32(gmRingSysWork.draw_ring_pos[index1].z - vecFx32.z) - 1f;
            if (index1 != 0)
            {
                buffer[index2 - 1] = buffer[index2];
            }
            if ((long)(index1 + 1) < (long)drawRingCount)
            {
                buffer[index2 + 4] = buffer[index2 + 3];
            }
        }
        AppMain._AMS_PARAM_DRAW_PRIMITIVE.sortZ = AppMain.nnDistanceVector(ref buffer[offset].Pos, ref disp_pos);
        AppMain.amMatrixPush(ref snnsMatrix);
        AppMain.ObjDraw3DNNDrawPrimitive(AppMain._AMS_PARAM_DRAW_PRIMITIVE);
        AppMain.amMatrixPop();
    }
예제 #11
0
    public static void gmGmkSwWallDispFunc(AppMain.OBS_OBJECT_WORK obj_work)
    {
        AppMain.GMS_GMK_SWWALL_WORK gmsGmkSwwallWork = (AppMain.GMS_GMK_SWWALL_WORK)obj_work;
        AppMain.VecFx32             vecFx32          = new AppMain.VecFx32();
        AppMain.VecFx32             scale            = new AppMain.VecFx32();
        AppMain.VecU16 vecU16 = new AppMain.VecU16();
        int            num1   = (gmsGmkSwwallWork.wall_draw_size + 131071) / 131072;

        AppMain.OBS_COLLISION_WORK colWork = gmsGmkSwwallWork.gmk_work.ene_com.col_work;
        vecFx32.Assign(obj_work.pos);
        int num2;
        int num3 = num2 = 0;

        if (gmsGmkSwwallWork.wall_type <= (ushort)1)
        {
            if (gmsGmkSwwallWork.wall_type == (ushort)0)
            {
                vecFx32.x += (int)colWork.obj_col.width + (int)colWork.obj_col.ofst_x - 16 << 12;
                num3       = -131072;
            }
            else
            {
                vecFx32.x += (int)colWork.obj_col.ofst_x + 16 << 12;
                num3       = 131072;
            }
        }
        else if (gmsGmkSwwallWork.wall_type == (ushort)2)
        {
            vecFx32.y += (int)colWork.obj_col.height + (int)colWork.obj_col.ofst_y - 16 << 12;
            num2       = -131072;
        }
        else
        {
            vecFx32.y += (int)colWork.obj_col.ofst_y + 16 << 12;
            num2       = 131072;
        }
        uint dispFlag = obj_work.disp_flag;

        if (((int)gmsGmkSwwallWork.gmk_work.ene_com.enemy_flag & 2) != 0)
        {
            while (num1 > 0)
            {
                AppMain.ObjDrawAction3DNN(obj_work.obj_3d, new AppMain.VecFx32?(vecFx32), new AppMain.VecU16?(obj_work.dir), obj_work.scale, ref dispFlag);
                --num1;
                vecFx32.x += num3;
                vecFx32.y += num2;
            }
        }
        else
        {
            while (num1 > 0)
            {
                AppMain.ObjDrawAction3DNN(obj_work.obj_3d, new AppMain.VecFx32?(vecFx32), new AppMain.VecU16?(obj_work.dir), obj_work.scale, ref dispFlag);
                --num1;
                vecFx32.x += num3;
                vecFx32.y += num2;
            }
        }
        if (((int)gmsGmkSwwallWork.gmk_work.ene_com.enemy_flag & 1) == 0)
        {
            return;
        }
        vecU16.x = vecU16.y = (ushort)0;
        vecU16.z = (ushort)((uint)gmsGmkSwwallWork.gear_dir + (uint)gmsGmkSwwallWork.gear_base_dir);
        AppMain.ObjDrawAction3DNN(gmsGmkSwwallWork.obj_3d_opt[0], new AppMain.VecFx32?(gmsGmkSwwallWork.gear_pos), new AppMain.VecU16?(vecU16), obj_work.scale, ref dispFlag);
        scale.x = scale.y = scale.z = 4096;
        if (((int)gmsGmkSwwallWork.gmk_work.ene_com.enemy_flag & 4) != 0)
        {
            scale.x = -scale.x;
        }
        AppMain.ObjDrawAction3DNN(gmsGmkSwwallWork.obj_3d_opt[1], new AppMain.VecFx32?(gmsGmkSwwallWork.gearbase_pos), new AppMain.VecU16?(obj_work.dir), scale, ref dispFlag);
    }
    // Token: 0x06000757 RID: 1879 RVA: 0x0004096C File Offset: 0x0003EB6C
    public static void gmGmkSwWallDispFunc(AppMain.OBS_OBJECT_WORK obj_work)
    {
        AppMain.GMS_GMK_SWWALL_WORK gms_GMK_SWWALL_WORK = (AppMain.GMS_GMK_SWWALL_WORK)obj_work;
        AppMain.VecFx32             vecFx = default(AppMain.VecFx32);
        AppMain.VecFx32             scale = default(AppMain.VecFx32);
        AppMain.VecU16 vecU = default(AppMain.VecU16);
        int            i    = (gms_GMK_SWWALL_WORK.wall_draw_size + 131071) / 131072;

        AppMain.OBS_COLLISION_WORK col_work = gms_GMK_SWWALL_WORK.gmk_work.ene_com.col_work;
        vecFx.Assign(obj_work.pos);
        int num2;
        int num = num2 = 0;

        if (gms_GMK_SWWALL_WORK.wall_type <= 1)
        {
            if (gms_GMK_SWWALL_WORK.wall_type == 0)
            {
                vecFx.x += ( int )(col_work.obj_col.width + ( ushort )col_work.obj_col.ofst_x - 16) << 12;
                num2     = -131072;
            }
            else
            {
                vecFx.x += ( int )(col_work.obj_col.ofst_x + 16) << 12;
                num2     = 131072;
            }
        }
        else if (gms_GMK_SWWALL_WORK.wall_type == 2)
        {
            vecFx.y += ( int )(col_work.obj_col.height + ( ushort )col_work.obj_col.ofst_y - 16) << 12;
            num      = -131072;
        }
        else
        {
            vecFx.y += ( int )(col_work.obj_col.ofst_y + 16) << 12;
            num      = 131072;
        }
        uint disp_flag = obj_work.disp_flag;

        if ((gms_GMK_SWWALL_WORK.gmk_work.ene_com.enemy_flag & 2U) != 0U)
        {
            while (i > 0)
            {
                AppMain.ObjDrawAction3DNN(obj_work.obj_3d, new AppMain.VecFx32?(vecFx), new AppMain.VecU16?(obj_work.dir), obj_work.scale, ref disp_flag);
                i--;
                vecFx.x += num2;
                vecFx.y += num;
            }
        }
        else
        {
            while (i > 0)
            {
                AppMain.ObjDrawAction3DNN(obj_work.obj_3d, new AppMain.VecFx32?(vecFx), new AppMain.VecU16?(obj_work.dir), obj_work.scale, ref disp_flag);
                i--;
                vecFx.x += num2;
                vecFx.y += num;
            }
        }
        if ((gms_GMK_SWWALL_WORK.gmk_work.ene_com.enemy_flag & 1U) != 0U)
        {
            vecU.x = (vecU.y = 0);
            vecU.z = ( ushort )(gms_GMK_SWWALL_WORK.gear_dir + gms_GMK_SWWALL_WORK.gear_base_dir);
            AppMain.ObjDrawAction3DNN(gms_GMK_SWWALL_WORK.obj_3d_opt[0], new AppMain.VecFx32?(gms_GMK_SWWALL_WORK.gear_pos), new AppMain.VecU16?(vecU), obj_work.scale, ref disp_flag);
            scale.x = (scale.y = (scale.z = 4096));
            if ((gms_GMK_SWWALL_WORK.gmk_work.ene_com.enemy_flag & 4U) != 0U)
            {
                scale.x = -scale.x;
            }
            AppMain.ObjDrawAction3DNN(gms_GMK_SWWALL_WORK.obj_3d_opt[1], new AppMain.VecFx32?(gms_GMK_SWWALL_WORK.gearbase_pos), new AppMain.VecU16?(obj_work.dir), scale, ref disp_flag);
        }
    }
예제 #13
0

        
예제 #14
0

        
예제 #15
0
    // Token: 0x06000D9A RID: 3482 RVA: 0x0007781C File Offset: 0x00075A1C
    public static void gmRingDrawEnd()
    {
        if (AppMain.gm_ring_sys_work.draw_ring_count <= 0)
        {
            return;
        }
        if (!AppMain.GmMainIsDrawEnable())
        {
            return;
        }
        AppMain.VecU16 vecU = default(AppMain.VecU16);
        vecU.x = 0;
        vecU.y = AppMain.gm_ring_sys_work.dir;
        vecU.z = AppMain.GmMainGetObjectRotation();
        AppMain.GMS_RING_SYS_WORK gms_RING_SYS_WORK = AppMain.gm_ring_sys_work;
        uint        draw_ring_count = (uint)AppMain.gm_ring_sys_work.draw_ring_count;
        SNNS_VECTOR snns_VECTOR;

        ObjCamera.DispPosGet(0, out snns_VECTOR);
        float num;
        float num2;

        AppMain.nnSinCos((int)vecU.z + -8192, out num, out num2);
        num  *= 13.576385f;
        num2 *= 13.576385f;
        float num3;
        float num4;

        AppMain.nnSinCos((int)vecU.z + -24576, out num3, out num4);
        num3 *= 13.576385f;
        num4 *= 13.576385f;
        AppMain.VecFx32 vecFx       = new AppMain.VecFx32(gms_RING_SYS_WORK.draw_ring_pos[0]);
        SNNS_MATRIX     snns_MATRIX = default(SNNS_MATRIX);

        AppMain.nnMakeUnitMatrix(ref snns_MATRIX);
        AppMain.nnTranslateMatrix(ref snns_MATRIX, ref snns_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.type    = 1;
        AppMain._AMS_PARAM_DRAW_PRIMITIVE.count   = (int)(6U * draw_ring_count - 2U);
        AppMain._AMS_PARAM_DRAW_PRIMITIVE.ablend  = 0;
        AppMain._AMS_PARAM_DRAW_PRIMITIVE.bldSrc  = 768;
        AppMain._AMS_PARAM_DRAW_PRIMITIVE.bldDst  = 774;
        AppMain._AMS_PARAM_DRAW_PRIMITIVE.bldMode = 32774;
        AppMain._AMS_PARAM_DRAW_PRIMITIVE.aTest   = 1;
        AppMain._AMS_PARAM_DRAW_PRIMITIVE.zMask   = 0;
        AppMain._AMS_PARAM_DRAW_PRIMITIVE.zTest   = 1;
        AppMain._AMS_PARAM_DRAW_PRIMITIVE.noSort  = 1;
        AppMain._AMS_PARAM_DRAW_PRIMITIVE.texlist = AppMain.gm_ring_obj_3d.texlist;
        AppMain._AMS_PARAM_DRAW_PRIMITIVE.texId   = 0;
        AppMain._AMS_PARAM_DRAW_PRIMITIVE.uwrap   = 1;
        AppMain._AMS_PARAM_DRAW_PRIMITIVE.vwrap   = 1;
        uint color = AppMain.gm_ring_sys_work.color;

        AppMain._AMS_PARAM_DRAW_PRIMITIVE.vtxPCT3D = AppMain.amDrawAlloc_NNS_PRIM3D_PCT(AppMain._AMS_PARAM_DRAW_PRIMITIVE.count);
        AppMain.NNS_PRIM3D_PCT[] buffer = AppMain._AMS_PARAM_DRAW_PRIMITIVE.vtxPCT3D.buffer;
        int offset = AppMain._AMS_PARAM_DRAW_PRIMITIVE.vtxPCT3D.offset;

        AppMain._AMS_PARAM_DRAW_PRIMITIVE.format3D = 4;
        int num5 = 0;

        while ((long)num5 < (long)((ulong)draw_ring_count))
        {
            int    num6 = offset + 6 * num5;
            ushort num7 = (ushort)(AppMain.gm_ring_sys_work.draw_ring_uv_frame / 4);
            buffer[num6].Tex.u     = (buffer[num6 + 1].Tex.u = AppMain.gm_ring_roll_uv[0][(int)num7]);
            buffer[num6 + 2].Tex.u = (buffer[num6 + 3].Tex.u = AppMain.gm_ring_roll_uv[0][(int)num7] + 0.25f);
            buffer[num6].Tex.v     = (buffer[num6 + 2].Tex.v = AppMain.gm_ring_roll_uv[1][(int)num7]);
            buffer[num6 + 1].Tex.v = (buffer[num6 + 3].Tex.v = AppMain.gm_ring_roll_uv[1][(int)num7] + 0.25f);
            buffer[num6].Col       = color;
            buffer[num6 + 1].Col   = (buffer[num6 + 2].Col = (buffer[num6 + 3].Col = buffer[num6].Col));
            buffer[num6].Pos.x     = num + AppMain.FX_FX32_TO_F32(gms_RING_SYS_WORK.draw_ring_pos[num5].x - vecFx.x);
            buffer[num6 + 1].Pos.x = num3 + AppMain.FX_FX32_TO_F32(gms_RING_SYS_WORK.draw_ring_pos[num5].x - vecFx.x);
            buffer[num6 + 2].Pos.x = -num3 + AppMain.FX_FX32_TO_F32(gms_RING_SYS_WORK.draw_ring_pos[num5].x - vecFx.x);
            buffer[num6 + 3].Pos.x = -num + AppMain.FX_FX32_TO_F32(gms_RING_SYS_WORK.draw_ring_pos[num5].x - vecFx.x);
            buffer[num6].Pos.y     = num2 - AppMain.FX_FX32_TO_F32(gms_RING_SYS_WORK.draw_ring_pos[num5].y - vecFx.y);
            buffer[num6 + 1].Pos.y = num4 - AppMain.FX_FX32_TO_F32(gms_RING_SYS_WORK.draw_ring_pos[num5].y - vecFx.y);
            buffer[num6 + 2].Pos.y = -num4 - AppMain.FX_FX32_TO_F32(gms_RING_SYS_WORK.draw_ring_pos[num5].y - vecFx.y);
            buffer[num6 + 3].Pos.y = -num2 - AppMain.FX_FX32_TO_F32(gms_RING_SYS_WORK.draw_ring_pos[num5].y - vecFx.y);
            buffer[num6].Pos.z     = (buffer[num6 + 1].Pos.z = (buffer[num6 + 2].Pos.z = (buffer[num6 + 3].Pos.z = -1f + AppMain.FX_FX32_TO_F32(gms_RING_SYS_WORK.draw_ring_pos[num5].z - vecFx.z))));
            if (num5 != 0)
            {
                buffer[num6 - 1] = buffer[num6];
            }
            if ((long)(num5 + 1) < (long)((ulong)draw_ring_count))
            {
                buffer[num6 + 4] = buffer[num6 + 3];
            }
            num5++;
        }
        AppMain._AMS_PARAM_DRAW_PRIMITIVE.sortZ = AppMain.nnDistanceVector(ref buffer[offset].Pos, ref snns_VECTOR);
        AppMain.amMatrixPush(ref snns_MATRIX);
        AppMain.ObjDraw3DNNDrawPrimitive(AppMain._AMS_PARAM_DRAW_PRIMITIVE);
        AppMain.amMatrixPop();
    }