private static int GmBsCmnRegisterSNMNode(AppMain.GMS_BS_CMN_SNM_WORK snm_work, int node_index) { snm_work.node_info_list[(int)snm_work.reg_node_cnt].node_index = node_index; int regNodeCnt = (int)snm_work.reg_node_cnt; ++snm_work.reg_node_cnt; return(regNodeCnt); }
private static void GmBsCmnUpdateObject3DESStuckWithNode( AppMain.OBS_OBJECT_WORK obj_work, AppMain.GMS_BS_CMN_SNM_WORK snm_work, int snm_reg_id, int b_rotation) { AppMain.GmBsCmnUpdateObject3DESStuckWithNode(obj_work, snm_work, snm_reg_id, b_rotation, (AppMain.NNS_MATRIX)null); }
private static void GmBsCmnUpdateObjectGeneralStuckWithNodeRelative( AppMain.OBS_OBJECT_WORK obj_work, AppMain.GMS_BS_CMN_SNM_WORK snm_work, int snm_reg_id, AppMain.VecFx32 pivot_cur_pos, AppMain.VecFx32 pivot_prev_pos) { AppMain.GmBsCmnUpdateObjectGeneralStuckWithNodeRelative(obj_work, snm_work, snm_reg_id, pivot_cur_pos, pivot_prev_pos, (AppMain.NNS_MATRIX)null); }
private static void GmBsCmnUpdateObjectGeneralStuckWithNodeRelative( AppMain.OBS_OBJECT_WORK obj_work, AppMain.GMS_BS_CMN_SNM_WORK snm_work, int snm_reg_id, AppMain.VecFx32 pivot_cur_pos, AppMain.VecFx32 pivot_prev_pos, AppMain.NNS_MATRIX ofst_mtx) { AppMain.GmBsCmnUpdateObjectGeneralStuckWithNode(obj_work, snm_work, snm_reg_id, ofst_mtx); AppMain.VEC_Set(ref obj_work.pos, obj_work.pos.x - pivot_prev_pos.x + pivot_cur_pos.x, obj_work.pos.y - pivot_prev_pos.y + pivot_cur_pos.y, obj_work.pos.z - pivot_prev_pos.z + pivot_cur_pos.z); }
private static void GmBsCmnDeleteSNMWork(AppMain.GMS_BS_CMN_SNM_WORK snm_work) { AppMain.gmBsCmnClearBossMotionCBLink(snm_work.bmcb_link); snm_work.reg_node_cnt = (ushort)0; snm_work.reg_node_max = (ushort)0; if (snm_work.node_info_list == null) { return; } snm_work.node_info_list = (AppMain.GMS_BS_CMN_SNM_NODE_INFO[])null; }
private static void GmBsCmnCreateSNMWork( AppMain.GMS_BS_CMN_SNM_WORK snm_work, AppMain.NNS_OBJECT _object, ushort reg_max) { AppMain.UNREFERENCED_PARAMETER((object)_object); AppMain.gmBsCmnInitBossMotionCBLink(snm_work.bmcb_link, new AppMain.MPP_VOID_MOTION_NSSOBJECT_OBJECT(AppMain.gmBsCmnMotionCallbackStoreNodeMatrix), (object)snm_work); snm_work.reg_node_cnt = (ushort)0; snm_work.reg_node_max = reg_max; snm_work.node_info_list = AppMain.New <AppMain.GMS_BS_CMN_SNM_NODE_INFO>((int)reg_max); }
private static void GmBsCmnUpdateObjectGeneralStuckWithNode( AppMain.OBS_OBJECT_WORK obj_work, AppMain.GMS_BS_CMN_SNM_WORK snm_work, int snm_reg_id, AppMain.NNS_MATRIX ofst_mtx) { AppMain.NNS_MATRIX snmMtx = AppMain.GmBsCmnGetSNMMtx(snm_work, snm_reg_id); obj_work.pos.x = AppMain.FX_F32_TO_FX32(snmMtx.M03); obj_work.pos.y = -AppMain.FX_F32_TO_FX32(snmMtx.M13); obj_work.pos.z = AppMain.FX_F32_TO_FX32(snmMtx.M23); if (ofst_mtx == null) { return; } AppMain.VEC_Set(ref obj_work.pos, obj_work.pos.x + AppMain.FX_F32_TO_FX32(ofst_mtx.M03), obj_work.pos.y - AppMain.FX_F32_TO_FX32(ofst_mtx.M13), obj_work.pos.z + AppMain.FX_F32_TO_FX32(ofst_mtx.M23)); }
private static void gmBsCmnMotionCallbackStoreNodeMatrix( AppMain.AMS_MOTION motion, AppMain.NNS_OBJECT _object, object mtn_cb_param) { AppMain.GMS_BS_CMN_SNM_WORK gmsBsCmnSnmWork = (AppMain.GMS_BS_CMN_SNM_WORK)mtn_cb_param; AppMain.NNS_MATRIX nodeMatrixBaseMtx = AppMain.gmBsCmnMotionCallbackStoreNodeMatrix_base_mtx; AppMain.nnMakeUnitMatrix(nodeMatrixBaseMtx); AppMain.nnMultiplyMatrix(nodeMatrixBaseMtx, nodeMatrixBaseMtx, AppMain.amMatrixGetCurrent()); for (int index = 0; index < (int)gmsBsCmnSnmWork.reg_node_cnt; ++index) { int nodeIndex = gmsBsCmnSnmWork.node_info_list[index].node_index; AppMain.NNS_MATRIX nodeMatrixNodeMtx = AppMain.gmBsCmnMotionCallbackStoreNodeMatrix_node_mtx; AppMain.nnCalcNodeMatrixTRSList(nodeMatrixNodeMtx, _object, nodeIndex, (AppMain.ArrayPointer <AppMain.NNS_TRS>)motion.data, nodeMatrixBaseMtx); gmsBsCmnSnmWork.node_info_list[index].node_w_mtx.Assign(nodeMatrixNodeMtx); } }
private static void GmBsCmnUpdateObject3DESStuckWithNode( AppMain.OBS_OBJECT_WORK obj_work, AppMain.GMS_BS_CMN_SNM_WORK snm_work, int snm_reg_id, int b_rotation, AppMain.NNS_MATRIX ofst_mtx) { AppMain.NNS_MATRIX stuckWithNodeNmlWMtx = AppMain.GmBsCmnUpdateObject3DESStuckWithNode_nml_w_mtx; AppMain.NNS_QUATERNION dst1 = obj_work.obj_3des.user_dir_quat; AppMain.NNS_MATRIX snmMtx = AppMain.GmBsCmnGetSNMMtx(snm_work, snm_reg_id); obj_work.pos.x = AppMain.FX_F32_TO_FX32(snmMtx.M03); obj_work.pos.y = -AppMain.FX_F32_TO_FX32(snmMtx.M13); obj_work.pos.z = AppMain.FX_F32_TO_FX32(snmMtx.M23); if (b_rotation != 0) { obj_work.obj_3des.flag |= 32U; AppMain.AkMathNormalizeMtx(stuckWithNodeNmlWMtx, snmMtx); AppMain.nnMakeRotateMatrixQuaternion(out dst1, stuckWithNodeNmlWMtx); } else { obj_work.obj_3des.flag &= 4294967263U; AppMain.nnMakeUnitQuaternion(ref dst1); AppMain.nnMakeUnitMatrix(stuckWithNodeNmlWMtx); } if (ofst_mtx != null) { AppMain.NNS_MATRIX stuckWithNodeRotMtx = AppMain.GmBsCmnUpdateObject3DESStuckWithNode_rot_mtx; AppMain.NNS_QUATERNION dst2 = new AppMain.NNS_QUATERNION(); AppMain.NNS_VECTOR dst3 = new AppMain.NNS_VECTOR(); AppMain.NNS_MATRIX withNodeNodeWRot = AppMain.GmBsCmnUpdateObject3DESStuckWithNode_node_w_rot; AppMain.nnCopyMatrix(withNodeNodeWRot, snmMtx); withNodeNodeWRot.M03 = withNodeNodeWRot.M13 = withNodeNodeWRot.M23 = 0.0f; AppMain.nnMultiplyMatrix(withNodeNodeWRot, withNodeNodeWRot, ofst_mtx); AppMain.nnCopyMatrixTranslationVector(dst3, withNodeNodeWRot); AppMain.VEC_Set(ref obj_work.pos, obj_work.pos.x + AppMain.FX_F32_TO_FX32(dst3.x), obj_work.pos.y - AppMain.FX_F32_TO_FX32(dst3.y), obj_work.pos.z + AppMain.FX_F32_TO_FX32(dst3.z)); AppMain.AkMathNormalizeMtx(stuckWithNodeRotMtx, ofst_mtx); AppMain.nnMakeRotateMatrixQuaternion(out dst2, stuckWithNodeRotMtx); obj_work.obj_3des.flag |= 32U; AppMain.nnMultiplyQuaternion(ref dst1, ref dst1, ref dst2); } obj_work.obj_3des.user_dir_quat.Assign(dst1); }
private static AppMain.GMS_BS_CMN_NODE_CTRL_OBJECT GmBsCmnCreateNodeControlObjectBySize( AppMain.OBS_OBJECT_WORK parent_obj, AppMain.GMS_BS_CMN_CNM_MGR_WORK cnm_mgr_work, int cnm_reg_id, AppMain.GMS_BS_CMN_SNM_WORK snm_work, int snm_reg_id, AppMain.TaskWorkFactoryDelegate work_size) { AppMain.OBS_OBJECT_WORK work = AppMain.GMM_EFFECT_CREATE_WORK(work_size, parent_obj, (ushort)0, "bs_cmn_node_ctl_obj"); AppMain.GMS_BS_CMN_NODE_CTRL_OBJECT cmnNodeCtrlObject = (AppMain.GMS_BS_CMN_NODE_CTRL_OBJECT)work; cmnNodeCtrlObject.cnm_mgr_work = cnm_mgr_work; cmnNodeCtrlObject.cnm_reg_id = cnm_reg_id; cmnNodeCtrlObject.snm_work = snm_work; cmnNodeCtrlObject.snm_reg_id = snm_reg_id; cmnNodeCtrlObject.is_enable = 0; AppMain.nnMakeUnitMatrix(cmnNodeCtrlObject.w_mtx); work.disp_flag |= 32U; work.ppOut = (AppMain.MPP_VOID_OBS_OBJECT_WORK)null; work.ppFunc = new AppMain.MPP_VOID_OBS_OBJECT_WORK(AppMain.gmBsCmnNodeControlObjectMainFunc); return(cmnNodeCtrlObject); }
private static void GmBsCmnUpdateObject3DNNStuckWithNode( AppMain.OBS_OBJECT_WORK obj_work, AppMain.GMS_BS_CMN_SNM_WORK snm_work, int snm_reg_id, int b_rotation, AppMain.NNS_MATRIX ofst_mtx) { AppMain.NNS_MATRIX userObjMtxR = obj_work.obj_3d.user_obj_mtx_r; AppMain.NNS_MATRIX snmMtx = AppMain.GmBsCmnGetSNMMtx(snm_work, snm_reg_id); obj_work.pos.x = AppMain.FX_F32_TO_FX32(snmMtx.M03); obj_work.pos.y = -AppMain.FX_F32_TO_FX32(snmMtx.M13); obj_work.pos.z = AppMain.FX_F32_TO_FX32(snmMtx.M23); if (b_rotation != 0) { obj_work.disp_flag |= 16777216U; AppMain.AkMathNormalizeMtx(userObjMtxR, snmMtx); } else { obj_work.disp_flag &= 4278190079U; AppMain.nnMakeUnitMatrix(userObjMtxR); } if (ofst_mtx == null) { return; } AppMain.NNS_MATRIX stuckWithNodeRotMtx = AppMain.GmBsCmnUpdateObject3DNNStuckWithNode_rot_mtx; AppMain.NNS_VECTOR dst = new AppMain.NNS_VECTOR(); AppMain.NNS_MATRIX withNodeNodeWRot = AppMain.GmBsCmnUpdateObject3DNNStuckWithNode_node_w_rot; AppMain.nnCopyMatrix(withNodeNodeWRot, snmMtx); withNodeNodeWRot.M03 = withNodeNodeWRot.M13 = withNodeNodeWRot.M23 = 0.0f; AppMain.nnMultiplyMatrix(withNodeNodeWRot, withNodeNodeWRot, ofst_mtx); AppMain.nnCopyMatrixTranslationVector(dst, withNodeNodeWRot); AppMain.VEC_Set(ref obj_work.pos, obj_work.pos.x + AppMain.FX_F32_TO_FX32(dst.x), obj_work.pos.y - AppMain.FX_F32_TO_FX32(dst.y), obj_work.pos.z + AppMain.FX_F32_TO_FX32(dst.z)); AppMain.nnCopyMatrix(stuckWithNodeRotMtx, ofst_mtx); stuckWithNodeRotMtx.M03 = stuckWithNodeRotMtx.M13 = stuckWithNodeRotMtx.M23 = 0.0f; obj_work.disp_flag |= 16777216U; AppMain.nnMultiplyMatrix(userObjMtxR, userObjMtxR, stuckWithNodeRotMtx); }
private static AppMain.NNS_MATRIX GmBsCmnGetSNMMtx( AppMain.GMS_BS_CMN_SNM_WORK snm_work, int snm_reg_id) { return(snm_work.node_info_list[snm_reg_id].node_w_mtx); }