prop_dynamic

From Valve Developer Community

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:If your model is never going to move and/or requires detailed lighting, consider using prop_static (which is cheaper).
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.

Uses

  • 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.
    Bug:Health set inside the model will override health set in Hammer!

See also

Keyvalues

Collisions <choices>
How entities should collide with this prop.
Default Animation <string>
The animation this prop will play when not doing a random or forced animation.
Randomly Animate <bool>
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 <float>
Max Random Anim Time <float>
The range of intervals between random animations.
Body Group <int>
The active $bodygroup.
Lighting Origin <targetname>
Select a path_corner entity (yes, really, even though it's only in HL2's FGD) from which to sample lighting instead of the entity's origin.

Studiomodel:

World Model <string>
The model this entity should appear as. 128-character limit.
Skin <int>
Some models have multiple skins. This value selects from the index, starting with 0.
Tip:Hammer's model browser automatically updates this value if you use it to view different skins.

Shadow:

Disable shadows <bool>
Prevent the entity from creating cheap render-to-texture shadows. Does not affect shadow mapping.

BaseFadeProp:

Start Fade Dist <float>
End Fade Dist <float>
Distances at which the prop start and finish fading.
  • If start fade is <0, the prop will disappear instantly when end fade is hit.
  • If end fade is <0, the prop won't disappear at all. (This is the default behaviour.)
The values will scale appropriately if the prop is in a 3D Skybox.
Fade Scale <float>
If you specify so in worldspawn, or if the engine is running below DirectX 8 (DX7 in Ep1), props will fade out even if the fade distances above aren't specified. This value gives you some control over when this happens: numbers smaller than 1 cause the prop to fade out at further distances, and greater than 1 cause it to fade out at closer distances. Using 0 turns off the forced fade altogether.

BreakableProp:

Pressure Delay <float>
Seconds to delay breaking from pressure. Allows creaking/groaning sounds to play.

Breakable:

Explosion Damage <float>
Explosion Radius <float>
If both values are non-zero, when the entity breaks it will create an explosion causing the specified amount of damage over the specified radius.
Performance Mode <choices>
Used to limit the amount of gibs produced when this entity breaks, for performance reasons.
  • Normal
  • Limit Gibs
  • Full Gibs on All Platforms

DamageFilter:

Damage Filter <targetname>
Name of the filter_damage_type that controls what damages this entity.

Shadow:

Disable shadows <bool>
Prevent the entity from creating cheap render-to-texture shadows. Does not affect shadow mapping.

Targetname:

Name <string>
The targetname other entities refer to this entity by.

Global:

Global Entity Name <string>
Name by which this entity is linked to another entity in a different map. When the player transitions to a new map, entities in the new map with global names matching entities in the previous map will have the previous map's state copied over to them.

RenderFields:

Render Mode <choices>
Set a non-standard rendering mode on this entity. See Render Modes for details.
FX Amount (0 - 255) <int>
Intensity of the selected render mode.
FX Color (R G B) <color255>
Color used by the selected render mode (if applicable).
Disable Receiving Shadows <bool>
Prevents the entity from receiving shadows. To do: RTT and/or shadow map?

RenderFXChoices:

Render FX <choices>
Several GoldSrc-era visibility modes which change the way the entity is rendered, typically by fading it in and out.

DXLevelChoice:

Minimum DX Level <choices>
Maximum DX Level <choices>
The entity will not exist if the engine is running outside the given range of DirectX Versions. Don't use this with anything that will break saved games should a player switch dxlevel!
  • Default (no bounding)
  • DX7
  • DX8
  • DX8.1
  • DX9 SM2
  • DX9 SM3

Angles:

Pitch Yaw Roll (Y Z X) <angle>
This entity's angular orientation in the world.

Parentname:

Parent <targetname>
Specifies the targetname of this entity's movement parent. Entities with parents move with their parent.

Targetname:

Name <string>
The targetname other entities refer to this entity by.

Flags

  • Use Hitboxes for Renderbox
  • Start with collision disabled
  • Break on Touch
  • Break on Pressure

Inputs

SetAnimation <string>
Force the prop to play the named animation.
SetDefaultAnimation <string>
Change the animation played when not in a random/forced sequence.
SetPlaybackRate <float>
Set the framerate at which animations are played.
SetBodyGroup <int>
Set the index of the visible $bodygroup.
TurnOn
TurnOff
Control the prop's visibility.
EnableCollision
DisableCollision
Control collisions with the prop.

Studiomodel:

Skin <int>
Changes the model's skin to the specified number.
SetBodyGroup <int>
Set the model's body group.
EnableShadow
DisableShadow
Control the model's cheap render-to-texture shadow.
AlternativeSorting <bool>
Used to attempt to fix sorting problems when rendering. To do: What is the effect?

Breakable:

Break
Removes the entity from the server and creates its gibs on the client.
SetHealth <int>
Sets the breakable's health (zero means break).
AddHealth <int>
RemoveHealth <int>
Adds to/removes from the breakable's health.
EnablePhyscannonPickup
DisablePhyscannonPickup
Allows/prevents the Gravity Gun to pick the breakable up.
SetMass <float>
Set mass of this object. To do: In what unit?

DamageFilter:

SetDamageFilter <targetname>
Sets the entity to use as damage filter. Pass an empty string ("") to clear.

Shadow:

EnableShadow
DisableShadow
Control the entity's cheap render-to-texture shadow. Does not affect shadow mapping.

Targetname:

Kill
Removes this entity from the world.
KillHierarchy
Removes this entity and all its children from the world.
AddOutput <string>
Evaluates a keyvalue/output on this entity. It can be potentially very dangerous, use with care.
Format: <key> <value>
Format: <output name> <targetname>:<inputname>:<parameter>:<delay>:<max times to fire, -1 means infinite>
FireUser1 to FireUser4
Fire the OnUser outputs; see User Inputs and Outputs.

RenderFields:

Color <color255>
Set the rendercolor.
Alpha <byte>
Set the renderamt.

Parentname:

SetParent <targetname>
Move with this entity. See Entity Hierarchy (parenting).
SetParentAttachment <string>
Attach to a named attachment on the current parent. The entity will teleport so that the position of its root bone matches that of the attachment.
SetParentAttachmentMaintainOffset <string>
As above, but without teleporting. The entity retains its position relative to the attachment at the time of the input being received.
ClearParent
Removes this entity from its current movement hierarchy.

Outputs

OnAnimationBegun
OnAnimationDone
Fired whenever an animation starts/finishes playing.

Studiomodel:

OnIgnite
Fired when the entity catches fire.

Breakable:

OnBreak
Fired when this breakable breaks. (activator is the breaker)
OnTakeDamage
The breakable has taken damage.
OnHealthChanged <float>
The health of the breakable has changed. Passes the new value as a normalised percentage of max health.
OnPhysCannonDetach
Prop has started its ACT_PHYSCANNON_DETACH activity (caused by the gravity gun ripping it from a wall).
OnPhysCannonAnimatePreStarted
OnPhysCannonAnimatePullStarted
Prop has started its ACT_PHYSCANNON_ANIMATE_PRE or ACT_PHYSCANNON_ANIMATE activities. Both are caused by the player trying to grab the prop with the gravity gun; ANIMATE_PRE plays once, then ANIMATE starts looping.
OnPhysCannonAnimatePostStarted
Prop has started its ACT_PHYSCANNON_ANIMATE_POST activity (caused by the player letting the prop go from the gravity gun).
OnPhysCannonPullAnimFinished
Prop has finished all gravity gun-related animations.

Targetname:

OnUser1 to OnUser4
Fired in response to the FireUser inputs; see User Inputs and Outputs.
OnKilled (New with Left 4 Dead)
Fired when the entity is killed and removed from the game.
Personal tools