This article's documentation is for anything that uses the Source engine. Click here for more information.

Env entity maker: Difference between revisions

From Valve Developer Community
Jump to navigation Jump to search
m (Fix internal name formats)
 
(12 intermediate revisions by 8 users not shown)
Line 1: Line 1:
{{lang|Env entity maker}}
{{LanguageBar}}
{{base point|env_entity_maker}} It spawns a specified {{ent|point_template}} entity at the <code>env_entity_maker</code>'s [[origin]]. It can be set to spawn automatically or through inputs.
{{this is a|point entity|name=env_entity_maker|sprite=1}} <!-- Add the categories to the main page, not here -->


{{code class|CEnvEntityMaker|env_entity_maker.cpp}}
{{CD|CEnvEntityMaker|file1=env_entity_maker.cpp}}
It spawns a specified point_template entity at the {{ent|env_entity_maker}}'s [[origin]]. It can be set to spawn automatically or through inputs.<br>
One of the main benefits is that the {{ent|env_entity_maker}} can be parented to an entity, so that the ultimately spawning entities will spawn dynamically wherever the {{ent|env_entity_maker}} happens to be.<br>
This could be used to spawn things on top of a [[func_tracktrain]] or similar moving entity.<br>


==Flags==
For further clarification:<br>
*1: Enable AutoSpawn - Spawn template whenever there's enough room to fit it, and the player is not looking.
When this entity is spawned, it forces the {{ent|point_template}} to be teleported to the {{ent|env_entity_maker}}'s location. And if <code>PostSpawn Inherit Angles</code> is set, the rotation is also copied.<br>
*2: AutoSpawn: Wait for entity to be destroyed.
The {{ent|point_template}} acts as a parent to all the entities it spawns, which in turn will cause every other entity to be teleported as well.<br>
*4: AutoSpawn: Spawn even if the player is looking.
This allows you to build one setup of entities where {{ent|point_template}} acts as the origin, and then use {{ent|env_entity_maker}} to spawn this setup anywhere on the map. Similar to how [[func_instance]] works.<br>
*8: <code>ForceSpawn</code>: Spawn only if there's enough room to fit the object.
If you were to place the {{ent|point_template}} in the same spot as the {{ent|env_entity_maker}} to begin with, no movement will happen.
*16: <code>ForceSpawn</code>: Spawn only if the player isn't looking.


==Keyvalues==
== Flags ==
{{KV|Point_template To Spawn|intn=EntityTemplate|target_destination|Name of the <code>point_template</code> to spawn ''here''.}}
{{fl|1|Enable AutoSpawn Spawn template whenever there's enough room to fit it, and the player is not looking.}}
{{fl|2|AutoSpawn: Wait for entity to be destroyed.}}
{{fl|4|AutoSpawn: Spawn even if the player is looking.}}
{{fl|8|ForceSpawn: Spawn only if there's enough room to fit the object.}}
{{fl|16|ForceSpawn: Spawn only if the player isn't looking.}}
 
== Keyvalues ==
{{KV Targetname}}
{{KV|Point_template To Spawn|intn=EntityTemplate|target_destination|Name of the <code>point_template</code> to spawn here. If there is an offset between the <code>point_template</code> and its spawned entities in hammer, that offset will be maintained when spawning happens relative to the <code>env_entity_maker</code>.}}
{{KV|PostSpawn Movement Speed|intn=PostSpawnSpeed|float|All entities spawned will move this many [[hammer units]] per second in the direction of '''PostSpawn Movement Direction'''.}}
{{KV|PostSpawn Movement Speed|intn=PostSpawnSpeed|float|All entities spawned will move this many [[hammer units]] per second in the direction of '''PostSpawn Movement Direction'''.}}
{{KV|PostSpawn Movement Direction|intn=PostSpawnDirection|angle|All entities spawned in the template will move in this direction.}}
{{KV|PostSpawn Movement Direction|intn=PostSpawnDirection|angle|If a PostSpawn Movement Speed is specified, this angle will be added to the movement direction of all the entities created by the template.}}
{{KV|PostSpawn Direction Variance|intn=PostSpawnDirectionVariance|float|The '''PostSpawn Movement Direction''' may vary by this many degrees. This is a radius.}}
{{KV|PostSpawn Direction Variance|intn=PostSpawnDirectionVariance|float|The '''PostSpawn Movement Direction''' may vary by this many degrees. This is a radius.}}
{{KV|PostSpawn Inherit Angles|intn=PostSpawnInheritAngles|boolean|If '''Yes''', offset the spawn angles by the angles of a '''Parent'''.}}
{{KV|PostSpawn Inherit Angles|intn=PostSpawnInheritAngles|boolean|If checked, uses the parent's forward vector as the spawn direction. Otherwise uses the <code>env_entity_maker</code>'s forward.}}
{{KV BaseEntity|css=1}}
 
== Inputs ==
{{I|ForceSpawn|Spawn an instance of the template at this origin and angle.}}
{{I|ForceSpawnAtEntityOrigin|param=target_destination|Spawn an instance of the template at the same origin and angles as a specified entity.
:{{note|Supports [[Targetname#Keywords|special targetnames]].}}
}}


==Inputs==
== Outputs ==
{{IO|ForceSpawn|Spawn an instance of the template at this origin and angle.}}
{{O|OnEntitySpawned|activator = !caller = !self|caller=hide|Fired when an instance of the entity template has been spawned.}}
{{IO|ForceSpawnAtEntityOrigin|param=target_destination|Spawn an instance of the template at the same origin and angles as a specified entity.}}
{{O|OnEntityFailedSpawn|activator = !caller = !self|caller=hide|Fired when a <code>ForceSpawn</code> input failed to spawn the template, either due to lack of space or being in player's view, depending on the spawnflags.}}
{{I BaseEntity|prel4d=1}}


==Outputs==
== See Also ==  
{{IO|OnEntitySpawned|Fired when an instance of the entity template has been spawned.}}
* {{ent|point_template}}
{{IO|OnEntityFailedSpawn|Fired when a <code>ForceSpawn</code> input failed to spawn the template, either due to lack of space or being in player's view, depending on the spawnflags.}}
{{O BaseEntity|l4d=1}}

Latest revision as of 01:20, 24 April 2025

English (en)Русский (ru)中文 (zh)Translate (Translate)
Env entity maker.png

env_entity_maker is a point entity available in all Source Source games.

C++ Class hierarchy
CEnvEntityMaker
CPointEntity
CBaseEntity
C++ env_entity_maker.cpp

It spawns a specified point_template entity at the env_entity_maker's origin. It can be set to spawn automatically or through inputs.
One of the main benefits is that the env_entity_maker can be parented to an entity, so that the ultimately spawning entities will spawn dynamically wherever the env_entity_maker happens to be.
This could be used to spawn things on top of a func_tracktrain or similar moving entity.

For further clarification:
When this entity is spawned, it forces the point_template to be teleported to the env_entity_maker's location. And if PostSpawn Inherit Angles is set, the rotation is also copied.
The point_template acts as a parent to all the entities it spawns, which in turn will cause every other entity to be teleported as well.
This allows you to build one setup of entities where point_template acts as the origin, and then use env_entity_maker to spawn this setup anywhere on the map. Similar to how func_instance works.
If you were to place the point_template in the same spot as the env_entity_maker to begin with, no movement will happen.

Flags

Enable AutoSpawn Spawn template whenever there's enough room to fit it, and the player is not looking. : [1]
AutoSpawn
Wait for entity to be destroyed. : [2]
AutoSpawn
Spawn even if the player is looking. : [4]
ForceSpawn
Spawn only if there's enough room to fit the object. : [8]
ForceSpawn
Spawn only if the player isn't looking. : [16]

Keyvalues

Name (targetname) <string>[ Edit ]
The name that other entities refer to this entity by, via Inputs/Outputs or other keyvalues (e.g. parentname or target).
Also displayed in Hammer's 2D views and Entity Report.
See also:  Generic Keyvalues, Inputs and Outputs available to all entities

Point_template To Spawn (EntityTemplate) <targetname>
Name of the point_template to spawn here. If there is an offset between the point_template and its spawned entities in hammer, that offset will be maintained when spawning happens relative to the env_entity_maker.
PostSpawn Movement Speed (PostSpawnSpeed) <float>
All entities spawned will move this many hammer units per second in the direction of PostSpawn Movement Direction.
PostSpawn Movement Direction (PostSpawnDirection) <angle>
If a PostSpawn Movement Speed is specified, this angle will be added to the movement direction of all the entities created by the template.
PostSpawn Direction Variance (PostSpawnDirectionVariance) <float>
The PostSpawn Movement Direction may vary by this many degrees. This is a radius.
PostSpawn Inherit Angles (PostSpawnInheritAngles) <boolean>
If checked, uses the parent's forward vector as the spawn direction. Otherwise uses the env_entity_maker's forward.

Inputs

ForceSpawn
Spawn an instance of the template at this origin and angle.
ForceSpawnAtEntityOrigin <targetnameRedirectInput/string>
Spawn an instance of the template at the same origin and angles as a specified entity.
Note.pngNote:Supports special targetnames.

Outputs

OnEntitySpawned
!activator = !caller = !self
Fired when an instance of the entity template has been spawned.
OnEntityFailedSpawn
!activator = !caller = !self
Fired when a ForceSpawn input failed to spawn the template, either due to lack of space or being in player's view, depending on the spawnflags.

See Also