|
Toast Engine
|
Base interface for audio-reactive volumes. More...
#include <audio_volume.hpp>


Public Member Functions | |
| virtual void | onAudioTargetEnter (const VolumeTarget &target)=0 |
| virtual void | onAudioTargetExit (const VolumeTarget &target)=0 |
| void | resetAccumulators () override |
| void | finalizeAccumulators () |
| void | setListeners (const std::vector< Box< AudioListener > > &listeners) |
| Public Member Functions inherited from toast::Volume | |
| virtual auto | evaluateTarget (const VolumeTarget &target, float weight=1.0f) -> bool=0 |
| Evaluates if a target is inside the volume or not. | |
| auto | isGlobal () const -> bool |
| void | isGlobal (bool value) |
| auto | priority () const -> int8_t |
| void | priority (int8_t value) |
| auto | weight () const -> float |
| void | weight (float value) |
| auto | blendDistance () const -> float |
| void | blendDistance (float value) |
| Public Member Functions inherited from toast::Node3D | |
| auto | raycast (glm::vec3 dir, glm::vec3 offset=glm::vec3(0.0f), float max_distance=-1.0f, bool ignore_self=true, const std::vector< int > &layers=std::vector< int > {}) const -> std::optional< physics::RayHit > |
| The nearest thing a ray from this node hits. | |
| auto | raymulticast (glm::vec3 dir, glm::vec3 offset=glm::vec3(0.0f), float max_distance=-1.0f, int max_hits=-1, bool ignore_self=true, const std::vector< int > &layers=std::vector< int > {}) const -> std::vector< physics::RayHit > |
Up to max_hits things collisions. | |
| auto | linecast (glm::vec3 from, glm::vec3 to, int max_hits=-1, bool ignore_self=true, const std::vector< int > &layers=std::vector< int > {}) const -> std::vector< physics::RayHit > |
Everything on the line between two points, nearest to from first. | |
| void | lookAt (glm::vec3 target, glm::vec3 up={0.0f, 0.0f, 1.0f}) |
| Orients the node so its forward axis points at a world-space target. | |
| void | lookAtZ (glm::vec3 target) |
| lookAt() constrained to the XY plane; the node faces the target with no roll | |
| auto | up () const -> glm::vec3 |
| auto | forward () const -> glm::vec3 |
| void | syncTransform () const |
| void | syncWorldTransform () const |
| void | refreshTransformParent () |
| auto | getTransform () const noexcept -> const glm::mat4 & |
| auto | getWorldTransform () const noexcept -> const glm::mat4 & |
| virtual void | onEditorTransformChanged () |
| Public Member Functions inherited from toast::Node | |
| auto | uid () const noexcept -> const UID & |
| Stable unique identifier, assigned at construction or deserialization. Never changes. | |
| auto | rid () const noexcept -> std::uintptr_t |
| Runtime identifier for this node, guaranteed to be unique but changes every time. | |
| auto | name () const noexcept -> std::string_view |
| Display name. Siblings may share one - this is not an identifier. | |
| void | name (std::string_view name) noexcept |
| Sets the display name. | |
| auto | enabled () const noexcept -> bool |
| Whether this node is currently active. | |
| auto | participatesIn (NodeOwnerParticipation use) const noexcept -> bool |
| auto | owner () const noexcept -> INodeOwner * |
| The World or Workspace this node belongs to. | |
| void | enabled (bool value) noexcept |
| Sets the local enabled flag and propagates the change to all children. | |
| auto | box () const noexcept -> Box< Node > |
| Returns an owning handle to this node. | |
| auto | info () const -> const NodeInfo * |
| Reflection metadata registered by the code generator. | |
| auto | sourcePrefab () const noexcept -> const assets::Handle< assets::Prefab > & |
| The prefab this node was instantiated from. | |
| auto | isInstanceRoot () const noexcept -> bool |
| Whether this node is the root of a prefab instance. | |
| auto | root () const noexcept -> Box< Node > |
| The topmost ancestor that is not the world root. | |
| auto | state () const noexcept -> NodeState |
| auto | type () const noexcept -> NodeType |
| auto | listener () noexcept -> event::Listener & |
| The event Listener owned by this node. Lazy-allocated, freed only with the node. | |
| auto | parent () noexcept -> Box< Node > |
| The immediate parent of this node. | |
| auto | children () const noexcept -> const std::vector< Box< Node > > & |
| The ordered list of direct children. | |
| auto | childrenSnapshot () const -> std::vector< Box< Node > > |
| auto | create (std::string_view type="toast::Node") noexcept -> Box< Node > |
| Creates a new child node of the given type and attaches it to this node. | |
| auto | spawn (UID uid) noexcept -> Box< Node > |
| Asynchronously instantiates a prefab as a child of this node. | |
| auto | spawn (std::string_view uri) noexcept -> Box< Node > |
| Asynchronously instantiates a prefab as a child of this node. | |
| auto | find (std::string_view query) -> Box< Node > |
| Depth-first search for a single descendant. | |
| auto | find (const UID &uid) -> Box< Node > |
| Looks up a node by UID within this node's local root. | |
| auto | search (std::string_view query) -> std::vector< Box< Node > > |
| Depth-first search for all matching descendants. | |
| auto | childrenOfType (const NodeInfo *type) const -> std::vector< Box< Node > > |
| auto | searchType (const NodeInfo *type) const -> std::vector< Box< Node > > |
| void | addDependsOn (Node &other) |
| void | removeDependsOn (Node &other) |
| void | interactsWith (Node &other) |
| Declares that the scripts of this node and of other call each other. | |
| auto | scriptRuntime () noexcept -> scripting::ScriptRuntime * |
| auto | hasTickFunction (TickFunctionList mask) const noexcept -> bool |
| auto | scriptVm (TickFunctionList func) const noexcept -> std::optional< size_t > |
| The interpreter this node runs Lua on while it executes func, empty when it runs none. | |
| auto | scriptVmAny () const noexcept -> std::optional< size_t > |
| The interpreter the scripts of this node live on whatever phase they define. | |
| auto | hasCallable (std::string_view name) const noexcept -> bool |
| void | reloadScripts () noexcept |
| Rebuilds the script runtime after a script asset changed (hot reload or attach). | |
| auto | scripts () const noexcept -> const std::vector< assets::Handle< assets::Script > > & |
| void | setScripts (std::vector< assets::Handle< assets::Script > > scripts) noexcept |
| void | addScript (const assets::Handle< assets::Script > &script) noexcept |
| template<typename R = void, typename... Args> | |
| auto | call (std::string_view name, Args &&... args) -> R |
| Invokes all C++ reflected implementations of name (base→derived) and all same-named Lua functions across every attached script, forwarding args. | |
| template<typename T> | |
| auto | get (std::string_view name) const -> T |
| Reads a named value: reflected C++ field first, then the first matching Lua instance variable. | |
| template<typename T> | |
| void | set (std::string_view name, const T &value) |
| Writes a named value: reflected C++ field if present and every Lua instance variable of that name that already exists. | |
| auto | isRecursivePrefab () const noexcept -> bool |
Protected Member Functions | |
| auto | trackTarget (const VolumeTarget &target, bool inside) -> bool |
| returns true if the inside state changed | |
| auto | hasListenersInside () const -> bool |
| virtual void | onVolumeTick () |
| called after accumulators are finalized, safe to push to FMOD here | |
| Protected Member Functions inherited from toast::Volume | |
| void | updateInspectorMessages () override |
| auto | calculateWeight (const VolumeTarget &target) const -> float |
| < | |
| virtual auto | closestPointOnBounds (glm::vec3 point) const -> glm::vec3 |
| Calculates the point on the bounds of the volume that is closest to the given point. | |
| Protected Member Functions inherited from toast::Node3D | |
| void | init () |
| X axis. | |
| Protected Member Functions inherited from toast::Node | |
| virtual void | onReflectedFieldChanged (std::string_view) |
| virtual void | onScriptsReloaded () |
| virtual void | onScriptsReloading () |
| virtual auto | luaAffinity () const noexcept -> std::optional< size_t > |
| virtual void | onScriptVarChanged (std::string_view path) |
| void | addInspectorMessage (const NodeMessage &message) |
| void | removeInspectorMessage (const NodeMessage &message) |
Additional Inherited Members | |
| Public Attributes inherited from toast::Volume | |
| glm::vec4 | debug_color = glm::vec4(0.0f, 1.0f, 0.251f, 0.5f) |
| bool | debug_fill = true |
| signals::Signal< Box< Node > > | node_exited |
| signals::Signal< Box< Node > > | node_entered |
| Public Attributes inherited from toast::Node3D | |
| glm::vec3 | position = glm::vec3(0.0f) |
| glm::quat | rotation = glm::quat(1.0f, 0.0f, 0.0f, 0.0f) |
| glm::vec3 | scale = glm::vec3(1.0f) |
| glm::vec3 | world_position = glm::vec3(0.0f) |
| glm::quat | world_rotation = glm::quat(1.0f, 0.0f, 0.0f, 0.0f) |
| glm::vec3 | world_scale = glm::vec3(1.0f) |
| Public Attributes inherited from toast::Node | |
| signals::Signal< Box< Node > > | on_enable |
| signals::Signal< Box< Node > > | on_disable |
| signals::Signal< Box< Node > > | on_begin |
| signals::Signal< Box< Node > > | on_end |
| Static Public Attributes inherited from toast::Node3D | |
| static const glm::vec3 | world_up = {0.0f, 0.0f, 1.0f} |
| static const glm::vec3 | world_forward = {0.0f, 1.0f, 0.0f} |
| Z axis. | |
| static const glm::vec3 | world_right = {1.0f, 0.0f, 0.0f} |
| Y axis. | |
| Protected Attributes inherited from toast::Node | |
| INodeOwner * | m_owner = nullptr |
Base interface for audio-reactive volumes.
Each frame, listener weights accumulate via evaluateTarget. After all listeners are processed, finalizeAccumulators is called once, then onVolumeTick fires so subclasses can push state to FMOD based on the frame's accumulated data
|
overridevirtual |
Implements toast::Volume.