From Valve Developer Community
Revision as of 10:05, 13 September 2015 by Bombcartographer (talk | contribs) (Keyvalues: Added information about model scale and problems associated with it.)
Jump to: navigation, search

prop_dynamic is a point entity available in all Source games. It is used to add an arbitrary model to the world that can animate itself and move between positions.

A prop_dynamic cannot move around on its own however: it must be parented to an entity that can. For instance, to create a functional Razortrain you would parent the various engines and carriages, as prop_dynamic, to an invisible func_tracktrain brush entity.

Dynamic props receive "point lighting": one value, re-sampled every frame, is applied to the entire model. point_spotlights (per-vertex) and env_projectedtextures (per-pixel) can overcome this.

Tip.png Tip: If your model is never going to move and/or requires detailed lighting, consider using prop_static (which is cheaper).
Note.png Note: To enforce consistency, models with embedded physics data cannot by default be used by prop_dynamic. Use the Hammer model browser's Info tab to check for support. If you intend to use a physics model in non-physics role, use prop_dynamic_override.


  • Buttons can be created by enveloping a prop_dynamic inside an invisible func_button brush, then using the SetAnimation input to play a switching animation.
  • Similarly, levers can be created by enveloping a prop_dynamic inside a func_rot_button (or momentary_rot_button) brush. No animation needed this time - the brush will rotate the prop by itself.
  • A prop_dynamic can be configured to break apart after receiving damage or on cue by using the Break input.
    Bug.png Bug: Health set inside the model will override health set in Hammer!

See also



Default Animation (DefaultAnim) <string>
The animation this prop will play when not doing a random or forced animation.
Randomly Animate (RandomAnimation) <boolean>
Makes the prop randomly select and play animations at intervals defined by the Min/Max Random Anim Time KVs. In between the random animations, it will revert to playing Default Animation.
Min Random Anim Time (MinAnimTime) <float>
Minimum time between random animations.
Max Random Anim Time (MaxAnimTime) <float>
Maximum time between random animations.
Update children (updatechildren) <boolean>
Confirm:A boolean set to true by default. When set to 0, any children attached to this entity as an attachment will not update. (seems like it would not have a practical use...)
Disable Bone Followers (DisableBoneFollowers) <boolean> (in all games since <Source><Source>)
Disables generation of phys_bone_followers for each convex piece the model has in its collision model. phys_bone_followers can quickly eat up the edict count, so this keyvalue can be very helpful in freeing resources. This will however make the collision model no longer function ([confirm] As in become non-solid?), and the model will not be able to ragdoll anymore.
Hold Animation (HoldAnimation) <boolean> (in all games since <Alien Swarm>)
If set, the prop will not loop its animation, but hold the last frame.
Animate Every Frame (AnimateEveryFrame) <boolean> (in all games since [Portal 2])
Force this prop to animate every frame. Usually this doesn't need to be touched.


Allow Physics Gun (gmod_allowphysgun) <boolean> (only in <Garry's Mod>)
If set, players cannot use Physics Gun on this entity.
Sandbox Tool Whitelist (gmod_allowtools) <string> (only in <Garry's Mod>)
If set, only given tools can be used on this entity. You need to supply the tool class names, the names of the .lua files of those tools. This also includes the context menu properties!

Model Scale modelscale <float> A multiplier for the size of the model. Setting this can cause the game to hang for ten seconds at the start of and in between rounds in a TF2 Special Delivery map. Using a logic_relay to set the scale after a delay seems to prevent this. As an input, it takes two values separated by a space. The first is the target model scale. The second value is the number of seconds the change in scale will be spread over.



  •  [64] : Use Hitboxes for Renderbox
  •  [256] : Start with collision disabled


  •  [16] : Break on Touch
  •  [32] : Break on Pressure



SetAnimation <string>
Forces the prop to play the named animation.
SetDefaultAnimation <string>
Changes the animation played when not in a random/forced sequence.
SetPlaybackRate <float>
Sets the framerate at which animations are played.
Hides the prop through EF_NODRAW. The Disable input does the exact same thing.
Shows the prop (by removing EF_NODRAW). The Enable input does the exact same thing.
Tells the prop to no longer be solid.
Tells the prop to become solid again.
SetAnimationNoReset <string> (in all games since <Alien Swarm>)
Force the prop to play an animation unless the prop is already playing the animation. The parameter should be the name of the animation.
FadeAndKill  (in all games since [Portal 2])
Fade out then remove this prop.



Fired when an animation begins.
Fired when an animation finishes.