Closed
Description
A collision line is made up of the following struct, where LineMaterial
is an enum and LineFlags
is a set of bitflags that take up 32-bits of data for 32 possible flags before the separator value.
pub struct CollisionLine {
#[br(pad_after = 4)]
pub line_material: LineMaterial,
pub line_flags: LineFlags,
}
The names for the following enum and struct are currently borrowing the internal constant names found in Ultimate's binary. More user-friendly names could be given, but it may be best to get these implemented before that happens. Examples are provided under the collapsible sections.
LineMaterial
#[allow(non_camel_case_types)]
#[br(repr(u32))]
pub enum LineMaterial {
GROUND_COLL_ATTR_NONE = 0,
GROUND_COLL_ATTR_ROCK = 1,
GROUND_COLL_ATTR_GRASS = 2,
GROUND_COLL_ATTR_SOIL = 3,
GROUND_COLL_ATTR_WOOD = 4,
GROUND_COLL_ATTR_IRON = 5,
GROUND_COLL_ATTR_NIBUIRON = 6,
GROUND_COLL_ATTR_CARPET = 7,
GROUND_COLL_ATTR_NUMENUME = 8,
GROUND_COLL_ATTR_CREATURE = 9,
GROUND_COLL_ATTR_ASASE = 10,
GROUND_COLL_ATTR_SOFT = 11,
GROUND_COLL_ATTR_TURUTURU = 12,
GROUND_COLL_ATTR_SNOW = 13,
GROUND_COLL_ATTR_ICE = 14,
GROUND_COLL_ATTR_GAMEWATCH = 15,
GROUND_COLL_ATTR_OIL = 16,
GROUND_COLL_ATTR_DANBOURU = 17,
GROUND_COLL_ATTR_DAMAGE1 = 18,
GROUND_COLL_ATTR_DAMAGE2 = 19,
GROUND_COLL_ATTR_DAMAGE3 = 20,
GROUND_COLL_ATTR_PLANKTON = 21,
GROUND_COLL_ATTR_CLOUD = 22,
GROUND_COLL_ATTR_AKUUKAN = 23,
GROUND_COLL_ATTR_BRICK = 24,
GROUND_COLL_ATTR_NOATTR = 25,
GROUND_COLL_ATTR_MARIO = 26,
GROUND_COLL_ATTR_WIRENETTING = 27,
GROUND_COLL_ATTR_SAND = 28,
GROUND_COLL_ATTR_HOMERUN = 29,
GROUND_COLL_ATTR_ASASE_EARTH = 30,
GROUND_COLL_ATTR_DEATH = 31,
GROUND_COLL_ATTR_RINGMAT = 32,
GROUND_COLL_ATTR_GLASS = 33,
GROUND_COLL_ATTR_SLIPDX = 34,
GROUND_COLL_ATTR_SP_POISON = 35,
GROUND_COLL_ATTR_SP_FLAME = 36,
GROUND_COLL_ATTR_SP_ELECTRIC_SHOCK = 37,
GROUND_COLL_ATTR_SP_SLEEP = 38,
GROUND_COLL_ATTR_SP_FREEZING = 39,
GROUND_COLL_ATTR_SP_ADHESION = 40,
GROUND_COLL_ATTR_ICE_NO_SLIP = 41,
GROUND_COLL_ATTR_CLOUD_NO_THROUGH = 42,
GROUND_COLL_ATTR_JACK_MEMENTOES = 43,
}
LineFlags
bitflags! {
struct LineFlags: u32 {
FLAG_NONE = 0x00000000,
FLAG_LENGTH0 = 0x00000001,
FLAG_PACKMAN_FINAL_IGNORE = 0x00000002,
FLAG_FALL = 0x00000004,
FLAG_IGNORE_RAY_CHECK = 0x00000008,
FLAG_DIVE = 0x00000010,
FLAG_UNPAINTABLE = 0x00000020,
FLAG_ITEM = 0x00000040,
FLAG_IGNORE_FIGHTER_OTHER = 0x00000080,
FLAG_RIGHT = 0x00000100,
FLAG_LEFT = 0x00000200,
FLAG_UPPER = 0x00000400,
FLAG_UNDER = 0x00000800,
FLAG_NOT_ATTACH = 0x00001000,
FLAG_THROUGHABLE = 0x00002000,
FLAG_HANG_L = 0x00004000,
FLAG_HANG_R = 0x00008000,
FLAG_IGNORE_LINK_FROM_LEFT = 0x00010000,
FLAG_CLOUD = 0x00020000,
FLAG_IGNORE_LINK_FROM_RIGHT = 0x00040000,
FLAG_NOT_EXPAND_NEAR_SEARCH = 0x00080000,
FLAG_IGNORE = 0x00100000,
FLAG_BREAKABLE = 0x00200000,
FLAG_IMMEDIATE_RELANDING_BAN = 0x00400000,
FLAG_IGNORE_LINE_TYPE1 = 0x00800000,
FLAG_PICKEL_BLOCK = 0x01000000,
FLAG_DECELERATION = 0x02000000,
FLAG_VIRTUAL_HIT_LINE_UP = 0x04000000,
FLAG_VIRTUAL_HIT_LINE_LEFT = 0x08000000,
FLAG_VIRTUAL_HIT_LINE_RIGHT = 0x10000000,
FLAG_VIRTUAL_HIT_LINE_DOWN = 0x20000000,
FLAG_VIRTUAL_WALL_HIT_LINE = 0x40000000,
FLAG_IGNORE_BOSS = 0x80000000,
}
}
Activity