This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| dragengine:modules:dragonscript:behavior_vrhandpointat [2024/03/14 16:51] – dragonlord | dragengine:modules:dragonscript:behavior_vrhandpointat [2025/05/14 10:53] (current) – dragonlord | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| {{tag> | {{tag> | ||
| <WRAP youarehere> | <WRAP youarehere> | ||
| - | [[: | + | [[: |
| </ | </ | ||
| Line 25: | Line 25: | ||
| ====== Element Class Properties ====== | ====== Element Class Properties ====== | ||
| - | Element class properties have the prefix | + | Element class properties have the prefix |
| ===== range ===== | ===== range ===== | ||
| Range in meters to test for objects supporting to be pointed at. | Range in meters to test for objects supporting to be pointed at. | ||
| - | * Full name: "vrHandPointAt.range" | + | * Full name: '' |
| * Type: float | * Type: float | ||
| - | * Restrictions: | + | * Restrictions: |
| - | * Default Value: 2 | + | * Default Value: |
| * Example (*.deeclass): | * Example (*.deeclass): | ||
| ===== origin ===== | ===== origin ===== | ||
| Test origin relative to hand controller coordinate system. | Test origin relative to hand controller coordinate system. | ||
| - | * Full name: "vrHandPointAt.origin" | + | * Full name: '' |
| - | * Type: vector | + | * Type: 3-component |
| - | * Default value: | + | * Default value: |
| * Example (*.deeclass): | * Example (*.deeclass): | ||
| ===== rotation ===== | ===== rotation ===== | ||
| Test rotation in degrees relative to hand controller coordinate system. | Test rotation in degrees relative to hand controller coordinate system. | ||
| - | * Full name: "vrHandPointAt.rotation" | + | * Full name: '' |
| - | * Type: vector | + | * Type: 3-component |
| - | * Default value: | + | * Default value: |
| * Example (*.deeclass): | * Example (*.deeclass): | ||
| ===== bone ===== | ===== bone ===== | ||
| Name of bone in controller model to attach to or empty string to attach to the controller itself. | Name of bone in controller model to attach to or empty string to attach to the controller itself. | ||
| - | * Full name: "vrHandPointAt.bone" | + | * Full name: '' |
| * Type: string | * Type: string | ||
| - | * Default Value: | + | * Default Value: |
| * Example (*.deeclass): | * Example (*.deeclass): | ||
| + | |||
| + | ====== Behavior Tree Actions ====== | ||
| + | |||
| + | This behavior adds these behavior tree actions if behavior tree is present. If behavior has non-empty identifier replace '' | ||
| + | |||
| + | ===== 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 '' | ||
| + | |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.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|'' | ||
| + | |pointAt|'' | ||
| + | |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|'' | ||
| + | |interact.query|'' | ||
| + | |interact.parameters|string|Optional parameters to use with '' | ||
| + | |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> | ||
| + | < | ||
| + | <action name=' | ||
| + | < | ||
| + | </ | ||
| + | <!-- actions here run only if VR hand point-at is enabled --> | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | ====== Behavior Tree Conditions ====== | ||
| + | |||
| + | This behavior adds these behavior tree conditions if behavior tree is present. If behavior has non-empty identifier replace '' | ||
| + | |||
| + | ===== 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|'' | ||
| + | |vrHandPointAt.pointAt|'' | ||
| + | |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|'' | ||
| + | |vrHandPointAt.interact.query|'' | ||
| + | |vrHandPointAt.interact.parameters|string|Optional parameters to use with '' | ||
| + | |||
| + | This is an example of using this condition: | ||
| + | <code xml> | ||
| + | <action name=' | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | ====== State Machine Actions ====== | ||
| + | |||
| + | Same as [[# | ||
| + | |||
| + | ====== State Machine Conditions ====== | ||
| + | |||
| + | Same as [[# | ||
| + | |||
| + | ====== State Machine Events ====== | ||
| + | |||
| + | This behavior sends these state machine events. If behavior has non-empty identifier replace '' | ||
| + | |||
| + | ===== 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 | + | * [[behavior_behaviortree|ECBehaviorBehaviorTree]]: |
| + | * [[behavior_statemachine|ECBehaviorStateMachine]]: | ||
| ====== Persistency ====== | ====== Persistency ====== | ||
| - | Saves these parameters: | + | This behavior does support element class to be persistable (setPersistable). |
| - | * Range | + | |
| - | * Test origin | + | |
| - | * Test rotation | + | |
| ====== API Documentation ====== | ====== API Documentation ====== | ||
| Line 75: | Line 172: | ||
| # | # | ||
| - | Since DragonScript Module Version | + | Since DragonScript Module Version |
| ====== Use Cases ====== | ====== Use Cases ====== | ||
| Line 119: | Line 216: | ||
| The # | The # | ||
| + | |||
| + | ====== Behavior Factory ====== | ||
| + | |||
| + | Using element class supporting adding behaviors the behavior can be added like this: | ||
| + | <code xml> | ||
| + | <?xml version=' | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | | ||
| + | < | ||
| + | <!-- required: use vr hand with id. --> | ||
| + | <string name=' | ||
| + | | ||
| + | <!-- optional: set collision filter. default value '1:0 1 2' which means | ||
| + | | ||
| + | | ||
| + | BaseGameApp.CollisionFilterBit.dynamic, | ||
| + | BaseGameApp.CollisionFilterBit.actor. | ||
| + | | ||
| + | are a list of bits to set. --> | ||
| + | <string name=' | ||
| + | | ||
| + | <!-- optional: add behavior trees. default adds all behavior trees. --> | ||
| + | <list name=' | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | | ||
| + | <!-- optional: add state machines. default adds all state machines. --> | ||
| + | <list name=' | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | | ||
| + | <!-- set element properties. omit property prefix if used inside behavior tag --> | ||
| + | <string name=' | ||
| + | </ | ||
| + | | ||
| + | < | ||
| + | ... | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| ====== Live Examples ====== | ====== Live Examples ====== | ||
| * [[https:// | * [[https:// | ||