mirror of
https://github.com/korenkonder/ReDIVA.git
synced 2026-10-14 09:59:09 +03:00
5408 lines
150 KiB
C++
5408 lines
150 KiB
C++
/*
|
|
by korenkonder
|
|
GitHub/GitLab: korenkonder
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include "../../KKdLib/default.hpp"
|
|
#include "../../KKdLib/database/bone.hpp"
|
|
#include "../../KKdLib/database/motion.hpp"
|
|
#include "../../KKdLib/prj/bit_array.hpp"
|
|
#include "../../KKdLib/prj/primitive_type.hpp"
|
|
#include "../../KKdLib/prj/vector_pair.hpp"
|
|
#include "../../KKdLib/mat.hpp"
|
|
#include "../../KKdLib/mot.hpp"
|
|
#include "../../KKdLib/rectangle.hpp"
|
|
#include "../../KKdLib/vec.hpp"
|
|
#include "../prj/memory_manager.hpp"
|
|
#include "../item_table.hpp"
|
|
#include "../render_context.hpp"
|
|
#include "../object.hpp"
|
|
#include "../static_var.hpp"
|
|
#include "rob_item.hpp"
|
|
|
|
enum ACT_NAME {
|
|
ROB_ACT_NONE = 0,
|
|
ROB_ACT_MOTION,
|
|
ROB_ACT_KAMAE,
|
|
ROB_ACT_YARARE,
|
|
ROB_ACT_GUARD,
|
|
ROB_ACT_NAGE,
|
|
ROB_ACT_NAGERARE,
|
|
ROB_ACT_JUMP,
|
|
ROB_ACT_DOWN,
|
|
ROB_ACT_RISE,
|
|
ROB_ACT_UKEMI,
|
|
ROB_ACT_GUARD_POSE,
|
|
ROB_ACT_RINGOUT,
|
|
ROB_ACT_GACHA,
|
|
ROB_ACT_WALK,
|
|
ROB_ACT_RUN,
|
|
ROB_ACT_DASH,
|
|
ROB_ACT_SY_DASH,
|
|
ROB_ACT_YOKE,
|
|
ROB_ACT_ROPEWORK,
|
|
ROB_ACT_MAX,
|
|
};
|
|
|
|
enum AtkPoint {
|
|
AP_NO_ATTACK = 0,
|
|
AP_HIGH,
|
|
AP_MIDDLE,
|
|
AP_LOW,
|
|
AP_AIR,
|
|
AP_VERY_LOW,
|
|
AP_LITTLE_LOW,
|
|
AP_LITTLE_HIGH,
|
|
AP_NAGEMISS_HIGH,
|
|
AP_NAGEMISS_LOW,
|
|
AP_NAGEMISS_DOWN,
|
|
AP_NAGEMISS_HI_AIR,
|
|
AP_DOWN_ATTACK,
|
|
AP_AIR_LOW,
|
|
AP_AIR_DOWN_ATTACK,
|
|
AP_MAX,
|
|
};
|
|
|
|
enum AtkUnit {
|
|
AU_NO_ATTACK = 0,
|
|
AU_KATA_R,
|
|
AU_KATA_L,
|
|
AU_UDE_R,
|
|
AU_UDE_L,
|
|
AU_TE_R,
|
|
AU_TE_L,
|
|
AU_HIZA_R,
|
|
AU_HIZA_L,
|
|
AU_ASI_R,
|
|
AU_ASI_L,
|
|
AU_FOOT_R,
|
|
AU_FOOT_L,
|
|
AU_RYOU_TE,
|
|
AU_ASI_ALL_R,
|
|
AU_ASI_ALL_L,
|
|
AU_SENAKA,
|
|
AU_KAO,
|
|
AU_KOSI,
|
|
AU_MUNE_KAO,
|
|
AU_BODY,
|
|
AU_RYOU_ASI,
|
|
AU_ELBO_R,
|
|
AU_ELBO_L,
|
|
AU_TE_ALL_R,
|
|
AU_TE_ALL_L,
|
|
AU_ASI_ALL,
|
|
AU_RYOU_HIZA,
|
|
AU_TE_ASI_R,
|
|
AU_TE_ASI_L,
|
|
AU_KATA_MUNE_R,
|
|
AU_KATA_MUNE_L,
|
|
AU_SHIRI,
|
|
AU_KAO_KATA,
|
|
AU_RYOU_ASI_HIZA,
|
|
AU_RYOU_UDE,
|
|
AU_RYOU_TE_ALL,
|
|
AU_ZENSHIN,
|
|
AU_TETSUZAN,
|
|
AU_TETSUZAN_M,
|
|
AU_ELBO_HIZA_R,
|
|
AU_ELBO_HIZA_L,
|
|
AU_RYOU_TE_KOSI,
|
|
AU_BUKI_R,
|
|
AU_BUKI_L,
|
|
AU_KATA_HIZA_R,
|
|
AU_KATA_HIZA_L,
|
|
AU_KATA_R_HIZA_L,
|
|
AU_KATA_L_HIZA_R,
|
|
AU_RYOU_HIJI,
|
|
AU_RYOU_ASI_TE_R,
|
|
AU_RYOU_ASI_TE_L,
|
|
AU_ELBO_MUNE_R,
|
|
AU_ELBO_MUNE_L,
|
|
AU_TE_R_ASI_L,
|
|
AU_TE_L_ASI_R,
|
|
AU_BODY_TE_R,
|
|
AU_BODY_TE_L,
|
|
AU_BODY_ASI_R,
|
|
AU_BODY_ASI_L,
|
|
AU_BODY_TE_ASI_R,
|
|
AU_BODY_TE_ASI_L,
|
|
AU_RYOU_TE_KAO,
|
|
AU_MAX,
|
|
};
|
|
|
|
enum BONE_BLK {
|
|
BLK_DUMMY = -1,
|
|
|
|
BLK_N_HARA_CP = 0x00,
|
|
BLK_KG_HARA_Y = 0x01,
|
|
BLK_KL_HARA_XZ = 0x02,
|
|
BLK_KL_HARA_ETC = 0x03,
|
|
BLK_N_HARA = 0x04,
|
|
BLK_CL_MUNE = 0x05,
|
|
BLK_N_MUNE_B = 0x06,
|
|
BLK_KL_MUNE_B_WJ = 0x07,
|
|
BLK_KL_KUBI = 0x08,
|
|
BLK_N_KAO = 0x09,
|
|
BLK_CL_KAO = 0x0A,
|
|
BLK_FACE_ROOT = 0x0B,
|
|
BLK_N_AGO = 0x0C,
|
|
BLK_KL_AGO_WJ = 0x0D,
|
|
BLK_N_TOOTH_UNDER = 0x0E,
|
|
BLK_TL_TOOTH_UNDER_WJ = 0x0F,
|
|
BLK_N_EYE_L = 0x10,
|
|
BLK_KL_EYE_L = 0x11,
|
|
BLK_N_EYE_L_WJ_EX = 0x12,
|
|
BLK_KL_HIGHLIGHT_L_WJ = 0x13,
|
|
BLK_N_EYE_R = 0x14,
|
|
BLK_KL_EYE_R = 0x15,
|
|
BLK_N_EYE_R_WJ_EX = 0x16,
|
|
BLK_KL_HIGHLIGHT_R_WJ = 0x17,
|
|
BLK_N_EYELID_L_A = 0x18,
|
|
BLK_TL_EYELID_L_A_WJ = 0x19,
|
|
BLK_N_EYELID_L_B = 0x1A,
|
|
BLK_TL_EYELID_L_B_WJ = 0x1B,
|
|
BLK_N_EYELID_R_A = 0x1C,
|
|
BLK_TL_EYELID_R_A_WJ = 0x1D,
|
|
BLK_N_EYELID_R_B = 0x1E,
|
|
BLK_TL_EYELID_R_B_WJ = 0x1F,
|
|
BLK_N_KUTI_D = 0x20,
|
|
BLK_TL_KUTI_D_WJ = 0x21,
|
|
BLK_N_KUTI_D_L = 0x22,
|
|
BLK_TL_KUTI_D_L_WJ = 0x23,
|
|
BLK_N_KUTI_D_R = 0x24,
|
|
BLK_TL_KUTI_D_R_WJ = 0x25,
|
|
BLK_N_KUTI_DS_L = 0x26,
|
|
BLK_TL_KUTI_DS_L_WJ = 0x27,
|
|
BLK_N_KUTI_DS_R = 0x28,
|
|
BLK_TL_KUTI_DS_R_WJ = 0x29,
|
|
BLK_N_KUTI_L = 0x2A,
|
|
BLK_TL_KUTI_L_WJ = 0x2B,
|
|
BLK_N_KUTI_M_L = 0x2C,
|
|
BLK_TL_KUTI_M_L_WJ = 0x2D,
|
|
BLK_N_KUTI_M_R = 0x2E,
|
|
BLK_TL_KUTI_M_R_WJ = 0x2F,
|
|
BLK_N_KUTI_R = 0x30,
|
|
BLK_TL_KUTI_R_WJ = 0x31,
|
|
BLK_N_KUTI_U = 0x32,
|
|
BLK_TL_KUTI_U_WJ = 0x33,
|
|
BLK_N_KUTI_U_L = 0x34,
|
|
BLK_TL_KUTI_U_L_WJ = 0x35,
|
|
BLK_N_KUTI_U_R = 0x36,
|
|
BLK_TL_KUTI_U_R_WJ = 0x37,
|
|
BLK_N_MABU_L_D_A = 0x38,
|
|
BLK_TL_MABU_L_D_A_WJ = 0x39,
|
|
BLK_N_MABU_L_D_B = 0x3A,
|
|
BLK_TL_MABU_L_D_B_WJ = 0x3B,
|
|
BLK_N_MABU_L_D_C = 0x3C,
|
|
BLK_TL_MABU_L_D_C_WJ = 0x3D,
|
|
BLK_N_MABU_L_U_A = 0x3E,
|
|
BLK_TL_MABU_L_U_A_WJ = 0x3F,
|
|
BLK_N_MABU_L_U_B = 0x40,
|
|
BLK_TL_MABU_L_U_B_WJ = 0x41,
|
|
BLK_N_EYELASHES_L = 0x42,
|
|
BLK_TL_EYELASHES_L_WJ = 0x43,
|
|
BLK_N_MABU_L_U_C = 0x44,
|
|
BLK_TL_MABU_L_U_C_WJ = 0x45,
|
|
BLK_N_MABU_R_D_A = 0x46,
|
|
BLK_TL_MABU_R_D_A_WJ = 0x47,
|
|
BLK_N_MABU_R_D_B = 0x48,
|
|
BLK_TL_MABU_R_D_B_WJ = 0x49,
|
|
BLK_N_MABU_R_D_C = 0x4A,
|
|
BLK_TL_MABU_R_D_C_WJ = 0x4B,
|
|
BLK_N_MABU_R_U_A = 0x4C,
|
|
BLK_TL_MABU_R_U_A_WJ = 0x4D,
|
|
BLK_N_MABU_R_U_B = 0x4E,
|
|
BLK_TL_MABU_R_U_B_WJ = 0x4F,
|
|
BLK_N_EYELASHES_R = 0x50,
|
|
BLK_TL_EYELASHES_R_WJ = 0x51,
|
|
BLK_N_MABU_R_U_C = 0x52,
|
|
BLK_TL_MABU_R_U_C_WJ = 0x53,
|
|
BLK_N_MAYU_L = 0x54,
|
|
BLK_TL_MAYU_L_WJ = 0x55,
|
|
BLK_N_MAYU_L_B = 0x56,
|
|
BLK_TL_MAYU_L_B_WJ = 0x57,
|
|
BLK_N_MAYU_L_C = 0x58,
|
|
BLK_TL_MAYU_L_C_WJ = 0x59,
|
|
BLK_N_MAYU_R = 0x5A,
|
|
BLK_TL_MAYU_R_WJ = 0x5B,
|
|
BLK_N_MAYU_R_B = 0x5C,
|
|
BLK_TL_MAYU_R_B_WJ = 0x5D,
|
|
BLK_N_MAYU_R_C = 0x5E,
|
|
BLK_TL_MAYU_R_C_WJ = 0x5F,
|
|
BLK_N_TOOTH_UPPER = 0x60,
|
|
BLK_TL_TOOTH_UPPER_WJ = 0x61,
|
|
BLK_N_KUBI_WJ_EX = 0x62,
|
|
BLK_N_WAKI_L = 0x63,
|
|
BLK_KL_WAKI_L_WJ = 0x64,
|
|
BLK_TL_UP_KATA_L = 0x65,
|
|
BLK_C_KATA_L = 0x66,
|
|
BLK_KL_TE_L_WJ = 0x67,
|
|
BLK_N_HITO_L_EX = 0x68,
|
|
BLK_NL_HITO_L_WJ = 0x69,
|
|
BLK_NL_HITO_B_L_WJ = 0x6A,
|
|
BLK_NL_HITO_C_L_WJ = 0x6B,
|
|
BLK_N_KO_L_EX = 0x6C,
|
|
BLK_NL_KO_L_WJ = 0x6D,
|
|
BLK_NL_KO_B_L_WJ = 0x6E,
|
|
BLK_NL_KO_C_L_WJ = 0x6F,
|
|
BLK_N_KUSU_L_EX = 0x70,
|
|
BLK_NL_KUSU_L_WJ = 0x71,
|
|
BLK_NL_KUSU_B_L_WJ = 0x72,
|
|
BLK_NL_KUSU_C_L_WJ = 0x73,
|
|
BLK_N_NAKA_L_EX = 0x74,
|
|
BLK_NL_NAKA_L_WJ = 0x75,
|
|
BLK_NL_NAKA_B_L_WJ = 0x76,
|
|
BLK_NL_NAKA_C_L_WJ = 0x77,
|
|
BLK_N_OYA_L_EX = 0x78,
|
|
BLK_NL_OYA_L_WJ = 0x79,
|
|
BLK_NL_OYA_B_L_WJ = 0x7A,
|
|
BLK_NL_OYA_C_L_WJ = 0x7B,
|
|
BLK_N_STE_L_WJ_EX = 0x7C,
|
|
BLK_N_SUDE_L_WJ_EX = 0x7D,
|
|
BLK_N_SUDE_B_L_WJ_EX = 0x7E,
|
|
BLK_N_HIJI_L_WJ_EX = 0x7F,
|
|
BLK_N_UP_KATA_L_EX = 0x80,
|
|
BLK_N_SKATA_L_WJ_CD_EX = 0x81,
|
|
BLK_N_SKATA_B_L_WJ_CD_CU_EX = 0x82,
|
|
BLK_N_SKATA_C_L_WJ_CD_CU_EX = 0x83,
|
|
BLK_N_WAKI_R = 0x84,
|
|
BLK_KL_WAKI_R_WJ = 0x85,
|
|
BLK_TL_UP_KATA_R = 0x86,
|
|
BLK_C_KATA_R = 0x87,
|
|
BLK_KL_TE_R_WJ = 0x88,
|
|
BLK_N_HITO_R_EX = 0x89,
|
|
BLK_NL_HITO_R_WJ = 0x8A,
|
|
BLK_NL_HITO_B_R_WJ = 0x8B,
|
|
BLK_NL_HITO_C_R_WJ = 0x8C,
|
|
BLK_N_KO_R_EX = 0x8D,
|
|
BLK_NL_KO_R_WJ = 0x8E,
|
|
BLK_NL_KO_B_R_WJ = 0x8F,
|
|
BLK_NL_KO_C_R_WJ = 0x90,
|
|
BLK_N_KUSU_R_EX = 0x91,
|
|
BLK_NL_KUSU_R_WJ = 0x92,
|
|
BLK_NL_KUSU_B_R_WJ = 0x93,
|
|
BLK_NL_KUSU_C_R_WJ = 0x94,
|
|
BLK_N_NAKA_R_EX = 0x95,
|
|
BLK_NL_NAKA_R_WJ = 0x96,
|
|
BLK_NL_NAKA_B_R_WJ = 0x97,
|
|
BLK_NL_NAKA_C_R_WJ = 0x98,
|
|
BLK_N_OYA_R_EX = 0x99,
|
|
BLK_NL_OYA_R_WJ = 0x9A,
|
|
BLK_NL_OYA_B_R_WJ = 0x9B,
|
|
BLK_NL_OYA_C_R_WJ = 0x9C,
|
|
BLK_N_STE_R_WJ_EX = 0x9D,
|
|
BLK_N_SUDE_R_WJ_EX = 0x9E,
|
|
BLK_N_SUDE_B_R_WJ_EX = 0x9F,
|
|
BLK_N_HIJI_R_WJ_EX = 0xA0,
|
|
BLK_N_UP_KATA_R_EX = 0xA1,
|
|
BLK_N_SKATA_R_WJ_CD_EX = 0xA2,
|
|
BLK_N_SKATA_B_R_WJ_CD_CU_EX = 0xA3,
|
|
BLK_N_SKATA_C_R_WJ_CD_CU_EX = 0xA4,
|
|
BLK_KL_KOSI_Y = 0xA5,
|
|
BLK_KL_KOSI_XZ = 0xA6,
|
|
BLK_KL_KOSI_ETC_WJ = 0xA7,
|
|
BLK_CL_MOMO_L = 0xA8,
|
|
BLK_KL_ASI_L_WJ_CO = 0xA9,
|
|
BLK_KL_TOE_L_WJ = 0xAA,
|
|
BLK_N_HIZA_L_WJ_EX = 0xAB,
|
|
BLK_CL_MOMO_R = 0xAC,
|
|
BLK_KL_ASI_R_WJ_CO = 0xAD,
|
|
BLK_KL_TOE_R_WJ = 0xAE,
|
|
BLK_N_HIZA_R_WJ_EX = 0xAF,
|
|
BLK_N_MOMO_A_L_WJ_CD_EX = 0xB0,
|
|
BLK_N_MOMO_B_L_WJ_EX = 0xB1,
|
|
BLK_N_MOMO_C_L_WJ_EX = 0xB2,
|
|
BLK_N_MOMO_A_R_WJ_CD_EX = 0xB3,
|
|
BLK_N_MOMO_B_R_WJ_EX = 0xB4,
|
|
BLK_N_MOMO_C_R_WJ_EX = 0xB5,
|
|
BLK_N_HARA_CD_EX = 0xB6,
|
|
BLK_N_HARA_B_WJ_EX = 0xB7,
|
|
BLK_N_HARA_C_WJ_EX = 0xB8,
|
|
BLK_MAX = 0xB9,
|
|
};
|
|
|
|
enum BONE_ID {
|
|
BONE_ID_DUMMY = -1,
|
|
|
|
BONE_ID_N_HARA_CP = 0x00,
|
|
BONE_ID_KG_HARA_Y = 0x01,
|
|
BONE_ID_KL_HARA_XZ = 0x02,
|
|
BONE_ID_KL_HARA_ETC = 0x03,
|
|
BONE_ID_N_HARA = 0x04,
|
|
BONE_ID_CL_MUNE = 0x05,
|
|
BONE_ID_N_MUNE_B = 0x06,
|
|
BONE_ID_KL_MUNE_B_WJ = 0x07,
|
|
BONE_ID_KL_KUBI = 0x08,
|
|
BONE_ID_N_KAO = 0x09,
|
|
BONE_ID_CL_KAO = 0x0A,
|
|
BONE_ID_FACE_ROOT = 0x0B,
|
|
BONE_ID_N_AGO = 0x0C,
|
|
BONE_ID_KL_AGO_WJ = 0x0D,
|
|
BONE_ID_N_TOOTH_UNDER = 0x0E,
|
|
BONE_ID_TL_TOOTH_UNDER_WJ = 0x0F,
|
|
BONE_ID_N_EYE_L = 0x10,
|
|
BONE_ID_KL_EYE_L = 0x11,
|
|
BONE_ID_N_EYE_L_WJ_EX = 0x12,
|
|
BONE_ID_KL_HIGHLIGHT_L_WJ = 0x13,
|
|
BONE_ID_N_EYE_R = 0x14,
|
|
BONE_ID_KL_EYE_R = 0x15,
|
|
BONE_ID_N_EYE_R_WJ_EX = 0x16,
|
|
BONE_ID_KL_HIGHLIGHT_R_WJ = 0x17,
|
|
BONE_ID_N_EYELID_L_A = 0x18,
|
|
BONE_ID_TL_EYELID_L_A_WJ = 0x19,
|
|
BONE_ID_N_EYELID_L_B = 0x1A,
|
|
BONE_ID_TL_EYELID_L_B_WJ = 0x1B,
|
|
BONE_ID_N_EYELID_R_A = 0x1C,
|
|
BONE_ID_TL_EYELID_R_A_WJ = 0x1D,
|
|
BONE_ID_N_EYELID_R_B = 0x1E,
|
|
BONE_ID_TL_EYELID_R_B_WJ = 0x1F,
|
|
BONE_ID_N_KUTI_D = 0x20,
|
|
BONE_ID_TL_KUTI_D_WJ = 0x21,
|
|
BONE_ID_N_KUTI_D_L = 0x22,
|
|
BONE_ID_TL_KUTI_D_L_WJ = 0x23,
|
|
BONE_ID_N_KUTI_D_R = 0x24,
|
|
BONE_ID_TL_KUTI_D_R_WJ = 0x25,
|
|
BONE_ID_N_KUTI_DS_L = 0x26,
|
|
BONE_ID_TL_KUTI_DS_L_WJ = 0x27,
|
|
BONE_ID_N_KUTI_DS_R = 0x28,
|
|
BONE_ID_TL_KUTI_DS_R_WJ = 0x29,
|
|
BONE_ID_N_KUTI_L = 0x2A,
|
|
BONE_ID_TL_KUTI_L_WJ = 0x2B,
|
|
BONE_ID_N_KUTI_M_L = 0x2C,
|
|
BONE_ID_TL_KUTI_M_L_WJ = 0x2D,
|
|
BONE_ID_N_KUTI_M_R = 0x2E,
|
|
BONE_ID_TL_KUTI_M_R_WJ = 0x2F,
|
|
BONE_ID_N_KUTI_R = 0x30,
|
|
BONE_ID_TL_KUTI_R_WJ = 0x31,
|
|
BONE_ID_N_KUTI_U = 0x32,
|
|
BONE_ID_TL_KUTI_U_WJ = 0x33,
|
|
BONE_ID_N_KUTI_U_L = 0x34,
|
|
BONE_ID_TL_KUTI_U_L_WJ = 0x35,
|
|
BONE_ID_N_KUTI_U_R = 0x36,
|
|
BONE_ID_TL_KUTI_U_R_WJ = 0x37,
|
|
BONE_ID_N_MABU_L_D_A = 0x38,
|
|
BONE_ID_TL_MABU_L_D_A_WJ = 0x39,
|
|
BONE_ID_N_MABU_L_D_B = 0x3A,
|
|
BONE_ID_TL_MABU_L_D_B_WJ = 0x3B,
|
|
BONE_ID_N_MABU_L_D_C = 0x3C,
|
|
BONE_ID_TL_MABU_L_D_C_WJ = 0x3D,
|
|
BONE_ID_N_MABU_L_U_A = 0x3E,
|
|
BONE_ID_TL_MABU_L_U_A_WJ = 0x3F,
|
|
BONE_ID_N_MABU_L_U_B = 0x40,
|
|
BONE_ID_TL_MABU_L_U_B_WJ = 0x41,
|
|
BONE_ID_N_EYELASHES_L = 0x42,
|
|
BONE_ID_TL_EYELASHES_L_WJ = 0x43,
|
|
BONE_ID_N_MABU_L_U_C = 0x44,
|
|
BONE_ID_TL_MABU_L_U_C_WJ = 0x45,
|
|
BONE_ID_N_MABU_R_D_A = 0x46,
|
|
BONE_ID_TL_MABU_R_D_A_WJ = 0x47,
|
|
BONE_ID_N_MABU_R_D_B = 0x48,
|
|
BONE_ID_TL_MABU_R_D_B_WJ = 0x49,
|
|
BONE_ID_N_MABU_R_D_C = 0x4A,
|
|
BONE_ID_TL_MABU_R_D_C_WJ = 0x4B,
|
|
BONE_ID_N_MABU_R_U_A = 0x4C,
|
|
BONE_ID_TL_MABU_R_U_A_WJ = 0x4D,
|
|
BONE_ID_N_MABU_R_U_B = 0x4E,
|
|
BONE_ID_TL_MABU_R_U_B_WJ = 0x4F,
|
|
BONE_ID_N_EYELASHES_R = 0x50,
|
|
BONE_ID_TL_EYELASHES_R_WJ = 0x51,
|
|
BONE_ID_N_MABU_R_U_C = 0x52,
|
|
BONE_ID_TL_MABU_R_U_C_WJ = 0x53,
|
|
BONE_ID_N_MAYU_L = 0x54,
|
|
BONE_ID_TL_MAYU_L_WJ = 0x55,
|
|
BONE_ID_N_MAYU_L_B = 0x56,
|
|
BONE_ID_TL_MAYU_L_B_WJ = 0x57,
|
|
BONE_ID_N_MAYU_L_C = 0x58,
|
|
BONE_ID_TL_MAYU_L_C_WJ = 0x59,
|
|
BONE_ID_N_MAYU_R = 0x5A,
|
|
BONE_ID_TL_MAYU_R_WJ = 0x5B,
|
|
BONE_ID_N_MAYU_R_B = 0x5C,
|
|
BONE_ID_TL_MAYU_R_B_WJ = 0x5D,
|
|
BONE_ID_N_MAYU_R_C = 0x5E,
|
|
BONE_ID_TL_MAYU_R_C_WJ = 0x5F,
|
|
BONE_ID_N_TOOTH_UPPER = 0x60,
|
|
BONE_ID_TL_TOOTH_UPPER_WJ = 0x61,
|
|
BONE_ID_N_KUBI_WJ_EX = 0x62,
|
|
BONE_ID_N_WAKI_L = 0x63,
|
|
BONE_ID_KL_WAKI_L_WJ = 0x64,
|
|
BONE_ID_TL_UP_KATA_L = 0x65,
|
|
BONE_ID_C_KATA_L = 0x66,
|
|
BONE_ID_KATA_L_WJ_CU = 0x67,
|
|
BONE_ID_UDE_L_WJ = 0x68,
|
|
BONE_ID_KL_TE_L_WJ = 0x69,
|
|
BONE_ID_N_HITO_L_EX = 0x6A,
|
|
BONE_ID_NL_HITO_L_WJ = 0x6B,
|
|
BONE_ID_NL_HITO_B_L_WJ = 0x6C,
|
|
BONE_ID_NL_HITO_C_L_WJ = 0x6D,
|
|
BONE_ID_N_KO_L_EX = 0x6E,
|
|
BONE_ID_NL_KO_L_WJ = 0x6F,
|
|
BONE_ID_NL_KO_B_L_WJ = 0x70,
|
|
BONE_ID_NL_KO_C_L_WJ = 0x71,
|
|
BONE_ID_N_KUSU_L_EX = 0x72,
|
|
BONE_ID_NL_KUSU_L_WJ = 0x73,
|
|
BONE_ID_NL_KUSU_B_L_WJ = 0x74,
|
|
BONE_ID_NL_KUSU_C_L_WJ = 0x75,
|
|
BONE_ID_N_NAKA_L_EX = 0x76,
|
|
BONE_ID_NL_NAKA_L_WJ = 0x77,
|
|
BONE_ID_NL_NAKA_B_L_WJ = 0x78,
|
|
BONE_ID_NL_NAKA_C_L_WJ = 0x79,
|
|
BONE_ID_N_OYA_L_EX = 0x7A,
|
|
BONE_ID_NL_OYA_L_WJ = 0x7B,
|
|
BONE_ID_NL_OYA_B_L_WJ = 0x7C,
|
|
BONE_ID_NL_OYA_C_L_WJ = 0x7D,
|
|
BONE_ID_N_STE_L_WJ_EX = 0x7E,
|
|
BONE_ID_N_SUDE_L_WJ_EX = 0x7F,
|
|
BONE_ID_N_SUDE_B_L_WJ_EX = 0x80,
|
|
BONE_ID_N_HIJI_L_WJ_EX = 0x81,
|
|
BONE_ID_N_UP_KATA_L_EX = 0x82,
|
|
BONE_ID_N_SKATA_L_WJ_CD_EX = 0x83,
|
|
BONE_ID_N_SKATA_B_L_WJ_CD_CU_EX = 0x84,
|
|
BONE_ID_N_SKATA_C_L_WJ_CD_CU_EX = 0x85,
|
|
BONE_ID_N_WAKI_R = 0x86,
|
|
BONE_ID_KL_WAKI_R_WJ = 0x87,
|
|
BONE_ID_TL_UP_KATA_R = 0x88,
|
|
BONE_ID_C_KATA_R = 0x89,
|
|
BONE_ID_KATA_R_WJ_CU = 0x8A,
|
|
BONE_ID_UDE_R_WJ = 0x8B,
|
|
BONE_ID_KL_TE_R_WJ = 0x8C,
|
|
BONE_ID_N_HITO_R_EX = 0x8D,
|
|
BONE_ID_NL_HITO_R_WJ = 0x8E,
|
|
BONE_ID_NL_HITO_B_R_WJ = 0x8F,
|
|
BONE_ID_NL_HITO_C_R_WJ = 0x90,
|
|
BONE_ID_N_KO_R_EX = 0x91,
|
|
BONE_ID_NL_KO_R_WJ = 0x92,
|
|
BONE_ID_NL_KO_B_R_WJ = 0x93,
|
|
BONE_ID_NL_KO_C_R_WJ = 0x94,
|
|
BONE_ID_N_KUSU_R_EX = 0x95,
|
|
BONE_ID_NL_KUSU_R_WJ = 0x96,
|
|
BONE_ID_NL_KUSU_B_R_WJ = 0x97,
|
|
BONE_ID_NL_KUSU_C_R_WJ = 0x98,
|
|
BONE_ID_N_NAKA_R_EX = 0x99,
|
|
BONE_ID_NL_NAKA_R_WJ = 0x9A,
|
|
BONE_ID_NL_NAKA_B_R_WJ = 0x9B,
|
|
BONE_ID_NL_NAKA_C_R_WJ = 0x9C,
|
|
BONE_ID_N_OYA_R_EX = 0x9D,
|
|
BONE_ID_NL_OYA_R_WJ = 0x9E,
|
|
BONE_ID_NL_OYA_B_R_WJ = 0x9F,
|
|
BONE_ID_NL_OYA_C_R_WJ = 0xA0,
|
|
BONE_ID_N_STE_R_WJ_EX = 0xA1,
|
|
BONE_ID_N_SUDE_R_WJ_EX = 0xA2,
|
|
BONE_ID_N_SUDE_B_R_WJ_EX = 0xA3,
|
|
BONE_ID_N_HIJI_R_WJ_EX = 0xA4,
|
|
BONE_ID_N_UP_KATA_R_EX = 0xA5,
|
|
BONE_ID_N_SKATA_R_WJ_CD_EX = 0xA6,
|
|
BONE_ID_N_SKATA_B_R_WJ_CD_CU_EX = 0xA7,
|
|
BONE_ID_N_SKATA_C_R_WJ_CD_CU_EX = 0xA8,
|
|
BONE_ID_KL_KOSI_Y = 0xA9,
|
|
BONE_ID_KL_KOSI_XZ = 0xAA,
|
|
BONE_ID_KL_KOSI_ETC_WJ = 0xAB,
|
|
BONE_ID_CL_MOMO_L = 0xAC,
|
|
BONE_ID_J_MOMO_L_WJ = 0xAD,
|
|
BONE_ID_J_SUNE_L_WJ = 0xAE,
|
|
BONE_ID_KL_ASI_L_WJ_CO = 0xAF,
|
|
BONE_ID_KL_TOE_L_WJ = 0xB0,
|
|
BONE_ID_N_HIZA_L_WJ_EX = 0xB1,
|
|
BONE_ID_CL_MOMO_R = 0xB2,
|
|
BONE_ID_J_MOMO_R_WJ = 0xB3,
|
|
BONE_ID_J_SUNE_R_WJ = 0xB4,
|
|
BONE_ID_KL_ASI_R_WJ_CO = 0xB5,
|
|
BONE_ID_KL_TOE_R_WJ = 0xB6,
|
|
BONE_ID_N_HIZA_R_WJ_EX = 0xB7,
|
|
BONE_ID_N_MOMO_A_L_WJ_CD_EX = 0xB8,
|
|
BONE_ID_N_MOMO_B_L_WJ_EX = 0xB9,
|
|
BONE_ID_N_MOMO_C_L_WJ_EX = 0xBA,
|
|
BONE_ID_N_MOMO_A_R_WJ_CD_EX = 0xBB,
|
|
BONE_ID_N_MOMO_B_R_WJ_EX = 0xBC,
|
|
BONE_ID_N_MOMO_C_R_WJ_EX = 0xBD,
|
|
BONE_ID_N_HARA_CD_EX = 0xBE,
|
|
BONE_ID_N_HARA_B_WJ_EX = 0xBF,
|
|
BONE_ID_N_HARA_C_WJ_EX = 0xC0,
|
|
BONE_ID_MAX = 0xC1,
|
|
};
|
|
|
|
enum BONE_NODE {
|
|
BONE_NODE_N_HARA_CP = 0x00,
|
|
BONE_NODE_KG_HARA_Y = 0x01,
|
|
BONE_NODE_KL_HARA_XZ = 0x02,
|
|
BONE_NODE_KL_HARA_ETC = 0x03,
|
|
BONE_NODE_N_HARA = 0x04,
|
|
BONE_NODE_CL_MUNE = 0x05,
|
|
BONE_NODE_J_MUNE_WJ = 0x06,
|
|
BONE_NODE_E_MUNE_CP = 0x07,
|
|
BONE_NODE_N_MUNE_B = 0x08,
|
|
BONE_NODE_KL_MUNE_B_WJ = 0x09,
|
|
BONE_NODE_KL_KUBI = 0x0A,
|
|
BONE_NODE_N_KAO = 0x0B,
|
|
BONE_NODE_CL_KAO = 0x0C,
|
|
BONE_NODE_J_KAO_WJ = 0x0D,
|
|
BONE_NODE_E_KAO_CP = 0x0E,
|
|
BONE_NODE_FACE_ROOT = 0x0F,
|
|
BONE_NODE_N_AGO = 0x10,
|
|
BONE_NODE_KL_AGO_WJ = 0x11,
|
|
BONE_NODE_N_TOOTH_UNDER = 0x12,
|
|
BONE_NODE_TL_TOOTH_UNDER_WJ = 0x13,
|
|
BONE_NODE_N_EYE_L = 0x14,
|
|
BONE_NODE_KL_EYE_L = 0x15,
|
|
BONE_NODE_N_EYE_L_WJ_EX = 0x16,
|
|
BONE_NODE_KL_HIGHLIGHT_L_WJ = 0x17,
|
|
BONE_NODE_N_EYE_R = 0x18,
|
|
BONE_NODE_KL_EYE_R = 0x19,
|
|
BONE_NODE_N_EYE_R_WJ_EX = 0x1A,
|
|
BONE_NODE_KL_HIGHLIGHT_R_WJ = 0x1B,
|
|
BONE_NODE_N_EYELID_L_A = 0x1C,
|
|
BONE_NODE_TL_EYELID_L_A_WJ = 0x1D,
|
|
BONE_NODE_N_EYELID_L_B = 0x1E,
|
|
BONE_NODE_TL_EYELID_L_B_WJ = 0x1F,
|
|
BONE_NODE_N_EYELID_R_A = 0x20,
|
|
BONE_NODE_TL_EYELID_R_A_WJ = 0x21,
|
|
BONE_NODE_N_EYELID_R_B = 0x22,
|
|
BONE_NODE_TL_EYELID_R_B_WJ = 0x23,
|
|
BONE_NODE_N_KUTI_D = 0x24,
|
|
BONE_NODE_TL_KUTI_D_WJ = 0x25,
|
|
BONE_NODE_N_KUTI_D_L = 0x26,
|
|
BONE_NODE_TL_KUTI_D_L_WJ = 0x27,
|
|
BONE_NODE_N_KUTI_D_R = 0x28,
|
|
BONE_NODE_TL_KUTI_D_R_WJ = 0x29,
|
|
BONE_NODE_N_KUTI_DS_L = 0x2A,
|
|
BONE_NODE_TL_KUTI_DS_L_WJ = 0x2B,
|
|
BONE_NODE_N_KUTI_DS_R = 0x2C,
|
|
BONE_NODE_TL_KUTI_DS_R_WJ = 0x2D,
|
|
BONE_NODE_N_KUTI_L = 0x2E,
|
|
BONE_NODE_TL_KUTI_L_WJ = 0x2F,
|
|
BONE_NODE_N_KUTI_M_L = 0x30,
|
|
BONE_NODE_TL_KUTI_M_L_WJ = 0x31,
|
|
BONE_NODE_N_KUTI_M_R = 0x32,
|
|
BONE_NODE_TL_KUTI_M_R_WJ = 0x33,
|
|
BONE_NODE_N_KUTI_R = 0x34,
|
|
BONE_NODE_TL_KUTI_R_WJ = 0x35,
|
|
BONE_NODE_N_KUTI_U = 0x36,
|
|
BONE_NODE_TL_KUTI_U_WJ = 0x37,
|
|
BONE_NODE_N_KUTI_U_L = 0x38,
|
|
BONE_NODE_TL_KUTI_U_L_WJ = 0x39,
|
|
BONE_NODE_N_KUTI_U_R = 0x3A,
|
|
BONE_NODE_TL_KUTI_U_R_WJ = 0x3B,
|
|
BONE_NODE_N_MABU_L_D_A = 0x3C,
|
|
BONE_NODE_TL_MABU_L_D_A_WJ = 0x3D,
|
|
BONE_NODE_N_MABU_L_D_B = 0x3E,
|
|
BONE_NODE_TL_MABU_L_D_B_WJ = 0x3F,
|
|
BONE_NODE_N_MABU_L_D_C = 0x40,
|
|
BONE_NODE_TL_MABU_L_D_C_WJ = 0x41,
|
|
BONE_NODE_N_MABU_L_U_A = 0x42,
|
|
BONE_NODE_TL_MABU_L_U_A_WJ = 0x43,
|
|
BONE_NODE_N_MABU_L_U_B = 0x44,
|
|
BONE_NODE_TL_MABU_L_U_B_WJ = 0x45,
|
|
BONE_NODE_N_EYELASHES_L = 0x46,
|
|
BONE_NODE_TL_EYELASHES_L_WJ = 0x47,
|
|
BONE_NODE_N_MABU_L_U_C = 0x48,
|
|
BONE_NODE_TL_MABU_L_U_C_WJ = 0x49,
|
|
BONE_NODE_N_MABU_R_D_A = 0x4A,
|
|
BONE_NODE_TL_MABU_R_D_A_WJ = 0x4B,
|
|
BONE_NODE_N_MABU_R_D_B = 0x4C,
|
|
BONE_NODE_TL_MABU_R_D_B_WJ = 0x4D,
|
|
BONE_NODE_N_MABU_R_D_C = 0x4E,
|
|
BONE_NODE_TL_MABU_R_D_C_WJ = 0x4F,
|
|
BONE_NODE_N_MABU_R_U_A = 0x50,
|
|
BONE_NODE_TL_MABU_R_U_A_WJ = 0x51,
|
|
BONE_NODE_N_MABU_R_U_B = 0x52,
|
|
BONE_NODE_TL_MABU_R_U_B_WJ = 0x53,
|
|
BONE_NODE_N_EYELASHES_R = 0x54,
|
|
BONE_NODE_TL_EYELASHES_R_WJ = 0x55,
|
|
BONE_NODE_N_MABU_R_U_C = 0x56,
|
|
BONE_NODE_TL_MABU_R_U_C_WJ = 0x57,
|
|
BONE_NODE_N_MAYU_L = 0x58,
|
|
BONE_NODE_TL_MAYU_L_WJ = 0x59,
|
|
BONE_NODE_N_MAYU_L_B = 0x5A,
|
|
BONE_NODE_TL_MAYU_L_B_WJ = 0x5B,
|
|
BONE_NODE_N_MAYU_L_C = 0x5C,
|
|
BONE_NODE_TL_MAYU_L_C_WJ = 0x5D,
|
|
BONE_NODE_N_MAYU_R = 0x5E,
|
|
BONE_NODE_TL_MAYU_R_WJ = 0x5F,
|
|
BONE_NODE_N_MAYU_R_B = 0x60,
|
|
BONE_NODE_TL_MAYU_R_B_WJ = 0x61,
|
|
BONE_NODE_N_MAYU_R_C = 0x62,
|
|
BONE_NODE_TL_MAYU_R_C_WJ = 0x63,
|
|
BONE_NODE_N_TOOTH_UPPER = 0x64,
|
|
BONE_NODE_TL_TOOTH_UPPER_WJ = 0x65,
|
|
BONE_NODE_N_KUBI_WJ_EX = 0x66,
|
|
BONE_NODE_N_WAKI_L = 0x67,
|
|
BONE_NODE_KL_WAKI_L_WJ = 0x68,
|
|
BONE_NODE_TL_UP_KATA_L = 0x69,
|
|
BONE_NODE_C_KATA_L = 0x6A,
|
|
BONE_NODE_J_KATA_L_WJ_CU = 0x6B,
|
|
BONE_NODE_J_UDE_L_WJ = 0x6C,
|
|
BONE_NODE_E_UDE_L_CP = 0x6D,
|
|
BONE_NODE_KL_TE_L_WJ = 0x6E,
|
|
BONE_NODE_N_HITO_L_EX = 0x6F,
|
|
BONE_NODE_NL_HITO_L_WJ = 0x70,
|
|
BONE_NODE_NL_HITO_B_L_WJ = 0x71,
|
|
BONE_NODE_NL_HITO_C_L_WJ = 0x72,
|
|
BONE_NODE_N_KO_L_EX = 0x73,
|
|
BONE_NODE_NL_KO_L_WJ = 0x74,
|
|
BONE_NODE_NL_KO_B_L_WJ = 0x75,
|
|
BONE_NODE_NL_KO_C_L_WJ = 0x76,
|
|
BONE_NODE_N_KUSU_L_EX = 0x77,
|
|
BONE_NODE_NL_KUSU_L_WJ = 0x78,
|
|
BONE_NODE_NL_KUSU_B_L_WJ = 0x79,
|
|
BONE_NODE_NL_KUSU_C_L_WJ = 0x7A,
|
|
BONE_NODE_N_NAKA_L_EX = 0x7B,
|
|
BONE_NODE_NL_NAKA_L_WJ = 0x7C,
|
|
BONE_NODE_NL_NAKA_B_L_WJ = 0x7D,
|
|
BONE_NODE_NL_NAKA_C_L_WJ = 0x7E,
|
|
BONE_NODE_N_OYA_L_EX = 0x7F,
|
|
BONE_NODE_NL_OYA_L_WJ = 0x80,
|
|
BONE_NODE_NL_OYA_B_L_WJ = 0x81,
|
|
BONE_NODE_NL_OYA_C_L_WJ = 0x82,
|
|
BONE_NODE_N_STE_L_WJ_EX = 0x83,
|
|
BONE_NODE_N_SUDE_L_WJ_EX = 0x84,
|
|
BONE_NODE_N_SUDE_B_L_WJ_EX = 0x85,
|
|
BONE_NODE_N_HIJI_L_WJ_EX = 0x86,
|
|
BONE_NODE_N_UP_KATA_L_EX = 0x87,
|
|
BONE_NODE_N_SKATA_L_WJ_CD_EX = 0x88,
|
|
BONE_NODE_N_SKATA_B_L_WJ_CD_CU_EX = 0x89,
|
|
BONE_NODE_N_SKATA_C_L_WJ_CD_CU_EX = 0x8A,
|
|
BONE_NODE_N_WAKI_R = 0x8B,
|
|
BONE_NODE_KL_WAKI_R_WJ = 0x8C,
|
|
BONE_NODE_TL_UP_KATA_R = 0x8D,
|
|
BONE_NODE_C_KATA_R = 0x8E,
|
|
BONE_NODE_J_KATA_R_WJ_CU = 0x8F,
|
|
BONE_NODE_J_UDE_R_WJ = 0x90,
|
|
BONE_NODE_E_UDE_R_CP = 0x91,
|
|
BONE_NODE_KL_TE_R_WJ = 0x92,
|
|
BONE_NODE_N_HITO_R_EX = 0x93,
|
|
BONE_NODE_NL_HITO_R_WJ = 0x94,
|
|
BONE_NODE_NL_HITO_B_R_WJ = 0x95,
|
|
BONE_NODE_NL_HITO_C_R_WJ = 0x96,
|
|
BONE_NODE_N_KO_R_EX = 0x97,
|
|
BONE_NODE_NL_KO_R_WJ = 0x98,
|
|
BONE_NODE_NL_KO_B_R_WJ = 0x99,
|
|
BONE_NODE_NL_KO_C_R_WJ = 0x9A,
|
|
BONE_NODE_N_KUSU_R_EX = 0x9B,
|
|
BONE_NODE_NL_KUSU_R_WJ = 0x9C,
|
|
BONE_NODE_NL_KUSU_B_R_WJ = 0x9D,
|
|
BONE_NODE_NL_KUSU_C_R_WJ = 0x9E,
|
|
BONE_NODE_N_NAKA_R_EX = 0x9F,
|
|
BONE_NODE_NL_NAKA_R_WJ = 0xA0,
|
|
BONE_NODE_NL_NAKA_B_R_WJ = 0xA1,
|
|
BONE_NODE_NL_NAKA_C_R_WJ = 0xA2,
|
|
BONE_NODE_N_OYA_R_EX = 0xA3,
|
|
BONE_NODE_NL_OYA_R_WJ = 0xA4,
|
|
BONE_NODE_NL_OYA_B_R_WJ = 0xA5,
|
|
BONE_NODE_NL_OYA_C_R_WJ = 0xA6,
|
|
BONE_NODE_N_STE_R_WJ_EX = 0xA7,
|
|
BONE_NODE_N_SUDE_R_WJ_EX = 0xA8,
|
|
BONE_NODE_N_SUDE_B_R_WJ_EX = 0xA9,
|
|
BONE_NODE_N_HIJI_R_WJ_EX = 0xAA,
|
|
BONE_NODE_N_UP_KATA_R_EX = 0xAB,
|
|
BONE_NODE_N_SKATA_R_WJ_CD_EX = 0xAC,
|
|
BONE_NODE_N_SKATA_B_R_WJ_CD_CU_EX = 0xAD,
|
|
BONE_NODE_N_SKATA_C_R_WJ_CD_CU_EX = 0xAE,
|
|
BONE_NODE_KL_KOSI_Y = 0xAF,
|
|
BONE_NODE_KL_KOSI_XZ = 0xB0,
|
|
BONE_NODE_KL_KOSI_ETC_WJ = 0xB1,
|
|
BONE_NODE_CL_MOMO_L = 0xB2,
|
|
BONE_NODE_J_MOMO_L_WJ = 0xB3,
|
|
BONE_NODE_J_SUNE_L_WJ = 0xB4,
|
|
BONE_NODE_E_SUNE_L_CP = 0xB5,
|
|
BONE_NODE_KL_ASI_L_WJ_CO = 0xB6,
|
|
BONE_NODE_KL_TOE_L_WJ = 0xB7,
|
|
BONE_NODE_N_HIZA_L_WJ_EX = 0xB8,
|
|
BONE_NODE_CL_MOMO_R = 0xB9,
|
|
BONE_NODE_J_MOMO_R_WJ = 0xBA,
|
|
BONE_NODE_J_SUNE_R_WJ = 0xBB,
|
|
BONE_NODE_E_SUNE_R_CP = 0xBC,
|
|
BONE_NODE_KL_ASI_R_WJ_CO = 0xBD,
|
|
BONE_NODE_KL_TOE_R_WJ = 0xBE,
|
|
BONE_NODE_N_HIZA_R_WJ_EX = 0xBF,
|
|
BONE_NODE_N_MOMO_A_L_WJ_CD_EX = 0xC0,
|
|
BONE_NODE_N_MOMO_B_L_WJ_EX = 0xC1,
|
|
BONE_NODE_N_MOMO_C_L_WJ_EX = 0xC2,
|
|
BONE_NODE_N_MOMO_A_R_WJ_CD_EX = 0xC3,
|
|
BONE_NODE_N_MOMO_B_R_WJ_EX = 0xC4,
|
|
BONE_NODE_N_MOMO_C_R_WJ_EX = 0xC5,
|
|
BONE_NODE_N_HARA_CD_EX = 0xC6,
|
|
BONE_NODE_N_HARA_B_WJ_EX = 0xC7,
|
|
BONE_NODE_N_HARA_C_WJ_EX = 0xC8,
|
|
BONE_NODE_MAX = 0xC9,
|
|
};
|
|
|
|
enum CCmdYkType {
|
|
CCMD_YK_TYPE_NON = 0,
|
|
CCMD_YK_TYPE_R,
|
|
CCMD_YK_TYPE_L,
|
|
};
|
|
|
|
enum Expr_type {
|
|
Expr_constant = 0,
|
|
Expr_variable,
|
|
Expr_variable_rad,
|
|
Expr_func1,
|
|
Expr_func2,
|
|
Expr_func3,
|
|
};
|
|
|
|
enum eyes_base_adjust_type {
|
|
EYES_BASE_ADJUST_NONE = -1,
|
|
|
|
EYES_BASE_ADJUST_DIRECTION = 0x00,
|
|
EYES_BASE_ADJUST_CLEARANCE = 0x01,
|
|
EYES_BASE_ADJUST_OFF = 0x02,
|
|
EYES_BASE_ADJUST_MAX = 0x03,
|
|
};
|
|
|
|
enum FcurveKeyKind {
|
|
FCURVE_KEY_KIND_STATIC_0 = 0,
|
|
FCURVE_KEY_KIND_STATIC_DATA,
|
|
FCURVE_KEY_KIND_HERMITE,
|
|
FCURVE_KEY_KIND_HERMITE_TANGENT,
|
|
FCURVE_KEY_KIND_MAX,
|
|
};
|
|
|
|
enum GuardKind {
|
|
GUARD_KIND_NONE = 0,
|
|
GUARD_KIND_TACHI,
|
|
GUARD_KIND_SYAGAMI,
|
|
GUARD_KIND_ALL,
|
|
};
|
|
|
|
enum HyoutanStat {
|
|
HYOUTAN_STAT_NORMAL = 0,
|
|
HYOUTAN_STAT_RIGHT_HAND,
|
|
HYOUTAN_STAT_LEFT_HAND,
|
|
HYOUTAN_STAT_MAX,
|
|
};
|
|
|
|
enum MhAirKind {
|
|
AK_CENTER_MOVE = 0,
|
|
AK_KIND_MAX,
|
|
};
|
|
|
|
enum MhAtkKind {
|
|
ATK_DOWN_ATTACK_OK = 0,
|
|
ATK_HIT_OK,
|
|
ATK_GUARD,
|
|
ATK_REVISE,
|
|
ATK_YOROKENAI,
|
|
ATK_YOKE_HIT,
|
|
ATK_LR_YARARE,
|
|
ATK_KIND_MAX,
|
|
};
|
|
|
|
enum MhEfcFlag {
|
|
ETF_RIGHT = 0,
|
|
ETF_LEFT,
|
|
ETF_DOWN,
|
|
ETF_TA_DOWN,
|
|
ETF_COUNTER_DOWN,
|
|
ETF_YOROKE_DOWN,
|
|
ETF_NO_DOWN,
|
|
ETF_NO_GUARD,
|
|
ETF_GUARD_HALF,
|
|
ETF_GUARD_HAZUSHI_LOW,
|
|
ETF_GUARD_HAZUSHI_HIGH,
|
|
ETF_FOLLOW_HIT_YOROKE,
|
|
ETF_GUARD_YOROKE_HIGH,
|
|
ETF_GUARD_YOROKE_LOW,
|
|
ETF_YOROKE_HIGH,
|
|
ETF_YOROKE_LOW,
|
|
ETF_WALL_BREAK,
|
|
ETF_COUNTER_YOROKE,
|
|
ETF_YOROKE_NO_DOWN,
|
|
ETF_URA_DOWN,
|
|
ETF_COUNTER_URA_DOWN,
|
|
ETF_FOLLOW_HIT_URA_DOWN,
|
|
ETF_URA_NO_DOWN,
|
|
ETF_FOLLOW_HIT_DOWN,
|
|
ETF_S_COUNTER_DOWN,
|
|
ETF_S_COUNTER_YOROKE,
|
|
ETF_M_COUNTER_DOWN,
|
|
ETF_M_COUNTER_YOROKE,
|
|
ETF_L_COUNTER_DOWN,
|
|
ETF_L_COUNTER_YOROKE,
|
|
ETF_YARARE_REV,
|
|
ETF_YOKE_GUARD,
|
|
ETF_SIDE_DOWN,
|
|
ETF_COUNTER_SIDE_DOWN,
|
|
ETF_FOLLOW_SIDE_DOWN,
|
|
ETF_STRAIGHT,
|
|
ETF_REVERSE,
|
|
ETF_WALL_FIX,
|
|
ETF_NOT_WALL_FIX,
|
|
ETF_SIDE_YOROKE,
|
|
ETF_URA_YOROKE,
|
|
ETF_SIDE_YOROKE_LOW,
|
|
ETF_URA_YOROKE_LOW,
|
|
ETF_ITAI_DOWN,
|
|
ETF_NO_UKEMI,
|
|
ETF_STUN,
|
|
ETF_COUNTER_STUN,
|
|
ETF_FOLLOW_HIT_STUN,
|
|
ETF_URA_STUN,
|
|
ETF_COUNTER_URA_STUN,
|
|
ETF_FOLLOW_HIT_URA_STUN,
|
|
ETF_SIDE_STUN,
|
|
ETF_COUNTER_SIDE_STUN,
|
|
ETF_FOLLOW_HIT_SIDE_STUN,
|
|
ETF_STUN_DOWN,
|
|
ETF_FOLLOW_HIT_SY_YA,
|
|
ETF_NO_CMBXANG_OFFSET,
|
|
ETF_BD_COUNTER_DOWN,
|
|
ETF_BD_COUNTER_YOROKE,
|
|
ETF_NO_COUNTER_DAMAGE,
|
|
ETF_NO_HIT_AIR,
|
|
ETF_FLAG_MAX,
|
|
};
|
|
|
|
enum MhEfcSpeedType {
|
|
EST_NORMAL = 0,
|
|
EST_EXTRA,
|
|
EST_UP_PUNCH,
|
|
EST_UP_PUNCH2,
|
|
EST_DOWN_ATTACK,
|
|
EST_NERICHAGI,
|
|
EST_FUTTOBI,
|
|
EST_LOW_ATTACK,
|
|
EST_HAMMER,
|
|
EST_JUMP_PUNCH,
|
|
EST_CHAIN_PULL,
|
|
EST_SPIN,
|
|
EST_RENKAN,
|
|
EST_NORMAL2,
|
|
EST_MAX,
|
|
};
|
|
|
|
enum MhEnDrinkOffType {
|
|
MH_EDRK_ATK_ALWAYS = 0,
|
|
MH_EDRK_ATK_HIT,
|
|
MH_EDRK_ATK_GUARD,
|
|
MH_EDRK_DRINK_OFF_MAX,
|
|
};
|
|
|
|
enum MhGuardFlag {
|
|
GK_BUTTON = 0,
|
|
GK_NONE_DC,
|
|
GK_NONE_DC_SELECT,
|
|
GK_NONE_DC_ALL,
|
|
GK_NONE_DC_TA,
|
|
GK_NONE_DC_SY,
|
|
GK_DC,
|
|
GK_DC_SELECT,
|
|
GK_DC_ALL,
|
|
GK_DC_TA,
|
|
GK_DC_SY,
|
|
GK_COMA_A,
|
|
GK_SIDE,
|
|
GK_FLAG_MAX,
|
|
};
|
|
|
|
enum MhGuardType {
|
|
GK_TYPE_ALL = 0,
|
|
GK_TYPE_TA,
|
|
GK_TYPE_SY,
|
|
GK_TYPE_SEL,
|
|
GK_TYPE_MAX,
|
|
};
|
|
|
|
enum MhKabeDmgType {
|
|
MH_KBD_NORMAL = 0,
|
|
MH_KBD_YARARE,
|
|
MH_KBD_YOROKE,
|
|
MH_KBD_MAX,
|
|
};
|
|
|
|
enum MhKaeshiAttrib {
|
|
KT_ATTRIB_NONE = 0x0,
|
|
KT_ATTRIB_TA_PUNCH,
|
|
KT_ATTRIB_SY_PUNCH,
|
|
KT_ATTRIB_HIJI,
|
|
KT_ATTRIB_HIZA,
|
|
};
|
|
|
|
enum MhKaeshiFlag {
|
|
KT_PUNCH_KAESHI = 0,
|
|
KT_LOW_PUNCH_KAESHI,
|
|
KT_KICK_KAESHI,
|
|
KT_MID_KICK_KAESHI,
|
|
KT_LOW_KICK_KAESHI,
|
|
KT_HIJI_KAESHI,
|
|
KT_HIZA_KAESHI,
|
|
KT_SPIN_K_KAESHI,
|
|
KT_LOW_SPIN_K_KAESHI,
|
|
KT_SUMMER_KAESHI,
|
|
KT_DOWN_PUNCH_KAESHI,
|
|
KT_DOWN_KICK_KAESHI,
|
|
KT_RYOUTE_KAESHI,
|
|
KT_KATA_KAESHI,
|
|
KT_TETSUZAN_KAESHI,
|
|
KT_HEAD_KAESHI,
|
|
KT_TE_TORI,
|
|
KT_LOW_PUNCH_TORI,
|
|
KT_ASI_TORI,
|
|
KT_MID_ASI_TORI,
|
|
KT_LOW_ASI_TORI,
|
|
KT_HIJI_TORI,
|
|
KT_HIZA_TORI,
|
|
KT_RYOUASI_TORI,
|
|
KT_HIGH,
|
|
KT_MIDDLE,
|
|
KT_LOW,
|
|
KT_BEHIND,
|
|
KT_TACHI_NAGE,
|
|
KT_SY_GUARD,
|
|
KT_GUARD_SHIFT,
|
|
KT_LEFT,
|
|
KT_FULL_KAESHI,
|
|
KT_DOWN_DISABLE,
|
|
KT_RESIST_DISABLE,
|
|
KT_DISABLE,
|
|
KT_TYPE_MAX,
|
|
};
|
|
|
|
enum MhMotKind {
|
|
MK_CHANGE = 0,
|
|
MK_BEGIN,
|
|
MK_FOLLOW,
|
|
MK_NO_TRANS,
|
|
MK_NO_MOVE,
|
|
MK_RUN,
|
|
MK_AIR,
|
|
MK_JUMP,
|
|
MK_TURN,
|
|
MK_YARARE,
|
|
MK_DOWN,
|
|
MK_DOWN_POSE,
|
|
MK_KAMAE,
|
|
MK_SYAGAMI,
|
|
MK_ATTACK,
|
|
MK_GUARD,
|
|
MK_UKEMI,
|
|
MK_RISE,
|
|
MK_GACHA,
|
|
MK_NAGE,
|
|
MK_NAGERARE,
|
|
MK_DTURN,
|
|
MK_BACK,
|
|
MK_YOROKE,
|
|
MK_RIDE_ON,
|
|
MK_YOKE,
|
|
MK_AGURA,
|
|
MK_SAKADACHI,
|
|
MK_FALL,
|
|
MK_TSUKAMI,
|
|
MK_TSUKAMARE,
|
|
MK_MUTEKI,
|
|
MK_HAJIKI_HIGH,
|
|
MK_HAJIKI_LOW,
|
|
MK_NERI,
|
|
MK_OIDASANAI,
|
|
MK_CHARGE_WHILE,
|
|
MK_NO_DEAD,
|
|
MK_KAESERU,
|
|
MK_DOWN_HIT_ENABLE,
|
|
MK_AIR_DOWN,
|
|
MK_TUNNELS,
|
|
MK_TUNNEL0,
|
|
MK_NAGERARERU,
|
|
MK_POSE_CANCEL_OK,
|
|
MK_NO_FREEZE,
|
|
MK_GUARD_NAGERENAI_DC,
|
|
MK_NAGE_CHECK_NORMAL,
|
|
MK_NAGE_CHECK_KUZURE,
|
|
MK_SABAKI,
|
|
MK_GACHA_DISP,
|
|
MK_KABE_HIT_NG,
|
|
MK_WALL_CHECK_RINGOUT,
|
|
MK_FALL_RINGOUT_OK,
|
|
MK_NO_RINGOUT,
|
|
MK_RINGOUT_CHAIN,
|
|
MK_NAGE_WALL_BREAK,
|
|
MK_RECALC_OIDASHI_VEC,
|
|
MK_BACK_SPEED_OFF,
|
|
MK_CUT_WALL_SPEED_OFF,
|
|
MK_YOKE_R,
|
|
MK_YOKE_L,
|
|
MK_YOKERENAI,
|
|
MK_DOWN_ATTACK_OK,
|
|
MK_WALK,
|
|
MK_SYAGAMI_WALK,
|
|
MK_DASH,
|
|
MK_SYAGAMI_DASH,
|
|
MK_DOWN_NAGE,
|
|
MK_MOVE_FRONT,
|
|
MK_MOVE_BACK,
|
|
MK_SABAKI_MOTION,
|
|
MK_COMBO_NAGE,
|
|
MK_COMBO_NAGERARE,
|
|
MK_CHARGE_OFF,
|
|
MK_CHARGE,
|
|
MK_ATEMIKAMAE,
|
|
MK_ATEMIWAZA,
|
|
MK_NAGENUKE_OK,
|
|
MK_NAGENUKE,
|
|
MK_SYAGAMI_NAGE,
|
|
MK_NAGE_TSUKAMI,
|
|
MK_YOKE_ATTACK,
|
|
MK_JYOUDAN_KAWASHI,
|
|
MK_TOKUJYOU_KAWASHI,
|
|
MK_NAGE_FOLLOW_NAGERERU,
|
|
MK_RESIST,
|
|
MK_ATTACK_FOLLOW,
|
|
MK_ATTACK_BEGIN,
|
|
MK_FORCE_COUNTER_STRONG,
|
|
MK_FORCE_COUNTER_NORMAL,
|
|
MK_Y_MOVE,
|
|
MK_Y_TRANS,
|
|
MK_DMIRROR,
|
|
MK_URA_SAKA,
|
|
MK_SPD0,
|
|
MK_FUMI,
|
|
MK_KAO_MUKE,
|
|
MK_KAO_MUKENAI,
|
|
MK_KAO_MUKERUNA,
|
|
MK_WALL_THRUST_EMY,
|
|
MK_NEXT_TRANS,
|
|
MK_NEXT_Y_TRANS,
|
|
MK_BOUND_DOWN,
|
|
MK_HEAVY_BOUND_DOWN,
|
|
MK_NO_BOUND_DOWN,
|
|
MK_REVERSE_ATK,
|
|
MK_PL_SYAGAMI,
|
|
MK_NOT_PL_SYAGAMI,
|
|
MK_LOW_KAWASHI,
|
|
MK_REVERSE_HIT_OK,
|
|
MK_WALL_REDUCE_DAMAGE,
|
|
MK_WALL_DOWN2,
|
|
MK_REVERSE_ATK_FRONT,
|
|
MK_DOWN_LIKE,
|
|
MK_REDUCE_DAMAGE,
|
|
MK_IMM_YOKERARE_DISABLE,
|
|
MK_OFF_MOVE_L,
|
|
MK_OFF_MOVE_R,
|
|
MK_NO_CMBXANG_OFFSET,
|
|
MK_COLLI_WALL_DISABLE,
|
|
MK_NO_AIR,
|
|
MK_ITAI,
|
|
MK_ASI_LEAF_CTRL,
|
|
MK_CATCH_SABAKI_DISABLE,
|
|
MK_STUN,
|
|
MK_ATTACK_BEGIN2,
|
|
MK_KIND_MAX,
|
|
};
|
|
|
|
enum MhNextType {
|
|
MH_NEXT_NONE = -1,
|
|
|
|
MH_NEXT_MOTION = 0,
|
|
MH_NEXT_REPEAT,
|
|
MH_NEXT_KAMAE,
|
|
MH_NEXT_MAKE,
|
|
MH_NEXT_NAGE,
|
|
MH_NEXT_DOWN_POSE,
|
|
MH_NEXT_LOCK,
|
|
MH_NEXT_MAX,
|
|
};
|
|
|
|
enum MhResistDownChkType {
|
|
RESIST_NO_CHK_DOWN = 0,
|
|
RESIST_CHK_DOWN,
|
|
};
|
|
|
|
enum MhReviseFlag {
|
|
MH_REVISE_NO = 0,
|
|
MH_REVISE_FORCE,
|
|
MH_REVISE_RISE_START,
|
|
MH_REVISE_MOT_SLOW,
|
|
MH_REVISE_DASH,
|
|
MH_REVISE_EMY_NO,
|
|
MH_REVISE_GUARD_EMY_NO,
|
|
MH_REVISE_ATK_FOLLOW_EMY_NO,
|
|
MH_REVISE_NORM_EMY_NO,
|
|
MH_REVISE_WALK_EMY_NO,
|
|
MH_REVISE_UPDATE_EMY_ATK,
|
|
MH_REVISE_FORCE_SLOW2,
|
|
MH_REVISE_FORCE_FAST2,
|
|
MH_REVISE_GUARD_SLOW,
|
|
MH_REVISE_GUARD_EMY_ON,
|
|
MH_REVISE_DOWN_ATK,
|
|
MH_REVISE_FORCE_SLOW,
|
|
MH_REVISE_MAX,
|
|
};
|
|
|
|
enum MhSmoothFlag {
|
|
SMF_SAME_FSMOOTH_OFF = 0,
|
|
SMF_NORMAL_RSMOOTH,
|
|
SMF_FLAG_MAX,
|
|
};
|
|
|
|
enum MhYarareType {
|
|
E_PUNCH = 0,
|
|
E_KICK,
|
|
E_STR,
|
|
E_MAWASHI,
|
|
E_MID_PUNCH,
|
|
E_MID_STR,
|
|
E_MID_MAWASHI,
|
|
E_SY_PUNCH,
|
|
E_SY_KICK,
|
|
E_SY_STR,
|
|
E_SY_MAWASHI,
|
|
E_YOKO,
|
|
E_YOKO2,
|
|
E_TACKLE,
|
|
E_KUZURE1_COUNTER,
|
|
E_KUZURE1,
|
|
E_KUZURE2_COUNTER,
|
|
E_KUZURE2,
|
|
E_URATEN,
|
|
E_UP_PUNCH,
|
|
E_DOWN_ATTACK,
|
|
E_DOWN_ATTACK2,
|
|
E_DOWN_ATTACK3,
|
|
E_JUMP_PUNCH,
|
|
E_SYAGAMASE,
|
|
E_MOUKO,
|
|
E_MOUKO2,
|
|
E_TRN_PUNCH,
|
|
E_BETA,
|
|
E_NIKIKYAKU,
|
|
E_HAZUSHI,
|
|
E_MID_SLEEPER,
|
|
E_MDLK,
|
|
E_DASH_HAMMER,
|
|
E_BETA_TATAKI,
|
|
E_KASANE,
|
|
E_LOWATK,
|
|
E_HEAVY_KICK,
|
|
E_KICK3,
|
|
E_PUNCH3,
|
|
E_SYAGAMASE2,
|
|
E_WOL_BODY,
|
|
E_KETAGURI,
|
|
E_HOZAN,
|
|
E_METUKI,
|
|
E_HEAVY,
|
|
E_UP_PUNCH_EV,
|
|
E_MDLK_EV,
|
|
E_MDLK_EV2,
|
|
E_HIZADOWN,
|
|
E_DASH_HAMMER_EV,
|
|
E_UP_PUNCH_EV2,
|
|
E_KUZURE2_HEAVY,
|
|
E_SIDE_ATTACK,
|
|
E_HEAVY_KICK_FS,
|
|
E_NIKIKYAKU_FAST,
|
|
E_NIKIKYAKU_FAST2,
|
|
E_HEAVY_BOUND,
|
|
E_JUMP_PUNCH_BOUND,
|
|
E_BETA_TATAKI_BOUND,
|
|
E_KUZURE2_UPPER,
|
|
E_HEAVY_BOUND2,
|
|
E_UP_PUNCH_URATEN,
|
|
E_UP_PUNCH_EV3,
|
|
E_UP_PUNCH2,
|
|
E_MOUKO2_KUZURE,
|
|
E_MID_STR_KUZURE,
|
|
E_MID_PUNCH_KUZURE,
|
|
E_PUNCH3_KUZURE,
|
|
E_MDLK_KUZURE,
|
|
E_MDLK_EV_KUZURE,
|
|
E_KUZURE1_KUZURE,
|
|
E_WOL_BODY_KUZURE,
|
|
E_KICK3_KUZURE,
|
|
E_GOROGORO,
|
|
E_UEFUTTOBI,
|
|
E_ITAI,
|
|
E_KUZURE2_LR,
|
|
E_HVYGD_UP_PUNCH,
|
|
E_SY_STR_BECHA,
|
|
E_MOUKO_SHORT,
|
|
E_MAKE_90DEG,
|
|
E_MOUKO_FUTTOBI,
|
|
E_MOUKO_FUTTOBI_KUZURE,
|
|
E_MOUKO_FUTTOBI2,
|
|
E_UP_PUNCH_UPPER,
|
|
E_UP_PUNCH_YORODOWN,
|
|
E_SY_MAWASHI_MAKE_90DEG,
|
|
E_LIGHT_BOUND,
|
|
E_MOUKO_KUZURE,
|
|
E_BETA_LONG,
|
|
E_HEAVY_KICK_EV,
|
|
E_HIZADOWN_AIR,
|
|
E_SYAGAMASE_BECHA,
|
|
E_MDLK_EV_KUZURE2,
|
|
E_MAWASHI_ROT_S,
|
|
E_MAWASHI_ROT_L,
|
|
E_JKD,
|
|
E_MDLK_HARD,
|
|
E_BECHA_BOUND,
|
|
E_LEG_HARD,
|
|
E_FS_TEST_1,
|
|
E_HIJI,
|
|
E_PUSH,
|
|
E_FUMARE,
|
|
E_HEAVY_FUMARE,
|
|
E_ASHIBARAI,
|
|
E_FS_TEST_7,
|
|
E_MAX,
|
|
};
|
|
|
|
enum MOT_BSTEP {
|
|
BSTEP_BEGIN = 0,
|
|
BSTEP_MAIN,
|
|
BSTEP_FOLLOW1,
|
|
BSTEP_FOLLOW2,
|
|
BSTEP_MAX,
|
|
};
|
|
|
|
enum MotAdjustType {
|
|
MA_TYPE_NONE = 0,
|
|
MA_TYPE_COMMON,
|
|
MA_TYPE_SCALE,
|
|
MA_TYPE_BODY,
|
|
MA_TYPE_ARM,
|
|
MA_TYPE_HEIGHT,
|
|
MA_TYPE_EMY_SCALE,
|
|
MA_TYPE_EMY_BODY,
|
|
MA_TYPE_EMY_ARM,
|
|
MA_TYPE_EMY_HEIGHT,
|
|
MA_TYPE_DIRECT,
|
|
};
|
|
|
|
enum MotLeafCtrlCharaFlag {
|
|
LC_CHARA_NONE = -1,
|
|
|
|
LC_CHARA_OK = 0,
|
|
LC_CHARA_NG,
|
|
LC_CHARA_MAX,
|
|
};
|
|
|
|
enum MotLeafCtrlLimit {
|
|
LCLIMIT_XYZ = 0,
|
|
LCLIMIT_X,
|
|
LCLIMIT_Y,
|
|
LCLIMIT_Z,
|
|
LCLIMIT_XY,
|
|
LCLIMIT_XZ,
|
|
LCLIMIT_YZ,
|
|
LCLIMIT_MAX,
|
|
};
|
|
|
|
enum MotLeafCtrlMode {
|
|
LEAF_CTRL_NONE = -1,
|
|
|
|
LEAF_CTRL_ON = 0,
|
|
LEAF_CTRL_OFF,
|
|
LEAF_CTRL_MAX,
|
|
};
|
|
|
|
enum MotLeafCtrlPart {
|
|
LCPART_TE_R = 0,
|
|
LCPART_TE_L,
|
|
LCPART_ASI_R,
|
|
LCPART_ASI_L,
|
|
LCPART_MAX,
|
|
};
|
|
|
|
enum MotLeafCtrlTagId {
|
|
LCTAG_ABS = 0,
|
|
LCTAG_TE_R,
|
|
LCTAG_TE_L,
|
|
LCTAG_ASI_R,
|
|
LCTAG_ASI_L,
|
|
LCTAG_SUNE_R,
|
|
LCTAG_SUNE_L,
|
|
LCTAG_UDE_R,
|
|
LCTAG_UDE_L,
|
|
LCTAG_KAO,
|
|
LCTAG_ADJ_EMY,
|
|
LCTAG_ADJ_EMY_BODY,
|
|
LCTAG_ADJ_EMY_HEIGHT,
|
|
LCTAG_ADJ_REV,
|
|
LCTAG_ADJ_BODY_REV,
|
|
LCTAG_ADJ_HEIGHT_REV,
|
|
LCTAG_OFS,
|
|
LCTAG_OFS_TE_R,
|
|
LCTAG_OFS_TE_L,
|
|
LCTAG_OFS_ASI_R,
|
|
LCTAG_OFS_ASI_L,
|
|
LCTAG_OFS_SUNE_R,
|
|
LCTAG_OFS_SUNE_L,
|
|
LCTAG_OFS_UDE_R,
|
|
LCTAG_OFS_UDE_L,
|
|
LCTAG_OFS_KAO,
|
|
LCTAG_OFS_BODY,
|
|
LCTAG_MAX,
|
|
};
|
|
|
|
enum mot_play_frame_data_loop_state : uint32_t {
|
|
MOT_PLAY_FRAME_DATA_LOOP_NONE = (uint32_t)-1,
|
|
MOT_PLAY_FRAME_DATA_LOOP_ONCE = 0x00,
|
|
MOT_PLAY_FRAME_DATA_LOOP_CONTINUOUS = 0x01,
|
|
MOT_PLAY_FRAME_DATA_LOOP_RESET = 0x02,
|
|
MOT_PLAY_FRAME_DATA_LOOP_REVERSE = 0x03,
|
|
MOT_PLAY_FRAME_DATA_LOOP_MAX = 0x04,
|
|
};
|
|
|
|
enum mot_play_frame_data_playback_state : uint32_t {
|
|
MOT_PLAY_FRAME_DATA_PLAYBACK_NONE = (uint32_t)-1,
|
|
MOT_PLAY_FRAME_DATA_PLAYBACK_STOP = 0x00,
|
|
MOT_PLAY_FRAME_DATA_PLAYBACK_FORWARD = 0x01,
|
|
MOT_PLAY_FRAME_DATA_PLAYBACK_BACKWARD = 0x02,
|
|
MOT_PLAY_FRAME_DATA_PLAYBACK_EXTERNAL = 0x03,
|
|
MOT_PLAY_FRAME_DATA_PLAYBACK_MAX = 0x04,
|
|
};
|
|
|
|
enum MhdNumber {
|
|
MHD_NUM_0 = 0,
|
|
MHD_NUM_1,
|
|
MHD_NUM_2,
|
|
MHD_NUM_3,
|
|
MHD_NUM_4,
|
|
MHD_NUM_5,
|
|
MHD_NUM_6,
|
|
MHD_NUM_7,
|
|
MHD_NUM_8,
|
|
MHD_NUM_9,
|
|
MHD_NUM_10,
|
|
MHD_NUM_11,
|
|
MHD_NUM_12,
|
|
MHD_NUM_13,
|
|
MHD_NUM_14,
|
|
MHD_NUM_15,
|
|
MHD_NUM_16,
|
|
MHD_NUM_17,
|
|
MHD_NUM_18,
|
|
MHD_NUM_19,
|
|
MHD_NUM_20,
|
|
MHD_NUM_21,
|
|
MHD_NUM_22,
|
|
MHD_NUM_23,
|
|
MHD_NUM_24,
|
|
MHD_NUM_25,
|
|
MHD_NUM_26,
|
|
MHD_NUM_27,
|
|
MHD_NUM_28,
|
|
MHD_NUM_29,
|
|
MHD_NUM_30,
|
|
MHD_NUM_31,
|
|
MHD_NUM_32,
|
|
MHD_NUM_33,
|
|
MHD_NUM_34,
|
|
MHD_NUM_35,
|
|
MHD_NUM_36,
|
|
MHD_NUM_37,
|
|
MHD_NUM_38,
|
|
MHD_NUM_39,
|
|
MHD_NUM_40,
|
|
MHD_SHIFT,
|
|
MHD_NUM_42,
|
|
MHD_NUM_43,
|
|
MHD_NUM_44,
|
|
MHD_NUM_45,
|
|
MHD_NUM_46,
|
|
MHD_NUM_47,
|
|
MHD_NUM_48,
|
|
MHD_NUM_49,
|
|
MHD_NUM_50,
|
|
MHD_NUM_51,
|
|
MHD_NUM_52,
|
|
MHD_NUM_53,
|
|
MHD_NUM_54,
|
|
MHD_NUM_55,
|
|
MHD_NUM_56,
|
|
MHD_NUM_57,
|
|
MHD_NUM_58,
|
|
MHD_NUM_59,
|
|
MHD_NUM_60,
|
|
MHD_NUM_61,
|
|
MHD_NUM_62,
|
|
MHD_NUM_63,
|
|
MHD_NUM_64,
|
|
MHD_NUM_65,
|
|
MHD_NUM_66,
|
|
MHD_NUM_67,
|
|
MHD_NUM_68,
|
|
MHD_MAX,
|
|
};
|
|
|
|
enum MhpNumber {
|
|
MHP_NUM_0 = 0,
|
|
MHP_NUM_1,
|
|
MHP_NUM_2,
|
|
MHP_NUM_3,
|
|
MHP_NUM_4,
|
|
MHP_NUM_5,
|
|
MHP_NUM_6,
|
|
MHP_NUM_7,
|
|
MHP_NUM_8,
|
|
MHP_NUM_9,
|
|
MHP_NUM_10,
|
|
MHP_NUM_11,
|
|
MHP_NUM_12,
|
|
MHP_NUM_13,
|
|
MHP_NUM_14,
|
|
MHP_NUM_15,
|
|
MHP_NUM_16,
|
|
MHP_NUM_17,
|
|
MHP_NUM_18,
|
|
MHP_NUM_19,
|
|
MHP_NUM_20,
|
|
MHP_NUM_21,
|
|
MHP_NUM_22,
|
|
MHP_NUM_23,
|
|
MHP_NUM_24,
|
|
MHP_NUM_25,
|
|
MHP_NUM_26,
|
|
MHP_NUM_27,
|
|
MHP_NUM_28,
|
|
MHP_NUM_29,
|
|
MHP_NUM_30,
|
|
MHP_NUM_31,
|
|
MHP_NUM_32,
|
|
MHP_NUM_33,
|
|
MHP_NUM_34,
|
|
MHP_NUM_35,
|
|
MHP_NUM_36,
|
|
MHP_NUM_37,
|
|
MHP_NUM_38,
|
|
MHP_NUM_39,
|
|
MHP_NUM_40,
|
|
MHP_NUM_41,
|
|
MHP_NUM_42,
|
|
MHP_NUM_43,
|
|
MHP_NUM_44,
|
|
MHP_NUM_45,
|
|
MHP_NUM_46,
|
|
MHP_NUM_47,
|
|
MHP_NUM_48,
|
|
MHP_NUM_49,
|
|
MHP_SET_FACE_MOTION_ID,
|
|
MHP_NUM_51,
|
|
MHP_NUM_52,
|
|
MHP_SET_FACE_MOTTBL_MOTION,
|
|
MHP_SET_HAND_R_MOTTBL_MOTION,
|
|
MHP_SET_HAND_L_MOTTBL_MOTION,
|
|
MHP_SET_MOUTH_MOTTBL_MOTION,
|
|
MHP_SET_EYES_MOTTBL_MOTION,
|
|
MHP_SET_EYELID_MOTTBL_MOTION,
|
|
MHP_SET_ROB_CHARA_HEAD_OBJECT,
|
|
MHP_SET_LOOK_CAMERA,
|
|
MHP_SET_EYELID_MOTION_FROM_FACE,
|
|
MHP_ROB_PARTS_ADJUST,
|
|
MHP_NUM_63,
|
|
MHP_OSAGE_RESET,
|
|
MHP_MOTION_SKIN_PARAM,
|
|
MHP_OSAGE_STEP,
|
|
MHP_SLEEVE_ADJUST,
|
|
MHP_NUM_68,
|
|
MHP_MOTION_MAX_FRAME,
|
|
MHP_CAMERA_MAX_FRAME,
|
|
MHP_OSAGE_MOVE_CANCEL,
|
|
MHP_NUM_72,
|
|
MHP_ROB_HAND_ADJUST,
|
|
MHP_DISABLE_COLLISION,
|
|
MHP_ROB_ADJUST_GLOBAL,
|
|
MHP_ROB_ARM_ADJUST,
|
|
MHP_DISABLE_EYE_MOTION,
|
|
MHP_NUM_78,
|
|
MHP_ROB_CHARA_COLI_RING,
|
|
MHP_ADJUST_GET_GLOBAL_POS,
|
|
MHP_MAX,
|
|
};
|
|
|
|
enum MotionBlendType {
|
|
MOTION_BLEND_NONE = -1,
|
|
|
|
MOTION_BLEND = 0x00,
|
|
MOTION_BLEND_FREEZE = 0x01,
|
|
MOTION_BLEND_CROSS = 0x02,
|
|
MOTION_BLEND_COMBINE = 0x03,
|
|
};
|
|
|
|
// Pure assumption
|
|
enum MOTTABLE_TYPE {
|
|
MTP_NONE = 0,
|
|
MTP_1,
|
|
MTP_2,
|
|
MTP_3,
|
|
MTP_4,
|
|
MTP_5,
|
|
MTP_FACE_NULL,
|
|
MTP_FACE_RESET,
|
|
MTP_FACE_RESET_CL,
|
|
MTP_FACE_RESET_OLD,
|
|
MTP_FACE_RESET_OLD_CL,
|
|
MTP_FACE_SAD,
|
|
MTP_FACE_SAD_CL,
|
|
MTP_FACE_SAD_OLD,
|
|
MTP_FACE_SAD_OLD_CL,
|
|
MTP_FACE_LAUGH,
|
|
MTP_FACE_LAUGH_CL,
|
|
MTP_FACE_LAUGH_OLD,
|
|
MTP_FACE_LAUGH_OLD_CL,
|
|
MTP_FACE_SURPRISE,
|
|
MTP_FACE_SURPRISE_CL,
|
|
MTP_FACE_SURPRISE_OLD,
|
|
MTP_FACE_SURPRISE_OLD_CL,
|
|
MTP_FACE_WINK_OLD,
|
|
MTP_FACE_WINK_OLD_CL,
|
|
MTP_FACE_ADMIRATION,
|
|
MTP_FACE_ADMIRATION_CL,
|
|
MTP_FACE_ADMIRATION_OLD,
|
|
MTP_FACE_ADMIRATION_OLD_CL,
|
|
MTP_FACE_SMILE,
|
|
MTP_FACE_SMILE_CL,
|
|
MTP_FACE_SMILE_OLD,
|
|
MTP_FACE_SMILE_OLD_CL,
|
|
MTP_FACE_SETTLED,
|
|
MTP_FACE_SETTLED_CL,
|
|
MTP_FACE_SETTLED_OLD,
|
|
MTP_FACE_SETTLED_OLD_CL,
|
|
MTP_FACE_DAZZLING,
|
|
MTP_FACE_DAZZLING_CL,
|
|
MTP_FACE_DAZZLING_OLD,
|
|
MTP_FACE_DAZZLING_OLD_CL,
|
|
MTP_FACE_LASCIVIOUS,
|
|
MTP_FACE_LASCIVIOUS_CL,
|
|
MTP_FACE_LASCIVIOUS_OLD,
|
|
MTP_FACE_LASCIVIOUS_OLD_CL,
|
|
MTP_FACE_STRONG,
|
|
MTP_FACE_STRONG_CL,
|
|
MTP_FACE_STRONG_OLD,
|
|
MTP_FACE_STRONG_OLD_CL,
|
|
MTP_FACE_CLARIFYING,
|
|
MTP_FACE_CLARIFYING_CL,
|
|
MTP_FACE_CLARIFYING_OLD,
|
|
MTP_FACE_CLARIFYING_OLD_CL,
|
|
MTP_FACE_GENTLE,
|
|
MTP_FACE_GENTLE_CL,
|
|
MTP_FACE_GENTLE_OLD,
|
|
MTP_FACE_GENTLE_OLD_CL,
|
|
MTP_FACE_CRY,
|
|
MTP_FACE_CRY_CL,
|
|
MTP_FACE_CRY_OLD,
|
|
MTP_FACE_CRY_OLD_CL,
|
|
MTP_FACE_CLOSE,
|
|
MTP_FACE_CLOSE_CL,
|
|
MTP_FACE_CLOSE_OLD,
|
|
MTP_FACE_CLOSE_OLD_CL,
|
|
MTP_FACE_NAGASI,
|
|
MTP_FACE_NAGASI_CL,
|
|
MTP_FACE_NAGASI_OLD,
|
|
MTP_FACE_NAGASI_OLD_CL,
|
|
MTP_FACE_KIRI,
|
|
MTP_FACE_KIRI_CL,
|
|
MTP_FACE_KIRI_OLD,
|
|
MTP_FACE_KIRI_OLD_CL,
|
|
MTP_FACE_UTURO,
|
|
MTP_FACE_UTURO_CL,
|
|
MTP_FACE_UTURO_OLD,
|
|
MTP_FACE_UTURO_OLD_CL,
|
|
MTP_FACE_OMOU,
|
|
MTP_FACE_OMOU_CL,
|
|
MTP_FACE_OMOU_OLD,
|
|
MTP_FACE_OMOU_OLD_CL,
|
|
MTP_FACE_SETUNA,
|
|
MTP_FACE_SETUNA_CL,
|
|
MTP_FACE_SETUNA_OLD,
|
|
MTP_FACE_SETUNA_OLD_CL,
|
|
MTP_FACE_GENKI,
|
|
MTP_FACE_GENKI_CL,
|
|
MTP_FACE_GENKI_OLD,
|
|
MTP_FACE_GENKI_OLD_CL,
|
|
MTP_FACE_YARU,
|
|
MTP_FACE_YARU_CL,
|
|
MTP_FACE_YARU_OLD,
|
|
MTP_FACE_YARU_OLD_CL,
|
|
MTP_FACE_COOL,
|
|
MTP_FACE_COOL_CL,
|
|
MTP_FACE_KOMARIWARAI,
|
|
MTP_FACE_KOMARIWARAI_CL,
|
|
MTP_FACE_KUMON,
|
|
MTP_FACE_KUMON_CL,
|
|
MTP_FACE_KUTSUU,
|
|
MTP_FACE_KUTSUU_CL,
|
|
MTP_FACE_NAKI,
|
|
MTP_FACE_NAKI_CL,
|
|
MTP_FACE_NAYAMI,
|
|
MTP_FACE_NAYAMI_CL,
|
|
MTP_FACE_SUPSERIOUS,
|
|
MTP_FACE_SUPSERIOUS_CL,
|
|
MTP_FACE_TSUYOKIWARAI,
|
|
MTP_FACE_TSUYOKIWARAI_CL,
|
|
MTP_FACE_WINK_L,
|
|
MTP_FACE_WINK_L_CL,
|
|
MTP_FACE_WINK_R,
|
|
MTP_FACE_WINK_R_CL,
|
|
MTP_FACE_WINKG_L,
|
|
MTP_FACE_WINKG_L_CL,
|
|
MTP_FACE_WINKG_R,
|
|
MTP_FACE_WINKG_R_CL,
|
|
MTP_FACE_RESET1,
|
|
MTP_FACE_RESET1_CL,
|
|
MTP_FACE_RESET2,
|
|
MTP_FACE_RESET2_CL,
|
|
MTP_FACE_RESET3,
|
|
MTP_FACE_RESET3_CL,
|
|
MTP_FACE_RESET4,
|
|
MTP_FACE_RESET4_CL,
|
|
MTP_FACE_RESET5,
|
|
MTP_FACE_RESET5_CL,
|
|
MTP_FACE_WINK_FT_OLD,
|
|
MTP_FACE_WINK_FT_OLD_CL,
|
|
MTP_FACE_NEW_IKARI_OLD,
|
|
MTP_FACE_NEW_IKARI_OLD_CL,
|
|
MTP_KUCHI_NULL,
|
|
MTP_KUCHI_RESET,
|
|
MTP_KUCHI_RESET_OLD,
|
|
MTP_KUCHI_A,
|
|
MTP_KUCHI_A_OLD,
|
|
MTP_KUCHI_I,
|
|
MTP_KUCHI_I_OLD,
|
|
MTP_KUCHI_U,
|
|
MTP_KUCHI_U_OLD,
|
|
MTP_KUCHI_E,
|
|
MTP_KUCHI_E_OLD,
|
|
MTP_KUCHI_O,
|
|
MTP_KUCHI_O_OLD,
|
|
MTP_KUCHI_HE,
|
|
MTP_KUCHI_HE_OLD,
|
|
MTP_KUCHI_SURPRISE,
|
|
MTP_KUCHI_SURPRISE_OLD,
|
|
MTP_KUCHI_SMILE,
|
|
MTP_KUCHI_SMILE_OLD,
|
|
MTP_KUCHI_NIYA,
|
|
MTP_KUCHI_NIYA_OLD,
|
|
MTP_KUCHI_CHU,
|
|
MTP_KUCHI_CHU_OLD,
|
|
MTP_KUCHI_E_DOWN,
|
|
MTP_KUCHI_HAMISE,
|
|
MTP_KUCHI_HAMISE_DOWN,
|
|
MTP_KUCHI_HE_S,
|
|
MTP_KUCHI_HERAHERA,
|
|
MTP_KUCHI_MOGUMOGU,
|
|
MTP_KUCHI_NEKO,
|
|
MTP_KUCHI_SAKEBI,
|
|
MTP_KUCHI_SAKEBI_L,
|
|
MTP_KUCHI_SMILE_L,
|
|
MTP_KUCHI_NEUTRAL,
|
|
MTP_EYES_NULL,
|
|
MTP_EYES_RESET,
|
|
MTP_EYES_RESET_OLD,
|
|
MTP_EYES_UP,
|
|
MTP_EYES_UP_OLD,
|
|
MTP_EYES_DOWN,
|
|
MTP_EYES_DOWN_OLD,
|
|
MTP_EYES_LEFT,
|
|
MTP_EYES_LEFT_OLD,
|
|
MTP_EYES_RIGHT,
|
|
MTP_EYES_RIGHT_OLD,
|
|
MTP_EYES_UP_LEFT,
|
|
MTP_EYES_UP_LEFT_OLD,
|
|
MTP_EYES_UP_RIGHT,
|
|
MTP_EYES_UP_RIGHT_OLD,
|
|
MTP_EYES_DOWN_LEFT,
|
|
MTP_EYES_DOWN_LEFT_OLD,
|
|
MTP_EYES_DOWN_RIGHT,
|
|
MTP_EYES_DOWN_RIGHT_OLD,
|
|
MTP_EYES_MOVE_U_D,
|
|
MTP_EYES_MOVE_U_D_OLD,
|
|
MTP_EYES_MOVE_L_R,
|
|
MTP_EYES_MOVE_L_R_OLD,
|
|
MTP_EYES_MOVE_UL_DR,
|
|
MTP_EYES_MOVE_UL_DR_OLD,
|
|
MTP_EYES_MOVE_UR_DL,
|
|
MTP_EYES_MOVE_UR_DL_OLD,
|
|
MTP_HAND_NULL,
|
|
MTP_HAND_RESET,
|
|
MTP_HAND_NORMAL,
|
|
MTP_HAND_OPEN,
|
|
MTP_HAND_CLOSE,
|
|
MTP_HAND_PEACE,
|
|
MTP_HAND_GOOD,
|
|
MTP_HAND_ONE,
|
|
MTP_HAND_THREE,
|
|
MTP_HAND_NEGI,
|
|
MTP_HAND_SIZEN,
|
|
MTP_HAND_PICK,
|
|
MTP_HAND_MIC,
|
|
MTP_HAND_FAN,
|
|
MTP_HAND_BOTTLE,
|
|
MTP_HAND_PHONE,
|
|
MTP_HAND_HOLD,
|
|
MTP_HAND_FLASHLIGHT,
|
|
MTP_HAND_MIC_BLK,
|
|
MTP_HAND_MIC_SLV,
|
|
MTP_HAND_CUPICE,
|
|
MTP_HAND_ICEBAR,
|
|
MTP_FACE_MOT_SLOT_1,
|
|
MTP_FACE_MOT_SLOT_2,
|
|
MTP_FACE_MOT_SLOT_3,
|
|
MTP_FACE_MOT_SLOT_4,
|
|
MTP_FACE_MOT_SLOT_5,
|
|
MTP_FACE_MOT_SLOT_6,
|
|
MTP_FACE_MOT_SLOT_7,
|
|
MTP_FACE_MOT_SLOT_8,
|
|
MTP_FACE_MOT_SLOT_9,
|
|
MTP_FACE_MOT_SLOT_10,
|
|
MTP_EYES_BASE_MOT,
|
|
MTP_225,
|
|
MTP_226,
|
|
MTP_227,
|
|
MTP_228,
|
|
MTP_229,
|
|
MTP_230,
|
|
MTP_231,
|
|
MTP_232,
|
|
MTP_233,
|
|
MTP_234,
|
|
MTP_235,
|
|
MTP_FACE_EYEBROW_UP_RIGHT,
|
|
MTP_FACE_EYEBROW_UP_RIGHT_CL,
|
|
MTP_FACE_EYEBROW_UP_LEFT,
|
|
MTP_FACE_EYEBROW_UP_LEFT_CL,
|
|
MTP_FACE_KOMARIEGAO,
|
|
MTP_FACE_KOMARIEGAO_CL,
|
|
MTP_FACE_KONWAKU,
|
|
MTP_FACE_KONWAKU_CL,
|
|
MTP_KUCHI_PSP_A,
|
|
MTP_KUCHI_PSP_E,
|
|
MTP_KUCHI_PSP_O,
|
|
MTP_KUCHI_PSP_SURPRISE,
|
|
MTP_KUCHI_PSP_NIYA,
|
|
MTP_KUCHI_PSP_NIYARI,
|
|
MTP_KUCHI_HAMISE_E,
|
|
MTP_KUCHI_SANKAKU,
|
|
MTP_KUCHI_SHIKAKU,
|
|
MTP_MAX,
|
|
};
|
|
|
|
enum ReviseType {
|
|
REVISE_NORMAL = 0x0,
|
|
REVISE_FAST,
|
|
REVISE_SLOW,
|
|
REVISE_GUARD,
|
|
REVISE_RISE,
|
|
REVISE_YARARE,
|
|
REVISE_STRISE,
|
|
REVISE_SLOW2,
|
|
REVISE_ATTACK_FOLLOW,
|
|
REVISE_SLOW_GUARD,
|
|
REVISE_GUARD2,
|
|
REVISE_RISE_SLOW,
|
|
REVISE_TYPE_MAX,
|
|
};
|
|
|
|
// Pure assumption
|
|
enum ROB_COLLI_ID {
|
|
ROB_COLLI_ID_DUMMY = -1,
|
|
|
|
ROB_COLLI_ID_KOSHI = 0,
|
|
ROB_COLLI_ID_MUNE_L,
|
|
ROB_COLLI_ID_MUNE_R,
|
|
ROB_COLLI_ID_KUBI,
|
|
ROB_COLLI_ID_KAO,
|
|
ROB_COLLI_ID_KATA_R1,
|
|
ROB_COLLI_ID_KATA_R2,
|
|
ROB_COLLI_ID_UDE_R1,
|
|
ROB_COLLI_ID_UDE_R2,
|
|
ROB_COLLI_ID_TE_R,
|
|
ROB_COLLI_ID_KATA_L1,
|
|
ROB_COLLI_ID_KATA_L2,
|
|
ROB_COLLI_ID_UDE_L1,
|
|
ROB_COLLI_ID_UDE_L2,
|
|
ROB_COLLI_ID_TE_L,
|
|
ROB_COLLI_ID_MOMO_R1,
|
|
ROB_COLLI_ID_MOMO_R2,
|
|
ROB_COLLI_ID_SUNE_R1,
|
|
ROB_COLLI_ID_SUNE_R2,
|
|
ROB_COLLI_ID_ASI_R,
|
|
ROB_COLLI_ID_TOE_R,
|
|
ROB_COLLI_ID_MOMO_L1,
|
|
ROB_COLLI_ID_MOMO_L2,
|
|
ROB_COLLI_ID_SUNE_L1,
|
|
ROB_COLLI_ID_SUNE_L2,
|
|
ROB_COLLI_ID_ASI_L,
|
|
ROB_COLLI_ID_TOE_L,
|
|
ROB_COLLI_ID_MAX,
|
|
};
|
|
|
|
enum ROB_ID {
|
|
ROB_ID_1P = 0,
|
|
ROB_ID_2P,
|
|
ROB_ID_3P,
|
|
ROB_ID_4P,
|
|
ROB_ID_5P,
|
|
ROB_ID_6P,
|
|
ROB_ID_MAX,
|
|
|
|
ROB_ID_NULL = -1,
|
|
};
|
|
|
|
enum rob_chara_data_hand_adjust_type : uint16_t {
|
|
ROB_CHARA_DATA_HAND_ADJUST_NONE = (uint16_t)-1,
|
|
ROB_CHARA_DATA_HAND_ADJUST_NORMAL = 0x00,
|
|
ROB_CHARA_DATA_HAND_ADJUST_SHORT = 0x01,
|
|
ROB_CHARA_DATA_HAND_ADJUST_TALL = 0x02,
|
|
ROB_CHARA_DATA_HAND_ADJUST_MIN = 0x03,
|
|
ROB_CHARA_DATA_HAND_ADJUST_MAX = 0x04,
|
|
ROB_CHARA_DATA_HAND_ADJUST_OPPOSITE_CHARA = 0x05,
|
|
ROB_CHARA_DATA_HAND_ADJUST_CUSTOM = 0x06,
|
|
ROB_CHARA_DATA_HAND_ADJUST_1P = 0x07,
|
|
ROB_CHARA_DATA_HAND_ADJUST_2P = 0x08,
|
|
ROB_CHARA_DATA_HAND_ADJUST_3P = 0x09,
|
|
ROB_CHARA_DATA_HAND_ADJUST_4P = 0x0A,
|
|
ROB_CHARA_DATA_HAND_ADJUST_TYPE_11 = 0x0B, // X
|
|
ROB_CHARA_DATA_HAND_ADJUST_TYPE_12 = 0x0C,
|
|
ROB_CHARA_DATA_HAND_ADJUST_TYPE_13 = 0x0D,
|
|
ROB_CHARA_DATA_HAND_ADJUST_TYPE_14 = 0x0E,
|
|
ROB_CHARA_DATA_HAND_ADJUST_ITEM = 0x0F,
|
|
};
|
|
|
|
enum rob_osage_parts {
|
|
ROB_OSAGE_PARTS_NONE = -1,
|
|
|
|
ROB_OSAGE_PARTS_LEFT = 0x00,
|
|
ROB_OSAGE_PARTS_RIGHT = 0x01,
|
|
ROB_OSAGE_PARTS_CENTER = 0x02,
|
|
ROB_OSAGE_PARTS_LONG_C = 0x03,
|
|
ROB_OSAGE_PARTS_SHORT_L = 0x04,
|
|
ROB_OSAGE_PARTS_SHORT_R = 0x05,
|
|
ROB_OSAGE_PARTS_APPEND_L = 0x06,
|
|
ROB_OSAGE_PARTS_APPEND_R = 0x07,
|
|
ROB_OSAGE_PARTS_MUFFLER = 0x08,
|
|
ROB_OSAGE_PARTS_WHITE_ONE_L = 0x09,
|
|
ROB_OSAGE_PARTS_PONY = 0x0A,
|
|
ROB_OSAGE_PARTS_ANGEL_L = 0x0B,
|
|
ROB_OSAGE_PARTS_ANGEL_R = 0x0C,
|
|
ROB_OSAGE_PARTS_MAX = 0x0D,
|
|
};
|
|
|
|
enum rob_osage_parts_bit {
|
|
ROB_OSAGE_PARTS_LEFT_BIT = 0x0001,
|
|
ROB_OSAGE_PARTS_RIGHT_BIT = 0x0002,
|
|
ROB_OSAGE_PARTS_CENTER_BIT = 0x0004,
|
|
ROB_OSAGE_PARTS_LONG_C_BIT = 0x0008,
|
|
ROB_OSAGE_PARTS_SHORT_L_BIT = 0x0010,
|
|
ROB_OSAGE_PARTS_SHORT_R_BIT = 0x0020,
|
|
ROB_OSAGE_PARTS_APPEND_L_BIT = 0x0040,
|
|
ROB_OSAGE_PARTS_APPEND_R_BIT = 0x0080,
|
|
ROB_OSAGE_PARTS_MUFFLER_BIT = 0x0100,
|
|
ROB_OSAGE_PARTS_WHITE_ONE_L_BIT = 0x0200,
|
|
ROB_OSAGE_PARTS_PONY_BIT = 0x0400,
|
|
ROB_OSAGE_PARTS_ANGEL_L_BIT = 0x0800,
|
|
ROB_OSAGE_PARTS_ANGEL_R_BIT = 0x1000,
|
|
};
|
|
|
|
enum rob_partial_motion_loop_state : uint32_t {
|
|
ROB_PARTIAL_MOTION_LOOP_NONE = (uint32_t)-1,
|
|
ROB_PARTIAL_MOTION_LOOP_ONCE = 0x00,
|
|
ROB_PARTIAL_MOTION_LOOP_CONTINUOUS = 0x01,
|
|
ROB_PARTIAL_MOTION_LOOP_RESET = 0x02,
|
|
ROB_PARTIAL_MOTION_LOOP_REVERSE = 0x03,
|
|
ROB_PARTIAL_MOTION_LOOP_MAX = 0x04,
|
|
};
|
|
|
|
enum rob_partial_motion_playback_state : uint32_t {
|
|
ROB_PARTIAL_MOTION_PLAYBACK_NONE = (uint32_t)-1,
|
|
ROB_PARTIAL_MOTION_PLAYBACK_STOP = 0x00,
|
|
ROB_PARTIAL_MOTION_PLAYBACK_CHARA_MOTION = 0x01,
|
|
ROB_PARTIAL_MOTION_PLAYBACK_FORWARD = 0x02,
|
|
ROB_PARTIAL_MOTION_PLAYBACK_DURATION = 0x03,
|
|
ROB_PARTIAL_MOTION_PLAYBACK_BACKWARD = 0x04,
|
|
ROB_PARTIAL_MOTION_PLAYBACK_MAX = 0x05,
|
|
};
|
|
|
|
enum RobType {
|
|
ROB_TYPE_NULL = -1,
|
|
|
|
ROB_TYPE_PLAYER = 0x00,
|
|
ROB_TYPE_CPU_ENEMY = 0x01,
|
|
ROB_TYPE_AUTH = 0x02,
|
|
ROB_TYPE_DATA_TEST = 0x03,
|
|
ROB_TYPE_MAX = 0x04,
|
|
};
|
|
|
|
enum TargetType {
|
|
ROB_TARGET_NONE = 0,
|
|
ROB_TARGET_WALL,
|
|
ROB_TARGET_ENEMY,
|
|
ROB_TARGET_RINGOUT,
|
|
};
|
|
|
|
enum ExNodeType {
|
|
EX_NODE_TYPE_NULL = 0x00,
|
|
EX_NODE_TYPE_OSAGE = 0x01,
|
|
EX_NODE_TYPE_EXPRESSION = 0x02,
|
|
EX_NODE_TYPE_CONSTRAINT = 0x03,
|
|
EX_NODE_TYPE_CLOTH = 0x04,
|
|
EX_NODE_TYPE_MAX = 0x05,
|
|
};
|
|
|
|
enum SubActExecType {
|
|
SUB_ACTION_EXECUTE_NONE = 0x00,
|
|
SUB_ACTION_EXECUTE_CRY = 0x01,
|
|
SUB_ACTION_EXECUTE_SHAKE_HAND = 0x02,
|
|
SUB_ACTION_EXECUTE_EMBARRASSED = 0x03,
|
|
SUB_ACTION_EXECUTE_ANGRY = 0x04,
|
|
SUB_ACTION_EXECUTE_LAUGH = 0x05,
|
|
SUB_ACTION_EXECUTE_COUNT_NUM = 0x06,
|
|
};
|
|
|
|
enum SubActParamType {
|
|
SUB_ACTION_PARAM_NONE = 0x00,
|
|
SUB_ACTION_PARAM_CRY = 0x01,
|
|
SUB_ACTION_PARAM_SHAKE_HAND = 0x02,
|
|
SUB_ACTION_PARAM_EMBARRASSED = 0x03,
|
|
SUB_ACTION_PARAM_ANGRY = 0x04,
|
|
SUB_ACTION_PARAM_LAUGH = 0x05,
|
|
SUB_ACTION_PARAM_COUNT_NUM = 0x06,
|
|
};
|
|
|
|
namespace SkinParam {
|
|
enum CollisionType {
|
|
CollisionTypeEnd = 0x00,
|
|
CollisionTypeBall = 0x01,
|
|
CollisionTypeCapsule = 0x02,
|
|
CollisionTypePlane = 0x03,
|
|
CollisionTypeEllipse = 0x04,
|
|
CollisionTypeAABB = 0x05,
|
|
CollisionTypeMax = 0x06,
|
|
};
|
|
|
|
enum RootCollisionType {
|
|
RootCollisionTypeEnd = 0x00,
|
|
RootCollisionTypeCapsule = 0x01,
|
|
RootCollisionTypeCapsuleWithRoot = 0x02,
|
|
RootCollisionTypeMax = 0x03,
|
|
};
|
|
}
|
|
|
|
class rob_chara;
|
|
class rob_chara_bone_data;
|
|
|
|
struct RobTransform {
|
|
vec3 pos;
|
|
vec3 rot;
|
|
vec3 scale;
|
|
vec3 hsc;
|
|
|
|
RobTransform();
|
|
|
|
void CalcMatrixHS(const vec3& hsc, mat4& mat, mat4& dsp_mat);
|
|
|
|
void init();
|
|
void init(const vec3& p, const vec3& r);
|
|
void init(float_t px, float_t py, float_t pz,
|
|
float_t rx, float_t ry, float_t rz);
|
|
void reset_scale();
|
|
};
|
|
|
|
struct RobNode {
|
|
const char* name;
|
|
mat4* mat_ptr;
|
|
const RobNode* parent;
|
|
RobTransform transform;
|
|
mat4* no_scale_mat;
|
|
|
|
RobNode();
|
|
|
|
float_t* get_transform_component(size_t index, Expr_type& type);
|
|
const float_t* get_transform_component(size_t index, Expr_type& type) const;
|
|
void init(const char* in_name, mat4* in_mat, mat4* in_no_scale_mat);
|
|
};
|
|
|
|
struct struc_314 {
|
|
uint32_t* field_0;
|
|
size_t field_8;
|
|
};
|
|
|
|
struct FcurveKey {
|
|
FcurveKeyKind kind;
|
|
int32_t sum;
|
|
int32_t cache_idx;
|
|
int32_t last_idx;
|
|
const uint16_t* num;
|
|
const float_t* val;
|
|
};
|
|
|
|
struct Fcurve {
|
|
uint16_t fc_max;
|
|
uint16_t frame_max;
|
|
uint16_t key_num_type;
|
|
FcurveKey* fck_ptr;
|
|
|
|
bool fcurve_init(const void* data);
|
|
void fcurve_init_u16(const void* data);
|
|
void interpolate(float_t frame, float_t* value,
|
|
FcurveKey* fck, uint32_t in_fc_max, const struct struc_369* a6);
|
|
void set_fck_ptr(FcurveKey* ptr);
|
|
};
|
|
|
|
struct struc_369 {
|
|
int32_t field_0;
|
|
float_t field_4;
|
|
};
|
|
|
|
struct mot_key_data {
|
|
bool key_sets_ready;
|
|
size_t key_set_count;
|
|
prj::sys_vector<FcurveKey> key_set;
|
|
Fcurve mot;
|
|
prj::sys_vector<float_t> fc_value;
|
|
const mot_data* mot_data;
|
|
BONE_KIND kind;
|
|
int32_t motion_body_type;
|
|
uint32_t motnum;
|
|
float_t frame;
|
|
struc_369 field_68;
|
|
|
|
mot_key_data();
|
|
~mot_key_data();
|
|
|
|
void interpolate(float_t frame, uint32_t key_set_offset, uint32_t key_set_count);
|
|
void reset();
|
|
};
|
|
|
|
struct RobBlock {
|
|
IK_TYPE ik_type;
|
|
IH_TYPE inherit_type;
|
|
BONE_BLK block_id;
|
|
BONE_BLK flip_block_id;
|
|
BONE_BLK inherit_mat_id;
|
|
uint32_t expression_id;
|
|
int32_t key_set_offset;
|
|
int32_t key_set_count;
|
|
float_t frame;
|
|
vec3 chain_pos[2];
|
|
vec3 chain_ang;
|
|
vec3 leaf_pos[2];
|
|
mat4 chain_rot[3];
|
|
vec3 smooth_pos[2];
|
|
mat4 smooth_rot[3][2];
|
|
const mat4* up_vector_mat_ptr;
|
|
const mat4* inherit_mat_ptr;
|
|
RobNode* node;
|
|
float_t len[2][2];
|
|
float_t arm_length;
|
|
float_t eyes_xrot_adjust_neg;
|
|
float_t eyes_xrot_adjust_pos;
|
|
|
|
RobBlock();
|
|
~RobBlock();
|
|
|
|
bool calc_constraint(const RobBlock* block_top);
|
|
void copy_rot_trans(const RobBlock& other);
|
|
bool check_expression_id_not_null();
|
|
void exp_set_dir(const vec3& glo);
|
|
void exp_set_dir_zx(vec3 vy);
|
|
void exp_set_rot(const vec3& glo, float_t keisuu);
|
|
bool get_ex_rotation(RobTransform& transform, const RobBlock* block_top);
|
|
void get_mat(int32_t target);
|
|
void solve_ik(int32_t target);
|
|
void recalc_fk_block(const mat4& cur_mat, const RobBlock* block_top, bool rot);
|
|
const vec3* set_global_leaf_sub(const vec3* val, BONE_KIND kind, bool get_data, bool flip_x);
|
|
void get_smooth_target(int32_t target);
|
|
|
|
static float_t limit_angle(float_t angle);
|
|
};
|
|
|
|
struct bone_data_parent {
|
|
rob_chara_bone_data* rob_bone_data;
|
|
size_t block_max;
|
|
size_t leaf_pos_max;
|
|
size_t chain_pos_max;
|
|
prj::sys_vector<RobBlock> block_vec;
|
|
prj::sys_vector<uint16_t> bone_indices;
|
|
vec3 gblctr_pos;
|
|
vec3 gblctr_rot;
|
|
uint32_t bone_key_set_count;
|
|
uint32_t global_key_set_count;
|
|
float_t yrot;
|
|
|
|
bone_data_parent();
|
|
~bone_data_parent();
|
|
|
|
void ik_init(const std::vector<BODYTYPE>* body_type_table,
|
|
const CHAINPOSRADIUS* joint_table, const CHAINPOSRADIUS* disp_joint_table);
|
|
};
|
|
|
|
struct mot_play_frame_data {
|
|
float_t frame;
|
|
float_t step;
|
|
float_t step_prev;
|
|
float_t frame_max;
|
|
float_t last_frame;
|
|
float_t max_frame;
|
|
mot_play_frame_data_playback_state playback_state;
|
|
mot_play_frame_data_loop_state loop_state;
|
|
float_t loop_begin;
|
|
float_t loop_end;
|
|
bool looped;
|
|
int32_t loop_count;
|
|
|
|
void reset();
|
|
void set_frame(float_t frame);
|
|
};
|
|
|
|
struct mot_play_data {
|
|
mot_play_frame_data frame_data;
|
|
int32_t loop_index;
|
|
bool loop_frames_enabled;
|
|
float_t loop_frames;
|
|
float_t* ext_frame;
|
|
float_t* ext_step;
|
|
|
|
void reset();
|
|
};
|
|
|
|
struct MotionSmooth {
|
|
int32_t field_0;
|
|
int32_t field_4;
|
|
uint8_t field_8;
|
|
mat4 base_mtx;
|
|
mat4 base_mtx_bef;
|
|
bool base_mtx_set;
|
|
vec3 field_90;
|
|
vec3 field_9C;
|
|
vec3 field_A8;
|
|
float_t move_yang;
|
|
float_t move_yang_bef;
|
|
bool root_ypos;
|
|
bool root_xzpos;
|
|
float_t field_C0;
|
|
float_t field_C4;
|
|
vec3 field_C8;
|
|
|
|
MotionSmooth();
|
|
|
|
void reset();
|
|
};
|
|
|
|
struct struc_400 {
|
|
bool field_0;
|
|
bool field_1;
|
|
bool field_2;
|
|
bool field_3;
|
|
bool field_4;
|
|
float_t frame;
|
|
float_t move_yang;
|
|
float_t move_yang_bef;
|
|
};
|
|
|
|
class MotionBlend {
|
|
public:
|
|
bool field_8;
|
|
bool enable;
|
|
float_t duration;
|
|
float_t frame;
|
|
float_t step;
|
|
float_t offset;
|
|
float_t blend;
|
|
|
|
MotionBlend();
|
|
virtual ~MotionBlend();
|
|
|
|
virtual void Reset();
|
|
virtual void Field_10(float_t, float_t, int32_t) = 0;
|
|
virtual void Step(struc_400*) = 0;
|
|
virtual void Field_20(prj::sys_vector<RobBlock>* bones_curr, prj::sys_vector<RobBlock>* bones_prev) = 0;
|
|
virtual void Blend(RobBlock* curr, RobBlock* prev) = 0;
|
|
virtual bool Field_30();
|
|
|
|
void SetDuration(float_t duration, float_t step, float_t offset);
|
|
};
|
|
|
|
class MotionBlendCross : public MotionBlend {
|
|
public:
|
|
bool trans_xz;
|
|
bool trans_y;
|
|
mat4 rot_y_mat;
|
|
mat4 field_64;
|
|
mat4 field_A4;
|
|
mat4 field_E4;
|
|
|
|
MotionBlendCross();
|
|
virtual ~MotionBlendCross() override;
|
|
|
|
virtual void Reset() override;
|
|
virtual void Field_10(float_t, float_t, int32_t) override;
|
|
virtual void Step(struc_400*) override;
|
|
virtual void Field_20(prj::sys_vector<RobBlock>* bones_curr, prj::sys_vector<RobBlock>* bones_prev) override;
|
|
virtual void Blend(RobBlock* curr, RobBlock* prev) override;
|
|
virtual bool Field_30() override;
|
|
};
|
|
|
|
class MotionBlendCombine : public MotionBlendCross {
|
|
public:
|
|
MotionBlendCombine();
|
|
virtual ~MotionBlendCombine() override;
|
|
|
|
virtual void Step(struc_400*) override;
|
|
virtual bool Field_30() override;
|
|
};
|
|
|
|
class MotionBlendFreeze : public MotionBlend {
|
|
public:
|
|
bool trans_xz;
|
|
bool trans_y;
|
|
int32_t field_24;
|
|
float_t field_28;
|
|
float_t field_2C;
|
|
int32_t field_30;
|
|
mat4 rot_y_mat;
|
|
mat4 field_74;
|
|
mat4 field_B4;
|
|
mat4 field_F4;
|
|
|
|
MotionBlendFreeze();
|
|
virtual ~MotionBlendFreeze() override;
|
|
|
|
virtual void Reset() override;
|
|
virtual void Field_10(float_t, float_t, int32_t) override;
|
|
virtual void Step(struc_400*) override;
|
|
virtual void Field_20(prj::sys_vector<RobBlock>* bones_curr, prj::sys_vector<RobBlock>* bones_prev) override;
|
|
virtual void Blend(RobBlock* curr, RobBlock* prev) override;
|
|
};
|
|
|
|
class PartialMotionBlendFreeze : public MotionBlendFreeze {
|
|
public:
|
|
PartialMotionBlendFreeze();
|
|
virtual ~PartialMotionBlendFreeze() override;
|
|
|
|
virtual void Reset() override;
|
|
virtual void Field_10(float_t, float_t, int32_t) override;
|
|
virtual void Step(struc_400*) override;
|
|
virtual void Field_20(prj::sys_vector<RobBlock>* bones_curr, prj::sys_vector<RobBlock>* bones_prev) override;
|
|
virtual void Blend(RobBlock* curr, RobBlock* prev) override;
|
|
};
|
|
|
|
typedef bool(* PFNMOTIONBONECHECKFUNC)(BONE_BLK blk);
|
|
|
|
struct motion_blend_mot_enabled_bones {
|
|
PFNMOTIONBONECHECKFUNC func;
|
|
prj::sys_vector<bool> arr;
|
|
size_t count;
|
|
|
|
motion_blend_mot_enabled_bones();
|
|
~motion_blend_mot_enabled_bones();
|
|
|
|
void check();
|
|
void init(PFNMOTIONBONECHECKFUNC func, size_t count);
|
|
void reset();
|
|
void set(void(*func)(prj::sys_vector<bool>&));
|
|
};
|
|
|
|
struct motion_blend_mot {
|
|
motion_blend_mot_enabled_bones enabled_bones;
|
|
MotionBlendCross cross;
|
|
MotionBlendFreeze freeze;
|
|
MotionBlendCombine combine;
|
|
bone_data_parent bone_data;
|
|
mot_key_data mot_key_data;
|
|
mot_play_data mot_play_data;
|
|
MotionSmooth smooth;
|
|
int32_t field_5CC;
|
|
MotionBlend* blend;
|
|
|
|
motion_blend_mot();
|
|
~motion_blend_mot();
|
|
|
|
void apply_global_transform();
|
|
void copy_rot_trans();
|
|
void copy_rot_trans(const prj::sys_vector<RobBlock>& block_vec);
|
|
bool get_blend_enable();
|
|
void get_n_hara_cp_position(vec3& value);
|
|
MotionBlendType get_type();
|
|
void init(rob_chara_bone_data* rob_bone_data,
|
|
PFNMOTIONBONECHECKFUNC check_func, const bone_database* bone_data);
|
|
void interpolate();
|
|
void load_file(uint32_t motnum, MotionBlendType blend_type, float_t blend,
|
|
const bone_database* bone_data, const motion_database* mot_db);
|
|
void mult_mat(const mat4* mat);
|
|
void reset();
|
|
void set_arm_length(BONE_BLK blk, float_t value);
|
|
void set_blend(MotionBlendType blend_type, float_t blend);
|
|
void set_blend_duration(float_t duration, float_t step, float_t offset);
|
|
void set_step(float_t step);
|
|
void get_smooth_target(int32_t motion_body_type);
|
|
|
|
static bool interpolate_get_flip(MotionSmooth& a1);
|
|
};
|
|
|
|
struct rob_chara_bone_data_adjust_scale {
|
|
float_t base;
|
|
float_t body;
|
|
float_t arm;
|
|
float_t height;
|
|
|
|
rob_chara_bone_data_adjust_scale();
|
|
};
|
|
|
|
struct partial_motion_blend_mot {
|
|
motion_blend_mot_enabled_bones enabled_bones;
|
|
bool disable;
|
|
mot_key_data mot_key_data;
|
|
mot_play_data mot_play_data;
|
|
PartialMotionBlendFreeze blend;
|
|
|
|
partial_motion_blend_mot();
|
|
~partial_motion_blend_mot();
|
|
|
|
void init(BONE_KIND type, PFNMOTIONBONECHECKFUNC bone_check_func,
|
|
size_t block_max, const bone_database* bone_data);
|
|
void interpolate(prj::sys_vector<RobBlock>& block_vec,
|
|
const prj::sys_vector<uint16_t>* bone_indices, BONE_KIND kind);
|
|
void load_file(uint32_t motnum, const motion_database* mot_db);
|
|
void reset();
|
|
void set_blend_duration(float_t duration, float_t step, float_t offset);
|
|
void set_frame(float_t frame);
|
|
void set_step(float_t step);
|
|
void get_smooth_target(prj::sys_vector<RobBlock>& block_vec);
|
|
};
|
|
|
|
struct rob_chara_look_anim_eye_param_limits {
|
|
float_t xrot_neg;
|
|
float_t xrot_pos;
|
|
float_t yrot_neg;
|
|
float_t yrot_pos;
|
|
};
|
|
|
|
struct rob_chara_look_anim_eye_param {
|
|
rob_chara_look_anim_eye_param_limits ac;
|
|
rob_chara_look_anim_eye_param_limits ft;
|
|
vec3 pos;
|
|
float_t xrot_adjust_neg;
|
|
float_t xrot_adjust_pos;
|
|
float_t xrot_adjust_dir_neg;
|
|
float_t xrot_adjust_dir_pos;
|
|
float_t xrot_adjust_clear_neg;
|
|
float_t xrot_adjust_clear_pos;
|
|
|
|
rob_chara_look_anim_eye_param();
|
|
rob_chara_look_anim_eye_param(rob_chara_look_anim_eye_param_limits ac,
|
|
rob_chara_look_anim_eye_param_limits ft,
|
|
vec3 pos, float_t xrot_adjust_neg, float_t xrot_adjust_pos,
|
|
float_t xrot_adjust_dir_neg, float_t xrot_adjust_dir_pos,
|
|
float_t xrot_adjust_clear_neg, float_t xrot_adjust_clear_pos);
|
|
|
|
void reset();
|
|
};
|
|
|
|
struct struc_243 {
|
|
float_t min;
|
|
float_t max;
|
|
float_t field_8;
|
|
float_t field_C;
|
|
float_t field_10;
|
|
float_t field_14;
|
|
float_t field_18;
|
|
float_t field_1C;
|
|
float_t field_20;
|
|
float_t field_24;
|
|
};
|
|
|
|
struct struc_823 {
|
|
float_t field_0;
|
|
float_t field_4;
|
|
float_t field_8;
|
|
float_t field_C;
|
|
};
|
|
|
|
struct Motion {
|
|
struct AshiOidashi {
|
|
float_t y_bef;
|
|
float_t y_old;
|
|
float_t scale;
|
|
|
|
AshiOidashi();
|
|
|
|
void reset();
|
|
};
|
|
|
|
struct AshiOidashiColle {
|
|
AshiOidashi l;
|
|
AshiOidashi r;
|
|
|
|
AshiOidashiColle();
|
|
|
|
void calc(prj::sys_vector<RobBlock>& block_vec, const mat4& cur_mat, float_t step,
|
|
BONE_KIND kind, const BONE_BLK* c_momo_l_ik_blk, const BONE_BLK* c_momo_r_ik_blk);
|
|
void calc_sub(RobBlock& bl_momo, const RobBlock& bl_toe,
|
|
float_t hh, Motion::AshiOidashi& ashi, float_t step);
|
|
void reset();
|
|
};
|
|
};
|
|
|
|
struct rob_chara_look_anim {
|
|
prj::sys_vector<RobBlock>* block_vec;
|
|
mat4 mat;
|
|
rob_chara_look_anim_eye_param param;
|
|
bool update_view_point;
|
|
bool init_head_rotation;
|
|
bool head_rotation;
|
|
bool init_eyes_rotation;
|
|
bool eyes_rotation;
|
|
bool disable;
|
|
float_t head_rot_strength;
|
|
float_t eyes_rot_strength;
|
|
float_t eyes_rot_step;
|
|
float_t duration;
|
|
float_t eyes_rot_frame;
|
|
float_t step;
|
|
float_t head_rot_frame;
|
|
float_t field_B0;
|
|
vec3 target_view_point;
|
|
vec3 view_point;
|
|
mat4 left_eye_mat;
|
|
mat4 right_eye_mat;
|
|
bool ext_head_rotation;
|
|
float_t ext_head_rot_strength;
|
|
float_t ext_head_rot_y_angle;
|
|
float_t ext_head_rot_x_angle;
|
|
struc_243 field_15C;
|
|
vec3 field_184;
|
|
bool field_190;
|
|
bool field_191;
|
|
bool field_192;
|
|
bool field_193;
|
|
bool field_194;
|
|
bool field_195;
|
|
float_t head_rot_blend;
|
|
struc_823 field_19C;
|
|
struc_823 field_1AC;
|
|
float_t eyes_xrot_adjust_neg;
|
|
float_t eyes_xrot_adjust_pos;
|
|
bool ft;
|
|
int32_t type;
|
|
|
|
rob_chara_look_anim();
|
|
|
|
void reset();
|
|
void set(bool update_view_point, bool rotation_enable, float_t head_rot_strength,
|
|
float_t eyes_rot_strength, float_t duration, float_t eyes_rot_step, float_t a8, bool ft);
|
|
void set_eyes_xrot_adjust(float_t neg, float_t pos);
|
|
void set_target_view_point(const vec3& value);
|
|
};
|
|
|
|
struct rob_sleeve_data {
|
|
float_t radius;
|
|
float_t cyofs;
|
|
float_t czofs;
|
|
float_t ymin;
|
|
float_t ymax;
|
|
float_t zmin;
|
|
float_t zmax;
|
|
float_t mune_xofs;
|
|
float_t mune_yofs;
|
|
float_t mune_zofs;
|
|
float_t mune_rad;
|
|
};
|
|
|
|
struct rob_chara_sleeve_adjust {
|
|
rob_sleeve_data sleeve_l;
|
|
rob_sleeve_data sleeve_r;
|
|
bool enable1;
|
|
bool enable2;
|
|
vec3 field_5C;
|
|
vec3 field_68;
|
|
vec3 field_74;
|
|
vec3 field_80;
|
|
float_t radius;
|
|
prj::sys_vector<RobBlock>* block_vec;
|
|
float_t step;
|
|
|
|
rob_chara_sleeve_adjust();
|
|
|
|
void reset();
|
|
};
|
|
|
|
class rob_chara_bone_data {
|
|
public:
|
|
bool field_0;
|
|
bool field_1;
|
|
size_t mat_max;
|
|
size_t node_max;
|
|
size_t block_max;
|
|
size_t leaf_pos_max;
|
|
size_t chain_pos_max;
|
|
std::vector<mat4> mat_vec;
|
|
std::vector<mat4> mat2_vec;
|
|
std::vector<RobNode> node_vec;
|
|
BONE_KIND kind;
|
|
BONE_KIND disp_kind;
|
|
std::vector<motion_blend_mot*> motions;
|
|
std::list<size_t> motion_indices;
|
|
std::list<size_t> motion_loaded_indices;
|
|
std::list<motion_blend_mot*> motion_loaded;
|
|
partial_motion_blend_mot face;
|
|
partial_motion_blend_mot hand_l;
|
|
partial_motion_blend_mot hand_r;
|
|
partial_motion_blend_mot mouth;
|
|
partial_motion_blend_mot eyes;
|
|
partial_motion_blend_mot eyelid;
|
|
bool disable_eye_motion;
|
|
rob_chara_bone_data_adjust_scale adjust_scale;
|
|
Motion::AshiOidashiColle ashi_oidashi;
|
|
rob_chara_look_anim look_anim;
|
|
rob_chara_sleeve_adjust sleeve_adjust;
|
|
|
|
rob_chara_bone_data();
|
|
~rob_chara_bone_data();
|
|
|
|
bool check_look_anim_head_rotation();
|
|
bool check_look_anim_ext_head_rotation();
|
|
float_t get_frame() const;
|
|
float_t get_frame_max() const;
|
|
vec3* get_look_anim_target_view_point();
|
|
bool get_look_anim_ext_head_rotation();
|
|
bool get_look_anim_head_rotation();
|
|
bool get_look_anim_update_view_point();
|
|
mat4* get_mats_mat(size_t index);
|
|
bool get_motion_has_looped();
|
|
void interpolate();
|
|
void load_eyes_motion(uint32_t motnum, const motion_database* mot_db);
|
|
void load_face_motion(uint32_t motnum, const motion_database* mot_db);
|
|
void load_eyelid_motion(uint32_t motnum, const motion_database* mot_db);
|
|
void load_hand_l_motion(uint32_t motnum, const motion_database* mot_db);
|
|
void load_hand_r_motion(uint32_t motnum, const motion_database* mot_db);
|
|
void load_mouth_motion(uint32_t motnum, const motion_database* mot_db);
|
|
void motion_step();
|
|
void reset();
|
|
void set_disable_eye_motion(bool value);
|
|
void set_eyelid_blend_duration(float_t duration, float_t step, float_t offset);
|
|
void set_eyelid_frame(float_t frame);
|
|
void set_eyelid_step(float_t step);
|
|
void set_eyes_blend_duration(float_t duration, float_t step, float_t offset);
|
|
void set_eyes_frame(float_t frame);
|
|
void set_eyes_step(float_t step);
|
|
void set_face_blend_duration(float_t duration, float_t step, float_t offset);
|
|
void set_face_frame(float_t frame);
|
|
void set_face_step(float_t step);
|
|
void set_frame(float_t frame);
|
|
void set_hand_l_blend_duration(float_t duration, float_t step, float_t offset);
|
|
void set_hand_l_frame(float_t frame);
|
|
void set_hand_l_step(float_t step);
|
|
void set_hand_r_blend_duration(float_t duration, float_t step, float_t offset);
|
|
void set_hand_r_frame(float_t frame);
|
|
void set_hand_r_step(float_t step);
|
|
void set_look_anim(bool update_view_point, bool rotation_enable, float_t head_rot_strength,
|
|
float_t eyes_rot_strength, float_t duration, float_t eyes_rot_step, float_t a8, bool ft);
|
|
void set_look_anim_target_view_point(const vec3& value);
|
|
void set_mats_identity();
|
|
void set_motion_blend_duration(float_t duration, float_t step, float_t offset);
|
|
void set_motion_frame(float_t frame, float_t step, float_t frame_max);
|
|
void set_motion_loop(float_t loop_begin, int32_t loop_count, float_t loop_end);
|
|
void set_motion_loop_state(mot_play_frame_data_loop_state value);
|
|
void set_motion_max_frame(float_t value);
|
|
void set_motion_playback_state(mot_play_frame_data_playback_state value);
|
|
void set_mouth_blend_duration(float_t duration, float_t step, float_t offset);
|
|
void set_mouth_frame(float_t frame);
|
|
void set_mouth_step(float_t step);
|
|
void update(const mat4* mat);
|
|
};
|
|
|
|
class RobAngle {
|
|
public:
|
|
int16_t value;
|
|
|
|
inline RobAngle( ) : value() {}
|
|
inline RobAngle(int16_t value) : value(value) {}
|
|
|
|
inline float_t get_deg() {
|
|
return (float_t)((double_t)value * 180.0 * (1.0 / 32768.0));
|
|
}
|
|
|
|
inline float_t get_rad() {
|
|
return (float_t)((double_t)value * M_PI * (1.0 / 32768.0));
|
|
}
|
|
|
|
inline void set_deg(float_t in_deg) {
|
|
value = (int16_t)(int32_t)(in_deg * 32768.0f * (float_t)(1.0 / 180.0));
|
|
}
|
|
|
|
inline void set_rad(float_t in_rad) {
|
|
value = (int16_t)(int32_t)((double_t)(in_rad * 32768.0f) * (1.0 / M_PI));
|
|
}
|
|
};
|
|
|
|
inline RobAngle operator+(const RobAngle& left, const RobAngle& right) {
|
|
return (int16_t)(left.value + right.value);
|
|
}
|
|
|
|
inline RobAngle operator+(const int32_t& left, const RobAngle& right) {
|
|
return (int16_t)(left + right.value);
|
|
}
|
|
|
|
inline RobAngle operator+(const RobAngle& left, const int32_t& right) {
|
|
return (int16_t)(left.value + right);
|
|
}
|
|
|
|
inline void operator+=(RobAngle& left, const RobAngle& right) {
|
|
left = (int16_t)(left.value + right.value);
|
|
}
|
|
|
|
inline void operator+=(RobAngle& left, const int32_t right) {
|
|
left = (int16_t)(left.value + right);
|
|
}
|
|
|
|
inline RobAngle operator-(const RobAngle& left, const RobAngle& right) {
|
|
return (int16_t)(left.value - right.value);
|
|
}
|
|
|
|
inline RobAngle operator-(const int32_t& left, const RobAngle& right) {
|
|
return (int16_t)(left - right.value);
|
|
}
|
|
|
|
inline RobAngle operator-(const RobAngle& left, const int32_t& right) {
|
|
return (int16_t)(left.value - right);
|
|
}
|
|
|
|
inline void operator-=(RobAngle& left, const RobAngle& right) {
|
|
left = (int16_t)(left.value - right.value);
|
|
}
|
|
|
|
inline void operator-=(RobAngle& left, const int32_t right) {
|
|
left = (int16_t)(left.value - right);
|
|
}
|
|
|
|
inline RobAngle operator-(const RobAngle& left) {
|
|
return -left.value;
|
|
}
|
|
|
|
struct eyes_adjust {
|
|
bool xrot_adjust;
|
|
eyes_base_adjust_type base_adjust;
|
|
float_t neg;
|
|
float_t pos;
|
|
|
|
eyes_adjust();
|
|
};
|
|
|
|
struct RobInitItem {
|
|
uint32_t item_no[4];
|
|
};
|
|
|
|
struct RobInit {
|
|
RobType rob_type;
|
|
bool disp;
|
|
bool mirror;
|
|
bool drank_reset;
|
|
vec3 pos;
|
|
RobAngle yang;
|
|
int16_t energy;
|
|
rob_sleeve_data sleeve_l;
|
|
rob_sleeve_data sleeve_r;
|
|
int32_t field_70;
|
|
uint32_t face_mot_slot[10];
|
|
int32_t chara_size_index;
|
|
bool height_adjust;
|
|
RobInitItem item;
|
|
eyes_adjust eyes_adjust;
|
|
|
|
RobInit();
|
|
|
|
void init();
|
|
};
|
|
|
|
struct RobCollisionData {
|
|
vec3 trans;
|
|
float_t scale;
|
|
BONE_ID bone;
|
|
int32_t field_14;
|
|
};
|
|
|
|
struct RobKamae {
|
|
const char* name;
|
|
int32_t field_8;
|
|
int32_t field_C;
|
|
int32_t field_10;
|
|
int32_t field_14;
|
|
int32_t field_18;
|
|
};
|
|
|
|
struct struc_344 {
|
|
int32_t chara_size_index;
|
|
int32_t field_4;
|
|
int32_t swim_costume;
|
|
int32_t swim_s_costume;
|
|
};
|
|
|
|
struct RobData {
|
|
int32_t objset;
|
|
BONE_KIND bone;
|
|
object_info body_obj_uid[15];
|
|
uint32_t motfile;
|
|
uint32_t motfile_auth;
|
|
const RobCollisionData* colli_data;
|
|
const RobCollisionData* push_colli_data;
|
|
const RobKamae** kamae_tbl;
|
|
int32_t field_840;
|
|
int32_t field_844;
|
|
struc_344 field_848;
|
|
object_info head_objects[9];
|
|
object_info face_objects[15];
|
|
};
|
|
|
|
class RobSkinDisp;
|
|
|
|
struct RobSkinOfs {
|
|
bool flag;
|
|
RobTransform transform;
|
|
|
|
RobSkinOfs();
|
|
};
|
|
|
|
class ExNodeBlock {
|
|
public:
|
|
RobNode* dst_node;
|
|
ExNodeType type;
|
|
const char* name;
|
|
const RobNode* parent;
|
|
std::string parent_name;
|
|
ExNodeBlock* parent_node;
|
|
const RobSkinDisp* skin_disp;
|
|
bool is_parent;
|
|
bool done;
|
|
bool has_children_node;
|
|
|
|
ExNodeBlock();
|
|
virtual ~ExNodeBlock();
|
|
|
|
virtual void init() = 0;
|
|
virtual void CtrlBegin() = 0;
|
|
virtual void CtrlStep(int32_t stage, bool disable_ex_force) = 0;
|
|
virtual void ctrl() = 0;
|
|
virtual void CtrlOsagePlayData() = 0;
|
|
virtual void disp(const mat4& mat, render_context* rctx) = 0;
|
|
virtual void dest();
|
|
virtual void disp_debug() = 0;
|
|
virtual void pos_init() = 0;
|
|
virtual void pos_init_cont() = 0;
|
|
virtual void CtrlEnd();
|
|
|
|
void init_members();
|
|
void set_data(RobNode* node, ExNodeType type,
|
|
const char* name, const RobSkinDisp* skin_disp);
|
|
void set_name(const char* name);
|
|
};
|
|
|
|
class ExNullBlock : public ExNodeBlock {
|
|
public:
|
|
const obj_skin_ex_node_constraint* data;
|
|
|
|
ExNullBlock();
|
|
virtual ~ExNullBlock() override;
|
|
|
|
virtual void init() override;
|
|
virtual void CtrlBegin() override;
|
|
virtual void CtrlStep(int32_t stage, bool disable_ex_force) override;
|
|
virtual void ctrl() override;
|
|
virtual void CtrlOsagePlayData() override;
|
|
virtual void disp(const mat4& mat, render_context* rctx) override;
|
|
virtual void disp_debug() override;
|
|
virtual void pos_init() override;
|
|
virtual void pos_init_cont() override;
|
|
|
|
void set_data(const RobSkinDisp* skin_disp, const obj_skin_ex_node_constraint* data,
|
|
const char* name, const bone_database* bone_data);
|
|
};
|
|
|
|
struct RobJointNode;
|
|
|
|
struct RobJointNodeDataNormalRef {
|
|
bool set;
|
|
RobJointNode* n;
|
|
RobJointNode* u;
|
|
RobJointNode* d;
|
|
RobJointNode* l;
|
|
RobJointNode* r;
|
|
mat4 mat;
|
|
|
|
RobJointNodeDataNormalRef();
|
|
|
|
bool Check();
|
|
void GetMat(mat4* mat);
|
|
void Load();
|
|
|
|
static bool GetAxes(const vec3& l_trans, const vec3& r_trans,
|
|
const vec3& u_trans, const vec3& d_trans, vec3& z_axis, vec3& y_axis, vec3& x_axis);
|
|
};
|
|
|
|
struct skin_param_hinge {
|
|
float_t ymin;
|
|
float_t ymax;
|
|
float_t zmin;
|
|
float_t zmax;
|
|
|
|
inline skin_param_hinge() {
|
|
ymin = -90.0f;
|
|
ymax = 90.0f;
|
|
zmin = -90.0f;
|
|
zmax = 90.0f;
|
|
}
|
|
|
|
bool clamp(float_t& y, float_t& z) const;
|
|
void limit();
|
|
};
|
|
|
|
struct skin_param_osage_node {
|
|
float_t coli_r;
|
|
float_t weight;
|
|
float_t inertial_cancel;
|
|
skin_param_hinge hinge;
|
|
|
|
skin_param_osage_node();
|
|
};
|
|
|
|
struct RobJointNodeResetData {
|
|
vec3 pos;
|
|
vec3 vec;
|
|
vec3 rotation;
|
|
float_t length;
|
|
|
|
RobJointNodeResetData();
|
|
};
|
|
|
|
struct skin_param_osage_root;
|
|
|
|
struct RobJointNodeData {
|
|
float_t force;
|
|
std::vector<RobJointNode*> boc;
|
|
RobJointNodeDataNormalRef normal_ref;
|
|
skin_param_osage_node skp_osg_node;
|
|
|
|
RobJointNodeData();
|
|
~RobJointNodeData();
|
|
|
|
void SetForce(const skin_param_osage_root& skp_root,
|
|
skin_param_osage_node* skp_osg_node, size_t index);
|
|
|
|
void reset();
|
|
};
|
|
|
|
struct opd_blend_data {
|
|
uint32_t motnum;
|
|
float_t frame;
|
|
float_t frame_max;
|
|
bool use_blend;
|
|
#if OPD_PLAY_GEN
|
|
bool no_loop; // Added
|
|
#endif
|
|
MotionBlendType type;
|
|
float_t blend;
|
|
};
|
|
|
|
struct opd_vec3_data {
|
|
const float_t* x;
|
|
const float_t* y;
|
|
const float_t* z;
|
|
};
|
|
|
|
struct opd_node_data {
|
|
float_t length;
|
|
vec3 rotation;
|
|
|
|
opd_node_data();
|
|
opd_node_data(float_t length, vec3 rotation);
|
|
|
|
static void lerp(opd_node_data& dst, const opd_node_data& src0, const opd_node_data& src1, float_t blend);
|
|
};
|
|
|
|
struct opd_node_data_pair {
|
|
opd_node_data curr;
|
|
opd_node_data prev;
|
|
|
|
opd_node_data_pair();
|
|
|
|
void set_data(const opd_blend_data* blend_data, const opd_node_data& node_data);
|
|
};
|
|
|
|
struct RobJointNode {
|
|
float_t length_back;
|
|
vec3 pos;
|
|
vec3 old_pos;
|
|
vec3 vec;
|
|
vec3 vel;
|
|
float_t length_next;
|
|
RobNode* dst_node;
|
|
mat4* dst_node_mat;
|
|
mat4 mat;
|
|
RobJointNode* distance;
|
|
float_t length_dist;
|
|
vec3 rel_pos;
|
|
RobJointNodeResetData reset_data;
|
|
float_t hit;
|
|
float_t friction;
|
|
vec3 ex_force;
|
|
float_t force;
|
|
RobJointNodeData* data_ptr;
|
|
RobJointNodeData data;
|
|
std::vector<opd_vec3_data> opd_data;
|
|
opd_node_data_pair opd_node_data;
|
|
|
|
RobJointNode();
|
|
~RobJointNode();
|
|
|
|
void CheckFloorCollision(const float_t& floor_height);
|
|
void CheckNodeDistance(const float_t& step, const float_t& hsc);
|
|
|
|
void reset();
|
|
|
|
inline RobJointNode& GetNextNode() {
|
|
return *(this + 1);
|
|
}
|
|
|
|
inline const RobJointNode& GetNextNode() const {
|
|
return *(this + 1);
|
|
}
|
|
|
|
inline RobJointNode& GetPrevNode() {
|
|
return *(this - 1);
|
|
}
|
|
|
|
inline const RobJointNode& GetPrevNode() const {
|
|
return *(this - 1);
|
|
}
|
|
|
|
inline float_t TranslateMat(mat4& mat, const bool rot_clamped, const float_t hsc_x) {
|
|
const float_t dist = vec3::distance_squared(pos, GetPrevNode().pos);
|
|
const float_t len = length_back * hsc_x;
|
|
|
|
float_t length;
|
|
bool length_clamped;
|
|
if (dist >= len * len) {
|
|
length = sqrtf(dist);
|
|
length_clamped = false;
|
|
}
|
|
else {
|
|
length = len;
|
|
length_clamped = true;
|
|
}
|
|
|
|
mat4_mul_translate_x(&mat, length, &mat);
|
|
if (rot_clamped || length_clamped)
|
|
mat4_get_translation(&mat, &pos);
|
|
return length;
|
|
}
|
|
};
|
|
|
|
namespace SkinParam {
|
|
struct CollisionParam {
|
|
CollisionType type;
|
|
int32_t node_idx[2];
|
|
float_t radius;
|
|
vec3 pos[2];
|
|
|
|
CollisionParam();
|
|
};
|
|
};
|
|
|
|
struct skin_param_osage_root_normal_ref {
|
|
std::string n;
|
|
std::string u;
|
|
std::string d;
|
|
std::string l;
|
|
std::string r;
|
|
|
|
skin_param_osage_root_normal_ref();
|
|
~skin_param_osage_root_normal_ref();
|
|
};
|
|
|
|
struct skin_param_osage_root_boc {
|
|
int32_t ed_node;
|
|
std::string ed_root;
|
|
int32_t st_node;
|
|
|
|
skin_param_osage_root_boc();
|
|
~skin_param_osage_root_boc();
|
|
};
|
|
|
|
struct skin_param_osage_root {
|
|
int32_t field_0;
|
|
float_t force;
|
|
float_t force_gain;
|
|
float_t air_res;
|
|
float_t rot_y;
|
|
float_t rot_z;
|
|
float_t init_rot_y;
|
|
float_t init_rot_z;
|
|
float_t hinge_y;
|
|
float_t hinge_z;
|
|
const char* name;
|
|
std::vector<SkinParam::CollisionParam> coli;
|
|
float_t coli_r;
|
|
float_t friction;
|
|
float_t wind_afc;
|
|
ROTTYPE rottype;
|
|
std::vector<skin_param_osage_root_boc> boc;
|
|
SkinParam::RootCollisionType coli_type;
|
|
float_t stiffness;
|
|
float_t move_cancel;
|
|
std::string colli_tgt_osg;
|
|
std::vector<skin_param_osage_root_normal_ref> normal_ref;
|
|
|
|
skin_param_osage_root();
|
|
~skin_param_osage_root();
|
|
};
|
|
|
|
struct skin_param {
|
|
std::vector<SkinParam::CollisionParam> coli;
|
|
float_t friction;
|
|
float_t wind_afc;
|
|
float_t air_res;
|
|
vec3 rot;
|
|
vec3 init_rot;
|
|
SkinParam::RootCollisionType coli_type;
|
|
float_t stiffness;
|
|
float_t move_cancel;
|
|
float_t coli_r;
|
|
skin_param_hinge hinge;
|
|
float_t force;
|
|
float_t force_gain;
|
|
std::vector<RobJointNode>* colli_tgt_osg;
|
|
|
|
skin_param();
|
|
~skin_param();
|
|
|
|
void set_skin_param_osage_root(const skin_param_osage_root& skp_root);
|
|
|
|
inline void reset() {
|
|
coli.clear();
|
|
friction = 1.0f;
|
|
wind_afc = 0.0f;
|
|
air_res = 1.0f;
|
|
rot = 0.0f;
|
|
init_rot = 0.0f;
|
|
coli_type = SkinParam::RootCollisionTypeEnd;
|
|
stiffness = 0.0f;
|
|
move_cancel = -0.01f;
|
|
coli_r = 0.0f;
|
|
hinge = skin_param_hinge();
|
|
hinge.limit();
|
|
force = 0.0f;
|
|
force_gain = 0.0f;
|
|
colli_tgt_osg = 0;
|
|
}
|
|
};
|
|
|
|
struct OsageCollision {
|
|
struct Work {
|
|
SkinParam::CollisionType type;
|
|
float_t radius;
|
|
vec3 pos[2];
|
|
vec3 vec_center;
|
|
float_t vec_center_length;
|
|
float_t vec_center_length_squared;
|
|
float_t friction;
|
|
|
|
Work();
|
|
|
|
static void update_cls_work(OsageCollision::Work* work,
|
|
const SkinParam::CollisionParam* cls, const mat4* motmat);
|
|
static void update_cls_work(OsageCollision::Work* work,
|
|
const std::vector<SkinParam::CollisionParam>& cls_list, const mat4* motmat);
|
|
};
|
|
|
|
std::vector<Work> work_list;
|
|
|
|
OsageCollision();
|
|
~OsageCollision();
|
|
|
|
static int32_t cls_aabb_oidashi(vec3& vec, const vec3& p, const OsageCollision::Work* cls, const float_t r);
|
|
static int32_t cls_ball_oidashi(vec3& vec, const vec3& p, const vec3& center, const float_t r);
|
|
static int32_t cls_capsule_oidashi(vec3& vec, const vec3& p, const OsageCollision::Work* coli, const float_t r);
|
|
static int32_t cls_ellipse_oidashi(vec3& vec, const vec3& p, const OsageCollision::Work* cls, const float_t r);
|
|
static int32_t cls_line2ball_oidashi(vec3& vec,
|
|
const vec3& p0, const vec3& p1, const vec3& q, const float_t r);
|
|
static int32_t cls_line2capsule_oidashi(vec3& vec,
|
|
const vec3& p0, const vec3& p1, const OsageCollision::Work* cls, const float_t r);
|
|
static int32_t cls_line2ellipse_oidashi(vec3& vec,
|
|
const vec3& p0, const vec3& p1, const OsageCollision::Work* cls, const float_t r);
|
|
static int32_t cls_plane_oidashi(vec3& vec, const vec3& p, const vec3& p1, const vec3& p2, const float_t r);
|
|
static void get_nearest_line2point(vec3& nearest, const vec3& p0, const vec3& p1, const vec3& q);
|
|
static int32_t osage_capsule_cls(const OsageCollision::Work* cls, vec3& p0, vec3& p1, const float_t& cls_r);
|
|
static int32_t osage_capsule_cls(vec3& p0, vec3& p1, const float_t& cls_r, const OsageCollision::Work* cls);
|
|
static int32_t osage_cls(const OsageCollision::Work* cls, vec3& p, const float_t& cls_r);
|
|
static int32_t osage_cls(vec3& p, const float_t& cls_r, const OsageCollision::Work* cls, float_t* fric = 0);
|
|
static int32_t osage_cls_work_list(vec3& p, const float_t& cls_r, const OsageCollision& coli, float_t* fric = 0);
|
|
};
|
|
|
|
struct osage_ring_data {
|
|
float_t rect_x;
|
|
float_t rect_y;
|
|
float_t rect_width;
|
|
float_t rect_height;
|
|
float_t ring_height;
|
|
float_t out_height;
|
|
bool init;
|
|
OsageCollision coli_object;
|
|
std::vector<SkinParam::CollisionParam> skp_root_coli;
|
|
|
|
osage_ring_data();
|
|
~osage_ring_data();
|
|
|
|
float_t get_floor_height(const vec3& pos, const float_t coli_r) const;
|
|
void reset();
|
|
|
|
static void parse(const std::string& path, osage_ring_data& ring);
|
|
|
|
osage_ring_data& operator=(const osage_ring_data& ring);
|
|
};
|
|
|
|
struct skin_param_file_data;
|
|
|
|
struct CLOTH_VERTEX {
|
|
uint32_t flag;
|
|
vec3 pos;
|
|
vec3 org_pos;
|
|
vec3 old_pos;
|
|
vec3 vec;
|
|
vec3 normal;
|
|
vec3 tangent;
|
|
vec3 binormal;
|
|
float_t m;
|
|
vec2 uv;
|
|
vec3 localvec;
|
|
float_t length_up;
|
|
float_t length_down;
|
|
float_t length_left;
|
|
float_t length_right;
|
|
vec3 F;
|
|
RobJointNodeResetData reset_data;
|
|
std::vector<opd_vec3_data> opd_data;
|
|
opd_node_data_pair opd_node_data;
|
|
|
|
CLOTH_VERTEX();
|
|
~CLOTH_VERTEX();
|
|
};
|
|
|
|
struct CLOTH_FLAG {
|
|
uint32_t exec : 1;
|
|
uint32_t disp : 1;
|
|
uint32_t ring : 1;
|
|
};
|
|
|
|
struct CLOTH_SPRING {
|
|
size_t index0;
|
|
size_t index1;
|
|
float_t length;
|
|
};
|
|
|
|
struct CLOTH {
|
|
CLOTH_FLAG flag;
|
|
size_t width;
|
|
size_t height;
|
|
std::vector<CLOTH_VERTEX> vtxarg;
|
|
vec3 wind_dir;
|
|
float_t wet;
|
|
bool use_ex_force;
|
|
vec3 ex_force;
|
|
std::vector<CLOTH_SPRING> spring;
|
|
skin_param* skin_param_ptr;
|
|
skin_param skin_param;
|
|
OsageCollision::Work coli_chara[64];
|
|
OsageCollision::Work coli_ring[64];
|
|
osage_ring_data ring;
|
|
|
|
CLOTH();
|
|
virtual void set_spring();
|
|
virtual ~CLOTH();
|
|
|
|
virtual void set_coli_r(float_t value);
|
|
virtual void set_friction(float_t value);
|
|
virtual void set_wind_affect(float_t value);
|
|
virtual void set_wind_dir(const vec3& value);
|
|
virtual void set_wetness(float_t value);
|
|
virtual void set_angle_limit(float_t y, float_t z);
|
|
virtual CLOTH_VERTEX* get_vertex();
|
|
virtual void init();
|
|
virtual void disp_debug();
|
|
virtual void dest();
|
|
};
|
|
|
|
struct CLOTH_WEIGHTED_ROOT {
|
|
vec3 pos;
|
|
vec3 normal;
|
|
vec4 tangent;
|
|
const RobNode* node[4];
|
|
const mat4* node_mat[4];
|
|
const mat4* bone_mat[4];
|
|
float_t weight[4];
|
|
mat4 mat;
|
|
mat4 mat_pos;
|
|
mat4 inv_mat_pos;
|
|
};
|
|
|
|
struct RobCloth : public CLOTH {
|
|
const mat4* local_mat;
|
|
std::vector<CLOTH_WEIGHTED_ROOT> root;
|
|
const RobSkinDisp* skin_disp;
|
|
const obj_skin_ex_node_cloth_root* root_data;
|
|
const obj_skin_ex_node_cloth* data;
|
|
float_t move_cancel;
|
|
bool osage_reset;
|
|
obj_mesh mesh[2];
|
|
obj_sub_mesh submesh[2][4];
|
|
obj_mesh_vertex_buffer vb[2];
|
|
obj_mesh_index_buffer ib[2];
|
|
std::map<std::pair<int32_t, int32_t>, std::list<RobJointNodeResetData>> motion_reset_data;
|
|
std::list<RobJointNodeResetData>* reset_data_list;
|
|
|
|
RobCloth();
|
|
virtual ~RobCloth() override;
|
|
|
|
virtual void disp_debug() override;
|
|
virtual void dest() override;
|
|
|
|
void AddMotionResetData(uint32_t motnum, float_t frame);
|
|
void ApplyResetData();
|
|
void CtrlOsagePlayData(const std::vector<opd_blend_data>& opd_blend_data);
|
|
const float_t* LoadOpdData(size_t node_index, const float_t* opd_data, size_t opd_count);
|
|
void LoadSkinParam(void* kv, const char* name, const bone_database* bone_data);
|
|
void SetMotionResetData(uint32_t motnum, float_t frame);
|
|
const float_t* SetOsagePlayDataInit(const float_t* opdi_data);
|
|
void SetOsageReset();
|
|
void SetRing(const osage_ring_data& ring);
|
|
void SetSkinParam(skin_param_file_data* skp);
|
|
void SetSkinParamOsageRoot(const skin_param_osage_root& skp_root);
|
|
|
|
void calc(const float_t dt);
|
|
void calc_force(float_t time, bool init_flag);
|
|
void calc_normal();
|
|
void calc_root();
|
|
void calc_stretch();
|
|
void calc_velocity(const float_t dt, bool a3);
|
|
void ctrl(const float_t dt, bool init_flag);
|
|
void disp(const mat4& mat, render_context* rctx);
|
|
void make_osage_coli(const mat4* motmat);
|
|
void modify_obj();
|
|
void pos_init();
|
|
void pos_init_cont();
|
|
void reset_ex_force();
|
|
void set_data(size_t w, size_t h, const obj_skin_ex_node_cloth_root* rt_data,
|
|
const obj_skin_ex_node_cloth_point* move, const mat4* lcl_mat, uint32_t ring_flag,
|
|
const RobSkinDisp* skin, const bone_database* bone_data);
|
|
void set_data(const obj_skin_ex_node_cloth* cldata,
|
|
const RobSkinDisp* skin, const bone_database* bone_data);
|
|
void set_ex_force(const vec3& f);
|
|
void set_move_cancel(const float_t& mv_ccl);
|
|
void set_param(float_t force, float_t force_gain, float_t air_res);
|
|
};
|
|
|
|
class ExClothBlock : public ExNodeBlock {
|
|
public:
|
|
RobCloth cloth_work;
|
|
const obj_skin_ex_node_cloth* data;
|
|
const mat4* motion_matrix;
|
|
size_t block_idx;
|
|
|
|
ExClothBlock();
|
|
virtual ~ExClothBlock() override;
|
|
|
|
virtual void init() override;
|
|
virtual void CtrlBegin() override;
|
|
virtual void CtrlStep(int32_t stage, bool disable_ex_force) override;
|
|
virtual void ctrl() override;
|
|
virtual void CtrlOsagePlayData() override;
|
|
virtual void disp(const mat4& mat, render_context* rctx) override;
|
|
virtual void dest() override;
|
|
virtual void disp_debug() override;
|
|
virtual void pos_init() override;
|
|
virtual void pos_init_cont() override;
|
|
|
|
void AddMotionResetData(const uint32_t& motnum, const float_t& frame);
|
|
const float_t* LoadOpdData(size_t node_index, const float_t* opd_data, size_t opd_count);
|
|
void SetMotionResetData(const uint32_t& motnum, const float_t& frame);
|
|
const float_t* SetOsagePlayDataInit(const float_t* opdi_data);
|
|
void SetOsageReset();
|
|
void SetRing(const osage_ring_data& ring);
|
|
void SetSkinParam(skin_param_file_data* skp);
|
|
void SetSkinParamOsageRoot(const skin_param_osage_root* skp_root);
|
|
|
|
void reset_ex_force();
|
|
void set_data(const RobSkinDisp* skin_disp, const obj_skin_ex_node_cloth* cls_data,
|
|
const skin_param_osage_root* skp_root, const bone_database* bone_data);
|
|
void set_ex_force(const vec3& f);
|
|
void set_move_cancel(const float_t& mv_ccl);
|
|
void set_param();
|
|
};
|
|
|
|
struct skin_param_file_data {
|
|
skin_param skin_param;
|
|
std::vector<RobJointNodeData> nodes_data;
|
|
bool depends_on_others;
|
|
|
|
skin_param_file_data();
|
|
~skin_param_file_data();
|
|
};
|
|
|
|
struct osage_setting_osg_cat {
|
|
rob_osage_parts parts;
|
|
size_t exf;
|
|
|
|
osage_setting_osg_cat();
|
|
};
|
|
|
|
struct RobOsage {
|
|
skin_param* skin_param_ptr;
|
|
RobTransform transform;
|
|
std::vector<RobJointNode> joint_node_vec;
|
|
RobJointNode effector;
|
|
skin_param skin_param;
|
|
osage_setting_osg_cat osage_setting;
|
|
bool apply_physics;
|
|
bool field_2A1;
|
|
float_t field_2A4;
|
|
OsageCollision::Work coli_chara[64];
|
|
OsageCollision::Work coli_ring[64];
|
|
vec3 wind_dir;
|
|
float_t wet;
|
|
ROTTYPE rottype;
|
|
mat4* root_matrix_ptr;
|
|
mat4 root_matrix_prev;
|
|
float_t move_cancel;
|
|
bool move_cancelled;
|
|
bool osage_reset;
|
|
bool osage_reset_done;
|
|
bool disable_collision;
|
|
osage_ring_data ring;
|
|
std::map<std::pair<int32_t, int32_t>, std::list<RobJointNodeResetData>> motion_reset_data;
|
|
std::list<RobJointNodeResetData>* reset_data_list;
|
|
bool use_ex_force;
|
|
vec3 ex_force;
|
|
|
|
RobOsage();
|
|
~RobOsage();
|
|
|
|
void AddMotionResetData(const uint32_t& motnum, const float_t& frame);
|
|
void ApplyBocRootColi(const float_t step);
|
|
void ApplyPhysics(const mat4& root_matrix, const vec3& hsc,
|
|
const float_t step, bool disable_ex_force, bool ring_coli, bool has_children_node);
|
|
void ApplyResetData(const mat4& mat);
|
|
void BeginCalc(const mat4& root_matrix, const vec3& hsc, bool has_children_node);
|
|
bool CheckPartsBits(const rob_osage_parts_bit& parts_bits);
|
|
void CollideNodes(const float_t step);
|
|
void CollideNodesTargetOsage(const mat4& root_matrix,
|
|
const vec3& hsc, const float_t step, bool collide_nodes);
|
|
void CtrlEnd(const vec3& hsc);
|
|
void CtrlOsagePlayData(const mat4& root_matrix,
|
|
const vec3& hsc, const std::vector<opd_blend_data>& opd_blend_data);
|
|
void EndCalc(const mat4& root_matrix, const vec3& hsc,
|
|
const float_t step, bool disable_ex_force);
|
|
const float_t* LoadOpdData(size_t node_index, const float_t* opd_data, size_t opd_count);
|
|
void LoadSkinParam(void* kv, const char* name,
|
|
skin_param_osage_root& skp_root, const object_info& obj_info, const bone_database* bone_data);
|
|
void RotateMat(mat4& mat, const vec3& hsc, bool init_rot = false);
|
|
void SetDisableCollision(const bool& value);
|
|
void SetMotionResetData(const uint32_t& motnum, const float_t& frame);
|
|
void SetNodesExternalForce(const vec3* ex_force, const float_t& gain);
|
|
void SetNodesForce(const float_t& force);
|
|
const float_t* SetOsagePlayDataInit(const float_t* opdi_data);
|
|
void SetOsageReset();
|
|
void SetRing(const osage_ring_data& ring);
|
|
void SetSkinParam(skin_param_file_data* skp);
|
|
void SetSkinParamOsageRoot(const skin_param_osage_root& skp_root);
|
|
void SetSkpOsgNodes(const std::vector<skin_param_osage_node>* skp_osg_nodes);
|
|
void SetWindDirection(const vec3* value);
|
|
|
|
void ctrl(const mat4& root_matrix, const vec3& hsc, const float_t step);
|
|
void dest();
|
|
void dest_boc();
|
|
RobJointNode* get_joint_node(size_t index);
|
|
void init(const obj_skin_ex_node_osage* osg_data, const obj_skin_osage_joint* joint,
|
|
RobNode* ex_node, const obj_skin* skin);
|
|
void make_osage_coli(const mat4* motmat);
|
|
void pos_init(const mat4& root_matrix, const vec3& hsc, bool dist_flag);
|
|
void pos_init_cont(const mat4& root_matrix, const vec3& hsc,
|
|
const float_t step, bool disable_ex_force);
|
|
void reset_ex_force();
|
|
void set_air_res(float_t air);
|
|
void set_angle(float_t angle_y, float_t angle_z);
|
|
void set_coli_r(float_t coli_r);
|
|
void set_ex_force(const vec3& f);
|
|
void set_force(float_t force, float_t gain);
|
|
void set_init_angle(float_t angle_y, float_t angle_z);
|
|
void set_limit_angle(float_t angle_y, float_t angle_z);
|
|
void set_move_cancel(const float_t& mv_ccl);
|
|
void set_rot_type(ROTTYPE rot_type);
|
|
};
|
|
|
|
struct ExOsageBlockFlag {
|
|
uint32_t alive : 1;
|
|
uint32_t pos_init : 1;
|
|
};
|
|
|
|
class ExOsageBlock : public ExNodeBlock {
|
|
public:
|
|
size_t block_idx;
|
|
RobOsage osage_work;
|
|
const mat4* motion_matrix;
|
|
ExOsageBlockFlag flag;
|
|
float_t init_coma_step;
|
|
|
|
ExOsageBlock();
|
|
virtual ~ExOsageBlock() override;
|
|
|
|
virtual void init() override;
|
|
virtual void CtrlBegin() override;
|
|
virtual void CtrlStep(int32_t stage, bool disable_ex_force) override;
|
|
virtual void ctrl() override;
|
|
virtual void CtrlOsagePlayData() override;
|
|
virtual void disp(const mat4& mat, render_context* rctx) override;
|
|
virtual void dest() override;
|
|
virtual void disp_debug() override;
|
|
virtual void pos_init() override;
|
|
virtual void pos_init_cont() override;
|
|
virtual void CtrlEnd() override;
|
|
|
|
void AddMotionResetData(const uint32_t& motnum, const float_t& frame);
|
|
const float_t* LoadOpdData(size_t node_index, const float_t* opd_data, size_t opd_count);
|
|
void SetDisableCollision(const bool& value);
|
|
void SetMotionResetData(const uint32_t& motnum, const float_t& frame);
|
|
const float_t* SetOsagePlayDataInit(const float_t* opdi_data);
|
|
void SetOsageReset();
|
|
void SetRing(const osage_ring_data& ring);
|
|
void SetSkinParam(skin_param_file_data* skp);
|
|
void SetWindDirection();
|
|
|
|
void make_joint_map(const obj_skin_ex_node_osage* root,
|
|
const obj_skin_osage_joint* joint, prj::vector_pair<uint32_t, RobJointNode*>& joint_map,
|
|
std::map<std::string, ExNodeBlock*>& node_name_map);
|
|
void reset_ex_force();
|
|
void set_data(const RobSkinDisp* skin_disp, const obj_skin_ex_node_osage* root,
|
|
const obj_skin_osage_joint* joint, const RobNode* mot_node,
|
|
RobNode* ex_node, const obj_skin* skin);
|
|
void set_ex_force(const vec3& f);
|
|
void set_move_cancel(const float_t& mv_ccl);
|
|
};
|
|
|
|
class ExConstraintBlock : public ExNodeBlock {
|
|
public:
|
|
obj_skin_ex_node_constraint_type cns_type;
|
|
const RobNode* src_node;
|
|
const RobNode* upvector_node;
|
|
const obj_skin_ex_node_constraint* data;
|
|
uint32_t dst_node_id;
|
|
uint32_t src_node_id;
|
|
|
|
ExConstraintBlock();
|
|
virtual ~ExConstraintBlock() override;
|
|
|
|
virtual void init() override;
|
|
virtual void CtrlBegin() override;
|
|
virtual void CtrlStep(int32_t stage, bool disable_ex_force) override;
|
|
virtual void ctrl() override;
|
|
virtual void CtrlOsagePlayData() override;
|
|
virtual void disp(const mat4& mat, render_context* rctx) override;
|
|
virtual void disp_debug() override;
|
|
virtual void pos_init() override;
|
|
virtual void pos_init_cont() override;
|
|
|
|
void Calc();
|
|
void CalcConstraintDirection(mat4 mat);
|
|
void CalcConstraintDistance(mat4 mat);
|
|
void CalcConstraintOrientation(mat4 mat);
|
|
void CalcConstraintPosition(mat4 mat);
|
|
void CalcMatrixHS();
|
|
|
|
void set_data(const RobSkinDisp* skin_disp, const obj_skin_ex_node_constraint* data,
|
|
const char* name, const bone_database* bone_data);
|
|
};
|
|
|
|
union Expr_value {
|
|
float_t constant;
|
|
const float* variable;
|
|
float_t(*func1)(float_t);
|
|
float_t(*func2)(float_t, float_t);
|
|
float_t(*func3)(float_t, float_t, float_t);
|
|
};
|
|
|
|
struct Expr_node {
|
|
Expr_type type;
|
|
Expr_value data;
|
|
Expr_node* operand[3];
|
|
|
|
float_t eval();
|
|
};
|
|
|
|
class ExExpressionBlock : public ExNodeBlock {
|
|
public:
|
|
float_t* result[9];
|
|
Expr_type result_type[9];
|
|
Expr_node* expr_node[9];
|
|
Expr_node expr_work[384];
|
|
const obj_skin_ex_node_expression* data;
|
|
bool field_3D20;
|
|
void(*hard_coded_func)(RobTransform*);
|
|
float_t timer;
|
|
bool step;
|
|
|
|
ExExpressionBlock();
|
|
virtual ~ExExpressionBlock() override;
|
|
|
|
virtual void init() override;
|
|
virtual void CtrlBegin() override;
|
|
virtual void CtrlStep(int32_t stage, bool disable_ex_force) override;
|
|
virtual void ctrl() override;
|
|
virtual void CtrlOsagePlayData() override;
|
|
virtual void disp(const mat4& mat, render_context* rctx) override;
|
|
virtual void disp_debug() override;
|
|
virtual void pos_init() override;
|
|
virtual void pos_init_cont() override;
|
|
|
|
void Calc();
|
|
void CalcMatrixHS();
|
|
|
|
void set_data(const RobSkinDisp* skin_disp, const obj_skin_ex_node_expression* data,
|
|
const char* node_name, object_info objuid, size_t index, const bone_database* bone_data);
|
|
};
|
|
|
|
class RobDisp;
|
|
|
|
class RobSkinDisp {
|
|
public:
|
|
size_t index;
|
|
const mat4* motion_matrix;
|
|
object_info obj_uid;
|
|
object_info obj_uid_sub;
|
|
std::vector<TexChange> texchg_vec;
|
|
RobSkinCol skn_col;
|
|
RobSkinOfs skn_ofs;
|
|
float_t alpha;
|
|
mdl::ObjFlags obj_flags;
|
|
bool can_disp;
|
|
uint32_t bone_kind;
|
|
mat4* mat;
|
|
int32_t init_cnt;
|
|
const RobNode* motion_node;
|
|
std::vector<ExNodeBlock*> ex_node_block;
|
|
std::vector<RobNode> ex_node;
|
|
std::vector<mat4> matrix;
|
|
std::vector<mat4> no_scale_matrix;
|
|
prj::vector_pair<const char*, uint32_t> node_name_map;
|
|
int64_t field_138;
|
|
std::vector<ExNullBlock*> null_blk;
|
|
std::vector<ExOsageBlock*> osage_blk;
|
|
std::vector<ExConstraintBlock*> constraint;
|
|
std::vector<ExExpressionBlock*> expression;
|
|
std::vector<ExClothBlock*> cloth;
|
|
bool osage_depends_on_others;
|
|
size_t osage_nodes_count;
|
|
bool use_opd;
|
|
const obj_skin_ex_data* skin_ex_data;
|
|
const obj_skin* skin;
|
|
const RobDisp* rob_disp;
|
|
|
|
RobSkinDisp();
|
|
~RobSkinDisp();
|
|
|
|
void add_motion_reset_data(const uint32_t& motnum, const float_t& frame, int32_t init_cnt);
|
|
void check_no_opd(std::vector<opd_blend_data>& opd_blend_data);
|
|
void dest();
|
|
void dest_ex_node();
|
|
void disp(const mat4& mat, render_context* rctx);
|
|
const RobNode* get_node(int32_t index) const;
|
|
const RobNode* get_node(const char* name, const bone_database* bone_data) const;
|
|
int32_t get_node_index(const char* name, const bone_database* bone_data) const;
|
|
const mat4* get_ex_data_bone_node_mat(const char* name);
|
|
RobJointNode* get_normal_ref_osage_node(const std::string& str, size_t* index);
|
|
void init(size_t idx = 0xDEADBEEF);
|
|
void pos_reset(int32_t init_cnt);
|
|
void reset_ex_force();
|
|
void reset_nodes_ex_force(rob_osage_parts_bit parts_bits);
|
|
void set(object_info objuid, const RobNode* mot_node,
|
|
bool osage_reset, const bone_database* bone_data, void* data, const object_database* obj_db);
|
|
void set_alpha_obj_flags(float_t alpha, int32_t flags);
|
|
bool set_boc(const skin_param_osage_root& skp_root, ExOsageBlock* osg);
|
|
void set_col_color(const vec3& blend, const vec3& ofs);
|
|
void set_col_specular(const vec3& blend, const vec3& ofs);
|
|
void set_col_type(int32_t type);
|
|
void set_collision_target_osage(const skin_param_osage_root& skp_root, skin_param* skp);
|
|
void set_disable_collision(rob_osage_parts_bit parts_bits, bool disable);
|
|
void set_ex_node(obj_skin_ex_data* ex_data);
|
|
void set_ex_node_block(obj_skin_ex_data* ex_data,
|
|
const bone_database* bone_data, void* data, const object_database* obj_db);
|
|
void set_motion_node(const RobNode* mot_node, const bone_database* bone_data);
|
|
void set_motion_reset_data(const uint32_t& motnum, const float_t& frame);
|
|
void set_motion_skin_param(int8_t rob_id, uint32_t motnum, int32_t frame);
|
|
void set_ofs(const vec3& pos, const vec3& rot, const vec3& scale);
|
|
void set_osage_play_data_init(const float_t* opdi_data);
|
|
void set_osage_reset();
|
|
void set_osage_move_cancel(const float_t& mv_ccl);
|
|
void set_tex_change(size_t num, const TexChange* texchg);
|
|
void skp_load(void* kv, const bone_database* bone_data);
|
|
void skp_load(const skin_param_osage_root& skp_root, std::vector<skin_param_osage_node>& vec,
|
|
skin_param_file_data* skp_file_data, const bone_database* bone_data);
|
|
bool skp_load_boc(const skin_param_osage_root& skp_root, std::vector<RobJointNodeData>* node_data);
|
|
void skp_load_file(void* data, const bone_database* bone_data, const object_database* obj_db);
|
|
bool skp_load_normal_ref(const skin_param_osage_root& skp_root, std::vector<RobJointNodeData>* node_data);
|
|
};
|
|
|
|
class RobDisp {
|
|
public:
|
|
const RobNode* motion_node;
|
|
const mat4* motion_matrix;
|
|
RobSkinDisp* skin_disp;
|
|
int32_t parts_attr[RPK_MAX];
|
|
bool one_skin;
|
|
int32_t disp_begin;
|
|
int32_t disp_max;
|
|
uint32_t shadow_flag;
|
|
SHADOW_GROUP shadow_group;
|
|
vec3 position;
|
|
std::vector<TexChange> hyoutan_texchg_list;
|
|
object_info hyoutan_obj;
|
|
int32_t hyoutan_rpk;
|
|
bool freeze_flag;
|
|
HyoutanStat hyoutan_status;
|
|
vec4 skin_color;
|
|
float_t wet_cloth;
|
|
float_t wind_strength;
|
|
bool chara_color;
|
|
bool npr_flag;
|
|
mat4 mat;
|
|
mat4 parts_matrix[RPK_MAX];
|
|
std::vector<void*> shadow_obj_list;
|
|
std::vector<void*> shadow_vb_list;
|
|
obj_skin* shadow_skin;
|
|
float_t osage_step;
|
|
bool use_opd;
|
|
std::vector<opd_blend_data> opd_blend_data;
|
|
bool parts_short;
|
|
bool parts_append;
|
|
bool parts_white_one_l;
|
|
|
|
RobDisp();
|
|
~RobDisp();
|
|
|
|
void add_motion_reset_data(const uint32_t& motnum, const float_t& frame, int32_t init_cnt);
|
|
void disp(int32_t rob_id, render_context* rctx);
|
|
object_info get_objid(ROB_PARTS_KIND rpk) const;
|
|
RobSkinDisp* get_skin_work(ROB_PARTS_KIND rpk); // Added
|
|
const RobSkinDisp* get_skin_work(ROB_PARTS_KIND rpk) const;
|
|
const mat4* get_ex_data_bone_node_mat(ROB_PARTS_KIND rpk, const char* name);
|
|
ROB_PARTS_KIND get_free_item(ROB_PARTS_KIND rpk) const;
|
|
void dest();
|
|
void init(const RobNode* rob_node);
|
|
void pos_reset(uint8_t init_cnt);
|
|
void reset_ex_force();
|
|
void reset_nodes_ex_force(rob_osage_parts parts);
|
|
void set_alpha_obj_flags(float_t alpha, mdl::ObjFlags flags);
|
|
void set_base(ROB_PARTS_KIND rpk, object_info obj_uid, bool osage_reset,
|
|
const bone_database* bone_data, void* data, const object_database* obj_db);
|
|
void set_body(object_info obj_uid,
|
|
const bone_database* bone_data, void* data, const object_database* obj_db);
|
|
void set_col_color(ROB_PARTS_KIND rpk, const vec3& blend, const vec3& ofs);
|
|
void set_col_specular(ROB_PARTS_KIND rpk, const vec3& blend, const vec3& ofs);
|
|
void set_col_type(ROB_PARTS_KIND rpk, int32_t type);
|
|
void set_disable_collision(rob_osage_parts parts, bool disable);
|
|
void set_disp_flag(ROB_PARTS_KIND rpk, bool flag);
|
|
void set_hyoutan(ROB_PARTS_KIND rpk, object_info obj_uid, object_info obj_uid_sub,
|
|
const bone_database* bone_data, void* data, const object_database* obj_db);
|
|
void set_hyoutan_tex_change(const TexChange* texchg, int32_t tex_num);
|
|
void set_item(ROB_PARTS_KIND rpk, object_info obj_info,
|
|
const bone_database* bone_data, void* data, const object_database* obj_db);
|
|
void set_merge(ROB_PARTS_KIND rpk, bool flag);
|
|
void set_motion_node(const RobNode* mot_node, const bone_database* bone_data);
|
|
void set_motion_reset_data(const uint32_t& motnum, const float_t& frame);
|
|
void set_motion_skin_param(int8_t chara_id, uint32_t motnum, int32_t frame);
|
|
void set_ofs(ROB_PARTS_KIND rpk, const vec3& trans, const vec3& rot, const vec3& scale);
|
|
void set_one_skin(bool value);
|
|
void set_opd_blend_data(std::list<motion_blend_mot*>* a2);
|
|
void set_osage_play_data_init(ROB_PARTS_KIND rpk, const float_t* opdi_data);
|
|
void set_osage_reset();
|
|
void set_osage_step(float_t value);
|
|
void set_osage_move_cancel(uint8_t id, const float_t& mv_ccl);
|
|
void set_reflect(ROB_PARTS_KIND rpk, bool flag);
|
|
void set_shadow(ROB_PARTS_KIND rpk, bool flag);
|
|
void set_shadow_group(int32_t group);
|
|
void set_skin(object_info obj_uid, ROB_PARTS_KIND kind, bool osage_reset,
|
|
const bone_database* bone_data, void* data, const object_database* obj_db);
|
|
void set_tex_change(ROB_PARTS_KIND rpk, const TexChange* texchg, int32_t tex_num);
|
|
void skp_load(ROB_PARTS_KIND rpk, const skin_param_osage_root& skp_root, std::vector<skin_param_osage_node>& vec,
|
|
skin_param_file_data* skp_file_data, const bone_database* bone_data);
|
|
|
|
static bool check_one_skin(int32_t costume);
|
|
};
|
|
|
|
union RobFlag {
|
|
uint32_t u32;
|
|
struct {
|
|
int8_t disp : 1;
|
|
int8_t fix_hara : 1;
|
|
int8_t ringout : 1;
|
|
int8_t bound_wall : 1;
|
|
int8_t compel : 1;
|
|
int8_t pl_syagami : 1;
|
|
int8_t land : 1;
|
|
int8_t old_fix_hara : 1;
|
|
int8_t invincible : 1;
|
|
int8_t yokerare : 1;
|
|
int8_t yokerare_mot : 1;
|
|
int8_t wall_hit_ok : 1;
|
|
int8_t own_down_pose : 1;
|
|
int8_t time_up : 1;
|
|
int8_t kabe_yoroke : 1;
|
|
int8_t jump_rise : 1;
|
|
int8_t round_loser : 1;
|
|
int8_t wall_fix_ok : 1;
|
|
int8_t wall_fix_ng : 1;
|
|
int8_t not_normal : 1;
|
|
int8_t old_not_normal : 1;
|
|
int8_t mk_change_off : 1;
|
|
int8_t wall_moved_mot : 1;
|
|
int8_t dmy_yokerare : 1;
|
|
int8_t yoketa : 1;
|
|
int8_t yokerare_mot2 : 1;
|
|
int8_t mk_yoke_off : 1;
|
|
int8_t set_damage : 1;
|
|
int8_t rf_28 : 1;
|
|
int8_t rf_29 : 1;
|
|
int8_t rf_30 : 1;
|
|
int8_t zero_disp : 1;
|
|
} bit;
|
|
};
|
|
|
|
struct RobJump {
|
|
float_t frame;
|
|
float_t zvec;
|
|
float_t next_land_frame;
|
|
float_t land_time;
|
|
|
|
RobJump();
|
|
|
|
void init();
|
|
};
|
|
|
|
union RobAttackResult {
|
|
uint32_t u32;
|
|
struct {
|
|
int8_t hit : 1;
|
|
int8_t down : 1;
|
|
int8_t counter : 1;
|
|
int8_t l_counter : 1;
|
|
int8_t m_counter : 1;
|
|
int8_t mf_5 : 1;
|
|
int8_t air : 1;
|
|
int8_t air_counter : 1;
|
|
int8_t finish : 1;
|
|
int8_t finish_air : 1;
|
|
int8_t guard : 1;
|
|
int8_t guard_hazushi : 1;
|
|
int8_t guard_half : 1;
|
|
int8_t yoroke : 1;
|
|
int8_t down_attack : 1;
|
|
int8_t land_attack : 1;
|
|
int8_t mf_16 : 1;
|
|
int8_t hajiki : 1;
|
|
int8_t follow_hit : 1;
|
|
int8_t normal_hit : 1;
|
|
int8_t ura_hit : 1;
|
|
int8_t side_counter : 1;
|
|
int8_t side_l_counter : 1;
|
|
int8_t side_m_counter : 1;
|
|
int8_t yoroke_l_counter : 1;
|
|
int8_t side_hit : 1;
|
|
int8_t yoroke_counter : 1;
|
|
int8_t yoroke_follow : 1;
|
|
int8_t stun_begin : 1;
|
|
int8_t stun_hit : 1;
|
|
int8_t syagami_hit : 1;
|
|
int8_t bd_counter : 1;
|
|
} bit;
|
|
};
|
|
|
|
union RobAttackFlag {
|
|
uint32_t u32;
|
|
struct {
|
|
int8_t hit_ng : 1;
|
|
int8_t both_hit : 1;
|
|
int8_t hit_yokerare : 1;
|
|
int8_t old_hit_yokerare : 1;
|
|
} bit;
|
|
};
|
|
|
|
struct RobAttack {
|
|
int16_t hit_timer;
|
|
RobAttackFlag flag;
|
|
RobAttackResult ar_flag;
|
|
RobAttackResult ar_mask;
|
|
RobAttackResult old_ar_flag;
|
|
RobAttackResult old_ar_mask;
|
|
RobAttackResult ar_flag_c;
|
|
RobAttackResult ar_mask_c;
|
|
bool first_hit_result;
|
|
RobAttackResult cmb_first_ar_mask;
|
|
int32_t cmb_node_cnt;
|
|
bool next_attack_wait;
|
|
int8_t sideturn_stop_counter;
|
|
|
|
RobAttack();
|
|
|
|
void init();
|
|
};
|
|
|
|
struct ActParam {
|
|
uint32_t flag;
|
|
uint32_t type;
|
|
|
|
ActParam();
|
|
|
|
void init();
|
|
};
|
|
|
|
struct RobActType {
|
|
ACT_NAME name;
|
|
ActParam act_param;
|
|
uint32_t motnum;
|
|
bool mirror;
|
|
|
|
RobActType();
|
|
|
|
void setup();
|
|
};
|
|
|
|
struct RobGuard {
|
|
GuardKind guard_kind;
|
|
prj::BitArray<5> guard_input;
|
|
|
|
RobGuard();
|
|
|
|
void init();
|
|
};
|
|
|
|
struct RobYarare {
|
|
int16_t get_damage;
|
|
float_t get_power;
|
|
RobAngle yarare_yang;
|
|
RobAttackResult hit_ar_mask;
|
|
vec3 efc_spd;
|
|
vec3 get_spd;
|
|
vec3 ringout_spd;
|
|
int16_t combo_count;
|
|
int16_t combo_damage;
|
|
int16_t down_combo_count;
|
|
int16_t down_combo_damage;
|
|
int16_t down_combo_count2;
|
|
int16_t down_combo_damage2;
|
|
int16_t down_combo_count3;
|
|
int16_t down_combo_count4;
|
|
int16_t nage_combo_count;
|
|
int16_t nage_combo_damage;
|
|
int16_t air_combo_count;
|
|
int16_t air_combo_damage;
|
|
uint32_t combo_flag;
|
|
bool combo_xang_offs;
|
|
std::list<void*> field_58;
|
|
int16_t max_nowall_combo_count;
|
|
int16_t max_nowall_combo_damage;
|
|
int16_t max_wall_combo_count;
|
|
int16_t max_wall_combo_damage;
|
|
int16_t max_current_combo_count;
|
|
int16_t max_current_combo_damage;
|
|
int16_t mot_get_damage;
|
|
int16_t real_get_damage;
|
|
int16_t orig_get_damage;
|
|
float_t gs_resist_timer;
|
|
float_t gs_resist_step;
|
|
|
|
RobYarare();
|
|
~RobYarare();
|
|
|
|
void init();
|
|
};
|
|
|
|
struct RobNage {
|
|
float_t disable_timer;
|
|
int8_t nagerare_cnt;
|
|
int16_t kaeshi_damage;
|
|
rob_chara* enemy;
|
|
bool right_side;
|
|
RobAngle tgt_yang;
|
|
vec3 tgt_pos;
|
|
float_t tgt_timer;
|
|
|
|
RobNage();
|
|
|
|
void init();
|
|
};
|
|
|
|
struct RobRise {
|
|
uint32_t motnum;
|
|
float_t hurry;
|
|
float_t down_timer;
|
|
|
|
RobRise();
|
|
|
|
void init();
|
|
};
|
|
|
|
union RobUkemiKind {
|
|
uint32_t u32;
|
|
struct {
|
|
int8_t ukemi_ok : 1;
|
|
int8_t ukemi_wait : 1;
|
|
int8_t ukemi_wait_just : 1;
|
|
int8_t ukemi_dir : 1;
|
|
int8_t ukemi_now : 1;
|
|
int8_t ukemi_air : 1;
|
|
int8_t ukemi_select : 1;
|
|
int8_t ukemi_land : 1;
|
|
int8_t ukemi_delay : 1;
|
|
int8_t ukemi_dir2 : 1;
|
|
} bit;
|
|
};
|
|
|
|
struct RobUkemi{
|
|
RobUkemiKind ukemi_kind;
|
|
float_t land_elapsed;
|
|
|
|
RobUkemi();
|
|
|
|
void init();
|
|
};
|
|
|
|
struct RobOffensiveMove {
|
|
float_t offmv_timer;
|
|
bool revise_grd_emy_no;
|
|
vec3 target_pos;
|
|
union {
|
|
uint32_t u32;
|
|
struct {
|
|
int8_t en_from_right : 1;
|
|
} bit;
|
|
} target_flag;
|
|
|
|
RobOffensiveMove();
|
|
|
|
void init();
|
|
};
|
|
|
|
struct RobSideTurn {
|
|
float_t side_stop_counter;
|
|
float_t side_guard_disable;
|
|
float_t side_turn_timer;
|
|
bool right_side_turn;
|
|
|
|
RobSideTurn();
|
|
|
|
void init();
|
|
};
|
|
|
|
struct RobAction {
|
|
int8_t step;
|
|
RobActType action;
|
|
RobActType old_action;
|
|
RobActType command;
|
|
RobActType bak_command;
|
|
RobActType sys_command;
|
|
RobJump jump;
|
|
RobAttack attack;
|
|
RobGuard guard;
|
|
int32_t field_B0;
|
|
bool field_B4;
|
|
RobYarare yarare;
|
|
RobNage nage;
|
|
RobRise rise;
|
|
RobUkemi ukemi;
|
|
RobOffensiveMove off_move;
|
|
RobSideTurn side_turn;
|
|
uint8_t kamae_type;
|
|
const RobKamae* kamae_data;
|
|
float_t down_counter;
|
|
float_t down_counter_ex;
|
|
float_t old_down_counter;
|
|
uint32_t mot_backup;
|
|
prj::BitArray<36> kaeshi_flag;
|
|
int16_t gacha_count;
|
|
bool gacha;
|
|
int32_t drank_count;
|
|
int32_t drank_add_req;
|
|
float_t wall_yoroke_timer;
|
|
|
|
RobAction();
|
|
~RobAction();
|
|
|
|
void init();
|
|
};
|
|
|
|
class SubActParam {
|
|
public:
|
|
SubActParamType type;
|
|
|
|
SubActParam(SubActParamType type);
|
|
virtual ~SubActParam();
|
|
};
|
|
|
|
class SubActParamAngry : public SubActParam {
|
|
public:
|
|
SubActParamAngry();
|
|
virtual ~SubActParamAngry();
|
|
};
|
|
|
|
class SubActParamCountNum : public SubActParam {
|
|
public:
|
|
int32_t field_10;
|
|
|
|
SubActParamCountNum();
|
|
virtual ~SubActParamCountNum();
|
|
};
|
|
|
|
class SubActParamCry : public SubActParam {
|
|
public:
|
|
SubActParamCry();
|
|
virtual ~SubActParamCry();
|
|
};
|
|
|
|
class SubActParamEmbarrassed : public SubActParam {
|
|
public:
|
|
SubActParamEmbarrassed();
|
|
virtual ~SubActParamEmbarrassed();
|
|
};
|
|
|
|
class SubActParamLaugh : public SubActParam {
|
|
public:
|
|
SubActParamLaugh();
|
|
virtual ~SubActParamLaugh();
|
|
};
|
|
|
|
class SubActParamShakeHand : public SubActParam {
|
|
public:
|
|
int32_t field_10;
|
|
|
|
SubActParamShakeHand();
|
|
virtual ~SubActParamShakeHand();
|
|
};
|
|
|
|
class SubActExec {
|
|
public:
|
|
SubActExecType type;
|
|
int32_t field_C;
|
|
|
|
SubActExec(SubActExecType type);
|
|
virtual ~SubActExec();
|
|
|
|
virtual void init() = 0;
|
|
virtual void set(const SubActParam* param) = 0;
|
|
virtual void Field_18(rob_chara* impl) = 0;
|
|
virtual void Field_20(rob_chara* impl) = 0;
|
|
};
|
|
|
|
class SubActExecAngry : public SubActExec {
|
|
public:
|
|
SubActExecAngry();
|
|
virtual ~SubActExecAngry() override;
|
|
|
|
virtual void init() override;
|
|
virtual void set(const SubActParam* param) override;
|
|
virtual void Field_18(rob_chara* impl) override;
|
|
virtual void Field_20(rob_chara* impl) override;
|
|
};
|
|
|
|
class SubActExecCountNum : public SubActExec {
|
|
public:
|
|
int32_t field_10;
|
|
int32_t field_14;
|
|
int32_t field_18;
|
|
|
|
SubActExecCountNum();
|
|
virtual ~SubActExecCountNum() override;
|
|
|
|
virtual void init() override;
|
|
virtual void set(const SubActParam* param) override;
|
|
virtual void Field_18(rob_chara* impl) override;
|
|
virtual void Field_20(rob_chara* impl) override;
|
|
};
|
|
|
|
class SubActExecCry : public SubActExec {
|
|
public:
|
|
SubActExecCry();
|
|
virtual ~SubActExecCry() override;
|
|
|
|
virtual void init() override;
|
|
virtual void set(const SubActParam* param) override;
|
|
virtual void Field_18(rob_chara* impl) override;
|
|
virtual void Field_20(rob_chara* impl) override;
|
|
};
|
|
|
|
class SubActExecEmbarrassed : public SubActExec {
|
|
public:
|
|
int8_t field_10;
|
|
SubActExecEmbarrassed();
|
|
virtual ~SubActExecEmbarrassed() override;
|
|
|
|
virtual void init() override;
|
|
virtual void set(const SubActParam* param) override;
|
|
virtual void Field_18(rob_chara* impl) override;
|
|
virtual void Field_20(rob_chara* impl) override;
|
|
};
|
|
|
|
class SubActExecLaugh : public SubActExec {
|
|
public:
|
|
SubActExecLaugh();
|
|
virtual ~SubActExecLaugh() override;
|
|
|
|
virtual void init() override;
|
|
virtual void set(const SubActParam* param) override;
|
|
virtual void Field_18(rob_chara* impl) override;
|
|
virtual void Field_20(rob_chara* impl) override;
|
|
};
|
|
|
|
class SubActExecShakeHand : public SubActExec {
|
|
public:
|
|
int32_t field_10;
|
|
int32_t field_14;
|
|
int8_t field_18;
|
|
|
|
SubActExecShakeHand();
|
|
virtual ~SubActExecShakeHand() override;
|
|
|
|
virtual void init() override;
|
|
virtual void set(const SubActParam* param) override;
|
|
virtual void Field_18(rob_chara* impl) override;
|
|
virtual void Field_20(rob_chara* impl) override;
|
|
};
|
|
|
|
struct RobSubAction {
|
|
SubActExec* field_8;
|
|
SubActExec* field_10;
|
|
SubActParam* param;
|
|
SubActExec* field_20;
|
|
SubActExecCry cry;
|
|
SubActExecShakeHand shake_hand;
|
|
SubActExecEmbarrassed embarrassed;
|
|
SubActExecAngry angry;
|
|
SubActExecLaugh laugh;
|
|
SubActExecCountNum count_num;
|
|
|
|
RobSubAction();
|
|
virtual ~RobSubAction();
|
|
|
|
void dest();
|
|
void init();
|
|
void set(SubActParam* value);
|
|
};
|
|
|
|
struct RobMotionFrame {
|
|
float_t f;
|
|
float_t old_f;
|
|
float_t req_f;
|
|
};
|
|
|
|
struct RobMotionStep {
|
|
float_t f;
|
|
float_t old_f;
|
|
float_t req_f;
|
|
};
|
|
|
|
union RobMotFlag {
|
|
uint32_t u32;
|
|
struct {
|
|
int8_t mot_end : 1;
|
|
int8_t next_null : 1;
|
|
int8_t next_mirror : 1;
|
|
int8_t mirror : 1;
|
|
int8_t change : 1;
|
|
int8_t frame_change : 1;
|
|
int8_t frame_ctrl : 1;
|
|
int8_t ext_frame_req : 1;
|
|
int8_t suspend : 1;
|
|
int8_t resume : 1;
|
|
int8_t frame_stop : 1;
|
|
int8_t mf_11 : 1;
|
|
int8_t mf_12 : 1;
|
|
int8_t mf_13 : 1;
|
|
int8_t mf_14 : 1;
|
|
int8_t mf_15 : 1;
|
|
int8_t mf_16 : 1;
|
|
int8_t mf_17 : 1;
|
|
int8_t mf_18 : 1;
|
|
int8_t mf_19 : 1;
|
|
int8_t mf_20 : 1;
|
|
int8_t mf_21 : 1;
|
|
int8_t mf_22 : 1;
|
|
int8_t mf_23 : 1;
|
|
int8_t mf_24 : 1;
|
|
int8_t mf_25 : 1;
|
|
int8_t mf_26 : 1;
|
|
int8_t mf_27 : 1;
|
|
int8_t mf_28 : 1;
|
|
int8_t mf_29 : 1;
|
|
int8_t mf_30 : 1;
|
|
int8_t mf_31 : 1;
|
|
} bit;
|
|
};
|
|
|
|
class RobPartialMotion {
|
|
public:
|
|
struct Data {
|
|
uint32_t motnum;
|
|
MOTTABLE_TYPE mottbl_type;
|
|
rob_partial_motion_playback_state playback_state;
|
|
float_t frame;
|
|
float_t step;
|
|
float_t frame_max;
|
|
float_t blend_duration;
|
|
float_t blend_step;
|
|
float_t blend_offset;
|
|
float_t play_duration;
|
|
const RobMotionFrame* frame_ptr;
|
|
const RobMotionStep* step_ptr;
|
|
rob_partial_motion_loop_state loop_state;
|
|
|
|
inline Data() : motnum(-1), mottbl_type(), playback_state(ROB_PARTIAL_MOTION_PLAYBACK_NONE), frame(),
|
|
step(), frame_max(), blend_duration(), blend_step(), blend_offset(), play_duration(),
|
|
frame_ptr(), step_ptr(), loop_state(ROB_PARTIAL_MOTION_LOOP_NONE) {
|
|
Reset();
|
|
}
|
|
|
|
inline ~Data() {
|
|
|
|
}
|
|
|
|
inline void Reset() {
|
|
motnum = -1;
|
|
mottbl_type = MTP_FACE_NULL;
|
|
playback_state = ROB_PARTIAL_MOTION_PLAYBACK_NONE;
|
|
frame = 0.0f;
|
|
step = 1.0f;
|
|
frame_max = 0.0f;
|
|
blend_duration = 0.0f;
|
|
blend_step = 1.0f;
|
|
blend_offset = 1.0f;
|
|
play_duration = 0.0f;
|
|
frame_ptr = 0;
|
|
step_ptr = 0;
|
|
loop_state = ROB_PARTIAL_MOTION_LOOP_NONE;
|
|
}
|
|
} data;
|
|
|
|
RobPartialMotion();
|
|
virtual ~RobPartialMotion();
|
|
|
|
virtual void Reset() = 0;
|
|
|
|
bool CheckEnded();
|
|
bool CheckPlaybackStateBackward();
|
|
bool CheckPlaybackStateCharaMotion();
|
|
bool CheckPlaybackStateDuration();
|
|
bool CheckPlaybackStateForward();
|
|
bool CheckPlaybackStateStop();
|
|
bool CheckPlaybackStateValid();
|
|
void GetFrameStep();
|
|
void Step();
|
|
};
|
|
|
|
class RobFaceMotion : public RobPartialMotion {
|
|
public:
|
|
RobFaceMotion();
|
|
virtual ~RobFaceMotion() override;
|
|
|
|
virtual void Reset() override;
|
|
};
|
|
|
|
class RobHandMotion : public RobPartialMotion {
|
|
public:
|
|
RobHandMotion();
|
|
virtual ~RobHandMotion() override;
|
|
|
|
virtual void Reset() override;
|
|
};
|
|
|
|
class RobMouthMotion : public RobPartialMotion {
|
|
public:
|
|
RobMouthMotion();
|
|
virtual ~RobMouthMotion() override;
|
|
|
|
virtual void Reset() override;
|
|
};
|
|
|
|
class RobEyesMotion : public RobPartialMotion {
|
|
public:
|
|
RobEyesMotion();
|
|
virtual ~RobEyesMotion() override;
|
|
|
|
virtual void Reset() override;
|
|
};
|
|
|
|
class RobEyelidMotion : public RobPartialMotion {
|
|
public:
|
|
RobEyelidMotion();
|
|
virtual ~RobEyelidMotion() override;
|
|
|
|
virtual void Reset() override;
|
|
};
|
|
|
|
template <typename T>
|
|
struct struc_405 {
|
|
RobFaceMotion face;
|
|
RobHandMotion hand_l;
|
|
RobHandMotion hand_r;
|
|
RobMouthMotion mouth;
|
|
RobEyesMotion eyes;
|
|
RobEyelidMotion eyelid;
|
|
object_info head_object;
|
|
object_info hand_l_object;
|
|
object_info hand_r_object;
|
|
object_info face_object;
|
|
T field_1C0;
|
|
float_t time;
|
|
|
|
struc_405() : field_1C0(), time() {
|
|
|
|
}
|
|
|
|
~struc_405() {
|
|
|
|
}
|
|
|
|
void Reset() {
|
|
face.Reset();
|
|
hand_l.Reset();
|
|
hand_r.Reset();
|
|
mouth.Reset();
|
|
eyes.Reset();
|
|
eyelid.Reset();
|
|
head_object = object_info();
|
|
hand_l_object = object_info();
|
|
hand_r_object = object_info();
|
|
face_object = object_info();
|
|
field_1C0 = {};
|
|
time = 0.0f;
|
|
}
|
|
};
|
|
|
|
struct rob_chara_data_adjust {
|
|
bool enable;
|
|
float_t frame;
|
|
float_t transition_frame;
|
|
vec3 curr_ex_force;
|
|
float_t curr_force;
|
|
float_t curr_strength;
|
|
uint32_t motnum;
|
|
float_t set_frame;
|
|
float_t transition_duration;
|
|
int32_t type;
|
|
int32_t cycle_type;
|
|
bool ignore_gravity;
|
|
vec3 ex_force;
|
|
vec3 ex_force_cycle_strength;
|
|
vec3 ex_force_cycle;
|
|
float_t cycle;
|
|
float_t phase;
|
|
float_t force;
|
|
float_t strength;
|
|
float_t strength_transition;
|
|
|
|
rob_chara_data_adjust();
|
|
|
|
void reset();
|
|
};
|
|
|
|
struct rob_chara_data_hand_adjust {
|
|
bool enable;
|
|
int16_t scale_select;
|
|
rob_chara_data_hand_adjust_type type;
|
|
float_t current_scale;
|
|
float_t scale;
|
|
float_t duration;
|
|
float_t current_time;
|
|
float_t rotation_blend;
|
|
float_t scale_blend;
|
|
bool enable_scale;
|
|
bool disable_x;
|
|
bool disable_y;
|
|
bool disable_z;
|
|
vec3 offset;
|
|
vec3 target;
|
|
float_t arm_length;
|
|
int32_t init_cnt;
|
|
|
|
rob_chara_data_hand_adjust();
|
|
|
|
void reset();
|
|
};
|
|
|
|
struct rob_chara_data_arm_adjust {
|
|
bool enable;
|
|
float_t value;
|
|
float_t prev_value;
|
|
float_t next_value;
|
|
float_t duration;
|
|
float_t frame;
|
|
|
|
void reset();
|
|
};
|
|
|
|
struct RobMotion {
|
|
uint32_t num;
|
|
uint32_t old_num;
|
|
RobMotionFrame frame;
|
|
RobMotionStep step;
|
|
float_t osage_step;
|
|
MOT_BSTEP basic_step;
|
|
RobMotFlag flag;
|
|
int32_t repeat_count;
|
|
prj::BitArray<23> shift_req;
|
|
int16_t same_mot_idx;
|
|
int16_t same_count;
|
|
int32_t field_38[32];
|
|
int32_t field_B8[32];
|
|
float_t mot_adjust_scale;
|
|
float_t mot_xz_adjust_scale;
|
|
vec3 mot_adjust_base_pos;
|
|
uint32_t face_motnum;
|
|
struc_405<int32_t> field_150;
|
|
RobHandMotion hand_l;
|
|
RobHandMotion hand_r;
|
|
object_info hand_l_object;
|
|
object_info hand_r_object;
|
|
struc_405<float_t> field_3B0;
|
|
rob_chara_data_adjust parts_adjust[ROB_OSAGE_PARTS_MAX];
|
|
rob_chara_data_adjust parts_adjust_prev[ROB_OSAGE_PARTS_MAX];
|
|
rob_chara_data_adjust adjust_global;
|
|
rob_chara_data_adjust adjust_global_prev;
|
|
rob_chara_data_hand_adjust hand_adjust[2];
|
|
rob_chara_data_hand_adjust hand_adjust_prev[2];
|
|
rob_chara_data_arm_adjust arm_adjust[2];
|
|
|
|
RobMotion();
|
|
~RobMotion();
|
|
|
|
void reset();
|
|
};
|
|
|
|
struct CtrlDMot {
|
|
CtrlDMot();
|
|
|
|
uint32_t mot_id;
|
|
uint32_t mot_flag;
|
|
};
|
|
|
|
class RobMotId : public CtrlDMot {
|
|
public:
|
|
RobMotId();
|
|
|
|
void clear();
|
|
void set(uint32_t in_mot_id, uint32_t in_mot_flag);
|
|
};
|
|
|
|
struct RobMotDAs {
|
|
float_t count;
|
|
float_t follow2;
|
|
float_t nagerenai;
|
|
|
|
RobMotDAs();
|
|
|
|
void clear();
|
|
};
|
|
|
|
struct MhdKind {
|
|
uint32_t mhk_kind[4];
|
|
};
|
|
|
|
struct MhdList {
|
|
int32_t type;
|
|
void* data;
|
|
};
|
|
|
|
struct MhpList {
|
|
int32_t type;
|
|
int32_t frame;
|
|
void* data;
|
|
};
|
|
|
|
struct MhcList {
|
|
void* data;
|
|
};
|
|
|
|
struct MhdData {
|
|
MhdKind mot_kind;
|
|
uint16_t start_style;
|
|
uint16_t end_style;
|
|
MhdList* mh_list;
|
|
MhpList* pp_list;
|
|
MhcList* cm_list;
|
|
|
|
MhdData();
|
|
};
|
|
|
|
struct MhdFileHeader {
|
|
uint32_t file_id;
|
|
uint32_t min_mot_id;
|
|
uint32_t max_mot_id;
|
|
MhdData** data_list;
|
|
|
|
MhdFileHeader();
|
|
};
|
|
|
|
struct ES_DATA {
|
|
int16_t est_land_xang;
|
|
int16_t est_down_xang;
|
|
int16_t est_down_air_xang;
|
|
int16_t est_counter_down_xang;
|
|
int16_t est_yoroke_down_xang;
|
|
float_t est_power;
|
|
float_t est_guard_power;
|
|
float_t est_land_power;
|
|
float_t est_down_power;
|
|
float_t est_down_air_power;
|
|
float_t est_counter_down_power;
|
|
float_t est_yoroke_down_power;
|
|
float_t est_finish_mul_yspd;
|
|
float_t est_finish_mul_xzspd;
|
|
};
|
|
|
|
struct MhdAttackSound {
|
|
int8_t mhats_efc_sound_type;
|
|
int32_t mhats_efc_sound_code;
|
|
int16_t mhats_efc_sound_cond;
|
|
};
|
|
|
|
struct MhdNagenuke {
|
|
int16_t mhnu_type;
|
|
uint32_t mhnu_lever_dir;
|
|
};
|
|
|
|
struct RobTarget {
|
|
TargetType target_flag;
|
|
float_t target_end;
|
|
vec3 target_pos;
|
|
|
|
RobTarget();
|
|
};
|
|
|
|
struct MotLeafCtrl {
|
|
int16_t mode;
|
|
float_t start_frame;
|
|
float_t end_frame;
|
|
int16_t target_id;
|
|
int16_t limit;
|
|
vec3 ofs;
|
|
vec3 min;
|
|
vec3 max;
|
|
vec3 field_34;
|
|
vec3 field_40;
|
|
|
|
MotLeafCtrl();
|
|
MotLeafCtrl(int16_t mode, float_t start_frame, float_t end_frame);
|
|
};
|
|
|
|
struct RobMotData {
|
|
uint32_t mot;
|
|
float_t frame_max;
|
|
float_t frame;
|
|
int16_t ex_damage_all;
|
|
prj::BitArray<MK_KIND_MAX> motkind_fix;
|
|
prj::BitArray<MK_KIND_MAX> motkind;
|
|
prj::BitArray<MK_KIND_MAX> old_motkind_fix;
|
|
prj::BitArray<MK_KIND_MAX> old_motkind;
|
|
uint16_t start_style;
|
|
uint16_t end_style;
|
|
uint16_t end_style_flag;
|
|
MhNextType next_type;
|
|
RobMotId next;
|
|
RobMotId next_end;
|
|
int32_t next_limit;
|
|
float_t loop_begin;
|
|
float_t loop_end;
|
|
float_t main_mot_frame;
|
|
float_t follow1_frame;
|
|
float_t follow2_frame;
|
|
bool attack_flag;
|
|
prj::BitArray<7> attack_kind;
|
|
AtkUnit attack_unit;
|
|
AtkPoint attack_point;
|
|
int16_t original_damage;
|
|
int16_t attack_damage;
|
|
int16_t dist_min_damage;
|
|
prj::BitArray<6> dc_type;
|
|
RobAngle efc_yang;
|
|
MhYarareType yarare_type;
|
|
prj::BitArray<ETF_FLAG_MAX> efc_flag;
|
|
MhEfcSpeedType efc_spd;
|
|
float_t attack_ball_multi;
|
|
float_t down_attack_multi;
|
|
RobMotDAs field_B8[25];
|
|
prj::BitArray<AK_KIND_MAX> air_kind;
|
|
float_t jump_frame;
|
|
float_t stop_frame;
|
|
float_t land_frame;
|
|
float_t ev_land_frame;
|
|
float_t land_ypos;
|
|
float_t gravity;
|
|
RobMotId nagerare_mot;
|
|
RobMotId nagerare_mot_mirror;
|
|
float_t nage_ringout_frame;
|
|
float_t nage_cancel_frame;
|
|
float_t nage_kabe_follow2;
|
|
int16_t nage_damage;
|
|
std::list<MhdNagenuke*> nage_nuke_list;
|
|
int16_t tag_jumph;
|
|
float_t tag_xofs;
|
|
float_t tag_zofs;
|
|
int16_t shift_num;
|
|
MhdList* shift_adr;
|
|
float_t ukemi_start_ofs_frame;
|
|
float_t ukemi_end_frame;
|
|
float_t ukemi_exec_frame;
|
|
uint32_t ukemi_flag;
|
|
prj::BitArray<KT_TYPE_MAX> kaesare_type;
|
|
prj::BitArray<KT_TYPE_MAX> kaeseru_type;
|
|
MhKaeshiAttrib kaesare_attrib;
|
|
RobAngle mov_yang;
|
|
RobAngle old_mov_yang;
|
|
prj::BitArray<3> gacha_flag;
|
|
RobMotId gacha_mot;
|
|
int16_t gacha_times;
|
|
float_t gacha_frame;
|
|
MhGuardType guard_type;
|
|
prj::BitArray<GK_FLAG_MAX> guard_flag;
|
|
float_t guard_frame;
|
|
uint32_t frame_ctrl_type;
|
|
float_t frame_ctrl_frame;
|
|
int8_t frame_ctrl_tag_type;
|
|
float_t frame_ctrl_tag_add;
|
|
float_t frame_ctrl_min;
|
|
float_t frame_ctrl_max;
|
|
ES_DATA* est_adr;
|
|
RobAngle dturn_yang;
|
|
prj::BitArray<2> smooth_flag;
|
|
float_t smooth_f_length;
|
|
float_t smooth_r_length;
|
|
float_t ride_on_ypos;
|
|
std::vector<MhdAttackSound*> atk_snd_list;
|
|
int16_t kabe_damage;
|
|
MhKabeDmgType kabe_damage_type;
|
|
prj::BitArray<21> nagereru_char;
|
|
prj::BitArray<KT_TYPE_MAX> resist_type;
|
|
int16_t resist_low_limit;
|
|
int16_t resist_max_limit;
|
|
int16_t resist_percent;
|
|
MhResistDownChkType resist_down_chk;
|
|
float_t resist_slow_frame;
|
|
float_t resist_slow_step;
|
|
MhEnDrinkOffType en_drink_off_type;
|
|
int16_t en_drink_off_dec;
|
|
float_t trans_xofs;
|
|
float_t trans_yofs;
|
|
float_t trans_zofs;
|
|
float_t jump_zspd;
|
|
float_t wall_haritsuki_frame;
|
|
int32_t init_cnt;
|
|
MhpList* play_prog;
|
|
MhpList* play_prog_org;
|
|
bool play_prog_x; // X
|
|
prj::BitArray<17> revise_flag;
|
|
uint32_t rob_cam_flag;
|
|
RobTarget target;
|
|
bool colliball_flag[3][ROB_COLLI_ID_MAX];
|
|
float_t colliball_ratio[3][ROB_COLLI_ID_MAX];
|
|
float_t colliball_timer[3][ROB_COLLI_ID_MAX];
|
|
prj::BitArray<41> touch_nage_mask;
|
|
float_t arm_adjust_next_value; // X
|
|
float_t arm_adjust_prev_value; // X
|
|
int32_t arm_adjust_start_frame; // X
|
|
float_t arm_adjust_duration; // X
|
|
float_t mot_adjust_start;
|
|
float_t mot_adjust_end;
|
|
uint8_t mot_adjust_flag;
|
|
MotAdjustType mot_adjust_type;
|
|
float_t mot_adjust_scale;
|
|
float_t pre_adjust_scale;
|
|
float_t mot_adjust_base_ypos;
|
|
float_t pre_adjust_base_ypos;
|
|
float_t atk2_start_frame;
|
|
float_t atk2_end_frame;
|
|
bool atk2_set_flag;
|
|
MotLeafCtrl leaf_ctrl[LCPART_MAX];
|
|
MhcList* mh_command;
|
|
int32_t mh_did;
|
|
|
|
RobMotData();
|
|
~RobMotData();
|
|
|
|
void clear();
|
|
void mhd_pp_clear();
|
|
void mhd_pp_exec(rob_chara* impl, float_t frame, const motion_database* mot_db);
|
|
void mhd_smd_atk_clear();
|
|
void mhd_smd_clear();
|
|
void mhd_smd_exec(rob_chara* impl, MhdList* list);
|
|
};
|
|
|
|
struct RobPosition {
|
|
RobAngle yang;
|
|
RobAngle act_yang;
|
|
RobAngle hara_xang;
|
|
RobAngle hara_yang;
|
|
RobAngle hara_zang;
|
|
RobAngle revise_tag_yang;
|
|
ReviseType revise_type;
|
|
float_t ground_pos;
|
|
float_t ground_last;
|
|
vec3 pos;
|
|
vec3 gpos;
|
|
vec3 spd;
|
|
vec3 adjust_spd;
|
|
vec3 old_gpos;
|
|
vec3 velocity;
|
|
vec3 pos_camera_old;
|
|
mat4 rob_mat;
|
|
|
|
RobPosition();
|
|
|
|
void reset();
|
|
};
|
|
|
|
struct RobAdjust {
|
|
float_t scale;
|
|
bool height_adjust;
|
|
float_t pos_adjust_y;
|
|
vec3 pos_adjust;
|
|
vec3 offset;
|
|
bool offset_x;
|
|
bool offset_y;
|
|
bool offset_z;
|
|
bool get_global_pos;
|
|
vec3 pos;
|
|
mat4 mat;
|
|
float_t left_hand_scale;
|
|
float_t right_hand_scale;
|
|
float_t left_hand_scale_default;
|
|
float_t right_hand_scale_default;
|
|
mat4 item_mat; // X
|
|
vec3 item_pos; // X
|
|
float_t item_scale; // X
|
|
|
|
RobAdjust();
|
|
|
|
void reset();
|
|
};
|
|
|
|
namespace prj {
|
|
struct BallCollision {
|
|
vec3 old_c;
|
|
Sphere3f ball;
|
|
float_t sink;
|
|
int32_t colli_ball_mask;
|
|
float_t org_rad;
|
|
|
|
BallCollision();
|
|
};
|
|
}
|
|
|
|
struct pos_scale {
|
|
vec2 pos;
|
|
float_t scale;
|
|
|
|
pos_scale();
|
|
|
|
float_t get_screen_pos_scale(const mat4& mat,
|
|
const vec3& pos, float_t scale = 0.0f, bool apply_offset = false);
|
|
};
|
|
|
|
struct RobColliWall {
|
|
float_t wdist;
|
|
RobAngle wang;
|
|
float_t wheight;
|
|
RobAngle wyang;
|
|
|
|
RobColliWall();
|
|
|
|
void setup();
|
|
};
|
|
|
|
struct RobCollision {
|
|
int8_t touch_count;
|
|
int8_t wall_touch_cnt;
|
|
uint32_t touch_mask;
|
|
uint32_t attack_mask;
|
|
uint32_t hit_mask;
|
|
uint32_t damage_mask;
|
|
uint32_t check_wall;
|
|
uint32_t wall_hit_num;
|
|
uint32_t wall_hit_mask;
|
|
uint32_t handrail_hit_num;
|
|
uint32_t handrail_hit_mask;
|
|
uint32_t dummy_wall_hit_num;
|
|
uint32_t dummy_wall_hit_mask;
|
|
uint32_t dummy_ringout_num;
|
|
uint32_t dummy_ringout_mask;
|
|
uint32_t above_floor_num;
|
|
uint32_t above_floor_mask;
|
|
uint32_t floor_hit_num;
|
|
uint32_t floor_hit_mask;
|
|
uint32_t ringout_num;
|
|
uint32_t ringout_mask;
|
|
uint32_t ringout_air_num;
|
|
uint32_t ringout_air_mask;
|
|
float_t sink_floor;
|
|
int32_t floor_idx;
|
|
uint32_t fld_on;
|
|
float_t sink_wall;
|
|
int32_t wall_idx;
|
|
vec3 wall_hit_pos;
|
|
mat4 mat[ROB_COLLI_ID_MAX];
|
|
mat4 push_mat[ROB_COLLI_ID_MAX];
|
|
prj::BallCollision cb_hit[ROB_COLLI_ID_MAX];
|
|
prj::BallCollision cb_rob[ROB_COLLI_ID_MAX];
|
|
prj::BallCollision cb_stg[ROB_COLLI_ID_MAX];
|
|
pos_scale field_1AA0[ROB_COLLI_ID_MAX];
|
|
float_t field_1BE4[ROB_COLLI_ID_MAX];
|
|
prj::vector_pair<int64_t, float_t> field_1C50;
|
|
int64_t field_1C68;
|
|
int64_t field_1C70;
|
|
int64_t field_1C78;
|
|
int64_t field_1C80;
|
|
int32_t field_1C88[ROB_COLLI_ID_MAX];
|
|
int32_t field_1CF4[ROB_COLLI_ID_MAX];
|
|
int32_t field_1D60[ROB_COLLI_ID_MAX];
|
|
int32_t field_1DCC;
|
|
int32_t field_1DD0;
|
|
int32_t field_1DD4;
|
|
int32_t field_1DD8;
|
|
float_t sink;
|
|
float_t max_ypos;
|
|
float_t min_ypos;
|
|
int32_t max_idx;
|
|
int32_t min_idx;
|
|
float_t top_ypos;
|
|
float_t bot_ypos;
|
|
int32_t top_idx;
|
|
int32_t bot_idx;
|
|
vec3 moveF;
|
|
vec3 moveR;
|
|
vec3 moveRT;
|
|
vec3 moveM;
|
|
vec3 moveD;
|
|
vec3 moveW[2];
|
|
vec3 moveWd[2];
|
|
vec3 moveWr[2];
|
|
vec3 moveWT[2];
|
|
vec3 moveT[2];
|
|
RobColliWall wall_info[4];
|
|
float_t ringout_dist[4];
|
|
bool init_thrust_vec_req;
|
|
vec3 thrust_vec;
|
|
vec3 rep_hit_pos;
|
|
bool req_wall_break;
|
|
bool enable_dummy_collision;
|
|
bool fall_ringout;
|
|
bool req_kabe_yoroke;
|
|
bool calc_rob_colli;
|
|
bool colli_attack_hit;
|
|
bool floor_ringout_disable;
|
|
|
|
RobCollision();
|
|
~RobCollision();
|
|
|
|
void init();
|
|
};
|
|
|
|
union RobEnInfoFlag {
|
|
uint32_t u32;
|
|
struct {
|
|
int8_t en_from_behind : 1;
|
|
int8_t en_from_right : 1;
|
|
int8_t en_not_look_me : 1;
|
|
int8_t en_down_attack : 1;
|
|
int8_t en_down_attack2 : 1;
|
|
int8_t en_down_nage : 1;
|
|
int8_t en_front : 1;
|
|
int8_t en_back : 1;
|
|
int8_t en_right : 1;
|
|
int8_t en_left : 1;
|
|
int8_t en_at_front : 1;
|
|
int8_t en_at_back : 1;
|
|
int8_t en_at_right : 1;
|
|
int8_t en_at_left : 1;
|
|
} bit;
|
|
};
|
|
|
|
union RobInfoFlag {
|
|
uint32_t u32;
|
|
struct {
|
|
int8_t disp_left : 1;
|
|
int8_t calculated_disp_left : 1;
|
|
int8_t death : 1;
|
|
int8_t disp_left_cmd : 1;
|
|
int8_t disp_left_cmd_base : 1;
|
|
} bit;
|
|
};
|
|
|
|
struct RobInfo {
|
|
float_t en_dist;
|
|
float_t en_dist_3d;
|
|
RobAngle en_dir_yang;
|
|
RobAngle en_dir_yang2;
|
|
RobAngle revise_en_dir_yang;
|
|
RobEnInfoFlag en_flag;
|
|
RobEnInfoFlag old_en_flag;
|
|
RobInfoFlag flag;
|
|
prj::BitArray<41> en_nage_flag;
|
|
prj::BitArray<41> en_touch_nage_flag;
|
|
float_t profit;
|
|
float_t my_profit;
|
|
|
|
RobInfo();
|
|
|
|
void init();
|
|
};
|
|
|
|
struct RobRingOut {
|
|
bool stop;
|
|
bool down;
|
|
bool stand;
|
|
bool fall;
|
|
bool air;
|
|
bool air2down;
|
|
bool set_fix_hara;
|
|
bool replay_ringout;
|
|
vec3 ringout_pos;
|
|
vec3 ringout_spd;
|
|
|
|
RobRingOut();
|
|
|
|
void init();
|
|
};
|
|
|
|
struct RobSound {
|
|
bool blow_flag;
|
|
|
|
RobSound();
|
|
|
|
void init();
|
|
};
|
|
|
|
class RobBase {
|
|
public:
|
|
RobFlag flag;
|
|
RobAction action;
|
|
RobSubAction sub_action;
|
|
RobMotion robmot;
|
|
RobMotData motdata;
|
|
RobPosition position;
|
|
RobAdjust adjust;
|
|
RobCollision collision;
|
|
RobInfo robinfo;
|
|
RobRingOut ringout;
|
|
RobSound sound;
|
|
float_t arm_adjust_scale; // X
|
|
|
|
RobBase();
|
|
~RobBase();
|
|
|
|
void init();
|
|
};
|
|
|
|
class rob_chara {
|
|
public:
|
|
int8_t idnm;
|
|
RobType type;
|
|
int16_t energy;
|
|
bool disp_pos_reset;
|
|
bool disp_pos_reset_forbidden;
|
|
CHARA_NUM chara_num;
|
|
int32_t costume;
|
|
float_t frame_speed;
|
|
rob_chara* enemy;
|
|
rob_chara_bone_data* bone_data;
|
|
RobDisp* disp;
|
|
RobItem item;
|
|
RobBase rob_base;
|
|
RobBase rob_base_old;
|
|
const RobData* rob_data;
|
|
RobInit rob_init;
|
|
|
|
rob_chara();
|
|
~rob_chara();
|
|
|
|
void adjust_ctrl();
|
|
void arm_adjust_ctrl();
|
|
void autoblink_disable();
|
|
void autoblink_enable();
|
|
void calc_mot_adjust_scale();
|
|
void calc_rob_colli_matrix();
|
|
RobAngle calc_mot_yang(bool compel_flag) const;
|
|
bool check_disp_left() const;
|
|
bool check_for_ageageagain_module();
|
|
void check_rob_dummy_collision_ringout();
|
|
void disble_disp_pos_reset();
|
|
void enable_disp_pos_reset();
|
|
mat4* get_bone_data_mat(size_t index);
|
|
uint32_t get_common_mot(MOTTABLE_TYPE mottbl_type) const;
|
|
int32_t get_costume() const;
|
|
float_t get_frame() const;
|
|
float_t get_frame_max() const;
|
|
const vec3* get_gpos() const;
|
|
object_info get_rob_data_face_object(int32_t index);
|
|
float_t get_face_depth() const;
|
|
float_t get_pos_scale(ROB_COLLI_ID colli_id, vec3& center);
|
|
const RobData* get_rob_data() const;
|
|
const RobInit* get_rob_init() const;
|
|
void init_colli_every_frame();
|
|
void set_item(ROB_PARTS_KIND kind, object_info obj_uid,
|
|
const bone_database* bone_data, void* data, const object_database* obj_db);
|
|
void overwrite_disp_left(bool set_flag);
|
|
void pos_reset();
|
|
void rob_info_ctrl();
|
|
void rob_motion_modifier_ctrl();
|
|
bool replace_rob_motion(uint32_t motnum, float_t frame, float_t blend_duration,
|
|
bool blend, bool set_motion_reset_data, MotionBlendType blend_type,
|
|
const bone_database* bone_data, const motion_database* mot_db);
|
|
void req_frame_change(float_t frame);
|
|
void reset_rob(const RobInit& robinit,
|
|
const bone_database* bone_data, const motion_database* mot_db);
|
|
void reset_rob_zero_disp();
|
|
void reset_osage();
|
|
void reset_osage_pos();
|
|
void set_base(ROB_PARTS_KIND kind, object_info obj_uid, bool osage_reset,
|
|
const bone_database* bone_data, void* data, const object_database* obj_db);
|
|
void set_bone_data_frame(float_t frame);
|
|
void set_chara(ROB_ID id, CHARA_NUM cn, int32_t cos, const RobInit& ri);
|
|
void set_chara_color(bool value);
|
|
void set_chara_height_adjust(bool value);
|
|
void set_chara_pos_adjust(const vec3& value);
|
|
void set_chara_pos_adjust_y(float_t value);
|
|
void set_chara_size(float_t value);
|
|
void set_costume(int32_t cos);
|
|
void set_data_adjust_mat(RobAdjust* rob_chr_adj, bool pos_adjust = true);
|
|
void set_disable_collision(rob_osage_parts parts, bool disable);
|
|
void set_disp_flag(bool fl);
|
|
void set_disp_freeze(bool fl);
|
|
void set_eyelid_mottbl_motion(int32_t type, MOTTABLE_TYPE mottbl_type,
|
|
float_t value, rob_partial_motion_playback_state playback_state, float_t blend_duration,
|
|
float_t play_duration, float_t step, rob_partial_motion_loop_state loop_state,
|
|
float_t blend_offset, const motion_database* mot_db);
|
|
void set_eyelid_mottbl_motion_from_face(int32_t a2,
|
|
float_t blend_duration, float_t value, float_t blend_offset, const motion_database* mot_db);
|
|
void set_eyes_mottbl_motion(int32_t type, MOTTABLE_TYPE mottbl_type,
|
|
float_t value, rob_partial_motion_playback_state playback_state, float_t blend_duration,
|
|
float_t play_duration, float_t step, rob_partial_motion_loop_state loop_state,
|
|
float_t blend_offset, const motion_database* mot_db);
|
|
void set_face_mottbl_motion(int32_t type, MOTTABLE_TYPE mottbl_type,
|
|
float_t value, rob_partial_motion_playback_state playback_state, float_t blend_duration, float_t play_duration,
|
|
float_t step, rob_partial_motion_loop_state loop_state,
|
|
float_t blend_offset, bool a11, const motion_database* mot_db);
|
|
void set_face_object(object_info obj_info, int32_t a3);
|
|
void set_face_object_index(int32_t index);
|
|
void set_frame(float_t frame);
|
|
void set_hand_item(int32_t uid, float_t blend_duration);
|
|
void set_hand_item_l(int32_t uid);
|
|
void set_hand_item_r(int32_t uid);
|
|
void set_hand_l_mottbl_motion(int32_t type, MOTTABLE_TYPE mottbl_type,
|
|
float_t value, rob_partial_motion_playback_state playback_state, float_t blend_duration,
|
|
float_t play_duration, float_t step, rob_partial_motion_loop_state loop_state,
|
|
float_t blend_offset, const motion_database* mot_db);
|
|
void set_hand_r_mottbl_motion(int32_t type, MOTTABLE_TYPE mottbl_type,
|
|
float_t value, rob_partial_motion_playback_state playback_state, float_t blend_duration,
|
|
float_t play_duration, float_t step, rob_partial_motion_loop_state loop_state,
|
|
float_t blend_offset, const motion_database* mot_db);
|
|
void set_left_hand_scale(float_t value);
|
|
void set_look_camera(bool update_view_point, bool rotation_enable, float_t head_rot_strength,
|
|
float_t eyes_rot_strength, float_t blend_duration, float_t eyes_rot_step, float_t a8, bool ft);
|
|
void set_look_camera_new(bool rotation_enable, float_t head_rot_strength,
|
|
float_t eyes_rot_strength, float_t blend_duration, float_t eyes_rot_step, float_t a8);
|
|
void set_look_camera_old(bool rotation_enable, float_t head_rot_strength,
|
|
float_t eyes_rot_strength, float_t blend_duration, float_t eyes_rot_step, float_t a8);
|
|
void set_motion_loop(float_t loop_begin, float_t loop_end, int32_t loop_count);
|
|
void set_motion_reset_data(const uint32_t& motnum, const float_t& frame);
|
|
void set_motion_skin_param(const uint32_t& motnum, const float_t& frame);
|
|
void set_motion_step(float_t value);
|
|
void set_mouth_mottbl_motion(int32_t type, MOTTABLE_TYPE mottbl_type,
|
|
float_t value, rob_partial_motion_playback_state playback_state, float_t blend_duration,
|
|
float_t play_duration, float_t step, rob_partial_motion_loop_state loop_state,
|
|
float_t blend_offset, const motion_database* mot_db);
|
|
void set_osage_move_cancel(uint8_t id, float_t mv_ccl);
|
|
void set_osage_reset();
|
|
void set_osage_step(float_t value);
|
|
void set_parts_disp(ROB_PARTS_KIND kind, bool flag);
|
|
void set_right_hand_scale(float_t value);
|
|
void set_rob_motion(uint32_t motnum, bool mirror, float_t frame,
|
|
MotionBlendType blend_type, const bone_database* bone_data, const motion_database* mot_db);
|
|
void set_rob_motion_external(uint32_t motnum);
|
|
void set_rob_pos(const vec3& pos);
|
|
void set_rob_sys_command(ACT_NAME name, int32_t motion_id, const ActParam* param, bool mirror);
|
|
void set_rob_yang(const RobAngle& ang);
|
|
void set_rob_zero_disp();
|
|
void set_shadow_cast(bool value);
|
|
void set_stage_data_ring(const int32_t& stage_index);
|
|
void set_step_motion_step(float_t value);
|
|
void set_time_up(bool flag);
|
|
void set_use_opd(bool value);
|
|
void set_wind_strength(float_t value);
|
|
|
|
inline bool check_disp() {
|
|
return rob_base.flag.bit.disp;
|
|
}
|
|
|
|
inline bool check_zero_disp() {
|
|
return rob_base.flag.bit.zero_disp;
|
|
}
|
|
|
|
void sub_1405070E0(const bone_database* bone_data, const motion_database* mot_db);
|
|
void sub_1405163C0(int32_t index, mat4& mat);
|
|
void sub_140551000();
|
|
};
|
|
|
|
class RobManagement {
|
|
public:
|
|
static bool colli_check_on;
|
|
static CHARA_NUM chara_num[];
|
|
static int32_t instance_count;
|
|
static rob_chara rob_impl[];
|
|
static RobInit rob_init[];
|
|
|
|
RobManagement();
|
|
~RobManagement();
|
|
|
|
bool check_alive_rob(ROB_ID id);
|
|
bool check_disp_left(ROB_ID id);
|
|
bool check_ringout_only_rob(ROB_ID id);
|
|
bool check_ringout_transit_rob(ROB_ID id);
|
|
ROB_ID create_rob(CHARA_NUM cn, const RobInit& ri, int32_t cos, bool can_set_default);
|
|
void dest_all();
|
|
void dest_rob(ROB_ID id);
|
|
void disable_osage_reset(ROB_ID id);
|
|
void enable_osage_reset(ROB_ID id);
|
|
float_t get_adjust_scale(ROB_ID id) const;
|
|
CHARA_NUM get_chara(ROB_ID id) const;
|
|
bool get_colli_check_on() const;
|
|
bool get_disp_on(ROB_ID id) const;
|
|
const vec3* get_gpos(ROB_ID id) const;
|
|
rob_chara* get_rob(ROB_ID id);
|
|
const RobData* get_rob_data(ROB_ID id) const;
|
|
// RobDetail* get_rob_detail_if(ROB_ID id);
|
|
rob_chara_bone_data* get_rob_motion_work(ROB_ID id);
|
|
size_t get_rob_num() const;
|
|
RobDisp* get_rob_robdisp_work(ROB_ID id);
|
|
RobItem* get_rob_robitem_work(ROB_ID id);
|
|
const RobInit* get_rob_init(ROB_ID id) const;
|
|
bool is_init(ROB_ID id) const;
|
|
void overwrite_disp_left(ROB_ID id, bool fl);
|
|
void play_auth3d_sound(ROB_ID id, const char* in_name);
|
|
void reset_osage_pos(ROB_ID id);
|
|
void reset_rob(const RobInit& rob0, const RobInit& rob1,
|
|
const bone_database* bone_data, const motion_database* mot_db);
|
|
void reset_rob(ROB_ID id, const RobInit& ri,
|
|
const bone_database* bone_data, const motion_database* mot_db);
|
|
void reset_rob_time_up();
|
|
void reset_rob_zero_disp(ROB_ID id);
|
|
void rob_disp_init(ROB_ID id);
|
|
void set_colli_check_on(bool fl);
|
|
void set_costume(ROB_ID id, int32_t cos);
|
|
void set_disp_freeze(ROB_ID id, bool fl);
|
|
void set_disp_on(ROB_ID id, bool fl);
|
|
void set_mot_frame(ROB_ID id, float_t frame);
|
|
void set_motion(ROB_ID id, int32_t motnum);
|
|
void set_rob_pos(ROB_ID id, const vec3& pos);
|
|
void set_rob_time_up();
|
|
void set_rob_yang(ROB_ID id, const RobAngle& ang);
|
|
void set_rob_zero_disp(ROB_ID id);
|
|
|
|
static void init();
|
|
};
|
|
|
|
struct pv_data_set_motion {
|
|
uint32_t motnum;
|
|
std::pair<float_t, int32_t> frame_stage_index;
|
|
|
|
pv_data_set_motion();
|
|
pv_data_set_motion(uint32_t motnum);
|
|
pv_data_set_motion(uint32_t motnum, std::pair<float_t, int32_t> frame_stage_index);
|
|
};
|
|
|
|
struct osage_init_data {
|
|
rob_chara* rob_chr;
|
|
int32_t pv_id;
|
|
uint32_t motnum;
|
|
std::string dir;
|
|
int32_t frame;
|
|
|
|
osage_init_data();
|
|
osage_init_data(rob_chara* rob_chr, uint32_t motnum = -1);
|
|
osage_init_data(rob_chara* rob_chr, int32_t pv_id,
|
|
uint32_t motnum, const std::string& dir = "", int32_t frame = -1);
|
|
~osage_init_data();
|
|
};
|
|
|
|
struct OpdMakeManagerArgs {
|
|
const std::vector<int32_t>* motion_ids;
|
|
const std::vector<uint32_t>* modules;
|
|
const std::vector<std::string>* objects;
|
|
bool use_current_skp;
|
|
bool use_opdi;
|
|
};
|
|
|
|
struct OpdMakeManagerData {
|
|
struct Worker {
|
|
uint32_t mode;
|
|
uint32_t progress;
|
|
CHARA_NUM chara;
|
|
std::vector<uint32_t> items;
|
|
|
|
Worker();
|
|
~Worker();
|
|
};
|
|
|
|
uint32_t mode;
|
|
uint32_t left;
|
|
uint32_t count;
|
|
std::vector<Worker> workers;
|
|
|
|
OpdMakeManagerData();
|
|
~OpdMakeManagerData();
|
|
};
|
|
|
|
struct OpdChecker {
|
|
int32_t state;
|
|
int64_t field_8;
|
|
int64_t field_10;
|
|
int64_t field_18;
|
|
std::vector<std::string> objects;
|
|
int32_t index;
|
|
int32_t size;
|
|
int32_t field_40;
|
|
bool terminated;
|
|
std::thread* thread;
|
|
std::mutex state_mtx;
|
|
std::mutex terminated_mtx;
|
|
std::mutex index_mtx;
|
|
|
|
OpdChecker();
|
|
~OpdChecker();
|
|
|
|
bool CheckFileAdler32Checksum(const std::string& path);
|
|
bool CheckFileVersion(const std::string& path, uint32_t version);
|
|
bool CheckStateNot3();
|
|
std::vector<std::string>& GetObjects();
|
|
void GetIndexSize(int32_t& index, int32_t& size);
|
|
int32_t GetState();
|
|
bool GetTerminated();
|
|
void LaunchThread();
|
|
void SetIndexSize(int32_t index, int32_t size);
|
|
void SetState(int32_t value);
|
|
void SetTerminated();
|
|
void TerminateThread();
|
|
|
|
static void ThreadMain(OpdChecker* opd_checker);
|
|
|
|
void sub_140471020();
|
|
};
|
|
|
|
extern RobManagement* get_rob_management();
|
|
|
|
extern const RobData* get_rob_data(CHARA_NUM cn);
|
|
extern int32_t get_rob_data_chara_size_index(CHARA_NUM cn);
|
|
extern int32_t get_rob_data_swim_costume(CHARA_NUM cn);
|
|
extern int32_t get_rob_data_swim_s_costume(CHARA_NUM cn);
|
|
|
|
extern float_t chara_pos_adjust_y_table_get_value(uint32_t index);
|
|
extern float_t chara_size_table_get_value(uint32_t index);
|
|
|
|
const char* get_dev_ram_opdi_dir();
|
|
|
|
extern const float_t get_gravity();
|
|
|
|
extern const uint32_t* get_opd_motion_ids();
|
|
extern const uint32_t* get_opd_motion_set_ids();
|
|
|
|
extern const char* get_ram_osage_play_data_dir();
|
|
extern const char* get_ram_osage_play_data_tmp_dir();
|
|
extern const char* get_rom_osage_play_data_dir();
|
|
extern const char* get_rom_osage_play_data_opdi_dir();
|
|
|
|
extern OpdChecker* opd_checker_get();
|
|
extern bool opd_checker_check_state_not_3();
|
|
extern bool opd_checker_has_objects();
|
|
extern void opd_checker_launch_thread();
|
|
extern void opd_checker_terminate_thread();
|
|
|
|
extern void opd_make_manager_open(const OpdMakeManagerArgs& args);
|
|
extern bool opd_make_manager_check_alive();
|
|
extern bool opd_make_manager_close();
|
|
extern OpdMakeManagerData* opd_make_manager_get_data();
|
|
|
|
extern void opd_make_start();
|
|
extern void opd_make_start_get_motion_ids(std::vector<int32_t>& motion_ids);
|
|
extern void opd_make_stop();
|
|
|
|
extern bool osage_play_data_manager_open();
|
|
extern void osage_play_data_manager_append_chara_motion_id(rob_chara* rob_chr, uint32_t motnum);
|
|
extern void osage_play_data_manager_append_chara_motion_ids(
|
|
rob_chara* rob_chr, const std::vector<uint32_t>& motion_ids);
|
|
extern bool osage_play_data_manager_check_alive();
|
|
extern void osage_play_data_manager_get_opd_file_data(object_info obj_info,
|
|
uint32_t motnum, const float_t*& data, uint32_t& count);
|
|
extern void osage_play_data_manager_reset();
|
|
|
|
extern void osage_play_database_load();
|
|
|
|
extern void pv_osage_manager_array_reset(ROB_ID rob_id);
|
|
|
|
extern void rob_init();
|
|
extern void rob_free();
|
|
|
|
extern void rob_chara_age_age_array_ctrl(int32_t rob_id, int32_t part, mat4& mat);
|
|
extern void rob_chara_age_age_array_disp(render_context* rctx,
|
|
int32_t rob_id, bool reflect, bool chara_color);
|
|
extern void rob_chara_age_age_array_load(int32_t rob_id, int32_t part);
|
|
extern void rob_chara_age_age_array_reset(int32_t rob_id);
|
|
extern void rob_chara_age_age_array_set_alpha(int32_t rob_id, int32_t part, float_t alpha);
|
|
extern void rob_chara_age_age_array_set_disp(int32_t rob_id, int32_t part, bool value);
|
|
extern void rob_chara_age_age_array_set_move_cancel(int32_t rob_id, int32_t part, float_t value);
|
|
extern void rob_chara_age_age_array_set_npr(int32_t rob_id, int32_t part, bool value);
|
|
extern void rob_chara_age_age_array_set_params(int32_t rob_id, int32_t part,
|
|
int32_t npr, int32_t speed, int32_t skip, int32_t disp);
|
|
extern void rob_chara_age_age_array_set_speed(int32_t rob_id, int32_t part, float_t value);
|
|
extern void rob_chara_age_age_array_set_skip(int32_t rob_id, int32_t part);
|
|
extern void rob_chara_age_age_array_set_step(int32_t rob_id, int32_t part, float_t step);
|
|
extern void rob_chara_age_age_array_set_step_full(int32_t rob_id, int32_t part);
|
|
|
|
extern void rob_chara_array_reset_pv_data(ROB_ID id);
|
|
extern void rob_chara_array_set_alpha_obj_flags(ROB_ID id, float_t alpha, mdl::ObjFlags flags);
|
|
|
|
extern bool rob_chara_check_for_ageageagain_module(CHARA_NUM cn, int32_t cos);
|
|
|
|
extern void rob_sleeve_handler_data_get_sleeve_data(
|
|
CHARA_NUM cn, int32_t cos, rob_sleeve_data& l, rob_sleeve_data& r);
|
|
extern bool rob_sleeve_handler_data_load();
|
|
extern void rob_sleeve_handler_data_read();
|
|
|
|
extern bool pv_osage_manager_array_get_disp();
|
|
extern bool pv_osage_manager_array_get_disp(ROB_ID rob_id);
|
|
extern void pv_osage_manager_array_set_motion_ids(
|
|
ROB_ID rob_id, const std::vector<uint32_t>& motion_ids);
|
|
extern void pv_osage_manager_array_set_not_reset_true();
|
|
extern void pv_osage_manager_array_set_pv_id(ROB_ID rob_id, int32_t pv_id, bool reset);
|
|
extern void pv_osage_manager_array_set_pv_set_motion(
|
|
ROB_ID rob_id, const std::vector<pv_data_set_motion>& set_motion);
|
|
|
|
extern bool task_rob_load_open();
|
|
extern bool task_rob_load_append_free_req_data(CHARA_NUM cn);
|
|
extern bool task_rob_load_append_free_req_data_obj(CHARA_NUM cn, const RobItemEquip* item_set);
|
|
extern bool task_rob_load_append_load_req_data(CHARA_NUM cn);
|
|
extern bool task_rob_load_append_load_req_data_obj(CHARA_NUM cn, const RobItemEquip* item_set);
|
|
extern bool task_rob_load_check_load_req_data();
|
|
extern bool task_rob_load_close();
|
|
|
|
extern bool task_rob_manager_open();
|
|
extern bool task_rob_manager_check_chara_loaded(ROB_ID rob_id);
|
|
extern bool task_rob_manager_check_alive();
|
|
extern bool task_rob_manager_get_free_chara_list_empty();
|
|
extern bool task_rob_manager_get_wait(ROB_ID rob_id);
|
|
extern bool task_rob_manager_restart();
|
|
extern bool task_rob_manager_suspend();
|
|
extern bool task_rob_manager_close();
|
|
|
|
extern MOTTABLE_TYPE expression_id_to_mottbl_type(int32_t id);
|
|
extern MOTTABLE_TYPE hand_anim_id_to_mottbl_type(int32_t id);
|
|
extern MOTTABLE_TYPE look_anim_id_to_mottbl_type(int32_t id);
|
|
extern MOTTABLE_TYPE mouth_anim_id_to_mottbl_type(int32_t id);
|
|
|
|
inline bool rob_chara::check_for_ageageagain_module() {
|
|
return rob_chara_check_for_ageageagain_module(chara_num, costume);
|
|
}
|