├── .github └── FUNDING.yml ├── CHANGELOG.md ├── CHANGELOG.md.meta ├── Documentation.meta ├── Documentation ├── Images.meta └── Images │ ├── behaviour_tree_view.png │ ├── behaviour_tree_view.png.meta │ ├── blackboard_key.png │ ├── blackboard_key.png.meta │ ├── blackboard_key_overrides.png │ ├── blackboard_key_overrides.png.meta │ ├── editor.png │ ├── editor.png.meta │ ├── install_package.png │ ├── install_package.png.meta │ ├── menu_command.png │ ├── menu_command.png.meta │ ├── new_node.png │ ├── new_node.png.meta │ ├── new_script.png │ ├── new_script.png.meta │ ├── new_tree.png │ ├── new_tree.png.meta │ ├── settings.png │ ├── settings.png.meta │ ├── thekiwicoder_profile_square_noborder_512_512.png │ └── thekiwicoder_profile_square_noborder_512_512.png.meta ├── Editor.meta ├── Editor ├── BehaviourTreeEditorWindow.cs ├── BehaviourTreeEditorWindow.cs.meta ├── BehaviourTreeEditorWindowState.cs ├── BehaviourTreeEditorWindowState.cs.meta ├── BehaviourTreeProjectSettings.cs ├── BehaviourTreeProjectSettings.cs.meta ├── BehaviourTreeView.cs ├── BehaviourTreeView.cs.meta ├── BlackboardView.cs ├── BlackboardView.cs.meta ├── CreateNodeWindow.cs ├── CreateNodeWindow.cs.meta ├── CustomEditors.meta ├── CustomEditors │ ├── BehaviourTreeInstanceEditor.cs │ └── BehaviourTreeInstanceEditor.cs.meta ├── DoubleClickNode.cs ├── DoubleClickNode.cs.meta ├── EditorUtility.cs ├── EditorUtility.cs.meta ├── HierarchySelector.cs ├── HierarchySelector.cs.meta ├── InspectorView.cs ├── InspectorView.cs.meta ├── NewScriptDialogView.cs ├── NewScriptDialogView.cs.meta ├── NodePort.cs ├── NodePort.cs.meta ├── NodeView.cs ├── NodeView.cs.meta ├── OverlayView.cs ├── OverlayView.cs.meta ├── PropertyDrawers.meta ├── PropertyDrawers │ ├── BlackboardKeyPropertyDrawer.cs │ ├── BlackboardKeyPropertyDrawer.cs.meta │ ├── BlackboardKeyValuePairPropertyDrawer.cs │ ├── BlackboardKeyValuePairPropertyDrawer.cs.meta │ ├── NodePropertyPropertyDrawer.cs │ └── NodePropertyPropertyDrawer.cs.meta ├── Resources.meta ├── Resources │ ├── node_action.png │ ├── node_action.png.meta │ ├── node_condition.png │ ├── node_condition.png.meta │ ├── node_exclamation.png │ ├── node_exclamation.png.meta │ ├── node_parallel.png │ ├── node_parallel.png.meta │ ├── node_root.png │ ├── node_root.png.meta │ ├── node_selector.png │ ├── node_selector.png.meta │ ├── node_sequencer.png │ ├── node_sequencer.png.meta │ ├── node_subtree.png │ ├── node_subtree.png.meta │ ├── thekiwicoder_16x16.png │ └── thekiwicoder_16x16.png.meta ├── ScriptTemplates.meta ├── ScriptTemplates │ ├── ActionNodeTemplate.txt │ ├── ActionNodeTemplate.txt.meta │ ├── CompositeNodeTemplate.txt │ ├── CompositeNodeTemplate.txt.meta │ ├── ConditionNodeTemplate.txt │ ├── ConditionNodeTemplate.txt.meta │ ├── DecoratorNodeTempalte.txt │ └── DecoratorNodeTempalte.txt.meta ├── SerializedBehaviourTree.cs ├── SerializedBehaviourTree.cs.meta ├── SplitView.cs ├── SplitView.cs.meta ├── TreeViewTab.cs ├── TreeViewTab.cs.meta ├── UIBuilder.meta ├── UIBuilder │ ├── BehaviourTreeEditor.uxml │ ├── BehaviourTreeEditor.uxml.meta │ ├── BehaviourTreeEditorStyle.uss │ ├── BehaviourTreeEditorStyle.uss.meta │ ├── DropShadowSliced.png │ ├── DropShadowSliced.png.meta │ ├── NodeView.uxml │ ├── NodeView.uxml.meta │ ├── NodeViewStyle.uss │ └── NodeViewStyle.uss.meta ├── thekiwicoder.behaviourtreeeditor.Editor.asmdef └── thekiwicoder.behaviourtreeeditor.Editor.asmdef.meta ├── LICENSE.MD ├── LICENSE.MD.meta ├── README.md ├── README.md.meta ├── Runtime.meta ├── Runtime ├── ActionNode.cs ├── ActionNode.cs.meta ├── Actions.meta ├── Actions │ ├── Breakpoint.cs │ ├── Breakpoint.cs.meta │ ├── CompareProperty.cs │ ├── CompareProperty.cs.meta │ ├── Log.cs │ ├── Log.cs.meta │ ├── MoveToPosition.cs │ ├── MoveToPosition.cs.meta │ ├── RandomFailure.cs │ ├── RandomFailure.cs.meta │ ├── RandomPosition.cs │ ├── RandomPosition.cs.meta │ ├── SetProperty.cs │ ├── SetProperty.cs.meta │ ├── SubTree.cs │ ├── SubTree.cs.meta │ ├── Wait.cs │ └── Wait.cs.meta ├── BehaviourTree.cs ├── BehaviourTree.cs.meta ├── BehaviourTreeBuilder.cs ├── BehaviourTreeBuilder.cs.meta ├── BehaviourTreeInstance.cs ├── BehaviourTreeInstance.cs.meta ├── Blackboard.cs ├── Blackboard.cs.meta ├── BlackboardKey.cs ├── BlackboardKey.cs.meta ├── BlackboardKeyTypes.cs ├── BlackboardKeyTypes.cs.meta ├── BlackboardKeyValuePair.cs ├── BlackboardKeyValuePair.cs.meta ├── CompositeNode.cs ├── CompositeNode.cs.meta ├── Composites.meta ├── Composites │ ├── Parallel.cs │ ├── Parallel.cs.meta │ ├── Selector.cs │ ├── Selector.cs.meta │ ├── Sequencer.cs │ └── Sequencer.cs.meta ├── ConditionNode.cs ├── ConditionNode.cs.meta ├── Context.cs ├── Context.cs.meta ├── DecoratorNode.cs ├── DecoratorNode.cs.meta ├── Decorators.meta ├── Decorators │ ├── Failure.cs │ ├── Failure.cs.meta │ ├── Inverter.cs │ ├── Inverter.cs.meta │ ├── Repeat.cs │ ├── Repeat.cs.meta │ ├── Succeed.cs │ ├── Succeed.cs.meta │ ├── Timeout.cs │ └── Timeout.cs.meta ├── Node.cs ├── Node.cs.meta ├── NodeProperty.cs ├── NodeProperty.cs.meta ├── RootNode.cs ├── RootNode.cs.meta ├── thekiwicoder.behaviourtreeeditor.asmdef └── thekiwicoder.behaviourtreeeditor.asmdef.meta ├── Samples~ ├── RandomWalk.meta └── RandomWalk │ ├── NavMesh.asset │ ├── NavMesh.asset.meta │ ├── RandomWalk.unity │ ├── RandomWalk.unity.meta │ ├── RandomWalkTree.asset │ └── RandomWalkTree.asset.meta ├── Third Party Notices.md ├── Third Party Notices.md.meta ├── package.json └── package.json.meta /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | github: [thekiwicoder0] 4 | patreon: thekiwicoder 5 | open_collective: # Replace with a single Open Collective username 6 | ko_fi: # Replace with a single Ko-fi username 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 | otechie: # Replace with a single Otechie username 12 | lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry 13 | custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] 14 | -------------------------------------------------------------------------------- /CHANGELOG.md.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9c79b95084ed12d4c9af5f2e1bdf3571 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Documentation.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e59cf3706f1664447bb3331816e96a26 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Documentation/Images.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 01bbed806fa631840a7d32715e78204e 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Documentation/Images/behaviour_tree_view.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thekiwicoder0/UnityBehaviourTreeEditor/08cf24d559801c56e69f30b82a6cef7dac80ff2d/Documentation/Images/behaviour_tree_view.png -------------------------------------------------------------------------------- /Documentation/Images/behaviour_tree_view.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 127a7e475d05e104daa905c317476cf0 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 11 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 1 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 0 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | vTOnly: 0 27 | ignoreMasterTextureLimit: 0 28 | grayScaleToAlpha: 0 29 | generateCubemap: 6 30 | cubemapConvolution: 0 31 | seamlessCubemap: 0 32 | textureFormat: 1 33 | maxTextureSize: 2048 34 | textureSettings: 35 | serializedVersion: 2 36 | filterMode: 1 37 | aniso: 1 38 | mipBias: 0 39 | wrapU: 0 40 | wrapV: 0 41 | wrapW: 0 42 | nPOTScale: 1 43 | lightmap: 0 44 | compressionQuality: 50 45 | spriteMode: 0 46 | spriteExtrude: 1 47 | spriteMeshType: 1 48 | alignment: 0 49 | spritePivot: {x: 0.5, y: 0.5} 50 | spritePixelsToUnits: 100 51 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 52 | spriteGenerateFallbackPhysicsShape: 1 53 | alphaUsage: 1 54 | alphaIsTransparency: 0 55 | spriteTessellationDetail: -1 56 | textureType: 0 57 | textureShape: 1 58 | singleChannelComponent: 0 59 | flipbookRows: 1 60 | flipbookColumns: 1 61 | maxTextureSizeSet: 0 62 | compressionQualitySet: 0 63 | textureFormatSet: 0 64 | ignorePngGamma: 0 65 | applyGammaDecoding: 0 66 | platformSettings: 67 | - serializedVersion: 3 68 | buildTarget: DefaultTexturePlatform 69 | maxTextureSize: 2048 70 | resizeAlgorithm: 0 71 | textureFormat: -1 72 | textureCompression: 1 73 | compressionQuality: 50 74 | crunchedCompression: 0 75 | allowsAlphaSplitting: 0 76 | overridden: 0 77 | androidETC2FallbackOverride: 0 78 | forceMaximumCompressionQuality_BC6H_BC7: 0 79 | - serializedVersion: 3 80 | buildTarget: Standalone 81 | maxTextureSize: 2048 82 | resizeAlgorithm: 0 83 | textureFormat: -1 84 | textureCompression: 1 85 | compressionQuality: 50 86 | crunchedCompression: 0 87 | allowsAlphaSplitting: 0 88 | overridden: 0 89 | androidETC2FallbackOverride: 0 90 | forceMaximumCompressionQuality_BC6H_BC7: 0 91 | - serializedVersion: 3 92 | buildTarget: Server 93 | maxTextureSize: 2048 94 | resizeAlgorithm: 0 95 | textureFormat: -1 96 | textureCompression: 1 97 | compressionQuality: 50 98 | crunchedCompression: 0 99 | allowsAlphaSplitting: 0 100 | overridden: 0 101 | androidETC2FallbackOverride: 0 102 | forceMaximumCompressionQuality_BC6H_BC7: 0 103 | spriteSheet: 104 | serializedVersion: 2 105 | sprites: [] 106 | outline: [] 107 | physicsShape: [] 108 | bones: [] 109 | spriteID: 110 | internalID: 0 111 | vertices: [] 112 | indices: 113 | edges: [] 114 | weights: [] 115 | secondaryTextures: [] 116 | nameFileIdTable: {} 117 | spritePackingTag: 118 | pSDRemoveMatte: 0 119 | pSDShowRemoveMatteOption: 0 120 | userData: 121 | assetBundleName: 122 | assetBundleVariant: 123 | -------------------------------------------------------------------------------- /Documentation/Images/blackboard_key.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thekiwicoder0/UnityBehaviourTreeEditor/08cf24d559801c56e69f30b82a6cef7dac80ff2d/Documentation/Images/blackboard_key.png -------------------------------------------------------------------------------- /Documentation/Images/blackboard_key.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b3f66b20b7f31c44996756416565fc8f 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 11 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 1 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 0 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | vTOnly: 0 27 | ignoreMasterTextureLimit: 0 28 | grayScaleToAlpha: 0 29 | generateCubemap: 6 30 | cubemapConvolution: 0 31 | seamlessCubemap: 0 32 | textureFormat: 1 33 | maxTextureSize: 2048 34 | textureSettings: 35 | serializedVersion: 2 36 | filterMode: 1 37 | aniso: 1 38 | mipBias: 0 39 | wrapU: 0 40 | wrapV: 0 41 | wrapW: 0 42 | nPOTScale: 1 43 | lightmap: 0 44 | compressionQuality: 50 45 | spriteMode: 0 46 | spriteExtrude: 1 47 | spriteMeshType: 1 48 | alignment: 0 49 | spritePivot: {x: 0.5, y: 0.5} 50 | spritePixelsToUnits: 100 51 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 52 | spriteGenerateFallbackPhysicsShape: 1 53 | alphaUsage: 1 54 | alphaIsTransparency: 0 55 | spriteTessellationDetail: -1 56 | textureType: 0 57 | textureShape: 1 58 | singleChannelComponent: 0 59 | flipbookRows: 1 60 | flipbookColumns: 1 61 | maxTextureSizeSet: 0 62 | compressionQualitySet: 0 63 | textureFormatSet: 0 64 | ignorePngGamma: 0 65 | applyGammaDecoding: 0 66 | platformSettings: 67 | - serializedVersion: 3 68 | buildTarget: DefaultTexturePlatform 69 | maxTextureSize: 2048 70 | resizeAlgorithm: 0 71 | textureFormat: -1 72 | textureCompression: 1 73 | compressionQuality: 50 74 | crunchedCompression: 0 75 | allowsAlphaSplitting: 0 76 | overridden: 0 77 | androidETC2FallbackOverride: 0 78 | forceMaximumCompressionQuality_BC6H_BC7: 0 79 | - serializedVersion: 3 80 | buildTarget: Standalone 81 | maxTextureSize: 2048 82 | resizeAlgorithm: 0 83 | textureFormat: -1 84 | textureCompression: 1 85 | compressionQuality: 50 86 | crunchedCompression: 0 87 | allowsAlphaSplitting: 0 88 | overridden: 0 89 | androidETC2FallbackOverride: 0 90 | forceMaximumCompressionQuality_BC6H_BC7: 0 91 | - serializedVersion: 3 92 | buildTarget: Server 93 | maxTextureSize: 2048 94 | resizeAlgorithm: 0 95 | textureFormat: -1 96 | textureCompression: 1 97 | compressionQuality: 50 98 | crunchedCompression: 0 99 | allowsAlphaSplitting: 0 100 | overridden: 0 101 | androidETC2FallbackOverride: 0 102 | forceMaximumCompressionQuality_BC6H_BC7: 0 103 | spriteSheet: 104 | serializedVersion: 2 105 | sprites: [] 106 | outline: [] 107 | physicsShape: [] 108 | bones: [] 109 | spriteID: 110 | internalID: 0 111 | vertices: [] 112 | indices: 113 | edges: [] 114 | weights: [] 115 | secondaryTextures: [] 116 | nameFileIdTable: {} 117 | spritePackingTag: 118 | pSDRemoveMatte: 0 119 | pSDShowRemoveMatteOption: 0 120 | userData: 121 | assetBundleName: 122 | assetBundleVariant: 123 | -------------------------------------------------------------------------------- /Documentation/Images/blackboard_key_overrides.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thekiwicoder0/UnityBehaviourTreeEditor/08cf24d559801c56e69f30b82a6cef7dac80ff2d/Documentation/Images/blackboard_key_overrides.png -------------------------------------------------------------------------------- /Documentation/Images/blackboard_key_overrides.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: df60b31895cfd104a9be9d7e688e6883 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 11 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 1 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 0 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | vTOnly: 0 27 | ignoreMasterTextureLimit: 0 28 | grayScaleToAlpha: 0 29 | generateCubemap: 6 30 | cubemapConvolution: 0 31 | seamlessCubemap: 0 32 | textureFormat: 1 33 | maxTextureSize: 2048 34 | textureSettings: 35 | serializedVersion: 2 36 | filterMode: 1 37 | aniso: 1 38 | mipBias: 0 39 | wrapU: 0 40 | wrapV: 0 41 | wrapW: 0 42 | nPOTScale: 1 43 | lightmap: 0 44 | compressionQuality: 50 45 | spriteMode: 0 46 | spriteExtrude: 1 47 | spriteMeshType: 1 48 | alignment: 0 49 | spritePivot: {x: 0.5, y: 0.5} 50 | spritePixelsToUnits: 100 51 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 52 | spriteGenerateFallbackPhysicsShape: 1 53 | alphaUsage: 1 54 | alphaIsTransparency: 0 55 | spriteTessellationDetail: -1 56 | textureType: 0 57 | textureShape: 1 58 | singleChannelComponent: 0 59 | flipbookRows: 1 60 | flipbookColumns: 1 61 | maxTextureSizeSet: 0 62 | compressionQualitySet: 0 63 | textureFormatSet: 0 64 | ignorePngGamma: 0 65 | applyGammaDecoding: 0 66 | platformSettings: 67 | - serializedVersion: 3 68 | buildTarget: DefaultTexturePlatform 69 | maxTextureSize: 2048 70 | resizeAlgorithm: 0 71 | textureFormat: -1 72 | textureCompression: 1 73 | compressionQuality: 50 74 | crunchedCompression: 0 75 | allowsAlphaSplitting: 0 76 | overridden: 0 77 | androidETC2FallbackOverride: 0 78 | forceMaximumCompressionQuality_BC6H_BC7: 0 79 | - serializedVersion: 3 80 | buildTarget: Standalone 81 | maxTextureSize: 2048 82 | resizeAlgorithm: 0 83 | textureFormat: -1 84 | textureCompression: 1 85 | compressionQuality: 50 86 | crunchedCompression: 0 87 | allowsAlphaSplitting: 0 88 | overridden: 0 89 | androidETC2FallbackOverride: 0 90 | forceMaximumCompressionQuality_BC6H_BC7: 0 91 | - serializedVersion: 3 92 | buildTarget: Server 93 | maxTextureSize: 2048 94 | resizeAlgorithm: 0 95 | textureFormat: -1 96 | textureCompression: 1 97 | compressionQuality: 50 98 | crunchedCompression: 0 99 | allowsAlphaSplitting: 0 100 | overridden: 0 101 | androidETC2FallbackOverride: 0 102 | forceMaximumCompressionQuality_BC6H_BC7: 0 103 | spriteSheet: 104 | serializedVersion: 2 105 | sprites: [] 106 | outline: [] 107 | physicsShape: [] 108 | bones: [] 109 | spriteID: 110 | internalID: 0 111 | vertices: [] 112 | indices: 113 | edges: [] 114 | weights: [] 115 | secondaryTextures: [] 116 | nameFileIdTable: {} 117 | spritePackingTag: 118 | pSDRemoveMatte: 0 119 | pSDShowRemoveMatteOption: 0 120 | userData: 121 | assetBundleName: 122 | assetBundleVariant: 123 | -------------------------------------------------------------------------------- /Documentation/Images/editor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thekiwicoder0/UnityBehaviourTreeEditor/08cf24d559801c56e69f30b82a6cef7dac80ff2d/Documentation/Images/editor.png -------------------------------------------------------------------------------- /Documentation/Images/editor.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: bf62a988120547b4d84df8ea696a073f 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 12 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 1 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | flipGreenChannel: 0 24 | isReadable: 0 25 | streamingMipmaps: 0 26 | streamingMipmapsPriority: 0 27 | vTOnly: 0 28 | ignoreMasterTextureLimit: 0 29 | grayScaleToAlpha: 0 30 | generateCubemap: 6 31 | cubemapConvolution: 0 32 | seamlessCubemap: 0 33 | textureFormat: 1 34 | maxTextureSize: 2048 35 | textureSettings: 36 | serializedVersion: 2 37 | filterMode: 1 38 | aniso: 1 39 | mipBias: 0 40 | wrapU: 0 41 | wrapV: 0 42 | wrapW: 0 43 | nPOTScale: 1 44 | lightmap: 0 45 | compressionQuality: 50 46 | spriteMode: 0 47 | spriteExtrude: 1 48 | spriteMeshType: 1 49 | alignment: 0 50 | spritePivot: {x: 0.5, y: 0.5} 51 | spritePixelsToUnits: 100 52 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 53 | spriteGenerateFallbackPhysicsShape: 1 54 | alphaUsage: 1 55 | alphaIsTransparency: 0 56 | spriteTessellationDetail: -1 57 | textureType: 0 58 | textureShape: 1 59 | singleChannelComponent: 0 60 | flipbookRows: 1 61 | flipbookColumns: 1 62 | maxTextureSizeSet: 0 63 | compressionQualitySet: 0 64 | textureFormatSet: 0 65 | ignorePngGamma: 0 66 | applyGammaDecoding: 0 67 | swizzle: 50462976 68 | cookieLightType: 0 69 | platformSettings: 70 | - serializedVersion: 3 71 | buildTarget: DefaultTexturePlatform 72 | maxTextureSize: 2048 73 | resizeAlgorithm: 0 74 | textureFormat: -1 75 | textureCompression: 1 76 | compressionQuality: 50 77 | crunchedCompression: 0 78 | allowsAlphaSplitting: 0 79 | overridden: 0 80 | androidETC2FallbackOverride: 0 81 | forceMaximumCompressionQuality_BC6H_BC7: 0 82 | - serializedVersion: 3 83 | buildTarget: Standalone 84 | maxTextureSize: 2048 85 | resizeAlgorithm: 0 86 | textureFormat: -1 87 | textureCompression: 1 88 | compressionQuality: 50 89 | crunchedCompression: 0 90 | allowsAlphaSplitting: 0 91 | overridden: 0 92 | androidETC2FallbackOverride: 0 93 | forceMaximumCompressionQuality_BC6H_BC7: 0 94 | - serializedVersion: 3 95 | buildTarget: Server 96 | maxTextureSize: 2048 97 | resizeAlgorithm: 0 98 | textureFormat: -1 99 | textureCompression: 1 100 | compressionQuality: 50 101 | crunchedCompression: 0 102 | allowsAlphaSplitting: 0 103 | overridden: 0 104 | androidETC2FallbackOverride: 0 105 | forceMaximumCompressionQuality_BC6H_BC7: 0 106 | spriteSheet: 107 | serializedVersion: 2 108 | sprites: [] 109 | outline: [] 110 | physicsShape: [] 111 | bones: [] 112 | spriteID: 113 | internalID: 0 114 | vertices: [] 115 | indices: 116 | edges: [] 117 | weights: [] 118 | secondaryTextures: [] 119 | nameFileIdTable: {} 120 | spritePackingTag: 121 | pSDRemoveMatte: 0 122 | userData: 123 | assetBundleName: 124 | assetBundleVariant: 125 | -------------------------------------------------------------------------------- /Documentation/Images/install_package.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thekiwicoder0/UnityBehaviourTreeEditor/08cf24d559801c56e69f30b82a6cef7dac80ff2d/Documentation/Images/install_package.png -------------------------------------------------------------------------------- /Documentation/Images/install_package.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 0be611bc23e80104d85197b5b052a480 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 12 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 1 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | flipGreenChannel: 0 24 | isReadable: 0 25 | streamingMipmaps: 0 26 | streamingMipmapsPriority: 0 27 | vTOnly: 0 28 | ignoreMasterTextureLimit: 0 29 | grayScaleToAlpha: 0 30 | generateCubemap: 6 31 | cubemapConvolution: 0 32 | seamlessCubemap: 0 33 | textureFormat: 1 34 | maxTextureSize: 2048 35 | textureSettings: 36 | serializedVersion: 2 37 | filterMode: 1 38 | aniso: 1 39 | mipBias: 0 40 | wrapU: 0 41 | wrapV: 0 42 | wrapW: 0 43 | nPOTScale: 1 44 | lightmap: 0 45 | compressionQuality: 50 46 | spriteMode: 0 47 | spriteExtrude: 1 48 | spriteMeshType: 1 49 | alignment: 0 50 | spritePivot: {x: 0.5, y: 0.5} 51 | spritePixelsToUnits: 100 52 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 53 | spriteGenerateFallbackPhysicsShape: 1 54 | alphaUsage: 1 55 | alphaIsTransparency: 0 56 | spriteTessellationDetail: -1 57 | textureType: 0 58 | textureShape: 1 59 | singleChannelComponent: 0 60 | flipbookRows: 1 61 | flipbookColumns: 1 62 | maxTextureSizeSet: 0 63 | compressionQualitySet: 0 64 | textureFormatSet: 0 65 | ignorePngGamma: 0 66 | applyGammaDecoding: 0 67 | swizzle: 50462976 68 | cookieLightType: 0 69 | platformSettings: 70 | - serializedVersion: 3 71 | buildTarget: DefaultTexturePlatform 72 | maxTextureSize: 2048 73 | resizeAlgorithm: 0 74 | textureFormat: -1 75 | textureCompression: 1 76 | compressionQuality: 50 77 | crunchedCompression: 0 78 | allowsAlphaSplitting: 0 79 | overridden: 0 80 | androidETC2FallbackOverride: 0 81 | forceMaximumCompressionQuality_BC6H_BC7: 0 82 | - serializedVersion: 3 83 | buildTarget: Standalone 84 | maxTextureSize: 2048 85 | resizeAlgorithm: 0 86 | textureFormat: -1 87 | textureCompression: 1 88 | compressionQuality: 50 89 | crunchedCompression: 0 90 | allowsAlphaSplitting: 0 91 | overridden: 0 92 | androidETC2FallbackOverride: 0 93 | forceMaximumCompressionQuality_BC6H_BC7: 0 94 | - serializedVersion: 3 95 | buildTarget: Server 96 | maxTextureSize: 2048 97 | resizeAlgorithm: 0 98 | textureFormat: -1 99 | textureCompression: 1 100 | compressionQuality: 50 101 | crunchedCompression: 0 102 | allowsAlphaSplitting: 0 103 | overridden: 0 104 | androidETC2FallbackOverride: 0 105 | forceMaximumCompressionQuality_BC6H_BC7: 0 106 | spriteSheet: 107 | serializedVersion: 2 108 | sprites: [] 109 | outline: [] 110 | physicsShape: [] 111 | bones: [] 112 | spriteID: 113 | internalID: 0 114 | vertices: [] 115 | indices: 116 | edges: [] 117 | weights: [] 118 | secondaryTextures: [] 119 | nameFileIdTable: {} 120 | spritePackingTag: 121 | pSDRemoveMatte: 0 122 | userData: 123 | assetBundleName: 124 | assetBundleVariant: 125 | -------------------------------------------------------------------------------- /Documentation/Images/menu_command.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thekiwicoder0/UnityBehaviourTreeEditor/08cf24d559801c56e69f30b82a6cef7dac80ff2d/Documentation/Images/menu_command.png -------------------------------------------------------------------------------- /Documentation/Images/menu_command.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 94f08a6a7d7f0d144b8ffd4c328a38e0 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 12 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 1 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | flipGreenChannel: 0 24 | isReadable: 0 25 | streamingMipmaps: 0 26 | streamingMipmapsPriority: 0 27 | vTOnly: 0 28 | ignoreMasterTextureLimit: 0 29 | grayScaleToAlpha: 0 30 | generateCubemap: 6 31 | cubemapConvolution: 0 32 | seamlessCubemap: 0 33 | textureFormat: 1 34 | maxTextureSize: 2048 35 | textureSettings: 36 | serializedVersion: 2 37 | filterMode: 1 38 | aniso: 1 39 | mipBias: 0 40 | wrapU: 0 41 | wrapV: 0 42 | wrapW: 0 43 | nPOTScale: 1 44 | lightmap: 0 45 | compressionQuality: 50 46 | spriteMode: 0 47 | spriteExtrude: 1 48 | spriteMeshType: 1 49 | alignment: 0 50 | spritePivot: {x: 0.5, y: 0.5} 51 | spritePixelsToUnits: 100 52 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 53 | spriteGenerateFallbackPhysicsShape: 1 54 | alphaUsage: 1 55 | alphaIsTransparency: 0 56 | spriteTessellationDetail: -1 57 | textureType: 0 58 | textureShape: 1 59 | singleChannelComponent: 0 60 | flipbookRows: 1 61 | flipbookColumns: 1 62 | maxTextureSizeSet: 0 63 | compressionQualitySet: 0 64 | textureFormatSet: 0 65 | ignorePngGamma: 0 66 | applyGammaDecoding: 0 67 | swizzle: 50462976 68 | cookieLightType: 0 69 | platformSettings: 70 | - serializedVersion: 3 71 | buildTarget: DefaultTexturePlatform 72 | maxTextureSize: 2048 73 | resizeAlgorithm: 0 74 | textureFormat: -1 75 | textureCompression: 1 76 | compressionQuality: 50 77 | crunchedCompression: 0 78 | allowsAlphaSplitting: 0 79 | overridden: 0 80 | androidETC2FallbackOverride: 0 81 | forceMaximumCompressionQuality_BC6H_BC7: 0 82 | - serializedVersion: 3 83 | buildTarget: Standalone 84 | maxTextureSize: 2048 85 | resizeAlgorithm: 0 86 | textureFormat: -1 87 | textureCompression: 1 88 | compressionQuality: 50 89 | crunchedCompression: 0 90 | allowsAlphaSplitting: 0 91 | overridden: 0 92 | androidETC2FallbackOverride: 0 93 | forceMaximumCompressionQuality_BC6H_BC7: 0 94 | - serializedVersion: 3 95 | buildTarget: Server 96 | maxTextureSize: 2048 97 | resizeAlgorithm: 0 98 | textureFormat: -1 99 | textureCompression: 1 100 | compressionQuality: 50 101 | crunchedCompression: 0 102 | allowsAlphaSplitting: 0 103 | overridden: 0 104 | androidETC2FallbackOverride: 0 105 | forceMaximumCompressionQuality_BC6H_BC7: 0 106 | spriteSheet: 107 | serializedVersion: 2 108 | sprites: [] 109 | outline: [] 110 | physicsShape: [] 111 | bones: [] 112 | spriteID: 113 | internalID: 0 114 | vertices: [] 115 | indices: 116 | edges: [] 117 | weights: [] 118 | secondaryTextures: [] 119 | nameFileIdTable: {} 120 | spritePackingTag: 121 | pSDRemoveMatte: 0 122 | userData: 123 | assetBundleName: 124 | assetBundleVariant: 125 | -------------------------------------------------------------------------------- /Documentation/Images/new_node.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thekiwicoder0/UnityBehaviourTreeEditor/08cf24d559801c56e69f30b82a6cef7dac80ff2d/Documentation/Images/new_node.png -------------------------------------------------------------------------------- /Documentation/Images/new_node.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ccf710a9cce612d4e834e157ab54fcec 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 12 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 1 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | flipGreenChannel: 0 24 | isReadable: 0 25 | streamingMipmaps: 0 26 | streamingMipmapsPriority: 0 27 | vTOnly: 0 28 | ignoreMasterTextureLimit: 0 29 | grayScaleToAlpha: 0 30 | generateCubemap: 6 31 | cubemapConvolution: 0 32 | seamlessCubemap: 0 33 | textureFormat: 1 34 | maxTextureSize: 2048 35 | textureSettings: 36 | serializedVersion: 2 37 | filterMode: 1 38 | aniso: 1 39 | mipBias: 0 40 | wrapU: 0 41 | wrapV: 0 42 | wrapW: 0 43 | nPOTScale: 1 44 | lightmap: 0 45 | compressionQuality: 50 46 | spriteMode: 0 47 | spriteExtrude: 1 48 | spriteMeshType: 1 49 | alignment: 0 50 | spritePivot: {x: 0.5, y: 0.5} 51 | spritePixelsToUnits: 100 52 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 53 | spriteGenerateFallbackPhysicsShape: 1 54 | alphaUsage: 1 55 | alphaIsTransparency: 0 56 | spriteTessellationDetail: -1 57 | textureType: 0 58 | textureShape: 1 59 | singleChannelComponent: 0 60 | flipbookRows: 1 61 | flipbookColumns: 1 62 | maxTextureSizeSet: 0 63 | compressionQualitySet: 0 64 | textureFormatSet: 0 65 | ignorePngGamma: 0 66 | applyGammaDecoding: 0 67 | swizzle: 50462976 68 | cookieLightType: 0 69 | platformSettings: 70 | - serializedVersion: 3 71 | buildTarget: DefaultTexturePlatform 72 | maxTextureSize: 2048 73 | resizeAlgorithm: 0 74 | textureFormat: -1 75 | textureCompression: 1 76 | compressionQuality: 50 77 | crunchedCompression: 0 78 | allowsAlphaSplitting: 0 79 | overridden: 0 80 | androidETC2FallbackOverride: 0 81 | forceMaximumCompressionQuality_BC6H_BC7: 0 82 | - serializedVersion: 3 83 | buildTarget: Standalone 84 | maxTextureSize: 2048 85 | resizeAlgorithm: 0 86 | textureFormat: -1 87 | textureCompression: 1 88 | compressionQuality: 50 89 | crunchedCompression: 0 90 | allowsAlphaSplitting: 0 91 | overridden: 0 92 | androidETC2FallbackOverride: 0 93 | forceMaximumCompressionQuality_BC6H_BC7: 0 94 | - serializedVersion: 3 95 | buildTarget: Server 96 | maxTextureSize: 2048 97 | resizeAlgorithm: 0 98 | textureFormat: -1 99 | textureCompression: 1 100 | compressionQuality: 50 101 | crunchedCompression: 0 102 | allowsAlphaSplitting: 0 103 | overridden: 0 104 | androidETC2FallbackOverride: 0 105 | forceMaximumCompressionQuality_BC6H_BC7: 0 106 | spriteSheet: 107 | serializedVersion: 2 108 | sprites: [] 109 | outline: [] 110 | physicsShape: [] 111 | bones: [] 112 | spriteID: 113 | internalID: 0 114 | vertices: [] 115 | indices: 116 | edges: [] 117 | weights: [] 118 | secondaryTextures: [] 119 | nameFileIdTable: {} 120 | spritePackingTag: 121 | pSDRemoveMatte: 0 122 | userData: 123 | assetBundleName: 124 | assetBundleVariant: 125 | -------------------------------------------------------------------------------- /Documentation/Images/new_script.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thekiwicoder0/UnityBehaviourTreeEditor/08cf24d559801c56e69f30b82a6cef7dac80ff2d/Documentation/Images/new_script.png -------------------------------------------------------------------------------- /Documentation/Images/new_script.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 13c46dc0d705cf7478fae7f157665363 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 12 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 1 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | flipGreenChannel: 0 24 | isReadable: 0 25 | streamingMipmaps: 0 26 | streamingMipmapsPriority: 0 27 | vTOnly: 0 28 | ignoreMasterTextureLimit: 0 29 | grayScaleToAlpha: 0 30 | generateCubemap: 6 31 | cubemapConvolution: 0 32 | seamlessCubemap: 0 33 | textureFormat: 1 34 | maxTextureSize: 2048 35 | textureSettings: 36 | serializedVersion: 2 37 | filterMode: 1 38 | aniso: 1 39 | mipBias: 0 40 | wrapU: 0 41 | wrapV: 0 42 | wrapW: 0 43 | nPOTScale: 1 44 | lightmap: 0 45 | compressionQuality: 50 46 | spriteMode: 0 47 | spriteExtrude: 1 48 | spriteMeshType: 1 49 | alignment: 0 50 | spritePivot: {x: 0.5, y: 0.5} 51 | spritePixelsToUnits: 100 52 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 53 | spriteGenerateFallbackPhysicsShape: 1 54 | alphaUsage: 1 55 | alphaIsTransparency: 0 56 | spriteTessellationDetail: -1 57 | textureType: 0 58 | textureShape: 1 59 | singleChannelComponent: 0 60 | flipbookRows: 1 61 | flipbookColumns: 1 62 | maxTextureSizeSet: 0 63 | compressionQualitySet: 0 64 | textureFormatSet: 0 65 | ignorePngGamma: 0 66 | applyGammaDecoding: 0 67 | swizzle: 50462976 68 | cookieLightType: 0 69 | platformSettings: 70 | - serializedVersion: 3 71 | buildTarget: DefaultTexturePlatform 72 | maxTextureSize: 2048 73 | resizeAlgorithm: 0 74 | textureFormat: -1 75 | textureCompression: 1 76 | compressionQuality: 50 77 | crunchedCompression: 0 78 | allowsAlphaSplitting: 0 79 | overridden: 0 80 | androidETC2FallbackOverride: 0 81 | forceMaximumCompressionQuality_BC6H_BC7: 0 82 | - serializedVersion: 3 83 | buildTarget: Standalone 84 | maxTextureSize: 2048 85 | resizeAlgorithm: 0 86 | textureFormat: -1 87 | textureCompression: 1 88 | compressionQuality: 50 89 | crunchedCompression: 0 90 | allowsAlphaSplitting: 0 91 | overridden: 0 92 | androidETC2FallbackOverride: 0 93 | forceMaximumCompressionQuality_BC6H_BC7: 0 94 | - serializedVersion: 3 95 | buildTarget: Server 96 | maxTextureSize: 2048 97 | resizeAlgorithm: 0 98 | textureFormat: -1 99 | textureCompression: 1 100 | compressionQuality: 50 101 | crunchedCompression: 0 102 | allowsAlphaSplitting: 0 103 | overridden: 0 104 | androidETC2FallbackOverride: 0 105 | forceMaximumCompressionQuality_BC6H_BC7: 0 106 | spriteSheet: 107 | serializedVersion: 2 108 | sprites: [] 109 | outline: [] 110 | physicsShape: [] 111 | bones: [] 112 | spriteID: 113 | internalID: 0 114 | vertices: [] 115 | indices: 116 | edges: [] 117 | weights: [] 118 | secondaryTextures: [] 119 | nameFileIdTable: {} 120 | spritePackingTag: 121 | pSDRemoveMatte: 0 122 | userData: 123 | assetBundleName: 124 | assetBundleVariant: 125 | -------------------------------------------------------------------------------- /Documentation/Images/new_tree.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thekiwicoder0/UnityBehaviourTreeEditor/08cf24d559801c56e69f30b82a6cef7dac80ff2d/Documentation/Images/new_tree.png -------------------------------------------------------------------------------- /Documentation/Images/new_tree.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 65428533d83dca441ac2cac834a2cecd 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 12 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 1 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | flipGreenChannel: 0 24 | isReadable: 0 25 | streamingMipmaps: 0 26 | streamingMipmapsPriority: 0 27 | vTOnly: 0 28 | ignoreMasterTextureLimit: 0 29 | grayScaleToAlpha: 0 30 | generateCubemap: 6 31 | cubemapConvolution: 0 32 | seamlessCubemap: 0 33 | textureFormat: 1 34 | maxTextureSize: 2048 35 | textureSettings: 36 | serializedVersion: 2 37 | filterMode: 1 38 | aniso: 1 39 | mipBias: 0 40 | wrapU: 0 41 | wrapV: 0 42 | wrapW: 0 43 | nPOTScale: 1 44 | lightmap: 0 45 | compressionQuality: 50 46 | spriteMode: 0 47 | spriteExtrude: 1 48 | spriteMeshType: 1 49 | alignment: 0 50 | spritePivot: {x: 0.5, y: 0.5} 51 | spritePixelsToUnits: 100 52 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 53 | spriteGenerateFallbackPhysicsShape: 1 54 | alphaUsage: 1 55 | alphaIsTransparency: 0 56 | spriteTessellationDetail: -1 57 | textureType: 0 58 | textureShape: 1 59 | singleChannelComponent: 0 60 | flipbookRows: 1 61 | flipbookColumns: 1 62 | maxTextureSizeSet: 0 63 | compressionQualitySet: 0 64 | textureFormatSet: 0 65 | ignorePngGamma: 0 66 | applyGammaDecoding: 0 67 | swizzle: 50462976 68 | cookieLightType: 0 69 | platformSettings: 70 | - serializedVersion: 3 71 | buildTarget: DefaultTexturePlatform 72 | maxTextureSize: 2048 73 | resizeAlgorithm: 0 74 | textureFormat: -1 75 | textureCompression: 1 76 | compressionQuality: 50 77 | crunchedCompression: 0 78 | allowsAlphaSplitting: 0 79 | overridden: 0 80 | androidETC2FallbackOverride: 0 81 | forceMaximumCompressionQuality_BC6H_BC7: 0 82 | - serializedVersion: 3 83 | buildTarget: Standalone 84 | maxTextureSize: 2048 85 | resizeAlgorithm: 0 86 | textureFormat: -1 87 | textureCompression: 1 88 | compressionQuality: 50 89 | crunchedCompression: 0 90 | allowsAlphaSplitting: 0 91 | overridden: 0 92 | androidETC2FallbackOverride: 0 93 | forceMaximumCompressionQuality_BC6H_BC7: 0 94 | - serializedVersion: 3 95 | buildTarget: Server 96 | maxTextureSize: 2048 97 | resizeAlgorithm: 0 98 | textureFormat: -1 99 | textureCompression: 1 100 | compressionQuality: 50 101 | crunchedCompression: 0 102 | allowsAlphaSplitting: 0 103 | overridden: 0 104 | androidETC2FallbackOverride: 0 105 | forceMaximumCompressionQuality_BC6H_BC7: 0 106 | spriteSheet: 107 | serializedVersion: 2 108 | sprites: [] 109 | outline: [] 110 | physicsShape: [] 111 | bones: [] 112 | spriteID: 113 | internalID: 0 114 | vertices: [] 115 | indices: 116 | edges: [] 117 | weights: [] 118 | secondaryTextures: [] 119 | nameFileIdTable: {} 120 | spritePackingTag: 121 | pSDRemoveMatte: 0 122 | userData: 123 | assetBundleName: 124 | assetBundleVariant: 125 | -------------------------------------------------------------------------------- /Documentation/Images/settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thekiwicoder0/UnityBehaviourTreeEditor/08cf24d559801c56e69f30b82a6cef7dac80ff2d/Documentation/Images/settings.png -------------------------------------------------------------------------------- /Documentation/Images/settings.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e9d0b44526124d64dad07521fc4ae797 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 12 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 1 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | flipGreenChannel: 0 24 | isReadable: 0 25 | streamingMipmaps: 0 26 | streamingMipmapsPriority: 0 27 | vTOnly: 0 28 | ignoreMasterTextureLimit: 0 29 | grayScaleToAlpha: 0 30 | generateCubemap: 6 31 | cubemapConvolution: 0 32 | seamlessCubemap: 0 33 | textureFormat: 1 34 | maxTextureSize: 2048 35 | textureSettings: 36 | serializedVersion: 2 37 | filterMode: 1 38 | aniso: 1 39 | mipBias: 0 40 | wrapU: 0 41 | wrapV: 0 42 | wrapW: 0 43 | nPOTScale: 1 44 | lightmap: 0 45 | compressionQuality: 50 46 | spriteMode: 0 47 | spriteExtrude: 1 48 | spriteMeshType: 1 49 | alignment: 0 50 | spritePivot: {x: 0.5, y: 0.5} 51 | spritePixelsToUnits: 100 52 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 53 | spriteGenerateFallbackPhysicsShape: 1 54 | alphaUsage: 1 55 | alphaIsTransparency: 0 56 | spriteTessellationDetail: -1 57 | textureType: 0 58 | textureShape: 1 59 | singleChannelComponent: 0 60 | flipbookRows: 1 61 | flipbookColumns: 1 62 | maxTextureSizeSet: 0 63 | compressionQualitySet: 0 64 | textureFormatSet: 0 65 | ignorePngGamma: 0 66 | applyGammaDecoding: 0 67 | swizzle: 50462976 68 | cookieLightType: 0 69 | platformSettings: 70 | - serializedVersion: 3 71 | buildTarget: DefaultTexturePlatform 72 | maxTextureSize: 2048 73 | resizeAlgorithm: 0 74 | textureFormat: -1 75 | textureCompression: 1 76 | compressionQuality: 50 77 | crunchedCompression: 0 78 | allowsAlphaSplitting: 0 79 | overridden: 0 80 | androidETC2FallbackOverride: 0 81 | forceMaximumCompressionQuality_BC6H_BC7: 0 82 | - serializedVersion: 3 83 | buildTarget: Standalone 84 | maxTextureSize: 2048 85 | resizeAlgorithm: 0 86 | textureFormat: -1 87 | textureCompression: 1 88 | compressionQuality: 50 89 | crunchedCompression: 0 90 | allowsAlphaSplitting: 0 91 | overridden: 0 92 | androidETC2FallbackOverride: 0 93 | forceMaximumCompressionQuality_BC6H_BC7: 0 94 | - serializedVersion: 3 95 | buildTarget: Server 96 | maxTextureSize: 2048 97 | resizeAlgorithm: 0 98 | textureFormat: -1 99 | textureCompression: 1 100 | compressionQuality: 50 101 | crunchedCompression: 0 102 | allowsAlphaSplitting: 0 103 | overridden: 0 104 | androidETC2FallbackOverride: 0 105 | forceMaximumCompressionQuality_BC6H_BC7: 0 106 | spriteSheet: 107 | serializedVersion: 2 108 | sprites: [] 109 | outline: [] 110 | physicsShape: [] 111 | bones: [] 112 | spriteID: 113 | internalID: 0 114 | vertices: [] 115 | indices: 116 | edges: [] 117 | weights: [] 118 | secondaryTextures: [] 119 | nameFileIdTable: {} 120 | spritePackingTag: 121 | pSDRemoveMatte: 0 122 | userData: 123 | assetBundleName: 124 | assetBundleVariant: 125 | -------------------------------------------------------------------------------- /Documentation/Images/thekiwicoder_profile_square_noborder_512_512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thekiwicoder0/UnityBehaviourTreeEditor/08cf24d559801c56e69f30b82a6cef7dac80ff2d/Documentation/Images/thekiwicoder_profile_square_noborder_512_512.png -------------------------------------------------------------------------------- /Documentation/Images/thekiwicoder_profile_square_noborder_512_512.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5d6fc692e1432d442b4f07040ab67414 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 12 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 1 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | flipGreenChannel: 0 24 | isReadable: 0 25 | streamingMipmaps: 0 26 | streamingMipmapsPriority: 0 27 | vTOnly: 0 28 | ignoreMasterTextureLimit: 0 29 | grayScaleToAlpha: 0 30 | generateCubemap: 6 31 | cubemapConvolution: 0 32 | seamlessCubemap: 0 33 | textureFormat: 1 34 | maxTextureSize: 2048 35 | textureSettings: 36 | serializedVersion: 2 37 | filterMode: 1 38 | aniso: 1 39 | mipBias: 0 40 | wrapU: 0 41 | wrapV: 0 42 | wrapW: 0 43 | nPOTScale: 1 44 | lightmap: 0 45 | compressionQuality: 50 46 | spriteMode: 0 47 | spriteExtrude: 1 48 | spriteMeshType: 1 49 | alignment: 0 50 | spritePivot: {x: 0.5, y: 0.5} 51 | spritePixelsToUnits: 100 52 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 53 | spriteGenerateFallbackPhysicsShape: 1 54 | alphaUsage: 1 55 | alphaIsTransparency: 0 56 | spriteTessellationDetail: -1 57 | textureType: 0 58 | textureShape: 1 59 | singleChannelComponent: 0 60 | flipbookRows: 1 61 | flipbookColumns: 1 62 | maxTextureSizeSet: 0 63 | compressionQualitySet: 0 64 | textureFormatSet: 0 65 | ignorePngGamma: 0 66 | applyGammaDecoding: 0 67 | swizzle: 50462976 68 | cookieLightType: 0 69 | platformSettings: 70 | - serializedVersion: 3 71 | buildTarget: DefaultTexturePlatform 72 | maxTextureSize: 2048 73 | resizeAlgorithm: 0 74 | textureFormat: -1 75 | textureCompression: 1 76 | compressionQuality: 50 77 | crunchedCompression: 0 78 | allowsAlphaSplitting: 0 79 | overridden: 0 80 | androidETC2FallbackOverride: 0 81 | forceMaximumCompressionQuality_BC6H_BC7: 0 82 | - serializedVersion: 3 83 | buildTarget: Standalone 84 | maxTextureSize: 2048 85 | resizeAlgorithm: 0 86 | textureFormat: -1 87 | textureCompression: 1 88 | compressionQuality: 50 89 | crunchedCompression: 0 90 | allowsAlphaSplitting: 0 91 | overridden: 0 92 | androidETC2FallbackOverride: 0 93 | forceMaximumCompressionQuality_BC6H_BC7: 0 94 | - serializedVersion: 3 95 | buildTarget: Server 96 | maxTextureSize: 2048 97 | resizeAlgorithm: 0 98 | textureFormat: -1 99 | textureCompression: 1 100 | compressionQuality: 50 101 | crunchedCompression: 0 102 | allowsAlphaSplitting: 0 103 | overridden: 0 104 | androidETC2FallbackOverride: 0 105 | forceMaximumCompressionQuality_BC6H_BC7: 0 106 | spriteSheet: 107 | serializedVersion: 2 108 | sprites: [] 109 | outline: [] 110 | physicsShape: [] 111 | bones: [] 112 | spriteID: 113 | internalID: 0 114 | vertices: [] 115 | indices: 116 | edges: [] 117 | weights: [] 118 | secondaryTextures: [] 119 | nameFileIdTable: {} 120 | spritePackingTag: 121 | pSDRemoveMatte: 0 122 | userData: 123 | assetBundleName: 124 | assetBundleVariant: 125 | -------------------------------------------------------------------------------- /Editor.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2b12cb187828700489871c407000ed4d 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Editor/BehaviourTreeEditorWindow.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 30f27e776c88e27458a220f32156c7c7 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: 7 | - m_ViewDataDictionary: {instanceID: 0} 8 | - settings: {instanceID: 0} 9 | - behaviourTreeXml: {fileID: 9197481963319205126, guid: 12f41ec3b5735b747a38daddd0ffefd8, 10 | type: 3} 11 | - nodeXml: {fileID: 9197481963319205126, guid: 9986dfe8d36adb2418a4642ec916ddcf, 12 | type: 3} 13 | - behaviourTreeStyle: {fileID: 7433441132597879392, guid: 8781ca2a6e79ccf4da2e234c8c123d2f, 14 | type: 3} 15 | - scriptTemplateActionNode: {fileID: 4900000, guid: 39908033e6333954ab068f9cd4335cab, 16 | type: 3} 17 | - scriptTemplateConditionNode: {fileID: 4900000, guid: 90507bceaf9b6ca42bb25cb92169d991, 18 | type: 3} 19 | - scriptTemplateCompositeNode: {fileID: 4900000, guid: 50af0744759a6f148891a0302871668f, 20 | type: 3} 21 | - scriptTemplateDecoratorNode: {fileID: 4900000, guid: 68ec90eda70221843b347ce647ce661a, 22 | type: 3} 23 | - tree: {instanceID: 0} 24 | executionOrder: 0 25 | icon: {instanceID: 0} 26 | userData: 27 | assetBundleName: 28 | assetBundleVariant: 29 | -------------------------------------------------------------------------------- /Editor/BehaviourTreeEditorWindowState.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | 4 | namespace TheKiwiCoder { 5 | 6 | [System.Serializable] 7 | public class BehaviourTreeEditorWindowState { 8 | 9 | public List activeTabs = new List(); 10 | public int activeTabIndex = -1; 11 | 12 | public void Restore(BehaviourTreeEditorWindow window) { 13 | activeTabs.RemoveAll(tree => tree == null); 14 | activeTabIndex = Math.Clamp(activeTabIndex, 0, activeTabs.Count - 1); 15 | 16 | if (activeTabs.Count == 0) { 17 | window.overlayView.Show(); 18 | } else { 19 | int previousActiveTabIndex = activeTabIndex; 20 | foreach (var tree in activeTabs) { 21 | window.NewTab(tree, true, tree.name); 22 | } 23 | window.tabView.selectedTabIndex = previousActiveTabIndex; 24 | } 25 | } 26 | 27 | public void TabOpened(TreeViewTab newTab) { 28 | if (!newTab.isRuntimeTab) { 29 | if (!activeTabs.Contains(newTab.serializer.tree)) { 30 | activeTabs.Add(newTab.serializer.tree); 31 | Save(); 32 | } 33 | } 34 | } 35 | 36 | public void TabChanged(int tabIndex) { 37 | activeTabIndex = tabIndex; 38 | Save(); 39 | } 40 | 41 | public void TabClosed(TreeViewTab tab) { 42 | activeTabs.Remove(tab.serializer.tree); 43 | Save(); 44 | } 45 | 46 | void Save() { 47 | BehaviourTreeEditorWindow window = BehaviourTreeEditorWindow.Instance; 48 | BehaviourTreeProjectSettings settings = window.settings; 49 | UnityEditor.EditorUtility.SetDirty(settings); 50 | } 51 | } 52 | } -------------------------------------------------------------------------------- /Editor/BehaviourTreeEditorWindowState.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 4e7fafa64f252064591a09ad5a1754e6 -------------------------------------------------------------------------------- /Editor/BehaviourTreeProjectSettings.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.IO; 3 | using System.Linq; 4 | using UnityEditor; 5 | using UnityEngine; 6 | using UnityEngine.UIElements; 7 | using UnityEditor.UIElements; 8 | 9 | namespace TheKiwiCoder { 10 | // Create a new type of Settings Asset. 11 | public class BehaviourTreeProjectSettings : ScriptableObject { 12 | 13 | [Header("Asset Settings")] 14 | [Tooltip("Folder where new tree assets will be created. (Must begin with 'Assets')")] 15 | public string newTreePath = "Assets/"; 16 | 17 | [Tooltip("Folder where new node scripts will be created. (Must begin with 'Assets')")] 18 | public string newNodePath = "Assets/"; 19 | 20 | [Tooltip("Custom script template to use when creating action nodes")] 21 | public TextAsset scriptTemplateActionNode; 22 | 23 | [Tooltip("Custom script template to use when creating condition nodes")] 24 | public TextAsset scriptTemplateConditionNode; 25 | 26 | [Tooltip("Custom script template to use when creating composite nodes")] 27 | public TextAsset scriptTemplateCompositeNode; 28 | 29 | [Tooltip("Custom script template to use when creating decorator nodes")] 30 | public TextAsset scriptTemplateDecoratorNode; 31 | 32 | [Header("Node Canvas Settings")] 33 | [Tooltip("Horizontal grid size nodes will snap to")] 34 | public int gridSnapSizeX = 15; 35 | 36 | [Tooltip("Vertical grid size nodes will snap to")] 37 | public int gridSnapSizeY = 225; 38 | 39 | [Tooltip("If enabled, selecting a node will automatically add all it's children to the selection. If disabled, hold control to select entire node hierarchy")] 40 | public bool autoSelectNodeHierarchy = false; 41 | 42 | //[HideInInspector] 43 | public BehaviourTreeEditorWindowState windowState = new BehaviourTreeEditorWindowState(); 44 | 45 | static BehaviourTreeProjectSettings FindSettings() { 46 | var guids = AssetDatabase.FindAssets($"t:{nameof(BehaviourTreeProjectSettings)}"); 47 | if (guids.Length > 1) { 48 | Debug.LogWarning($"Found multiple settings files, using the first."); 49 | } 50 | 51 | switch (guids.Length) { 52 | case 0: 53 | return null; 54 | default: 55 | var path = AssetDatabase.GUIDToAssetPath(guids[0]); 56 | return AssetDatabase.LoadAssetAtPath(path); 57 | } 58 | } 59 | 60 | internal static BehaviourTreeProjectSettings GetOrCreateSettings() { 61 | var settings = FindSettings(); 62 | if (settings == null) { 63 | settings = ScriptableObject.CreateInstance(); 64 | AssetDatabase.CreateAsset(settings, "Assets/BehaviourTreeProjectSettings.asset"); 65 | AssetDatabase.SaveAssets(); 66 | } 67 | return settings; 68 | } 69 | 70 | internal static SerializedObject GetSerializedSettings() { 71 | return new SerializedObject(GetOrCreateSettings()); 72 | } 73 | } 74 | 75 | // Register a SettingsProvider using UIElements for the drawing framework: 76 | static class MyCustomSettingsUIElementsRegister { 77 | [SettingsProvider] 78 | public static SettingsProvider CreateMyCustomSettingsProvider() { 79 | // First parameter is the path in the Settings window. 80 | // Second parameter is the scope of this setting: it only appears in the Settings window for the Project scope. 81 | var provider = new SettingsProvider("Project/BehaviourTreeProjectSettings", SettingsScope.Project) { 82 | label = "BehaviourTree", 83 | // activateHandler is called when the user clicks on the Settings item in the Settings window. 84 | activateHandler = (searchContext, rootElement) => { 85 | var settings = BehaviourTreeProjectSettings.GetSerializedSettings(); 86 | 87 | // rootElement is a VisualElement. If you add any children to it, the OnGUI function 88 | // isn't called because the SettingsProvider uses the UIElements drawing framework. 89 | var title = new Label() { 90 | text = "Behaviour Tree Settings" 91 | }; 92 | title.AddToClassList("title"); 93 | rootElement.Add(title); 94 | 95 | var properties = new VisualElement() { 96 | style = 97 | { 98 | flexDirection = FlexDirection.Column 99 | } 100 | }; 101 | properties.AddToClassList("property-list"); 102 | rootElement.Add(properties); 103 | 104 | properties.Add(new InspectorElement(settings)); 105 | 106 | rootElement.Bind(settings); 107 | }, 108 | }; 109 | 110 | return provider; 111 | } 112 | } 113 | } 114 | -------------------------------------------------------------------------------- /Editor/BehaviourTreeProjectSettings.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 32dcde829cc493549a6e405cd4fc8179 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Editor/BehaviourTreeView.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 99519b509e4b9e0408594003048f267a 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Editor/BlackboardView.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections; 3 | using System.Collections.Generic; 4 | using UnityEngine.UIElements; 5 | using UnityEditor; 6 | using UnityEditor.UIElements; 7 | using UnityEngine; 8 | using System.ComponentModel; 9 | 10 | namespace TheKiwiCoder { 11 | 12 | [UxmlElement] 13 | public partial class BlackboardView : VisualElement { 14 | 15 | private SerializedBehaviourTree behaviourTree; 16 | 17 | private ListView listView; 18 | private TextField newKeyTextField; 19 | private PopupField newKeyTypeField; 20 | 21 | private Button createButton; 22 | 23 | internal void Bind(SerializedBehaviourTree behaviourTree) { 24 | 25 | this.behaviourTree = behaviourTree; 26 | 27 | listView = this.Q("ListView_Keys"); 28 | newKeyTextField = this.Q("TextField_KeyName"); 29 | VisualElement popupContainer = this.Q("PopupField_Placeholder"); 30 | 31 | createButton = this.Q