// Token: 0x06000508 RID: 1288 RVA: 0x0002B340 File Offset: 0x00029540 private static void gmBoss5LdPartProcInit(AppMain.GMS_BOSS5_LDPART_WORK ldpart_work) { AppMain.OBS_OBJECT_WORK obs_OBJECT_WORK = AppMain.GMM_BS_OBJ(ldpart_work); AppMain.ObjDrawObjectActionSet3DNNMaterial(obs_OBJECT_WORK, 0); obs_OBJECT_WORK.disp_flag |= 4U; ldpart_work.proc_update = new AppMain.MPP_VOID_GMS_BOSS5_LDPART_WORK(AppMain.gmBoss5LdPartProcUpdateIdle); }
// Token: 0x06000502 RID: 1282 RVA: 0x0002B10C File Offset: 0x0002930C private static void gmBoss5LdPartUpdateSpin(AppMain.GMS_BOSS5_LDPART_WORK ldpart_work) { AppMain.OBS_OBJECT_WORK obs_OBJECT_WORK = AppMain.GMM_BS_OBJ(ldpart_work); AppMain.nnMultiplyQuaternion(ref ldpart_work.cur_rot_quat, ref ldpart_work.rot_diff_quat, ref ldpart_work.cur_rot_quat); AppMain.nnMakeQuaternionMatrix(obs_OBJECT_WORK.obj_3d.user_obj_mtx_r, ref ldpart_work.cur_rot_quat); obs_OBJECT_WORK.disp_flag |= 16777216U; }
private static AppMain.GMS_BOSS5_LDPART_WORK gmBoss5LandCreateLdPart( AppMain.GMS_BOSS5_LAND_WORK land_work, int land_type, int part_index) { AppMain.OBS_OBJECT_WORK work = AppMain.GMM_EFFECT_CREATE_WORK((AppMain.TaskWorkFactoryDelegate)(() => (object)new AppMain.GMS_BOSS5_LDPART_WORK()), AppMain.GMM_BS_OBJ((object)land_work), (ushort)0, "BOSS5_LAND_PART"); AppMain.GMS_EFFECT_3DNN_WORK gmsEffect3DnnWork = (AppMain.GMS_EFFECT_3DNN_WORK)work; AppMain.GMS_BOSS5_LDPART_WORK ldpart_work = (AppMain.GMS_BOSS5_LDPART_WORK)work; ldpart_work.part_index = part_index; AppMain.ObjObjectCopyAction3dNNModel(work, AppMain.GmBoss5GetObject3dList()[AppMain.gm_boss5_land_mdl_amb_idx_tbl[land_type]], gmsEffect3DnnWork.obj_3d); work.obj_3d.drawflag = (uint)((ulong)work.obj_3d.drawflag & ulong.MaxValue); AppMain.ObjObjectAction3dNNMaterialMotionLoad(work, 0, AppMain.ObjDataGet(AppMain.gm_boss5_land_mat_mtn_dwork_no_tbl[land_type]), (string)null, AppMain.gm_boss5_land_mat_mtn_data_tbl[land_type], (object)null); work.obj_3d.use_light_flag &= 4294967294U; work.obj_3d.use_light_flag |= 2U; work.flag |= 1024U; work.flag |= 18U; work.disp_flag |= 4194304U; work.move_flag |= 256U; work.move_flag &= 4294967167U; work.parent_ofst.x = AppMain.GMD_BOSS5_LAND_LDPART_WIDTH_FX / 2 + part_index * AppMain.GMD_BOSS5_LAND_LDPART_WIDTH_FX + AppMain.GMD_BOSS5_LAND_LDPART_CENTER_OFST_X_FX; work.parent_ofst.y = AppMain.GMD_BOSS5_LAND_LDPART_HEIGHT_FX / 2 + AppMain.GMD_BOSS5_LAND_LDPART_CENTER_OFST_Y_FX; work.parent_ofst.z = 0; ldpart_work.pivot_parent_ofst[0] = work.parent_ofst.x; ldpart_work.pivot_parent_ofst[1] = work.parent_ofst.y; work.ppFunc = new AppMain.MPP_VOID_OBS_OBJECT_WORK(AppMain.gmBoss5LdPartMain); AppMain.gmBoss5LdPartProcInit(ldpart_work); return(ldpart_work); }
// Token: 0x06000500 RID: 1280 RVA: 0x0002AEB0 File Offset: 0x000290B0 private static AppMain.GMS_BOSS5_LDPART_WORK gmBoss5LandCreateLdPart(AppMain.GMS_BOSS5_LAND_WORK land_work, int land_type, int part_index) { AppMain.OBS_OBJECT_WORK parent_obj = AppMain.GMM_BS_OBJ(land_work); AppMain.OBS_OBJECT_WORK obs_OBJECT_WORK = AppMain.GMM_EFFECT_CREATE_WORK(() => new AppMain.GMS_BOSS5_LDPART_WORK(), parent_obj, 0, "BOSS5_LAND_PART"); AppMain.GMS_EFFECT_3DNN_WORK gms_EFFECT_3DNN_WORK = (AppMain.GMS_EFFECT_3DNN_WORK)obs_OBJECT_WORK; AppMain.GMS_BOSS5_LDPART_WORK gms_BOSS5_LDPART_WORK = (AppMain.GMS_BOSS5_LDPART_WORK)obs_OBJECT_WORK; gms_BOSS5_LDPART_WORK.part_index = part_index; AppMain.ObjObjectCopyAction3dNNModel(obs_OBJECT_WORK, AppMain.GmBoss5GetObject3dList()[AppMain.gm_boss5_land_mdl_amb_idx_tbl[land_type]], gms_EFFECT_3DNN_WORK.obj_3d); obs_OBJECT_WORK.obj_3d.drawflag = ( uint )(( ulong )obs_OBJECT_WORK.obj_3d.drawflag & ulong.MaxValue); AppMain.ObjObjectAction3dNNMaterialMotionLoad(obs_OBJECT_WORK, 0, AppMain.ObjDataGet(AppMain.gm_boss5_land_mat_mtn_dwork_no_tbl[land_type]), null, AppMain.gm_boss5_land_mat_mtn_data_tbl[land_type], null); obs_OBJECT_WORK.obj_3d.use_light_flag &= 4294967294U; obs_OBJECT_WORK.obj_3d.use_light_flag |= 2U; obs_OBJECT_WORK.flag |= 1024U; obs_OBJECT_WORK.flag |= 18U; obs_OBJECT_WORK.disp_flag |= 4194304U; obs_OBJECT_WORK.move_flag |= 256U; obs_OBJECT_WORK.move_flag &= 4294967167U; obs_OBJECT_WORK.parent_ofst.x = AppMain.GMD_BOSS5_LAND_LDPART_WIDTH_FX / 2 + part_index * AppMain.GMD_BOSS5_LAND_LDPART_WIDTH_FX + AppMain.GMD_BOSS5_LAND_LDPART_CENTER_OFST_X_FX; obs_OBJECT_WORK.parent_ofst.y = AppMain.GMD_BOSS5_LAND_LDPART_HEIGHT_FX / 2 + AppMain.GMD_BOSS5_LAND_LDPART_CENTER_OFST_Y_FX; obs_OBJECT_WORK.parent_ofst.z = 0; gms_BOSS5_LDPART_WORK.pivot_parent_ofst[0] = obs_OBJECT_WORK.parent_ofst.x; gms_BOSS5_LDPART_WORK.pivot_parent_ofst[1] = obs_OBJECT_WORK.parent_ofst.y; obs_OBJECT_WORK.ppFunc = new AppMain.MPP_VOID_OBS_OBJECT_WORK(AppMain.gmBoss5LdPartMain); AppMain.gmBoss5LdPartProcInit(gms_BOSS5_LDPART_WORK); return(gms_BOSS5_LDPART_WORK); }
private static void gmBoss5LdPartProcUpdateIdle(AppMain.GMS_BOSS5_LDPART_WORK ldpart_work) { if (((int)((AppMain.GMS_BOSS5_LAND_WORK)AppMain.GMM_BS_OBJ((object)ldpart_work).parent_obj).flag & (int)AppMain.GMD_BOSS5_LAND_FLAG_SHAKE_ACTIVE) == 0) { return; } AppMain.gmBoss5LdPartInitVib(ldpart_work); ldpart_work.proc_update = new AppMain.MPP_VOID_GMS_BOSS5_LDPART_WORK(AppMain.gmBoss5LdPartProcUpdateShake); }
// Token: 0x06000507 RID: 1287 RVA: 0x0002B2E0 File Offset: 0x000294E0 private static void gmBoss5LdPartMain(AppMain.OBS_OBJECT_WORK obj_work) { AppMain.GMS_BOSS5_LDPART_WORK gms_BOSS5_LDPART_WORK = (AppMain.GMS_BOSS5_LDPART_WORK)obj_work; obj_work.parent_ofst.x = gms_BOSS5_LDPART_WORK.pivot_parent_ofst[0] + gms_BOSS5_LDPART_WORK.vib_ofst[0]; obj_work.parent_ofst.y = gms_BOSS5_LDPART_WORK.pivot_parent_ofst[1] + gms_BOSS5_LDPART_WORK.vib_ofst[1]; if (gms_BOSS5_LDPART_WORK.proc_update != null) { gms_BOSS5_LDPART_WORK.proc_update(gms_BOSS5_LDPART_WORK); } }
// Token: 0x06000509 RID: 1289 RVA: 0x0002B37C File Offset: 0x0002957C private static void gmBoss5LdPartProcUpdateIdle(AppMain.GMS_BOSS5_LDPART_WORK ldpart_work) { AppMain.OBS_OBJECT_WORK obs_OBJECT_WORK = AppMain.GMM_BS_OBJ(ldpart_work); AppMain.GMS_BOSS5_LAND_WORK gms_BOSS5_LAND_WORK = (AppMain.GMS_BOSS5_LAND_WORK)obs_OBJECT_WORK.parent_obj; if ((gms_BOSS5_LAND_WORK.flag & AppMain.GMD_BOSS5_LAND_FLAG_SHAKE_ACTIVE) != 0U) { AppMain.gmBoss5LdPartInitVib(ldpart_work); ldpart_work.proc_update = new AppMain.MPP_VOID_GMS_BOSS5_LDPART_WORK(AppMain.gmBoss5LdPartProcUpdateShake); } }
// Token: 0x06000505 RID: 1285 RVA: 0x0002B24C File Offset: 0x0002944C private static void gmBoss5LdPartUpdateVib(AppMain.GMS_BOSS5_LDPART_WORK ldpart_work) { ldpart_work.vib_ofst[0] = AppMain.FX_Mul(AppMain.gm_boss5_land_vib_tbl[ldpart_work.vib_cnt][0], AppMain.GMD_BOSS5_LAND_LDPART_VIB_AMPLITUDE); ldpart_work.vib_ofst[1] = AppMain.FX_Mul(AppMain.gm_boss5_land_vib_tbl[ldpart_work.vib_cnt][1], AppMain.GMD_BOSS5_LAND_LDPART_VIB_AMPLITUDE); ldpart_work.vib_cnt++; if (ldpart_work.vib_cnt >= 40) { ldpart_work.vib_cnt = 0; } }
private static void gmBoss5LdPartMain(AppMain.OBS_OBJECT_WORK obj_work) { AppMain.GMS_BOSS5_LDPART_WORK wrk = (AppMain.GMS_BOSS5_LDPART_WORK)obj_work; obj_work.parent_ofst.x = wrk.pivot_parent_ofst[0] + wrk.vib_ofst[0]; obj_work.parent_ofst.y = wrk.pivot_parent_ofst[1] + wrk.vib_ofst[1]; if (wrk.proc_update == null) { return; } wrk.proc_update(wrk); }
private static void gmBoss5LdPartInitFall(AppMain.GMS_BOSS5_LDPART_WORK ldpart_work) { AppMain.OBS_OBJECT_WORK obsObjectWork = AppMain.GMM_BS_OBJ((object)ldpart_work); int ang = AppMain.AKM_DEGtoA32((int)AppMain.mtMathRand() % AppMain.GMD_BOSS5_LAND_LDPART_FALL_XY_DIR_RANGE_DEG + (270 - AppMain.GMD_BOSS5_LAND_LDPART_FALL_XY_DIR_RANGE_DEG / 2)); int num = AppMain.FX_Mul(AppMain.AkMathRandFx(), AppMain.GMD_BOSS5_LAND_LDPART_FALL_Z_SPD_MAX * 2) - AppMain.GMD_BOSS5_LAND_LDPART_FALL_Z_SPD_MAX; obsObjectWork.spd.y = (int)(4096.0 * (double)AppMain.GMD_BOSS5_LAND_LDPART_FALL_XY_SPD_FL * (double)AppMain.nnSin(ang)); obsObjectWork.spd.x = (int)(4096.0 * (double)AppMain.GMD_BOSS5_LAND_LDPART_FALL_XY_SPD_FL * (double)AppMain.nnCos(ang)); obsObjectWork.spd.z = num; obsObjectWork.flag &= 4294966271U; obsObjectWork.move_flag |= 128U; }
// Token: 0x0600050B RID: 1291 RVA: 0x0002B42C File Offset: 0x0002962C private static void gmBoss5LdPartProcUpdateFall(AppMain.GMS_BOSS5_LDPART_WORK ldpart_work) { if (ldpart_work.wait_timer != 0U) { ldpart_work.wait_timer -= 1U; } else if (ldpart_work.brk_glass_cnt == 0U) { AppMain.GmBoss5EfctCreateBreakingGlass(AppMain.GMM_BS_OBJ(ldpart_work)); ldpart_work.brk_glass_cnt += 1U; } AppMain.gmBoss5LdPartUpdateSpin(ldpart_work); }
// Token: 0x06000503 RID: 1283 RVA: 0x0002B160 File Offset: 0x00029360 private static void gmBoss5LdPartInitFall(AppMain.GMS_BOSS5_LDPART_WORK ldpart_work) { AppMain.OBS_OBJECT_WORK obs_OBJECT_WORK = AppMain.GMM_BS_OBJ(ldpart_work); int num = (int)AppMain.mtMathRand() % AppMain.GMD_BOSS5_LAND_LDPART_FALL_XY_DIR_RANGE_DEG; int ang = AppMain.AKM_DEGtoA32(num + (270 - AppMain.GMD_BOSS5_LAND_LDPART_FALL_XY_DIR_RANGE_DEG / 2)); int z = AppMain.FX_Mul(AppMain.AkMathRandFx(), AppMain.GMD_BOSS5_LAND_LDPART_FALL_Z_SPD_MAX * 2) - AppMain.GMD_BOSS5_LAND_LDPART_FALL_Z_SPD_MAX; obs_OBJECT_WORK.spd.y = ( int )(4096f * AppMain.GMD_BOSS5_LAND_LDPART_FALL_XY_SPD_FL * AppMain.nnSin(ang)); obs_OBJECT_WORK.spd.x = ( int )(4096f * AppMain.GMD_BOSS5_LAND_LDPART_FALL_XY_SPD_FL * AppMain.nnCos(ang)); obs_OBJECT_WORK.spd.z = z; obs_OBJECT_WORK.flag &= 4294966271U; obs_OBJECT_WORK.move_flag |= 128U; }
// Token: 0x0600050A RID: 1290 RVA: 0x0002B3C4 File Offset: 0x000295C4 private static void gmBoss5LdPartProcUpdateShake(AppMain.GMS_BOSS5_LDPART_WORK ldpart_work) { AppMain.OBS_OBJECT_WORK obs_OBJECT_WORK = AppMain.GMM_BS_OBJ(ldpart_work); AppMain.GMS_BOSS5_LAND_WORK gms_BOSS5_LAND_WORK = (AppMain.GMS_BOSS5_LAND_WORK)obs_OBJECT_WORK.parent_obj; AppMain.gmBoss5LdPartUpdateVib(ldpart_work); if ((gms_BOSS5_LAND_WORK.flag & AppMain.GMD_BOSS5_LAND_FLAG_BREAK_ACTIVE) != 0U) { AppMain.gmBoss5LdPartClearVib(ldpart_work); AppMain.gmBoss5LdPartInitSpin(ldpart_work); AppMain.gmBoss5LdPartInitFall(ldpart_work); ldpart_work.wait_timer = ( uint )(ldpart_work.part_index & 1); ldpart_work.proc_update = new AppMain.MPP_VOID_GMS_BOSS5_LDPART_WORK(AppMain.gmBoss5LdPartProcUpdateFall); } }
private static void gmBoss5LdPartProcUpdateShake(AppMain.GMS_BOSS5_LDPART_WORK ldpart_work) { AppMain.GMS_BOSS5_LAND_WORK parentObj = (AppMain.GMS_BOSS5_LAND_WORK)AppMain.GMM_BS_OBJ((object)ldpart_work).parent_obj; AppMain.gmBoss5LdPartUpdateVib(ldpart_work); if (((int)parentObj.flag & (int)AppMain.GMD_BOSS5_LAND_FLAG_BREAK_ACTIVE) == 0) { return; } AppMain.gmBoss5LdPartClearVib(ldpart_work); AppMain.gmBoss5LdPartInitSpin(ldpart_work); AppMain.gmBoss5LdPartInitFall(ldpart_work); ldpart_work.wait_timer = (uint)(ldpart_work.part_index & 1); ldpart_work.proc_update = new AppMain.MPP_VOID_GMS_BOSS5_LDPART_WORK(AppMain.gmBoss5LdPartProcUpdateFall); }
private static void gmBoss5LdPartInitSpin(AppMain.GMS_BOSS5_LDPART_WORK ldpart_work) { AppMain.nnMakeUnitQuaternion(ref ldpart_work.cur_rot_quat); AppMain.nnMakeUnitQuaternion(ref ldpart_work.rot_diff_quat); for (int index = 0; (long)index < (long)AppMain.GMD_BOSS5_LAND_LDPART_SPIN_ROT_AXIS_NUM; ++index) { AppMain.NNS_VECTOR dst_vec = new AppMain.NNS_VECTOR(); float rand_z = AppMain.MTM_MATH_CLIP((float)((double)AppMain.FX_FX32_TO_F32(AppMain.AkMathRandFx()) * 2.0 - 1.0), -1f, 1f); short rand_angle = AppMain.AKM_DEGtoA16(360f * AppMain.FX_FX32_TO_F32(AppMain.AkMathRandFx())); AppMain.AkMathGetRandomUnitVector(dst_vec, rand_z, rand_angle); AppMain.NNS_QUATERNION dst; AppMain.nnMakeRotateAxisQuaternion(out dst, dst_vec.x, dst_vec.y, dst_vec.z, AppMain.GMD_BOSS5_LAND_LDPART_SPIN_ROT_SPD_DEG); AppMain.nnMultiplyQuaternion(ref ldpart_work.rot_diff_quat, ref dst, ref ldpart_work.rot_diff_quat); } }
// Token: 0x06000501 RID: 1281 RVA: 0x0002B054 File Offset: 0x00029254 private static void gmBoss5LdPartInitSpin(AppMain.GMS_BOSS5_LDPART_WORK ldpart_work) { AppMain.nnMakeUnitQuaternion(ref ldpart_work.cur_rot_quat); AppMain.nnMakeUnitQuaternion(ref ldpart_work.rot_diff_quat); int num = 0; while (( long )num < ( long )(( ulong )AppMain.GMD_BOSS5_LAND_LDPART_SPIN_ROT_AXIS_NUM)) { AppMain.NNS_VECTOR nns_VECTOR = AppMain.GlobalPool <AppMain.NNS_VECTOR> .Alloc(); float num2 = AppMain.FX_FX32_TO_F32(AppMain.AkMathRandFx()) * 2f - 1f; num2 = AppMain.MTM_MATH_CLIP(num2, -1f, 1f); short rand_angle = AppMain.AKM_DEGtoA16(360f * AppMain.FX_FX32_TO_F32(AppMain.AkMathRandFx())); AppMain.AkMathGetRandomUnitVector(nns_VECTOR, num2, rand_angle); AppMain.NNS_QUATERNION nns_QUATERNION; AppMain.nnMakeRotateAxisQuaternion(out nns_QUATERNION, nns_VECTOR.x, nns_VECTOR.y, nns_VECTOR.z, AppMain.GMD_BOSS5_LAND_LDPART_SPIN_ROT_SPD_DEG); AppMain.nnMultiplyQuaternion(ref ldpart_work.rot_diff_quat, ref nns_QUATERNION, ref ldpart_work.rot_diff_quat); num++; } }
// Token: 0x06000506 RID: 1286 RVA: 0x0002B2B8 File Offset: 0x000294B8 private static void gmBoss5LdPartClearVib(AppMain.GMS_BOSS5_LDPART_WORK ldpart_work) { ldpart_work.vib_cnt = 0; ldpart_work.vib_ofst[0] = (ldpart_work.vib_ofst[1] = 0); }
// Token: 0x06000504 RID: 1284 RVA: 0x0002B21C File Offset: 0x0002941C private static void gmBoss5LdPartInitVib(AppMain.GMS_BOSS5_LDPART_WORK ldpart_work) { ldpart_work.vib_cnt = ( int )(AppMain.mtMathRand() % 40); ldpart_work.vib_ofst[0] = (ldpart_work.vib_ofst[1] = 0); }