├── .gitattributes
├── .github
├── FUNDING.yml
└── workflows
│ ├── gdscript-formatter.yml
│ └── update-submodule.yml
├── .gitignore
├── LICENSE
├── README.md
├── addons
└── behaviour_toolkit
│ ├── behaviour_toolkit.gd
│ ├── behaviour_toolkit.gd.uid
│ ├── behaviour_tree
│ ├── bt_behaviour.gd
│ ├── bt_behaviour.gd.uid
│ ├── bt_composite.gd
│ ├── bt_composite.gd.uid
│ ├── bt_decorator.gd
│ ├── bt_decorator.gd.uid
│ ├── bt_leaf.gd
│ ├── bt_leaf.gd.uid
│ ├── bt_leaf_integration.gd
│ ├── bt_leaf_integration.gd.uid
│ ├── bt_root.gd
│ ├── bt_root.gd.uid
│ ├── composites
│ │ ├── bt_integrated_fsm.gd
│ │ ├── bt_integrated_fsm.gd.uid
│ │ ├── bt_random.gd
│ │ ├── bt_random.gd.uid
│ │ ├── bt_random_selector.gd
│ │ ├── bt_random_selector.gd.uid
│ │ ├── bt_random_sequence.gd
│ │ ├── bt_random_sequence.gd.uid
│ │ ├── bt_selector.gd
│ │ ├── bt_selector.gd.uid
│ │ ├── bt_sequence.gd
│ │ ├── bt_sequence.gd.uid
│ │ ├── bt_simple_parallel.gd
│ │ └── bt_simple_parallel.gd.uid
│ ├── decorators
│ │ ├── decorator_always_fail.gd
│ │ ├── decorator_always_fail.gd.uid
│ │ ├── decorator_always_succeed.gd
│ │ ├── decorator_always_succeed.gd.uid
│ │ ├── decorator_inverter.gd
│ │ ├── decorator_inverter.gd.uid
│ │ ├── decorator_limiter.gd
│ │ ├── decorator_limiter.gd.uid
│ │ ├── decorator_repeat.gd
│ │ └── decorator_repeat.gd.uid
│ └── leaves
│ │ ├── leaf_call.gd
│ │ ├── leaf_call.gd.uid
│ │ ├── leaf_condition.gd
│ │ ├── leaf_condition.gd.uid
│ │ ├── leaf_event.gd
│ │ ├── leaf_event.gd.uid
│ │ ├── leaf_print.gd
│ │ ├── leaf_print.gd.uid
│ │ ├── leaf_signal.gd
│ │ ├── leaf_signal.gd.uid
│ │ ├── leaf_tween.gd
│ │ ├── leaf_tween.gd.uid
│ │ ├── leaf_wait.gd
│ │ └── leaf_wait.gd.uid
│ ├── blackboard.gd
│ ├── blackboard.gd.uid
│ ├── finite_state_machine
│ ├── fsm.gd
│ ├── fsm.gd.uid
│ ├── fsm_state.gd
│ ├── fsm_state.gd.uid
│ ├── fsm_state_integrated_bt.gd
│ ├── fsm_state_integrated_bt.gd.uid
│ ├── fsm_state_integration_return.gd
│ ├── fsm_state_integration_return.gd.uid
│ ├── fsm_transition.gd
│ └── fsm_transition.gd.uid
│ ├── icons
│ ├── Add.svg
│ ├── Add.svg.import
│ ├── BTBehaviour.svg
│ ├── BTBehaviour.svg.import
│ ├── BTComposite.svg
│ ├── BTComposite.svg.import
│ ├── BTCompositeIntegration.svg
│ ├── BTCompositeIntegration.svg.import
│ ├── BTCompositeRandom.svg
│ ├── BTCompositeRandom.svg.import
│ ├── BTCompositeRandomSelector.svg
│ ├── BTCompositeRandomSelector.svg.import
│ ├── BTCompositeRandomSequence.svg
│ ├── BTCompositeRandomSequence.svg.import
│ ├── BTCompositeSelector.svg
│ ├── BTCompositeSelector.svg.import
│ ├── BTCompositeSequence.svg
│ ├── BTCompositeSequence.svg.import
│ ├── BTDecorator.svg
│ ├── BTDecorator.svg.import
│ ├── BTDecoratorFail.svg
│ ├── BTDecoratorFail.svg.import
│ ├── BTDecoratorLimiter.svg
│ ├── BTDecoratorLimiter.svg.import
│ ├── BTDecoratorNot.svg
│ ├── BTDecoratorNot.svg.import
│ ├── BTDecoratorRepeat.svg
│ ├── BTDecoratorRepeat.svg.import
│ ├── BTDecoratorSucceed.svg
│ ├── BTDecoratorSucceed.svg.import
│ ├── BTLeaf.svg
│ ├── BTLeaf.svg.import
│ ├── BTLeafCall.svg
│ ├── BTLeafCall.svg.import
│ ├── BTLeafCondition.svg
│ ├── BTLeafCondition.svg.import
│ ├── BTLeafIntegration.svg
│ ├── BTLeafIntegration.svg.import
│ ├── BTLeafPrint.svg
│ ├── BTLeafPrint.svg.import
│ ├── BTLeafSignal.svg
│ ├── BTLeafSignal.svg.import
│ ├── BTLeafTween.svg
│ ├── BTLeafTween.svg.import
│ ├── BTLeafWait.svg
│ ├── BTLeafWait.svg.import
│ ├── BTRoot.svg
│ ├── BTRoot.svg.import
│ ├── BTSimpleParallel.svg
│ ├── BTSimpleParallel.svg.import
│ ├── Blackboard.svg
│ ├── Blackboard.svg.import
│ ├── EditorBTRoot.svg
│ ├── EditorBTRoot.svg.import
│ ├── EditorFiniteStateMachine.svg
│ ├── EditorFiniteStateMachine.svg.import
│ ├── FSMState.svg
│ ├── FSMState.svg.import
│ ├── FSMStateIntegration.svg
│ ├── FSMStateIntegration.svg.import
│ ├── FSMStateIntegrationReturn.svg
│ ├── FSMStateIntegrationReturn.svg.import
│ ├── FSMTransition.svg
│ ├── FSMTransition.svg.import
│ ├── FiniteStateMachine.svg
│ ├── FiniteStateMachine.svg.import
│ ├── Gear.svg
│ ├── Gear.svg.import
│ ├── Help.svg
│ ├── Help.svg.import
│ ├── Logo.png
│ ├── Logo.png.import
│ ├── Logo.svg
│ ├── Logo.svg.import
│ ├── MainIcon.svg.import
│ ├── Search.svg
│ ├── Search.svg.import
│ ├── icon.png
│ ├── icon.png.import
│ ├── placeholder.svg
│ └── placeholder.svg.import
│ ├── inspector_plugin.gd
│ ├── inspector_plugin.gd.uid
│ ├── plugin.cfg
│ ├── plugin.gd
│ ├── plugin.gd.uid
│ └── ui
│ ├── toolkit_ui.gd
│ ├── toolkit_ui.gd.uid
│ ├── toolkit_ui.tscn
│ └── utils
│ ├── update_manager.gd
│ └── update_manager.gd.uid
├── docs
├── documentation.md
├── screenshot-ui.PNG
├── screenshot-ui.PNG.import
├── thumbnail.svg
└── thumbnail.svg.import
├── examples
├── assets
│ ├── actors
│ │ ├── tile_0084.png.import
│ │ ├── tile_0085.png.import
│ │ ├── tile_0086.png.import
│ │ ├── tile_0087.png.import
│ │ ├── tile_0088.png.import
│ │ ├── tile_0108.png.import
│ │ ├── tile_0109.png.import
│ │ ├── tile_0110.png.import
│ │ ├── tile_0111.png.import
│ │ ├── tile_0112.png.import
│ │ ├── tile_0121.png.import
│ │ ├── tiny_barbarian.png
│ │ ├── tiny_barbarian.png.import
│ │ ├── tiny_blacksmith.png
│ │ ├── tiny_blacksmith.png.import
│ │ ├── tiny_crab.png
│ │ ├── tiny_crab.png.import
│ │ ├── tiny_cyclops.png
│ │ ├── tiny_cyclops.png.import
│ │ ├── tiny_evil wizard.png
│ │ ├── tiny_evil wizard.png.import
│ │ ├── tiny_ghost.png
│ │ ├── tiny_ghost.png.import
│ │ ├── tiny_goohst.png
│ │ ├── tiny_goohst.png.import
│ │ ├── tiny_knight.png
│ │ ├── tiny_knight.png.import
│ │ ├── tiny_ranger.png
│ │ ├── tiny_ranger.png.import
│ │ ├── tiny_viking.png
│ │ ├── tiny_viking.png.import
│ │ ├── tiny_village.png
│ │ ├── tiny_village.png.import
│ │ ├── tiny_wizard.png
│ │ └── tiny_wizard.png.import
│ ├── coin.png
│ ├── coin.png.import
│ ├── kenney_tinytown.png
│ ├── kenney_tinytown.png.import
│ └── tileset.tres
├── behaviour_example
│ ├── Camera.gd
│ ├── Camera.gd.uid
│ ├── NPCs
│ │ ├── leaves
│ │ │ ├── IsAlive.gd
│ │ │ ├── IsAlive.gd.uid
│ │ │ ├── IsHydrated.gd
│ │ │ ├── IsHydrated.gd.uid
│ │ │ ├── RandomPOI.gd
│ │ │ ├── RandomPOI.gd.uid
│ │ │ ├── UseBottle.gd
│ │ │ ├── UseBottle.gd.uid
│ │ │ ├── WalkToWell.gd
│ │ │ └── WalkToWell.gd.uid
│ │ ├── states
│ │ │ ├── state_ghost.gd
│ │ │ ├── state_ghost.gd.uid
│ │ │ ├── state_idle.gd
│ │ │ ├── state_idle.gd.uid
│ │ │ ├── state_refreshing.gd
│ │ │ ├── state_refreshing.gd.uid
│ │ │ ├── state_transformt.gd
│ │ │ ├── state_transformt.gd.uid
│ │ │ ├── state_walking.gd
│ │ │ ├── state_walking.gd.uid
│ │ │ ├── trans_on_revive.gd
│ │ │ ├── trans_on_revive.gd.uid
│ │ │ ├── trans_on_start_walking.gd
│ │ │ ├── trans_on_start_walking.gd.uid
│ │ │ ├── trans_on_stop_walking.gd
│ │ │ └── trans_on_stop_walking.gd.uid
│ │ └── villager.tscn
│ ├── actor
│ │ ├── actor.gd
│ │ └── actor.gd.uid
│ ├── behaviour_example.gd
│ ├── behaviour_example.gd.uid
│ ├── behaviour_example.tscn
│ └── global_blackboard.tres
└── fsm_character_controller
│ ├── MrBlacksmith.gd
│ ├── MrBlacksmith.gd.uid
│ ├── crab.tscn
│ ├── fsm_character_controller.tscn
│ ├── mr_blacksmith.tscn
│ ├── states
│ ├── IDLE.gd
│ ├── IDLE.gd.uid
│ ├── MOVING.gd
│ ├── MOVING.gd.uid
│ ├── SPRINTING.gd
│ └── SPRINTING.gd.uid
│ └── transitions
│ ├── onStartMoving.gd
│ ├── onStartMoving.gd.uid
│ ├── onStartSprinting.gd
│ ├── onStartSprinting.gd.uid
│ ├── onStopMoving.gd
│ ├── onStopMoving.gd.uid
│ ├── onStopSprinting.gd
│ └── onStopSprinting.gd.uid
├── icon.svg
├── icon.svg.import
├── project.godot
└── script_templates
├── BTComposite
├── new_composite.gd
└── new_composite.gd.uid
├── BTDecorator
├── new_decorator.gd
└── new_decorator.gd.uid
├── BTLeaf
├── new_leaf.gd
└── new_leaf.gd.uid
├── FSMState
├── new_state.gd
└── new_state.gd.uid
└── FSMTransition
├── new_transition.gd
└── new_transition.gd.uid
/.gitattributes:
--------------------------------------------------------------------------------
1 | # Normalize EOL for all files that Git considers text files.
2 | * text=auto eol=lf
3 |
--------------------------------------------------------------------------------
/.github/FUNDING.yml:
--------------------------------------------------------------------------------
1 | # These are supported funding model platforms
2 |
3 | github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
4 | patreon: # Replace with a single Patreon username
5 | open_collective: # Replace with a single Open Collective username
6 | ko_fi: pat02
7 | tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
8 | community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
9 | liberapay: # Replace with a single Liberapay username
10 | issuehunt: # Replace with a single IssueHunt username
11 | lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry
12 | polar: # Replace with a single Polar username
13 | buy_me_a_coffee: # Replace with a single Buy Me a Coffee username
14 | custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
15 |
--------------------------------------------------------------------------------
/.github/workflows/gdscript-formatter.yml:
--------------------------------------------------------------------------------
1 | # This workflow will format all GDScript files in the repository using GDToolkit
2 |
3 | name: GDScript Formatter
4 |
5 | on: workflow_dispatch
6 |
7 | jobs:
8 | build:
9 |
10 | runs-on: ubuntu-latest
11 |
12 | steps:
13 | - name: Checkout
14 | uses: actions/checkout@v2
15 |
16 | - name: Set up Python 3.9
17 | uses: actions/setup-python@v2
18 | with:
19 | python-version: 3.9
20 |
21 | - name: Install dependencies
22 | run: |
23 | python -m pip install --upgrade pip
24 | pip3 install "gdtoolkit==4.*"
25 |
26 | - name: Format with GDToolkit
27 | run: |
28 | # Format all files in the repository
29 | gdformat .
30 |
31 | - name: Commit changes
32 | run: |
33 | git config --global user.name 'GitHub Action'
34 | git config --global user.email 'action@github.com'
35 |
36 | git add -A
37 | git commit -m "Format GDScript files with GDToolkit"
38 | git push
39 |
--------------------------------------------------------------------------------
/.github/workflows/update-submodule.yml:
--------------------------------------------------------------------------------
1 | # This workflow will update the submodule branch
2 |
3 | name: Update Submodule Branch
4 |
5 | on:
6 | push:
7 | branches:
8 | - main
9 |
10 | jobs:
11 | submodule:
12 |
13 | runs-on: ubuntu-latest
14 |
15 | steps:
16 | - name: Checkout
17 | uses: actions/checkout@v2
18 |
19 | - name: Setup Git
20 | run: |
21 | git config --global user.name 'GitHub Action'
22 | git config --global user.email 'action@github.com'
23 | git fetch
24 |
25 | - name: Clean Submodule
26 | run: |
27 | git checkout submodule
28 | git rm -r .
29 |
30 | - name: Update from Main
31 | run: |
32 | git checkout main -- addons/behaviour_toolkit
33 | mv addons/behaviour_toolkit/* .
34 | git rm -r addons/behaviour_toolkit
35 |
36 | - name: Commit to Submodule
37 | continue-on-error: true
38 | run: |
39 | git add -A
40 | git commit -am "Updated Submodule from Main"
41 | git push
42 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Godot 4+ specific ignores
2 | .godot/
3 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2023 Pat
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/behaviour_toolkit.gd:
--------------------------------------------------------------------------------
1 | @icon("res://addons/behaviour_toolkit/icons/Gear.svg")
2 | class_name BehaviourToolkit extends Node
3 | ## Base class for Behaviour Toolkit plugin nodes.
4 |
5 |
6 | enum LogType {
7 | DEFAULT,
8 | WARNING,
9 | ERROR,
10 | }
11 |
12 |
13 | class Logger:
14 | extends BehaviourToolkit
15 | ## Logger class for Behaviour Toolkit plugin.
16 |
17 | ## Main color for logger messages.
18 | const COLOR_MAIN: String = "Orange"
19 | ## Accent color for logger messages.
20 | const COLOR_ACCENT: String = "Blue"
21 | ## Warning color for logger messages.
22 | const COLOR_WARNING: String = "Yellow"
23 | ## Error color for logger messages.
24 | const COLOR_ERROR: String = "Red"
25 |
26 | ## Log a message to the console with the Behaviour Toolkit prefix.
27 | static func say(message: String, caller: Node = null, type: LogType = LogType.DEFAULT) -> void:
28 | var log_message: String
29 | log_message = colorize("[Behaviour Toolkit] ", COLOR_MAIN)
30 |
31 | if not type == LogType.DEFAULT:
32 | var color: String
33 | match type:
34 | LogType.WARNING:
35 | color = COLOR_WARNING
36 | LogType.ERROR:
37 | color = COLOR_ERROR
38 |
39 | log_message += colorize("[" + LogType.keys()[type] + "] ", color)
40 |
41 | if caller != null:
42 |
43 | log_message += colorize(caller.name + " ", COLOR_ACCENT)
44 |
45 | var actor: Node = null
46 | if "actor" in caller:
47 | actor = caller.actor
48 |
49 | if actor:
50 | log_message += colorize("@ " + actor.name + " ", COLOR_ACCENT)
51 |
52 |
53 | log_message += message
54 |
55 | print_rich(log_message)
56 |
57 | ## Colorize a message with a given color tag in BBCode format.
58 | static func colorize(message: String, color: String) -> String:
59 | return "[color=" + color + "]" + message + "[/color]"
60 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/behaviour_toolkit.gd.uid:
--------------------------------------------------------------------------------
1 | uid://bgf51p6npam1h
2 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/behaviour_tree/bt_behaviour.gd:
--------------------------------------------------------------------------------
1 | @icon("res://addons/behaviour_toolkit/icons/BTBehaviour.svg")
2 | class_name BTBehaviour extends BehaviourToolkit
3 | ## Base class for building behaviour nodes in BehaviourToolkit.
4 | ##
5 | ## Behaviours can return [enum BTBehaviour.BTStatus.SUCCESS],
6 | ## [enum BTBehaviour.BTStatus.FAILURE] or [enum BTBehaviour.BTStatus.RUNNING]
7 | ## which control the flow of the behaviours in Behaviour Tree system.
8 |
9 |
10 | enum BTStatus {
11 | SUCCESS,
12 | FAILURE,
13 | RUNNING,
14 | }
15 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/behaviour_tree/bt_behaviour.gd.uid:
--------------------------------------------------------------------------------
1 | uid://ckc06i2c1qor8
2 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/behaviour_tree/bt_composite.gd:
--------------------------------------------------------------------------------
1 | @tool
2 | @icon("res://addons/behaviour_toolkit/icons/BTComposite.svg")
3 | class_name BTComposite extends BTBehaviour
4 | ## Base class to build composite behaviour nodes.
5 | ##
6 | ## Composites can hold multiple behaviour nodes and evalute/execute them
7 | ## based on custom logic based on their return values.
8 |
9 |
10 | ## The leaves under the composite node.
11 | @onready var leaves: Array = get_children()
12 |
13 |
14 | func _get_configuration_warnings() -> PackedStringArray:
15 | var warnings: Array = []
16 |
17 | var parent = get_parent()
18 | var children = get_children()
19 |
20 | if not parent is BTComposite and not parent is BTRoot and not parent is BTDecorator:
21 | warnings.append("BTComposite node must be a child of BTComposite or BTRoot node.")
22 |
23 | if children.size() == 0:
24 | warnings.append("BTComposite node must have at least one child.")
25 |
26 | if children.size() == 1:
27 | warnings.append("BTComposite node should have more than one child.")
28 |
29 | return warnings
30 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/behaviour_tree/bt_composite.gd.uid:
--------------------------------------------------------------------------------
1 | uid://bx0jrl2lsjrsr
2 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/behaviour_tree/bt_decorator.gd:
--------------------------------------------------------------------------------
1 | @tool
2 | @icon("res://addons/behaviour_toolkit/icons/BTDecorator.svg")
3 | class_name BTDecorator extends BTBehaviour
4 | ## Base class for decorators.
5 | ##
6 | ## Decorators are used to augment the behaviour of a leaf.[br]
7 | ## Think of it as another layer of logic that is executed before the leaf.
8 |
9 |
10 | ## The leaf the decorator is decorating.
11 | @onready var leaf: BTBehaviour = _get_leaf()
12 |
13 |
14 | func _get_leaf() -> BTBehaviour:
15 | if get_child_count() == 0:
16 | return null
17 |
18 | return get_child(0)
19 |
20 |
21 | func _get_configuration_warnings() -> PackedStringArray:
22 | var warnings: Array = []
23 |
24 | var parent = get_parent()
25 | var children = get_children()
26 |
27 | if not parent is BTComposite and not parent is BTRoot:
28 | warnings.append("Decorator node should be a child of a composite node or the root node.")
29 |
30 | if children.size() == 0:
31 | warnings.append("Decorator node should have a child.")
32 | elif children.size() > 1:
33 | warnings.append("Decorator node should have only one child.")
34 | elif not children[0] is BTBehaviour:
35 | warnings.append("Decorator node should have a BTBehaviour node as a child.")
36 |
37 | return warnings
38 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/behaviour_tree/bt_decorator.gd.uid:
--------------------------------------------------------------------------------
1 | uid://doxmlla1nmqmf
2 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/behaviour_tree/bt_leaf.gd:
--------------------------------------------------------------------------------
1 | @tool
2 | @icon("res://addons/behaviour_toolkit/icons/BTLeaf.svg")
3 | class_name BTLeaf extends BTBehaviour
4 | ## A leaf is where the actual logic that controlls the actor or other nodes
5 | ## is implemented.
6 | ##
7 | ## It is the base class for all leaves and can be extended to implement
8 | ## custom behaviours.[br]
9 | ## The [code]tick(actor: Node, blackboard: Blackboard)[/code] method is called
10 | ## every frame and should return the status.
11 |
12 |
13 | func tick(_delta: float, _actor: Node, _blackboard: Blackboard) -> BTStatus:
14 | return BTStatus.SUCCESS
15 |
16 |
17 | func _get_configuration_warnings() -> PackedStringArray:
18 | var warnings: Array = []
19 |
20 | var parent = get_parent()
21 | var children = get_children()
22 |
23 | if not parent is BTBehaviour and not parent is BTRoot:
24 | warnings.append("BTLeaf node must be a child of BTBehaviour or BTRoot node.")
25 |
26 | if children.size() > 0:
27 | warnings.append("BTLeaf node must not have any children.")
28 |
29 | return warnings
30 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/behaviour_tree/bt_leaf.gd.uid:
--------------------------------------------------------------------------------
1 | uid://c584shlo6w6it
2 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/behaviour_tree/bt_leaf_integration.gd:
--------------------------------------------------------------------------------
1 | @tool
2 | @icon("res://addons/behaviour_toolkit/icons/BTLeafIntegration.svg")
3 | class_name BTLeafIntegration extends BTLeaf
4 | ## Base class to build [BTLeaf]s that act on [FiniteStateMachine].
5 |
6 |
7 | @export var state_machine: FiniteStateMachine:
8 | set(value):
9 | state_machine = value
10 | update_configuration_warnings()
11 |
12 |
13 | func _get_configuration_warnings() -> PackedStringArray:
14 | var warnings: Array = []
15 |
16 | warnings.append_array(super._get_configuration_warnings())
17 |
18 | if state_machine == null:
19 | warnings.append("No state machine set.")
20 |
21 | return warnings
22 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/behaviour_tree/bt_leaf_integration.gd.uid:
--------------------------------------------------------------------------------
1 | uid://31vloxyg6te5
2 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/behaviour_tree/bt_root.gd.uid:
--------------------------------------------------------------------------------
1 | uid://d11c6gwrjou0w
2 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/behaviour_tree/composites/bt_integrated_fsm.gd:
--------------------------------------------------------------------------------
1 | @tool
2 | @icon("res://addons/behaviour_toolkit/icons/BTCompositeIntegration.svg")
3 | class_name BTIntegratedFSM extends BTComposite
4 | ## A composite behaviour node that allows to integrate [FiniteStateMachine]
5 | ## in a behaviour tree by handling FSM node.
6 | ##
7 | ## To nest a FSM you need to add a [FiniteStateMachine] as a first child of
8 | ## [BTIntegratedFSM]. When this behaviour is evaluated the child FSM
9 | ## is set to active.
10 | ## [br][br]
11 | ## After the FSM is started it returns status
12 | ## [enum BTBehaviour.BTStatus.RUNNING]. If FSM return
13 | ## [enum BTBehaviour.BTStatus.SUCCESS] or [enum BTBehaviour.BTStatus.FAILURE]
14 | ## the child FSM is stopped.
15 |
16 |
17 | var state_machine: FiniteStateMachine = null
18 |
19 |
20 | func _ready():
21 | if not Engine.is_editor_hint():
22 | state_machine = _get_machine()
23 |
24 |
25 |
26 | func tick(_delta: float, _actor: Node, _blackboard: Blackboard) -> BTStatus:
27 | if state_machine.active == false:
28 | state_machine.start()
29 |
30 | if not state_machine.current_bt_status == BTStatus.RUNNING:
31 | state_machine.active = false
32 |
33 | return state_machine.current_bt_status
34 |
35 |
36 | func _get_machine() -> FiniteStateMachine:
37 | if get_child_count() == 0:
38 | return null
39 | else:
40 | return get_child(0)
41 |
42 |
43 | func _get_configuration_warnings() -> PackedStringArray:
44 | var warnings: Array = []
45 | var children = get_children()
46 |
47 | if children.size() == 0:
48 | warnings.append("BTIntegratedFSM must have a child node. The first child will be used as the state machine.")
49 |
50 | if children.size() > 1:
51 | warnings.append("BTIntegratedFSM can only have one child node. The first child will be used as the state machine.")
52 |
53 | if children.size() == 1:
54 | if not children[0] is FiniteStateMachine:
55 | warnings.append("BTIntegratedFSM's child node must be a FiniteStateMachine. The first child will be used as the state machine.")
56 |
57 | return warnings
58 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/behaviour_tree/composites/bt_integrated_fsm.gd.uid:
--------------------------------------------------------------------------------
1 | uid://bpln78cwmomyr
2 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/behaviour_tree/composites/bt_random.gd:
--------------------------------------------------------------------------------
1 | @icon("res://addons/behaviour_toolkit/icons/BTCompositeRandom.svg")
2 | class_name BTRandom extends BTComposite
3 | ## Randomly selects a child to run.
4 |
5 |
6 | @export var use_seed: bool = false
7 | @export var seed: String = ""
8 |
9 |
10 | var rng = RandomNumberGenerator.new()
11 | var active_leave: BTBehaviour
12 |
13 |
14 | func _ready():
15 | if use_seed:
16 | rng.seed = hash(seed)
17 |
18 |
19 | func tick(delta: float, actor: Node, blackboard: Blackboard):
20 | if active_leave == null:
21 | active_leave = leaves[rng.randi() % leaves.size()]
22 |
23 | var response = active_leave.tick(delta, actor, blackboard)
24 |
25 | if response == BTStatus.RUNNING:
26 | return response
27 |
28 | active_leave = null
29 | return response
30 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/behaviour_tree/composites/bt_random.gd.uid:
--------------------------------------------------------------------------------
1 | uid://c6si2venemcbd
2 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/behaviour_tree/composites/bt_random_selector.gd:
--------------------------------------------------------------------------------
1 | @tool
2 | @icon("res://addons/behaviour_toolkit/icons/BTCompositeRandomSelector.svg")
3 | class_name BTRandomSelector extends BTComposite
4 | ## The selector composite but with a random order of the leaves.
5 |
6 |
7 | var is_shuffled: bool = false
8 | var current_leaf: int = 0
9 |
10 |
11 | func tick(delta: float, actor: Node, blackboard: Blackboard):
12 | if not is_shuffled:
13 | leaves.shuffle()
14 |
15 | if current_leaf > leaves.size() -1:
16 | current_leaf = 0
17 | is_shuffled = false
18 | return BTStatus.FAILURE
19 |
20 | var response = leaves[current_leaf].tick(delta, actor, blackboard)
21 |
22 | if response == BTStatus.SUCCESS:
23 | current_leaf = 0
24 | is_shuffled = false
25 | return response
26 |
27 | if response == BTStatus.RUNNING:
28 | return response
29 |
30 | current_leaf += 1
31 | return BTStatus.RUNNING
32 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/behaviour_tree/composites/bt_random_selector.gd.uid:
--------------------------------------------------------------------------------
1 | uid://fby1n4bgse0d
2 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/behaviour_tree/composites/bt_random_sequence.gd:
--------------------------------------------------------------------------------
1 | @tool
2 | @icon("res://addons/behaviour_toolkit/icons/BTCompositeRandomSequence.svg")
3 | class_name BTRandomSequence extends BTComposite
4 | ## The squence composite but with a random order of the leaves.
5 |
6 |
7 | var is_shuffled: bool = false
8 | var current_leaf: int = 0
9 |
10 |
11 | func tick(delta: float, actor: Node, blackboard: Blackboard):
12 | if not is_shuffled:
13 | leaves.shuffle()
14 |
15 | if current_leaf > leaves.size() -1:
16 | current_leaf = 0
17 | is_shuffled = false
18 | return BTStatus.SUCCESS
19 |
20 | var response = leaves[current_leaf].tick(delta, actor, blackboard)
21 |
22 | if response == BTStatus.RUNNING:
23 | return response
24 |
25 | if response == BTStatus.FAILURE:
26 | current_leaf = 0
27 | is_shuffled = false
28 | return response
29 |
30 | current_leaf += 1
31 | return BTStatus.RUNNING
32 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/behaviour_tree/composites/bt_random_sequence.gd.uid:
--------------------------------------------------------------------------------
1 | uid://dad82i0b0483q
2 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/behaviour_tree/composites/bt_selector.gd:
--------------------------------------------------------------------------------
1 | @tool
2 | @icon("res://addons/behaviour_toolkit/icons/BTCompositeSelector.svg")
3 | class_name BTSelector extends BTComposite
4 | ## Selects the first child that succeeds, or fails if none do.
5 |
6 |
7 | var current_leaf: int = 0
8 |
9 |
10 | func tick(delta: float, actor: Node, blackboard: Blackboard):
11 | if current_leaf > leaves.size() -1:
12 | current_leaf = 0
13 | return BTStatus.FAILURE
14 |
15 | var response = leaves[current_leaf].tick(delta, actor, blackboard)
16 |
17 | if response == BTStatus.SUCCESS:
18 | current_leaf = 0
19 | return response
20 |
21 | if response == BTStatus.RUNNING:
22 | return response
23 |
24 | current_leaf += 1
25 | return BTStatus.RUNNING
26 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/behaviour_tree/composites/bt_selector.gd.uid:
--------------------------------------------------------------------------------
1 | uid://8rcyavsdmew5
2 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/behaviour_tree/composites/bt_sequence.gd:
--------------------------------------------------------------------------------
1 | @tool
2 | @icon("res://addons/behaviour_toolkit/icons/BTCompositeSequence.svg")
3 | class_name BTSequence extends BTComposite
4 | ## A sequence node will return success if all of its children return success.
5 |
6 |
7 | var current_leaf: int = 0
8 |
9 |
10 | func tick(delta: float, actor: Node, blackboard: Blackboard):
11 | if current_leaf > leaves.size() -1:
12 | current_leaf = 0
13 | return BTStatus.SUCCESS
14 |
15 | var response = leaves[current_leaf].tick(delta, actor, blackboard)
16 |
17 | if response == BTStatus.RUNNING:
18 | return response
19 |
20 | if response == BTStatus.FAILURE:
21 | current_leaf = 0
22 | return response
23 |
24 |
25 | current_leaf += 1
26 | return BTStatus.RUNNING
27 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/behaviour_tree/composites/bt_sequence.gd.uid:
--------------------------------------------------------------------------------
1 | uid://dpr2xa1e5hy8u
2 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/behaviour_tree/composites/bt_simple_parallel.gd:
--------------------------------------------------------------------------------
1 | @tool
2 | @icon("res://addons/behaviour_toolkit/icons/BTSimpleParallel.svg")
3 | class_name BTSimpleParallel extends BTComposite
4 | ## Executes all children in parallel, and returns SUCCESS depending on the
5 | ## policy. It returns FAILURE if any child returns FAILURE.
6 |
7 |
8 | enum ParallelPolicy {
9 | SUCCESS_ON_ALL, ## Returns SUCCESS if all children return SUCCESS.
10 | SUCCESS_ON_ONE, ## Returns SUCCESS if any child returns SUCCESS.
11 | }
12 |
13 |
14 | ## Select when to return SUCCESS.
15 | @export var policy: ParallelPolicy = ParallelPolicy.SUCCESS_ON_ALL
16 | ## If true, children that have already returned SUCCESS will not be ticked again, until one of the children returns FAILURE or the composite is reset.
17 | @export var synchronize: bool = false
18 |
19 |
20 | @onready var responses: Dictionary = {}
21 |
22 |
23 | func tick(delta: float, actor: Node, blackboard: Blackboard):
24 | var leave_counter = 0
25 | for leave in leaves:
26 | # If the Parrallel is synchronized, skip leaves that have already returned SUCCESS.
27 | if synchronize and (responses.get(leave_counter) == BTStatus.SUCCESS):
28 | leave_counter += 1
29 | continue
30 |
31 | var response = leave.tick(delta, actor, blackboard)
32 | responses[leave_counter] = response
33 | leave_counter += 1
34 |
35 | # Abort if any child returns FAILURE.
36 | if response == BTStatus.FAILURE:
37 | responses.clear()
38 | return BTStatus.FAILURE
39 |
40 | if policy == ParallelPolicy.SUCCESS_ON_ONE:
41 | if response == BTStatus.SUCCESS:
42 | responses.clear()
43 | return BTStatus.SUCCESS
44 |
45 | if policy == ParallelPolicy.SUCCESS_ON_ALL:
46 | var index = 0
47 | for response in responses.values():
48 | if response != BTStatus.SUCCESS:
49 | return BTStatus.RUNNING
50 |
51 | index += 1
52 |
53 | responses.clear()
54 | return BTStatus.SUCCESS
55 |
56 | return BTStatus.RUNNING
57 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/behaviour_tree/composites/bt_simple_parallel.gd.uid:
--------------------------------------------------------------------------------
1 | uid://bsjk440mp80ij
2 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/behaviour_tree/decorators/decorator_always_fail.gd:
--------------------------------------------------------------------------------
1 | @tool
2 | @icon("res://addons/behaviour_toolkit/icons/BTDecoratorFail.svg")
3 | class_name BTAlwaysFail extends BTDecorator
4 | ## The leaf will always fail after running.
5 |
6 |
7 | func tick(delta: float, actor: Node, blackboard: Blackboard):
8 | var response = leaf.tick(delta, actor, blackboard)
9 |
10 | if response == BTStatus.RUNNING:
11 | return BTStatus.RUNNING
12 |
13 | return BTStatus.FAILURE
14 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/behaviour_tree/decorators/decorator_always_fail.gd.uid:
--------------------------------------------------------------------------------
1 | uid://do841lxmfjeev
2 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/behaviour_tree/decorators/decorator_always_succeed.gd:
--------------------------------------------------------------------------------
1 | @tool
2 | @icon("res://addons/behaviour_toolkit/icons/BTDecoratorSucceed.svg")
3 | class_name BTAlwaysSucceed extends BTDecorator
4 | ## The leaf will always succeed after running.
5 |
6 |
7 | func tick(delta: float, actor: Node, blackboard: Blackboard):
8 | var response = leaf.tick(delta, actor, blackboard)
9 |
10 | if response == BTStatus.RUNNING:
11 | return BTStatus.RUNNING
12 |
13 | return BTStatus.SUCCESS
14 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/behaviour_tree/decorators/decorator_always_succeed.gd.uid:
--------------------------------------------------------------------------------
1 | uid://dxqf7gmkqfe2e
2 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/behaviour_tree/decorators/decorator_inverter.gd:
--------------------------------------------------------------------------------
1 | @tool
2 | @icon("res://addons/behaviour_toolkit/icons/BTDecoratorNot.svg")
3 | class_name BTInverter extends BTDecorator
4 | ## The result of the leaf is inverted.
5 |
6 |
7 | func tick(delta: float, actor: Node, blackboard: Blackboard):
8 | var response = leaf.tick(delta, actor, blackboard)
9 |
10 | if response == BTStatus.SUCCESS:
11 | return BTStatus.FAILURE
12 |
13 | if response == BTStatus.FAILURE:
14 | return BTStatus.SUCCESS
15 |
16 | return BTStatus.RUNNING
17 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/behaviour_tree/decorators/decorator_inverter.gd.uid:
--------------------------------------------------------------------------------
1 | uid://qkhn2rt2l61f
2 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/behaviour_tree/decorators/decorator_limiter.gd:
--------------------------------------------------------------------------------
1 | @tool
2 | @icon("res://addons/behaviour_toolkit/icons/BTDecoratorLimiter.svg")
3 | class_name BTLimiter extends BTDecorator
4 | ## Limits the number of times a leaf can be run. (The leaf will fully run,
5 | ## before triggering the limit.)
6 |
7 |
8 | @export var limit: int = 1
9 | @export var on_limit: BTStatus = BTStatus.FAILURE
10 |
11 |
12 | @onready var cache_key = 'limiter_%s' % self.get_instance_id()
13 |
14 |
15 | func tick(delta: float, actor: Node, blackboard: Blackboard):
16 | var current_count = blackboard.get_value(cache_key)
17 | if current_count == null:
18 | current_count = 0
19 |
20 | if current_count < limit:
21 | var response = leaf.tick(delta, actor, blackboard)
22 | if response == BTStatus.RUNNING:
23 | return response
24 |
25 | blackboard.set_value(cache_key, current_count + 1)
26 | return response
27 | else:
28 | return on_limit
29 |
30 |
31 | func reset(actor: Node, blackboard: Blackboard):
32 | blackboard.set_value(cache_key, 0)
33 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/behaviour_tree/decorators/decorator_limiter.gd.uid:
--------------------------------------------------------------------------------
1 | uid://dynb52p6rwe5u
2 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/behaviour_tree/decorators/decorator_repeat.gd:
--------------------------------------------------------------------------------
1 | @tool
2 | @icon("res://addons/behaviour_toolkit/icons/BTDecoratorRepeat.svg")
3 | class_name BTRepeat extends BTDecorator
4 | ## Repeats the leaf a number of times.
5 |
6 |
7 | @export var repetition: int = 1
8 | @export var on_limit: BTStatus = BTStatus.FAILURE
9 |
10 |
11 | @onready var cache_key = 'repeat_%s' % self.get_instance_id()
12 |
13 |
14 | func tick(delta: float, actor: Node, blackboard: Blackboard):
15 | var current_count = blackboard.get_value(cache_key)
16 | if current_count == null:
17 | current_count = 0
18 |
19 | if current_count < repetition:
20 | var response = leaf.tick(delta, actor, blackboard)
21 |
22 | if response == BTStatus.RUNNING:
23 | return response
24 |
25 | if response == BTStatus.SUCCESS:
26 | current_count += 1
27 | blackboard.set_value(cache_key, current_count)
28 | return BTStatus.RUNNING
29 | else:
30 | return response
31 | else:
32 | blackboard.set_value(cache_key, 0)
33 | return on_limit
34 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/behaviour_tree/decorators/decorator_repeat.gd.uid:
--------------------------------------------------------------------------------
1 | uid://bts0yymqfnj5o
2 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/behaviour_tree/leaves/leaf_call.gd:
--------------------------------------------------------------------------------
1 | @tool
2 | @icon("res://addons/behaviour_toolkit/icons/BTLeafCall.svg")
3 | class_name LeafCall extends BTLeaf
4 | ## Leaf that calls a method on a target node.
5 | ##
6 | ## The target can be the actor, the blackboard or a custom node.
7 | ## Returns FAILURE if the method is not found on the target node.
8 |
9 |
10 | ## The target type of the call. Can be the actor, the blackboard or a custom node.
11 | enum CallTarget {
12 | ACTOR, ## The actor node set on the BTRoot node.
13 | BLACKBOARD, ## The blackboard node set on the BTRoot node.
14 | CUSTOM, ## A custom node set on the custom_target variable.
15 | }
16 |
17 |
18 | ## The method to call on the target node.
19 | @export var method: StringName:
20 | set(value):
21 | method = value
22 | update_configuration_warnings()
23 | ## The arguments to pass to the method.
24 | @export var arguments: Array = []
25 |
26 | @export_category("Target")
27 | ## The target type of the call. Can be the actor, the blackboard or a custom node.
28 | @export var target_type: CallTarget = CallTarget.ACTOR:
29 | set(value):
30 | target_type = value
31 | update_configuration_warnings()
32 | ## The custom node to call the method on. Only used if target_type is set to CallTarget.CUSTOM.
33 | @export var custom_target: Node:
34 | set(value):
35 | custom_target = value
36 | update_configuration_warnings()
37 |
38 |
39 | func tick(delta: float, actor: Node, blackboard: Blackboard):
40 | var target
41 |
42 | match target_type:
43 | CallTarget.ACTOR:
44 | target = actor
45 | CallTarget.BLACKBOARD:
46 | target = blackboard
47 | CallTarget.CUSTOM:
48 | target = custom_target
49 |
50 | if target.has_method(method):
51 | target.callv(method, arguments)
52 | else:
53 | print("Method " + method + " not found on target " + target.to_string())
54 | return BTStatus.FAILURE
55 |
56 | return BTStatus.SUCCESS
57 |
58 |
59 | func _get_configuration_warnings() -> PackedStringArray:
60 | var warnings: Array = []
61 |
62 | warnings.append_array(super._get_configuration_warnings())
63 |
64 | if method == "":
65 | warnings.append("Method is not set.")
66 |
67 | if target_type == CallTarget.CUSTOM and custom_target == null:
68 | warnings.append("Target type is set to CUSTOM but no custom target is set.")
69 |
70 | return warnings
71 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/behaviour_tree/leaves/leaf_call.gd.uid:
--------------------------------------------------------------------------------
1 | uid://bhahgsy1nt5yj
2 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/behaviour_tree/leaves/leaf_condition.gd.uid:
--------------------------------------------------------------------------------
1 | uid://dnpsgru7j5ctv
2 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/behaviour_tree/leaves/leaf_event.gd:
--------------------------------------------------------------------------------
1 | @tool
2 | class_name LeafFSMEvent extends BTLeafIntegration
3 | ## This node fires an event on a specified state machine.
4 |
5 |
6 | @export var event: StringName:
7 | set(value):
8 | event = value
9 | update_configuration_warnings()
10 | @export var return_status: BTStatus = BTStatus.SUCCESS
11 |
12 |
13 | func tick(_delta: float, _actor: Node, _blackboard: Blackboard) -> BTStatus:
14 | state_machine.fire_event(event)
15 | return return_status
16 |
17 |
18 | func _get_configuration_warnings() -> PackedStringArray:
19 | var warnings: Array = []
20 |
21 | warnings.append_array(super._get_configuration_warnings())
22 |
23 | if event == "":
24 | warnings.append("Event is empty.")
25 |
26 | return warnings
27 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/behaviour_tree/leaves/leaf_event.gd.uid:
--------------------------------------------------------------------------------
1 | uid://dl4tsevokxbqg
2 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/behaviour_tree/leaves/leaf_print.gd:
--------------------------------------------------------------------------------
1 | @tool
2 | @icon("res://addons/behaviour_toolkit/icons/BTLeafPrint.svg")
3 | class_name LeafPrint extends BTLeaf
4 | ## Leaf that prints a custom text in console.
5 |
6 |
7 | @export var custom_text: String
8 | @export var success: bool = true
9 |
10 |
11 | func tick(delta: float, actor: Node, blackboard: Blackboard):
12 | if custom_text != "":
13 | print(custom_text)
14 | else:
15 | print("Hello World!")
16 |
17 | if success:
18 | return BTStatus.SUCCESS
19 |
20 | return BTStatus.FAILURE
21 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/behaviour_tree/leaves/leaf_print.gd.uid:
--------------------------------------------------------------------------------
1 | uid://hrqpi0abma58
2 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/behaviour_tree/leaves/leaf_signal.gd:
--------------------------------------------------------------------------------
1 | @tool
2 | @icon("res://addons/behaviour_toolkit/icons/BTLeafSignal.svg")
3 | class_name LeafSignal extends BTLeaf
4 | ## Leaf that emits a signal with optional array of arguments.
5 | ##
6 | ## [LeafSignal] if `target_type` is set to `Self` emits it's own signal
7 | ## `leaf_emitted(arguments_array)` but can also emit signals from the `actor`,
8 | ## or any `Custom` [Node].
9 |
10 |
11 | ## The target type from which to emit signal.
12 | ## Can be the actor, a custom node or [LeafSignal] own signal.
13 | enum EmitTarget {
14 | ACTOR, ## The actor node set on the BTRoot node.
15 | CUSTOM, ## A custom node set on the custom_target variable.
16 | SELF, ## Don't emit signals from any target.
17 | }
18 |
19 |
20 | ## Signal emitted on every [code]tick()[/code] by the [LeafSignal]
21 | ## if `EmitTarget.SELF` enabled.
22 | signal leaf_emitted(arguments_array: Array)
23 |
24 |
25 | ## The signal name to call on the target node.
26 | @export var signal_name: StringName:
27 | set(value):
28 | signal_name = value
29 | update_configuration_warnings()
30 | ## Array of arguments emitted with the [code]leaf_emitted/code] signal.
31 | @export var arguments: Array = []
32 |
33 | @export_category("Target")
34 | ## The target type to emit signal. Can be the actor, a custom node
35 | ## or [LeafSignal] own signal `leaf_emitted` (When target type is `Self`).
36 | @export var target_type: EmitTarget = EmitTarget.SELF:
37 | set(value):
38 | target_type = value
39 | update_configuration_warnings()
40 | ## The custom node to call the method on. Only used if target_type
41 | ## is set toCallTarget.CUSTOM.
42 | @export var custom_target: Node:
43 | set(value):
44 | custom_target = value
45 | update_configuration_warnings()
46 |
47 |
48 |
49 |
50 | func tick(_delta: float, _actor: Node, _blackboard: Blackboard) -> BTStatus:
51 | var target: Node
52 |
53 | match target_type:
54 | EmitTarget.ACTOR:
55 | target = _actor
56 | EmitTarget.CUSTOM:
57 | target = custom_target
58 | EmitTarget.SELF:
59 | emit_signal("leaf_emitted", arguments)
60 | return BTStatus.SUCCESS
61 |
62 | if target.has_signal(signal_name):
63 | target.emit_signal(signal_name, arguments)
64 | else:
65 | print("Signal " + signal_name + " not found on target " + target.to_string())
66 | return BTStatus.FAILURE
67 |
68 | return BTStatus.SUCCESS
69 |
70 |
71 | func _get_configuration_warnings() -> PackedStringArray:
72 | var warnings: Array = []
73 |
74 | warnings.append_array(super._get_configuration_warnings())
75 |
76 | if signal_name == "":
77 | warnings.append("Signal is not set.")
78 |
79 | if target_type == EmitTarget.CUSTOM and custom_target == null:
80 | warnings.append("Target type is set to Custom but no custom target is set.")
81 |
82 | return warnings
83 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/behaviour_tree/leaves/leaf_signal.gd.uid:
--------------------------------------------------------------------------------
1 | uid://0og5kjn2fpu6
2 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/behaviour_tree/leaves/leaf_tween.gd.uid:
--------------------------------------------------------------------------------
1 | uid://ba52jr7ryaq75
2 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/behaviour_tree/leaves/leaf_wait.gd:
--------------------------------------------------------------------------------
1 | @tool
2 | @icon("res://addons/behaviour_toolkit/icons/BTLeafWait.svg")
3 | class_name LeafWait extends BTLeaf
4 | ## Leaf that waits set ammount of calls of [code]tick()[/code] before returning
5 | ## SUCCESS.
6 |
7 |
8 | @export var wait_for_ticks: int = 100
9 |
10 |
11 | var ticks: int = 0
12 |
13 |
14 | func tick(_delta: float, _actor: Node, _blackboard: Blackboard):
15 | if ticks < wait_for_ticks:
16 | ticks += 1
17 | return BTStatus.RUNNING
18 | else:
19 | ticks = 0
20 | return BTStatus.SUCCESS
21 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/behaviour_tree/leaves/leaf_wait.gd.uid:
--------------------------------------------------------------------------------
1 | uid://buvb8uppbyosm
2 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/blackboard.gd:
--------------------------------------------------------------------------------
1 | @icon("res://addons/behaviour_toolkit/icons/Blackboard.svg")
2 | class_name Blackboard extends Resource
3 | ## A blackboard is a dictionary of key/value pairs that can be used to share
4 | ## data between nodes.
5 | ##
6 | ## [Blackboard] can be used by BT plugin nodes to store and pass the data.
7 |
8 |
9 | ## The blackboard's content stored as a dictionary.
10 | @export var content: Dictionary
11 |
12 |
13 | ## Sets a value in the blackboard.
14 | func set_value(key: StringName, value: Variant) -> void:
15 | content[key] = value
16 |
17 |
18 | ## Returns a value from the blackboard. If the key doesn't exist, returns `null`.
19 | func get_value(key: StringName) -> Variant:
20 | if content.has(key):
21 | return content[key]
22 | else:
23 | return null
24 |
25 |
26 | ## Removes a value from the blackboard. Returns `true` if the key existed, `false` otherwise.
27 | func remove_value(key: StringName) -> bool:
28 | return content.erase(key)
29 |
30 |
31 | ## Clears the blackboard and removes all its values.
32 | func clear() -> void:
33 | content.clear()
34 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/blackboard.gd.uid:
--------------------------------------------------------------------------------
1 | uid://csq05x4oq8uf3
2 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/finite_state_machine/fsm.gd.uid:
--------------------------------------------------------------------------------
1 | uid://b0bqn8gtyevqu
2 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/finite_state_machine/fsm_state.gd:
--------------------------------------------------------------------------------
1 | @tool
2 | @icon("res://addons/behaviour_toolkit/icons/FSMState.svg")
3 | class_name FSMState extends BehaviourToolkit
4 | ## A state in a [FiniteStateMachine]. This is the base class for all states.
5 | ##
6 | ## It's a basic building block to build full State Machines, only one state
7 | ## held by [FiniteStateMachine] is active, to switch to a different state,
8 | ## a [FSMTransition] must be triggered or you can use FSM methods to switch
9 | ## states manually.
10 | ## To implement your logic you can override the [code]_on_enter, _on_update and
11 | ## _on_exit[/code] methods when extending the node's script.
12 |
13 |
14 | ## List of transitions from this state.
15 | var transitions: Array[FSMTransition] = []
16 |
17 |
18 | func _ready() -> void:
19 | # Don't run in editor
20 | if Engine.is_editor_hint():
21 | return
22 |
23 | for transition in get_children():
24 | if transition is FSMTransition:
25 | transitions.append(transition)
26 |
27 |
28 | ## Executes after the state is entered.
29 | func _on_enter(_actor: Node, _blackboard: Blackboard) -> void:
30 | pass
31 |
32 |
33 | ## Executes every process call, if the state is active.
34 | func _on_update(_delta: float, _actor: Node, _blackboard: Blackboard) -> void:
35 | pass
36 |
37 |
38 | ## Executes before the state is exited.
39 | func _on_exit(_actor: Node, _blackboard: Blackboard) -> void:
40 | pass
41 |
42 |
43 | func _get_configuration_warnings() -> PackedStringArray:
44 | var warnings: Array = []
45 |
46 | var parent: Node = get_parent()
47 | if not parent is FiniteStateMachine:
48 | warnings.append("FSMState should be a child of a FiniteStateMachine node.")
49 |
50 | return warnings
51 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/finite_state_machine/fsm_state.gd.uid:
--------------------------------------------------------------------------------
1 | uid://k5p6yghm7nrm
2 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/finite_state_machine/fsm_state_integrated_bt.gd.uid:
--------------------------------------------------------------------------------
1 | uid://bv80dvrqw5nqc
2 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/finite_state_machine/fsm_state_integration_return.gd:
--------------------------------------------------------------------------------
1 | @icon("res://addons/behaviour_toolkit/icons/FSMStateIntegrationReturn.svg")
2 | class_name FSMStateIntegrationReturn extends FSMState
3 | ## A state in a [FiniteStateMachine] that allows to exit State Machine nested
4 | ## inside of a Behaviour Tree.
5 | ##
6 | ## The state when active returns [enum BTStatus.SUCCESS] or
7 | ## [enum BTStatus.FAILURE] depending on the state's return_status property,
8 | ## which stops execution of FSM attached to [BTIntegratedFSM].
9 |
10 | enum BTStatus {
11 | SUCCESS,
12 | FAILURE,
13 | }
14 |
15 | @export var return_value: BTStatus = BTStatus.SUCCESS
16 |
17 |
18 | ## Executes after the state is entered.
19 | func _on_enter(_actor: Node, _blackboard: Blackboard) -> void:
20 | get_parent().current_bt_status = return_value
21 |
22 |
23 | ## Executes every process call, if the state is active.
24 | func _on_update(_delta: float, _actor: Node, _blackboard: Blackboard) -> void:
25 | pass
26 |
27 |
28 | ## Executes before the state is exited.
29 | func _on_exit(_actor: Node, _blackboard: Blackboard) -> void:
30 | pass
31 |
32 |
33 | func _get_configuration_warnings() -> PackedStringArray:
34 | var warnings: Array = []
35 |
36 | warnings.append_array(super._get_configuration_warnings())
37 |
38 | var fsm_parent: Node = get_parent().get_parent()
39 |
40 | if not fsm_parent is BTIntegratedFSM:
41 | warnings.append("Can only return from a BTIntegratedFSM.")
42 |
43 | return warnings
44 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/finite_state_machine/fsm_state_integration_return.gd.uid:
--------------------------------------------------------------------------------
1 | uid://cwo7ey48dxu21
2 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/finite_state_machine/fsm_transition.gd:
--------------------------------------------------------------------------------
1 | @tool
2 | @icon("res://addons/behaviour_toolkit/icons/FSMTransition.svg")
3 | class_name FSMTransition extends BehaviourToolkit
4 | ## A transition between two [FSMState]s in a [FiniteStateMachine].
5 | ##
6 | ## This is the base class for all transitions. To implement your logic you can
7 | ## override the [code]_on_transition[/code] method when extending the node's
8 | ## script.[br]
9 | ## To setup custom conditions you can override the is_valid method.[br]
10 | ## If you want to use events to trigger the transition, set
11 | ## [code]use_event[/code] to true and set the event property to the name
12 | ## of the event you want to listen for.
13 |
14 |
15 | ## The state to transition to.
16 | @export var next_state: FSMState:
17 | set(value):
18 | next_state = value
19 | update_configuration_warnings()
20 |
21 | @export_category("Transition Logic")
22 | ## If true, the FSM will check for the event to trigger the transition.
23 | @export var use_event: bool = false:
24 | set(value):
25 | use_event = value
26 | update_configuration_warnings()
27 | ## The event that triggers the transition.
28 | @export var event: String = "":
29 | set(value):
30 | event = value
31 | update_configuration_warnings()
32 |
33 |
34 | ## Executed when the transition is taken.
35 | func _on_transition(_delta: float, _actor: Node, _blackboard: Blackboard) -> void:
36 | pass
37 |
38 |
39 | ## Evaluates true, if the transition conditions are met.
40 | func is_valid(_actor: Node, _blackboard: Blackboard) -> bool:
41 | return false
42 |
43 |
44 | func is_valid_event(current_event: String) -> bool:
45 | if current_event == "":
46 | return false
47 |
48 | return current_event == event
49 |
50 |
51 | ## Returns which state to transition to, when valid.
52 | func get_next_state() -> FSMState:
53 | return next_state
54 |
55 |
56 | func _get_configuration_warnings() -> PackedStringArray:
57 | var warnings: Array = []
58 |
59 | var parent: Node = get_parent()
60 | if not parent is FSMState:
61 | warnings.append("FSMTransition should be a child of FSMState.")
62 |
63 | if not next_state:
64 | warnings.append("FSMTransition has no next state.")
65 |
66 | if use_event and event == "":
67 | warnings.append("FSMTransition has no event set.")
68 |
69 | return warnings
70 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/finite_state_machine/fsm_transition.gd.uid:
--------------------------------------------------------------------------------
1 | uid://1h0braq41vwb
2 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/icons/Add.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/icons/Add.svg.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://cwmjaei5wjin2"
6 | path="res://.godot/imported/Add.svg-b8640946cfefb2cca92e911950570ce6.ctex"
7 | metadata={
8 | "has_editor_variant": true,
9 | "vram_texture": false
10 | }
11 |
12 | [deps]
13 |
14 | source_file="res://addons/behaviour_toolkit/icons/Add.svg"
15 | dest_files=["res://.godot/imported/Add.svg-b8640946cfefb2cca92e911950570ce6.ctex"]
16 |
17 | [params]
18 |
19 | compress/mode=0
20 | compress/high_quality=false
21 | compress/lossy_quality=0.7
22 | compress/hdr_compression=1
23 | compress/normal_map=0
24 | compress/channel_pack=0
25 | mipmaps/generate=false
26 | mipmaps/limit=-1
27 | roughness/mode=0
28 | roughness/src_normal=""
29 | process/fix_alpha_border=true
30 | process/premult_alpha=false
31 | process/normal_map_invert_y=false
32 | process/hdr_as_srgb=false
33 | process/hdr_clamp_exposure=false
34 | process/size_limit=0
35 | detect_3d/compress_to=1
36 | svg/scale=1.0
37 | editor/scale_with_editor_scale=true
38 | editor/convert_colors_with_editor_theme=false
39 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/icons/BTBehaviour.svg:
--------------------------------------------------------------------------------
1 |
2 |
44 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/icons/BTBehaviour.svg.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://2r4aaahuqcpy"
6 | path="res://.godot/imported/BTBehaviour.svg-afa2230ba3707fb234ee9ca9709aead7.ctex"
7 | metadata={
8 | "has_editor_variant": true,
9 | "vram_texture": false
10 | }
11 |
12 | [deps]
13 |
14 | source_file="res://addons/behaviour_toolkit/icons/BTBehaviour.svg"
15 | dest_files=["res://.godot/imported/BTBehaviour.svg-afa2230ba3707fb234ee9ca9709aead7.ctex"]
16 |
17 | [params]
18 |
19 | compress/mode=0
20 | compress/high_quality=false
21 | compress/lossy_quality=0.7
22 | compress/hdr_compression=1
23 | compress/normal_map=0
24 | compress/channel_pack=0
25 | mipmaps/generate=false
26 | mipmaps/limit=-1
27 | roughness/mode=0
28 | roughness/src_normal=""
29 | process/fix_alpha_border=true
30 | process/premult_alpha=false
31 | process/normal_map_invert_y=false
32 | process/hdr_as_srgb=false
33 | process/hdr_clamp_exposure=false
34 | process/size_limit=0
35 | detect_3d/compress_to=1
36 | svg/scale=1.0
37 | editor/scale_with_editor_scale=true
38 | editor/convert_colors_with_editor_theme=false
39 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/icons/BTComposite.svg.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://b3u8ojxnwvwap"
6 | path="res://.godot/imported/BTComposite.svg-412f185ff8fece951b022e38ba5a7c23.ctex"
7 | metadata={
8 | "has_editor_variant": true,
9 | "vram_texture": false
10 | }
11 |
12 | [deps]
13 |
14 | source_file="res://addons/behaviour_toolkit/icons/BTComposite.svg"
15 | dest_files=["res://.godot/imported/BTComposite.svg-412f185ff8fece951b022e38ba5a7c23.ctex"]
16 |
17 | [params]
18 |
19 | compress/mode=0
20 | compress/high_quality=false
21 | compress/lossy_quality=0.7
22 | compress/hdr_compression=1
23 | compress/normal_map=0
24 | compress/channel_pack=0
25 | mipmaps/generate=false
26 | mipmaps/limit=-1
27 | roughness/mode=0
28 | roughness/src_normal=""
29 | process/fix_alpha_border=true
30 | process/premult_alpha=false
31 | process/normal_map_invert_y=false
32 | process/hdr_as_srgb=false
33 | process/hdr_clamp_exposure=false
34 | process/size_limit=0
35 | detect_3d/compress_to=1
36 | svg/scale=1.0
37 | editor/scale_with_editor_scale=true
38 | editor/convert_colors_with_editor_theme=false
39 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/icons/BTCompositeIntegration.svg:
--------------------------------------------------------------------------------
1 |
2 |
63 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/icons/BTCompositeIntegration.svg.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://ddx7a726xhria"
6 | path="res://.godot/imported/BTCompositeIntegration.svg-9584b35e5fb929ba98b0a02fb58c84cb.ctex"
7 | metadata={
8 | "has_editor_variant": true,
9 | "vram_texture": false
10 | }
11 |
12 | [deps]
13 |
14 | source_file="res://addons/behaviour_toolkit/icons/BTCompositeIntegration.svg"
15 | dest_files=["res://.godot/imported/BTCompositeIntegration.svg-9584b35e5fb929ba98b0a02fb58c84cb.ctex"]
16 |
17 | [params]
18 |
19 | compress/mode=0
20 | compress/high_quality=false
21 | compress/lossy_quality=0.7
22 | compress/hdr_compression=1
23 | compress/normal_map=0
24 | compress/channel_pack=0
25 | mipmaps/generate=false
26 | mipmaps/limit=-1
27 | roughness/mode=0
28 | roughness/src_normal=""
29 | process/fix_alpha_border=true
30 | process/premult_alpha=false
31 | process/normal_map_invert_y=false
32 | process/hdr_as_srgb=false
33 | process/hdr_clamp_exposure=false
34 | process/size_limit=0
35 | detect_3d/compress_to=1
36 | svg/scale=1.0
37 | editor/scale_with_editor_scale=true
38 | editor/convert_colors_with_editor_theme=false
39 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/icons/BTCompositeRandom.svg.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://bevi04faxe066"
6 | path="res://.godot/imported/BTCompositeRandom.svg-c18a16f3d816da0799f1e1aa9211e913.ctex"
7 | metadata={
8 | "has_editor_variant": true,
9 | "vram_texture": false
10 | }
11 |
12 | [deps]
13 |
14 | source_file="res://addons/behaviour_toolkit/icons/BTCompositeRandom.svg"
15 | dest_files=["res://.godot/imported/BTCompositeRandom.svg-c18a16f3d816da0799f1e1aa9211e913.ctex"]
16 |
17 | [params]
18 |
19 | compress/mode=0
20 | compress/high_quality=false
21 | compress/lossy_quality=0.7
22 | compress/hdr_compression=1
23 | compress/normal_map=0
24 | compress/channel_pack=0
25 | mipmaps/generate=false
26 | mipmaps/limit=-1
27 | roughness/mode=0
28 | roughness/src_normal=""
29 | process/fix_alpha_border=true
30 | process/premult_alpha=false
31 | process/normal_map_invert_y=false
32 | process/hdr_as_srgb=false
33 | process/hdr_clamp_exposure=false
34 | process/size_limit=0
35 | detect_3d/compress_to=1
36 | svg/scale=1.0
37 | editor/scale_with_editor_scale=true
38 | editor/convert_colors_with_editor_theme=false
39 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/icons/BTCompositeRandomSelector.svg.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://bmc67ds148hrp"
6 | path="res://.godot/imported/BTCompositeRandomSelector.svg-0512a3de5f88f3ca2a3841f24ac587eb.ctex"
7 | metadata={
8 | "has_editor_variant": true,
9 | "vram_texture": false
10 | }
11 |
12 | [deps]
13 |
14 | source_file="res://addons/behaviour_toolkit/icons/BTCompositeRandomSelector.svg"
15 | dest_files=["res://.godot/imported/BTCompositeRandomSelector.svg-0512a3de5f88f3ca2a3841f24ac587eb.ctex"]
16 |
17 | [params]
18 |
19 | compress/mode=0
20 | compress/high_quality=false
21 | compress/lossy_quality=0.7
22 | compress/hdr_compression=1
23 | compress/normal_map=0
24 | compress/channel_pack=0
25 | mipmaps/generate=false
26 | mipmaps/limit=-1
27 | roughness/mode=0
28 | roughness/src_normal=""
29 | process/fix_alpha_border=true
30 | process/premult_alpha=false
31 | process/normal_map_invert_y=false
32 | process/hdr_as_srgb=false
33 | process/hdr_clamp_exposure=false
34 | process/size_limit=0
35 | detect_3d/compress_to=1
36 | svg/scale=1.0
37 | editor/scale_with_editor_scale=true
38 | editor/convert_colors_with_editor_theme=false
39 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/icons/BTCompositeRandomSequence.svg.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://bwsntsm8f3msh"
6 | path="res://.godot/imported/BTCompositeRandomSequence.svg-190695524eac4f2c5cfb58aafe93cfbb.ctex"
7 | metadata={
8 | "has_editor_variant": true,
9 | "vram_texture": false
10 | }
11 |
12 | [deps]
13 |
14 | source_file="res://addons/behaviour_toolkit/icons/BTCompositeRandomSequence.svg"
15 | dest_files=["res://.godot/imported/BTCompositeRandomSequence.svg-190695524eac4f2c5cfb58aafe93cfbb.ctex"]
16 |
17 | [params]
18 |
19 | compress/mode=0
20 | compress/high_quality=false
21 | compress/lossy_quality=0.7
22 | compress/hdr_compression=1
23 | compress/normal_map=0
24 | compress/channel_pack=0
25 | mipmaps/generate=false
26 | mipmaps/limit=-1
27 | roughness/mode=0
28 | roughness/src_normal=""
29 | process/fix_alpha_border=true
30 | process/premult_alpha=false
31 | process/normal_map_invert_y=false
32 | process/hdr_as_srgb=false
33 | process/hdr_clamp_exposure=false
34 | process/size_limit=0
35 | detect_3d/compress_to=1
36 | svg/scale=1.0
37 | editor/scale_with_editor_scale=true
38 | editor/convert_colors_with_editor_theme=false
39 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/icons/BTCompositeSelector.svg.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://dbvuyvumeayw7"
6 | path="res://.godot/imported/BTCompositeSelector.svg-c3f04299814d16ef776f826287ac3a80.ctex"
7 | metadata={
8 | "has_editor_variant": true,
9 | "vram_texture": false
10 | }
11 |
12 | [deps]
13 |
14 | source_file="res://addons/behaviour_toolkit/icons/BTCompositeSelector.svg"
15 | dest_files=["res://.godot/imported/BTCompositeSelector.svg-c3f04299814d16ef776f826287ac3a80.ctex"]
16 |
17 | [params]
18 |
19 | compress/mode=0
20 | compress/high_quality=false
21 | compress/lossy_quality=0.7
22 | compress/hdr_compression=1
23 | compress/normal_map=0
24 | compress/channel_pack=0
25 | mipmaps/generate=false
26 | mipmaps/limit=-1
27 | roughness/mode=0
28 | roughness/src_normal=""
29 | process/fix_alpha_border=true
30 | process/premult_alpha=false
31 | process/normal_map_invert_y=false
32 | process/hdr_as_srgb=false
33 | process/hdr_clamp_exposure=false
34 | process/size_limit=0
35 | detect_3d/compress_to=1
36 | svg/scale=1.0
37 | editor/scale_with_editor_scale=true
38 | editor/convert_colors_with_editor_theme=false
39 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/icons/BTCompositeSequence.svg.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://bq7k30hpimryq"
6 | path="res://.godot/imported/BTCompositeSequence.svg-1ad4ef7ed8c22330cea4e8cfd8a06ca5.ctex"
7 | metadata={
8 | "has_editor_variant": true,
9 | "vram_texture": false
10 | }
11 |
12 | [deps]
13 |
14 | source_file="res://addons/behaviour_toolkit/icons/BTCompositeSequence.svg"
15 | dest_files=["res://.godot/imported/BTCompositeSequence.svg-1ad4ef7ed8c22330cea4e8cfd8a06ca5.ctex"]
16 |
17 | [params]
18 |
19 | compress/mode=0
20 | compress/high_quality=false
21 | compress/lossy_quality=0.7
22 | compress/hdr_compression=1
23 | compress/normal_map=0
24 | compress/channel_pack=0
25 | mipmaps/generate=false
26 | mipmaps/limit=-1
27 | roughness/mode=0
28 | roughness/src_normal=""
29 | process/fix_alpha_border=true
30 | process/premult_alpha=false
31 | process/normal_map_invert_y=false
32 | process/hdr_as_srgb=false
33 | process/hdr_clamp_exposure=false
34 | process/size_limit=0
35 | detect_3d/compress_to=1
36 | svg/scale=1.0
37 | editor/scale_with_editor_scale=true
38 | editor/convert_colors_with_editor_theme=false
39 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/icons/BTDecorator.svg:
--------------------------------------------------------------------------------
1 |
2 |
51 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/icons/BTDecorator.svg.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://cik3abcqm7kr1"
6 | path="res://.godot/imported/BTDecorator.svg-a54f8ee76d81f0aada9ae7822177699f.ctex"
7 | metadata={
8 | "has_editor_variant": true,
9 | "vram_texture": false
10 | }
11 |
12 | [deps]
13 |
14 | source_file="res://addons/behaviour_toolkit/icons/BTDecorator.svg"
15 | dest_files=["res://.godot/imported/BTDecorator.svg-a54f8ee76d81f0aada9ae7822177699f.ctex"]
16 |
17 | [params]
18 |
19 | compress/mode=0
20 | compress/high_quality=false
21 | compress/lossy_quality=0.7
22 | compress/hdr_compression=1
23 | compress/normal_map=0
24 | compress/channel_pack=0
25 | mipmaps/generate=false
26 | mipmaps/limit=-1
27 | roughness/mode=0
28 | roughness/src_normal=""
29 | process/fix_alpha_border=true
30 | process/premult_alpha=false
31 | process/normal_map_invert_y=false
32 | process/hdr_as_srgb=false
33 | process/hdr_clamp_exposure=false
34 | process/size_limit=0
35 | detect_3d/compress_to=1
36 | svg/scale=1.0
37 | editor/scale_with_editor_scale=true
38 | editor/convert_colors_with_editor_theme=false
39 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/icons/BTDecoratorFail.svg:
--------------------------------------------------------------------------------
1 |
2 |
51 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/icons/BTDecoratorFail.svg.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://y6kqrnrojvj2"
6 | path="res://.godot/imported/BTDecoratorFail.svg-972bf6cae2c89e592f736f7d1eb80693.ctex"
7 | metadata={
8 | "has_editor_variant": true,
9 | "vram_texture": false
10 | }
11 |
12 | [deps]
13 |
14 | source_file="res://addons/behaviour_toolkit/icons/BTDecoratorFail.svg"
15 | dest_files=["res://.godot/imported/BTDecoratorFail.svg-972bf6cae2c89e592f736f7d1eb80693.ctex"]
16 |
17 | [params]
18 |
19 | compress/mode=0
20 | compress/high_quality=false
21 | compress/lossy_quality=0.7
22 | compress/hdr_compression=1
23 | compress/normal_map=0
24 | compress/channel_pack=0
25 | mipmaps/generate=false
26 | mipmaps/limit=-1
27 | roughness/mode=0
28 | roughness/src_normal=""
29 | process/fix_alpha_border=true
30 | process/premult_alpha=false
31 | process/normal_map_invert_y=false
32 | process/hdr_as_srgb=false
33 | process/hdr_clamp_exposure=false
34 | process/size_limit=0
35 | detect_3d/compress_to=1
36 | svg/scale=1.0
37 | editor/scale_with_editor_scale=true
38 | editor/convert_colors_with_editor_theme=false
39 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/icons/BTDecoratorLimiter.svg:
--------------------------------------------------------------------------------
1 |
2 |
51 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/icons/BTDecoratorLimiter.svg.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://cko2btxegkbtb"
6 | path="res://.godot/imported/BTDecoratorLimiter.svg-83cc68457edd2d4d6c5a47d3d203e0d1.ctex"
7 | metadata={
8 | "has_editor_variant": true,
9 | "vram_texture": false
10 | }
11 |
12 | [deps]
13 |
14 | source_file="res://addons/behaviour_toolkit/icons/BTDecoratorLimiter.svg"
15 | dest_files=["res://.godot/imported/BTDecoratorLimiter.svg-83cc68457edd2d4d6c5a47d3d203e0d1.ctex"]
16 |
17 | [params]
18 |
19 | compress/mode=0
20 | compress/high_quality=false
21 | compress/lossy_quality=0.7
22 | compress/hdr_compression=1
23 | compress/normal_map=0
24 | compress/channel_pack=0
25 | mipmaps/generate=false
26 | mipmaps/limit=-1
27 | roughness/mode=0
28 | roughness/src_normal=""
29 | process/fix_alpha_border=true
30 | process/premult_alpha=false
31 | process/normal_map_invert_y=false
32 | process/hdr_as_srgb=false
33 | process/hdr_clamp_exposure=false
34 | process/size_limit=0
35 | detect_3d/compress_to=1
36 | svg/scale=1.0
37 | editor/scale_with_editor_scale=true
38 | editor/convert_colors_with_editor_theme=false
39 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/icons/BTDecoratorNot.svg:
--------------------------------------------------------------------------------
1 |
2 |
57 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/icons/BTDecoratorNot.svg.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://bmo340f2o6tai"
6 | path="res://.godot/imported/BTDecoratorNot.svg-db308d1bbf533b47c32d25af8f80de5d.ctex"
7 | metadata={
8 | "has_editor_variant": true,
9 | "vram_texture": false
10 | }
11 |
12 | [deps]
13 |
14 | source_file="res://addons/behaviour_toolkit/icons/BTDecoratorNot.svg"
15 | dest_files=["res://.godot/imported/BTDecoratorNot.svg-db308d1bbf533b47c32d25af8f80de5d.ctex"]
16 |
17 | [params]
18 |
19 | compress/mode=0
20 | compress/high_quality=false
21 | compress/lossy_quality=0.7
22 | compress/hdr_compression=1
23 | compress/normal_map=0
24 | compress/channel_pack=0
25 | mipmaps/generate=false
26 | mipmaps/limit=-1
27 | roughness/mode=0
28 | roughness/src_normal=""
29 | process/fix_alpha_border=true
30 | process/premult_alpha=false
31 | process/normal_map_invert_y=false
32 | process/hdr_as_srgb=false
33 | process/hdr_clamp_exposure=false
34 | process/size_limit=0
35 | detect_3d/compress_to=1
36 | svg/scale=1.0
37 | editor/scale_with_editor_scale=true
38 | editor/convert_colors_with_editor_theme=false
39 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/icons/BTDecoratorRepeat.svg.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://hn65lqk8tero"
6 | path="res://.godot/imported/BTDecoratorRepeat.svg-a5c5ef593dd674d9da616e81f0a70c8c.ctex"
7 | metadata={
8 | "has_editor_variant": true,
9 | "vram_texture": false
10 | }
11 |
12 | [deps]
13 |
14 | source_file="res://addons/behaviour_toolkit/icons/BTDecoratorRepeat.svg"
15 | dest_files=["res://.godot/imported/BTDecoratorRepeat.svg-a5c5ef593dd674d9da616e81f0a70c8c.ctex"]
16 |
17 | [params]
18 |
19 | compress/mode=0
20 | compress/high_quality=false
21 | compress/lossy_quality=0.7
22 | compress/hdr_compression=1
23 | compress/normal_map=0
24 | compress/channel_pack=0
25 | mipmaps/generate=false
26 | mipmaps/limit=-1
27 | roughness/mode=0
28 | roughness/src_normal=""
29 | process/fix_alpha_border=true
30 | process/premult_alpha=false
31 | process/normal_map_invert_y=false
32 | process/hdr_as_srgb=false
33 | process/hdr_clamp_exposure=false
34 | process/size_limit=0
35 | detect_3d/compress_to=1
36 | svg/scale=1.0
37 | editor/scale_with_editor_scale=true
38 | editor/convert_colors_with_editor_theme=false
39 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/icons/BTDecoratorSucceed.svg:
--------------------------------------------------------------------------------
1 |
2 |
51 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/icons/BTDecoratorSucceed.svg.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://dkt0bqwfmkmpq"
6 | path="res://.godot/imported/BTDecoratorSucceed.svg-5ae36e790992843eb08f1aaf9f19c05c.ctex"
7 | metadata={
8 | "has_editor_variant": true,
9 | "vram_texture": false
10 | }
11 |
12 | [deps]
13 |
14 | source_file="res://addons/behaviour_toolkit/icons/BTDecoratorSucceed.svg"
15 | dest_files=["res://.godot/imported/BTDecoratorSucceed.svg-5ae36e790992843eb08f1aaf9f19c05c.ctex"]
16 |
17 | [params]
18 |
19 | compress/mode=0
20 | compress/high_quality=false
21 | compress/lossy_quality=0.7
22 | compress/hdr_compression=1
23 | compress/normal_map=0
24 | compress/channel_pack=0
25 | mipmaps/generate=false
26 | mipmaps/limit=-1
27 | roughness/mode=0
28 | roughness/src_normal=""
29 | process/fix_alpha_border=true
30 | process/premult_alpha=false
31 | process/normal_map_invert_y=false
32 | process/hdr_as_srgb=false
33 | process/hdr_clamp_exposure=false
34 | process/size_limit=0
35 | detect_3d/compress_to=1
36 | svg/scale=1.0
37 | editor/scale_with_editor_scale=true
38 | editor/convert_colors_with_editor_theme=false
39 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/icons/BTLeaf.svg:
--------------------------------------------------------------------------------
1 |
2 |
53 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/icons/BTLeaf.svg.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://dws1e5qbg3y2h"
6 | path="res://.godot/imported/BTLeaf.svg-394bab6a37a064c62d9109929dce527d.ctex"
7 | metadata={
8 | "has_editor_variant": true,
9 | "vram_texture": false
10 | }
11 |
12 | [deps]
13 |
14 | source_file="res://addons/behaviour_toolkit/icons/BTLeaf.svg"
15 | dest_files=["res://.godot/imported/BTLeaf.svg-394bab6a37a064c62d9109929dce527d.ctex"]
16 |
17 | [params]
18 |
19 | compress/mode=0
20 | compress/high_quality=false
21 | compress/lossy_quality=0.7
22 | compress/hdr_compression=1
23 | compress/normal_map=0
24 | compress/channel_pack=0
25 | mipmaps/generate=false
26 | mipmaps/limit=-1
27 | roughness/mode=0
28 | roughness/src_normal=""
29 | process/fix_alpha_border=true
30 | process/premult_alpha=false
31 | process/normal_map_invert_y=false
32 | process/hdr_as_srgb=false
33 | process/hdr_clamp_exposure=false
34 | process/size_limit=0
35 | detect_3d/compress_to=1
36 | svg/scale=1.0
37 | editor/scale_with_editor_scale=true
38 | editor/convert_colors_with_editor_theme=false
39 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/icons/BTLeafCall.svg:
--------------------------------------------------------------------------------
1 |
2 |
48 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/icons/BTLeafCall.svg.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://cwvb6d7kvo53u"
6 | path="res://.godot/imported/BTLeafCall.svg-0259ff3dd7a45558b84cab026665c30a.ctex"
7 | metadata={
8 | "has_editor_variant": true,
9 | "vram_texture": false
10 | }
11 |
12 | [deps]
13 |
14 | source_file="res://addons/behaviour_toolkit/icons/BTLeafCall.svg"
15 | dest_files=["res://.godot/imported/BTLeafCall.svg-0259ff3dd7a45558b84cab026665c30a.ctex"]
16 |
17 | [params]
18 |
19 | compress/mode=0
20 | compress/high_quality=false
21 | compress/lossy_quality=0.7
22 | compress/hdr_compression=1
23 | compress/normal_map=0
24 | compress/channel_pack=0
25 | mipmaps/generate=false
26 | mipmaps/limit=-1
27 | roughness/mode=0
28 | roughness/src_normal=""
29 | process/fix_alpha_border=true
30 | process/premult_alpha=false
31 | process/normal_map_invert_y=false
32 | process/hdr_as_srgb=false
33 | process/hdr_clamp_exposure=false
34 | process/size_limit=0
35 | detect_3d/compress_to=1
36 | svg/scale=1.0
37 | editor/scale_with_editor_scale=true
38 | editor/convert_colors_with_editor_theme=false
39 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/icons/BTLeafCondition.svg.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://by4ymq46fp1ra"
6 | path="res://.godot/imported/BTLeafCondition.svg-555fd5d45040620aff94ac7db2b23380.ctex"
7 | metadata={
8 | "has_editor_variant": true,
9 | "vram_texture": false
10 | }
11 |
12 | [deps]
13 |
14 | source_file="res://addons/behaviour_toolkit/icons/BTLeafCondition.svg"
15 | dest_files=["res://.godot/imported/BTLeafCondition.svg-555fd5d45040620aff94ac7db2b23380.ctex"]
16 |
17 | [params]
18 |
19 | compress/mode=0
20 | compress/high_quality=false
21 | compress/lossy_quality=0.7
22 | compress/hdr_compression=1
23 | compress/normal_map=0
24 | compress/channel_pack=0
25 | mipmaps/generate=false
26 | mipmaps/limit=-1
27 | roughness/mode=0
28 | roughness/src_normal=""
29 | process/fix_alpha_border=true
30 | process/premult_alpha=false
31 | process/normal_map_invert_y=false
32 | process/hdr_as_srgb=false
33 | process/hdr_clamp_exposure=false
34 | process/size_limit=0
35 | detect_3d/compress_to=1
36 | svg/scale=1.0
37 | editor/scale_with_editor_scale=true
38 | editor/convert_colors_with_editor_theme=false
39 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/icons/BTLeafIntegration.svg:
--------------------------------------------------------------------------------
1 |
2 |
53 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/icons/BTLeafIntegration.svg.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://iduodgdwxa2w"
6 | path="res://.godot/imported/BTLeafIntegration.svg-974541a1d51285a695521e9140e5e19a.ctex"
7 | metadata={
8 | "has_editor_variant": true,
9 | "vram_texture": false
10 | }
11 |
12 | [deps]
13 |
14 | source_file="res://addons/behaviour_toolkit/icons/BTLeafIntegration.svg"
15 | dest_files=["res://.godot/imported/BTLeafIntegration.svg-974541a1d51285a695521e9140e5e19a.ctex"]
16 |
17 | [params]
18 |
19 | compress/mode=0
20 | compress/high_quality=false
21 | compress/lossy_quality=0.7
22 | compress/hdr_compression=1
23 | compress/normal_map=0
24 | compress/channel_pack=0
25 | mipmaps/generate=false
26 | mipmaps/limit=-1
27 | roughness/mode=0
28 | roughness/src_normal=""
29 | process/fix_alpha_border=true
30 | process/premult_alpha=false
31 | process/normal_map_invert_y=false
32 | process/hdr_as_srgb=false
33 | process/hdr_clamp_exposure=false
34 | process/size_limit=0
35 | detect_3d/compress_to=1
36 | svg/scale=1.0
37 | editor/scale_with_editor_scale=true
38 | editor/convert_colors_with_editor_theme=false
39 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/icons/BTLeafPrint.svg:
--------------------------------------------------------------------------------
1 |
2 |
47 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/icons/BTLeafPrint.svg.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://b45qiy5niriwu"
6 | path="res://.godot/imported/BTLeafPrint.svg-f6f2d7d14c8ddb0bc684a53d76e39548.ctex"
7 | metadata={
8 | "has_editor_variant": true,
9 | "vram_texture": false
10 | }
11 |
12 | [deps]
13 |
14 | source_file="res://addons/behaviour_toolkit/icons/BTLeafPrint.svg"
15 | dest_files=["res://.godot/imported/BTLeafPrint.svg-f6f2d7d14c8ddb0bc684a53d76e39548.ctex"]
16 |
17 | [params]
18 |
19 | compress/mode=0
20 | compress/high_quality=false
21 | compress/lossy_quality=0.7
22 | compress/hdr_compression=1
23 | compress/normal_map=0
24 | compress/channel_pack=0
25 | mipmaps/generate=false
26 | mipmaps/limit=-1
27 | roughness/mode=0
28 | roughness/src_normal=""
29 | process/fix_alpha_border=true
30 | process/premult_alpha=false
31 | process/normal_map_invert_y=false
32 | process/hdr_as_srgb=false
33 | process/hdr_clamp_exposure=false
34 | process/size_limit=0
35 | detect_3d/compress_to=1
36 | svg/scale=1.0
37 | editor/scale_with_editor_scale=true
38 | editor/convert_colors_with_editor_theme=false
39 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/icons/BTLeafSignal.svg:
--------------------------------------------------------------------------------
1 |
2 |
40 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/icons/BTLeafSignal.svg.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://carjbhnt844yq"
6 | path="res://.godot/imported/BTLeafSignal.svg-f98548f09cd6423647caa2b3e0b830a4.ctex"
7 | metadata={
8 | "has_editor_variant": true,
9 | "vram_texture": false
10 | }
11 |
12 | [deps]
13 |
14 | source_file="res://addons/behaviour_toolkit/icons/BTLeafSignal.svg"
15 | dest_files=["res://.godot/imported/BTLeafSignal.svg-f98548f09cd6423647caa2b3e0b830a4.ctex"]
16 |
17 | [params]
18 |
19 | compress/mode=0
20 | compress/high_quality=false
21 | compress/lossy_quality=0.7
22 | compress/hdr_compression=1
23 | compress/normal_map=0
24 | compress/channel_pack=0
25 | mipmaps/generate=false
26 | mipmaps/limit=-1
27 | roughness/mode=0
28 | roughness/src_normal=""
29 | process/fix_alpha_border=true
30 | process/premult_alpha=false
31 | process/normal_map_invert_y=false
32 | process/hdr_as_srgb=false
33 | process/hdr_clamp_exposure=false
34 | process/size_limit=0
35 | detect_3d/compress_to=1
36 | svg/scale=1.0
37 | editor/scale_with_editor_scale=true
38 | editor/convert_colors_with_editor_theme=false
39 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/icons/BTLeafTween.svg:
--------------------------------------------------------------------------------
1 |
2 |
47 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/icons/BTLeafTween.svg.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://3pj4756qk6p"
6 | path="res://.godot/imported/BTLeafTween.svg-72f39562bcea332854ab58b3a62fb7e4.ctex"
7 | metadata={
8 | "has_editor_variant": true,
9 | "vram_texture": false
10 | }
11 |
12 | [deps]
13 |
14 | source_file="res://addons/behaviour_toolkit/icons/BTLeafTween.svg"
15 | dest_files=["res://.godot/imported/BTLeafTween.svg-72f39562bcea332854ab58b3a62fb7e4.ctex"]
16 |
17 | [params]
18 |
19 | compress/mode=0
20 | compress/high_quality=false
21 | compress/lossy_quality=0.7
22 | compress/hdr_compression=1
23 | compress/normal_map=0
24 | compress/channel_pack=0
25 | mipmaps/generate=false
26 | mipmaps/limit=-1
27 | roughness/mode=0
28 | roughness/src_normal=""
29 | process/fix_alpha_border=true
30 | process/premult_alpha=false
31 | process/normal_map_invert_y=false
32 | process/hdr_as_srgb=false
33 | process/hdr_clamp_exposure=false
34 | process/size_limit=0
35 | detect_3d/compress_to=1
36 | svg/scale=1.0
37 | editor/scale_with_editor_scale=true
38 | editor/convert_colors_with_editor_theme=false
39 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/icons/BTLeafWait.svg:
--------------------------------------------------------------------------------
1 |
2 |
69 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/icons/BTLeafWait.svg.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://xi8li3jk2vs6"
6 | path="res://.godot/imported/BTLeafWait.svg-f454910626932d116ba56d8724164bd1.ctex"
7 | metadata={
8 | "has_editor_variant": true,
9 | "vram_texture": false
10 | }
11 |
12 | [deps]
13 |
14 | source_file="res://addons/behaviour_toolkit/icons/BTLeafWait.svg"
15 | dest_files=["res://.godot/imported/BTLeafWait.svg-f454910626932d116ba56d8724164bd1.ctex"]
16 |
17 | [params]
18 |
19 | compress/mode=0
20 | compress/high_quality=false
21 | compress/lossy_quality=0.7
22 | compress/hdr_compression=1
23 | compress/normal_map=0
24 | compress/channel_pack=0
25 | mipmaps/generate=false
26 | mipmaps/limit=-1
27 | roughness/mode=0
28 | roughness/src_normal=""
29 | process/fix_alpha_border=true
30 | process/premult_alpha=false
31 | process/normal_map_invert_y=false
32 | process/hdr_as_srgb=false
33 | process/hdr_clamp_exposure=false
34 | process/size_limit=0
35 | detect_3d/compress_to=1
36 | svg/scale=1.0
37 | editor/scale_with_editor_scale=true
38 | editor/convert_colors_with_editor_theme=false
39 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/icons/BTRoot.svg:
--------------------------------------------------------------------------------
1 |
2 |
62 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/icons/BTRoot.svg.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://xv12cpsjwtl8"
6 | path="res://.godot/imported/BTRoot.svg-eacfbd4d2762cc392094c55ff923e78c.ctex"
7 | metadata={
8 | "has_editor_variant": true,
9 | "vram_texture": false
10 | }
11 |
12 | [deps]
13 |
14 | source_file="res://addons/behaviour_toolkit/icons/BTRoot.svg"
15 | dest_files=["res://.godot/imported/BTRoot.svg-eacfbd4d2762cc392094c55ff923e78c.ctex"]
16 |
17 | [params]
18 |
19 | compress/mode=0
20 | compress/high_quality=false
21 | compress/lossy_quality=0.7
22 | compress/hdr_compression=1
23 | compress/normal_map=0
24 | compress/channel_pack=0
25 | mipmaps/generate=false
26 | mipmaps/limit=-1
27 | roughness/mode=0
28 | roughness/src_normal=""
29 | process/fix_alpha_border=true
30 | process/premult_alpha=false
31 | process/normal_map_invert_y=false
32 | process/hdr_as_srgb=false
33 | process/hdr_clamp_exposure=false
34 | process/size_limit=0
35 | detect_3d/compress_to=1
36 | svg/scale=1.0
37 | editor/scale_with_editor_scale=true
38 | editor/convert_colors_with_editor_theme=false
39 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/icons/BTSimpleParallel.svg.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://scoo4wxugwy7"
6 | path="res://.godot/imported/BTSimpleParallel.svg-8546d47eb70a7b37aaad191b53aafa06.ctex"
7 | metadata={
8 | "has_editor_variant": true,
9 | "vram_texture": false
10 | }
11 |
12 | [deps]
13 |
14 | source_file="res://addons/behaviour_toolkit/icons/BTSimpleParallel.svg"
15 | dest_files=["res://.godot/imported/BTSimpleParallel.svg-8546d47eb70a7b37aaad191b53aafa06.ctex"]
16 |
17 | [params]
18 |
19 | compress/mode=0
20 | compress/high_quality=false
21 | compress/lossy_quality=0.7
22 | compress/hdr_compression=1
23 | compress/normal_map=0
24 | compress/channel_pack=0
25 | mipmaps/generate=false
26 | mipmaps/limit=-1
27 | roughness/mode=0
28 | roughness/src_normal=""
29 | process/fix_alpha_border=true
30 | process/premult_alpha=false
31 | process/normal_map_invert_y=false
32 | process/hdr_as_srgb=false
33 | process/hdr_clamp_exposure=false
34 | process/size_limit=0
35 | detect_3d/compress_to=1
36 | svg/scale=1.0
37 | editor/scale_with_editor_scale=true
38 | editor/convert_colors_with_editor_theme=false
39 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/icons/Blackboard.svg:
--------------------------------------------------------------------------------
1 |
2 |
44 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/icons/Blackboard.svg.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://5e6onda232gn"
6 | path="res://.godot/imported/Blackboard.svg-99aad113ca567e93eaff49dbc3f77175.ctex"
7 | metadata={
8 | "has_editor_variant": true,
9 | "vram_texture": false
10 | }
11 |
12 | [deps]
13 |
14 | source_file="res://addons/behaviour_toolkit/icons/Blackboard.svg"
15 | dest_files=["res://.godot/imported/Blackboard.svg-99aad113ca567e93eaff49dbc3f77175.ctex"]
16 |
17 | [params]
18 |
19 | compress/mode=0
20 | compress/high_quality=false
21 | compress/lossy_quality=0.7
22 | compress/hdr_compression=1
23 | compress/normal_map=0
24 | compress/channel_pack=0
25 | mipmaps/generate=false
26 | mipmaps/limit=-1
27 | roughness/mode=0
28 | roughness/src_normal=""
29 | process/fix_alpha_border=true
30 | process/premult_alpha=false
31 | process/normal_map_invert_y=false
32 | process/hdr_as_srgb=false
33 | process/hdr_clamp_exposure=false
34 | process/size_limit=0
35 | detect_3d/compress_to=1
36 | svg/scale=1.0
37 | editor/scale_with_editor_scale=true
38 | editor/convert_colors_with_editor_theme=false
39 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/icons/EditorBTRoot.svg:
--------------------------------------------------------------------------------
1 |
2 |
52 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/icons/EditorBTRoot.svg.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://dxbd2qqx12a52"
6 | path="res://.godot/imported/EditorBTRoot.svg-6b6916705e3fa73f7ffe40a77ed65841.ctex"
7 | metadata={
8 | "has_editor_variant": true,
9 | "vram_texture": false
10 | }
11 |
12 | [deps]
13 |
14 | source_file="res://addons/behaviour_toolkit/icons/EditorBTRoot.svg"
15 | dest_files=["res://.godot/imported/EditorBTRoot.svg-6b6916705e3fa73f7ffe40a77ed65841.ctex"]
16 |
17 | [params]
18 |
19 | compress/mode=0
20 | compress/high_quality=false
21 | compress/lossy_quality=0.7
22 | compress/hdr_compression=1
23 | compress/normal_map=0
24 | compress/channel_pack=0
25 | mipmaps/generate=false
26 | mipmaps/limit=-1
27 | roughness/mode=0
28 | roughness/src_normal=""
29 | process/fix_alpha_border=true
30 | process/premult_alpha=false
31 | process/normal_map_invert_y=false
32 | process/hdr_as_srgb=false
33 | process/hdr_clamp_exposure=false
34 | process/size_limit=0
35 | detect_3d/compress_to=1
36 | svg/scale=1.0
37 | editor/scale_with_editor_scale=true
38 | editor/convert_colors_with_editor_theme=false
39 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/icons/EditorFiniteStateMachine.svg.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://vqncyulwi24v"
6 | path="res://.godot/imported/EditorFiniteStateMachine.svg-e8608d1bbb81a21982b3327f762e9126.ctex"
7 | metadata={
8 | "has_editor_variant": true,
9 | "vram_texture": false
10 | }
11 |
12 | [deps]
13 |
14 | source_file="res://addons/behaviour_toolkit/icons/EditorFiniteStateMachine.svg"
15 | dest_files=["res://.godot/imported/EditorFiniteStateMachine.svg-e8608d1bbb81a21982b3327f762e9126.ctex"]
16 |
17 | [params]
18 |
19 | compress/mode=0
20 | compress/high_quality=false
21 | compress/lossy_quality=0.7
22 | compress/hdr_compression=1
23 | compress/normal_map=0
24 | compress/channel_pack=0
25 | mipmaps/generate=false
26 | mipmaps/limit=-1
27 | roughness/mode=0
28 | roughness/src_normal=""
29 | process/fix_alpha_border=true
30 | process/premult_alpha=false
31 | process/normal_map_invert_y=false
32 | process/hdr_as_srgb=false
33 | process/hdr_clamp_exposure=false
34 | process/size_limit=0
35 | detect_3d/compress_to=1
36 | svg/scale=1.0
37 | editor/scale_with_editor_scale=true
38 | editor/convert_colors_with_editor_theme=false
39 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/icons/FSMState.svg:
--------------------------------------------------------------------------------
1 |
2 |
53 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/icons/FSMState.svg.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://boof0yioplbqr"
6 | path="res://.godot/imported/FSMState.svg-5a4ec18f1220b396d81ac0c29c407dbb.ctex"
7 | metadata={
8 | "has_editor_variant": true,
9 | "vram_texture": false
10 | }
11 |
12 | [deps]
13 |
14 | source_file="res://addons/behaviour_toolkit/icons/FSMState.svg"
15 | dest_files=["res://.godot/imported/FSMState.svg-5a4ec18f1220b396d81ac0c29c407dbb.ctex"]
16 |
17 | [params]
18 |
19 | compress/mode=0
20 | compress/high_quality=false
21 | compress/lossy_quality=0.7
22 | compress/hdr_compression=1
23 | compress/normal_map=0
24 | compress/channel_pack=0
25 | mipmaps/generate=false
26 | mipmaps/limit=-1
27 | roughness/mode=0
28 | roughness/src_normal=""
29 | process/fix_alpha_border=true
30 | process/premult_alpha=false
31 | process/normal_map_invert_y=false
32 | process/hdr_as_srgb=false
33 | process/hdr_clamp_exposure=false
34 | process/size_limit=0
35 | detect_3d/compress_to=1
36 | svg/scale=1.0
37 | editor/scale_with_editor_scale=true
38 | editor/convert_colors_with_editor_theme=false
39 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/icons/FSMStateIntegration.svg:
--------------------------------------------------------------------------------
1 |
2 |
53 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/icons/FSMStateIntegration.svg.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://gnyb25o014vd"
6 | path="res://.godot/imported/FSMStateIntegration.svg-a2b58c754cdf4634ea934415452099ad.ctex"
7 | metadata={
8 | "has_editor_variant": true,
9 | "vram_texture": false
10 | }
11 |
12 | [deps]
13 |
14 | source_file="res://addons/behaviour_toolkit/icons/FSMStateIntegration.svg"
15 | dest_files=["res://.godot/imported/FSMStateIntegration.svg-a2b58c754cdf4634ea934415452099ad.ctex"]
16 |
17 | [params]
18 |
19 | compress/mode=0
20 | compress/high_quality=false
21 | compress/lossy_quality=0.7
22 | compress/hdr_compression=1
23 | compress/normal_map=0
24 | compress/channel_pack=0
25 | mipmaps/generate=false
26 | mipmaps/limit=-1
27 | roughness/mode=0
28 | roughness/src_normal=""
29 | process/fix_alpha_border=true
30 | process/premult_alpha=false
31 | process/normal_map_invert_y=false
32 | process/hdr_as_srgb=false
33 | process/hdr_clamp_exposure=false
34 | process/size_limit=0
35 | detect_3d/compress_to=1
36 | svg/scale=1.0
37 | editor/scale_with_editor_scale=true
38 | editor/convert_colors_with_editor_theme=false
39 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/icons/FSMStateIntegrationReturn.svg:
--------------------------------------------------------------------------------
1 |
2 |
56 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/icons/FSMStateIntegrationReturn.svg.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://cjfh8x8tx20cq"
6 | path="res://.godot/imported/FSMStateIntegrationReturn.svg-3b3b086bb57c5145bc7be34e441fba59.ctex"
7 | metadata={
8 | "has_editor_variant": true,
9 | "vram_texture": false
10 | }
11 |
12 | [deps]
13 |
14 | source_file="res://addons/behaviour_toolkit/icons/FSMStateIntegrationReturn.svg"
15 | dest_files=["res://.godot/imported/FSMStateIntegrationReturn.svg-3b3b086bb57c5145bc7be34e441fba59.ctex"]
16 |
17 | [params]
18 |
19 | compress/mode=0
20 | compress/high_quality=false
21 | compress/lossy_quality=0.7
22 | compress/hdr_compression=1
23 | compress/normal_map=0
24 | compress/channel_pack=0
25 | mipmaps/generate=false
26 | mipmaps/limit=-1
27 | roughness/mode=0
28 | roughness/src_normal=""
29 | process/fix_alpha_border=true
30 | process/premult_alpha=false
31 | process/normal_map_invert_y=false
32 | process/hdr_as_srgb=false
33 | process/hdr_clamp_exposure=false
34 | process/size_limit=0
35 | detect_3d/compress_to=1
36 | svg/scale=1.0
37 | editor/scale_with_editor_scale=true
38 | editor/convert_colors_with_editor_theme=false
39 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/icons/FSMTransition.svg:
--------------------------------------------------------------------------------
1 |
2 |
63 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/icons/FSMTransition.svg.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://guy2wtwpcskx"
6 | path="res://.godot/imported/FSMTransition.svg-03add443dbedecc72086260f8244e911.ctex"
7 | metadata={
8 | "has_editor_variant": true,
9 | "vram_texture": false
10 | }
11 |
12 | [deps]
13 |
14 | source_file="res://addons/behaviour_toolkit/icons/FSMTransition.svg"
15 | dest_files=["res://.godot/imported/FSMTransition.svg-03add443dbedecc72086260f8244e911.ctex"]
16 |
17 | [params]
18 |
19 | compress/mode=0
20 | compress/high_quality=false
21 | compress/lossy_quality=0.7
22 | compress/hdr_compression=1
23 | compress/normal_map=0
24 | compress/channel_pack=0
25 | mipmaps/generate=false
26 | mipmaps/limit=-1
27 | roughness/mode=0
28 | roughness/src_normal=""
29 | process/fix_alpha_border=true
30 | process/premult_alpha=false
31 | process/normal_map_invert_y=false
32 | process/hdr_as_srgb=false
33 | process/hdr_clamp_exposure=false
34 | process/size_limit=0
35 | detect_3d/compress_to=1
36 | svg/scale=1.0
37 | editor/scale_with_editor_scale=true
38 | editor/convert_colors_with_editor_theme=false
39 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/icons/FiniteStateMachine.svg.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://1qeduaxet8mw"
6 | path="res://.godot/imported/FiniteStateMachine.svg-e73522dd5cc41a5534bd00f4347b88cf.ctex"
7 | metadata={
8 | "has_editor_variant": true,
9 | "vram_texture": false
10 | }
11 |
12 | [deps]
13 |
14 | source_file="res://addons/behaviour_toolkit/icons/FiniteStateMachine.svg"
15 | dest_files=["res://.godot/imported/FiniteStateMachine.svg-e73522dd5cc41a5534bd00f4347b88cf.ctex"]
16 |
17 | [params]
18 |
19 | compress/mode=0
20 | compress/high_quality=false
21 | compress/lossy_quality=0.7
22 | compress/hdr_compression=1
23 | compress/normal_map=0
24 | compress/channel_pack=0
25 | mipmaps/generate=false
26 | mipmaps/limit=-1
27 | roughness/mode=0
28 | roughness/src_normal=""
29 | process/fix_alpha_border=true
30 | process/premult_alpha=false
31 | process/normal_map_invert_y=false
32 | process/hdr_as_srgb=false
33 | process/hdr_clamp_exposure=false
34 | process/size_limit=0
35 | detect_3d/compress_to=1
36 | svg/scale=1.0
37 | editor/scale_with_editor_scale=true
38 | editor/convert_colors_with_editor_theme=false
39 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/icons/Gear.svg.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://1e4smr7gq8kx"
6 | path="res://.godot/imported/Gear.svg-4bd0640c31f268fb47db19b3b4730128.ctex"
7 | metadata={
8 | "has_editor_variant": true,
9 | "vram_texture": false
10 | }
11 |
12 | [deps]
13 |
14 | source_file="res://addons/behaviour_toolkit/icons/Gear.svg"
15 | dest_files=["res://.godot/imported/Gear.svg-4bd0640c31f268fb47db19b3b4730128.ctex"]
16 |
17 | [params]
18 |
19 | compress/mode=0
20 | compress/high_quality=false
21 | compress/lossy_quality=0.7
22 | compress/hdr_compression=1
23 | compress/normal_map=0
24 | compress/channel_pack=0
25 | mipmaps/generate=false
26 | mipmaps/limit=-1
27 | roughness/mode=0
28 | roughness/src_normal=""
29 | process/fix_alpha_border=true
30 | process/premult_alpha=false
31 | process/normal_map_invert_y=false
32 | process/hdr_as_srgb=false
33 | process/hdr_clamp_exposure=false
34 | process/size_limit=0
35 | detect_3d/compress_to=1
36 | svg/scale=1.0
37 | editor/scale_with_editor_scale=true
38 | editor/convert_colors_with_editor_theme=false
39 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/icons/Help.svg:
--------------------------------------------------------------------------------
1 |
2 |
40 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/icons/Help.svg.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://dn8d4wli8uv1e"
6 | path="res://.godot/imported/Help.svg-b760ac21373bc62f0a4da09a57e2f015.ctex"
7 | metadata={
8 | "has_editor_variant": true,
9 | "vram_texture": false
10 | }
11 |
12 | [deps]
13 |
14 | source_file="res://addons/behaviour_toolkit/icons/Help.svg"
15 | dest_files=["res://.godot/imported/Help.svg-b760ac21373bc62f0a4da09a57e2f015.ctex"]
16 |
17 | [params]
18 |
19 | compress/mode=0
20 | compress/high_quality=false
21 | compress/lossy_quality=0.7
22 | compress/hdr_compression=1
23 | compress/normal_map=0
24 | compress/channel_pack=0
25 | mipmaps/generate=false
26 | mipmaps/limit=-1
27 | roughness/mode=0
28 | roughness/src_normal=""
29 | process/fix_alpha_border=true
30 | process/premult_alpha=false
31 | process/normal_map_invert_y=false
32 | process/hdr_as_srgb=false
33 | process/hdr_clamp_exposure=false
34 | process/size_limit=0
35 | detect_3d/compress_to=1
36 | svg/scale=1.0
37 | editor/scale_with_editor_scale=true
38 | editor/convert_colors_with_editor_theme=false
39 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/icons/Logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ThePat02/BehaviourToolkit/5de713d7d8e433cfc21aacf568ff5a785e4d9db1/addons/behaviour_toolkit/icons/Logo.png
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/icons/Logo.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://eg2wnjvb108s"
6 | path="res://.godot/imported/Logo.png-e6b76950f4b731f658240ab9e0780450.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://addons/behaviour_toolkit/icons/Logo.png"
14 | dest_files=["res://.godot/imported/Logo.png-e6b76950f4b731f658240ab9e0780450.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/icons/Logo.svg.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://cai87dos026yj"
6 | path="res://.godot/imported/Logo.svg-8cfecbbf805a6ab0b538dbc1ba0eccfd.ctex"
7 | metadata={
8 | "has_editor_variant": true,
9 | "vram_texture": false
10 | }
11 |
12 | [deps]
13 |
14 | source_file="res://addons/behaviour_toolkit/icons/Logo.svg"
15 | dest_files=["res://.godot/imported/Logo.svg-8cfecbbf805a6ab0b538dbc1ba0eccfd.ctex"]
16 |
17 | [params]
18 |
19 | compress/mode=0
20 | compress/high_quality=false
21 | compress/lossy_quality=0.7
22 | compress/hdr_compression=1
23 | compress/normal_map=0
24 | compress/channel_pack=0
25 | mipmaps/generate=false
26 | mipmaps/limit=-1
27 | roughness/mode=0
28 | roughness/src_normal=""
29 | process/fix_alpha_border=true
30 | process/premult_alpha=false
31 | process/normal_map_invert_y=false
32 | process/hdr_as_srgb=false
33 | process/hdr_clamp_exposure=false
34 | process/size_limit=0
35 | detect_3d/compress_to=1
36 | svg/scale=1.0
37 | editor/scale_with_editor_scale=true
38 | editor/convert_colors_with_editor_theme=false
39 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/icons/MainIcon.svg.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://b31gt04urv6fj"
6 | path="res://.godot/imported/MainIcon.svg-ab618d7a28ab16fc23aafd75380dc1f8.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://addons/behaviour_toolkit/icons/MainIcon.svg"
14 | dest_files=["res://.godot/imported/MainIcon.svg-ab618d7a28ab16fc23aafd75380dc1f8.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 | svg/scale=1.0
36 | editor/scale_with_editor_scale=false
37 | editor/convert_colors_with_editor_theme=false
38 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/icons/Search.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/icons/Search.svg.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://csdaju3etjpw4"
6 | path="res://.godot/imported/Search.svg-46c789b409eba86b5d04be6ddccfe69c.ctex"
7 | metadata={
8 | "has_editor_variant": true,
9 | "vram_texture": false
10 | }
11 |
12 | [deps]
13 |
14 | source_file="res://addons/behaviour_toolkit/icons/Search.svg"
15 | dest_files=["res://.godot/imported/Search.svg-46c789b409eba86b5d04be6ddccfe69c.ctex"]
16 |
17 | [params]
18 |
19 | compress/mode=0
20 | compress/high_quality=false
21 | compress/lossy_quality=0.7
22 | compress/hdr_compression=1
23 | compress/normal_map=0
24 | compress/channel_pack=0
25 | mipmaps/generate=false
26 | mipmaps/limit=-1
27 | roughness/mode=0
28 | roughness/src_normal=""
29 | process/fix_alpha_border=true
30 | process/premult_alpha=false
31 | process/normal_map_invert_y=false
32 | process/hdr_as_srgb=false
33 | process/hdr_clamp_exposure=false
34 | process/size_limit=0
35 | detect_3d/compress_to=1
36 | svg/scale=1.0
37 | editor/scale_with_editor_scale=true
38 | editor/convert_colors_with_editor_theme=false
39 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/icons/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ThePat02/BehaviourToolkit/5de713d7d8e433cfc21aacf568ff5a785e4d9db1/addons/behaviour_toolkit/icons/icon.png
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/icons/icon.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://qy65uqlr5s7u"
6 | path="res://.godot/imported/icon.png-941d63b5b26cc7e721388ccd274ebfe2.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://addons/behaviour_toolkit/icons/icon.png"
14 | dest_files=["res://.godot/imported/icon.png-941d63b5b26cc7e721388ccd274ebfe2.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/icons/placeholder.svg:
--------------------------------------------------------------------------------
1 |
2 |
44 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/icons/placeholder.svg.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://dpfva3ksgkvkx"
6 | path="res://.godot/imported/placeholder.svg-d1f5342e31d8125f82f8e7322e2c8be9.ctex"
7 | metadata={
8 | "has_editor_variant": true,
9 | "vram_texture": false
10 | }
11 |
12 | [deps]
13 |
14 | source_file="res://addons/behaviour_toolkit/icons/placeholder.svg"
15 | dest_files=["res://.godot/imported/placeholder.svg-d1f5342e31d8125f82f8e7322e2c8be9.ctex"]
16 |
17 | [params]
18 |
19 | compress/mode=0
20 | compress/high_quality=false
21 | compress/lossy_quality=0.7
22 | compress/hdr_compression=1
23 | compress/normal_map=0
24 | compress/channel_pack=0
25 | mipmaps/generate=false
26 | mipmaps/limit=-1
27 | roughness/mode=0
28 | roughness/src_normal=""
29 | process/fix_alpha_border=true
30 | process/premult_alpha=false
31 | process/normal_map_invert_y=false
32 | process/hdr_as_srgb=false
33 | process/hdr_clamp_exposure=false
34 | process/size_limit=0
35 | detect_3d/compress_to=1
36 | svg/scale=1.0
37 | editor/scale_with_editor_scale=true
38 | editor/convert_colors_with_editor_theme=false
39 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/inspector_plugin.gd:
--------------------------------------------------------------------------------
1 | extends EditorInspectorPlugin
2 |
3 |
4 | func _can_handle(object):
5 | return true
6 |
7 |
8 | func _parse_property(object, type, name, hint_type, hint_string, usage_flags, wide):
9 | # Leaf Tween
10 | if object is LeafTween:
11 | var tween_value_type: LeafTween.TweenValueType = object.tween_value_type
12 | if name == "tween_value_int":
13 | return not tween_value_type == LeafTween.TweenValueType.INT
14 |
15 | if name == "tween_value_float":
16 | return not tween_value_type == LeafTween.TweenValueType.FLOAT
17 |
18 | if name == "tween_value_vector2":
19 | return not tween_value_type == LeafTween.TweenValueType.VECTOR2
20 |
21 | if name == "tween_value_vector3":
22 | return not tween_value_type == LeafTween.TweenValueType.VECTOR3
23 |
24 | if name == "tween_value_color":
25 | return not tween_value_type == LeafTween.TweenValueType.COLOR
26 |
27 | if name == "tween_value_custom_script":
28 | return not tween_value_type == LeafTween.TweenValueType.CUSTOM_SCRIPT
29 |
30 | # Leaf Condition
31 | if object is LeafCondition:
32 | var value_type: LeafCondition.ConditionValue = object.value_type
33 | var condition_type: LeafCondition.ConditionType = object.condition_type
34 |
35 | if name == "condition_property":
36 | return condition_type == LeafCondition.ConditionType.CUSTOM_SCRIPT
37 |
38 | if name == "condition_value_string":
39 | return not value_type == LeafCondition.ConditionValue.STRING or condition_type == LeafCondition.ConditionType.CUSTOM_SCRIPT
40 |
41 | if name == "condition_value_int":
42 | return not value_type == LeafCondition.ConditionValue.INT or condition_type == LeafCondition.ConditionType.CUSTOM_SCRIPT
43 |
44 | if name == "condition_value_float":
45 | return not value_type == LeafCondition.ConditionValue.FLOAT or condition_type == LeafCondition.ConditionType.CUSTOM_SCRIPT
46 |
47 | if name == "condition_value_bool":
48 | return not value_type == LeafCondition.ConditionValue.BOOL or condition_type == LeafCondition.ConditionType.CUSTOM_SCRIPT
49 |
50 | if name == "custom_script":
51 | return not condition_type == LeafCondition.ConditionType.CUSTOM_SCRIPT
52 |
53 | if name == "value_type":
54 | return condition_type == LeafCondition.ConditionType.CUSTOM_SCRIPT
55 |
56 | return false
57 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/inspector_plugin.gd.uid:
--------------------------------------------------------------------------------
1 | uid://clmn5pxvmpu5t
2 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/plugin.cfg:
--------------------------------------------------------------------------------
1 | [plugin]
2 |
3 | name="BehaviourToolkit"
4 | description="This plugin provides a set of tools to create custom and complex behaviour in the Godot 4.2 Game Engine."
5 | author="Pat & Contributors"
6 | version="2.0.2"
7 | script="plugin.gd"
8 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/plugin.gd:
--------------------------------------------------------------------------------
1 | @tool
2 | extends EditorPlugin
3 |
4 |
5 | var _editor_interface = get_editor_interface()
6 | var _undo_redo = get_undo_redo()
7 |
8 |
9 | var _ui_canvas: Control
10 | var _ui_spatial: Control
11 |
12 |
13 | var _inspector_plugin = preload("res://addons/behaviour_toolkit/inspector_plugin.gd")
14 | var _toolkit_ui = preload("res://addons/behaviour_toolkit/ui/toolkit_ui.tscn")
15 |
16 |
17 | func _enter_tree():
18 | _ui_canvas = _toolkit_ui.instantiate()
19 | _ui_spatial = _toolkit_ui.instantiate()
20 |
21 | add_control_to_container(EditorPlugin.CONTAINER_CANVAS_EDITOR_SIDE_LEFT,_ui_canvas)
22 | _ui_canvas.visible = false
23 | _ui_canvas.editor_interface = _editor_interface
24 | _ui_canvas.undo_redo = _undo_redo
25 | _ui_canvas.update_manager.start()
26 | add_control_to_container(EditorPlugin.CONTAINER_SPATIAL_EDITOR_SIDE_LEFT, _ui_spatial)
27 | _ui_spatial.visible = false
28 | _ui_spatial.editor_interface = _editor_interface
29 | _ui_spatial.undo_redo = _undo_redo
30 | _ui_spatial.update_manager.start()
31 |
32 | # Connect editor signals
33 | _editor_interface.get_selection().selection_changed.connect(_on_selection_changed)
34 |
35 | # Add inspector plugin
36 | _inspector_plugin = _inspector_plugin.new()
37 | add_inspector_plugin(_inspector_plugin)
38 |
39 | BehaviourToolkit.Logger.say("Plugin enabled.")
40 |
41 |
42 |
43 | func _exit_tree():
44 | remove_control_from_container(EditorPlugin.CONTAINER_CANVAS_EDITOR_SIDE_LEFT,_ui_canvas)
45 | remove_control_from_container(EditorPlugin.CONTAINER_SPATIAL_EDITOR_SIDE_LEFT, _ui_spatial)
46 |
47 | _ui_canvas.queue_free()
48 | _ui_spatial.queue_free()
49 |
50 | remove_inspector_plugin(_inspector_plugin)
51 |
52 | BehaviourToolkit.Logger.say("Plugin disabled.")
53 |
54 |
55 | func _on_selection_changed() -> void:
56 |
57 | # Get current selection
58 | var selection = _editor_interface.get_selection().get_selected_nodes()
59 |
60 | if selection.size() == 0:
61 | _ui_canvas.visible = false
62 | _ui_spatial.visible = false
63 | return
64 |
65 | _ui_canvas.set_current_selection(selection[0])
66 | _ui_spatial.set_current_selection(selection[0])
67 |
68 | for node in selection:
69 | if node is BehaviourToolkit:
70 | _ui_canvas.visible = true
71 | _ui_spatial.visible = true
72 | return
73 |
74 | _ui_canvas.visible = false
75 | _ui_spatial.visible = false
76 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/plugin.gd.uid:
--------------------------------------------------------------------------------
1 | uid://d3in73u35c5q5
2 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/ui/toolkit_ui.gd.uid:
--------------------------------------------------------------------------------
1 | uid://cj617ykhf0je8
2 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/ui/utils/update_manager.gd:
--------------------------------------------------------------------------------
1 | @tool
2 | class_name UpdateManager extends HTTPRequest
3 | ## This class is used to check for updates of the plugin.
4 |
5 |
6 | ## Emitted when the request to the repository is completed.
7 | signal update_request_completed
8 | ## Emitted when the request to the repository is completed and an update is available.
9 | signal update_available
10 |
11 |
12 | ## If this is set to false, the plugin will not check for updates.
13 | @export var auto_start: bool = false
14 | ## The path to the addon config file.
15 | @export_file("*.cfg") var addon_config_path = ""
16 | ## The URL to the repository config file. This file has to be the raw version!
17 | @export var repo_config_url = ""
18 |
19 | ## Error flag to prevent the error message from printing twice.
20 | static var had_error: bool = false
21 |
22 | ## The current version of the plugin.
23 | var current_version: String
24 | ## The newest version of the plugin.
25 | var newest_version: String
26 |
27 |
28 | func _ready():
29 | current_version = get_current_version()
30 |
31 | # Connect signals
32 | connect("request_completed", _on_http_request_request_completed)
33 |
34 | # Check if active
35 | if not auto_start:
36 | return
37 |
38 | start()
39 |
40 |
41 | func start():
42 | # Get versions
43 | get_newest_version()
44 |
45 |
46 | ## Returns true if an update is available.
47 | func is_update_available() -> bool:
48 | if current_version != newest_version:
49 | return true
50 |
51 | return false
52 |
53 |
54 | ## Returns the current version of the plugin.
55 | func get_current_version() -> String:
56 | var config = ConfigFile.new()
57 | var err = config.load(addon_config_path)
58 |
59 | var result = config.get_value("plugin", "version")
60 | config.clear()
61 |
62 | return result
63 |
64 |
65 | ## Requests the newest version of the plugin from the repository.
66 | func get_newest_version() -> void:
67 | var err = request(repo_config_url)
68 |
69 |
70 | ## Called when the request to the repository is completed, parses the config file and sets the newest version.
71 | func _on_http_request_request_completed(result:int, response_code:int, headers:PackedStringArray, body:PackedByteArray):
72 | if result != OK:
73 | if not had_error:
74 | BehaviourToolkit.Logger.say(
75 | "Unable to fetch newest version from GitHub. Check your internet connection and reload the editor!",
76 | null,
77 | BehaviourToolkit.LogType.WARNING
78 | )
79 | had_error = true
80 |
81 | emit_signal("update_request_completed")
82 | return
83 |
84 | var config = ConfigFile.new()
85 | var err = config.parse(body.get_string_from_ascii())
86 |
87 | newest_version = config.get_value("plugin", "version")
88 | config.clear()
89 |
90 | # Emit signals
91 | emit_signal("update_request_completed")
92 |
93 | if is_update_available():
94 | emit_signal("update_available")
95 |
--------------------------------------------------------------------------------
/addons/behaviour_toolkit/ui/utils/update_manager.gd.uid:
--------------------------------------------------------------------------------
1 | uid://ur8ahev0butf
2 |
--------------------------------------------------------------------------------
/docs/screenshot-ui.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ThePat02/BehaviourToolkit/5de713d7d8e433cfc21aacf568ff5a785e4d9db1/docs/screenshot-ui.PNG
--------------------------------------------------------------------------------
/docs/screenshot-ui.PNG.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://daoi7oqvibg27"
6 | path="res://.godot/imported/screenshot-ui.PNG-131a0cbd4a6217b0074938f2d17b24b8.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://docs/screenshot-ui.PNG"
14 | dest_files=["res://.godot/imported/screenshot-ui.PNG-131a0cbd4a6217b0074938f2d17b24b8.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/docs/thumbnail.svg.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://caj8cq4e4spln"
6 | path="res://.godot/imported/thumbnail.svg-7fc0f5ea5444f782d367811eb3f10a24.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://docs/thumbnail.svg"
14 | dest_files=["res://.godot/imported/thumbnail.svg-7fc0f5ea5444f782d367811eb3f10a24.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 | svg/scale=1.0
36 | editor/scale_with_editor_scale=false
37 | editor/convert_colors_with_editor_theme=false
38 |
--------------------------------------------------------------------------------
/examples/assets/actors/tile_0084.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://b4ckaoh8istpt"
6 | path="res://.godot/imported/tile_0084.png-c2aba757074bfefa42f26a67ff91484b.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://examples/assets/actors/tile_0084.png"
14 | dest_files=["res://.godot/imported/tile_0084.png-c2aba757074bfefa42f26a67ff91484b.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/examples/assets/actors/tile_0085.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://co5fdko1b3b8o"
6 | path="res://.godot/imported/tile_0085.png-8a3a72948d57d657fc7ba153abdea45b.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://examples/assets/actors/tile_0085.png"
14 | dest_files=["res://.godot/imported/tile_0085.png-8a3a72948d57d657fc7ba153abdea45b.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/examples/assets/actors/tile_0086.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://cqbgvcikw2p7w"
6 | path="res://.godot/imported/tile_0086.png-b804f8c76c99c6fc239264ebf31c8700.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://examples/assets/actors/tile_0086.png"
14 | dest_files=["res://.godot/imported/tile_0086.png-b804f8c76c99c6fc239264ebf31c8700.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/examples/assets/actors/tile_0087.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://3fm0oih5cpdy"
6 | path="res://.godot/imported/tile_0087.png-ee3a2d1fb0c9eddcdf8454e7ae119d73.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://examples/assets/actors/tile_0087.png"
14 | dest_files=["res://.godot/imported/tile_0087.png-ee3a2d1fb0c9eddcdf8454e7ae119d73.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/examples/assets/actors/tile_0088.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://cwrbvx6cceop3"
6 | path="res://.godot/imported/tile_0088.png-1c627aa6e2010b936b8c2f074cb8ae7f.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://examples/assets/actors/tile_0088.png"
14 | dest_files=["res://.godot/imported/tile_0088.png-1c627aa6e2010b936b8c2f074cb8ae7f.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/examples/assets/actors/tile_0108.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://boj76womif427"
6 | path="res://.godot/imported/tile_0108.png-b8cea4ba13e473be5bbad5d1da25ef8f.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://examples/assets/actors/tile_0108.png"
14 | dest_files=["res://.godot/imported/tile_0108.png-b8cea4ba13e473be5bbad5d1da25ef8f.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/examples/assets/actors/tile_0109.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://cgp28y1g404sb"
6 | path="res://.godot/imported/tile_0109.png-c06d5f0c3e24f8b4724e0c99418b87d6.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://examples/assets/actors/tile_0109.png"
14 | dest_files=["res://.godot/imported/tile_0109.png-c06d5f0c3e24f8b4724e0c99418b87d6.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/examples/assets/actors/tile_0110.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://bcriy5mfjd7s7"
6 | path="res://.godot/imported/tile_0110.png-6dc7197bdd4f6cdd9d810362599b15ba.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://examples/assets/actors/tile_0110.png"
14 | dest_files=["res://.godot/imported/tile_0110.png-6dc7197bdd4f6cdd9d810362599b15ba.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/examples/assets/actors/tile_0111.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://3f21iuub5pli"
6 | path="res://.godot/imported/tile_0111.png-29f292bec364a60ea1163f54c5a7d873.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://examples/assets/actors/tile_0111.png"
14 | dest_files=["res://.godot/imported/tile_0111.png-29f292bec364a60ea1163f54c5a7d873.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/examples/assets/actors/tile_0112.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://cqrhvvwg1e0ro"
6 | path="res://.godot/imported/tile_0112.png-19b4b0c5bc1500236edeaba1d5f03cfc.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://examples/assets/actors/tile_0112.png"
14 | dest_files=["res://.godot/imported/tile_0112.png-19b4b0c5bc1500236edeaba1d5f03cfc.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/examples/assets/actors/tile_0121.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://ca6nw5tj5njrj"
6 | path="res://.godot/imported/tile_0121.png-69c712c02f08487624a1c9e0157788a2.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://examples/assets/actors/tile_0121.png"
14 | dest_files=["res://.godot/imported/tile_0121.png-69c712c02f08487624a1c9e0157788a2.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/examples/assets/actors/tiny_barbarian.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ThePat02/BehaviourToolkit/5de713d7d8e433cfc21aacf568ff5a785e4d9db1/examples/assets/actors/tiny_barbarian.png
--------------------------------------------------------------------------------
/examples/assets/actors/tiny_barbarian.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://q2wqt2rl0i14"
6 | path="res://.godot/imported/tiny_barbarian.png-73e83d904e63fe688d7e1e44e49966b7.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://examples/assets/actors/tiny_barbarian.png"
14 | dest_files=["res://.godot/imported/tiny_barbarian.png-73e83d904e63fe688d7e1e44e49966b7.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/examples/assets/actors/tiny_blacksmith.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ThePat02/BehaviourToolkit/5de713d7d8e433cfc21aacf568ff5a785e4d9db1/examples/assets/actors/tiny_blacksmith.png
--------------------------------------------------------------------------------
/examples/assets/actors/tiny_blacksmith.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://cp4n4mks4l6t4"
6 | path="res://.godot/imported/tiny_blacksmith.png-e7b9f86c8d20f4466bcf3ae8161f3fa5.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://examples/assets/actors/tiny_blacksmith.png"
14 | dest_files=["res://.godot/imported/tiny_blacksmith.png-e7b9f86c8d20f4466bcf3ae8161f3fa5.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/examples/assets/actors/tiny_crab.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ThePat02/BehaviourToolkit/5de713d7d8e433cfc21aacf568ff5a785e4d9db1/examples/assets/actors/tiny_crab.png
--------------------------------------------------------------------------------
/examples/assets/actors/tiny_crab.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://cnjtcqmw1tee"
6 | path="res://.godot/imported/tiny_crab.png-6b49064b1870499d2648af193bd638a5.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://examples/assets/actors/tiny_crab.png"
14 | dest_files=["res://.godot/imported/tiny_crab.png-6b49064b1870499d2648af193bd638a5.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/examples/assets/actors/tiny_cyclops.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ThePat02/BehaviourToolkit/5de713d7d8e433cfc21aacf568ff5a785e4d9db1/examples/assets/actors/tiny_cyclops.png
--------------------------------------------------------------------------------
/examples/assets/actors/tiny_cyclops.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://dd8t7dwcj5rwa"
6 | path="res://.godot/imported/tiny_cyclops.png-16204a1ebf2f035d51fe065609088dfc.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://examples/assets/actors/tiny_cyclops.png"
14 | dest_files=["res://.godot/imported/tiny_cyclops.png-16204a1ebf2f035d51fe065609088dfc.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/examples/assets/actors/tiny_evil wizard.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ThePat02/BehaviourToolkit/5de713d7d8e433cfc21aacf568ff5a785e4d9db1/examples/assets/actors/tiny_evil wizard.png
--------------------------------------------------------------------------------
/examples/assets/actors/tiny_evil wizard.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://btxqb42k83r5o"
6 | path="res://.godot/imported/tiny_evil wizard.png-7c6e76502002e65385293ef73c1ab62d.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://examples/assets/actors/tiny_evil wizard.png"
14 | dest_files=["res://.godot/imported/tiny_evil wizard.png-7c6e76502002e65385293ef73c1ab62d.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/examples/assets/actors/tiny_ghost.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ThePat02/BehaviourToolkit/5de713d7d8e433cfc21aacf568ff5a785e4d9db1/examples/assets/actors/tiny_ghost.png
--------------------------------------------------------------------------------
/examples/assets/actors/tiny_ghost.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://bqmwkipw1o70p"
6 | path="res://.godot/imported/tiny_ghost.png-aa7c83e251ace0de2ced8fa8951d615b.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://examples/assets/actors/tiny_ghost.png"
14 | dest_files=["res://.godot/imported/tiny_ghost.png-aa7c83e251ace0de2ced8fa8951d615b.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/examples/assets/actors/tiny_goohst.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ThePat02/BehaviourToolkit/5de713d7d8e433cfc21aacf568ff5a785e4d9db1/examples/assets/actors/tiny_goohst.png
--------------------------------------------------------------------------------
/examples/assets/actors/tiny_goohst.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://bgflndmud3o7t"
6 | path="res://.godot/imported/tiny_goohst.png-4c05259f4de4ae6fd7ce29fe28e4a72c.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://examples/assets/actors/tiny_goohst.png"
14 | dest_files=["res://.godot/imported/tiny_goohst.png-4c05259f4de4ae6fd7ce29fe28e4a72c.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/examples/assets/actors/tiny_knight.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ThePat02/BehaviourToolkit/5de713d7d8e433cfc21aacf568ff5a785e4d9db1/examples/assets/actors/tiny_knight.png
--------------------------------------------------------------------------------
/examples/assets/actors/tiny_knight.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://dwfwhfwfmvk38"
6 | path="res://.godot/imported/tiny_knight.png-b10864dcbfe4a4a4b386772cd7c2e5cd.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://examples/assets/actors/tiny_knight.png"
14 | dest_files=["res://.godot/imported/tiny_knight.png-b10864dcbfe4a4a4b386772cd7c2e5cd.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/examples/assets/actors/tiny_ranger.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ThePat02/BehaviourToolkit/5de713d7d8e433cfc21aacf568ff5a785e4d9db1/examples/assets/actors/tiny_ranger.png
--------------------------------------------------------------------------------
/examples/assets/actors/tiny_ranger.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://dipfngprca32d"
6 | path="res://.godot/imported/tiny_ranger.png-8581d28a338be156b8fd04d81f5fd358.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://examples/assets/actors/tiny_ranger.png"
14 | dest_files=["res://.godot/imported/tiny_ranger.png-8581d28a338be156b8fd04d81f5fd358.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/examples/assets/actors/tiny_viking.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ThePat02/BehaviourToolkit/5de713d7d8e433cfc21aacf568ff5a785e4d9db1/examples/assets/actors/tiny_viking.png
--------------------------------------------------------------------------------
/examples/assets/actors/tiny_viking.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://dg2n3qhi4aopa"
6 | path="res://.godot/imported/tiny_viking.png-f5d742ea1620256eac49f1653233a3dd.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://examples/assets/actors/tiny_viking.png"
14 | dest_files=["res://.godot/imported/tiny_viking.png-f5d742ea1620256eac49f1653233a3dd.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/examples/assets/actors/tiny_village.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ThePat02/BehaviourToolkit/5de713d7d8e433cfc21aacf568ff5a785e4d9db1/examples/assets/actors/tiny_village.png
--------------------------------------------------------------------------------
/examples/assets/actors/tiny_village.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://bsjt61unufjgi"
6 | path="res://.godot/imported/tiny_village.png-1d9a4d985319616f1a2c74970a6e8423.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://examples/assets/actors/tiny_village.png"
14 | dest_files=["res://.godot/imported/tiny_village.png-1d9a4d985319616f1a2c74970a6e8423.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/examples/assets/actors/tiny_wizard.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ThePat02/BehaviourToolkit/5de713d7d8e433cfc21aacf568ff5a785e4d9db1/examples/assets/actors/tiny_wizard.png
--------------------------------------------------------------------------------
/examples/assets/actors/tiny_wizard.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://cn654h0h8t5cw"
6 | path="res://.godot/imported/tiny_wizard.png-3115299f35f43f56a72ea2becfd310c8.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://examples/assets/actors/tiny_wizard.png"
14 | dest_files=["res://.godot/imported/tiny_wizard.png-3115299f35f43f56a72ea2becfd310c8.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/examples/assets/coin.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ThePat02/BehaviourToolkit/5de713d7d8e433cfc21aacf568ff5a785e4d9db1/examples/assets/coin.png
--------------------------------------------------------------------------------
/examples/assets/coin.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://co6i5qips2icn"
6 | path="res://.godot/imported/coin.png-4148480e2ce74079f4146c36b2678e66.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://examples/assets/coin.png"
14 | dest_files=["res://.godot/imported/coin.png-4148480e2ce74079f4146c36b2678e66.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/examples/assets/kenney_tinytown.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ThePat02/BehaviourToolkit/5de713d7d8e433cfc21aacf568ff5a785e4d9db1/examples/assets/kenney_tinytown.png
--------------------------------------------------------------------------------
/examples/assets/kenney_tinytown.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://duvn8ey0oylmd"
6 | path="res://.godot/imported/kenney_tinytown.png-7e27f811a422ded432a1862c222b0cb9.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://examples/assets/kenney_tinytown.png"
14 | dest_files=["res://.godot/imported/kenney_tinytown.png-7e27f811a422ded432a1862c222b0cb9.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/examples/behaviour_example/Camera.gd:
--------------------------------------------------------------------------------
1 | extends Camera2D
2 |
3 |
4 | @export var speed: float = 300.0
5 |
6 |
7 | var zoom_speed: float = 0.1
8 |
9 |
10 | func _physics_process(delta):
11 | # Move camera
12 | if Input.is_action_pressed("ui_right"):
13 | position.x += speed * delta
14 | if Input.is_action_pressed("ui_left"):
15 | position.x -= speed * delta
16 | if Input.is_action_pressed("ui_down"):
17 | position.y += speed * delta
18 | if Input.is_action_pressed("ui_up"):
19 | position.y -= speed * delta
20 |
21 |
22 | func _input(event):
23 | if event is InputEventMouseButton:
24 | if event.is_pressed():
25 | # Zoom in
26 | if event.button_index == MOUSE_BUTTON_WHEEL_UP:
27 | zoom += Vector2.ONE * zoom_speed
28 |
29 | # Zoom out
30 | if event.button_index == MOUSE_BUTTON_WHEEL_DOWN:
31 | # Clamp zoom to avoid negative values
32 | var new_zoom = zoom - Vector2.ONE * zoom_speed
33 | if new_zoom.x > 0 and new_zoom.y > 0:
34 | zoom = new_zoom
35 |
--------------------------------------------------------------------------------
/examples/behaviour_example/Camera.gd.uid:
--------------------------------------------------------------------------------
1 | uid://hr2laxeenvtx
2 |
--------------------------------------------------------------------------------
/examples/behaviour_example/NPCs/leaves/IsAlive.gd:
--------------------------------------------------------------------------------
1 | extends BTLeaf
2 |
3 |
4 | func tick(_delta: float, actor: Node, _blackboard: Blackboard) -> BTStatus:
5 | if actor.alive:
6 | return BTStatus.SUCCESS
7 |
8 | return BTStatus.FAILURE
9 |
10 |
--------------------------------------------------------------------------------
/examples/behaviour_example/NPCs/leaves/IsAlive.gd.uid:
--------------------------------------------------------------------------------
1 | uid://dpe5ls8m10ful
2 |
--------------------------------------------------------------------------------
/examples/behaviour_example/NPCs/leaves/IsHydrated.gd:
--------------------------------------------------------------------------------
1 | extends BTLeaf
2 |
3 |
4 | func tick(_delta: float, actor: Node, _blackboard: Blackboard) -> BTStatus:
5 | if actor.thirst == 0:
6 | return BTStatus.FAILURE
7 |
8 | return BTStatus.SUCCESS
9 |
--------------------------------------------------------------------------------
/examples/behaviour_example/NPCs/leaves/IsHydrated.gd.uid:
--------------------------------------------------------------------------------
1 | uid://btsxuyrmc3p5w
2 |
--------------------------------------------------------------------------------
/examples/behaviour_example/NPCs/leaves/RandomPOI.gd:
--------------------------------------------------------------------------------
1 | extends BTLeaf
2 |
3 |
4 | var last_target_position = Vector2.ZERO
5 |
6 |
7 | func tick(_delta: float, actor: Node, blackboard: Blackboard) -> BTStatus:
8 | if actor.navigation_agent.is_navigation_finished() and actor.navigation_agent.target_position != last_target_position:
9 | last_target_position = actor.navigation_agent.target_position
10 | return BTStatus.SUCCESS
11 |
12 | if actor.navigation_agent.target_position != last_target_position:
13 | return BTStatus.RUNNING
14 |
15 | # Get random location
16 | var locations = blackboard.get_value("locations")
17 | randomize()
18 | var location = locations[randi() % locations.size()]
19 |
20 | actor.move_to(location.position)
21 | return BTStatus.RUNNING
22 |
--------------------------------------------------------------------------------
/examples/behaviour_example/NPCs/leaves/RandomPOI.gd.uid:
--------------------------------------------------------------------------------
1 | uid://bx7ve1crfn4qg
2 |
--------------------------------------------------------------------------------
/examples/behaviour_example/NPCs/leaves/UseBottle.gd:
--------------------------------------------------------------------------------
1 | extends BTLeaf
2 |
3 |
4 | @export var bottle_volume: int = 10
5 |
6 |
7 | func tick(_delta: float, actor: Node, _blackboard: Blackboard) -> BTStatus:
8 | actor.state_machine.fire_event("start_refreshing")
9 | actor.thirst += bottle_volume
10 | return BTStatus.SUCCESS
11 |
--------------------------------------------------------------------------------
/examples/behaviour_example/NPCs/leaves/UseBottle.gd.uid:
--------------------------------------------------------------------------------
1 | uid://hanutoq0yi7y
2 |
--------------------------------------------------------------------------------
/examples/behaviour_example/NPCs/leaves/WalkToWell.gd:
--------------------------------------------------------------------------------
1 | extends BTLeaf
2 |
3 |
4 | var last_target_position = Vector2.ZERO
5 |
6 |
7 | func tick(_delta: float, actor: Node, blackboard: Blackboard) -> BTStatus:
8 | if actor.navigation_agent.is_navigation_finished() and actor.navigation_agent.target_position != last_target_position:
9 | last_target_position = actor.navigation_agent.target_position
10 | return BTStatus.SUCCESS
11 |
12 | if actor.thirst > 0:
13 | actor.state_machine.fire_event("start_refreshing")
14 | return BTStatus.SUCCESS
15 |
16 | if actor.navigation_agent.target_position != last_target_position:
17 | return BTStatus.RUNNING
18 |
19 | # Get random location
20 | var well = blackboard.get_value("well_area")
21 | actor.move_to(well.position)
22 | return BTStatus.RUNNING
23 |
24 |
--------------------------------------------------------------------------------
/examples/behaviour_example/NPCs/leaves/WalkToWell.gd.uid:
--------------------------------------------------------------------------------
1 | uid://buu101vspblw1
2 |
--------------------------------------------------------------------------------
/examples/behaviour_example/NPCs/states/state_ghost.gd:
--------------------------------------------------------------------------------
1 | extends FSMState
2 |
3 |
4 | ## Executes after the state is entered.
5 | func _on_enter(_actor: Node, _blackboard: Blackboard):
6 | pass
7 |
8 |
9 | ## Executes every _process call, if the state is active.
10 | func _on_update(_delta: float, _actor: Node, _blackboard: Blackboard):
11 | pass
12 |
13 |
14 | ## Executes before the state is exited.
15 | func _on_exit(_actor: Node, _blackboard: Blackboard):
16 | pass
17 |
--------------------------------------------------------------------------------
/examples/behaviour_example/NPCs/states/state_ghost.gd.uid:
--------------------------------------------------------------------------------
1 | uid://bldpd2rt2gfc5
2 |
--------------------------------------------------------------------------------
/examples/behaviour_example/NPCs/states/state_idle.gd:
--------------------------------------------------------------------------------
1 | extends FSMState
2 |
3 |
4 | ## Executes after the state is entered.
5 | func _on_enter(actor: Node, _blackboard: Blackboard):
6 | actor.animation_player.play("RESET")
7 | actor.animation_player.play("idle")
8 |
9 |
10 | ## Executes every _process call, if the state is active.
11 | func _on_update(_delta: float, _actor: Node, _blackboard: Blackboard):
12 | pass
13 |
14 |
15 | ## Executes before the state is exited.
16 | func _on_exit(_actor: Node, _blackboard: Blackboard):
17 | pass
18 |
--------------------------------------------------------------------------------
/examples/behaviour_example/NPCs/states/state_idle.gd.uid:
--------------------------------------------------------------------------------
1 | uid://ctmw8rr41u1ux
2 |
--------------------------------------------------------------------------------
/examples/behaviour_example/NPCs/states/state_refreshing.gd:
--------------------------------------------------------------------------------
1 | extends FSMState
2 |
3 |
4 | ## Executes after the state is entered.
5 | func _on_enter(actor: Node, _blackboard: Blackboard):
6 | actor.animation_player.play("RESET")
7 | actor.animation_player.play("refreshing")
8 |
9 |
10 | ## Executes every _process call, if the state is active.
11 | func _on_update(_delta: float, _actor: Node, _blackboard: Blackboard):
12 | pass
13 |
14 |
15 | ## Executes before the state is exited.
16 | func _on_exit(_actor: Node, _blackboard: Blackboard):
17 | pass
18 |
--------------------------------------------------------------------------------
/examples/behaviour_example/NPCs/states/state_refreshing.gd.uid:
--------------------------------------------------------------------------------
1 | uid://dis45amsi0qtr
2 |
--------------------------------------------------------------------------------
/examples/behaviour_example/NPCs/states/state_transformt.gd:
--------------------------------------------------------------------------------
1 | extends FSMState
2 |
3 |
4 | ## Executes after the state is entered.
5 | func _on_enter(actor: Node, _blackboard: Blackboard):
6 | # Make Transparent
7 | actor.set_modulate(Color(1, 1, 1, 0.5))
8 | actor.ghost_state_machine.fire_event("fully_transformed")
9 |
10 |
11 | ## Executes every _process call, if the state is active.
12 | func _on_update(_delta: float, _actor: Node, _blackboard: Blackboard):
13 | pass
14 |
15 |
16 | ## Executes before the state is exited.
17 | func _on_exit(_actor: Node, _blackboard: Blackboard):
18 | pass
19 |
--------------------------------------------------------------------------------
/examples/behaviour_example/NPCs/states/state_transformt.gd.uid:
--------------------------------------------------------------------------------
1 | uid://blw6kn4vmnakh
2 |
--------------------------------------------------------------------------------
/examples/behaviour_example/NPCs/states/state_walking.gd:
--------------------------------------------------------------------------------
1 | extends FSMState
2 |
3 |
4 | ## Executes after the state is entered.
5 | func _on_enter(actor: Node, _blackboard: Blackboard):
6 | actor.animation_player.play("RESET")
7 | actor.animation_player.play("walking")
8 |
9 |
10 | ## Executes every _process call, if the state is active.
11 | func _on_update(_delta: float, _actor: Node, _blackboard: Blackboard):
12 | pass
13 |
14 |
15 | ## Executes before the state is exited.
16 | func _on_exit(_actor: Node, _blackboard: Blackboard):
17 | pass
18 |
--------------------------------------------------------------------------------
/examples/behaviour_example/NPCs/states/state_walking.gd.uid:
--------------------------------------------------------------------------------
1 | uid://byn1oj8q82dky
2 |
--------------------------------------------------------------------------------
/examples/behaviour_example/NPCs/states/trans_on_revive.gd:
--------------------------------------------------------------------------------
1 | extends FSMTransition
2 |
3 | ## Executed when the transition is taken.
4 | func _on_transition(_delta: float, actor: Node, _blackboard: Blackboard):
5 | actor.alive = true
6 | actor.age = 1
7 | actor.set_modulate(Color(1, 1, 1, 1))
8 |
9 |
10 | ## Evaluates true, if the transition conditions are met.
11 | func is_valid(_actor: Node, _blackboard: Blackboard):
12 | return false
13 |
--------------------------------------------------------------------------------
/examples/behaviour_example/NPCs/states/trans_on_revive.gd.uid:
--------------------------------------------------------------------------------
1 | uid://bjym64dlc4hhy
2 |
--------------------------------------------------------------------------------
/examples/behaviour_example/NPCs/states/trans_on_start_walking.gd:
--------------------------------------------------------------------------------
1 | extends FSMTransition
2 |
3 | ## Executed when the transition is taken.
4 | func _on_transition(_delta: float, _actor: Node, _blackboard: Blackboard):
5 | pass
6 |
7 |
8 | ## Evaluates true, if the transition conditions are met.
9 | func is_valid(_actor: Node, _blackboard: Blackboard):
10 | return false
11 |
12 |
--------------------------------------------------------------------------------
/examples/behaviour_example/NPCs/states/trans_on_start_walking.gd.uid:
--------------------------------------------------------------------------------
1 | uid://p5w6telrj0j7
2 |
--------------------------------------------------------------------------------
/examples/behaviour_example/NPCs/states/trans_on_stop_walking.gd:
--------------------------------------------------------------------------------
1 | extends FSMTransition
2 |
3 | ## Executed when the transition is taken.
4 | func _on_transition(_delta: float, _actor: Node, _blackboard: Blackboard):
5 | pass
6 |
7 |
8 | ## Evaluates true, if the transition conditions are met.
9 | func is_valid(_actor: Node, _blackboard: Blackboard):
10 | return false
11 |
12 |
--------------------------------------------------------------------------------
/examples/behaviour_example/NPCs/states/trans_on_stop_walking.gd.uid:
--------------------------------------------------------------------------------
1 | uid://dqowalrfhfy6u
2 |
--------------------------------------------------------------------------------
/examples/behaviour_example/actor/actor.gd:
--------------------------------------------------------------------------------
1 | extends CharacterBody2D
2 |
3 |
4 | @export var age: int = 1
5 | @export var death_age: int = 100
6 | @export var movement_speed: float = 200
7 | @export_range(0, 100) var thirst: int = 100
8 | @export var alive: bool = true
9 |
10 | @export_category("Utility")
11 | @export var navigation_agent: NavigationAgent2D
12 | @export var animation_player: AnimationPlayer
13 | @export_category("BehaviourToolkit")
14 | @export var state_machine: FiniteStateMachine
15 | @export var behaviour_tree: BTRoot
16 | @export var ghost_state_machine: FiniteStateMachine
17 |
18 |
19 | func _ready():
20 | navigation_agent.connect("velocity_computed", _on_velocity_computed)
21 |
22 |
23 | func move_to(target: Vector2) -> void:
24 | state_machine.fire_event("start_walking")
25 | navigation_agent.target_position = target
26 |
27 |
28 | func _physics_process(_delta):
29 | if navigation_agent.is_navigation_finished():
30 | state_machine.fire_event("stop_walking")
31 | return
32 |
33 | var next_position = navigation_agent.get_next_path_position()
34 |
35 | var new_velocity: Vector2 = (next_position - position).normalized() * movement_speed
36 |
37 | navigation_agent.set_velocity(new_velocity)
38 |
39 |
40 | func _on_velocity_computed(safe_velocity: Vector2):
41 | velocity = safe_velocity
42 | move_and_slide()
43 |
44 |
45 | func _on_player_tick_timeout():
46 | if thirst > 0:
47 | thirst -= 1
48 |
49 | age += 1
50 |
51 | if age >= death_age:
52 | alive = false
53 |
54 |
55 | func _on_input_event(_viewport:Node, _event:InputEvent, _shape_idx:int):
56 | ghost_state_machine.fire_event("revive")
57 |
--------------------------------------------------------------------------------
/examples/behaviour_example/actor/actor.gd.uid:
--------------------------------------------------------------------------------
1 | uid://dkj3sb4f3yxpp
2 |
--------------------------------------------------------------------------------
/examples/behaviour_example/behaviour_example.gd:
--------------------------------------------------------------------------------
1 | extends Node2D
2 |
3 |
4 | @export var global_blackboard: Blackboard
5 |
6 |
7 | func _ready():
8 | # Fill the global blackboard with the locations
9 | global_blackboard.set_value("locations", $Locations.get_children())
10 | global_blackboard.set_value("well_area", $WellArea)
11 |
12 |
13 | func _on_well_area_body_entered(body:Node2D):
14 | if body is TileMap:
15 | return
16 |
17 | body.thirst += 10
18 |
--------------------------------------------------------------------------------
/examples/behaviour_example/behaviour_example.gd.uid:
--------------------------------------------------------------------------------
1 | uid://c51orvxej8uxv
2 |
--------------------------------------------------------------------------------
/examples/behaviour_example/global_blackboard.tres:
--------------------------------------------------------------------------------
1 | [gd_resource type="Resource" script_class="Blackboard" load_steps=2 format=3 uid="uid://c60ird40hkxeb"]
2 |
3 | [ext_resource type="Script" path="res://addons/behaviour_toolkit/blackboard.gd" id="1_5dskv"]
4 |
5 | [resource]
6 | script = ExtResource("1_5dskv")
7 | content = {}
8 |
--------------------------------------------------------------------------------
/examples/fsm_character_controller/MrBlacksmith.gd:
--------------------------------------------------------------------------------
1 | extends CharacterBody2D
2 |
3 |
4 | const SPEED := 100.0
5 | const SPRINT_MULTIPLIER := 1.7
6 |
7 |
8 | var movement_direction := Vector2.ZERO
9 |
10 |
11 | @onready var state_machine := $FSMController
12 | @onready var sprite := $Sprite2D
13 | @onready var animation_player := $AnimationPlayer
14 | @onready var particles_walking := $ParticlesWalking
15 |
16 |
17 | func _physics_process(_delta):
18 | movement_direction = Vector2(
19 | Input.get_axis("ui_left", "ui_right"),
20 | Input.get_axis("ui_up", "ui_down")
21 | )
22 |
23 |
24 | func _ready():
25 | state_machine.start()
--------------------------------------------------------------------------------
/examples/fsm_character_controller/MrBlacksmith.gd.uid:
--------------------------------------------------------------------------------
1 | uid://d4g4u8q8b7rsx
2 |
--------------------------------------------------------------------------------
/examples/fsm_character_controller/crab.tscn:
--------------------------------------------------------------------------------
1 | [gd_scene load_steps=8 format=3 uid="uid://ds1mew31yiyj"]
2 |
3 | [ext_resource type="Texture2D" uid="uid://cnjtcqmw1tee" path="res://examples/assets/actors/tiny_crab.png" id="1_5suvw"]
4 | [ext_resource type="Script" uid="uid://d11c6gwrjou0w" path="res://addons/behaviour_toolkit/behaviour_tree/bt_root.gd" id="2_eevb3"]
5 | [ext_resource type="Script" uid="uid://c6si2venemcbd" path="res://addons/behaviour_toolkit/behaviour_tree/composites/bt_random.gd" id="3_dv664"]
6 | [ext_resource type="Script" uid="uid://dpr2xa1e5hy8u" path="res://addons/behaviour_toolkit/behaviour_tree/composites/bt_sequence.gd" id="4_iyxnv"]
7 | [ext_resource type="Script" uid="uid://ba52jr7ryaq75" path="res://addons/behaviour_toolkit/behaviour_tree/leaves/leaf_tween.gd" id="5_i3fqj"]
8 | [ext_resource type="Script" uid="uid://buvb8uppbyosm" path="res://addons/behaviour_toolkit/behaviour_tree/leaves/leaf_wait.gd" id="6_q85ek"]
9 |
10 | [sub_resource type="CircleShape2D" id="CircleShape2D_26ahs"]
11 | radius = 8.0
12 |
13 | [node name="Crab" type="CharacterBody2D"]
14 | texture_filter = 1
15 |
16 | [node name="Sprite2D" type="Sprite2D" parent="."]
17 | texture = ExtResource("1_5suvw")
18 |
19 | [node name="CollisionShape2D" type="CollisionShape2D" parent="."]
20 | shape = SubResource("CircleShape2D_26ahs")
21 |
22 | [node name="BTRoot" type="Node" parent="." node_paths=PackedStringArray("actor")]
23 | script = ExtResource("2_eevb3")
24 | autostart = true
25 | actor = NodePath("..")
26 | verbose = true
27 |
28 | [node name="ChangeColor" type="Node" parent="BTRoot"]
29 | script = ExtResource("4_iyxnv")
30 |
31 | [node name="RandomColor" type="Node" parent="BTRoot/ChangeColor"]
32 | script = ExtResource("3_dv664")
33 |
34 | [node name="Green" type="Node" parent="BTRoot/ChangeColor/RandomColor"]
35 | script = ExtResource("5_i3fqj")
36 | tween_property = "modulate"
37 | tween_value_type = 4
38 | tween_value_color = Color(0, 0.94902, 0, 1)
39 |
40 | [node name="Yellow" type="Node" parent="BTRoot/ChangeColor/RandomColor"]
41 | script = ExtResource("5_i3fqj")
42 | tween_property = "modulate"
43 | tween_value_type = 4
44 | tween_value_color = Color(0.937255, 0.819608, 0.219608, 1)
45 |
46 | [node name="Blue" type="Node" parent="BTRoot/ChangeColor/RandomColor"]
47 | script = ExtResource("5_i3fqj")
48 | tween_property = "modulate"
49 | tween_value_type = 4
50 | tween_value_color = Color(0.239216, 0.568627, 1, 1)
51 |
52 | [node name="Wait" type="Node" parent="BTRoot/ChangeColor"]
53 | script = ExtResource("6_q85ek")
54 |
55 | [node name="ResetColor" type="Node" parent="BTRoot/ChangeColor"]
56 | script = ExtResource("5_i3fqj")
57 | tween_property = "modulate"
58 | tween_value_type = 4
59 | tween_value_color = Color(1, 1, 1, 1)
60 |
--------------------------------------------------------------------------------
/examples/fsm_character_controller/states/IDLE.gd:
--------------------------------------------------------------------------------
1 | extends FSMState
2 |
3 |
4 | # Executes after the state is entered.
5 | func _on_enter(actor, _blackboard: Blackboard):
6 | # Cast actor
7 | actor = actor as CharacterBody2D
8 |
9 | actor.animation_player.play("idle")
10 |
11 |
12 | # Executes every _process call, if the state is active.
13 | func _on_update(_delta, _actor, _blackboard: Blackboard):
14 | pass
15 |
16 |
17 | # Executes before the state is exited.
18 | func _on_exit(_actor, _blackboard: Blackboard):
19 | pass
20 |
21 |
--------------------------------------------------------------------------------
/examples/fsm_character_controller/states/IDLE.gd.uid:
--------------------------------------------------------------------------------
1 | uid://b8cyip4l40jgx
2 |
--------------------------------------------------------------------------------
/examples/fsm_character_controller/states/MOVING.gd:
--------------------------------------------------------------------------------
1 | extends FSMState
2 |
3 |
4 | # Executes after the state is entered.
5 | func _on_enter(actor: Node, _blackboard: Blackboard) -> void:
6 | # Cast actor
7 | actor = actor as CharacterBody2D
8 |
9 | actor.animation_player.play("walking")
10 |
11 |
12 | # Executes every _process call, if the state is active.
13 | func _on_update(_delta: float, actor: Node, _blackboard: Blackboard) -> void:
14 | # Cast actor
15 | actor = actor as CharacterBody2D
16 |
17 | actor.velocity = actor.movement_direction * actor.SPEED
18 |
19 | # Flip the sprite if the actor is moving right.
20 | if actor.velocity.x < 0:
21 | actor.sprite.flip_h = true
22 | else:
23 | actor.sprite.flip_h = false
24 |
25 | actor.move_and_slide()
26 |
27 |
28 | # Executes before the state is exited.
29 | func _on_exit(_actor: Node, _blackboard: Blackboard) -> void:
30 | pass
31 |
--------------------------------------------------------------------------------
/examples/fsm_character_controller/states/MOVING.gd.uid:
--------------------------------------------------------------------------------
1 | uid://cvjqfgfhu2yue
2 |
--------------------------------------------------------------------------------
/examples/fsm_character_controller/states/SPRINTING.gd:
--------------------------------------------------------------------------------
1 | extends FSMState
2 |
3 |
4 | # Executes after the state is entered.
5 | func _on_enter(actor, _blackboard: Blackboard):
6 | # Cast actor
7 | actor = actor as CharacterBody2D
8 |
9 | actor.particles_walking.emitting = true
10 |
11 |
12 | # Executes every _process call, if the state is active.
13 | func _on_update(_delta: float, actor: Node, _blackboard: Blackboard) -> void:
14 | # Cast actor
15 | actor = actor as CharacterBody2D
16 |
17 | actor.velocity = actor.movement_direction * actor.SPEED * actor.SPRINT_MULTIPLIER
18 |
19 | # Flip the sprite if the actor is moving right.
20 | if actor.velocity.x < 0:
21 | actor.sprite.flip_h = true
22 | else:
23 | actor.sprite.flip_h = false
24 |
25 | actor.move_and_slide()
26 |
27 |
28 | # Executes before the state is exited.
29 | func _on_exit(actor, _blackboard: Blackboard):
30 | # Cast actor
31 | actor = actor as CharacterBody2D
32 |
33 | actor.particles_walking.emitting = false
34 |
35 |
--------------------------------------------------------------------------------
/examples/fsm_character_controller/states/SPRINTING.gd.uid:
--------------------------------------------------------------------------------
1 | uid://c2yda53e16fwn
2 |
--------------------------------------------------------------------------------
/examples/fsm_character_controller/transitions/onStartMoving.gd:
--------------------------------------------------------------------------------
1 | extends FSMTransition
2 |
3 | # Executed when the transition is taken.
4 | func _on_transition(_delta, _actor, _blackboard: Blackboard):
5 | pass
6 |
7 |
8 | # Evaluates true, if the transition conditions are met.
9 | func is_valid(actor, _blackboard: Blackboard):
10 | # Cast actor
11 | actor = actor as CharacterBody2D
12 |
13 | if actor.movement_direction != Vector2.ZERO:
14 | return true
15 | return false
16 |
--------------------------------------------------------------------------------
/examples/fsm_character_controller/transitions/onStartMoving.gd.uid:
--------------------------------------------------------------------------------
1 | uid://clqh1515due6x
2 |
--------------------------------------------------------------------------------
/examples/fsm_character_controller/transitions/onStartSprinting.gd:
--------------------------------------------------------------------------------
1 | extends FSMTransition
2 |
3 | # Executed when the transition is taken.
4 | func _on_transition(_delta, _actor, _blackboard: Blackboard):
5 | pass
6 |
7 |
8 | # Evaluates true, if the transition conditions are met.
9 | func is_valid(_actor, _blackboard: Blackboard):
10 | if Input.is_action_pressed("action_sprint"):
11 | return true
12 | else:
13 | return false
14 |
--------------------------------------------------------------------------------
/examples/fsm_character_controller/transitions/onStartSprinting.gd.uid:
--------------------------------------------------------------------------------
1 | uid://db4n8gh1ye50c
2 |
--------------------------------------------------------------------------------
/examples/fsm_character_controller/transitions/onStopMoving.gd:
--------------------------------------------------------------------------------
1 | extends FSMTransition
2 |
3 | # Executed when the transition is taken.
4 | func _on_transition(_delta, _actor, _blackboard: Blackboard):
5 | pass
6 |
7 |
8 | # Evaluates true, if the transition conditions are met.
9 | func is_valid(actor, _blackboard: Blackboard):
10 | # Cast actor
11 | actor = actor as CharacterBody2D
12 |
13 | if actor.movement_direction == Vector2.ZERO:
14 | return true
15 | return false
16 |
--------------------------------------------------------------------------------
/examples/fsm_character_controller/transitions/onStopMoving.gd.uid:
--------------------------------------------------------------------------------
1 | uid://djobir3d8k83r
2 |
--------------------------------------------------------------------------------
/examples/fsm_character_controller/transitions/onStopSprinting.gd:
--------------------------------------------------------------------------------
1 | extends FSMTransition
2 |
3 | # Executed when the transition is taken.
4 | func _on_transition(_delta, _actor, _blackboard: Blackboard):
5 | pass
6 |
7 |
8 | # Evaluates true, if the transition conditions are met.
9 | func is_valid(_actor, _blackboard: Blackboard):
10 | if not Input.is_action_pressed("action_sprint"):
11 | return true
12 | else:
13 | return false
14 |
--------------------------------------------------------------------------------
/examples/fsm_character_controller/transitions/onStopSprinting.gd.uid:
--------------------------------------------------------------------------------
1 | uid://beyib2ryg4dja
2 |
--------------------------------------------------------------------------------
/icon.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/icon.svg.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://bbilmsl1ghy3k"
6 | path="res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://icon.svg"
14 | dest_files=["res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 | svg/scale=1.0
36 | editor/scale_with_editor_scale=false
37 | editor/convert_colors_with_editor_theme=false
38 |
--------------------------------------------------------------------------------
/script_templates/BTComposite/new_composite.gd:
--------------------------------------------------------------------------------
1 | @tool
2 | extends BTComposite
3 |
4 |
5 | # Gets called every tick of the behavior tree
6 | # `leaves` is an array of the children of this node set @onready
7 | func tick(_delta: float, _actor: Node, _blackboard: Blackboard) -> BTStatus:
8 | # Logic for ticking one or more leaves
9 | # Return BTStatus depending on the result of the leaves
10 | # Return BTStatus.RUNNING, if there are still leaves to tick
11 | return BTStatus.SUCCESS
12 |
13 |
14 | # Add custom configuration warnings
15 | # Note: Can be deleted if you don't want to define your own warnings.
16 | func _get_configuration_warnings() -> PackedStringArray:
17 | var warnings: Array = []
18 |
19 | warnings.append_array(super._get_configuration_warnings())
20 |
21 | # Add your own warnings to the array here
22 |
23 | return warnings
24 |
--------------------------------------------------------------------------------
/script_templates/BTComposite/new_composite.gd.uid:
--------------------------------------------------------------------------------
1 | uid://dnrjf0xxb5ym5
2 |
--------------------------------------------------------------------------------
/script_templates/BTDecorator/new_decorator.gd:
--------------------------------------------------------------------------------
1 | @tool
2 | extends BTDecorator
3 |
4 |
5 | # Gets called every tick of the behavior tree
6 | # `leaf` is the child of this decorator and is automatically set @onready
7 | func tick(_delta: float, _actor: Node, _blackboard: Blackboard) -> BTStatus:
8 | var response = leaf.tick(_delta, _actor, _blackboard)
9 |
10 | # Augment the response of the leaf
11 |
12 | return response
13 |
14 |
15 | # Add custom configuration warnings
16 | # Note: Can be deleted if you don't want to define your own warnings.
17 | func _get_configuration_warnings() -> PackedStringArray:
18 | var warnings: Array = []
19 |
20 | warnings.append_array(super._get_configuration_warnings())
21 |
22 | # Add your own warnings to the array here
23 |
24 | return warnings
25 |
--------------------------------------------------------------------------------
/script_templates/BTDecorator/new_decorator.gd.uid:
--------------------------------------------------------------------------------
1 | uid://c0l3av16aw2i1
2 |
--------------------------------------------------------------------------------
/script_templates/BTLeaf/new_leaf.gd:
--------------------------------------------------------------------------------
1 | @tool
2 | extends BTLeaf
3 |
4 |
5 | # Gets called every tick of the behavior tree
6 | func tick(_delta: float, _actor: Node, _blackboard: Blackboard) -> BTStatus:
7 | # Handle leaf logic
8 | # Return SUCCESS, FAILURE, or RUNNING
9 | return BTStatus.SUCCESS
10 |
11 |
12 | # Add custom configuration warnings
13 | # Note: Can be deleted if you don't want to define your own warnings.
14 | func _get_configuration_warnings() -> PackedStringArray:
15 | var warnings: Array = []
16 |
17 | warnings.append_array(super._get_configuration_warnings())
18 |
19 | # Add your own warnings to the array here
20 |
21 | return warnings
22 |
--------------------------------------------------------------------------------
/script_templates/BTLeaf/new_leaf.gd.uid:
--------------------------------------------------------------------------------
1 | uid://c7triwqk7njkv
2 |
--------------------------------------------------------------------------------
/script_templates/FSMState/new_state.gd:
--------------------------------------------------------------------------------
1 | @tool
2 | extends FSMState
3 |
4 |
5 | # Executes after the state is entered.
6 | func _on_enter(_actor: Node, _blackboard: Blackboard) -> void:
7 | pass
8 |
9 |
10 | # Executes every _process call, if the state is active.
11 | func _on_update(_delta: float, _actor: Node, _blackboard: Blackboard) -> void:
12 | pass
13 |
14 |
15 | # Executes before the state is exited.
16 | func _on_exit(_actor: Node, _blackboard: Blackboard) -> void:
17 | pass
18 |
19 |
20 | # Add custom configuration warnings
21 | # Note: Can be deleted if you don't want to define your own warnings.
22 | func _get_configuration_warnings() -> PackedStringArray:
23 | var warnings: Array = []
24 |
25 | warnings.append_array(super._get_configuration_warnings())
26 |
27 | # Add your own warnings to the array here
28 |
29 | return warnings
30 |
--------------------------------------------------------------------------------
/script_templates/FSMState/new_state.gd.uid:
--------------------------------------------------------------------------------
1 | uid://r5h0488o4gl4
2 |
--------------------------------------------------------------------------------
/script_templates/FSMTransition/new_transition.gd:
--------------------------------------------------------------------------------
1 | @tool
2 | extends FSMTransition
3 |
4 |
5 | # Executed when the transition is taken.
6 | func _on_transition(_delta: float, _actor: Node, _blackboard: Blackboard) -> void:
7 | pass
8 |
9 |
10 | # Evaluates true, if the transition conditions are met.
11 | func is_valid(_actor: Node, _blackboard: Blackboard) -> bool:
12 | return false
13 |
14 |
15 | # Add custom configuration warnings
16 | # Note: Can be deleted if you don't want to define your own warnings.
17 | func _get_configuration_warnings() -> PackedStringArray:
18 | var warnings: Array = []
19 |
20 | warnings.append_array(super._get_configuration_warnings())
21 |
22 | # Add your own warnings to the array here
23 |
24 | return warnings
25 |
--------------------------------------------------------------------------------
/script_templates/FSMTransition/new_transition.gd.uid:
--------------------------------------------------------------------------------
1 | uid://bhpluegiu8ysu
2 |
--------------------------------------------------------------------------------