HammeritePointEntityRigidBody3D
Core: entities. Inherits RigidBody3D
A point entity the PHYSICS decides where to put: a crate, a bottle, anything that can be knocked over, picked up or thrown.
Same interface as HammeritePointEntityNode3D, on a body that falls. Reach for it when where the thing ends up is not something the map can say - HammeritePointEntityAnimatableBody3D is for what is driven from script, and HammeritePointEntityNode3D for what only needs to be somewhere. It starts asleep where it was authored. A physics body placed in a map and left running settles, drifts and ends up somewhere nobody put it - in the editor, where an author is still looking at it, and in the seconds after a level loads. Asleep it stays exactly where it was placed, and the first thing to touch it wakes it, which is the moment the physics starts being worth having. What it costs is that a prop authored in mid-air hangs there until something disturbs it. It is not sized for you, for HammeritePointEntityAnimatableBody3D's reason: a type that can be sized hands scale to apply_entity_property(), and the subclass sizes its own meshes and collision shapes. A script writes the interface as the underscore virtuals - _set_editor_active(), _apply_entity_property(), _trigger() and the rest - and everybody calls the public method of the same name, which answers the script's override where there is one and otherwise the class's own. _set_entity(), _update_properties(), _apply_entity_property(), _get_actions() and _run_action() run after the class's own rather than instead of it, so an override does not call super(): GDScript cannot call one into a native class.
Properties
| Type | Name | Default |
|---|---|---|
HammeriteEntity | entity |
Methods
Signals
rebuild_requested
signal rebuild_requested()
As HammeritePointEntityNode3D.rebuild_requested.
Property descriptions
entity
var entity: HammeriteEntity
As HammeritePointEntityNode3D.entity.
Method descriptions
_apply_entity_property()
func _apply_entity_property(prop_name: StringName, value) -> void
As HammeritePointEntityNode3D.apply_entity_property(). rotation has been applied through place_at() before this is told, if the body is in the tree; scale never is. Move the body with place_at() here too, not by assigning its transform.
_can_simulate()
func _can_simulate() -> bool
Whether the editor offers to run this entity, and whether HammeriteMap3D.start_simulation() starts it. The default does nothing when run, so offers nothing.
_can_trigger()
func _can_trigger() -> bool
Whether something - the editor's Trigger, a HammeriteTrigger, the game - may trigger() it.
_draw_editor_gizmos()
func _draw_editor_gizmos(gizmos: HammeriteGizmoBuffer) -> void
Draw what the author should see of this entity - its bounds, where it points, how far it reaches - into gizmos. The editor calls it every frame it is up and the entity is visible; the default draws nothing.
_draws_editor_gizmos_only_when_picked()
func _draws_editor_gizmos_only_when_picked() -> bool
As HammeritePointEntityNode3D.draws_editor_gizmos_only_when_picked().
_get_aabb()
func _get_aabb() -> AABB
As HammeritePointEntityNode3D.get_aabb().
_get_actions()
func _get_actions() -> Dictionary[StringName, String]
The actions this entity offers in the editor's runtime panel, as id -> label. Every entity that says it can be triggered gets Trigger for nothing. Override _get_actions() to add more: what it answers is merged over these.
_get_editor_handles()
func _get_editor_handles() -> HammeriteEditorHandle[]
The points of this entity an author may take hold of in the viewport, or nothing where it offers none. Drawn and picked by the editor while the entity is selected; see HammeriteEditorHandle.
_get_runtime_properties()
func _get_runtime_properties() -> Dictionary[StringName, Variant]
What the inspector shows of the RUNNING thing, beside its authored properties - which are entity's, read with HammeriteEntity.get_property().
_get_runtime_property()
func _get_runtime_property(key: StringName, default_value) -> Variant
As HammeritePointEntityNode3D.get_runtime_property().
_move_editor_handle()
func _move_editor_handle(handle_id: StringName, to: Vector3) -> void
One of get_editor_handles() has been dragged to to, snapped to the grid. Read the position as whatever the value it stands for actually is.
_reset_runtime_properties()
func _reset_runtime_properties() -> void
As HammeritePointEntityNode3D.reset_runtime_properties().
_reset_simulation()
func _reset_simulation() -> void
Put the running thing back the way the map built it.
_run_action()
func _run_action(action_id: StringName) -> void
Do one of get_actions(). Override alongside it.
_set_editor_active()
func _set_editor_active(active: bool) -> void
As HammeritePointEntityNode3D.set_editor_active().
_set_entity()
func _set_entity(entity: HammeriteEntity) -> void
As HammeritePointEntityNode3D.set_entity().
_set_light_modulation()
func _set_light_modulation(modulation: float) -> void
As HammeritePointEntityNode3D.set_light_modulation().
_set_runtime_property()
func _set_runtime_property(key: StringName, value) -> void
As HammeritePointEntityNode3D.set_runtime_property().
_start_simulation()
func _start_simulation() -> void
As HammeritePointEntityNode3D.start_simulation().
_stop_simulation()
func _stop_simulation() -> void
As HammeritePointEntityNode3D.stop_simulation().
_trigger()
func _trigger(impulse) -> void
Do whatever this entity does when triggered. impulse is whatever the one triggering it handed over - null from the editor's Trigger, a HammeriteTrigger's target_impulse - and what it means is the entity's to say: a light might read a bool as on or off and toggle on null, a lift a floor number.
_update_properties()
func _update_properties() -> void
Apply every property the entity's type declares, as the entity holds it or as the type defaults it: a map saved before a property existed has no key for it, and its entities read the type's default. set_entity() calls it. Override _update_properties(), which runs once every property has been applied, for what wants them all first - gathering the probes that light the node once it knows where it stands.
apply_entity_property()
func apply_entity_property(prop_name: StringName, value) -> void
As HammeritePointEntityNode3D.apply_entity_property(). rotation has been applied through place_at() before this is told, if the body is in the tree; scale never is. Move the body with place_at() here too, not by assigning its transform.
can_simulate()
func can_simulate() -> bool
Whether the editor offers to run this entity, and whether HammeriteMap3D.start_simulation() starts it. The default does nothing when run, so offers nothing.
can_trigger()
func can_trigger() -> bool
Whether something - the editor's Trigger, a HammeriteTrigger, the game - may trigger() it.
draw_editor_gizmos()
func draw_editor_gizmos(gizmos: HammeriteGizmoBuffer) -> void
Draw what the author should see of this entity - its bounds, where it points, how far it reaches - into gizmos. The editor calls it every frame it is up and the entity is visible; the default draws nothing.
draws_editor_gizmos_only_when_picked()
func draws_editor_gizmos_only_when_picked() -> bool
As HammeritePointEntityNode3D.draws_editor_gizmos_only_when_picked().
get_aabb()
func get_aabb() -> AABB
As HammeritePointEntityNode3D.get_aabb().
get_actions()
func get_actions() -> Dictionary[StringName, String]
The actions this entity offers in the editor's runtime panel, as id -> label. Every entity that says it can be triggered gets Trigger for nothing. Override _get_actions() to add more: what it answers is merged over these.
get_editor_handles()
func get_editor_handles() -> HammeriteEditorHandle[]
The points of this entity an author may take hold of in the viewport, or nothing where it offers none. Drawn and picked by the editor while the entity is selected; see HammeriteEditorHandle.
get_runtime_properties()
func get_runtime_properties() -> Dictionary[StringName, Variant]
What the inspector shows of the RUNNING thing, beside its authored properties - which are entity's, read with HammeriteEntity.get_property().
get_runtime_property()
func get_runtime_property(key: StringName, default_value = null) -> Variant
As HammeritePointEntityNode3D.get_runtime_property().
move_editor_handle()
func move_editor_handle(handle_id: StringName, to: Vector3) -> void
One of get_editor_handles() has been dragged to to, snapped to the grid. Read the position as whatever the value it stands for actually is.
place_at()
func place_at(where: Transform3D) -> void
Put it somewhere and let it rest there, whatever the physics was in the middle of. The one way to move one of these from script. Anything that assigns to global_transform is writing to a value the physics server owns and will overwrite, which is a body that does not move and a bug that looks like the caller being ignored. where is in world space. An authored origin or turn is in the map's, so one put here from the entity has to be carried through the HammeriteMap3D's transform first.
request_rebuild()
func request_rebuild() -> void
Emit rebuild_requested, so HammeriteMap3D frees this node and builds it again from the entity.
reset_runtime_properties()
func reset_runtime_properties() -> void
As HammeritePointEntityNode3D.reset_runtime_properties().
reset_simulation()
func reset_simulation() -> void
Put the running thing back the way the map built it.
run_action()
func run_action(action_id: StringName) -> void
Do one of get_actions(). Override alongside it.
set_editor_active()
func set_editor_active(active: bool) -> void
As HammeritePointEntityNode3D.set_editor_active().
set_light_modulation()
func set_light_modulation(modulation: float) -> void
As HammeritePointEntityNode3D.set_light_modulation().
set_runtime_property()
func set_runtime_property(key: StringName, value) -> void
As HammeritePointEntityNode3D.set_runtime_property().
start_simulation()
func start_simulation() -> void
As HammeritePointEntityNode3D.start_simulation().
stop_simulation()
func stop_simulation() -> void
As HammeritePointEntityNode3D.stop_simulation().
trigger()
func trigger(impulse = null) -> void
Do whatever this entity does when triggered. impulse is whatever the one triggering it handed over - null from the editor's Trigger, a HammeriteTrigger's target_impulse - and what it means is the entity's to say: a light might read a bool as on or off and toggle on null, a lift a floor number.
update_properties()
func update_properties() -> void
Apply every property the entity's type declares, as the entity holds it or as the type defaults it: a map saved before a property existed has no key for it, and its entities read the type's default. set_entity() calls it. Override _update_properties(), which runs once every property has been applied, for what wants them all first - gathering the probes that light the node once it knows where it stands.