prop_dynamic
From Valve Developer Community
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.
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.
- Not solid
- Bounding box
- VPhysics
- 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> -
FireUser1toFireUser4 - Fire the
OnUseroutputs; see User Inputs and Outputs.
RenderFields:
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_DETACHactivity (caused by the gravity gun ripping it from a wall). -
OnPhysCannonAnimatePreStarted -
OnPhysCannonAnimatePullStarted - Prop has started its
ACT_PHYSCANNON_ANIMATE_PREorACT_PHYSCANNON_ANIMATEactivities. Both are caused by the player trying to grab the prop with the gravity gun;ANIMATE_PREplays once, thenANIMATEstarts looping. -
OnPhysCannonAnimatePostStarted - Prop has started its
ACT_PHYSCANNON_ANIMATE_POSTactivity (caused by the player letting the prop go from the gravity gun). -
OnPhysCannonPullAnimFinished - Prop has finished all gravity gun-related animations.
Targetname:
-
OnUser1toOnUser4 - Fired in response to the
FireUserinputs; see User Inputs and Outputs. -
OnKilled(New with Left 4 Dead) - Fired when the entity is killed and removed from the game.
