예제 #1
0
    // Token: 0x06000D85 RID: 3461 RVA: 0x0007644C File Offset: 0x0007464C
    private static void gmSplStageRolling(MTS_TASK_TCB tcb)
    {
        AppMain.GMS_SPL_STG_WORK gms_SPL_STG_WORK = (AppMain.GMS_SPL_STG_WORK)tcb.work;
        OBS_CAMERA obs_CAMERA = ObjCamera.Get(0);

        if (AppMain.ObjObjectPauseCheck(0U) != 0U)
        {
            return;
        }
        if (obs_CAMERA == null)
        {
            return;
        }
        gms_SPL_STG_WORK.roll_spd += 56;
        gms_SPL_STG_WORK.roll     += gms_SPL_STG_WORK.roll_spd;
        obs_CAMERA.roll            = gms_SPL_STG_WORK.roll;
        gms_SPL_STG_WORK.counter  += 1U;
        if (gms_SPL_STG_WORK.counter == 90U)
        {
            AppMain.IzFadeInitEasy(0U, 3U, 30f);
        }
        if (gms_SPL_STG_WORK.counter > 90U && AppMain.IzFadeIsEnd())
        {
            AppMain.IzFadeExit();
            AppMain.IzFadeRestoreDrawSetting();
            AppMain.GmObjSetAllObjectNoDisp();
            AppMain.GmRingGetWork().flag |= 1U;
            AppMain.GmFixSetDisp(false);
            gms_SPL_STG_WORK.flag   |= 4U;
            gms_SPL_STG_WORK.counter = 1U;
            AppMain.mtTaskChangeTcbProcedure(tcb, AppMain.gmSplStageGotoEnd);
            obs_CAMERA.roll = 0;
            AppMain.g_gm_main_system.pseudofall_dir = 0;
        }
    }
예제 #2
0
    // Token: 0x06000129 RID: 297 RVA: 0x0000D314 File Offset: 0x0000B514
    public static void GetTargetRollCamera(OBS_CAMERA obj_camera,
                                           AppMain.NNS_CAMERA_TARGET_ROLL troll_camera)
    {
        troll_camera.User       = 0U;
        troll_camera.Fovy       = obj_camera.fovy;
        troll_camera.Aspect     = obj_camera.aspect;
        troll_camera.ZNear      = obj_camera.znear;
        troll_camera.ZFar       = obj_camera.zfar;
        troll_camera.Position.x = obj_camera.disp_pos.x;
        troll_camera.Position.y = obj_camera.disp_pos.y;
        troll_camera.Position.z = obj_camera.disp_pos.z;
        if (obj_camera.target_obj != null)
        {
            troll_camera.Target.x = AppMain.FXM_FX32_TO_FLOAT(obj_camera.target_obj.pos.x);
            troll_camera.Target.y = AppMain.FXM_FX32_TO_FLOAT(obj_camera.target_obj.pos.y);
            troll_camera.Target.z = AppMain.FXM_FX32_TO_FLOAT(obj_camera.target_obj.pos.z);
        }
        else
        {
            troll_camera.Target.x = obj_camera.target_pos.x;
            troll_camera.Target.y = obj_camera.target_pos.y;
            troll_camera.Target.z = obj_camera.target_pos.z;
        }

        troll_camera.Roll = obj_camera.roll + 16384;
    }
예제 #3
0
    // Token: 0x06001238 RID: 4664 RVA: 0x0009F600 File Offset: 0x0009D800
    private static void gmGmkDrainTankOutMainSplash(OBS_OBJECT_WORK obj_work)
    {
        GMS_PLAYER_WORK gms_PLAYER_WORK = AppMain.g_gm_main_system.ply_work[(int)((UIntPtr)0)];

        if ((gms_PLAYER_WORK.player_flag & 1024U) != 0U)
        {
            AppMain.gmGmkDrainTankOutUpdateDie(obj_work);
            return;
        }
        if (AppMain.gmGmkDrainTankOutCheckDeleteTask(obj_work, 1638400, 1228800))
        {
            AppMain.gmGmkDrainTankOutRequestDeleteTask(obj_work);
            return;
        }
        AppMain.GMS_GMK_DRAIN_TANK_OUT_WORK gms_GMK_DRAIN_TANK_OUT_WORK = (AppMain.GMS_GMK_DRAIN_TANK_OUT_WORK)obj_work;
        OBS_OBJECT_WORK obj_work2 = gms_PLAYER_WORK.obj_work;

        AppMain.GmWaterSurfaceRequestAddWatarLevel(0.001f, 0, true);
        OBS_CAMERA obs_CAMERA = ObjCamera.Get(0);

        obs_CAMERA.roll = gms_GMK_DRAIN_TANK_OUT_WORK.camera_roll;
        if (gms_GMK_DRAIN_TANK_OUT_WORK.base_pos_x < obj_work2.pos.x)
        {
            obj_work2.move_flag |= 128U;
            obj_work2.move_flag &= 4294967039U;
            obj_work2.spd.x      = 65536;
            obj_work2.spd_add.x  = -896;
            GmPlayer.CameraOffsetSet(gms_PLAYER_WORK, 0, 0);
            GmCamera.AllowReset();
            AppMain.gmGmkDrainTankOutChangeModeEnd(obj_work);
        }
    }
예제 #4
0
    // Token: 0x06000D8A RID: 3466 RVA: 0x000766AC File Offset: 0x000748AC
    private static void gmSplStageNudgeCtrl()
    {
        GMS_PLAYER_WORK gms_PLAYER_WORK = AppMain.g_gm_main_system.ply_work[(int)((UIntPtr)0)];
        OBS_CAMERA      obs_CAMERA      = ObjCamera.Get(0);

        if (gms_PLAYER_WORK.nudge_timer != 0)
        {
            int num = ((int)(gms_PLAYER_WORK.nudge_timer * 8) << 12) / 30;
            if ((gms_PLAYER_WORK.nudge_timer & 2) != 0)
            {
                num = -num;
            }
            int num2 = 0;
            AppMain.GmObjGetRotPosXY(num, num2, ref gms_PLAYER_WORK.obj_work.ofst.x, ref gms_PLAYER_WORK.obj_work.ofst.y, AppMain.g_gm_main_system.pseudofall_dir);
            AppMain.GmObjGetRotPosXY(num, num2, ref num, ref num2, ( ushort )-AppMain.g_gm_main_system.pseudofall_dir);
            obs_CAMERA.ofst.x = AppMain.FXM_FX32_TO_FLOAT(num);
            obs_CAMERA.ofst.y = AppMain.FXM_FX32_TO_FLOAT(num2);
            GMS_PLAYER_WORK gms_PLAYER_WORK2 = gms_PLAYER_WORK;
            gms_PLAYER_WORK2.nudge_timer -= 1;
            return;
        }
        obs_CAMERA.ofst.x = 0f;
        obs_CAMERA.ofst.y = 0f;
        gms_PLAYER_WORK.obj_work.ofst.x = 0;
        gms_PLAYER_WORK.obj_work.ofst.y = 0;
        gms_PLAYER_WORK.nudge_ofst_x    = 0;
    }
예제 #5
0
    // Token: 0x0600012B RID: 299 RVA: 0x0000D58C File Offset: 0x0000B78C
    public static void GetTargetUpVecCamera(OBS_CAMERA obj_camera,
                                            AppMain.NNS_CAMERA_TARGET_UPVECTOR tupvec_camera)
    {
        tupvec_camera.User       = 0U;
        tupvec_camera.Fovy       = obj_camera.fovy;
        tupvec_camera.Aspect     = obj_camera.aspect;
        tupvec_camera.ZNear      = obj_camera.znear;
        tupvec_camera.ZFar       = obj_camera.zfar;
        tupvec_camera.Position.x = obj_camera.disp_pos.x;
        tupvec_camera.Position.y = obj_camera.disp_pos.y;
        tupvec_camera.Position.z = obj_camera.disp_pos.z;
        if (obj_camera.target_obj != null)
        {
            tupvec_camera.Target.x = AppMain.FXM_FX32_TO_FLOAT(obj_camera.target_obj.pos.x);
            tupvec_camera.Target.y = AppMain.FXM_FX32_TO_FLOAT(obj_camera.target_obj.pos.y);
            tupvec_camera.Target.z = AppMain.FXM_FX32_TO_FLOAT(obj_camera.target_obj.pos.z);
        }
        else
        {
            tupvec_camera.Target.x = obj_camera.target_pos.x;
            tupvec_camera.Target.y = obj_camera.target_pos.y;
            tupvec_camera.Target.z = obj_camera.target_pos.z;
        }

        tupvec_camera.UpVector.Assign(obj_camera.up_vec);
    }
예제 #6
0
    // Token: 0x06000D84 RID: 3460 RVA: 0x00076328 File Offset: 0x00074528
    private static void gmSplStagePlayEndChk(MTS_TASK_TCB tcb)
    {
        AppMain.GMS_SPL_STG_WORK gms_SPL_STG_WORK = (AppMain.GMS_SPL_STG_WORK)tcb.work;
        GMS_PLAYER_WORK          gms_PLAYER_WORK  = AppMain.g_gm_main_system.ply_work[(int)((UIntPtr)0)];
        OBS_CAMERA obs_CAMERA = ObjCamera.Get(0);

        if (AppMain.ObjObjectPauseCheck(0U) != 0U)
        {
            return;
        }
        AppMain.gmSplStageLightCtrl(gms_SPL_STG_WORK);
        gms_SPL_STG_WORK.flag &= 4294967294U;
        AppMain.gmSplStageNudgeCtrl();
        AppMain.gmSplStageRingGateChk(gms_SPL_STG_WORK);
        if ((AppMain.g_gm_main_system.game_flag & 458752U) != 0U)
        {
            AppMain.g_gm_main_system.game_flag &= 4294966271U;
            gms_PLAYER_WORK.obj_work.flag      |= 130U;
            gms_PLAYER_WORK.obj_work.move_flag |= 8448U;
            gms_PLAYER_WORK.obj_work.disp_flag &= 4294967294U;
            gms_PLAYER_WORK.player_flag        |= 4194304U;
            if ((AppMain.g_gm_main_system.game_flag & 393216U) != 0U)
            {
                AppMain.GMM_PAD_VIB_MID_TIME(90f);
            }
            gms_SPL_STG_WORK.roll     = obs_CAMERA.roll;
            gms_SPL_STG_WORK.roll_spd = 256;
            gms_SPL_STG_WORK.counter  = 0U;
            AppMain.mtTaskChangeTcbProcedure(tcb, AppMain.gmSplStageRolling);
        }
    }
예제 #7
0
    // Token: 0x0600123B RID: 4667 RVA: 0x0009F75C File Offset: 0x0009D95C
    private static void gmGmkDrainTankOutUpdateDie(OBS_OBJECT_WORK obj_work)
    {
        AppMain.GMS_GMK_DRAIN_TANK_OUT_WORK gms_GMK_DRAIN_TANK_OUT_WORK = (AppMain.GMS_GMK_DRAIN_TANK_OUT_WORK)obj_work;
        AppMain.gmGmkDrainTankOutUpdateCameraRollDie(gms_GMK_DRAIN_TANK_OUT_WORK);
        OBS_CAMERA obs_CAMERA = ObjCamera.Get(0);

        obs_CAMERA.roll = gms_GMK_DRAIN_TANK_OUT_WORK.camera_roll;
    }
예제 #8
0
    // Token: 0x06001563 RID: 5475 RVA: 0x000B9B34 File Offset: 0x000B7D34
    private static void gmGmkLoopExecuteCamera(int loop_x, int loop_y)
    {
        OBS_CAMERA obs_CAMERA = ObjCamera.Get(0);

        GmCamera.PosSet(AppMain.FX_F32_TO_FX32(obs_CAMERA.pos.x) + loop_x, -AppMain.FX_F32_TO_FX32(obs_CAMERA.pos.y) + loop_y, AppMain.FX_F32_TO_FX32(obs_CAMERA.pos.z));
        AppMain.ObjObjectCameraSet(AppMain.FXM_FLOAT_TO_FX32(obs_CAMERA.disp_pos.x - ( float )(AppMain.OBD_LCD_X / 2)), AppMain.FXM_FLOAT_TO_FX32(-obs_CAMERA.disp_pos.y - ( float )(AppMain.OBD_LCD_Y / 2)), AppMain.FXM_FLOAT_TO_FX32(obs_CAMERA.disp_pos.x - ( float )(AppMain.OBD_LCD_X / 2)), AppMain.FXM_FLOAT_TO_FX32(-obs_CAMERA.disp_pos.y - ( float )(AppMain.OBD_LCD_Y / 2)));
        GmCamera.SetClipCamera(obs_CAMERA);
    }
 // Token: 0x060007C2 RID: 1986 RVA: 0x00044B14 File Offset: 0x00042D14
 private void dmLogoSegaCamera(OBS_CAMERA camera)
 {
     camera.disp_pos.x   = 0f;
     camera.disp_pos.y   = 0f;
     camera.disp_pos.z   = 200f;
     camera.target_pos.x = 0f;
     camera.target_pos.y = 0f;
     camera.target_pos.z = 0f;
 }
예제 #10
0
    // Token: 0x06000085 RID: 133 RVA: 0x00007738 File Offset: 0x00005938
    private static void gmEveMgrStateFuncSingleScr()
    {
        OBS_CAMERA obs_CAMERA = ObjCamera.Get(AppMain.g_obj.glb_camera_id);

        if (obs_CAMERA != null && (obs_CAMERA.disp_pos.x != AppMain.g_gm_eve_mgr_work.prev_pos[0] || obs_CAMERA.disp_pos.y != AppMain.g_gm_eve_mgr_work.prev_pos[1]))
        {
            AppMain.GmEveMgrCreateEventLcd(3U);
        }
    }
예제 #11
0
 // Token: 0x060018E1 RID: 6369 RVA: 0x000E2BEC File Offset: 0x000E0DEC
 private void dmTitleOpCamera(OBS_CAMERA camera)
 {
     camera.disp_pos.x   = 0f;
     camera.disp_pos.y   = 5f;
     camera.disp_pos.z   = 160f;
     camera.target_pos.x = 0f;
     camera.target_pos.y = 0f;
     camera.target_pos.z = 10f;
 }
예제 #12
0
    // Token: 0x060017A4 RID: 6052 RVA: 0x000D1450 File Offset: 0x000CF650
    private static void gmGmkSsTimeEfctMain(OBS_OBJECT_WORK obj_work)
    {
        OBS_CAMERA obs_CAMERA = ObjCamera.Get(AppMain.g_obj.glb_camera_id);

        if (obs_CAMERA != null)
        {
            obj_work.dir.z = ( ushort )(-( ushort )obs_CAMERA.roll);
        }
    }
예제 #13
0
    // Token: 0x0600012F RID: 303 RVA: 0x0000D780 File Offset: 0x0000B980
    public static float DispScaleGet(int cam_id)
    {
        AppMain.mppAssertNotImpl();
        OBS_CAMERA obs_CAMERA = obj_camera_sys.obj_camera[cam_id];

        if (obs_CAMERA.disp_pos.z >= 0f)
        {
            return(1f - obs_CAMERA.disp_pos.z / 2f);
        }

        return(1f - obs_CAMERA.disp_pos.z);
    }
예제 #14
0
    // Token: 0x06000082 RID: 130 RVA: 0x000074EC File Offset: 0x000056EC
    private static void gmEveMgrMain(MTS_TASK_TCB tcb)
    {
        AppMain.GMS_EVE_MGR_WORK gms_EVE_MGR_WORK = (AppMain.GMS_EVE_MGR_WORK)tcb.work;
        if (gms_EVE_MGR_WORK.sts_proc != null)
        {
            gms_EVE_MGR_WORK.sts_proc();
        }
        OBS_CAMERA obs_CAMERA = ObjCamera.Get(AppMain.g_obj.glb_camera_id);

        if (obs_CAMERA != null)
        {
            gms_EVE_MGR_WORK.prev_pos[0] = obs_CAMERA.disp_pos.x;
            gms_EVE_MGR_WORK.prev_pos[1] = obs_CAMERA.disp_pos.y;
        }
    }
예제 #15
0
    // Token: 0x06001237 RID: 4663 RVA: 0x0009F4EC File Offset: 0x0009D6EC
    private static void gmGmkDrainTankOutMainDamage(OBS_OBJECT_WORK obj_work)
    {
        GMS_PLAYER_WORK gms_PLAYER_WORK = AppMain.g_gm_main_system.ply_work[(int)((UIntPtr)0)];

        if ((gms_PLAYER_WORK.player_flag & 1024U) != 0U)
        {
            AppMain.gmGmkDrainTankOutUpdateDie(obj_work);
            obj_work.spd.x = 0;
            obj_work.spd.y = 0;
            return;
        }
        if (AppMain.gmGmkDrainTankOutCheckDeleteTask(obj_work, 1843200, 1228800))
        {
            AppMain.gmGmkDrainTankOutRequestDeleteTask(obj_work);
            return;
        }
        AppMain.GMS_GMK_DRAIN_TANK_OUT_WORK gms_GMK_DRAIN_TANK_OUT_WORK = (AppMain.GMS_GMK_DRAIN_TANK_OUT_WORK)obj_work;
        OBS_OBJECT_WORK obj_work2 = gms_PLAYER_WORK.obj_work;

        AppMain.gmGmkDrainTankOutUpdateCameraRollDamage(gms_GMK_DRAIN_TANK_OUT_WORK);
        int num  = (AppMain.GMD_GMK_DRAIN_TANK_ROLL_ANGLE_MAX - AppMain.MTM_MATH_ABS(gms_GMK_DRAIN_TANK_OUT_WORK.camera_roll)) * 4;
        int num2 = num >> 3;

        if (gms_GMK_DRAIN_TANK_OUT_WORK.flag_dir_left)
        {
            obj_work.spd.x = num2;
        }
        else
        {
            obj_work.spd.x = -num2;
        }
        float num3 = AppMain.FX_FX32_TO_F32(num >> 4);

        AppMain.GmWaterSurfaceRequestAddWatarLevel(-num3, 0, true);
        obj_work.user_timer++;
        if ((obj_work2.move_flag & 1U) != 0U)
        {
            obj_work.user_timer = 0;
            AppMain.gmGmkDrainTankOutChangeModeWait(obj_work);
            AppMain.GmPlySeqInitDrainTank(gms_PLAYER_WORK);
            return;
        }
        OBS_CAMERA obs_CAMERA = ObjCamera.Get(0);

        obs_CAMERA.roll = gms_GMK_DRAIN_TANK_OUT_WORK.camera_roll;
        AppMain.gmGmkDrainTankOutUpdateCameraOffset(gms_PLAYER_WORK, gms_GMK_DRAIN_TANK_OUT_WORK);
        AppMain.gmGmkDrainTankOutSinkRing();
    }
예제 #16
0
    // Token: 0x06000DA2 RID: 3490 RVA: 0x000783E0 File Offset: 0x000765E0
    public 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;
        OBS_CAMERA obs_CAMERA = ObjCamera.Get(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;
    }
    // Token: 0x060007AB RID: 1963 RVA: 0x00043C0C File Offset: 0x00041E0C
    private void dmLogoSegaObjSysytemInit()
    {
        NNS_RGBA   nns_RGBA   = new NNS_RGBA(1f, 1f, 1f, 1f);
        NNS_VECTOR nns_VECTOR = GlobalPool <NNS_VECTOR> .Alloc();

        NNS_VECTOR pos = new NNS_VECTOR(0f, 0f, 50f);

        AppMain.ObjInit(4, 61435, 0, AppMain.GMD_OBJ_LCD_X, AppMain.GMD_OBJ_LCD_Y, ( float )AppMain.GSD_DISP_WIDTH, ( float )AppMain.GSD_DISP_HEIGHT);
        AppMain.ObjDataAlloc(10);
        AppMain.ObjDrawESEffectSystemInit(0, 20480U, 0U);
        AppMain.ObjDrawSetNNCommandStateTbl(0U, 0U, true);
        AppMain.AoActSysClearPeak();
        AppMain.g_obj.flag             = 4259848U;
        AppMain.g_obj.ppPre            = null;
        AppMain.g_obj.ppPost           = null;
        AppMain.g_obj.ppCollision      = null;
        AppMain.g_obj.ppObjPre         = null;
        AppMain.g_obj.ppObjPost        = null;
        AppMain.g_obj.ppRegRecAuto     = null;
        AppMain.g_obj.draw_scale.x     = (AppMain.g_obj.draw_scale.y = (AppMain.g_obj.draw_scale.z = 29127));
        AppMain.g_obj.inv_draw_scale.x = (AppMain.g_obj.inv_draw_scale.y = (AppMain.g_obj.inv_draw_scale.z = AppMain.FX_Div(4096, AppMain.g_obj.draw_scale.x)));
        AppMain.g_obj.depth            = 128;
        AppMain.g_obj.ambient_color.r  = 0.8f;
        AppMain.g_obj.ambient_color.g  = 0.8f;
        AppMain.g_obj.ambient_color.b  = 0.8f;
        nns_VECTOR.x = -1f;
        nns_VECTOR.y = -1f;
        nns_VECTOR.z = -1f;
        AppMain.nnNormalizeVector(nns_VECTOR, nns_VECTOR);
        AppMain.ObjDrawSetParallelLight(AppMain.NNE_LIGHT_0, ref nns_RGBA, 1f, nns_VECTOR);
        GlobalPool <NNS_VECTOR> .Release(nns_VECTOR);

        ObjCamera.Init(0, pos, 0, 0, 6144);
        ObjCamera.Init3d(0);
        AppMain.g_obj.glb_camera_id   = 0;
        AppMain.g_obj.glb_camera_type = 1;
        OBS_CAMERA obs_CAMERA = ObjCamera.Get(0);

        obs_CAMERA.user_func     = this.dmLogoSegaCamera;
        obs_CAMERA.command_state = 0U;
        obs_CAMERA.scale         = 0.9f;
        obs_CAMERA.ofst.z        = 1000f;
        this.amTrailEFInitialize();
    }
예제 #18
0
    // Token: 0x06000DC8 RID: 3528 RVA: 0x00079848 File Offset: 0x00077A48
    private static OBS_OBJECT_WORK GmGmkStartInit(AppMain.GMS_EVE_RECORD_EVENT eve_rec, int pos_x, int pos_y, byte type)
    {
        if ((AppMain.g_gs_main_sys_info.game_flag & 4U) == 0U)
        {
            AppMain.g_gm_main_system.resume_pos_x = pos_x;
            AppMain.g_gm_main_system.resume_pos_y = pos_y - 4096;
        }

        eve_rec.pos_x = byte.MaxValue;
        GmCamera.PosSet(AppMain.g_gm_main_system.resume_pos_x, AppMain.g_gm_main_system.resume_pos_y, 0);
        OBS_CAMERA obs_CAMERA = ObjCamera.Get(AppMain.g_obj.glb_camera_id);

        AppMain.ObjObjectCameraSet(
            AppMain.FXM_FLOAT_TO_FX32((obs_CAMERA.disp_pos.x - (float)(AppMain.OBD_LCD_X / 2))),
            AppMain.FXM_FLOAT_TO_FX32((-obs_CAMERA.disp_pos.y - (float)(AppMain.OBD_LCD_Y / 2))),
            AppMain.FXM_FLOAT_TO_FX32((obs_CAMERA.disp_pos.x - (float)(AppMain.OBD_LCD_X / 2))),
            AppMain.FXM_FLOAT_TO_FX32((-obs_CAMERA.disp_pos.y - (float)(AppMain.OBD_LCD_Y / 2))));
        GmCamera.SetClipCamera(obs_CAMERA);
        return(null);
    }
예제 #19
0
    // Token: 0x06000266 RID: 614 RVA: 0x000139A0 File Offset: 0x00011BA0
    private static void gmGmkStopperStay_Slot_100(OBS_OBJECT_WORK obj_work)
    {
        AppMain.GMS_GMK_STOPPER_WORK gms_GMK_STOPPER_WORK = (AppMain.GMS_GMK_STOPPER_WORK)obj_work;
        if (gms_GMK_STOPPER_WORK.ply_work != AppMain.g_gm_main_system.ply_work[(int)((UIntPtr)0)] ||
            gms_GMK_STOPPER_WORK.ply_work.gmk_obj != obj_work || gms_GMK_STOPPER_WORK.ply_work.seq_state != 40)
        {
            AppMain.gmGmkStopperReset(obj_work);
            return;
        }

        OBS_CAMERA obs_CAMERA = ObjCamera.Get(0);

        GmCamera.PosSet(AppMain.FXM_FLOAT_TO_FX32(obs_CAMERA.pos.x),
                        AppMain.FXM_FLOAT_TO_FX32(-obs_CAMERA.pos.y) + 16384, AppMain.FXM_FLOAT_TO_FX32(obs_CAMERA.pos.z));
        if (AppMain.GmGmkSlotIsStatus(gms_GMK_STOPPER_WORK.call_slot_id) != 0)
        {
            obj_work.disp_flag &= 4294967291U;
            obj_work.ppFunc     = AppMain.gmGmkStopperStay_Slot_110;
            AppMain.gmGmkStopperStay_Slot_110(obj_work);
        }
    }
예제 #20
0
    // Token: 0x060018C0 RID: 6336 RVA: 0x000E1CDC File Offset: 0x000DFEDC
    private void DmTitleOpInit()
    {
        NNS_RGBA   nns_RGBA   = new NNS_RGBA(1f, 1f, 1f, 1f);
        NNS_VECTOR nns_VECTOR = GlobalPool <NNS_VECTOR> .Alloc();

        nns_VECTOR.Clear();
        NNS_VECTOR pos = new NNS_VECTOR(0f, 0f, 50f);

        AppMain.g_obj.flag             = 4259848U;
        AppMain.g_obj.ppPre            = null;
        AppMain.g_obj.ppPost           = null;
        AppMain.g_obj.ppCollision      = null;
        AppMain.g_obj.ppObjPre         = null;
        AppMain.g_obj.ppObjPost        = null;
        AppMain.g_obj.ppRegRecAuto     = null;
        AppMain.g_obj.draw_scale.x     = (AppMain.g_obj.draw_scale.y = (AppMain.g_obj.draw_scale.z = 13107));
        AppMain.g_obj.inv_draw_scale.x = (AppMain.g_obj.inv_draw_scale.y = (AppMain.g_obj.inv_draw_scale.z = AppMain.FX_Div(4096, AppMain.g_obj.draw_scale.x)));
        AppMain.g_obj.depth            = 128;
        AppMain.g_obj.ambient_color.r  = 0.8f;
        AppMain.g_obj.ambient_color.g  = 0.8f;
        AppMain.g_obj.ambient_color.b  = 0.8f;
        nns_VECTOR.x = -1f;
        nns_VECTOR.y = -1f;
        nns_VECTOR.z = -1f;
        AppMain.nnNormalizeVector(nns_VECTOR, nns_VECTOR);
        AppMain.ObjDrawSetParallelLight(AppMain.NNE_LIGHT_0, ref nns_RGBA, 1f, nns_VECTOR);
        ObjCamera.Init(0, pos, 0, 0, 12288);
        ObjCamera.Init3d(0);
        AppMain.g_obj.glb_camera_id   = 0;
        AppMain.g_obj.glb_camera_type = 0;
        OBS_CAMERA obs_CAMERA = ObjCamera.Get(0);

        obs_CAMERA.user_func     = this.dmTitleOpCamera;
        obs_CAMERA.command_state = 0U;
        obs_CAMERA.fovy          = AppMain.NNM_DEGtoA32(40f);
        obs_CAMERA.znear         = 0.1f;
        obs_CAMERA.zfar          = 32768f;
        this.dmTitleOpMgrInit();
        GlobalPool <NNS_VECTOR> .Release(nns_VECTOR);
    }
예제 #21
0
    // Token: 0x0600012A RID: 298 RVA: 0x0000D458 File Offset: 0x0000B658
    public static void GetTargetUpTargetCamera(OBS_CAMERA obj_camera,
                                               AppMain.NNS_CAMERA_TARGET_UPTARGET tupt_camera)
    {
        tupt_camera.User       = 0U;
        tupt_camera.Fovy       = obj_camera.fovy;
        tupt_camera.Aspect     = obj_camera.aspect;
        tupt_camera.ZNear      = obj_camera.znear;
        tupt_camera.ZFar       = obj_camera.zfar;
        tupt_camera.Position.x = obj_camera.disp_pos.x;
        tupt_camera.Position.y = obj_camera.disp_pos.y;
        tupt_camera.Position.z = obj_camera.disp_pos.z;
        if (obj_camera.camup_obj != null)
        {
            tupt_camera.Target.x = AppMain.FXM_FX32_TO_FLOAT(obj_camera.camup_obj.pos.x);
            tupt_camera.Target.y = AppMain.FXM_FX32_TO_FLOAT(obj_camera.camup_obj.pos.y);
            tupt_camera.Target.z = AppMain.FXM_FX32_TO_FLOAT(obj_camera.camup_obj.pos.z);
            return;
        }

        tupt_camera.Target.x = obj_camera.camup_pos.x;
        tupt_camera.Target.y = obj_camera.camup_pos.y;
        tupt_camera.Target.z = obj_camera.camup_pos.z;
    }
예제 #22
0
    // Token: 0x06000263 RID: 611 RVA: 0x0001377C File Offset: 0x0001197C
    private static void gmGmkStopperStay_Norm_100(OBS_OBJECT_WORK obj_work)
    {
        AppMain.GMS_GMK_STOPPER_WORK gms_GMK_STOPPER_WORK = (AppMain.GMS_GMK_STOPPER_WORK)obj_work;
        if (gms_GMK_STOPPER_WORK.ply_work != AppMain.g_gm_main_system.ply_work[(int)((UIntPtr)0)] ||
            gms_GMK_STOPPER_WORK.ply_work.gmk_obj != obj_work || gms_GMK_STOPPER_WORK.ply_work.seq_state != 40)
        {
            AppMain.gmGmkStopperReset(obj_work);
            return;
        }

        OBS_CAMERA obs_CAMERA = ObjCamera.Get(0);

        GmCamera.PosSet(AppMain.FXM_FLOAT_TO_FX32(obs_CAMERA.pos.x),
                        AppMain.FXM_FLOAT_TO_FX32(-obs_CAMERA.pos.y) + 16384, AppMain.FXM_FLOAT_TO_FX32(obs_CAMERA.pos.z));
        AppMain.GMS_GMK_STOPPER_WORK gms_GMK_STOPPER_WORK2 = gms_GMK_STOPPER_WORK;
        gms_GMK_STOPPER_WORK2.player_pass_timer -= 1;
        if (gms_GMK_STOPPER_WORK.player_pass_timer <= 0)
        {
            obj_work.disp_flag &= 4294967291U;
            AppMain.gmGmkStopperStay_Norm_110(obj_work);
            return;
        }

        if (gms_GMK_STOPPER_WORK.player_pass_timer % 16 == 0)
        {
            GmPlayer.AddScore(gms_GMK_STOPPER_WORK.ply_work, 1000, gms_GMK_STOPPER_WORK.ply_work.obj_work.pos.x,
                              gms_GMK_STOPPER_WORK.ply_work.obj_work.pos.y);
            GsSound.StopSE(gms_GMK_STOPPER_WORK.se_handle);
            gms_GMK_STOPPER_WORK.se_handle.snd_ctrl_param.pitch =
                0.8f - (float)gms_GMK_STOPPER_WORK.player_pass_timer / 160f;
            GmSound.PlaySE("Casino3", gms_GMK_STOPPER_WORK.se_handle);
            if (gms_GMK_STOPPER_WORK.player_pass_timer <= 16)
            {
                GmSound.PlaySE("Casino3_1");
            }
        }
    }
예제 #23
0
    // Token: 0x0600069E RID: 1694 RVA: 0x0003BC10 File Offset: 0x00039E10
    private static void gmGmkCamScrLimitSetting(OBS_OBJECT_WORK obj_work)
    {
        AppMain.GMS_GMK_CAM_SCR_LIMIT_WORK gms_GMK_CAM_SCR_LIMIT_WORK = (AppMain.GMS_GMK_CAM_SCR_LIMIT_WORK)obj_work;
        OBS_CAMERA obs_CAMERA = ObjCamera.Get(0);
        int        num        = AppMain.FXM_FLOAT_TO_FX32(obs_CAMERA.pos.x) >> 12;
        int        num2       = -AppMain.FXM_FLOAT_TO_FX32(obs_CAMERA.pos.y) >> 12;
        int        num3       = 1;
        int        num4       = 1;
        int        num5       = AppMain.FXM_FLOAT_TO_FX32(AppMain.AMD_SCREEN_2D_WIDTH / 2f * obs_CAMERA.scale) >> 12;
        int        num6       = AppMain.FXM_FLOAT_TO_FX32(AppMain.AMD_SCREEN_2D_HEIGHT / 2f * obs_CAMERA.scale) >> 12;
        byte       b          = 1;

        if ((Convert.ToInt32(obj_work.user_flag) & 1) != 0 && AppMain.g_gm_main_system.map_fcol.left != gms_GMK_CAM_SCR_LIMIT_WORK.limit_setting.limit_rect[0])
        {
            int num7 = num - num5;
            if (num7 > gms_GMK_CAM_SCR_LIMIT_WORK.limit_setting.limit_rect[0])
            {
                AppMain.g_gm_main_system.map_fcol.left = gms_GMK_CAM_SCR_LIMIT_WORK.limit_setting.limit_rect[0];
            }
            else
            {
                if (num7 > AppMain.g_gm_main_system.map_fcol.left)
                {
                    AppMain.g_gm_main_system.map_fcol.left = num7 + num3;
                }
                else
                {
                    AppMain.g_gm_main_system.map_fcol.left += num3;
                }
                if (AppMain.g_gm_main_system.map_fcol.left > gms_GMK_CAM_SCR_LIMIT_WORK.limit_setting.limit_rect[0])
                {
                    AppMain.g_gm_main_system.map_fcol.left = gms_GMK_CAM_SCR_LIMIT_WORK.limit_setting.limit_rect[0];
                }
            }
            b = 0;
        }
        if ((Convert.ToInt32(obj_work.user_flag) & 4) != 0 && AppMain.g_gm_main_system.map_fcol.right != gms_GMK_CAM_SCR_LIMIT_WORK.limit_setting.limit_rect[2])
        {
            int num8 = num + num5;
            if (num8 < gms_GMK_CAM_SCR_LIMIT_WORK.limit_setting.limit_rect[2])
            {
                AppMain.g_gm_main_system.map_fcol.right = gms_GMK_CAM_SCR_LIMIT_WORK.limit_setting.limit_rect[2];
            }
            else
            {
                if (num8 < AppMain.g_gm_main_system.map_fcol.right)
                {
                    AppMain.g_gm_main_system.map_fcol.right = num8 - num3;
                }
                else
                {
                    AppMain.g_gm_main_system.map_fcol.right -= num3;
                }
                if (AppMain.g_gm_main_system.map_fcol.right < gms_GMK_CAM_SCR_LIMIT_WORK.limit_setting.limit_rect[2])
                {
                    AppMain.g_gm_main_system.map_fcol.right = gms_GMK_CAM_SCR_LIMIT_WORK.limit_setting.limit_rect[2];
                }
            }
            b = 0;
        }
        if ((Convert.ToInt32(obj_work.user_flag) & 2) != 0 && AppMain.g_gm_main_system.map_fcol.top != gms_GMK_CAM_SCR_LIMIT_WORK.limit_setting.limit_rect[1])
        {
            int num9 = num2 - num6;
            if (num9 > gms_GMK_CAM_SCR_LIMIT_WORK.limit_setting.limit_rect[1])
            {
                AppMain.g_gm_main_system.map_fcol.top = gms_GMK_CAM_SCR_LIMIT_WORK.limit_setting.limit_rect[1];
            }
            else
            {
                if (num9 > AppMain.g_gm_main_system.map_fcol.top)
                {
                    AppMain.g_gm_main_system.map_fcol.top = num9 + num4;
                }
                else
                {
                    AppMain.g_gm_main_system.map_fcol.top += num4;
                }
                if (AppMain.g_gm_main_system.map_fcol.top > gms_GMK_CAM_SCR_LIMIT_WORK.limit_setting.limit_rect[1])
                {
                    AppMain.g_gm_main_system.map_fcol.top = gms_GMK_CAM_SCR_LIMIT_WORK.limit_setting.limit_rect[1];
                }
            }
            b = 0;
        }
        if ((Convert.ToInt32(obj_work.user_flag) & 8) != 0 && AppMain.g_gm_main_system.map_fcol.bottom != gms_GMK_CAM_SCR_LIMIT_WORK.limit_setting.limit_rect[3])
        {
            int num10 = num2 + num6;
            if (num10 < gms_GMK_CAM_SCR_LIMIT_WORK.limit_setting.limit_rect[3])
            {
                AppMain.g_gm_main_system.map_fcol.bottom = gms_GMK_CAM_SCR_LIMIT_WORK.limit_setting.limit_rect[3];
            }
            else
            {
                if (num10 < AppMain.g_gm_main_system.map_fcol.bottom)
                {
                    AppMain.g_gm_main_system.map_fcol.bottom = num10 - num4;
                }
                else
                {
                    AppMain.g_gm_main_system.map_fcol.bottom -= num4;
                }
                if (AppMain.g_gm_main_system.map_fcol.bottom < gms_GMK_CAM_SCR_LIMIT_WORK.limit_setting.limit_rect[3])
                {
                    AppMain.g_gm_main_system.map_fcol.bottom = gms_GMK_CAM_SCR_LIMIT_WORK.limit_setting.limit_rect[3];
                }
            }
            b = 0;
        }
        if (b != 0)
        {
            obj_work.flag |= 8U;
            AppMain.g_gm_main_system.game_flag &= 4294934527U;
        }
    }
예제 #24
0
    // Token: 0x0600069B RID: 1691 RVA: 0x0003B79C File Offset: 0x0003999C
    private static void gmGmkCamScrLimitRelease(OBS_OBJECT_WORK obj_work)
    {
        OBS_CAMERA obs_CAMERA = ObjCamera.Get(0);
        int        num        = AppMain.FXM_FLOAT_TO_FX32(obs_CAMERA.pos.x) >> 12;
        int        num2       = -AppMain.FXM_FLOAT_TO_FX32(obs_CAMERA.pos.y) >> 12;
        int        num3       = AppMain.FXM_FLOAT_TO_FX32(AppMain.AMD_SCREEN_2D_WIDTH / 2f * obs_CAMERA.scale) >> 12;
        int        num4       = AppMain.FXM_FLOAT_TO_FX32(AppMain.AMD_SCREEN_2D_HEIGHT / 2f * obs_CAMERA.scale) >> 12;
        int        user_work  = (int)obj_work.user_work;
        int        user_work2 = (int)obj_work.user_work;
        byte       b          = 1;

        if (((ushort)obj_work.user_flag & 1) != 0 && AppMain.g_gm_main_system.map_fcol.left != 0)
        {
            if (num - num3 > AppMain.g_gm_main_system.map_fcol.left)
            {
                AppMain.g_gm_main_system.map_fcol.left = 0;
            }
            else
            {
                AppMain.g_gm_main_system.map_fcol.left -= user_work;
                if (AppMain.g_gm_main_system.map_fcol.left < 0)
                {
                    AppMain.g_gm_main_system.map_fcol.left = 0;
                }
                b = 0;
            }
        }
        if (((ushort)obj_work.user_flag & 4) != 0 && AppMain.g_gm_main_system.map_fcol.right < (int)(AppMain.g_gm_main_system.map_fcol.map_block_num_x * 64))
        {
            if (num + num3 < AppMain.g_gm_main_system.map_fcol.right)
            {
                AppMain.g_gm_main_system.map_fcol.right = (int)(AppMain.g_gm_main_system.map_fcol.map_block_num_x * 64);
            }
            else
            {
                AppMain.g_gm_main_system.map_fcol.right += user_work;
                if (AppMain.g_gm_main_system.map_fcol.right > (int)(AppMain.g_gm_main_system.map_fcol.map_block_num_x * 64))
                {
                    AppMain.g_gm_main_system.map_fcol.right = (int)(AppMain.g_gm_main_system.map_fcol.map_block_num_x * 64);
                }
                b = 0;
            }
        }
        if (((ushort)obj_work.user_flag & 2) != 0 && AppMain.g_gm_main_system.map_fcol.top != 0)
        {
            if (num2 - num4 > AppMain.g_gm_main_system.map_fcol.top)
            {
                AppMain.g_gm_main_system.map_fcol.top = 0;
            }
            else
            {
                AppMain.g_gm_main_system.map_fcol.top -= user_work2;
                if (AppMain.g_gm_main_system.map_fcol.top < 0)
                {
                    AppMain.g_gm_main_system.map_fcol.top = 0;
                }
                b = 0;
            }
        }
        if (((ushort)obj_work.user_flag & 8) != 0 && AppMain.g_gm_main_system.map_fcol.bottom < (int)(AppMain.g_gm_main_system.map_fcol.map_block_num_y * 64))
        {
            if (num2 + num4 < AppMain.g_gm_main_system.map_fcol.bottom)
            {
                AppMain.g_gm_main_system.map_fcol.bottom = (int)(AppMain.g_gm_main_system.map_fcol.map_block_num_y * 64);
            }
            else
            {
                AppMain.g_gm_main_system.map_fcol.bottom += user_work2;
                if (AppMain.g_gm_main_system.map_fcol.bottom > (int)(AppMain.g_gm_main_system.map_fcol.map_block_num_y * 64))
                {
                    AppMain.g_gm_main_system.map_fcol.bottom = (int)(AppMain.g_gm_main_system.map_fcol.map_block_num_y * 64);
                }
                b = 0;
            }
        }
        if (b != 0 && obj_work.user_timer != 0)
        {
            obj_work.flag |= 8U;
            AppMain.g_gm_main_system.game_flag &= 4294934527U;
        }
        obj_work.user_timer++;
    }
예제 #25
0
    // Token: 0x06000678 RID: 1656 RVA: 0x00039ECC File Offset: 0x000380CC
    public static void gmGmkTruckSetMoveSeParam(OBS_OBJECT_WORK obj_work, GSS_SND_SE_HANDLE h_snd, GMS_PLAYER_WORK ply_work, int b_goal)
    {
        float num = 0f;

        if (h_snd == null)
        {
            return;
        }
        OBS_OBJECT_WORK obs_OBJECT_WORK;

        if (ply_work != null)
        {
            obs_OBJECT_WORK = ply_work.obj_work;
        }
        else
        {
            obs_OBJECT_WORK = obj_work;
        }
        int num2 = AppMain.MTM_MATH_ABS(obs_OBJECT_WORK.spd_m);

        if ((obs_OBJECT_WORK.move_flag & 1U) != 0U && num2 >= AppMain.GMD_GMK_TRUCK_SE_MIN_SPD)
        {
            if (num2 >= AppMain.GMD_GMK_TRUCK_SE_MAX_SPD)
            {
                num = 1f;
            }
            else
            {
                num = AppMain.FXM_FX32_TO_FLOAT(AppMain.FX_Div(num2 - AppMain.GMD_GMK_TRUCK_SE_MIN_SPD, AppMain.GMD_GMK_TRUCK_SE_MAX_SPD - AppMain.GMD_GMK_TRUCK_SE_MIN_SPD));
                if (num > 1f)
                {
                    num = 1f;
                }
            }
        }
        h_snd.au_player.SetAisac("Speed", num);
        if (b_goal != 0)
        {
            OBS_CAMERA obs_CAMERA = ObjCamera.Get(AppMain.g_obj.glb_camera_id);
            float      num3       = AppMain.FXM_FX32_TO_FLOAT(obs_OBJECT_WORK.pos.x) - obs_CAMERA.disp_pos.x;
            float      num4       = AppMain.FXM_FX32_TO_FLOAT(obs_OBJECT_WORK.pos.y) - -obs_CAMERA.disp_pos.y;
            float      num6;
            if (num3 < AppMain.GMD_GMK_TRUCK_SE_GOAL_MAX_DIST && num4 < AppMain.GMD_GMK_TRUCK_SE_GOAL_MAX_DIST)
            {
                float num5 = num3 * num3 + num4 * num4;
                if (num5 <= AppMain.GMD_GMK_TRUCK_SE_GOAL_MIN_DIST * AppMain.GMD_GMK_TRUCK_SE_GOAL_MIN_DIST)
                {
                    num6 = 1f;
                }
                else if (num5 <= AppMain.GMD_GMK_TRUCK_SE_GOAL_MAX_DIST * AppMain.GMD_GMK_TRUCK_SE_GOAL_MAX_DIST)
                {
                    num6 = (AppMain.GMD_GMK_TRUCK_SE_GOAL_MAX_DIST * AppMain.GMD_GMK_TRUCK_SE_GOAL_MAX_DIST - num5) / ((AppMain.GMD_GMK_TRUCK_SE_GOAL_MAX_DIST - AppMain.GMD_GMK_TRUCK_SE_GOAL_MIN_DIST) * (AppMain.GMD_GMK_TRUCK_SE_GOAL_MAX_DIST - AppMain.GMD_GMK_TRUCK_SE_GOAL_MIN_DIST));
                    if (num6 > 1f)
                    {
                        num6 = 1f;
                    }
                    else if (num6 < 0f)
                    {
                        num6 = 0f;
                    }
                }
                else
                {
                    num6 = 0f;
                }
            }
            else
            {
                num6 = 0f;
            }
            h_snd.snd_ctrl_param.volume = num6;
        }
    }
예제 #26
0
    // Token: 0x06000127 RID: 295 RVA: 0x0000D158 File Offset: 0x0000B358
    public static void Init3d(int cam_id)
    {
        if (obj_camera_sys == null)
        {
            return;
        }

        if (obj_camera_sys.obj_camera[cam_id] == null)
        {
            NNS_VECTOR nns_VECTOR = GlobalPool <NNS_VECTOR> .Alloc();

            int num = Init(cam_id, nns_VECTOR, 0, 0, 61438);
            if (num == -1)
            {
                return;
            }

            GlobalPool <NNS_VECTOR> .Release(nns_VECTOR);
        }

        NNS_MATRIX scaleMatrix = GlobalPool <NNS_MATRIX> .Alloc();

        nnMakeScaleMatrix(scaleMatrix, AppMain.AMD_SCREEN_SCALE, AppMain.AMD_SCREEN_SCALE, AppMain.AMD_SCREEN_SCALE);

        OBS_CAMERA obs_CAMERA = obj_camera_sys.obj_camera[cam_id];

        obs_CAMERA.flag  |= 16U;
        obs_CAMERA.znear  = 1f;
        obs_CAMERA.zfar   = 60000f;
        obs_CAMERA.aspect = AppMain.AMD_SCREEN_ASPECT;
        obs_CAMERA.fovy   = AppMain.NNM_DEGtoA32(45f);
        AppMain.nnMakePerspectiveMatrix(obs_CAMERA.prj_pers_mtx, obs_CAMERA.fovy, obs_CAMERA.aspect, obs_CAMERA.znear,
                                        obs_CAMERA.zfar);
        //nnMultiplyMatrix(obs_CAMERA.prj_pers_mtx, obs_CAMERA.prj_pers_mtx, scaleMatrix);
        obs_CAMERA.scale = 0.078125f;
        float num2 = AppMain.g_obj.disp_height * obs_CAMERA.scale * 0.5f * 1f;
        float num3 = num2 * obs_CAMERA.aspect;

        obs_CAMERA.left   = -num3;
        obs_CAMERA.right  = num3;
        obs_CAMERA.bottom = -num2;
        obs_CAMERA.top    = num2;
        AppMain.nnMakeOrthoMatrix(obs_CAMERA.prj_ortho_mtx, obs_CAMERA.left, obs_CAMERA.right, obs_CAMERA.bottom,
                                  obs_CAMERA.top, obs_CAMERA.znear, obs_CAMERA.zfar);
        AppMain.nnMultiplyMatrix(obs_CAMERA.prj_ortho_mtx, obs_CAMERA.prj_ortho_mtx, scaleMatrix);
        switch (obs_CAMERA.camera_type)
        {
        case OBE_CAMERA_TYPE.OBE_CAMERA_TYPE_TARGET_ROLL:
        {
            AppMain.NNS_CAMERA_TARGET_ROLL nns_CAMERA_TARGET_ROLL = new AppMain.NNS_CAMERA_TARGET_ROLL();
            GetTargetRollCamera(obs_CAMERA, nns_CAMERA_TARGET_ROLL);
            AppMain.nnMakeTargetRollCameraViewMatrix(obs_CAMERA.view_mtx, nns_CAMERA_TARGET_ROLL);
            return;
        }

        case OBE_CAMERA_TYPE.OBE_CAMERA_TYPE_TARGET_UP_TARGET:
        {
            AppMain.NNS_CAMERA_TARGET_UPTARGET
                nns_CAMERA_TARGET_UPTARGET = new AppMain.NNS_CAMERA_TARGET_UPTARGET();
            GetTargetUpTargetCamera(obs_CAMERA, nns_CAMERA_TARGET_UPTARGET);
            AppMain.nnMakeTargetUpTargetCameraViewMatrix(obs_CAMERA.view_mtx, nns_CAMERA_TARGET_UPTARGET);
            return;
        }

        case OBE_CAMERA_TYPE.OBE_CAMERA_TYPE_TARGET_UP_VEC:
        {
            AppMain.NNS_CAMERA_TARGET_UPVECTOR
                nns_CAMERA_TARGET_UPVECTOR = new AppMain.NNS_CAMERA_TARGET_UPVECTOR();
            GetTargetUpVecCamera(obs_CAMERA, nns_CAMERA_TARGET_UPVECTOR);
            AppMain.nnMakeTargetUpVectorCameraViewMatrix(obs_CAMERA.view_mtx, nns_CAMERA_TARGET_UPVECTOR);
            return;
        }

        default:
            return;
        }
    }
예제 #27
0
    // Token: 0x06000136 RID: 310 RVA: 0x0000E334 File Offset: 0x0000C534
    private static void objCameraPosLimitCheck(OBS_CAMERA obj_camera, NNS_VECTOR pPos)
    {
        int num = 0;

        if (pPos.z != 0f)
        {
            if ((float)obj_camera.limit[4] > pPos.z)
            {
                pPos.z = (float)obj_camera.limit[4];
            }

            if ((float)obj_camera.limit[5] < pPos.z)
            {
                pPos.z = (float)obj_camera.limit[5];
            }

            if (1f / DispScaleGet((int)obj_camera.index) * (float)AppMain.OBD_LCD_X >
                (float)(obj_camera.limit[2] - obj_camera.limit[0]))
            {
                float num2 = (float)(obj_camera.limit[2] - obj_camera.limit[0]) / (float)AppMain.OBD_LCD_X;
                num2 = 1f / num2;
                if (pPos.z >= 0f)
                {
                    pPos.z = (num2 - 1f) * -2f;
                }
                else
                {
                    pPos.z = (num2 - 1f) * -1f;
                }
            }

            if (1f / DispScaleGet((int)obj_camera.index) * (float)AppMain.OBD_LCD_Y >
                (float)(obj_camera.limit[3] - obj_camera.limit[1]))
            {
                float num2 = (float)(obj_camera.limit[3] - obj_camera.limit[1]) / (float)AppMain.OBD_LCD_X;
                num2 = 1f / num2;
                if (pPos.z >= 0f)
                {
                    pPos.z = (num2 - 1f) * -2f;
                }
                else
                {
                    pPos.z = (num2 - 1f) * -1f;
                }
            }
        }

        if (pPos.z > 0f)
        {
            num = AppMain.FXM_FLOAT_TO_FX32(1f / DispScaleGet((int)obj_camera.index) *
                                            (float)AppMain.OBD_LCD_X);
            num  -= (int)AppMain.OBD_LCD_X << 12;
            num >>= 13;
        }

        if ((float)(obj_camera.limit[0] + num) > pPos.x)
        {
            pPos.x = (float)(obj_camera.limit[0] + num);
        }

        if ((float)(obj_camera.limit[2] - (int)AppMain.OBD_LCD_X - num) < pPos.x)
        {
            pPos.x = (float)(obj_camera.limit[2] - (int)AppMain.OBD_LCD_X - num);
        }

        if (pPos.z > 0f)
        {
            num = AppMain.FXM_FLOAT_TO_FX32(1f / DispScaleGet((int)obj_camera.index) *
                                            (float)AppMain.OBD_LCD_Y);
            num  -= (int)AppMain.OBD_LCD_Y << 12;
            num >>= 13;
        }

        if ((float)(obj_camera.limit[1] + num) > pPos.y)
        {
            pPos.y = (float)(obj_camera.limit[1] + num);
        }

        if ((float)(obj_camera.limit[3] - (int)AppMain.OBD_LCD_Y - num) < pPos.y)
        {
            pPos.y = (float)(obj_camera.limit[3] - (int)AppMain.OBD_LCD_Y - num);
        }
    }
예제 #28
0
 // Token: 0x06000135 RID: 309 RVA: 0x0000E326 File Offset: 0x0000C526
 private static void objCameraLimitCheck(OBS_CAMERA obj_camera)
 {
     objCameraPosLimitCheck(obj_camera, obj_camera.disp_pos);
 }
예제 #29
0
    // Token: 0x06000134 RID: 308 RVA: 0x0000DC00 File Offset: 0x0000BE00
    private static void objCameraMove(OBS_CAMERA obj_camera)
    {
        NNS_VECTOR nns_VECTOR = GlobalPool <NNS_VECTOR> .Alloc();

        if (obj_camera.target_obj != null)
        {
            nns_VECTOR.x = AppMain.FXM_FX32_TO_FLOAT(obj_camera.target_obj.pos.x) + obj_camera.target_ofst.x;
            nns_VECTOR.y =
                AppMain.FXM_FX32_TO_FLOAT(obj_camera.target_obj.pos.y - (((int)AppMain.OBD_LCD_Y << 1) + 200 << 12)) +
                obj_camera.target_ofst.y;
            nns_VECTOR.z = AppMain.FXM_FX32_TO_FLOAT(obj_camera.target_obj.pos.z) + obj_camera.target_ofst.z;
        }
        else
        {
            nns_VECTOR.x = obj_camera.target_pos.x - AppMain.FXM_FX32_TO_FLOAT(AppMain.OBD_LCD_X >> 1 << 12) +
                           obj_camera.target_ofst.x;
            nns_VECTOR.y = obj_camera.target_pos.y - AppMain.FXM_FX32_TO_FLOAT(AppMain.OBD_LCD_Y >> 1 << 12) +
                           obj_camera.target_ofst.y;
            nns_VECTOR.z = obj_camera.target_pos.z + obj_camera.target_ofst.z;
        }

        obj_camera.work.x     = nns_VECTOR.x;
        obj_camera.work.y     = nns_VECTOR.y;
        obj_camera.work.z     = nns_VECTOR.z;
        obj_camera.prev_pos.x = obj_camera.pos.x;
        obj_camera.prev_pos.y = obj_camera.pos.y;
        obj_camera.prev_pos.z = obj_camera.pos.z;
        if ((obj_camera.flag & 1U) != 0U)
        {
            if (obj_camera.target_obj != null)
            {
                obj_camera.pos.x = nns_VECTOR.x;
                obj_camera.pos.y = nns_VECTOR.y;
                obj_camera.pos.z = nns_VECTOR.z;
            }

            return;
        }

        if ((obj_camera.flag & 2U) != 0U)
        {
            obj_camera.pos.x = AppMain.ObjShiftSetF(obj_camera.pos.x, nns_VECTOR.x, (int)obj_camera.shift,
                                                    obj_camera.spd_max.x, obj_camera.spd_add.x);
            obj_camera.pos.y = AppMain.ObjShiftSetF(obj_camera.pos.y, nns_VECTOR.x, (int)obj_camera.shift,
                                                    obj_camera.spd_max.y, obj_camera.spd_add.y);
            obj_camera.pos.z = AppMain.ObjShiftSetF(obj_camera.pos.z, nns_VECTOR.x, (int)obj_camera.shift,
                                                    obj_camera.spd_max.z, obj_camera.spd_add.z);
        }
        else
        {
            if (nns_VECTOR.x != obj_camera.pos.x)
            {
                obj_camera.spd.x = AppMain.ObjSpdUpSetF(obj_camera.spd.x, obj_camera.spd_add.x, obj_camera.spd_max.x);
            }
            else
            {
                obj_camera.spd.x = AppMain.ObjSpdDownSetF(obj_camera.spd.x, obj_camera.spd_add.x);
            }

            if (nns_VECTOR.y != obj_camera.pos.y)
            {
                obj_camera.spd.y = AppMain.ObjSpdUpSetF(obj_camera.spd.y, obj_camera.spd_add.y, obj_camera.spd_max.y);
            }
            else
            {
                obj_camera.spd.y = AppMain.ObjSpdDownSetF(obj_camera.spd.y, obj_camera.spd_add.y);
            }

            if (nns_VECTOR.z != obj_camera.pos.z)
            {
                obj_camera.spd.z = AppMain.ObjSpdUpSetF(obj_camera.spd.z, obj_camera.spd_add.z, obj_camera.spd_max.z);
            }
            else
            {
                obj_camera.spd.z = AppMain.ObjSpdDownSetF(obj_camera.spd.z, obj_camera.spd_add.z);
            }

            if (nns_VECTOR.x > obj_camera.pos.x)
            {
                obj_camera.pos.x += obj_camera.spd.x;
                if (obj_camera.pos.x > nns_VECTOR.x)
                {
                    obj_camera.pos.x = nns_VECTOR.x;
                }
            }
            else
            {
                obj_camera.pos.x -= obj_camera.spd.x;
                if (obj_camera.pos.x < nns_VECTOR.x)
                {
                    obj_camera.pos.x = nns_VECTOR.x;
                }
            }

            if (nns_VECTOR.y > obj_camera.pos.y)
            {
                obj_camera.pos.y += obj_camera.spd.y;
                if (obj_camera.pos.y > nns_VECTOR.y)
                {
                    obj_camera.pos.y = nns_VECTOR.y;
                }
            }
            else
            {
                obj_camera.pos.y -= obj_camera.spd.y;
                if (obj_camera.pos.y < nns_VECTOR.y)
                {
                    obj_camera.pos.y = nns_VECTOR.y;
                }
            }

            if (nns_VECTOR.z > obj_camera.pos.z)
            {
                obj_camera.pos.z += obj_camera.spd.z;
                if (obj_camera.pos.z > nns_VECTOR.z)
                {
                    obj_camera.pos.z = nns_VECTOR.z;
                }
            }
            else
            {
                obj_camera.pos.z -= obj_camera.spd.z;
                if (obj_camera.pos.z < nns_VECTOR.z)
                {
                    obj_camera.pos.z = nns_VECTOR.z;
                }
            }
        }

        if (Math.Abs(nns_VECTOR.x - obj_camera.pos.x) > obj_camera.play_ofst_max.x)
        {
            if (nns_VECTOR.x > obj_camera.pos.x)
            {
                obj_camera.pos.x = nns_VECTOR.x - obj_camera.play_ofst_max.x;
            }
            else
            {
                obj_camera.pos.x = nns_VECTOR.x + obj_camera.play_ofst_max.x;
            }
        }

        if (Math.Abs(nns_VECTOR.y - obj_camera.pos.y) > obj_camera.play_ofst_max.y)
        {
            if (nns_VECTOR.y > obj_camera.pos.y)
            {
                obj_camera.pos.y = nns_VECTOR.y - obj_camera.play_ofst_max.y;
            }
            else
            {
                obj_camera.pos.y = nns_VECTOR.y + obj_camera.play_ofst_max.y;
            }
        }

        if (Math.Abs(nns_VECTOR.z - obj_camera.pos.z) > obj_camera.play_ofst_max.z)
        {
            if (nns_VECTOR.z > obj_camera.pos.z)
            {
                obj_camera.pos.z = nns_VECTOR.z - obj_camera.play_ofst_max.z;
            }
            else
            {
                obj_camera.pos.z = nns_VECTOR.z + obj_camera.play_ofst_max.z;
            }
        }

        obj_camera.pos.z += obj_camera.ofst.z;
        GlobalPool <NNS_VECTOR> .Release(nns_VECTOR);
    }
예제 #30
0
    // Token: 0x06000133 RID: 307 RVA: 0x0000D868 File Offset: 0x0000BA68
    private static void objCameraMain(MTS_TASK_TCB tcb)
    {
        if (AppMain.ObjObjectPauseCheck(0U) != 0U)
        {
            return;
        }

        NNS_MATRIX scaleMatrix = GlobalPool <NNS_MATRIX> .Alloc();

        AppMain.nnMakeScaleMatrix(scaleMatrix, AMD_SCREEN_SCALE, AMD_SCREEN_SCALE, AMD_SCREEN_SCALE);
        NNS_VECTOR nns_VECTOR = GlobalPool <NNS_VECTOR> .Alloc();

        for (int i = 0; i < 8; i++)
        {
            OBS_CAMERA obs_CAMERA = obj_camera_sys.obj_camera[i];
            if (obs_CAMERA != null)
            {
                obs_CAMERA.prev_disp_pos.x = obs_CAMERA.disp_pos.x;
                obs_CAMERA.prev_disp_pos.y = obs_CAMERA.disp_pos.y;
                obs_CAMERA.prev_disp_pos.z = obs_CAMERA.disp_pos.z;
                if (obs_CAMERA.user_func != null)
                {
                    obs_CAMERA.user_func(obs_CAMERA);
                }
                else
                {
                    if ((obs_CAMERA.flag & 4U) != 0U)
                    {
                        objCameraMove(obs_CAMERA);
                    }

                    nns_VECTOR.x = obs_CAMERA.pos.x;
                    nns_VECTOR.y = obs_CAMERA.pos.y;
                    nns_VECTOR.z = obs_CAMERA.pos.z;
                    if ((obs_CAMERA.flag & 8U) != 0U)
                    {
                        nns_VECTOR.x -= (nns_VECTOR.x - obs_CAMERA.work.x) * 2f;
                        nns_VECTOR.y -= (nns_VECTOR.y - obs_CAMERA.work.y) * 2f;
                        nns_VECTOR.z -= (nns_VECTOR.z - obs_CAMERA.work.z) * 2f;
                    }

                    obs_CAMERA.disp_pos.x = nns_VECTOR.x + obs_CAMERA.ofst.x;
                    obs_CAMERA.disp_pos.y = nns_VECTOR.y + obs_CAMERA.ofst.y;
                    obs_CAMERA.disp_pos.z = nns_VECTOR.z + obs_CAMERA.ofst.z;
                }

                if ((obs_CAMERA.flag & 32U) != 0U)
                {
                    objCameraLimitCheck(obs_CAMERA);
                }

                obs_CAMERA.disp_pos.x += obs_CAMERA.disp_ofst.x;
                obs_CAMERA.disp_pos.y += obs_CAMERA.disp_ofst.y;
                obs_CAMERA.disp_pos.z += obs_CAMERA.disp_ofst.z;
                obs_CAMERA.disp_ofst.x = 0f;
                obs_CAMERA.disp_ofst.y = 0f;
                obs_CAMERA.disp_ofst.z = 0f;
                if ((obs_CAMERA.flag & 16U) != 0U)
                {
                    AppMain.nnMakePerspectiveMatrix(obs_CAMERA.prj_pers_mtx, obs_CAMERA.fovy, obs_CAMERA.aspect,
                                                    obs_CAMERA.znear, obs_CAMERA.zfar);
                    // nnMultiplyMatrix(obs_CAMERA.prj_pers_mtx, obs_CAMERA.prj_pers_mtx, scaleMatrix);
                    float num  = AppMain.AMD_SCREEN_2D_WIDTH * obs_CAMERA.scale * 0.5f * 1f;
                    float num2 = num * obs_CAMERA.aspect;
                    obs_CAMERA.left   = -num2;
                    obs_CAMERA.right  = num2;
                    obs_CAMERA.bottom = -num;
                    obs_CAMERA.top    = num;
                    nnMakeOrthoMatrix(obs_CAMERA.prj_ortho_mtx, obs_CAMERA.left, obs_CAMERA.right, obs_CAMERA.bottom,
                                      obs_CAMERA.top, obs_CAMERA.znear, obs_CAMERA.zfar);
                    nnMultiplyMatrix(obs_CAMERA.prj_ortho_mtx, obs_CAMERA.prj_ortho_mtx, scaleMatrix);
                    switch (obs_CAMERA.camera_type)
                    {
                    case OBE_CAMERA_TYPE.OBE_CAMERA_TYPE_TARGET_ROLL:
                    {
                        AppMain.NNS_CAMERA_TARGET_ROLL nns_CAMERA_TARGET_ROLL =
                            GlobalPool <AppMain.NNS_CAMERA_TARGET_ROLL> .Alloc();

                        int roll = obs_CAMERA.roll;
                        if ((obs_CAMERA.flag & 1073741824U) != 0U)
                        {
                            obs_CAMERA.roll = 0;
                        }

                        GetTargetRollCamera(obs_CAMERA, nns_CAMERA_TARGET_ROLL);
                        AppMain.nnMakeTargetRollCameraViewMatrix(obs_CAMERA.view_mtx, nns_CAMERA_TARGET_ROLL);
                        obs_CAMERA.roll = roll;
                        GlobalPool <AppMain.NNS_CAMERA_TARGET_ROLL> .Release(nns_CAMERA_TARGET_ROLL);

                        break;
                    }

                    case OBE_CAMERA_TYPE.OBE_CAMERA_TYPE_TARGET_UP_TARGET:
                    {
                        AppMain.NNS_CAMERA_TARGET_UPTARGET nns_CAMERA_TARGET_UPTARGET =
                            new AppMain.NNS_CAMERA_TARGET_UPTARGET();
                        GetTargetUpTargetCamera(obs_CAMERA, nns_CAMERA_TARGET_UPTARGET);
                        AppMain.nnMakeTargetUpTargetCameraViewMatrix(obs_CAMERA.view_mtx,
                                                                     nns_CAMERA_TARGET_UPTARGET);
                        break;
                    }

                    case OBE_CAMERA_TYPE.OBE_CAMERA_TYPE_TARGET_UP_VEC:
                    {
                        AppMain.NNS_CAMERA_TARGET_UPVECTOR nns_CAMERA_TARGET_UPVECTOR =
                            new AppMain.NNS_CAMERA_TARGET_UPVECTOR();
                        GetTargetUpVecCamera(obs_CAMERA, nns_CAMERA_TARGET_UPVECTOR);
                        AppMain.nnMakeTargetUpVectorCameraViewMatrix(obs_CAMERA.view_mtx,
                                                                     nns_CAMERA_TARGET_UPVECTOR);
                        break;
                    }
                    }
                }
            }
        }

        GlobalPool <NNS_VECTOR> .Release(nns_VECTOR);
    }