User Tools

Site Tools


dragengine:modules:dragonscript:behavior_vrhandpointat

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
dragengine:modules:dragonscript:behavior_vrhandpointat [2025/03/13 17:17] dragonlorddragengine:modules:dragonscript:behavior_vrhandpointat [2025/05/14 10:53] (current) dragonlord
Line 55: Line 55:
   * Default Value: empty string   * Default Value: empty string
   * Example (*.deeclass): <code xml><string name='vrHandPointAt(right).bone'>indexFinger</string></code>   * Example (*.deeclass): <code xml><string name='vrHandPointAt(right).bone'>indexFinger</string></code>
 +
 +====== Behavior Tree Actions ======
 +
 +This behavior adds these behavior tree actions if behavior tree is present. If behavior has non-empty identifier replace ''vrHandPointAt'' with ''vrHandPointAt(id)''.
 +
 +===== vrHandPointAt.update =====
 +
 +Update VR hand point-at.
 +
 +^Parameter^Value^Description^
 +|interact|string|Interact with pointed-at element. If element is absent action fails. Runs interaction with name value. If interaction with name value is absent fails action. If interaction returns false fails action. Otherwise action succeeds.|
 +|interact.parameters|string|Optional parameters to use with ''interaction''.|
 +|interactElement.assign|string|Assign point-at element to [[behavior_interactelement|ECBehaviorInteractElement]] with identifier matching value string. Action fails if no element is pointed at or interact element behavior is absent|
 +
 +This is an example of using this action:
 +<code xml>
 +<action name='vrHandPointAt.set'>
 +  <parameter name='interactElement.assign'/>
 +</action>
 +</code>
 +
 +===== vrHandPointAt.check =====
 +
 +Check one or more VR hand point-at parameters. Action succeeds if all parameter value matches their respective VR hand point-at parameter otherwise action fails. This action is typically used as first action in a sequence to run the sequence only if a VR hand point-at parameter matches (or not).
 +
 +^Parameter^Value^Description^
 +|enabled|''true'', ''false''|Point-at is enabled|
 +|pointAt|''true'', ''false''|Is pointing at element|
 +|pointAt.distance.less|float|Distance to point-at element is less than value meters|
 +|pointAt.distance.greater|float|Distance to point-at element is greater than value meters|
 +|interact.name|string|Name of interaction|
 +|interact.has|''true'', ''false''|Element is pointed-at and interaction with name ''interaction.name'' is present|
 +|interact.query|''true'', ''false''|Interact with pointed-at element and test result. Condition is true if element is pointed-at, interaction with name ''interaction.name'' is present and interaction returns true. It is recommended to use here only interactions without side effects (hence query interactions).|
 +|interact.parameters|string|Optional parameters to use with ''interaction.query''.|
 +|wait| |If present action returns BTResult.running instead of BTResult.failed to wait until the checks are all fulfilled|
 +
 +This is an example of using this action:
 +<code xml>
 +<sequence>
 +  <action name='vrHandPointAt.check'>
 +    <parameter name='enabled'>true</parameter>
 +  </action>
 +  <!-- actions here run only if VR hand point-at is enabled -->
 +</sequence>
 +</code>
 +
 +====== Behavior Tree Conditions ======
 +
 +This behavior adds these behavior tree conditions if behavior tree is present. If behavior has non-empty identifier replace ''vrHandPointAt'' with ''vrHandPointAt(id)''.
 +
 +===== vrHandPointAt.check =====
 +
 +Check one or more VR hand point-at parameters. Conditions returns true if all parameter value match their respective VR hand point-at parameter. This condition is typically used to run an action or sequence of actions as long as VR hand point-at conditions are true.
 +
 +^Parameter^Value^Description^
 +|vrHandPointAt.enabled|''true'', ''false''|Point-at is enabled|
 +|vrHandPointAt.pointAt|''true'', ''false''|Is pointing at element|
 +|vrHandPointAt.pointAt.distance.less|float|Distance to point-at element is less than value meters|
 +|vrHandPointAt.pointAt.distance.greater|float|Distance to point-at element is greater than value meters|
 +|vrHandPointAt.interact.name|string|Name of interaction|
 +|vrHandPointAt.interact.has|''true'', ''false''|Element is pointed-at and interaction with name ''interaction.name'' is present|
 +|vrHandPointAt.interact.query|''true'', ''false''|Interact with pointed-at element and test result. Condition is true if element is pointed-at, interaction with name ''interaction.name'' is present and interaction returns true. It is recommended to use here only interactions without side effects (hence query interactions).|
 +|vrHandPointAt.interact.parameters|string|Optional parameters to use with ''interaction.query''.|
 +
 +This is an example of using this condition:
 +<code xml>
 +<action name='myAction' id='doing something'>
 +  <parameter name='vrHandPointAt.enabled'>true</parameter>
 +  <condition>vrHandPointAt.check</condition>
 +</action>
 +</code>
 +
 +====== State Machine Actions ======
 +
 +Same as [[#behavior_tree_actions|Behavior Tree Actions]].
 +
 +====== State Machine Conditions ======
 +
 +Same as [[#behavior_tree_conditions|Behavior Tree Conditions]].
 +
 +====== State Machine Events ======
 +
 +This behavior sends these state machine events. If behavior has non-empty identifier replace ''vrHandPointAt'' with ''vrHandPointAt(id)''.
 +
 +===== vrHandPointAt.enabled =====
 +
 +VR hand point-at has been enabled.
 +
 +===== vrHandPointAt.disabled =====
 +
 +VR hand point-at has been disabled.
 +
 +===== vrHandPointAt.pointAt =====
 +
 +Pointing at an element. Send if pointing at an element when previously not pointing at an element or pointing at a different element.
 +
 +===== vrHandPointAt.noPointAt =====
 +
 +Not pointing at an element. Send if not pointing at an element when previously has been pointing at an element.
  
 ====== Required Behaviors ====== ====== Required Behaviors ======
Line 62: Line 161:
 ====== Optional Behaviors ====== ====== Optional Behaviors ======
  
-This behavior does not support optional behaviors.+  * [[behavior_behaviortree|ECBehaviorBehaviorTree]]: Add actions and conditions for behavior trees to use. 
 +  * [[behavior_statemachine|ECBehaviorStateMachine]]: Add actions and conditions for state machine to use and events to send to the state machine.
  
 ====== Persistency ====== ====== Persistency ======
Line 139: Line 239:
                    are a list of bits to set. -->                    are a list of bits to set. -->
     <string name='collisionFilter'>6:0 1 2 3 5</string>     <string name='collisionFilter'>6:0 1 2 3 5</string>
 +    
 +    <!-- optional: add behavior trees. default adds all behavior trees. -->
 +    <list name='behaviorTrees'>
 +      <string/> <!-- add behavior with empty identifier -->
 +      <string>default</string> <!-- add behavior with 'default' identifier -->
 +    </list>
 +    
 +    <!-- optional: add state machines. default adds all state machines. -->
 +    <list name='stateMachines'>
 +      <string/> <!-- add behavior with empty identifier -->
 +      <string>default</string> <!-- add behavior with 'default' identifier -->
 +    </list>
          
     <!-- set element properties. omit property prefix if used inside behavior tag -->     <!-- set element properties. omit property prefix if used inside behavior tag -->
dragengine/modules/dragonscript/behavior_vrhandpointat.txt · Last modified: 2025/05/14 10:53 by dragonlord