srctools.mdl
- class srctools.mdl.Model( )
Represents parts of Source models.
This does not parse the animation or geometry data, only other metadata.
- __weakref__
list of weak references to the object (if defined)
- _cull_skins_table( ) None
Fix the table of used skins to correspond to those actually used.
StudioMDL is rather messy, and adds many extra columns that are not used on the actual model. We’re following mstudiobodyparts_t -> mstudiomodel_t -> mstudiomesh_t -> material. While we’re here, store a count of the total vertexes used.
Constants
- class srctools.mdl.AnimEventTypes
Bases:
Flag
Categories of animation events.
- NONE = 0
- SERVER = 1
- SCRIPTED = 2
- SHARED = 4
- WEAPON = 8
- CLIENT = 16
- FACEPOSER = 32
- srctools.mdl.CL = AnimEventTypes.CLIENT
Alias for the CLIENT event type.
- srctools.mdl.SV = AnimEventTypes.SERVER
Alias for the Server event type.
- class srctools.mdl.AnimEvents
Bases:
Enum
The types of events in models.
0 - 999 is “specific” / new string-based type. 1000 - 1999 is for scripted events. 2000 - 2999 is shared events. 3000 - 4999 is weapon events. 5000+ is clientside events.
- AE_EMPTY = 0
- AE_NPC_LEFTFOOT = 1
- AE_NPC_RIGHTFOOT = 2
- AE_NPC_BODYDROP_LIGHT = 3
- AE_NPC_BODYDROP_HEAVY = 4
- AE_NPC_SWISHSOUND = 5
- AE_NPC_180TURN = 6
- AE_NPC_ITEM_PICKUP = 7
- AE_NPC_WEAPON_DROP = 8
- AE_NPC_WEAPON_SET_SEQUENCE_NAME = 9
- AE_NPC_WEAPON_SET_SEQUENCE_NUMBER = 10
- AE_NPC_WEAPON_SET_ACTIVITY = 11
Alias:
AE_NPC_HOLSTER
- AE_NPC_DRAW = 12
- AE_NPC_WEAPON_FIRE = 13
- AE_CL_PLAYSOUND = 14
- AE_SV_PLAYSOUND = 15
- AE_CL_STOPSOUND = 16
- AE_START_SCRIPTED_EFFECT = 17
- AE_STOP_SCRIPTED_EFFECT = 18
- AE_CLIENT_EFFECT_ATTACH = 19
- AE_MUZZLEFLASH = 20
- AE_NPC_MUZZLEFLASH = 21
- AE_THUMPER_THUMP = 22
- AE_AMMOCRATE_PICKUP_AMMO = 23
- AE_NPC_RAGDOLL = 24
- AE_NPC_ADDGESTURE = 25
- AE_NPC_RESTARTGESTURE = 26
- AE_NPC_ATTACK_BROADCAST = 27
- AE_NPC_HURT_INTERACTION_PARTNER = 28
- AE_NPC_SET_INTERACTION_CANTDIE = 29
- AE_SV_DUSTTRAIL = 30
- AE_CL_CREATE_PARTICLE_EFFECT = 31
- AE_RAGDOLL = 32
- AE_CL_ENABLE_BODYGROUP = 33
- AE_CL_DISABLE_BODYGROUP = 34
- AE_CL_BODYGROUP_SET_VALUE = 35
- AE_CL_BODYGROUP_SET_VALUE_CMODEL_WPN = 36
- AE_WPN_PRIMARYATTACK = 37
- AE_WPN_INCREMENTAMMO = 38
- AE_WPN_HIDE = 39
- AE_WPN_UNHIDE = 40
- AE_WPN_PLAYWPNSOUND = 41
- AE_RD_ROBOT_POP_PANELS_OFF = 42
- AE_TAUNT_ENABLE_MOVE = 43
- AE_TAUNT_DISABLE_MOVE = 44
- AE_ASW_FOOTSTEP = 45
- AE_MARINE_FOOTSTEP = 46
- AE_MARINE_RELOAD_SOUND_A = 47
- AE_MARINE_RELOAD_SOUND_B = 48
- AE_MARINE_RELOAD_SOUND_C = 49
- AE_REMOVE_CLIENT_AIM = 50
- AE_MELEE_DAMAGE = 51
- AE_MELEE_START_COLLISION_DAMAGE = 52
- AE_MELEE_STOP_COLLISION_DAMAGE = 53
- AE_SCREEN_SHAKE = 54
- AE_START_DETECTING_COMBO = 55
- AE_STOP_DETECTING_COMBO = 56
- AE_COMBO_TRANSITION = 57
Alias:
AE_ALLOW_MOVEMENT
- AE_SKILL_EVENT = 59
- AE_TUG_INCAP = 60
- SCRIPT_EVENT_DEAD = 1000
- SCRIPT_EVENT_NOINTERRUPT = 1001
- SCRIPT_EVENT_CANINTERRUPT = 1002
- SCRIPT_EVENT_FIREEVENT = 1003
- SCRIPT_EVENT_SOUND = 1004
- SCRIPT_EVENT_SENTENCE = 1005
- SCRIPT_EVENT_INAIR = 1006
- SCRIPT_EVENT_ENDANIMATION = 1007
- SCRIPT_EVENT_SOUND_VOICE = 1008
- SCRIPT_EVENT_SENTENCE_RND1 = 1009
- SCRIPT_EVENT_NOT_DEAD = 1010
- SCRIPT_EVENT_EMPHASIS = 1011
- SCRIPT_EVENT_BODYGROUPON = 1020
- SCRIPT_EVENT_BODYGROUPOFF = 1021
- SCRIPT_EVENT_BODYGROUPTEMP = 1022
- SCRIPT_EVENT_FIRE_INPUT = 1100
- NPC_EVENT_BODYDROP_LIGHT = 2001
- NPC_EVENT_BODYDROP_HEAVY = 2002
- NPC_EVENT_SWISHSOUND = 2010
- NPC_EVENT_180TURN = 2020
- NPC_EVENT_ITEM_PICKUP = 2040
- NPC_EVENT_WEAPON_DROP = 2041
- NPC_EVENT_WEAPON_SET_SEQUENCE_NAME = 2042
- NPC_EVENT_WEAPON_SET_SEQUENCE_NUMBER = 2043
- NPC_EVENT_WEAPON_SET_ACTIVITY = 2044
- NPC_EVENT_LEFTFOOT = 2050
- NPC_EVENT_RIGHTFOOT = 2051
- NPC_EVENT_OPEN_DOOR = 2060
- EVENT_WEAPON_MELEE_HIT = 3001
- EVENT_WEAPON_SMG1 = 3002
- EVENT_WEAPON_MELEE_SWISH = 3003
- EVENT_WEAPON_SHOTGUN_FIRE = 3004
- EVENT_WEAPON_THROW = 3005
- EVENT_WEAPON_AR1 = 3006
- EVENT_WEAPON_AR2 = 3007
- EVENT_WEAPON_HMG1 = 3008
- EVENT_WEAPON_SMG2 = 3009
- EVENT_WEAPON_MISSILE_FIRE = 3010
- EVENT_WEAPON_SNIPER_RIFLE_FIRE = 3011
- EVENT_WEAPON_AR2_GRENADE = 3012
- EVENT_WEAPON_THROW2 = 3013
- EVENT_WEAPON_PISTOL_FIRE = 3014
- EVENT_WEAPON_RELOAD = 3015
- EVENT_WEAPON_THROW3 = 3016
- EVENT_WEAPON_RELOAD_SOUND = 3017
- EVENT_WEAPON_RELOAD_FILL_CLIP = 3018
- EVENT_WEAPON_SMG1_BURST1 = 3101
- EVENT_WEAPON_SMG1_BURSTN = 3102
- EVENT_WEAPON_AR2_ALTFIRE = 3103
- EVENT_WEAPON_SEQUENCE_FINISHED = 3900
- CL_EVENT_MUZZLEFLASH0 = 5001
- CL_EVENT_MUZZLEFLASH1 = 5011
- CL_EVENT_MUZZLEFLASH2 = 5021
- CL_EVENT_MUZZLEFLASH3 = 5031
- CL_EVENT_SPARK0 = 5002
- CL_EVENT_NPC_MUZZLEFLASH0 = 5003
- CL_EVENT_NPC_MUZZLEFLASH1 = 5013
- CL_EVENT_NPC_MUZZLEFLASH2 = 5023
- CL_EVENT_NPC_MUZZLEFLASH3 = 5033
- CL_EVENT_SOUND = 5004
- CL_EVENT_EJECTBRASS1 = 6001
- CL_EVENT_DISPATCHEFFECT0 = 9001
- CL_EVENT_DISPATCHEFFECT1 = 9011
- CL_EVENT_DISPATCHEFFECT2 = 9021
- CL_EVENT_DISPATCHEFFECT3 = 9031
- CL_EVENT_DISPATCHEFFECT4 = 9041
- CL_EVENT_DISPATCHEFFECT5 = 9051
- CL_EVENT_DISPATCHEFFECT6 = 9061
- CL_EVENT_DISPATCHEFFECT7 = 9071
- CL_EVENT_DISPATCHEFFECT8 = 9081
- CL_EVENT_DISPATCHEFFECT9 = 9091
- CL_EVENT_SPRITEGROUP_CREATE = 6002
- CL_EVENT_SPRITEGROUP_DESTROY = 6003
- CL_EVENT_FOOTSTEP_LEFT = 6004
- CL_EVENT_FOOTSTEP_RIGHT = 6005
- CL_EVENT_MFOOTSTEP_LEFT = 6006
- CL_EVENT_MFOOTSTEP_RIGHT = 6007
- CL_EVENT_MFOOTSTEP_LEFT_LOUD = 6008
- CL_EVENT_MFOOTSTEP_RIGHT_LOUD = 6009
- CSS_FOOT_WATER_SPLASH = 7001
- CSS_FOOT_WATER_RIPPLE = 7002
- CSGO_FOOT_JUMP = 4001
- CSGO_FOOT_WALK = 4002
- srctools.mdl.ANIM_EVENT_BY_INDEX: dict[int, AnimEvents]
Maps ordinal indexes to
AnimEvents
.
- srctools.mdl.ANIM_EVENT_BY_NAME: dict[str, AnimEvents]
Maps string names to
AnimEvents
.
Components
- class srctools.mdl.IncludedMDL(label: str, filename: str)
Additional model files to load animations from.
- class srctools.mdl.SeqEvent(
- type: AnimEvents | str,
- cycle: float,
- options: str,
An event that occurs at some point in an animation sequence.
- type: AnimEvents | str