├── BaseTreeGraph.meta ├── BaseTreeGraph ├── BaseTree.asset ├── BaseTree.asset.meta ├── BaseTree.cs └── BaseTree.cs.meta ├── ExampleScene.meta ├── ExampleScene ├── BravefulEnemy.asset ├── BravefulEnemy.asset.meta ├── EnemyBehaviour.asset ├── EnemyBehaviour.asset.meta ├── EnemyBehaviourTest.asset ├── EnemyBehaviourTest.asset.meta ├── Example1.meta ├── Example1.unity ├── Example1.unity.meta ├── Example1 │ ├── NavMesh.asset │ └── NavMesh.asset.meta ├── Example2.meta ├── Example2.unity ├── Example2.unity.meta ├── Example2 │ ├── NavMesh.asset │ └── NavMesh.asset.meta ├── Materials.meta ├── Materials │ ├── Black.mat │ ├── Black.mat.meta │ ├── Blue.mat │ ├── Blue.mat.meta │ ├── Green.mat │ ├── Green.mat.meta │ ├── Orange.mat │ ├── Orange.mat.meta │ ├── Red.mat │ └── Red.mat.meta ├── Prefabs.meta ├── Prefabs │ ├── Bullet.prefab │ ├── Bullet.prefab.meta │ ├── PlayerBullet Variant.prefab │ └── PlayerBullet Variant.prefab.meta ├── Scripts.meta ├── Scripts │ ├── BehaviourTreeTicker.cs │ ├── BehaviourTreeTicker.cs.meta │ ├── BravefulEnemy.cs │ ├── BravefulEnemy.cs.meta │ ├── Bullet.cs │ ├── Bullet.cs.meta │ ├── BulletSpitter.cs │ ├── BulletSpitter.cs.meta │ ├── CharacterModel1.cs │ ├── CharacterModel1.cs.meta │ ├── CharacterModel2.cs │ ├── CharacterModel2.cs.meta │ ├── ColliderSenser.cs │ ├── ColliderSenser.cs.meta │ ├── EnemyBehaviour.cs │ ├── EnemyBehaviour.cs.meta │ ├── PlayerController.cs │ ├── PlayerController.cs.meta │ ├── Senser.cs │ ├── Senser.cs.meta │ ├── Sword.cs │ ├── Sword.cs.meta │ ├── TimidEnemy.cs │ └── TimidEnemy.cs.meta ├── TimidEnemy.asset └── TimidEnemy.asset.meta ├── LICENSE ├── LICENSE.meta ├── README.md ├── README.md.meta ├── Script.meta ├── Script ├── BehaviourTree.meta └── BehaviourTree │ ├── BT_Execute.cs │ ├── BT_Execute.cs.meta │ ├── BT_Failure.cs │ ├── BT_Failure.cs.meta │ ├── BT_If.cs │ ├── BT_If.cs.meta │ ├── BT_Interrupt.cs │ ├── BT_Interrupt.cs.meta │ ├── BT_Node.cs │ ├── BT_Node.cs.meta │ ├── BT_Root.cs │ ├── BT_Root.cs.meta │ ├── BT_Selector.cs │ ├── BT_Selector.cs.meta │ ├── BT_Sequence.cs │ ├── BT_Sequence.cs.meta │ ├── BT_Success.cs │ ├── BT_Success.cs.meta │ ├── BT_Timing.cs │ ├── BT_Timing.cs.meta │ ├── BT_While.cs │ ├── BT_While.cs.meta │ ├── BehaviourTree.cs │ ├── BehaviourTree.cs.meta │ ├── BehaviourTreeComponent.cs │ ├── BehaviourTreeComponent.cs.meta │ ├── Compilers.meta │ ├── Compilers │ ├── BehaviourTreeCompiler.asset │ ├── BehaviourTreeCompiler.asset.meta │ ├── BehaviourTreeCompiler.cs │ ├── BehaviourTreeCompiler.cs.meta │ ├── BehaviourTreeCompilerCommon.cs │ ├── BehaviourTreeCompilerCommon.cs.meta │ ├── BehaviourTreeTestCodeCompiler.asset │ ├── BehaviourTreeTestCodeCompiler.asset.meta │ ├── BehaviourTreeTestCodeCompiler.cs │ ├── BehaviourTreeTestCodeCompiler.cs.meta │ ├── TestCodeCompiler.cs │ └── TestCodeCompiler.cs.meta │ ├── DefaultTemplates.meta │ ├── DefaultTemplates │ ├── ClassTemplate.txt │ ├── ClassTemplate.txt.meta │ ├── CodeTemplateTable.json │ ├── CodeTemplateTable.json.meta │ ├── Declare.meta │ ├── Declare │ │ ├── Bool.txt │ │ ├── Bool.txt.meta │ │ ├── Cancel.txt │ │ ├── Cancel.txt.meta │ │ ├── Event.txt │ │ ├── Event.txt.meta │ │ ├── Execute.txt │ │ ├── Execute.txt.meta │ │ ├── Failure.txt │ │ ├── Failure.txt.meta │ │ ├── Float.txt │ │ ├── Float.txt.meta │ │ ├── FrameCounter.txt │ │ ├── FrameCounter.txt.meta │ │ ├── If.txt │ │ ├── If.txt.meta │ │ ├── Int.txt │ │ ├── Int.txt.meta │ │ ├── Interrupt.txt │ │ ├── Interrupt.txt.meta │ │ ├── NextSequence.txt │ │ ├── NextSequence.txt.meta │ │ ├── Root.txt │ │ ├── Root.txt.meta │ │ ├── Selector.txt │ │ ├── Selector.txt.meta │ │ ├── Sequence.txt │ │ ├── Sequence.txt.meta │ │ ├── SetParameter.txt │ │ ├── SetParameter.txt.meta │ │ ├── Success.txt │ │ ├── Success.txt.meta │ │ ├── Timer.txt │ │ ├── Timer.txt.meta │ │ ├── While.txt │ │ └── While.txt.meta │ ├── Init.meta │ ├── Init │ │ ├── Bool.txt │ │ ├── Bool.txt.meta │ │ ├── Cancel.txt │ │ ├── Cancel.txt.meta │ │ ├── Event.txt │ │ ├── Event.txt.meta │ │ ├── Execute.txt │ │ ├── Execute.txt.meta │ │ ├── Failure.txt │ │ ├── Failure.txt.meta │ │ ├── Float.txt │ │ ├── Float.txt.meta │ │ ├── FrameCounter.txt │ │ ├── FrameCounter.txt.meta │ │ ├── If.txt │ │ ├── If.txt.meta │ │ ├── Int.txt │ │ ├── Int.txt.meta │ │ ├── Interrupt.txt │ │ ├── Interrupt.txt.meta │ │ ├── NextSequence.txt │ │ ├── NextSequence.txt.meta │ │ ├── Root.txt │ │ ├── Root.txt.meta │ │ ├── Selector.txt │ │ ├── Selector.txt.meta │ │ ├── Sequence.txt │ │ ├── Sequence.txt.meta │ │ ├── SetParameter.txt │ │ ├── SetParameter.txt.meta │ │ ├── Success.txt │ │ ├── Success.txt.meta │ │ ├── Timer.txt │ │ ├── Timer.txt.meta │ │ ├── While.txt │ │ └── While.txt.meta │ ├── TestCode.meta │ └── TestCode │ │ ├── CallValidationTemplate.txt │ │ ├── CallValidationTemplate.txt.meta │ │ ├── ClassTemplate.txt │ │ ├── ClassTemplate.txt.meta │ │ ├── CodeTemplateTable.json │ │ ├── CodeTemplateTable.json.meta │ │ ├── ExtraCondition.txt │ │ ├── ExtraCondition.txt.meta │ │ ├── InitCalledFlag.txt │ │ ├── InitCalledFlag.txt.meta │ │ ├── InitParameter.txt │ │ ├── InitParameter.txt.meta │ │ ├── NotCallValidationTemplate.txt │ │ ├── NotCallValidationTemplate.txt.meta │ │ ├── ResetCallFlagTemplate.txt │ │ ├── ResetCallFlagTemplate.txt.meta │ │ ├── ResetCalledFlagTemplate.txt │ │ ├── ResetCalledFlagTemplate.txt.meta │ │ ├── RunTreeTemplate.txt │ │ ├── RunTreeTemplate.txt.meta │ │ ├── SetParameterTemplate.txt │ │ ├── SetParameterTemplate.txt.meta │ │ ├── TestFunctionTemplate.txt │ │ ├── TestFunctionTemplate.txt.meta │ │ ├── WaitSecondsTemplate.txt │ │ └── WaitSecondsTemplate.txt.meta │ ├── FrameCounter.cs │ ├── FrameCounter.cs.meta │ ├── Timer.cs │ └── Timer.cs.meta ├── Test.meta ├── Test ├── Editor.meta └── Editor │ ├── BT_Test.cs │ ├── BT_Test.cs.meta │ ├── BaseTree_Test.cs │ ├── BaseTree_Test.cs.meta │ ├── EnemyBehaviourTest.cs │ └── EnemyBehaviourTest.cs.meta ├── TreeGraph.meta ├── TreeGraph ├── CodeTemplateReader.cs ├── CodeTemplateReader.cs.meta ├── CodeTemplates.meta ├── CodeTemplates │ ├── CodeTemplateInterpolator.cs │ └── CodeTemplateInterpolator.cs.meta ├── Editor.meta ├── Editor │ ├── CustomAttributeDrawer.cs │ ├── CustomAttributeDrawer.cs.meta │ ├── EditorTreeGraphEditor.cs │ ├── EditorTreeGraphEditor.cs.meta │ ├── EditorTreeGraphSettings.cs │ ├── EditorTreeGraphSettings.cs.meta │ ├── EditorTreeTester.cs │ └── EditorTreeTester.cs.meta ├── EditorTreeCompiler.cs ├── EditorTreeCompiler.cs.meta ├── EditorTreeGraph.cs ├── EditorTreeGraph.cs.meta ├── GraphNodes.meta ├── GraphNodes │ ├── BaseMultiOutputNode.cs │ ├── BaseMultiOutputNode.cs.meta │ ├── BaseNode.cs │ ├── BaseNode.cs.meta │ ├── BoolNode.cs │ ├── BoolNode.cs.meta │ ├── CancelNode.cs │ ├── CancelNode.cs.meta │ ├── CommentNode.cs │ ├── CommentNode.cs.meta │ ├── CustomAttribute.cs │ ├── CustomAttribute.cs.meta │ ├── EventNode.cs │ ├── EventNode.cs.meta │ ├── ExecuteNode.cs │ ├── ExecuteNode.cs.meta │ ├── FailureNode.cs │ ├── FailureNode.cs.meta │ ├── FloatNode.cs │ ├── FloatNode.cs.meta │ ├── FrameCounterNode.cs │ ├── FrameCounterNode.cs.meta │ ├── ITreeGraphNode.cs │ ├── ITreeGraphNode.cs.meta │ ├── IfNode.cs │ ├── IfNode.cs.meta │ ├── InheritTargetNode.cs │ ├── InheritTargetNode.cs.meta │ ├── IntNode.cs │ ├── IntNode.cs.meta │ ├── InterruptNode.cs │ ├── InterruptNode.cs.meta │ ├── NextSequenceNode.cs │ ├── NextSequenceNode.cs.meta │ ├── RootNode.cs │ ├── RootNode.cs.meta │ ├── SelectorNode.cs │ ├── SelectorNode.cs.meta │ ├── SequenceNode.cs │ ├── SequenceNode.cs.meta │ ├── SetBoolNode.cs │ ├── SetBoolNode.cs.meta │ ├── SetFloatNode.cs │ ├── SetFloatNode.cs.meta │ ├── SetIntNode.cs │ ├── SetIntNode.cs.meta │ ├── SubNode.cs │ ├── SubNode.cs.meta │ ├── SuccessNode.cs │ ├── SuccessNode.cs.meta │ ├── TestCodeNodes.meta │ ├── TestCodeNodes │ │ ├── CallValidation.cs │ │ ├── CallValidation.cs.meta │ │ ├── ITestTreeGraphNode.cs │ │ ├── ITestTreeGraphNode.cs.meta │ │ ├── NotCallValidation.cs │ │ ├── NotCallValidation.cs.meta │ │ ├── ResetCalledFlag.cs │ │ ├── ResetCalledFlag.cs.meta │ │ ├── RunTreeNode.cs │ │ ├── RunTreeNode.cs.meta │ │ ├── SetParameter.cs │ │ ├── SetParameter.cs.meta │ │ ├── TestCaseRootNode.cs │ │ ├── TestCaseRootNode.cs.meta │ │ ├── TestTreeBaseNode.cs │ │ ├── TestTreeBaseNode.cs.meta │ │ ├── WaitSeconds.cs │ │ └── WaitSeconds.cs.meta │ ├── TimerNode.cs │ ├── TimerNode.cs.meta │ ├── WhileNode.cs │ └── WhileNode.cs.meta ├── JsonReader.cs ├── JsonReader.cs.meta ├── Settings.meta └── Settings │ ├── EditorTreeGraphSettings.asset │ └── EditorTreeGraphSettings.asset.meta ├── xNode.meta └── xNode ├── CONTRIBUTING.md ├── CONTRIBUTING.md.meta ├── LICENSE.md ├── LICENSE.md.meta ├── README.md ├── README.md.meta ├── Scripts.meta ├── Scripts ├── Attributes.meta ├── Attributes │ ├── NodeEnum.cs │ └── NodeEnum.cs.meta ├── Editor.meta ├── Editor │ ├── Drawers.meta │ ├── Drawers │ │ ├── NodeEnumDrawer.cs │ │ └── NodeEnumDrawer.cs.meta │ ├── NodeEditor.cs │ ├── NodeEditor.cs.meta │ ├── NodeEditorAction.cs │ ├── NodeEditorAction.cs.meta │ ├── NodeEditorAssetModProcessor.cs │ ├── NodeEditorAssetModProcessor.cs.meta │ ├── NodeEditorBase.cs │ ├── NodeEditorBase.cs.meta │ ├── NodeEditorGUI.cs │ ├── NodeEditorGUI.cs.meta │ ├── NodeEditorGUILayout.cs │ ├── NodeEditorGUILayout.cs.meta │ ├── NodeEditorPreferences.cs │ ├── NodeEditorPreferences.cs.meta │ ├── NodeEditorReflection.cs │ ├── NodeEditorReflection.cs.meta │ ├── NodeEditorResources.cs │ ├── NodeEditorResources.cs.meta │ ├── NodeEditorUtilities.cs │ ├── NodeEditorUtilities.cs.meta │ ├── NodeEditorWindow.cs │ ├── NodeEditorWindow.cs.meta │ ├── NodeGraphEditor.cs │ ├── NodeGraphEditor.cs.meta │ ├── RenamePopup.cs │ ├── RenamePopup.cs.meta │ ├── Resources.meta │ └── Resources │ │ ├── ScriptTemplates.meta │ │ ├── ScriptTemplates │ │ ├── xNode_NodeGraphTemplate.cs.txt │ │ ├── xNode_NodeGraphTemplate.cs.txt.meta │ │ ├── xNode_NodeTemplate.cs.txt │ │ └── xNode_NodeTemplate.cs.txt.meta │ │ ├── xnode_dot.png │ │ ├── xnode_dot.png.meta │ │ ├── xnode_dot_outer.png │ │ ├── xnode_dot_outer.png.meta │ │ ├── xnode_node.png │ │ ├── xnode_node.png.meta │ │ ├── xnode_node_highlight.png │ │ ├── xnode_node_highlight.png.meta │ │ ├── xnode_node_workfile.psd │ │ └── xnode_node_workfile.psd.meta ├── Node.cs ├── Node.cs.meta ├── NodeDataCache.cs ├── NodeDataCache.cs.meta ├── NodeGraph.cs ├── NodeGraph.cs.meta ├── NodePort.cs └── NodePort.cs.meta ├── xNode.meta └── xNode ├── Scripts.meta └── Scripts ├── Editor.meta ├── Editor ├── NodeEditorWindow.cs ├── NodeEditorWindow.cs.meta ├── NodeGraphEditor.cs └── NodeGraphEditor.cs.meta ├── NodeGraph.cs └── NodeGraph.cs.meta /BaseTreeGraph.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 4448e5df397bc364faea7281b63ab92b 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /BaseTreeGraph/BaseTree.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e5588b5d0c44edf4cb401fab2f6df96c 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /BaseTreeGraph/BaseTree.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9423b1c147d4e634fa3a0744a56129de 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /ExampleScene.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 8eab551a77e725e4db1b250a5319152d 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /ExampleScene/BravefulEnemy.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 8edc81afb03d08c40909d21aa3440bf4 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /ExampleScene/EnemyBehaviour.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 077b661ca3b21d145ac2797dbb23dec3 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /ExampleScene/EnemyBehaviourTest.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &-2238605622755765267 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 11500000, guid: 6e46930c619daae418e238785c6a7541, type: 3} 13 | m_Name: Test3 14 | m_EditorClassIdentifier: 15 | caseName: Test3 16 | parameters: 17 | - name: IsFound 18 | value: true 19 | - name: IsAttackable 20 | value: false 21 | - name: IsMoveable 22 | value: true 23 | - name: IsEscape 24 | value: true 25 | - name: IsGotDamage 26 | value: false 27 | otherNodes: 28 | - attack 29 | - chase 30 | - patrol 31 | - attackable_check 32 | - moveableCheck 33 | needToCallNodes: 34 | - escape 35 | extraCondition: 36 | --- !u!114 &11400000 37 | MonoBehaviour: 38 | m_ObjectHideFlags: 0 39 | m_CorrespondingSourceObject: {fileID: 0} 40 | m_PrefabInstance: {fileID: 0} 41 | m_PrefabAsset: {fileID: 0} 42 | m_GameObject: {fileID: 0} 43 | m_Enabled: 1 44 | m_EditorHideFlags: 0 45 | m_Script: {fileID: 11500000, guid: 2a1fd635bea67404a999f60488b205fe, type: 3} 46 | m_Name: EnemyBehaviourTest 47 | m_EditorClassIdentifier: 48 | treeGraph: {fileID: 11400000, guid: 077b661ca3b21d145ac2797dbb23dec3, type: 2} 49 | testCases: 50 | - {fileID: 4033512463609596267} 51 | - {fileID: -2238605622755765267} 52 | --- !u!114 &4033512463609596267 53 | MonoBehaviour: 54 | m_ObjectHideFlags: 0 55 | m_CorrespondingSourceObject: {fileID: 0} 56 | m_PrefabInstance: {fileID: 0} 57 | m_PrefabAsset: {fileID: 0} 58 | m_GameObject: {fileID: 0} 59 | m_Enabled: 1 60 | m_EditorHideFlags: 0 61 | m_Script: {fileID: 11500000, guid: 6e46930c619daae418e238785c6a7541, type: 3} 62 | m_Name: Test2 63 | m_EditorClassIdentifier: 64 | caseName: Test2 65 | parameters: 66 | - name: IsFound 67 | value: true 68 | - name: IsAttackable 69 | value: true 70 | - name: IsMoveable 71 | value: true 72 | - name: IsEscape 73 | value: false 74 | - name: IsGotDamage 75 | value: false 76 | otherNodes: 77 | - chase 78 | - patrol 79 | - attackable_check 80 | - moveableCheck 81 | - escape 82 | needToCallNodes: 83 | - attack 84 | extraCondition: IsAttackable && !IsEscape 85 | -------------------------------------------------------------------------------- /ExampleScene/EnemyBehaviourTest.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a241d8bfe9922cd4fa233a962aa54ee4 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /ExampleScene/Example1.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a3a281d0d89319f4ca51427b6f9642e2 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /ExampleScene/Example1.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f95edb205be646e48ab6052ada8d4bb3 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /ExampleScene/Example1/NavMesh.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dumble009/UnityEditorTreeGraph/85cfcf5d381a0cddd58b87701b5f585edf2646b8/ExampleScene/Example1/NavMesh.asset -------------------------------------------------------------------------------- /ExampleScene/Example1/NavMesh.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 52aec234f18f31646ae2b85416a4f076 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 23800000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /ExampleScene/Example2.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 4c38e011383c0a9478c86cbdb1480b8c 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /ExampleScene/Example2.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 30a266f3c9a069146ac9436eae06754c 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /ExampleScene/Example2/NavMesh.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dumble009/UnityEditorTreeGraph/85cfcf5d381a0cddd58b87701b5f585edf2646b8/ExampleScene/Example2/NavMesh.asset -------------------------------------------------------------------------------- /ExampleScene/Example2/NavMesh.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 69672d94a332a9743a73b1b4b505ef1c 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 23800000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /ExampleScene/Materials.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 4ad43c9df8dfcb143b0709e2fc8c2c18 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /ExampleScene/Materials/Black.mat: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!21 &2100000 4 | Material: 5 | serializedVersion: 6 6 | m_ObjectHideFlags: 0 7 | m_CorrespondingSourceObject: {fileID: 0} 8 | m_PrefabInstance: {fileID: 0} 9 | m_PrefabAsset: {fileID: 0} 10 | m_Name: Black 11 | m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} 12 | m_ShaderKeywords: 13 | m_LightmapFlags: 4 14 | m_EnableInstancingVariants: 0 15 | m_DoubleSidedGI: 0 16 | m_CustomRenderQueue: -1 17 | stringTagMap: {} 18 | disabledShaderPasses: [] 19 | m_SavedProperties: 20 | serializedVersion: 3 21 | m_TexEnvs: 22 | - _BumpMap: 23 | m_Texture: {fileID: 0} 24 | m_Scale: {x: 1, y: 1} 25 | m_Offset: {x: 0, y: 0} 26 | - _DetailAlbedoMap: 27 | m_Texture: {fileID: 0} 28 | m_Scale: {x: 1, y: 1} 29 | m_Offset: {x: 0, y: 0} 30 | - _DetailMask: 31 | m_Texture: {fileID: 0} 32 | m_Scale: {x: 1, y: 1} 33 | m_Offset: {x: 0, y: 0} 34 | - _DetailNormalMap: 35 | m_Texture: {fileID: 0} 36 | m_Scale: {x: 1, y: 1} 37 | m_Offset: {x: 0, y: 0} 38 | - _EmissionMap: 39 | m_Texture: {fileID: 0} 40 | m_Scale: {x: 1, y: 1} 41 | m_Offset: {x: 0, y: 0} 42 | - _MainTex: 43 | m_Texture: {fileID: 0} 44 | m_Scale: {x: 1, y: 1} 45 | m_Offset: {x: 0, y: 0} 46 | - _MetallicGlossMap: 47 | m_Texture: {fileID: 0} 48 | m_Scale: {x: 1, y: 1} 49 | m_Offset: {x: 0, y: 0} 50 | - _OcclusionMap: 51 | m_Texture: {fileID: 0} 52 | m_Scale: {x: 1, y: 1} 53 | m_Offset: {x: 0, y: 0} 54 | - _ParallaxMap: 55 | m_Texture: {fileID: 0} 56 | m_Scale: {x: 1, y: 1} 57 | m_Offset: {x: 0, y: 0} 58 | m_Floats: 59 | - _BumpScale: 1 60 | - _Cutoff: 0.5 61 | - _DetailNormalMapScale: 1 62 | - _DstBlend: 0 63 | - _GlossMapScale: 1 64 | - _Glossiness: 0.5 65 | - _GlossyReflections: 1 66 | - _Metallic: 0 67 | - _Mode: 0 68 | - _OcclusionStrength: 1 69 | - _Parallax: 0.02 70 | - _SmoothnessTextureChannel: 0 71 | - _SpecularHighlights: 1 72 | - _SrcBlend: 1 73 | - _UVSec: 0 74 | - _ZWrite: 1 75 | m_Colors: 76 | - _Color: {r: 0, g: 0, b: 0, a: 1} 77 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} 78 | -------------------------------------------------------------------------------- /ExampleScene/Materials/Black.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 027fd2f4d4b20c84e9942e8041e0f51a 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 2100000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /ExampleScene/Materials/Blue.mat: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!21 &2100000 4 | Material: 5 | serializedVersion: 6 6 | m_ObjectHideFlags: 0 7 | m_CorrespondingSourceObject: {fileID: 0} 8 | m_PrefabInstance: {fileID: 0} 9 | m_PrefabAsset: {fileID: 0} 10 | m_Name: Blue 11 | m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} 12 | m_ShaderKeywords: 13 | m_LightmapFlags: 4 14 | m_EnableInstancingVariants: 0 15 | m_DoubleSidedGI: 0 16 | m_CustomRenderQueue: -1 17 | stringTagMap: {} 18 | disabledShaderPasses: [] 19 | m_SavedProperties: 20 | serializedVersion: 3 21 | m_TexEnvs: 22 | - _BumpMap: 23 | m_Texture: {fileID: 0} 24 | m_Scale: {x: 1, y: 1} 25 | m_Offset: {x: 0, y: 0} 26 | - _DetailAlbedoMap: 27 | m_Texture: {fileID: 0} 28 | m_Scale: {x: 1, y: 1} 29 | m_Offset: {x: 0, y: 0} 30 | - _DetailMask: 31 | m_Texture: {fileID: 0} 32 | m_Scale: {x: 1, y: 1} 33 | m_Offset: {x: 0, y: 0} 34 | - _DetailNormalMap: 35 | m_Texture: {fileID: 0} 36 | m_Scale: {x: 1, y: 1} 37 | m_Offset: {x: 0, y: 0} 38 | - _EmissionMap: 39 | m_Texture: {fileID: 0} 40 | m_Scale: {x: 1, y: 1} 41 | m_Offset: {x: 0, y: 0} 42 | - _MainTex: 43 | m_Texture: {fileID: 0} 44 | m_Scale: {x: 1, y: 1} 45 | m_Offset: {x: 0, y: 0} 46 | - _MetallicGlossMap: 47 | m_Texture: {fileID: 0} 48 | m_Scale: {x: 1, y: 1} 49 | m_Offset: {x: 0, y: 0} 50 | - _OcclusionMap: 51 | m_Texture: {fileID: 0} 52 | m_Scale: {x: 1, y: 1} 53 | m_Offset: {x: 0, y: 0} 54 | - _ParallaxMap: 55 | m_Texture: {fileID: 0} 56 | m_Scale: {x: 1, y: 1} 57 | m_Offset: {x: 0, y: 0} 58 | m_Floats: 59 | - _BumpScale: 1 60 | - _Cutoff: 0.5 61 | - _DetailNormalMapScale: 1 62 | - _DstBlend: 0 63 | - _GlossMapScale: 1 64 | - _Glossiness: 0.5 65 | - _GlossyReflections: 1 66 | - _Metallic: 0 67 | - _Mode: 0 68 | - _OcclusionStrength: 1 69 | - _Parallax: 0.02 70 | - _SmoothnessTextureChannel: 0 71 | - _SpecularHighlights: 1 72 | - _SrcBlend: 1 73 | - _UVSec: 0 74 | - _ZWrite: 1 75 | m_Colors: 76 | - _Color: {r: 0.2833333, g: 0, b: 1, a: 1} 77 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} 78 | -------------------------------------------------------------------------------- /ExampleScene/Materials/Blue.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 739290178baff5d488a4ab3bdd757c12 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 2100000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /ExampleScene/Materials/Green.mat: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!21 &2100000 4 | Material: 5 | serializedVersion: 6 6 | m_ObjectHideFlags: 0 7 | m_CorrespondingSourceObject: {fileID: 0} 8 | m_PrefabInstance: {fileID: 0} 9 | m_PrefabAsset: {fileID: 0} 10 | m_Name: Green 11 | m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} 12 | m_ShaderKeywords: 13 | m_LightmapFlags: 4 14 | m_EnableInstancingVariants: 0 15 | m_DoubleSidedGI: 0 16 | m_CustomRenderQueue: -1 17 | stringTagMap: {} 18 | disabledShaderPasses: [] 19 | m_SavedProperties: 20 | serializedVersion: 3 21 | m_TexEnvs: 22 | - _BumpMap: 23 | m_Texture: {fileID: 0} 24 | m_Scale: {x: 1, y: 1} 25 | m_Offset: {x: 0, y: 0} 26 | - _DetailAlbedoMap: 27 | m_Texture: {fileID: 0} 28 | m_Scale: {x: 1, y: 1} 29 | m_Offset: {x: 0, y: 0} 30 | - _DetailMask: 31 | m_Texture: {fileID: 0} 32 | m_Scale: {x: 1, y: 1} 33 | m_Offset: {x: 0, y: 0} 34 | - _DetailNormalMap: 35 | m_Texture: {fileID: 0} 36 | m_Scale: {x: 1, y: 1} 37 | m_Offset: {x: 0, y: 0} 38 | - _EmissionMap: 39 | m_Texture: {fileID: 0} 40 | m_Scale: {x: 1, y: 1} 41 | m_Offset: {x: 0, y: 0} 42 | - _MainTex: 43 | m_Texture: {fileID: 0} 44 | m_Scale: {x: 1, y: 1} 45 | m_Offset: {x: 0, y: 0} 46 | - _MetallicGlossMap: 47 | m_Texture: {fileID: 0} 48 | m_Scale: {x: 1, y: 1} 49 | m_Offset: {x: 0, y: 0} 50 | - _OcclusionMap: 51 | m_Texture: {fileID: 0} 52 | m_Scale: {x: 1, y: 1} 53 | m_Offset: {x: 0, y: 0} 54 | - _ParallaxMap: 55 | m_Texture: {fileID: 0} 56 | m_Scale: {x: 1, y: 1} 57 | m_Offset: {x: 0, y: 0} 58 | m_Floats: 59 | - _BumpScale: 1 60 | - _Cutoff: 0.5 61 | - _DetailNormalMapScale: 1 62 | - _DstBlend: 0 63 | - _GlossMapScale: 1 64 | - _Glossiness: 0.5 65 | - _GlossyReflections: 1 66 | - _Metallic: 0 67 | - _Mode: 0 68 | - _OcclusionStrength: 1 69 | - _Parallax: 0.02 70 | - _SmoothnessTextureChannel: 0 71 | - _SpecularHighlights: 1 72 | - _SrcBlend: 1 73 | - _UVSec: 0 74 | - _ZWrite: 1 75 | m_Colors: 76 | - _Color: {r: 0.1942594, g: 1, b: 0, a: 1} 77 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} 78 | -------------------------------------------------------------------------------- /ExampleScene/Materials/Green.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 475cafeeca24ab64ea200e1ab8887c5d 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 2100000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /ExampleScene/Materials/Orange.mat: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!21 &2100000 4 | Material: 5 | serializedVersion: 6 6 | m_ObjectHideFlags: 0 7 | m_CorrespondingSourceObject: {fileID: 0} 8 | m_PrefabInstance: {fileID: 0} 9 | m_PrefabAsset: {fileID: 0} 10 | m_Name: Orange 11 | m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} 12 | m_ShaderKeywords: 13 | m_LightmapFlags: 4 14 | m_EnableInstancingVariants: 0 15 | m_DoubleSidedGI: 0 16 | m_CustomRenderQueue: -1 17 | stringTagMap: {} 18 | disabledShaderPasses: [] 19 | m_SavedProperties: 20 | serializedVersion: 3 21 | m_TexEnvs: 22 | - _BumpMap: 23 | m_Texture: {fileID: 0} 24 | m_Scale: {x: 1, y: 1} 25 | m_Offset: {x: 0, y: 0} 26 | - _DetailAlbedoMap: 27 | m_Texture: {fileID: 0} 28 | m_Scale: {x: 1, y: 1} 29 | m_Offset: {x: 0, y: 0} 30 | - _DetailMask: 31 | m_Texture: {fileID: 0} 32 | m_Scale: {x: 1, y: 1} 33 | m_Offset: {x: 0, y: 0} 34 | - _DetailNormalMap: 35 | m_Texture: {fileID: 0} 36 | m_Scale: {x: 1, y: 1} 37 | m_Offset: {x: 0, y: 0} 38 | - _EmissionMap: 39 | m_Texture: {fileID: 0} 40 | m_Scale: {x: 1, y: 1} 41 | m_Offset: {x: 0, y: 0} 42 | - _MainTex: 43 | m_Texture: {fileID: 0} 44 | m_Scale: {x: 1, y: 1} 45 | m_Offset: {x: 0, y: 0} 46 | - _MetallicGlossMap: 47 | m_Texture: {fileID: 0} 48 | m_Scale: {x: 1, y: 1} 49 | m_Offset: {x: 0, y: 0} 50 | - _OcclusionMap: 51 | m_Texture: {fileID: 0} 52 | m_Scale: {x: 1, y: 1} 53 | m_Offset: {x: 0, y: 0} 54 | - _ParallaxMap: 55 | m_Texture: {fileID: 0} 56 | m_Scale: {x: 1, y: 1} 57 | m_Offset: {x: 0, y: 0} 58 | m_Floats: 59 | - _BumpScale: 1 60 | - _Cutoff: 0.5 61 | - _DetailNormalMapScale: 1 62 | - _DstBlend: 0 63 | - _GlossMapScale: 1 64 | - _Glossiness: 0.5 65 | - _GlossyReflections: 1 66 | - _Metallic: 0 67 | - _Mode: 0 68 | - _OcclusionStrength: 1 69 | - _Parallax: 0.02 70 | - _SmoothnessTextureChannel: 0 71 | - _SpecularHighlights: 1 72 | - _SrcBlend: 1 73 | - _UVSec: 0 74 | - _ZWrite: 1 75 | m_Colors: 76 | - _Color: {r: 0.9811321, g: 0.5119456, b: 0, a: 1} 77 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} 78 | -------------------------------------------------------------------------------- /ExampleScene/Materials/Orange.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d9d8c9b3b844dc74586a8974a4030ec2 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 2100000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /ExampleScene/Materials/Red.mat: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!21 &2100000 4 | Material: 5 | serializedVersion: 6 6 | m_ObjectHideFlags: 0 7 | m_CorrespondingSourceObject: {fileID: 0} 8 | m_PrefabInstance: {fileID: 0} 9 | m_PrefabAsset: {fileID: 0} 10 | m_Name: Red 11 | m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} 12 | m_ShaderKeywords: 13 | m_LightmapFlags: 4 14 | m_EnableInstancingVariants: 0 15 | m_DoubleSidedGI: 0 16 | m_CustomRenderQueue: -1 17 | stringTagMap: {} 18 | disabledShaderPasses: [] 19 | m_SavedProperties: 20 | serializedVersion: 3 21 | m_TexEnvs: 22 | - _BumpMap: 23 | m_Texture: {fileID: 0} 24 | m_Scale: {x: 1, y: 1} 25 | m_Offset: {x: 0, y: 0} 26 | - _DetailAlbedoMap: 27 | m_Texture: {fileID: 0} 28 | m_Scale: {x: 1, y: 1} 29 | m_Offset: {x: 0, y: 0} 30 | - _DetailMask: 31 | m_Texture: {fileID: 0} 32 | m_Scale: {x: 1, y: 1} 33 | m_Offset: {x: 0, y: 0} 34 | - _DetailNormalMap: 35 | m_Texture: {fileID: 0} 36 | m_Scale: {x: 1, y: 1} 37 | m_Offset: {x: 0, y: 0} 38 | - _EmissionMap: 39 | m_Texture: {fileID: 0} 40 | m_Scale: {x: 1, y: 1} 41 | m_Offset: {x: 0, y: 0} 42 | - _MainTex: 43 | m_Texture: {fileID: 0} 44 | m_Scale: {x: 1, y: 1} 45 | m_Offset: {x: 0, y: 0} 46 | - _MetallicGlossMap: 47 | m_Texture: {fileID: 0} 48 | m_Scale: {x: 1, y: 1} 49 | m_Offset: {x: 0, y: 0} 50 | - _OcclusionMap: 51 | m_Texture: {fileID: 0} 52 | m_Scale: {x: 1, y: 1} 53 | m_Offset: {x: 0, y: 0} 54 | - _ParallaxMap: 55 | m_Texture: {fileID: 0} 56 | m_Scale: {x: 1, y: 1} 57 | m_Offset: {x: 0, y: 0} 58 | m_Floats: 59 | - _BumpScale: 1 60 | - _Cutoff: 0.5 61 | - _DetailNormalMapScale: 1 62 | - _DstBlend: 0 63 | - _GlossMapScale: 1 64 | - _Glossiness: 0.5 65 | - _GlossyReflections: 1 66 | - _Metallic: 0 67 | - _Mode: 0 68 | - _OcclusionStrength: 1 69 | - _Parallax: 0.02 70 | - _SmoothnessTextureChannel: 0 71 | - _SpecularHighlights: 1 72 | - _SrcBlend: 1 73 | - _UVSec: 0 74 | - _ZWrite: 1 75 | m_Colors: 76 | - _Color: {r: 1, g: 0, b: 0, a: 1} 77 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} 78 | -------------------------------------------------------------------------------- /ExampleScene/Materials/Red.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 91807c748bd932e469afbfe4a99afc96 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 2100000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /ExampleScene/Prefabs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 3db9f0efaafae2341abdf208748c7deb 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /ExampleScene/Prefabs/Bullet.prefab.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 8c06ecd3230793a45a09deb6e67cb6ac 3 | PrefabImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /ExampleScene/Prefabs/PlayerBullet Variant.prefab.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 62f73c172a3db954ab199c05c06dbcdd 3 | PrefabImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /ExampleScene/Scripts.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d8fea53d347937241bdd406dcbd57f6f 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /ExampleScene/Scripts/BehaviourTreeTicker.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | 5 | public class BehaviourTreeTicker : MonoBehaviour 6 | { 7 | private void Awake() 8 | { 9 | btComponents = GameObject.FindObjectsOfType(); 10 | } 11 | BehaviourTreeComponent[] btComponents; 12 | void Update() 13 | { 14 | if (btComponents != null) 15 | { 16 | foreach (BehaviourTreeComponent bt in btComponents) 17 | { 18 | bt.Tick(); 19 | } 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /ExampleScene/Scripts/BehaviourTreeTicker.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 6c8336fb82f318143addc9f7a2c6134b 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /ExampleScene/Scripts/BravefulEnemy.cs: -------------------------------------------------------------------------------- 1 | using BT; 2 | public class BravefulEnemy : EnemyBehaviour 3 | { 4 | 5 | 6 | override public void MakeTree() 7 | { 8 | base.MakeTree(); 9 | BT_Root root = new BT_Root();behaviourTree = new BehaviourTree(root);BT_Selector selector1 = new BT_Selector(); 10 | BT_Execute attack = new BT_Execute(); 11 | BT_Execute chase = new BT_Execute(); 12 | BT_Execute patrol = new BT_Execute(); 13 | BT_Selector selector2 = new BT_Selector(); 14 | BT_If if_found = new BT_If(); 15 | BT_If If_attack = new BT_If(); 16 | BT_Execute attackable_check = new BT_Execute(); 17 | BT_Execute moveableCheck = new BT_Execute(); 18 | BT_If if_patrol = new BT_If(); 19 | BT_If If_chase = new BT_If(); 20 | if_found.SetCondition(()=>{ 21 | return IsFound; 22 | }); 23 | if_found.AddChild(selector2); 24 | If_attack.SetCondition(()=>{ 25 | return IsAttackable; 26 | }); 27 | If_attack.AddChild(attack); 28 | attackable_check.AddEvent(()=>{ 29 | attackablecheck_event.Invoke(); 30 | }); 31 | attackable_check.AddChild(If_attack); 32 | 33 | selector2.AddChild(attackable_check); 34 | selector2.AddChild(If_chase); 35 | attack.AddEvent(()=>{ 36 | attack_event.Invoke(); 37 | }); 38 | root.AddChild(moveableCheck); 39 | 40 | selector1.AddChild(if_found); 41 | selector1.AddChild(if_patrol); 42 | moveableCheck.AddEvent(()=>{ 43 | moveablecheck_event.Invoke(); 44 | }); 45 | moveableCheck.AddChild(selector1); 46 | if_patrol.SetCondition(()=>{ 47 | return IsMoveable; 48 | }); 49 | if_patrol.AddChild(patrol); 50 | patrol.AddEvent(()=>{ 51 | patrol_event.Invoke(); 52 | }); 53 | If_chase.SetCondition(()=>{ 54 | return IsMoveable; 55 | }); 56 | If_chase.AddChild(chase); 57 | chase.AddEvent(()=>{ 58 | chase_event.Invoke(); 59 | }); 60 | 61 | } 62 | } -------------------------------------------------------------------------------- /ExampleScene/Scripts/BravefulEnemy.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 926403b4a653c544d8d42e5c82c00aa4 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /ExampleScene/Scripts/Bullet.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | 5 | public class Bullet : MonoBehaviour 6 | { 7 | void Awake() 8 | { 9 | Destroy(this.gameObject, lifeTime); 10 | } 11 | [SerializeField] 12 | float speed = 5.0f; 13 | [SerializeField] 14 | float lifeTime = 3.0f; 15 | void Update() 16 | { 17 | transform.position += transform.forward * speed * Time.deltaTime; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /ExampleScene/Scripts/Bullet.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 8a43829de85d6b64d815fedb96a270e0 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /ExampleScene/Scripts/BulletSpitter.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | 3 | public class BulletSpitter : MonoBehaviour 4 | { 5 | [SerializeField] 6 | GameObject bullet_prefab; 7 | public void Spit(Vector3 origin, Vector3 direction) 8 | { 9 | GameObject bullet = Instantiate(bullet_prefab, origin, Quaternion.identity) as GameObject; 10 | bullet.transform.LookAt(bullet.transform.position + direction); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /ExampleScene/Scripts/BulletSpitter.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ccd489cbfe2987b40bc3b752dfcdfe4a 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /ExampleScene/Scripts/CharacterModel1.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 0f51df1de49933d41adb816cdacdab82 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /ExampleScene/Scripts/CharacterModel2.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f52402d1ab0439041a26cbc27ea2bb83 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /ExampleScene/Scripts/ColliderSenser.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | 5 | public class ColliderSenser : Senser 6 | { 7 | [SerializeField] 8 | Transform target; 9 | private void OnTriggerEnter(Collider other) 10 | { 11 | if (other.transform == target) 12 | { 13 | Detect(); 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /ExampleScene/Scripts/ColliderSenser.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 0098be16f04830446bcf36be96c18ff3 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /ExampleScene/Scripts/EnemyBehaviour.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f16acd9776f32294ca6da3f913036d98 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /ExampleScene/Scripts/PlayerController.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | 5 | public class PlayerController : MonoBehaviour 6 | { 7 | private void Awake() 8 | { 9 | model = GetComponent(); 10 | } 11 | CharacterModel1 model; 12 | void Update() 13 | { 14 | Vector3 dir = new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical")); 15 | model.Move(transform.position + dir); 16 | 17 | Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); 18 | RaycastHit hit; 19 | if (Physics.Raycast(ray, out hit)) 20 | { 21 | Vector3 hitPos = hit.point; 22 | if (Input.GetButtonDown("Fire1")) 23 | { 24 | Vector3 direction = hitPos - transform.position; 25 | direction.Scale(new Vector3(1, 0, 1)); 26 | model.SpitBullet(direction: direction); 27 | } 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /ExampleScene/Scripts/PlayerController.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: aec00b9ac7f44e347ab44a816371ba0b 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /ExampleScene/Scripts/Senser.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | 3 | public delegate void Detect(); 4 | public class Senser : MonoBehaviour 5 | { 6 | public event Detect DetectCallback; 7 | 8 | protected void Detect() 9 | { 10 | if (DetectCallback != null) 11 | { 12 | DetectCallback.Invoke(); 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /ExampleScene/Scripts/Senser.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 387e5027504878e489e6399779196345 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /ExampleScene/Scripts/Sword.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | 5 | public class Sword : MonoBehaviour 6 | { 7 | public void Swing() 8 | { 9 | StartCoroutine(SwingCoroutine()); 10 | } 11 | [SerializeField] 12 | float swingSpeed = 3.0f; 13 | bool isSwinging = false; 14 | public bool IsSwinging { 15 | get { 16 | return isSwinging; 17 | } 18 | } 19 | 20 | IEnumerator SwingCoroutine() 21 | { 22 | isSwinging = true; 23 | float angle = -90.0f; 24 | while (angle <= 90.0f) 25 | { 26 | angle += swingSpeed * Time.deltaTime; 27 | Vector3 euler = transform.localRotation.eulerAngles; 28 | euler.y = angle; 29 | transform.localRotation = Quaternion.Euler(euler); 30 | yield return null; 31 | } 32 | transform.localRotation = Quaternion.Euler(Vector3.zero); 33 | 34 | isSwinging = false; 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /ExampleScene/Scripts/Sword.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2edd97ac2ea0951459ea8fe67d984a3f 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /ExampleScene/Scripts/TimidEnemy.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 105750616fff71342a08bbf297aa49bc 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /ExampleScene/TimidEnemy.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 92fb4bb5a4275cb4183bf80b8346be49 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 Dumble009 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 | -------------------------------------------------------------------------------- /LICENSE.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9471b0776540555418b7f3efe80efdd3 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # UnityEditorTreeGraph 2 | ![](https://imgur.com/SkJGTSh.png) 3 | 4 | Writing routines of characters or enemies is tiresome work... 5 | This Editor Extension relieve you of such painful works! 6 | 7 | # Introduction 8 | Writing code of specific behaviour(such as "transform.position += transform.forward;", "animator.SetTrigger("Attack");") is easy. But writing code of abstract behaviour(such as "Chase the player then attack") is difficult. 9 | With UETG, You can create abstract behaviour of characters without writing redundant "if else if if...". 10 | Abstract behaviours created by UETG don't depend on specific behaviours, so you can attach same abstract behaviour to different characters. 11 | Please see example scenes for more details! 12 | 13 | The code which UETG exports is not deterministic. You can create your own compiler of the graph. If you change the compiler of the graph, the exported code will be changed. With a proper compiler, UETG can export MonoBehaviour codes, DOTS code, js codes, lua codes and so on! 14 | 15 | Do you want to test your code? UETG can export test codes with GUI! 16 | ![](https://imgur.com/Q9ZWJbH.png) 17 | -------------------------------------------------------------------------------- /README.md.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 75d44380536049847aa1e52c6a42f9f7 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Script.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 1de0c184dc6ae214bb49f39ba780ae43 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Script/BehaviourTree.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 72370796591ef444f9b7471d1195124c 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Script/BehaviourTree/BT_Execute.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | namespace BT 4 | { 5 | public delegate void NodeEvent(); 6 | public class BT_Execute : BT_Node 7 | { 8 | public BT_Execute() : base() { } 9 | public BT_Execute(BT_Node _c, BT_Node _p, NodeEvent _e) 10 | { 11 | nodeEvent = _e; 12 | children = new List(); 13 | children.Add(_c); 14 | parent = _p; 15 | } 16 | void Do() 17 | { 18 | nodeEvent.Invoke(); 19 | } 20 | override public ResultContainer Next() 21 | { 22 | Do(); 23 | if (children != null && children.Count > 0 && children[0] != null) 24 | { 25 | return children[0].Next(); 26 | } 27 | return new ResultContainer(BT_Result.SUCCESS); 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /Script/BehaviourTree/BT_Execute.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c03ccbede4ccbab4aabd2c85b9fc6c38 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Script/BehaviourTree/BT_Failure.cs: -------------------------------------------------------------------------------- 1 | namespace BT 2 | { 3 | public class BT_Failure : BT_Node 4 | { 5 | public BT_Failure() : base() { } 6 | 7 | public override ResultContainer Next() 8 | { 9 | if (children != null && children.Count > 0) 10 | { 11 | children[0].Next(); 12 | } 13 | return new ResultContainer(BT_Result.FAILURE); 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Script/BehaviourTree/BT_Failure.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 10341a0e8ee57f544a941d752cdbdd0b 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Script/BehaviourTree/BT_If.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | namespace BT 4 | { 5 | public delegate bool IfEvent(); 6 | public class BT_If : BT_Node 7 | { 8 | 9 | public BT_If() : base() { } 10 | public BT_If(BT_Node _c, BT_Node _p, IfEvent _e) 11 | { 12 | children = new List(); 13 | children.Add(_c); 14 | parent = _p; 15 | condition = _e; 16 | } 17 | 18 | 19 | override public ResultContainer Next() 20 | { 21 | if (children != null && children.Count > 0 && children[0] != null) 22 | { 23 | if (condition.Invoke()) 24 | { 25 | return children[0].Next(); 26 | } 27 | else 28 | { 29 | return new ResultContainer(BT_Result.FAILURE); 30 | } 31 | } 32 | return new ResultContainer(BT_Result.FAILURE); 33 | } 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /Script/BehaviourTree/BT_If.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 30f6fe79cb3536f48b027199fd745fa5 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Script/BehaviourTree/BT_Interrupt.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | 5 | namespace BT 6 | { 7 | public class BT_Interrupt : BT_Node 8 | { 9 | public BT_Interrupt() : base() { } 10 | 11 | public override ResultContainer Next() 12 | { 13 | if (children != null && children.Count > 0) 14 | { 15 | if (children[0] != null) 16 | { 17 | return children[0].Next(); 18 | } 19 | } 20 | return new ResultContainer(BT_Result.FAILURE); 21 | } 22 | 23 | public bool IsInterrupt() 24 | { 25 | return condition.Invoke(); 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /Script/BehaviourTree/BT_Interrupt.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: df3ae79c37dc2c746b23369a220262be 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Script/BehaviourTree/BT_Node.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | namespace BT 4 | { 5 | public enum BT_Result 6 | { 7 | SUCCESS, 8 | FAILURE, 9 | CONTINUE 10 | } 11 | 12 | public struct ResultContainer 13 | { 14 | Queue nextStartNodesQueue; 15 | public Queue NextStartNodesQueue 16 | { 17 | get 18 | { 19 | return nextStartNodesQueue; 20 | } 21 | } 22 | BT_Result result; 23 | public BT_Result Result { 24 | get { 25 | return result; 26 | } 27 | } 28 | public ResultContainer(BT_Result _r) 29 | { 30 | nextStartNodesQueue = new Queue(); 31 | result = _r; 32 | } 33 | } 34 | public class BT_Node 35 | { 36 | 37 | protected List children; 38 | protected BT_Node parent; 39 | protected NodeEvent nodeEvent; 40 | protected IfEvent condition; 41 | public BT_Node() 42 | { 43 | children = new List(); 44 | parent = null; 45 | } 46 | 47 | virtual public ResultContainer Next() 48 | { 49 | return new ResultContainer(BT_Result.SUCCESS); 50 | } 51 | 52 | virtual public void AddChild(BT_Node c) 53 | { 54 | if (children == null) 55 | { 56 | children = new List(); 57 | } 58 | children.Add(c); 59 | } 60 | 61 | virtual public void AddEvent(NodeEvent _e) 62 | { 63 | nodeEvent = _e; 64 | } 65 | 66 | virtual public void SetCondition(IfEvent _e) 67 | { 68 | condition = _e; 69 | } 70 | } 71 | } 72 | -------------------------------------------------------------------------------- /Script/BehaviourTree/BT_Node.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 8eb89174a66bcdc43af4b8c0ec7ddab9 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Script/BehaviourTree/BT_Root.cs: -------------------------------------------------------------------------------- 1 | namespace BT 2 | { 3 | public class BT_Root : BT_Node 4 | { 5 | public BT_Root() : base() { } 6 | override public ResultContainer Next() 7 | { 8 | if (children != null && children.Count > 0) 9 | { 10 | if (children[0] != null) 11 | { 12 | return children[0].Next(); 13 | } 14 | } 15 | return new ResultContainer(BT_Result.FAILURE); 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Script/BehaviourTree/BT_Root.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 87706c3870193ec4b9ec724abcc6fe54 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Script/BehaviourTree/BT_Selector.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | namespace BT 4 | { 5 | public class BT_Selector : BT_Node 6 | { 7 | 8 | public BT_Selector() : base() { } 9 | public BT_Selector(List cList, BT_Node _p) 10 | { 11 | children = cList; 12 | parent = _p; 13 | } 14 | 15 | override public ResultContainer Next() 16 | { 17 | if (children != null && children.Count > 0) 18 | { 19 | for (int i = 0; i < children.Count; i++) 20 | { 21 | ResultContainer result = children[i].Next(); 22 | if (result.Result == BT_Result.SUCCESS || result.Result == BT_Result.CONTINUE) 23 | { 24 | return result; 25 | } 26 | } 27 | return new ResultContainer(BT_Result.FAILURE); 28 | } 29 | return new ResultContainer(BT_Result.FAILURE); 30 | } 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /Script/BehaviourTree/BT_Selector.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: cae5eb066a301284faf71a5ac53cfeb4 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Script/BehaviourTree/BT_Sequence.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | namespace BT 4 | { 5 | public class BT_Sequence : BT_Node 6 | { 7 | int currentIndex; 8 | public BT_Sequence() : base() { } 9 | public BT_Sequence(List cList, BT_Node parent) 10 | { 11 | children = cList; 12 | currentIndex = 0; 13 | } 14 | 15 | override public ResultContainer Next() 16 | { 17 | if (children != null && children.Count > 0) 18 | { 19 | ResultContainer result = children[currentIndex].Next(); 20 | if (result.Result == BT_Result.SUCCESS || result.Result == BT_Result.CONTINUE) 21 | { 22 | currentIndex++; 23 | if (currentIndex >= children.Count) 24 | { 25 | currentIndex = 0; 26 | } 27 | } 28 | /*else if (result.Result == BT_Result.FAILURE) 29 | { 30 | currentIndex = 0; 31 | }*/ 32 | 33 | return result; 34 | } 35 | return new ResultContainer(BT_Result.SUCCESS); 36 | } 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /Script/BehaviourTree/BT_Sequence.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ee5a00f89a547d54b87b9823f660f282 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Script/BehaviourTree/BT_Success.cs: -------------------------------------------------------------------------------- 1 | namespace BT 2 | { 3 | public class BT_Success : BT_Node 4 | { 5 | public BT_Success() : base() { } 6 | 7 | public override ResultContainer Next() 8 | { 9 | if (children != null && children.Count > 0) 10 | { 11 | children[0].Next(); 12 | } 13 | return new ResultContainer(BT_Result.SUCCESS); 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Script/BehaviourTree/BT_Success.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 577682ab2f4903c40a8d23e4d52af5e7 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Script/BehaviourTree/BT_Timing.cs: -------------------------------------------------------------------------------- 1 |  2 | namespace BT 3 | { 4 | public delegate Timing TimingCreate(); 5 | public class BT_Timing : BT_Node 6 | { 7 | public BT_Timing(BehaviourTree _tree, bool _isOverwrite, bool _isMultiple, string _name) : base() 8 | { 9 | tree = _tree; 10 | isOverwrite = _isOverwrite; 11 | isMultiple = _isMultiple; 12 | name = _name; 13 | } 14 | 15 | protected BehaviourTree tree; 16 | protected bool isOverwrite; 17 | protected bool isMultiple; 18 | protected string name; 19 | public Timing lastInstance; 20 | protected TimingCreate timingCreator; 21 | 22 | public override ResultContainer Next() 23 | { 24 | if (tree != null) 25 | { 26 | if (lastInstance == null || lastInstance.IsActivated || isMultiple) 27 | { 28 | lastInstance = CreateNewTiming(); 29 | lastInstance.Name = name; 30 | lastInstance.Init(); 31 | tree.AddTiming(lastInstance); 32 | } 33 | else 34 | { 35 | if (isOverwrite) 36 | { 37 | lastInstance.Init(); 38 | } 39 | } 40 | } 41 | if (children != null && children.Count > 0 && children[0] != null) 42 | { 43 | ResultContainer result = children[0].Next(); 44 | return result; 45 | } 46 | return base.Next(); 47 | } 48 | 49 | public void SetTimingCreator(TimingCreate creator) 50 | { 51 | timingCreator = creator; 52 | } 53 | 54 | virtual protected Timing CreateNewTiming() 55 | { 56 | if (timingCreator != null) 57 | { 58 | return timingCreator.Invoke(); 59 | } 60 | else 61 | { 62 | return new Timing(null); 63 | } 64 | } 65 | } 66 | 67 | public class Timing 68 | { 69 | protected BT_Node target; 70 | bool isActivated; 71 | protected string name; 72 | public string Name 73 | { 74 | get 75 | { 76 | return name; 77 | } 78 | set 79 | { 80 | name = value; 81 | } 82 | } 83 | public bool IsActivated { 84 | get { 85 | return isActivated; 86 | } 87 | } 88 | public Timing(BT_Node node) 89 | { 90 | target = node; 91 | isActivated = false; 92 | } 93 | virtual public void Init() 94 | { 95 | 96 | } 97 | 98 | virtual public bool Check() 99 | { 100 | return true; 101 | } 102 | 103 | virtual public ResultContainer Next() 104 | { 105 | isActivated = true; 106 | if (target != null) 107 | { 108 | return target.Next(); 109 | } 110 | return new ResultContainer(BT_Result.SUCCESS); 111 | } 112 | } 113 | } -------------------------------------------------------------------------------- /Script/BehaviourTree/BT_Timing.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 05e989e8ea8eccf48a203366d7273d6e 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Script/BehaviourTree/BT_While.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | namespace BT 3 | { 4 | public class BT_While : BT_Node 5 | { 6 | public BT_While() : base() { } 7 | public BT_While(BT_Node _c, BT_Node _p, IfEvent _e) 8 | { 9 | children = new List(); 10 | children.Add(_c); 11 | parent = _p; 12 | condition = _e; 13 | } 14 | 15 | 16 | override public ResultContainer Next() 17 | { 18 | if (condition != null) 19 | { 20 | if (condition.Invoke()) 21 | { 22 | ResultContainer result = new ResultContainer(BT_Result.CONTINUE); 23 | if (children != null && children.Count > 0) 24 | { 25 | ResultContainer childResult = children[0].Next(); 26 | if (childResult.Result == BT_Result.CONTINUE) 27 | { 28 | result = childResult; 29 | } 30 | } 31 | result.NextStartNodesQueue.Enqueue(this); 32 | return result; 33 | } 34 | else 35 | { 36 | return new ResultContainer(BT_Result.FAILURE); 37 | } 38 | } 39 | return new ResultContainer(BT_Result.SUCCESS); 40 | } 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /Script/BehaviourTree/BT_While.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 0fb0931ecfd023f47b8b77e9632edef2 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Script/BehaviourTree/BehaviourTree.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9825c0fc2233dc54ab86eafb43d8d579 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Script/BehaviourTree/BehaviourTreeComponent.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using System; 3 | using BT; 4 | 5 | public class BehaviourTreeComponent : MonoBehaviour 6 | { 7 | public BehaviourTree behaviourTree; 8 | public bool isActive = true; 9 | void Start() 10 | { 11 | MakeTree(); 12 | } 13 | 14 | public void Tick(){ 15 | if(behaviourTree != null && isActive){ 16 | behaviourTree.Tick(); 17 | } 18 | } 19 | 20 | virtual public void MakeTree(){ 21 | 22 | } 23 | 24 | protected IfEvent UnityEvent2IfEvent(UnityEngine.Events.UnityEvent e){ 25 | object target = e.GetPersistentTarget(0); 26 | Type t = target.GetType(); 27 | System.Reflection.MethodInfo mi = t.GetMethod(e.GetPersistentMethodName(0)); 28 | IfEvent ie = ()=>{ 29 | object o = mi.Invoke(target, new object[]{}); 30 | return (bool)o; 31 | }; 32 | 33 | return ie; 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /Script/BehaviourTree/BehaviourTreeComponent.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5d66c963695d51140b4730b783353000 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Script/BehaviourTree/Compilers.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f38bc502bfcf3fa4183738a3815644cd 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Script/BehaviourTree/Compilers/BehaviourTreeCompiler.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &11400000 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 11500000, guid: e6854efdef2e15c488ec3613bf7d7acc, type: 3} 13 | m_Name: BehaviourTreeCompiler 14 | m_EditorClassIdentifier: 15 | codeTemplatePath: UnityEditorTreeGraph/Script/BehaviourTree/DefaultTemplates 16 | -------------------------------------------------------------------------------- /Script/BehaviourTree/Compilers/BehaviourTreeCompiler.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: fa95bce83f358c54386564c95fb654da 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Script/BehaviourTree/Compilers/BehaviourTreeCompiler.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using XNode; 3 | using UnityEngine; 4 | using System.IO; 5 | using System.Linq; 6 | 7 | [CreateAssetMenu(fileName = "BehaviourTreeCompiler", 8 | menuName = "Compilers/BehaviourTreeCompiler")] 9 | public class BehaviourTreeCompiler : EditorTreeCompiler 10 | { 11 | protected string inheritedClass = "BehaviourTreeComponent"; 12 | override public void Compile(string fileName, List nodes, string inheritTarget = "") 13 | { 14 | Debug.Log("Start Compile"); 15 | if (string.IsNullOrEmpty(inheritTarget)) 16 | { 17 | inheritTarget = inheritedClass; 18 | } 19 | 20 | 21 | CodeTemplateReader.Init(Path.Combine(Application.dataPath, codeTemplatePath)); 22 | string classTemplate = CodeTemplateReader.GetTemplate("Base", "Class"); 23 | 24 | string className = FileNameToClassName(fileName); 25 | string inheritName = FileNameToClassName(inheritTarget); 26 | 27 | string declareParameters = ""; 28 | declareParameters = BehaviourTreeCompilerCommon.GetDeclareParameters(nodes); 29 | 30 | string constructedTree = ""; 31 | constructedTree = BehaviourTreeCompilerCommon.GetConstructedTree(nodes); 32 | 33 | 34 | //string code = string.Format(template, className, inheritName, declareParameters, constructTree); 35 | CodeTemplateParameterHolder templateParameter = new CodeTemplateParameterHolder(); 36 | templateParameter.SetParameter("className", className); 37 | templateParameter.SetParameter("inheritName", inheritName); 38 | templateParameter.SetParameter("declareParameters", declareParameters); 39 | templateParameter.SetParameter("constructTree", constructedTree); 40 | string code = CodeTemplateInterpolator.Interpolate(classTemplate, templateParameter); 41 | 42 | BehaviourTreeCompilerCommon.SaveCode(className, code); 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /Script/BehaviourTree/Compilers/BehaviourTreeCompiler.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e6854efdef2e15c488ec3613bf7d7acc 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Script/BehaviourTree/Compilers/BehaviourTreeCompilerCommon.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2512485edf05f4e479ec7c771f19bf35 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Script/BehaviourTree/Compilers/BehaviourTreeTestCodeCompiler.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &11400000 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 11500000, guid: bb30ab7f7932d834293f66c4ba15b79a, type: 3} 13 | m_Name: BehaviourTreeTestCodeCompiler 14 | m_EditorClassIdentifier: 15 | codeTemplatePath: UnityEditorTreeGraph/Script/BehaviourTree/DefaultTemplates/TestCode 16 | -------------------------------------------------------------------------------- /Script/BehaviourTree/Compilers/BehaviourTreeTestCodeCompiler.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b84bb0fb88e9bbd4da3eac2c0b55126e 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Script/BehaviourTree/Compilers/BehaviourTreeTestCodeCompiler.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: bb30ab7f7932d834293f66c4ba15b79a 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Script/BehaviourTree/Compilers/TestCodeCompiler.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | using XNode; 5 | 6 | public class TestCodeCompiler : ScriptableObject 7 | { 8 | public string codeTemplatePath; 9 | virtual public void Compile(string fileName, List nodes) 10 | { 11 | 12 | } 13 | public string FileNameToClassName(string fileName) 14 | { 15 | return fileName.Replace(" ", "_"); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Script/BehaviourTree/Compilers/TestCodeCompiler.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 8a2e9683f23c7cf4cbcf15d6d544f5cd 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Script/BehaviourTree/DefaultTemplates.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 6c6110911a59b6745ab1e4a872048b0a 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Script/BehaviourTree/DefaultTemplates/ClassTemplate.txt: -------------------------------------------------------------------------------- 1 | using BT; 2 | public class {{className}} : {{inheritName}} 3 | { 4 | {{declareParameters}} 5 | 6 | override public void MakeTree() 7 | { 8 | base.MakeTree(); 9 | {{constructTree}} 10 | } 11 | } -------------------------------------------------------------------------------- /Script/BehaviourTree/DefaultTemplates/ClassTemplate.txt.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7d2dd21723c971a45bc61731d4b3157f 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Script/BehaviourTree/DefaultTemplates/CodeTemplateTable.json: -------------------------------------------------------------------------------- 1 | { 2 | "CodeTemplatePaths":[ 3 | {"Key":"Declare", "Value":[ 4 | 5 | {"Key":"Bool","Value":"Declare/Bool.txt"}, 6 | {"Key":"Event","Value":"Declare/Event.txt"}, 7 | {"Key":"Execute", "Value":"Declare/Execute.txt"}, 8 | {"Key":"Failure", "Value":"Declare/Failure.txt"}, 9 | {"Key":"Float", "Value":"Declare/Float.txt"}, 10 | {"Key":"FrameCounter", "Value":"Declare/FrameCounter.txt"}, 11 | {"Key":"If", "Value":"Declare/If.txt"}, 12 | {"Key":"Int", "Value":"Declare/Int.txt"}, 13 | {"Key":"Interrupt", "Value":"Declare/Interrupt.txt"}, 14 | {"Key":"Root", "Value":"Declare/Root.txt"}, 15 | {"Key":"Selector", "Value":"Declare/Selector.txt"}, 16 | {"Key":"Sequence", "Value":"Declare/Sequence.txt"}, 17 | {"Key":"SetParameter", "Value":"Declare/SetParameter.txt"}, 18 | {"Key":"Success", "Value":"Declare/Success.txt"}, 19 | {"Key":"Timer", "Value":"Declare/Timer.txt"}, 20 | {"Key":"While", "Value":"Declare/While.txt"}, 21 | {"Key":"NextSequence", "Value":"Declare/NextSequence.txt"}, 22 | {"Key":"Cancel", "Value":"Declare/Cancel.txt"} 23 | ]}, 24 | 25 | {"Key":"Init","Value":[ 26 | 27 | {"Key":"Bool","Value":"Init/Bool.txt"}, 28 | {"Key":"Event","Value":"Init/Event.txt"}, 29 | {"Key":"Execute", "Value":"Init/Execute.txt"}, 30 | {"Key":"Failure", "Value":"Init/Failure.txt"}, 31 | {"Key":"Float", "Value":"Init/Float.txt"}, 32 | {"Key":"FrameCounter", "Value":"Init/FrameCounter.txt"}, 33 | {"Key":"If", "Value":"Init/If.txt"}, 34 | {"Key":"Int", "Value":"Init/Int.txt"}, 35 | {"Key":"Interrupt", "Value":"Init/Interrupt.txt"}, 36 | {"Key":"Root", "Value":"Init/Root.txt"}, 37 | {"Key":"Selector", "Value":"Init/Selector.txt"}, 38 | {"Key":"Sequence", "Value":"Init/Sequence.txt"}, 39 | {"Key":"SetParameter", "Value":"Init/SetParameter.txt"}, 40 | {"Key":"Success", "Value":"Init/Success.txt"}, 41 | {"Key":"Timer", "Value":"Init/Timer.txt"}, 42 | {"Key":"While", "Value":"Init/While.txt"}, 43 | {"Key":"NextSequence", "Value":"Init/NextSequence.txt"}, 44 | {"Key":"Cancel", "Value":"Init/Cancel.txt"} 45 | ]}, 46 | 47 | {"Key":"Base", "Value":[ 48 | 49 | {"Key":"Class","Value":"ClassTemplate.txt"} 50 | 51 | ]} 52 | ] 53 | } -------------------------------------------------------------------------------- /Script/BehaviourTree/DefaultTemplates/CodeTemplateTable.json.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 613074cf2a87c4842ba4c792d47a350c 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Script/BehaviourTree/DefaultTemplates/Declare.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 65660d2615f21424b8343e757eb273c1 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Script/BehaviourTree/DefaultTemplates/Declare/Bool.txt: -------------------------------------------------------------------------------- 1 | [UnityEngine.SerializeField] 2 | public bool {{name}} = {{value}}; -------------------------------------------------------------------------------- /Script/BehaviourTree/DefaultTemplates/Declare/Bool.txt.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ab11b7d3e6ca6de488842fc495698363 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Script/BehaviourTree/DefaultTemplates/Declare/Cancel.txt: -------------------------------------------------------------------------------- 1 | BT_Execute {{name}} = new BT_Execute(); -------------------------------------------------------------------------------- /Script/BehaviourTree/DefaultTemplates/Declare/Cancel.txt.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 543f9957fd7ed4045a5a2224b7e74980 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Script/BehaviourTree/DefaultTemplates/Declare/Event.txt: -------------------------------------------------------------------------------- 1 | [UnityEngine.SerializeField] 2 | public UnityEngine.Events.UnityEvent {{name}} = new UnityEngine.Events.UnityEvent(); 3 | -------------------------------------------------------------------------------- /Script/BehaviourTree/DefaultTemplates/Declare/Event.txt.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 1e82444e7d638584b8116389271e8ae2 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Script/BehaviourTree/DefaultTemplates/Declare/Execute.txt: -------------------------------------------------------------------------------- 1 | BT_Execute {{name}} = new BT_Execute(); -------------------------------------------------------------------------------- /Script/BehaviourTree/DefaultTemplates/Declare/Execute.txt.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 1cab6f6f8af0df9408ab36f9142af9e9 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Script/BehaviourTree/DefaultTemplates/Declare/Failure.txt: -------------------------------------------------------------------------------- 1 | BT_Failure {{name}} = new BT_Failure(); -------------------------------------------------------------------------------- /Script/BehaviourTree/DefaultTemplates/Declare/Failure.txt.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 0c897951702696948b63f1a606452317 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Script/BehaviourTree/DefaultTemplates/Declare/Float.txt: -------------------------------------------------------------------------------- 1 | [UnityEngine.SerializeField] 2 | public float {{name}} = {{value}}; -------------------------------------------------------------------------------- /Script/BehaviourTree/DefaultTemplates/Declare/Float.txt.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 39a9f2f71cc1c044ebf9df1562828cac 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Script/BehaviourTree/DefaultTemplates/Declare/FrameCounter.txt: -------------------------------------------------------------------------------- 1 | BT_Timing {{name}} = new BT_Timing(behaviourTree, {{isOverwrite}}, {{isMultiple}}, "{{name}}"); -------------------------------------------------------------------------------- /Script/BehaviourTree/DefaultTemplates/Declare/FrameCounter.txt.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ca5b8de847e8ee24fa60465a9faec1f4 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Script/BehaviourTree/DefaultTemplates/Declare/If.txt: -------------------------------------------------------------------------------- 1 | BT_If {{name}} = new BT_If(); -------------------------------------------------------------------------------- /Script/BehaviourTree/DefaultTemplates/Declare/If.txt.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 18d5ddac1d5ec4442962a2c54aefeae0 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Script/BehaviourTree/DefaultTemplates/Declare/Int.txt: -------------------------------------------------------------------------------- 1 | [UnityEngine.SerializeField] 2 | int {{name}} = {{value}}; -------------------------------------------------------------------------------- /Script/BehaviourTree/DefaultTemplates/Declare/Int.txt.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2615dfd67180bd14dadbff568f8ad77a 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Script/BehaviourTree/DefaultTemplates/Declare/Interrupt.txt: -------------------------------------------------------------------------------- 1 | BT_Interrupt {{name}} = new BT_Interrupt(); -------------------------------------------------------------------------------- /Script/BehaviourTree/DefaultTemplates/Declare/Interrupt.txt.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 1de0aeaec90037547a230ee69016cee1 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Script/BehaviourTree/DefaultTemplates/Declare/NextSequence.txt: -------------------------------------------------------------------------------- 1 | BT_Success {{name}} = new BT_Success(); -------------------------------------------------------------------------------- /Script/BehaviourTree/DefaultTemplates/Declare/NextSequence.txt.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e1c4953de2fdfc8459ff7503af2c2b39 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Script/BehaviourTree/DefaultTemplates/Declare/Root.txt: -------------------------------------------------------------------------------- 1 | BT_Root {{name}} = new BT_Root(); -------------------------------------------------------------------------------- /Script/BehaviourTree/DefaultTemplates/Declare/Root.txt.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ead67dd744b4d554fa7b98fef26c8d9b 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Script/BehaviourTree/DefaultTemplates/Declare/Selector.txt: -------------------------------------------------------------------------------- 1 | BT_Selector {{name}} = new BT_Selector(); -------------------------------------------------------------------------------- /Script/BehaviourTree/DefaultTemplates/Declare/Selector.txt.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a3dd46f44b494b0418a64dd3576211f1 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Script/BehaviourTree/DefaultTemplates/Declare/Sequence.txt: -------------------------------------------------------------------------------- 1 | BT_Sequence {{name}} = new BT_Sequence(); -------------------------------------------------------------------------------- /Script/BehaviourTree/DefaultTemplates/Declare/Sequence.txt.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 672593b6e7ade824288d3ec3c50a69fa 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Script/BehaviourTree/DefaultTemplates/Declare/SetParameter.txt: -------------------------------------------------------------------------------- 1 | BT_Execute {{name}} = new BT_Execute(); -------------------------------------------------------------------------------- /Script/BehaviourTree/DefaultTemplates/Declare/SetParameter.txt.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7a6452701082e4048b98650e16fcb9eb 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Script/BehaviourTree/DefaultTemplates/Declare/Success.txt: -------------------------------------------------------------------------------- 1 | BT_Success {{name}} = new BT_Success(); -------------------------------------------------------------------------------- /Script/BehaviourTree/DefaultTemplates/Declare/Success.txt.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9a57e9f92000ebe4fa8d933c00faf98e 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Script/BehaviourTree/DefaultTemplates/Declare/Timer.txt: -------------------------------------------------------------------------------- 1 | BT_Timing {{name}} = new BT_Timing(behaviourTree, {{isOverwrite}}, {{isMultiple}}, "{{name}}"); -------------------------------------------------------------------------------- /Script/BehaviourTree/DefaultTemplates/Declare/Timer.txt.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 125094a77db8c234f921faa481915416 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Script/BehaviourTree/DefaultTemplates/Declare/While.txt: -------------------------------------------------------------------------------- 1 | BT_While {{name}} = new BT_While(); -------------------------------------------------------------------------------- /Script/BehaviourTree/DefaultTemplates/Declare/While.txt.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 476af2a922b728249b97320e97c4c835 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Script/BehaviourTree/DefaultTemplates/Init.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ce847367219c3934cafd172e6751f15b 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Script/BehaviourTree/DefaultTemplates/Init/Bool.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dumble009/UnityEditorTreeGraph/85cfcf5d381a0cddd58b87701b5f585edf2646b8/Script/BehaviourTree/DefaultTemplates/Init/Bool.txt -------------------------------------------------------------------------------- /Script/BehaviourTree/DefaultTemplates/Init/Bool.txt.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 90586940d8019274e9639687bc4a2801 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Script/BehaviourTree/DefaultTemplates/Init/Cancel.txt: -------------------------------------------------------------------------------- 1 | {{name}}.AddEvent(()=>{ 2 | behaviourTree.CancelTiming({{isAllCancel}}, {{cancelTarget}}); 3 | }); -------------------------------------------------------------------------------- /Script/BehaviourTree/DefaultTemplates/Init/Cancel.txt.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 291013daed924ae41b0188cc0816d0b3 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Script/BehaviourTree/DefaultTemplates/Init/Event.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dumble009/UnityEditorTreeGraph/85cfcf5d381a0cddd58b87701b5f585edf2646b8/Script/BehaviourTree/DefaultTemplates/Init/Event.txt -------------------------------------------------------------------------------- /Script/BehaviourTree/DefaultTemplates/Init/Event.txt.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 021f87ab77eb60e4b81444eee1526560 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Script/BehaviourTree/DefaultTemplates/Init/Execute.txt: -------------------------------------------------------------------------------- 1 | {{name}}.AddEvent(()=>{ 2 | {{eventName}}.Invoke(); 3 | }); -------------------------------------------------------------------------------- /Script/BehaviourTree/DefaultTemplates/Init/Execute.txt.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 3c6b642e70e3c7146aa2d4c40b9b3e4e 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Script/BehaviourTree/DefaultTemplates/Init/Failure.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dumble009/UnityEditorTreeGraph/85cfcf5d381a0cddd58b87701b5f585edf2646b8/Script/BehaviourTree/DefaultTemplates/Init/Failure.txt -------------------------------------------------------------------------------- /Script/BehaviourTree/DefaultTemplates/Init/Failure.txt.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c44e0bfb6771115498f7e92d4f0747a6 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Script/BehaviourTree/DefaultTemplates/Init/Float.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dumble009/UnityEditorTreeGraph/85cfcf5d381a0cddd58b87701b5f585edf2646b8/Script/BehaviourTree/DefaultTemplates/Init/Float.txt -------------------------------------------------------------------------------- /Script/BehaviourTree/DefaultTemplates/Init/Float.txt.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a3a1587222e72d04895d99d696a4a6d6 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Script/BehaviourTree/DefaultTemplates/Init/FrameCounter.txt: -------------------------------------------------------------------------------- 1 | {{name}}.SetTimingCreator(()=>{ 2 | return new FrameCounter({{targetNode}}, {{waitFrame}}); 3 | }); -------------------------------------------------------------------------------- /Script/BehaviourTree/DefaultTemplates/Init/FrameCounter.txt.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 8cbc2e269729c5347a4e9cb2ff81a88f 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Script/BehaviourTree/DefaultTemplates/Init/If.txt: -------------------------------------------------------------------------------- 1 | {{name}}.SetCondition(()=>{ 2 | return {{condition}}; 3 | }); -------------------------------------------------------------------------------- /Script/BehaviourTree/DefaultTemplates/Init/If.txt.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: bc2cc838479cf1843ad09a2e105e3472 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Script/BehaviourTree/DefaultTemplates/Init/Int.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dumble009/UnityEditorTreeGraph/85cfcf5d381a0cddd58b87701b5f585edf2646b8/Script/BehaviourTree/DefaultTemplates/Init/Int.txt -------------------------------------------------------------------------------- /Script/BehaviourTree/DefaultTemplates/Init/Int.txt.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 65c5ba78125fa624091c5e8563232773 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Script/BehaviourTree/DefaultTemplates/Init/Interrupt.txt: -------------------------------------------------------------------------------- 1 | {{name}}.SetCondition(()=>{ 2 | return {{condition}}; 3 | }); 4 | behaviourTree.AddInterrupt({{name}}); -------------------------------------------------------------------------------- /Script/BehaviourTree/DefaultTemplates/Init/Interrupt.txt.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 76790bd3e9c96c04ba46cd8758cc2d66 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Script/BehaviourTree/DefaultTemplates/Init/NextSequence.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dumble009/UnityEditorTreeGraph/85cfcf5d381a0cddd58b87701b5f585edf2646b8/Script/BehaviourTree/DefaultTemplates/Init/NextSequence.txt -------------------------------------------------------------------------------- /Script/BehaviourTree/DefaultTemplates/Init/NextSequence.txt.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 609a64f4627a1594ab5b6cfe7cc54f43 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Script/BehaviourTree/DefaultTemplates/Init/Root.txt: -------------------------------------------------------------------------------- 1 | behaviourTree = new BehaviourTree({{name}}); -------------------------------------------------------------------------------- /Script/BehaviourTree/DefaultTemplates/Init/Root.txt.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 8bead1a989d2625449d0999b609d943f 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Script/BehaviourTree/DefaultTemplates/Init/Selector.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dumble009/UnityEditorTreeGraph/85cfcf5d381a0cddd58b87701b5f585edf2646b8/Script/BehaviourTree/DefaultTemplates/Init/Selector.txt -------------------------------------------------------------------------------- /Script/BehaviourTree/DefaultTemplates/Init/Selector.txt.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 395ad6d0c44ccc64d8e2e50f460091a7 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Script/BehaviourTree/DefaultTemplates/Init/Sequence.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dumble009/UnityEditorTreeGraph/85cfcf5d381a0cddd58b87701b5f585edf2646b8/Script/BehaviourTree/DefaultTemplates/Init/Sequence.txt -------------------------------------------------------------------------------- /Script/BehaviourTree/DefaultTemplates/Init/Sequence.txt.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 47aa100b649cc1d42aae50a5d4587922 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Script/BehaviourTree/DefaultTemplates/Init/SetParameter.txt: -------------------------------------------------------------------------------- 1 | {{name}}.AddEvent(()=>{ 2 | {{parameterName}} = {{value}}; 3 | }); -------------------------------------------------------------------------------- /Script/BehaviourTree/DefaultTemplates/Init/SetParameter.txt.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c423f7bddd697774fa7930216768e562 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Script/BehaviourTree/DefaultTemplates/Init/Success.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dumble009/UnityEditorTreeGraph/85cfcf5d381a0cddd58b87701b5f585edf2646b8/Script/BehaviourTree/DefaultTemplates/Init/Success.txt -------------------------------------------------------------------------------- /Script/BehaviourTree/DefaultTemplates/Init/Success.txt.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 375db0adcb2db474da71c4fc76fe376e 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Script/BehaviourTree/DefaultTemplates/Init/Timer.txt: -------------------------------------------------------------------------------- 1 | {{name}}.SetTimingCreator(()=>{ 2 | return new Timer({{targetNode}}, {{waitTime}}); 3 | }); -------------------------------------------------------------------------------- /Script/BehaviourTree/DefaultTemplates/Init/Timer.txt.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7a6d2beaaef27194aaa426e104ec3aee 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Script/BehaviourTree/DefaultTemplates/Init/While.txt: -------------------------------------------------------------------------------- 1 | {{name}}.SetCondition(()=>{ 2 | return {{condition}}; 3 | }); -------------------------------------------------------------------------------- /Script/BehaviourTree/DefaultTemplates/Init/While.txt.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 1deac70cfec0c8d4484964234328e63d 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Script/BehaviourTree/DefaultTemplates/TestCode.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9dc1c9f0c25a92347b564b8364ec5633 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Script/BehaviourTree/DefaultTemplates/TestCode/CallValidationTemplate.txt: -------------------------------------------------------------------------------- 1 | Assert.AreEqual(true, calledFlag["{{targetNodeName}}"]); 2 | -------------------------------------------------------------------------------- /Script/BehaviourTree/DefaultTemplates/TestCode/CallValidationTemplate.txt.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 970dd51d0e487cb4db1cb919ee54f73c 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Script/BehaviourTree/DefaultTemplates/TestCode/ClassTemplate.txt: -------------------------------------------------------------------------------- 1 | using BT; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using NUnit.Framework; 5 | using UnityEngine; 6 | using UnityEngine.TestTools; 7 | 8 | public class {{className}} 9 | { 10 | BehaviourTree behaviourTree; 11 | Dictionary calledFlag; 12 | {{declareParameters}} 13 | 14 | void InitParameters() 15 | { 16 | {{initParameters}} 17 | } 18 | 19 | void ResetCalledFlag(){ 20 | var keys = calledFlag.Keys.ToArray(); 21 | foreach(var key in keys) 22 | { 23 | calledFlag[key] = false; 24 | } 25 | } 26 | 27 | [SetUp] 28 | public void Init() 29 | { 30 | {{constructTree}} 31 | 32 | calledFlag = new Dictionary(); 33 | {{initCalledFlag}} 34 | } 35 | 36 | {{testCases}} 37 | } -------------------------------------------------------------------------------- /Script/BehaviourTree/DefaultTemplates/TestCode/ClassTemplate.txt.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: bcd0c8bda9b89bd419b43790612e21ee 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Script/BehaviourTree/DefaultTemplates/TestCode/CodeTemplateTable.json.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b09584d536bef264181df55cc1b3c3d6 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Script/BehaviourTree/DefaultTemplates/TestCode/ExtraCondition.txt: -------------------------------------------------------------------------------- 1 | Assert.AreEqual(true, {{extraCondition}}); 2 | -------------------------------------------------------------------------------- /Script/BehaviourTree/DefaultTemplates/TestCode/ExtraCondition.txt.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 6e7c025ef400b6942a31759b9876e9a1 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Script/BehaviourTree/DefaultTemplates/TestCode/InitCalledFlag.txt: -------------------------------------------------------------------------------- 1 | calledFlag.Add("{{name}}", false); 2 | {{eventName}}.AddListener(()=>{ 3 | calledFlag["{{name}}"] = true; 4 | }); -------------------------------------------------------------------------------- /Script/BehaviourTree/DefaultTemplates/TestCode/InitCalledFlag.txt.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b5da3b9c2bbf2af45a30a71aba72ea59 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Script/BehaviourTree/DefaultTemplates/TestCode/InitParameter.txt: -------------------------------------------------------------------------------- 1 | {{name}} = {{value}}; 2 | -------------------------------------------------------------------------------- /Script/BehaviourTree/DefaultTemplates/TestCode/InitParameter.txt.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 074a21933f4531648bd0ab4f750f02ee 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Script/BehaviourTree/DefaultTemplates/TestCode/NotCallValidationTemplate.txt: -------------------------------------------------------------------------------- 1 | Assert.AreEqual(false, calledFlag["{{targetNodeName}}"]); 2 | -------------------------------------------------------------------------------- /Script/BehaviourTree/DefaultTemplates/TestCode/NotCallValidationTemplate.txt.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5304e67118317ca4da216c6d6c316b84 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Script/BehaviourTree/DefaultTemplates/TestCode/ResetCallFlagTemplate.txt: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /Script/BehaviourTree/DefaultTemplates/TestCode/ResetCallFlagTemplate.txt.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 24738c021e9501b41b98e354029123ef 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Script/BehaviourTree/DefaultTemplates/TestCode/ResetCalledFlagTemplate.txt: -------------------------------------------------------------------------------- 1 | ResetCalledFlag(); 2 | -------------------------------------------------------------------------------- /Script/BehaviourTree/DefaultTemplates/TestCode/ResetCalledFlagTemplate.txt.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 504ec4487b7965647beed03249e1e2f8 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Script/BehaviourTree/DefaultTemplates/TestCode/RunTreeTemplate.txt: -------------------------------------------------------------------------------- 1 | for(int __i__ = 0; __i__ < {{count}}; __i__++){ 2 | behaviourTree.Tick(); 3 | } 4 | -------------------------------------------------------------------------------- /Script/BehaviourTree/DefaultTemplates/TestCode/RunTreeTemplate.txt.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ef4869051a42f2d4abbd795a250a35cc 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Script/BehaviourTree/DefaultTemplates/TestCode/SetParameterTemplate.txt: -------------------------------------------------------------------------------- 1 | {{parameterName}} = {{value}}; 2 | -------------------------------------------------------------------------------- /Script/BehaviourTree/DefaultTemplates/TestCode/SetParameterTemplate.txt.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5f6c62af4fdf5324b9bd18edc6a5320e 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Script/BehaviourTree/DefaultTemplates/TestCode/TestFunctionTemplate.txt: -------------------------------------------------------------------------------- 1 | [Test] 2 | public void {{functionName}}() 3 | { 4 | InitParameters(); 5 | {{testProcess}} 6 | ResetCalledFlag(); 7 | } -------------------------------------------------------------------------------- /Script/BehaviourTree/DefaultTemplates/TestCode/TestFunctionTemplate.txt.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 902e0913b33957346861aa31edfe5305 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Script/BehaviourTree/DefaultTemplates/TestCode/WaitSecondsTemplate.txt: -------------------------------------------------------------------------------- 1 | System.Threading.Thread.Sleep((int)({{waitSecond}} * 1000)); 2 | -------------------------------------------------------------------------------- /Script/BehaviourTree/DefaultTemplates/TestCode/WaitSecondsTemplate.txt.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9cc8688f72693db479076aca53f0609f 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Script/BehaviourTree/FrameCounter.cs: -------------------------------------------------------------------------------- 1 | namespace BT 2 | { 3 | public class FrameCounter : Timing 4 | { 5 | public int waitCount; 6 | public uint currentFrameCount; 7 | 8 | public FrameCounter(BT_Node node, int _waitCount) : base(node) 9 | { 10 | currentFrameCount = 0; 11 | waitCount = _waitCount; 12 | } 13 | 14 | public override void Init() 15 | { 16 | currentFrameCount = 0; 17 | } 18 | 19 | public override bool Check() 20 | { 21 | currentFrameCount++; 22 | return currentFrameCount > waitCount; 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /Script/BehaviourTree/FrameCounter.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 704c72cf745e30c41845b19975853e29 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Script/BehaviourTree/Timer.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | namespace BT 3 | { 4 | public class Timer : Timing 5 | { 6 | double startTime; 7 | double waitTime; 8 | public Timer(BT_Node node, double _waitTime) : base(node) 9 | { 10 | startTime = 0; 11 | waitTime = _waitTime; 12 | } 13 | 14 | public override void Init() 15 | { 16 | base.Init(); 17 | DateTime now = DateTime.Now; 18 | startTime = now.Second + (now.Millisecond / 1000.0d); 19 | } 20 | 21 | public override bool Check() 22 | { 23 | DateTime now = DateTime.Now; 24 | double currentTime = now.Second + (now.Millisecond / 1000.0d); 25 | return currentTime - startTime >= waitTime; 26 | } 27 | } 28 | } -------------------------------------------------------------------------------- /Script/BehaviourTree/Timer.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 0cbd361977bb8a046b6454077cc5ef61 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Test.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e44781e9b5aa6374aba08e38690b88ca 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Test/Editor.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 1a3db13a401451949888c01ccbebed7c 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Test/Editor/BT_Test.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 87ce325404c14ac4b9f1a0eef4d5d7c4 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Test/Editor/BaseTree_Test.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 16ab41217047801408b0fb91684ac7b6 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Test/Editor/EnemyBehaviourTest.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5f4bb67118907dc46a5b42686c2593e6 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /TreeGraph.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 6b5f62d688e5d0e4ab33a6e1365ebfff 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /TreeGraph/CodeTemplateReader.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using System.IO; 3 | 4 | public class CodeTemplateReader 5 | { 6 | static public string dirName = ""; 7 | static JsonReader jsonReader; 8 | public static void Init(string codeTemplateTableDirName) 9 | { 10 | dirName = codeTemplateTableDirName; 11 | jsonReader = new JsonReader(Path.Combine(dirName, "CodeTemplateTable.json")); 12 | } 13 | 14 | public static string GetTemplate(string key1, string key2) 15 | { 16 | string template = ""; 17 | string fileName = jsonReader.GetTemplatePath(key1, key2); 18 | string path = Path.Combine(dirName, fileName); 19 | using (var str = new StreamReader(path)) 20 | { 21 | template = str.ReadToEnd(); 22 | } 23 | return template; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /TreeGraph/CodeTemplateReader.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 067e440442435244888691d6d48de6d9 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /TreeGraph/CodeTemplates.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 8e509a587642d804f83d4579f11b32be 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /TreeGraph/CodeTemplates/CodeTemplateInterpolator.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | public class CodeTemplateInterpolator 4 | { 5 | static public string Interpolate(string source, CodeTemplateParameterHolder parameterHolder) 6 | { 7 | char[] charSource = source.ToCharArray(); 8 | List buffer = new List(); 9 | int sourceLength = charSource.Length; 10 | List parameterNameBuffer = new List(); 11 | bool isParameterFound = false; 12 | for (int i = 0; i < sourceLength; i++) 13 | { 14 | if (!isParameterFound) 15 | { 16 | if (i <= sourceLength - 2) 17 | { 18 | if (charSource[i] == '{' && charSource[i + 1] == '{') 19 | { 20 | isParameterFound = true; 21 | parameterNameBuffer.Clear(); 22 | i++; 23 | } 24 | else 25 | { 26 | buffer.Add(charSource[i]); 27 | } 28 | } 29 | else 30 | { 31 | buffer.Add(charSource[i]); 32 | } 33 | } 34 | else 35 | { 36 | if (charSource[i] == '}' && charSource[i + 1] == '}') 37 | { 38 | string parameterName = new string(parameterNameBuffer.ToArray()); 39 | string parameterValue = parameterHolder.GetParameter(parameterName); 40 | 41 | char[] charParameterValue = parameterValue.ToCharArray(); 42 | int charParameterValueLength = charParameterValue.Length; 43 | for (int j = 0; j < charParameterValueLength; j++) 44 | { 45 | buffer.Add(charParameterValue[j]); 46 | } 47 | 48 | isParameterFound = false; 49 | i++; 50 | } 51 | else 52 | { 53 | parameterNameBuffer.Add(charSource[i]); 54 | } 55 | } 56 | } 57 | 58 | string ret = new string(buffer.ToArray()); 59 | 60 | return ret; 61 | } 62 | } 63 | 64 | public class CodeTemplateParameterHolder 65 | { 66 | Dictionary parameterDict; 67 | public CodeTemplateParameterHolder() { 68 | parameterDict = new Dictionary(); 69 | } 70 | 71 | public void SetParameter(string name, string value) 72 | { 73 | if (parameterDict.ContainsKey(name)) 74 | { 75 | parameterDict[name] = value; 76 | } 77 | else 78 | { 79 | parameterDict.Add(name, value); 80 | } 81 | } 82 | 83 | public string GetParameter(string name) 84 | { 85 | if (!parameterDict.ContainsKey(name)) 86 | { 87 | UnityEngine.Debug.LogError("CodeInterpolateError: Parameter name \"" + name + "\" doesn't exist."); 88 | } 89 | return parameterDict[name]; 90 | } 91 | } 92 | -------------------------------------------------------------------------------- /TreeGraph/CodeTemplates/CodeTemplateInterpolator.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 1ccf06c57bd1f0e42ac95b093affd082 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /TreeGraph/Editor.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5296604a94f3b124480755590fbac8d9 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /TreeGraph/Editor/CustomAttributeDrawer.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using UnityEditor; 3 | using UnityEngine.UIElements; 4 | 5 | [CustomPropertyDrawer(typeof(NonEditableAttribute))] 6 | public class NonEditableDrawer : PropertyDrawer 7 | { 8 | public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) 9 | { 10 | GUI.enabled = false; 11 | EditorGUI.PropertyField(position, property, true); 12 | GUI.enabled = true; 13 | } 14 | } 15 | 16 | [CustomPropertyDrawer(typeof(HideAttribute))] 17 | public class HideDrawer : PropertyDrawer 18 | { 19 | public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) 20 | { 21 | 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /TreeGraph/Editor/CustomAttributeDrawer.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 57932ebed13a9134e81336acbdcf1ef7 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /TreeGraph/Editor/EditorTreeGraphEditor.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 73d7872f02a9a784e8e2c48fa90a5f3d 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /TreeGraph/Editor/EditorTreeGraphSettings.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using UnityEditor; 3 | using System.IO; 4 | using System; 5 | [CreateAssetMenu(fileName = "EditorTreeGraphSettings", 6 | menuName = "EditorTreeGraphSettings", 7 | order = 0)] 8 | public class EditorTreeGraphSettings : ScriptableObject 9 | { 10 | static EditorTreeGraphSettings instance; 11 | static public EditorTreeGraphSettings Instance { 12 | get { 13 | if (instance == null) 14 | { 15 | string[] files = Directory.GetFiles(Application.dataPath, "EditorTreeGraphSettings.asset", SearchOption.AllDirectories); 16 | if (files.Length > 0) 17 | { 18 | files[0] = files[0].Replace('\\', '/'); 19 | Uri abs = new Uri(files[0]); 20 | Uri bas = new Uri(Application.dataPath); 21 | Uri rel = bas.MakeRelativeUri(abs); 22 | string path = rel.ToString(); 23 | instance = (EditorTreeGraphSettings)AssetDatabase.LoadAssetAtPath(path, typeof(EditorTreeGraphSettings)); 24 | } 25 | } 26 | return instance; 27 | } 28 | } 29 | [SerializeField] 30 | public EditorTreeCompiler Compiler; 31 | [SerializeField] 32 | public TestCodeCompiler TestCodeCompiler; 33 | } 34 | -------------------------------------------------------------------------------- /TreeGraph/Editor/EditorTreeGraphSettings.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9657f1093f064c04b998b9397b7bd3e5 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /TreeGraph/Editor/EditorTreeTester.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using XNode; 3 | using UnityEngine; 4 | public class EditorTreeTester 5 | { 6 | static public bool RunTest(List nodes) 7 | { 8 | bool result = true; 9 | 10 | bool isRootExist = false; 11 | bool isToomanyRoots = false; 12 | 13 | foreach (Node node in nodes) 14 | { 15 | if (node is RootNode) 16 | { 17 | if (!isRootExist) 18 | { 19 | isRootExist = true; 20 | } 21 | else 22 | { 23 | Debug.LogError("This graph has too many root nodes."); 24 | result = false; 25 | isToomanyRoots = true; 26 | break; 27 | } 28 | } 29 | } 30 | 31 | if (!isRootExist) 32 | { 33 | Debug.LogError("Root node doesn't exist. A tree needs one root node."); 34 | result = false; 35 | } 36 | else if (!isToomanyRoots) 37 | { 38 | foreach (Node node in nodes) 39 | { 40 | if (node is ITreeGraphNode i) 41 | { 42 | if (!i.Test(nodes)) 43 | { 44 | result = false; 45 | } 46 | } 47 | } 48 | } 49 | 50 | return result; 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /TreeGraph/Editor/EditorTreeTester.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 973b74de3ed352d4f87dec23bee7756d 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /TreeGraph/EditorTreeCompiler.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using XNode; 3 | using UnityEngine; 4 | 5 | public class EditorTreeCompiler : ScriptableObject 6 | { 7 | [SerializeField] 8 | public string codeTemplatePath; 9 | virtual public void Compile(string fileName, List nodes, string inheritTarget = "") 10 | { 11 | } 12 | public string FileNameToClassName(string fileName) 13 | { 14 | return fileName.Replace(" ", "_"); 15 | } 16 | } 17 | 18 | -------------------------------------------------------------------------------- /TreeGraph/EditorTreeCompiler.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 38b724ec094e96648a8db1fd44178f6d 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /TreeGraph/EditorTreeGraph.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using XNode; 3 | 4 | [CreateAssetMenu(fileName = "New Tree", menuName = "EditorTreeGraph")] 5 | public class EditorTreeGraph : NodeGraph 6 | { 7 | 8 | } 9 | -------------------------------------------------------------------------------- /TreeGraph/EditorTreeGraph.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 725fa30e1b2fc1c4096e7a9d7181a870 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /TreeGraph/GraphNodes.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: adaed2ac050767643809b46f518eb31c 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /TreeGraph/GraphNodes/BaseMultiOutputNode.cs: -------------------------------------------------------------------------------- 1 | using XNode; 2 | using UnityEngine; 3 | using System.Collections.Generic; 4 | 5 | [CreateNodeMenu("")] 6 | public class BaseMultiOutputNode : Node, ITreeGraphNode 7 | { 8 | public string nodeName; 9 | [Input(ShowBackingValue.Never, ConnectionType.Multiple, TypeConstraint.None, false)] public string input; 10 | [Output(ShowBackingValue.Never, ConnectionType.Multiple, false)] public string output; 11 | 12 | override public object GetValue(NodePort port){ 13 | return nodeName; 14 | } 15 | 16 | public string GetNodeName(){ 17 | return nodeName; 18 | } 19 | 20 | public void SetNodeName(string name) 21 | { 22 | nodeName = name; 23 | } 24 | 25 | virtual public bool Test(List nodes){ 26 | bool result = true; 27 | if(string.IsNullOrEmpty(nodeName)){ 28 | Debug.LogError(this.GetType().Name+":This node doesn't have a name. All node should have an unique name."); 29 | result = false; 30 | }else if(!IsNameUnique(nodes, nodeName, this)){ 31 | Debug.LogError(nodeName+":This nodename is not unique."); 32 | result = false; 33 | } 34 | 35 | if(!this.GetInputPort("input").IsConnected){ 36 | Debug.LogError(nodeName+":This node doesn't have any parents."); 37 | result = false; 38 | } 39 | 40 | return result; 41 | } 42 | 43 | public bool IsNameUnique(List nodes, string name, Node target){ 44 | foreach(Node node in nodes){ 45 | if(node is ITreeGraphNode bt){ 46 | if(name == bt.GetNodeName() && target != node){ 47 | return false; 48 | } 49 | } 50 | } 51 | 52 | return true; 53 | } 54 | 55 | virtual public void InheritFrom(Node original) 56 | { 57 | 58 | } 59 | 60 | virtual public CodeTemplateParameterHolder GetParameterHolder() 61 | { 62 | return new CodeTemplateParameterHolder(); 63 | } 64 | 65 | virtual public string GetKey() 66 | { 67 | return ""; 68 | } 69 | } 70 | -------------------------------------------------------------------------------- /TreeGraph/GraphNodes/BaseMultiOutputNode.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 47373721114bf4343bb182bbfa5d8f2e 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /TreeGraph/GraphNodes/BaseNode.cs: -------------------------------------------------------------------------------- 1 | using XNode; 2 | using UnityEngine; 3 | using System.Collections.Generic; 4 | 5 | [CreateNodeMenu("")] 6 | public class BaseNode : Node,ITreeGraphNode 7 | { 8 | public string nodeName; 9 | [Input(ShowBackingValue.Never, ConnectionType.Multiple, TypeConstraint.None, false)] public string input; 10 | [Output(ShowBackingValue.Never, ConnectionType.Override, false)] public string output; 11 | 12 | override public object GetValue(NodePort port){ 13 | return nodeName; 14 | } 15 | 16 | public string GetNodeName(){ 17 | return nodeName; 18 | } 19 | 20 | public void SetNodeName(string name) 21 | { 22 | nodeName = name; 23 | } 24 | 25 | virtual public bool Test(List nodes){ 26 | bool result = true; 27 | if(string.IsNullOrEmpty(nodeName)){ 28 | Debug.LogError(this.GetType().Name+":This node doesn't have a name. All node should have an unique name."); 29 | result = false; 30 | }else if(!IsNameUnique(nodes, nodeName, this)){ 31 | Debug.LogError(nodeName+":This nodename is not unique."); 32 | result = false; 33 | } 34 | 35 | if(!this.GetInputPort("input").IsConnected){ 36 | Debug.LogError(nodeName+":This node doesn't have any parents."); 37 | result = false; 38 | } 39 | 40 | return result; 41 | } 42 | 43 | public bool IsNameUnique(List nodes, string name, Node target){ 44 | foreach(Node node in nodes){ 45 | if(node is ITreeGraphNode bt){ 46 | if(name == bt.GetNodeName() && target != node){ 47 | return false; 48 | } 49 | } 50 | } 51 | 52 | return true; 53 | } 54 | 55 | virtual public void InheritFrom(Node original) 56 | { 57 | 58 | } 59 | 60 | virtual public CodeTemplateParameterHolder GetParameterHolder() 61 | { 62 | return new CodeTemplateParameterHolder(); 63 | } 64 | 65 | virtual public string GetKey() 66 | { 67 | return ""; 68 | } 69 | } 70 | -------------------------------------------------------------------------------- /TreeGraph/GraphNodes/BaseNode.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: bb49e6e2c2ffc8e48a041efc8e25faa7 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /TreeGraph/GraphNodes/BoolNode.cs: -------------------------------------------------------------------------------- 1 | using XNode; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | [CreateNodeMenu("Parameter/BoolNode")] 5 | public class BoolNode : SubNode 6 | { 7 | public bool defaultValue; 8 | 9 | public override CodeTemplateParameterHolder GetParameterHolder() 10 | { 11 | CodeTemplateParameterHolder holder = new CodeTemplateParameterHolder(); 12 | holder.SetParameter("name", nodeName); 13 | holder.SetParameter("value", defaultValue.ToString().ToLower()); 14 | 15 | return holder; 16 | } 17 | 18 | public override string GetKey() 19 | { 20 | return "Bool"; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /TreeGraph/GraphNodes/BoolNode.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 794e521d2586b52499e55746d8feed00 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /TreeGraph/GraphNodes/CancelNode.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using XNode; 3 | using UnityEngine; 4 | using System; 5 | 6 | [CreateNodeMenu("Cancel")] 7 | [NodeTint("#aaffff")] 8 | 9 | public class CancelNode : BaseNode 10 | { 11 | public string[] cancelTargets; 12 | public bool isAllCancel; 13 | 14 | public override bool Test(List nodes) 15 | { 16 | bool result = base.Test(nodes); 17 | 18 | if(cancelTargets.Length == 0 && !isAllCancel) 19 | { 20 | Debug.LogError(nodeName + ": This node has no cancel targets."); 21 | result = false; 22 | } 23 | 24 | return result; 25 | } 26 | 27 | public override CodeTemplateParameterHolder GetParameterHolder() 28 | { 29 | CodeTemplateParameterHolder holder = new CodeTemplateParameterHolder(); 30 | holder.SetParameter("name", nodeName); 31 | string cancelTargetStr = "\"\""; 32 | foreach(var target in cancelTargets) 33 | { 34 | cancelTargetStr += ", \"" + target + "\""; 35 | } 36 | holder.SetParameter("cancelTarget", cancelTargetStr); 37 | holder.SetParameter("isAllCancel", isAllCancel.ToString().ToLower()); 38 | 39 | return holder; 40 | } 41 | 42 | public override void InheritFrom(Node original) 43 | { 44 | base.InheritFrom(original); 45 | if(original is CancelNode cancel_original) 46 | { 47 | Array.Copy(cancel_original.cancelTargets, this.cancelTargets, cancel_original.cancelTargets.Length); 48 | this.isAllCancel = cancel_original.isAllCancel; 49 | } 50 | } 51 | 52 | public override string GetKey() 53 | { 54 | return "Cancel"; 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /TreeGraph/GraphNodes/CancelNode.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 407f85a50fec7414c9b8111c8f16bd6f 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /TreeGraph/GraphNodes/CommentNode.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using XNode; 3 | 4 | [CreateNodeMenu("Comment")] 5 | public class CommentNode : Node 6 | { 7 | [SerializeField, TextArea(3, 5)] 8 | string comment; 9 | } 10 | -------------------------------------------------------------------------------- /TreeGraph/GraphNodes/CommentNode.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d60f954cf3271744b8d0df7b935cdcb1 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /TreeGraph/GraphNodes/CustomAttribute.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | 3 | public class NonEditableAttribute : PropertyAttribute 4 | { 5 | } 6 | 7 | public class HideAttribute : PropertyAttribute 8 | { 9 | } 10 | -------------------------------------------------------------------------------- /TreeGraph/GraphNodes/CustomAttribute.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2ac0bc765041e724cb360c9385319db2 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /TreeGraph/GraphNodes/EventNode.cs: -------------------------------------------------------------------------------- 1 | [CreateNodeMenu("Parameter/Event")] 2 | public class EventNode : SubNode 3 | { 4 | 5 | public override CodeTemplateParameterHolder GetParameterHolder() 6 | { 7 | CodeTemplateParameterHolder holder = new CodeTemplateParameterHolder(); 8 | holder.SetParameter("name", nodeName); 9 | 10 | return holder; 11 | } 12 | 13 | public override string GetKey() 14 | { 15 | return "Event"; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /TreeGraph/GraphNodes/EventNode.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 77559845e6d75134abb4a2960baf85e5 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /TreeGraph/GraphNodes/ExecuteNode.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using XNode; 3 | using UnityEngine; 4 | [CreateNodeMenu("Execute")] 5 | [NodeTint("#aaaaff")] 6 | public class ExecuteNode : BaseNode 7 | { 8 | public string eventName; 9 | 10 | override public bool Test(List nodes){ 11 | bool result = base.Test(nodes); 12 | 13 | if(!string.IsNullOrEmpty(nodeName)){ 14 | if(string.IsNullOrEmpty(eventName)){ 15 | Debug.LogError(nodeName + ": Event name is empty"); 16 | result = false; 17 | }else{ 18 | bool isEventExist = false; 19 | foreach(Node node in nodes){ 20 | if(node is EventNode e){ 21 | if(e.nodeName == eventName){ 22 | isEventExist = true; 23 | break; 24 | } 25 | } 26 | } 27 | if(!isEventExist){ 28 | Debug.LogError(nodeName+": Event name \""+eventName+"\" doesn't exist."); 29 | result = false; 30 | } 31 | } 32 | } 33 | 34 | return result; 35 | } 36 | 37 | public override CodeTemplateParameterHolder GetParameterHolder() 38 | { 39 | CodeTemplateParameterHolder holder = new CodeTemplateParameterHolder(); 40 | holder.SetParameter("name", nodeName); 41 | holder.SetParameter("eventName", eventName); 42 | 43 | return holder; 44 | } 45 | 46 | public override void InheritFrom(Node original) 47 | { 48 | base.InheritFrom(original); 49 | if (original is ExecuteNode ex_original) 50 | { 51 | this.eventName = ex_original.eventName; 52 | } 53 | } 54 | 55 | public override string GetKey() 56 | { 57 | return "Execute"; 58 | } 59 | } 60 | -------------------------------------------------------------------------------- /TreeGraph/GraphNodes/ExecuteNode.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 6e13081c63dfb434592792c1eeaa38de 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /TreeGraph/GraphNodes/FailureNode.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | [CreateNodeMenu("Miscellaneous/Failure")] 5 | public class FailureNode : BaseNode 6 | { 7 | 8 | public override CodeTemplateParameterHolder GetParameterHolder() 9 | { 10 | CodeTemplateParameterHolder holder = new CodeTemplateParameterHolder(); 11 | holder.SetParameter("name", nodeName); 12 | 13 | return holder; 14 | } 15 | 16 | public override string GetKey() 17 | { 18 | return "Failure"; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /TreeGraph/GraphNodes/FailureNode.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 8c7e3ea87e5bb814bb46ac3e626ea869 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /TreeGraph/GraphNodes/FloatNode.cs: -------------------------------------------------------------------------------- 1 | using XNode; 2 | [CreateNodeMenu("Parameter/FloatNode")] 3 | public class FloatNode : SubNode 4 | { 5 | public float defaultValue; 6 | 7 | 8 | public override CodeTemplateParameterHolder GetParameterHolder() 9 | { 10 | CodeTemplateParameterHolder holder = new CodeTemplateParameterHolder(); 11 | holder.SetParameter("name", nodeName); 12 | holder.SetParameter("value", defaultValue.ToString().ToLower() + 'f'); 13 | 14 | return holder; 15 | } 16 | 17 | public override string GetKey() 18 | { 19 | return "Float"; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /TreeGraph/GraphNodes/FloatNode.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 75d9c1280a760b142b324581961d6fbf 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /TreeGraph/GraphNodes/FrameCounterNode.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using UnityEngine; 3 | using XNode; 4 | [CreateNodeMenu("Timing/FrameCounter")] 5 | public class FrameCounterNode : BaseNode 6 | { 7 | [SerializeField] 8 | string targetNode; 9 | [SerializeField] 10 | string waitFrame; 11 | [SerializeField] 12 | bool isOverwrite, isMultiple; 13 | 14 | public override bool Test(List nodes) 15 | { 16 | bool result = base.Test(nodes); 17 | 18 | if (!string.IsNullOrEmpty(targetNode)) 19 | { 20 | bool isTargetFound = false; 21 | bool isWaitFrameValid = false; 22 | foreach (Node node in nodes) 23 | { 24 | if (node is SubNode s) 25 | { 26 | if (s.nodeName == waitFrame) 27 | { 28 | isWaitFrameValid = true; 29 | } 30 | } 31 | else 32 | { 33 | if (node is ITreeGraphNode i) 34 | { 35 | if (i.GetNodeName() == targetNode) 36 | { 37 | isTargetFound = true; 38 | } 39 | } 40 | } 41 | } 42 | 43 | if (!isTargetFound) 44 | { 45 | Debug.LogError(nodeName + ": \"" + targetNode + "\" doesn't exist."); 46 | result = false; 47 | } 48 | 49 | uint tmp; 50 | if (!isWaitFrameValid && !uint.TryParse(waitFrame, out tmp)) 51 | { 52 | Debug.LogError(nodeName + ": WaitFrame is invalid."); 53 | result = false; 54 | } 55 | } 56 | else 57 | { 58 | Debug.LogError(nodeName + ": TargetNode is empty."); 59 | result = false; 60 | } 61 | 62 | if (string.IsNullOrEmpty(waitFrame)) 63 | { 64 | Debug.LogError(nodeName + ": WaitFrame is empty."); 65 | result = false; 66 | } 67 | 68 | return result; 69 | } 70 | 71 | public override CodeTemplateParameterHolder GetParameterHolder() 72 | { 73 | CodeTemplateParameterHolder holder = new CodeTemplateParameterHolder(); 74 | holder.SetParameter("name", nodeName); 75 | holder.SetParameter("isOverwrite", isOverwrite.ToString().ToLower()); 76 | holder.SetParameter("isMultiple", isMultiple.ToString().ToLower()); 77 | holder.SetParameter("targetNode", targetNode); 78 | holder.SetParameter("waitFrame", waitFrame); 79 | 80 | return holder; 81 | } 82 | 83 | public override void InheritFrom(Node original) 84 | { 85 | base.InheritFrom(original); 86 | if (original is FrameCounterNode f) 87 | { 88 | this.targetNode = f.targetNode; 89 | this.waitFrame = f.waitFrame; 90 | this.isOverwrite = f.isOverwrite; 91 | this.isMultiple = f.isMultiple; 92 | } 93 | } 94 | 95 | public override string GetKey() 96 | { 97 | return "FrameCounter"; 98 | } 99 | } 100 | -------------------------------------------------------------------------------- /TreeGraph/GraphNodes/FrameCounterNode.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ea1e0c77bb95e004a846f8f016b05682 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /TreeGraph/GraphNodes/ITreeGraphNode.cs: -------------------------------------------------------------------------------- 1 | using XNode; 2 | using System.Collections.Generic; 3 | public interface ITreeGraphNode{ 4 | string GetNodeName(); 5 | void SetNodeName(string name); 6 | bool Test(List nodes); 7 | void InheritFrom(Node original); 8 | CodeTemplateParameterHolder GetParameterHolder(); 9 | string GetKey(); 10 | } 11 | -------------------------------------------------------------------------------- /TreeGraph/GraphNodes/ITreeGraphNode.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 443bde049eff06846a1a3731b3e2093a 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /TreeGraph/GraphNodes/IfNode.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine.Events; 2 | using UnityEngine; 3 | using System.Collections.Generic; 4 | using XNode; 5 | [CreateNodeMenu("Control/If")] 6 | public class IfNode : BaseNode 7 | { 8 | //public string boolName; 9 | [TextArea] 10 | public string condition; 11 | 12 | override public bool Test(List nodes){ 13 | bool result = base.Test(nodes); 14 | 15 | if (!string.IsNullOrEmpty(nodeName)) 16 | { 17 | if (string.IsNullOrEmpty(condition)) 18 | { 19 | Debug.LogError(nodeName + ": condition is empty."); 20 | result = false; 21 | } 22 | 23 | if (!this.GetOutputPort("output").IsConnected) 24 | { 25 | Debug.LogAssertion(nodeName + ": This If node doesn't have any children."); 26 | result = false; 27 | } 28 | } 29 | 30 | return result; 31 | } 32 | 33 | public override CodeTemplateParameterHolder GetParameterHolder() 34 | { 35 | CodeTemplateParameterHolder holder = new CodeTemplateParameterHolder(); 36 | holder.SetParameter("name", nodeName); 37 | holder.SetParameter("condition", condition); 38 | 39 | return holder; 40 | } 41 | 42 | public override void InheritFrom(Node original) 43 | { 44 | base.InheritFrom(original); 45 | if (original is IfNode originalIf) 46 | { 47 | this.condition = originalIf.condition; 48 | } 49 | } 50 | 51 | public override string GetKey() 52 | { 53 | return "If"; 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /TreeGraph/GraphNodes/IfNode.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 0672ccd6360fbe04cbbbf7182ea7d52a 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /TreeGraph/GraphNodes/InheritTargetNode.cs: -------------------------------------------------------------------------------- 1 | using XNode; 2 | using UnityEngine; 3 | [CreateNodeMenu("")] 4 | public class InheritTargetNode : Node 5 | { 6 | [SerializeField, NonEditable] 7 | public string target; 8 | bool isDeletable = false; 9 | public bool IsDeletable { 10 | get { 11 | return isDeletable; 12 | } 13 | 14 | set { 15 | isDeletable = value; 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /TreeGraph/GraphNodes/InheritTargetNode.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 3d0066fe8b782ad46b5ef1869bd9a1ef 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /TreeGraph/GraphNodes/IntNode.cs: -------------------------------------------------------------------------------- 1 | using XNode; 2 | [CreateNodeMenu("Parameter/IntNode")] 3 | public class IntNode : SubNode 4 | { 5 | public int defaultValue; 6 | 7 | public override CodeTemplateParameterHolder GetParameterHolder() 8 | { 9 | CodeTemplateParameterHolder holder = new CodeTemplateParameterHolder(); 10 | holder.SetParameter("name", nodeName); 11 | holder.SetParameter("value", defaultValue.ToString()); 12 | 13 | return holder; 14 | } 15 | 16 | public override string GetKey() 17 | { 18 | return "Int"; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /TreeGraph/GraphNodes/IntNode.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ce7eb1662fb6ba94b84831b7c52c4dc4 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /TreeGraph/GraphNodes/InterruptNode.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | using XNode; 5 | [CreateNodeMenu("Head/Interrupt")] 6 | [NodeTint("#ffaaff")] 7 | public class InterruptNode : Node, ITreeGraphNode 8 | { 9 | public string nodeName; 10 | [Output(ShowBackingValue.Never, ConnectionType.Override, false)] public string output; 11 | [TextArea] 12 | public string condition; 13 | 14 | public string GetNodeName() 15 | { 16 | return nodeName; 17 | } 18 | 19 | public void SetNodeName(string name) 20 | { 21 | nodeName = name; 22 | } 23 | 24 | public bool Test(List nodes) 25 | { 26 | bool result = true; 27 | if (string.IsNullOrEmpty(nodeName)) 28 | { 29 | Debug.LogError("This node doesn't have a name. All node should have an unique name."); 30 | result = false; 31 | } 32 | 33 | foreach (Node node in nodes) 34 | { 35 | if (node is ITreeGraphNode i) 36 | { 37 | if (this.nodeName == i.GetNodeName() && node != this) 38 | { 39 | Debug.LogError(nodeName + ":This nodename is not unique."); 40 | result = false; 41 | } 42 | } 43 | } 44 | 45 | return result; 46 | } 47 | 48 | public CodeTemplateParameterHolder GetParameterHolder() 49 | { 50 | CodeTemplateParameterHolder holder = new CodeTemplateParameterHolder(); 51 | holder.SetParameter("name", nodeName); 52 | holder.SetParameter("condition", condition); 53 | 54 | return holder; 55 | } 56 | 57 | public void InheritFrom(Node original) 58 | { 59 | if (original is InterruptNode interrupt_original) 60 | { 61 | this.condition = interrupt_original.condition; 62 | } 63 | } 64 | 65 | public string GetKey() 66 | { 67 | return "Interrupt"; 68 | } 69 | } 70 | -------------------------------------------------------------------------------- /TreeGraph/GraphNodes/InterruptNode.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: eabf94a8e9106ab4a9eecf2c8d674fce 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /TreeGraph/GraphNodes/NextSequenceNode.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | [CreateNodeMenu("Miscellaneous/NextSequence")] 5 | public class NextSequenceNode : BaseNode 6 | { 7 | 8 | public override CodeTemplateParameterHolder GetParameterHolder() 9 | { 10 | CodeTemplateParameterHolder holder = new CodeTemplateParameterHolder(); 11 | holder.SetParameter("name", nodeName); 12 | 13 | return holder; 14 | } 15 | 16 | public override string GetKey() 17 | { 18 | return "NextSequence"; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /TreeGraph/GraphNodes/NextSequenceNode.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: fad096cf6094c1443876e9865378149f 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /TreeGraph/GraphNodes/RootNode.cs: -------------------------------------------------------------------------------- 1 | using XNode; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | [CreateNodeMenu("Head/Root")] 5 | [NodeTint("#ffaaaa")] 6 | public class RootNode : Node, ITreeGraphNode 7 | { 8 | public string nodeName; 9 | [Output(ShowBackingValue.Never, ConnectionType.Override, false)] public string output; 10 | 11 | public string GetNodeName(){ 12 | return nodeName; 13 | } 14 | 15 | public void SetNodeName(string name) 16 | { 17 | nodeName = name; 18 | } 19 | 20 | public bool Test(List nodes) 21 | { 22 | bool result = true; 23 | if (string.IsNullOrEmpty(nodeName)) 24 | { 25 | Debug.LogError("Root node doesn't have a name. All node should have an unique name."); 26 | result = false; 27 | } 28 | 29 | foreach (Node node in nodes) 30 | { 31 | if (node is ITreeGraphNode i) 32 | { 33 | if (this.nodeName == i.GetNodeName() && node != this) 34 | { 35 | Debug.LogError(nodeName + "This nodename is not unique."); 36 | result = false; 37 | } 38 | } 39 | } 40 | 41 | return result; 42 | } 43 | 44 | public CodeTemplateParameterHolder GetParameterHolder() 45 | { 46 | CodeTemplateParameterHolder holder = new CodeTemplateParameterHolder(); 47 | holder.SetParameter("name", nodeName); 48 | 49 | return holder; 50 | } 51 | 52 | public string GetKey() 53 | { 54 | return "Root"; 55 | } 56 | 57 | public void InheritFrom(Node original) 58 | { 59 | 60 | } 61 | } 62 | -------------------------------------------------------------------------------- /TreeGraph/GraphNodes/RootNode.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 01d2e378cf1721e4ab545950634d5f91 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /TreeGraph/GraphNodes/SelectorNode.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using UnityEngine; 3 | using XNode; 4 | [CreateNodeMenu("Fork/Selector")] 5 | public class SelectorNode : BaseMultiOutputNode 6 | { 7 | override public bool Test(List nodes) 8 | { 9 | bool result = base.Test(nodes); 10 | if (!this.GetOutputPort("output").IsConnected) 11 | { 12 | Debug.LogError(nodeName + ": This node doesn't have any children."); 13 | result = false; 14 | } 15 | 16 | return result; 17 | } 18 | 19 | public override string GetKey() 20 | { 21 | return "Selector"; 22 | } 23 | 24 | public override CodeTemplateParameterHolder GetParameterHolder() 25 | { 26 | CodeTemplateParameterHolder holder = new CodeTemplateParameterHolder(); 27 | holder.SetParameter("name", nodeName); 28 | 29 | return holder; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /TreeGraph/GraphNodes/SelectorNode.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: bce4cc58a919dd44683043bce1faa472 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /TreeGraph/GraphNodes/SequenceNode.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | using XNode; 5 | [CreateNodeMenu("Fork/Sequence")] 6 | public class SequenceNode : BaseMultiOutputNode 7 | { 8 | override public bool Test(List nodes) 9 | { 10 | bool result = base.Test(nodes); 11 | if (!this.GetOutputPort("output").IsConnected) 12 | { 13 | Debug.LogError(nodeName + ": This node doesn't have any children."); 14 | result = false; 15 | } 16 | 17 | return result; 18 | } 19 | 20 | public override CodeTemplateParameterHolder GetParameterHolder() 21 | { 22 | CodeTemplateParameterHolder holder = new CodeTemplateParameterHolder(); 23 | holder.SetParameter("name", nodeName); 24 | 25 | return holder; 26 | } 27 | 28 | public override string GetKey() 29 | { 30 | return "Sequence"; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /TreeGraph/GraphNodes/SequenceNode.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 133b87c0ece9b5e42b1c2c51f00c8e7f 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /TreeGraph/GraphNodes/SetBoolNode.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using UnityEngine; 3 | using XNode; 4 | [CreateNodeMenu("Set Parameter/Set Bool")] 5 | public class SetBoolNode : BaseNode 6 | { 7 | public string boolName; 8 | public string value; 9 | public override bool Test(List nodes) 10 | { 11 | bool result = base.Test(nodes); 12 | if (string.IsNullOrEmpty(boolName)) 13 | { 14 | Debug.LogError(nodeName + " : Parameter name is empty."); 15 | result = false; 16 | } 17 | else 18 | { 19 | bool isParameterExist = false; 20 | foreach (Node node in nodes) 21 | { 22 | if (node is BoolNode b) 23 | { 24 | if (b.GetNodeName() == boolName) 25 | { 26 | isParameterExist = true; 27 | } 28 | } 29 | } 30 | 31 | if (!isParameterExist) 32 | { 33 | Debug.LogError(nodeName + " : Bool parameter \"" + boolName + "\" doesn't exist."); 34 | result = false; 35 | } 36 | } 37 | 38 | return result; 39 | } 40 | 41 | public override CodeTemplateParameterHolder GetParameterHolder() 42 | { 43 | CodeTemplateParameterHolder holder = new CodeTemplateParameterHolder(); 44 | holder.SetParameter("name", nodeName); 45 | holder.SetParameter("parameterName", boolName); 46 | holder.SetParameter("value", value); 47 | 48 | return holder; 49 | } 50 | 51 | public override string GetKey() 52 | { 53 | return "SetParameter"; 54 | } 55 | 56 | public override void InheritFrom(Node original) 57 | { 58 | base.InheritFrom(original); 59 | if (original is SetBoolNode s) 60 | { 61 | this.boolName = s.boolName; 62 | this.value = s.value; 63 | } 64 | } 65 | } 66 | -------------------------------------------------------------------------------- /TreeGraph/GraphNodes/SetBoolNode.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: cda4c45232ca63c41af7474f1aa0379b 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /TreeGraph/GraphNodes/SetFloatNode.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using UnityEngine; 3 | using XNode; 4 | [CreateNodeMenu("Set Parameter/Set Float")] 5 | public class SetFloatNode : BaseNode 6 | { 7 | public string floatName; 8 | public string value; 9 | public override bool Test(List nodes) 10 | { 11 | bool result = base.Test(nodes); 12 | if (string.IsNullOrEmpty(floatName)) 13 | { 14 | Debug.LogError(nodeName + " : Parameter name is empty."); 15 | result = false; 16 | } 17 | else 18 | { 19 | bool isParameterExist = false; 20 | foreach (Node node in nodes) 21 | { 22 | if (node is FloatNode f) 23 | { 24 | if (f.GetNodeName() == floatName) 25 | { 26 | isParameterExist = true; 27 | } 28 | } 29 | } 30 | 31 | if (!isParameterExist) 32 | { 33 | Debug.LogError(nodeName + " : Float parameter \"" + floatName + "\" doesn't exist."); 34 | result = false; 35 | } 36 | } 37 | 38 | return result; 39 | } 40 | 41 | public override CodeTemplateParameterHolder GetParameterHolder() 42 | { 43 | CodeTemplateParameterHolder holder = new CodeTemplateParameterHolder(); 44 | holder.SetParameter("name", nodeName); 45 | holder.SetParameter("parameterName", floatName); 46 | holder.SetParameter("value", value); 47 | 48 | return holder; 49 | } 50 | 51 | public override string GetKey() 52 | { 53 | return "SetParameter"; 54 | } 55 | 56 | public override void InheritFrom(Node original) 57 | { 58 | base.InheritFrom(original); 59 | if (original is SetFloatNode f) 60 | { 61 | this.floatName = f.floatName; 62 | this.value = f.value; 63 | } 64 | } 65 | } 66 | -------------------------------------------------------------------------------- /TreeGraph/GraphNodes/SetFloatNode.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2760378c71849fe47aa78913012d15c1 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /TreeGraph/GraphNodes/SetIntNode.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using UnityEngine; 3 | using XNode; 4 | [CreateNodeMenu("Set Parameter/Set Int")] 5 | public class SetIntNode : BaseNode 6 | { 7 | public string intName; 8 | public string value; 9 | public override bool Test(List nodes) 10 | { 11 | bool result = base.Test(nodes); 12 | if (string.IsNullOrEmpty(intName)) 13 | { 14 | Debug.LogError(nodeName + " : Parameter name is empty."); 15 | result = false; 16 | } 17 | else 18 | { 19 | bool isParameterExist = false; 20 | foreach (Node node in nodes) 21 | { 22 | if (node is IntNode i) 23 | { 24 | if (i.GetNodeName() == intName) 25 | { 26 | isParameterExist = true; 27 | } 28 | } 29 | } 30 | 31 | if (!isParameterExist) 32 | { 33 | Debug.LogError(nodeName + " : Int parameter \"" + intName + "\" doesn't exist."); 34 | result = false; 35 | } 36 | } 37 | 38 | return result; 39 | } 40 | 41 | public override CodeTemplateParameterHolder GetParameterHolder() 42 | { 43 | CodeTemplateParameterHolder holder = new CodeTemplateParameterHolder(); 44 | holder.SetParameter("name", nodeName); 45 | holder.SetParameter("parameterName", intName); 46 | holder.SetParameter("value", value); 47 | 48 | return holder; 49 | } 50 | 51 | public override string GetKey() 52 | { 53 | return "SetParameter"; 54 | } 55 | 56 | public override void InheritFrom(Node original) 57 | { 58 | base.InheritFrom(original); 59 | if (original is SetIntNode i) 60 | { 61 | this.intName = i.intName; 62 | this.value = i.value; 63 | } 64 | } 65 | } 66 | -------------------------------------------------------------------------------- /TreeGraph/GraphNodes/SetIntNode.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 54db4ec6d2bd0a94c80527b7c011c3d3 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /TreeGraph/GraphNodes/SubNode.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | using XNode; 5 | [CreateNodeMenu("")] 6 | [NodeTint("#aaffaa")] 7 | public class SubNode : Node, ITreeGraphNode 8 | { 9 | public string nodeName; 10 | 11 | [HideInInspector] 12 | public bool isInherited = false; 13 | 14 | public bool Test(List nodes){ 15 | bool result = true; 16 | if(string.IsNullOrEmpty(nodeName)){ 17 | Debug.LogError(this.GetType().Name+":This node doesn't have any names."); 18 | result = false; 19 | }else{ 20 | foreach(Node node in nodes){ 21 | if(node is ITreeGraphNode bt){ 22 | if(bt.GetNodeName() == this.nodeName && node != this){ 23 | Debug.LogError(nodeName+":This nodename is not unique."); 24 | result = false; 25 | } 26 | } 27 | } 28 | } 29 | 30 | return result; 31 | } 32 | 33 | public string GetNodeName() 34 | { 35 | return nodeName; 36 | } 37 | public void SetNodeName(string name) 38 | { 39 | nodeName = name; 40 | } 41 | 42 | virtual public void InheritFrom(Node original) 43 | { 44 | 45 | } 46 | 47 | virtual public CodeTemplateParameterHolder GetParameterHolder() 48 | { 49 | return new CodeTemplateParameterHolder(); 50 | } 51 | 52 | virtual public string GetKey() 53 | { 54 | return ""; 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /TreeGraph/GraphNodes/SubNode.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 845a1226bbf8f864493fe6bfc04d27ee 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /TreeGraph/GraphNodes/SuccessNode.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | [CreateNodeMenu("Miscellaneous/Success")] 5 | public class SuccessNode : BaseNode 6 | { 7 | 8 | public override CodeTemplateParameterHolder GetParameterHolder() 9 | { 10 | CodeTemplateParameterHolder holder = new CodeTemplateParameterHolder(); 11 | holder.SetParameter("name", nodeName); 12 | 13 | return holder; 14 | } 15 | 16 | public override string GetKey() 17 | { 18 | return "Success"; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /TreeGraph/GraphNodes/SuccessNode.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 3600cd144c90f9849a841581dd85eb55 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /TreeGraph/GraphNodes/TestCodeNodes.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f0bf80a2eb7a4274ba5b90b5d6865ffc 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /TreeGraph/GraphNodes/TestCodeNodes/CallValidation.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | [NodeTint("#ffff00")] 5 | [CreateNodeMenu("TestCodeTree/CallValidation")] 6 | public class CallValidation : TestTreeBaseNode 7 | { 8 | public string targetNodeName; 9 | public override CodeTemplateParameterHolder GetParameterHolder() 10 | { 11 | CodeTemplateParameterHolder holder = base.GetParameterHolder(); 12 | holder.SetParameter("targetNodeName", targetNodeName); 13 | 14 | return holder; 15 | } 16 | 17 | public override string GetKey() 18 | { 19 | return "CallValidation"; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /TreeGraph/GraphNodes/TestCodeNodes/CallValidation.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 87da85e8162fe554ba76beed3a058c83 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /TreeGraph/GraphNodes/TestCodeNodes/ITestTreeGraphNode.cs: -------------------------------------------------------------------------------- 1 | using XNode; 2 | using System.Collections.Generic; 3 | public interface ITestTreeGraphNode 4 | { 5 | string GetNodeName(); 6 | void SetNodeName(string name); 7 | void InheritFrom(Node original); 8 | CodeTemplateParameterHolder GetParameterHolder(); 9 | string GetKey(); 10 | } 11 | -------------------------------------------------------------------------------- /TreeGraph/GraphNodes/TestCodeNodes/ITestTreeGraphNode.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 64c032909cf1fed42b6a4449a9ad8465 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /TreeGraph/GraphNodes/TestCodeNodes/NotCallValidation.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | [NodeTint("#ffff00")] 5 | [CreateNodeMenu("TestCodeTree/NotCallValidation")] 6 | public class NotCallValidation : TestTreeBaseNode 7 | { 8 | public string targetNodeName; 9 | public override CodeTemplateParameterHolder GetParameterHolder() 10 | { 11 | CodeTemplateParameterHolder holder = base.GetParameterHolder(); 12 | holder.SetParameter("targetNodeName", targetNodeName); 13 | 14 | return holder; 15 | } 16 | 17 | public override string GetKey() 18 | { 19 | return "NotCallValidation"; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /TreeGraph/GraphNodes/TestCodeNodes/NotCallValidation.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 29889f5a38982934fb500753c53a2d45 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /TreeGraph/GraphNodes/TestCodeNodes/ResetCalledFlag.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | [NodeTint("#ffff00")] 5 | [CreateNodeMenu("TestCodeTree/ResetCalledFlag")] 6 | public class ResetCalledFlag : TestTreeBaseNode 7 | { 8 | public override CodeTemplateParameterHolder GetParameterHolder() 9 | { 10 | CodeTemplateParameterHolder holder = base.GetParameterHolder(); 11 | return holder; 12 | } 13 | 14 | public override string GetKey() 15 | { 16 | return "ResetCalledFlag"; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /TreeGraph/GraphNodes/TestCodeNodes/ResetCalledFlag.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b84554ac87668e44691ab3b94a229755 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /TreeGraph/GraphNodes/TestCodeNodes/RunTreeNode.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | using XNode; 5 | 6 | [NodeTint("#ffff00")] 7 | [CreateNodeMenu("TestCodeTree/RunTree")] 8 | public class RunTreeNode : TestTreeBaseNode 9 | { 10 | public string count; 11 | 12 | public override CodeTemplateParameterHolder GetParameterHolder() 13 | { 14 | CodeTemplateParameterHolder holder = base.GetParameterHolder(); 15 | holder.SetParameter("count", count); 16 | return holder; 17 | } 18 | 19 | public override string GetKey() 20 | { 21 | return "RunTree"; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /TreeGraph/GraphNodes/TestCodeNodes/RunTreeNode.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 6d21d57a6bb37924ab082e8d686164d2 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /TreeGraph/GraphNodes/TestCodeNodes/SetParameter.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | [NodeTint("#ffff00")] 5 | [CreateNodeMenu("TestCodeTree/SetParameter")] 6 | public class SetParameter : TestTreeBaseNode 7 | { 8 | public string parameterName; 9 | public string value; 10 | 11 | public override CodeTemplateParameterHolder GetParameterHolder() 12 | { 13 | CodeTemplateParameterHolder holder = base.GetParameterHolder(); 14 | holder.SetParameter("parameterName", parameterName); 15 | holder.SetParameter("value", value); 16 | 17 | return holder; 18 | } 19 | 20 | public override string GetKey() 21 | { 22 | return "SetParameter"; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /TreeGraph/GraphNodes/TestCodeNodes/SetParameter.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 28d8043bc7dda5e45b2b731386ce8267 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /TreeGraph/GraphNodes/TestCodeNodes/TestCaseRootNode.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | using XNode; 5 | [NodeTint("#ffff00")] 6 | [CreateNodeMenu("TestCodeTree/Root")] 7 | public class TestCaseRootNode : Node, ITestTreeGraphNode 8 | { 9 | public string nodeName; 10 | [Output(ShowBackingValue.Never, ConnectionType.Override, false)] public string output; 11 | public string GetKey() 12 | { 13 | return ""; 14 | } 15 | 16 | public string GetNodeName() 17 | { 18 | return nodeName; 19 | } 20 | 21 | public CodeTemplateParameterHolder GetParameterHolder() 22 | { 23 | CodeTemplateParameterHolder holder = new CodeTemplateParameterHolder(); 24 | holder.SetParameter("NodeName", nodeName); 25 | 26 | return holder; 27 | } 28 | 29 | public void InheritFrom(Node original) 30 | { 31 | if (original is TestCaseRootNode r) 32 | { 33 | this.nodeName = r.nodeName; 34 | } 35 | } 36 | 37 | public void SetNodeName(string name) 38 | { 39 | nodeName = name; 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /TreeGraph/GraphNodes/TestCodeNodes/TestCaseRootNode.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 079453225bdb65d44909d43cf3aa47fa 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /TreeGraph/GraphNodes/TestCodeNodes/TestTreeBaseNode.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | using XNode; 5 | 6 | [CreateNodeMenu("")] 7 | public class TestTreeBaseNode : Node, ITestTreeGraphNode 8 | { 9 | public string nodeName; 10 | [Input(ShowBackingValue.Never, ConnectionType.Multiple, TypeConstraint.None, false)] public string input; 11 | [Output(ShowBackingValue.Never, ConnectionType.Override, false)] public string output; 12 | 13 | public virtual string GetKey() 14 | { 15 | throw new System.NotImplementedException(); 16 | } 17 | 18 | public virtual string GetNodeName() 19 | { 20 | return nodeName; 21 | } 22 | 23 | public virtual CodeTemplateParameterHolder GetParameterHolder() 24 | { 25 | CodeTemplateParameterHolder holder = new CodeTemplateParameterHolder(); 26 | holder.SetParameter("nodeName", nodeName); 27 | 28 | return holder; 29 | } 30 | 31 | public virtual void InheritFrom(Node original) 32 | { 33 | if (original is TestTreeBaseNode b) 34 | { 35 | this.nodeName = b.nodeName; 36 | } 37 | } 38 | 39 | public virtual void SetNodeName(string name) 40 | { 41 | nodeName = name; 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /TreeGraph/GraphNodes/TestCodeNodes/TestTreeBaseNode.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 0459eef3d8dc9a046b2335f3b652945e 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /TreeGraph/GraphNodes/TestCodeNodes/WaitSeconds.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | 5 | [NodeTint("#ffff00")] 6 | [CreateNodeMenu("TestCodeTree/WaitSeconds")] 7 | public class WaitSeconds : TestTreeBaseNode 8 | { 9 | public string waitSecond; 10 | 11 | public override CodeTemplateParameterHolder GetParameterHolder() 12 | { 13 | CodeTemplateParameterHolder holder = base.GetParameterHolder(); 14 | holder.SetParameter("waitSecond", waitSecond); 15 | 16 | return holder; 17 | } 18 | 19 | public override string GetKey() 20 | { 21 | return "WaitSeconds"; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /TreeGraph/GraphNodes/TestCodeNodes/WaitSeconds.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 6d7cb2ff77bbcfc49a7c0d1116e69478 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /TreeGraph/GraphNodes/TimerNode.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using UnityEngine; 3 | using XNode; 4 | [CreateNodeMenu("Timing/Timer")] 5 | public class TimerNode : BaseNode 6 | { 7 | [SerializeField] 8 | string targetNode; 9 | [SerializeField] 10 | string waitTime; 11 | [SerializeField] 12 | bool isOverwrite, isMultiple; 13 | 14 | public override bool Test(List nodes) 15 | { 16 | bool result = base.Test(nodes); 17 | 18 | if (!string.IsNullOrEmpty(targetNode)) 19 | { 20 | bool isTargetFound = false; 21 | bool isWaitTimeValid = false; 22 | foreach (Node node in nodes) 23 | { 24 | if (node is SubNode s) 25 | { 26 | if (s.nodeName == waitTime) 27 | { 28 | isWaitTimeValid = true; 29 | } 30 | } 31 | else if (node is ITreeGraphNode i) 32 | { 33 | if (i.GetNodeName() == targetNode) 34 | { 35 | isTargetFound = true; 36 | break; 37 | } 38 | } 39 | } 40 | 41 | if (!isTargetFound) 42 | { 43 | Debug.LogError(nodeName + ": \"" + nodeName + "\" doesn't exist."); 44 | result = false; 45 | } 46 | 47 | double tmp; 48 | if (!isWaitTimeValid && !double.TryParse(waitTime, out tmp)) 49 | { 50 | Debug.LogError(nodeName + ": WaitTime is invalid."); 51 | result = false; 52 | } 53 | } 54 | else 55 | { 56 | Debug.LogError(nodeName + ": TargetNode is empty."); 57 | result = false; 58 | } 59 | 60 | if (string.IsNullOrEmpty(waitTime)) 61 | { 62 | Debug.LogError(nodeName + ": WaitTime is empty."); 63 | result = false; 64 | } 65 | 66 | return result; 67 | } 68 | 69 | public override void InheritFrom(Node original) 70 | { 71 | base.InheritFrom(original); 72 | if (original is TimerNode t) 73 | { 74 | this.targetNode = t.targetNode; 75 | this.waitTime = t.waitTime; 76 | this.isOverwrite = t.isOverwrite; 77 | this.isMultiple = t.isMultiple; 78 | } 79 | } 80 | 81 | public override CodeTemplateParameterHolder GetParameterHolder() 82 | { 83 | CodeTemplateParameterHolder holder = new CodeTemplateParameterHolder(); 84 | holder.SetParameter("name", nodeName); 85 | holder.SetParameter("isOverwrite", isOverwrite.ToString().ToLower()); 86 | holder.SetParameter("isMultiple", isMultiple.ToString().ToLower()); 87 | holder.SetParameter("targetNode", targetNode); 88 | holder.SetParameter("waitTime", waitTime); 89 | 90 | return holder; 91 | } 92 | 93 | public override string GetKey() 94 | { 95 | return "Timer"; 96 | } 97 | } 98 | -------------------------------------------------------------------------------- /TreeGraph/GraphNodes/TimerNode.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 301e853202a747041af728821d198f9e 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /TreeGraph/GraphNodes/WhileNode.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | using XNode; 5 | [CreateNodeMenu("Control/While")] 6 | public class WhileNode : BaseNode 7 | { 8 | [TextArea] 9 | public string condition; 10 | 11 | override public bool Test(List nodes) 12 | { 13 | bool result = base.Test(nodes); 14 | if (!string.IsNullOrEmpty(nodeName)) 15 | { 16 | if (string.IsNullOrEmpty(condition)) 17 | { 18 | Debug.LogError(nodeName + ": condition is empty."); 19 | result = false; 20 | } 21 | } 22 | if (!this.GetOutputPort("output").IsConnected) 23 | { 24 | Debug.LogAssertion(nodeName + ": This node doesn't have any children."); 25 | result = false; 26 | } 27 | 28 | return result; 29 | } 30 | 31 | public override CodeTemplateParameterHolder GetParameterHolder() 32 | { 33 | CodeTemplateParameterHolder holder = new CodeTemplateParameterHolder(); 34 | holder.SetParameter("name", nodeName); 35 | holder.SetParameter("condition", condition); 36 | 37 | return holder; 38 | } 39 | 40 | public override void InheritFrom(Node original) 41 | { 42 | base.InheritFrom(original); 43 | if (original is WhileNode wh_original) 44 | { 45 | this.condition = wh_original.condition; 46 | } 47 | } 48 | 49 | public override string GetKey() 50 | { 51 | return "While"; 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /TreeGraph/GraphNodes/WhileNode.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f24636a0acc46a74bb4313fd0fe7a449 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /TreeGraph/JsonReader.cs: -------------------------------------------------------------------------------- 1 | using System.Runtime.Serialization.Json; 2 | using System.IO; 3 | using System.Collections.Generic; 4 | using UnityEngine; 5 | 6 | class JsonReader 7 | { 8 | private CodeTemplatePathHolder templateHolder; 9 | public JsonReader(string path) 10 | { 11 | using (var fs = new StreamReader(path)) 12 | { 13 | string str = fs.ReadToEnd(); 14 | byte[] data = System.Text.Encoding.Unicode.GetBytes(str); 15 | using (var ms = new MemoryStream(data)) 16 | { 17 | using (var sr = new StreamReader(ms)) 18 | { 19 | var serializer = new DataContractJsonSerializer(typeof(CodeTemplatePathHolder)); 20 | 21 | ms.Position = 0; 22 | 23 | templateHolder = (CodeTemplatePathHolder)serializer.ReadObject(ms); 24 | } 25 | } 26 | } 27 | } 28 | 29 | public string GetTemplatePath(string key1, string key2) 30 | { 31 | return templateHolder.CodeTemplatePaths[key1][key2]; 32 | } 33 | } 34 | 35 | public class CodeTemplatePathHolder 36 | { 37 | public Dictionary> CodeTemplatePaths; 38 | } -------------------------------------------------------------------------------- /TreeGraph/JsonReader.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9653a6341a3c22247856e6650aad164b 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /TreeGraph/Settings.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 02a2a35016f5d3b4280b6b1ffd2f5183 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /TreeGraph/Settings/EditorTreeGraphSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &11400000 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 11500000, guid: 9657f1093f064c04b998b9397b7bd3e5, type: 3} 13 | m_Name: EditorTreeGraphSettings 14 | m_EditorClassIdentifier: 15 | Compiler: {fileID: 11400000, guid: fa95bce83f358c54386564c95fb654da, type: 2} 16 | TestCodeCompiler: {fileID: 11400000, guid: b84bb0fb88e9bbd4da3eac2c0b55126e, type: 2} 17 | -------------------------------------------------------------------------------- /TreeGraph/Settings/EditorTreeGraphSettings.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e613a6016fd8de84eb344af7bb6ae9b3 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /xNode.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 6ccb8501e76aab74fa0251628240defe 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /xNode/CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | ## Contributing to xNode 2 | 💙Thank you for taking the time to contribute💙 3 | 4 | If you haven't already, join our [Discord channel](https://discord.gg/qgPrHv4)! 5 | 6 | ## Pull Requests 7 | Try to keep your pull requests relevant, neat, and manageable. If you are adding multiple features, try splitting them into separate commits. 8 | * Avoid including irellevant whitespace or formatting changes. 9 | * Comment your code. 10 | * Spell check your code / comments 11 | 12 | ## New features 13 | xNode aims to be simple and extendible, not trying to fix all of Unity's shortcomings. 14 | 15 | If your feature aims to cover something not related to editing nodes, it generally won't be accepted. If in doubt, ask on the Discord channel. 16 | 17 | ## Coding conventions 18 | Skim through the code and you'll get the hang of it quickly. 19 | * Methods, Types and properties PascalCase 20 | * Variables camelCase 21 | * Public methods XML commented. Params described if not obvious 22 | * Explicit usage of brackets when doing multiple math operations on the same line 23 | 24 | ## Formatting 25 | I use VSCode with the C# FixFormat extension and the following setting overrides: 26 | ```json 27 | "csharpfixformat.style.spaces.beforeParenthesis": false, 28 | "csharpfixformat.style.indent.regionIgnored": true 29 | ``` 30 | * Open braces on same line as condition 31 | * 4 spaces for indentation. 32 | -------------------------------------------------------------------------------- /xNode/CONTRIBUTING.md.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2ea2dd64ae0c4e14b99e09549723db35 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /xNode/LICENSE.md: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2017 Thor Brigsted 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 13 | all 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 21 | THE SOFTWARE. 22 | -------------------------------------------------------------------------------- /xNode/LICENSE.md.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e7424926ee5e6f24aafdb58c98fb7da5 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /xNode/README.md.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e000adf8e4ab21046a2dcd6b49bd2670 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /xNode/Scripts.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 657b15cb3ec32a24ca80faebf094d0f4 3 | folderAsset: yes 4 | timeCreated: 1505418321 5 | licenseType: Store 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /xNode/Scripts/Attributes.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5644dfc7eed151045af664a9d4fd1906 3 | folderAsset: yes 4 | timeCreated: 1541633926 5 | licenseType: Store 6 | DefaultImporter: 7 | externalObjects: {} 8 | userData: 9 | assetBundleName: 10 | assetBundleVariant: 11 | -------------------------------------------------------------------------------- /xNode/Scripts/Attributes/NodeEnum.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | 3 | /// Draw enums correctly within nodes. Without it, enums show up at the wrong positions. 4 | /// Enums with this attribute are not detected by EditorGui.ChangeCheck due to waiting before executing 5 | public class NodeEnumAttribute : PropertyAttribute { } -------------------------------------------------------------------------------- /xNode/Scripts/Attributes/NodeEnum.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 10a8338f6c985854697b35459181af0a 3 | timeCreated: 1541633942 4 | licenseType: Store 5 | MonoImporter: 6 | externalObjects: {} 7 | serializedVersion: 2 8 | defaultReferences: [] 9 | executionOrder: 0 10 | icon: {instanceID: 0} 11 | userData: 12 | assetBundleName: 13 | assetBundleVariant: 14 | -------------------------------------------------------------------------------- /xNode/Scripts/Editor.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 94d4fd78d9120634ebe0e8717610c412 3 | folderAsset: yes 4 | timeCreated: 1505418345 5 | licenseType: Store 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /xNode/Scripts/Editor/Drawers.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7adf21edfb51f514fa991d7556ecd0ef 3 | folderAsset: yes 4 | timeCreated: 1541971984 5 | licenseType: Store 6 | DefaultImporter: 7 | externalObjects: {} 8 | userData: 9 | assetBundleName: 10 | assetBundleVariant: 11 | -------------------------------------------------------------------------------- /xNode/Scripts/Editor/Drawers/NodeEnumDrawer.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections; 3 | using System.Collections.Generic; 4 | using UnityEditor; 5 | using UnityEngine; 6 | using XNode; 7 | using XNodeEditor; 8 | 9 | namespace XNodeEditor { 10 | [CustomPropertyDrawer(typeof(NodeEnumAttribute))] 11 | public class NodeEnumDrawer : PropertyDrawer { 12 | public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) { 13 | EditorGUI.BeginProperty(position, label, property); 14 | 15 | // Throw error on wrong type 16 | if (property.propertyType != SerializedPropertyType.Enum) { 17 | throw new ArgumentException("Parameter selected must be of type System.Enum"); 18 | } 19 | 20 | // Add label 21 | position = EditorGUI.PrefixLabel(position, GUIUtility.GetControlID(FocusType.Passive), label); 22 | 23 | // Get current enum name 24 | string enumName = ""; 25 | if (property.enumValueIndex >= 0 && property.enumValueIndex < property.enumDisplayNames.Length) enumName = property.enumDisplayNames[property.enumValueIndex]; 26 | 27 | #if UNITY_2017_1_OR_NEWER 28 | // Display dropdown 29 | if (EditorGUI.DropdownButton(position, new GUIContent(enumName), FocusType.Passive)) { 30 | // Position is all wrong if we show the dropdown during the node draw phase. 31 | // Instead, add it to onLateGUI to display it later. 32 | NodeEditorWindow.current.onLateGUI += () => ShowContextMenuAtMouse(property); 33 | } 34 | #else 35 | // Display dropdown 36 | if (GUI.Button(position, new GUIContent(enumName), "MiniPopup")) { 37 | // Position is all wrong if we show the dropdown during the node draw phase. 38 | // Instead, add it to onLateGUI to display it later. 39 | NodeEditorWindow.current.onLateGUI += () => ShowContextMenuAtMouse(property); 40 | } 41 | #endif 42 | EditorGUI.EndProperty(); 43 | } 44 | 45 | private void ShowContextMenuAtMouse(SerializedProperty property) { 46 | // Initialize menu 47 | GenericMenu menu = new GenericMenu(); 48 | 49 | // Add all enum display names to menu 50 | for (int i = 0; i < property.enumDisplayNames.Length; i++) { 51 | int index = i; 52 | menu.AddItem(new GUIContent(property.enumDisplayNames[i]), false, () => SetEnum(property, index)); 53 | } 54 | 55 | // Display at cursor position 56 | Rect r = new Rect(Event.current.mousePosition, new Vector2(0, 0)); 57 | menu.DropDown(r); 58 | } 59 | 60 | private void SetEnum(SerializedProperty property, int index) { 61 | property.enumValueIndex = index; 62 | property.serializedObject.ApplyModifiedProperties(); 63 | property.serializedObject.Update(); 64 | } 65 | } 66 | } -------------------------------------------------------------------------------- /xNode/Scripts/Editor/Drawers/NodeEnumDrawer.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 83db81f92abadca439507e25d517cabe 3 | timeCreated: 1541633798 4 | licenseType: Store 5 | MonoImporter: 6 | externalObjects: {} 7 | serializedVersion: 2 8 | defaultReferences: [] 9 | executionOrder: 0 10 | icon: {instanceID: 0} 11 | userData: 12 | assetBundleName: 13 | assetBundleVariant: 14 | -------------------------------------------------------------------------------- /xNode/Scripts/Editor/NodeEditor.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 712c3fc5d9eeb4c45b1e23918df6018f 3 | timeCreated: 1505462176 4 | licenseType: Store 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /xNode/Scripts/Editor/NodeEditorAction.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: aa7d4286bf0ad2e4086252f2893d2cf5 3 | timeCreated: 1505426655 4 | licenseType: Store 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /xNode/Scripts/Editor/NodeEditorAssetModProcessor.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e515e86efe8160243a68b7c06d730c9c 3 | timeCreated: 1507982232 4 | licenseType: Store 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /xNode/Scripts/Editor/NodeEditorBase.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e85122ded59aceb4eb4b1bd9d9202642 3 | timeCreated: 1511353946 4 | licenseType: Store 5 | MonoImporter: 6 | externalObjects: {} 7 | serializedVersion: 2 8 | defaultReferences: [] 9 | executionOrder: 0 10 | icon: {instanceID: 0} 11 | userData: 12 | assetBundleName: 13 | assetBundleVariant: 14 | -------------------------------------------------------------------------------- /xNode/Scripts/Editor/NodeEditorGUI.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 756276bfe9a0c2f4da3930ba1964f58d 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /xNode/Scripts/Editor/NodeEditorGUILayout.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 1d6c2d118d1c77948a23f2f4a34d1f64 3 | timeCreated: 1507966608 4 | licenseType: Store 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /xNode/Scripts/Editor/NodeEditorPreferences.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 6b1f47e387a6f714c9f2ff82a6888c85 3 | timeCreated: 1507920216 4 | licenseType: Store 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /xNode/Scripts/Editor/NodeEditorReflection.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c78a0fa4a13abcd408ebe73006b7b1bb 3 | timeCreated: 1505419458 4 | licenseType: Store 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /xNode/Scripts/Editor/NodeEditorResources.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 69f55d341299026489b29443c3dd13d1 3 | timeCreated: 1505418919 4 | licenseType: Store 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /xNode/Scripts/Editor/NodeEditorUtilities.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 120960fe5b50aba418a8e8ad3c4c4bc8 3 | timeCreated: 1506073499 4 | licenseType: Store 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /xNode/Scripts/Editor/NodeEditorWindow.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5ce2bf59ec7a25c4ba691cad7819bf38 3 | timeCreated: 1505418450 4 | licenseType: Store 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /xNode/Scripts/Editor/NodeGraphEditor.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ddcbb5432255d3247a0718b15a9c193c 3 | timeCreated: 1505462176 4 | licenseType: Store 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /xNode/Scripts/Editor/RenamePopup.cs: -------------------------------------------------------------------------------- 1 | using UnityEditor; 2 | using UnityEngine; 3 | 4 | namespace XNodeEditor { 5 | /// Utility for renaming assets 6 | public class RenamePopup : EditorWindow { 7 | public static RenamePopup current { get; private set; } 8 | public Object target; 9 | public string input; 10 | 11 | private bool firstFrame = true; 12 | 13 | /// Show a rename popup for an asset at mouse position. Will trigger reimport of the asset on apply. 14 | public static RenamePopup Show(Object target, float width = 200) { 15 | RenamePopup window = EditorWindow.GetWindow(true, "Rename " + target.name, true); 16 | if (current != null) current.Close(); 17 | current = window; 18 | window.target = target; 19 | window.input = target.name; 20 | window.minSize = new Vector2(100, 44); 21 | window.position = new Rect(0, 0, width, 44); 22 | GUI.FocusControl("ClearAllFocus"); 23 | window.UpdatePositionToMouse(); 24 | return window; 25 | } 26 | 27 | private void UpdatePositionToMouse() { 28 | if (Event.current == null) return; 29 | Vector3 mousePoint = GUIUtility.GUIToScreenPoint(Event.current.mousePosition); 30 | Rect pos = position; 31 | pos.x = mousePoint.x - position.width * 0.5f; 32 | pos.y = mousePoint.y - 10; 33 | position = pos; 34 | } 35 | 36 | private void OnLostFocus() { 37 | // Make the popup close on lose focus 38 | Close(); 39 | } 40 | 41 | private void OnGUI() { 42 | if (firstFrame) { 43 | UpdatePositionToMouse(); 44 | firstFrame = false; 45 | } 46 | input = EditorGUILayout.TextField(input); 47 | Event e = Event.current; 48 | // If input is empty, revert name to default instead 49 | if (input == null || input.Trim() == "") { 50 | if (GUILayout.Button("Revert to default") || (e.isKey && e.keyCode == KeyCode.Return)) { 51 | target.name = UnityEditor.ObjectNames.NicifyVariableName(target.GetType().Name); 52 | AssetDatabase.ImportAsset(AssetDatabase.GetAssetPath(target)); 53 | Close(); 54 | } 55 | } 56 | // Rename asset to input text 57 | else { 58 | if (GUILayout.Button("Apply") || (e.isKey && e.keyCode == KeyCode.Return)) { 59 | target.name = input; 60 | AssetDatabase.RenameAsset(AssetDatabase.GetAssetPath(target), input); 61 | Close(); 62 | } 63 | } 64 | } 65 | } 66 | } 67 | -------------------------------------------------------------------------------- /xNode/Scripts/Editor/RenamePopup.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 4ef3ddc25518318469bce838980c64be 3 | timeCreated: 1552067957 4 | licenseType: Store 5 | MonoImporter: 6 | externalObjects: {} 7 | serializedVersion: 2 8 | defaultReferences: [] 9 | executionOrder: 0 10 | icon: {instanceID: 0} 11 | userData: 12 | assetBundleName: 13 | assetBundleVariant: 14 | -------------------------------------------------------------------------------- /xNode/Scripts/Editor/Resources.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 964fc201163fe884ca6a20094b6f3b49 3 | folderAsset: yes 4 | timeCreated: 1506110871 5 | licenseType: Store 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /xNode/Scripts/Editor/Resources/ScriptTemplates.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 86b677955452bb5449f9f4dd47b6ddfe 3 | folderAsset: yes 4 | timeCreated: 1519049391 5 | licenseType: Store 6 | DefaultImporter: 7 | externalObjects: {} 8 | userData: 9 | assetBundleName: 10 | assetBundleVariant: 11 | -------------------------------------------------------------------------------- /xNode/Scripts/Editor/Resources/ScriptTemplates/xNode_NodeGraphTemplate.cs.txt: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | using XNode; 5 | 6 | [CreateAssetMenu] 7 | public class #SCRIPTNAME# : NodeGraph { 8 | #NOTRIM# 9 | } -------------------------------------------------------------------------------- /xNode/Scripts/Editor/Resources/ScriptTemplates/xNode_NodeGraphTemplate.cs.txt.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 8165767f64da7d94e925f61a38da668c 3 | timeCreated: 1519049802 4 | licenseType: Store 5 | TextScriptImporter: 6 | externalObjects: {} 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /xNode/Scripts/Editor/Resources/ScriptTemplates/xNode_NodeTemplate.cs.txt: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | using XNode; 5 | 6 | public class #SCRIPTNAME# : Node { 7 | 8 | // Use this for initialization 9 | protected override void Init() { 10 | base.Init(); 11 | #NOTRIM# 12 | } 13 | 14 | // Return the correct value of an output port when requested 15 | public override object GetValue(NodePort port) { 16 | return null; // Replace this 17 | } 18 | } -------------------------------------------------------------------------------- /xNode/Scripts/Editor/Resources/ScriptTemplates/xNode_NodeTemplate.cs.txt.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 85f6f570600a1a44d8e734cb111a8b89 3 | timeCreated: 1519049802 4 | licenseType: Store 5 | TextScriptImporter: 6 | externalObjects: {} 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /xNode/Scripts/Editor/Resources/xnode_dot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dumble009/UnityEditorTreeGraph/85cfcf5d381a0cddd58b87701b5f585edf2646b8/xNode/Scripts/Editor/Resources/xnode_dot.png -------------------------------------------------------------------------------- /xNode/Scripts/Editor/Resources/xnode_dot.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 75a1fe0b102226a418486ed823c9a7fb 3 | timeCreated: 1506110357 4 | licenseType: Store 5 | TextureImporter: 6 | fileIDToRecycleName: {} 7 | serializedVersion: 4 8 | mipmaps: 9 | mipMapMode: 0 10 | enableMipMap: 0 11 | sRGBTexture: 0 12 | linearTexture: 0 13 | fadeOut: 0 14 | borderMipMap: 0 15 | mipMapsPreserveCoverage: 0 16 | alphaTestReferenceValue: 0.5 17 | mipMapFadeDistanceStart: 1 18 | mipMapFadeDistanceEnd: 3 19 | bumpmap: 20 | convertToNormalMap: 0 21 | externalNormalMap: 0 22 | heightScale: 0.25 23 | normalMapFilter: 0 24 | isReadable: 0 25 | grayScaleToAlpha: 0 26 | generateCubemap: 6 27 | cubemapConvolution: 0 28 | seamlessCubemap: 0 29 | textureFormat: 1 30 | maxTextureSize: 2048 31 | textureSettings: 32 | serializedVersion: 2 33 | filterMode: -1 34 | aniso: 1 35 | mipBias: -1 36 | wrapU: 1 37 | wrapV: -1 38 | wrapW: -1 39 | nPOTScale: 0 40 | lightmap: 0 41 | compressionQuality: 50 42 | spriteMode: 0 43 | spriteExtrude: 1 44 | spriteMeshType: 1 45 | alignment: 0 46 | spritePivot: {x: 0.5, y: 0.5} 47 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 48 | spritePixelsToUnits: 100 49 | alphaUsage: 1 50 | alphaIsTransparency: 1 51 | spriteTessellationDetail: -1 52 | textureType: 2 53 | textureShape: 1 54 | maxTextureSizeSet: 0 55 | compressionQualitySet: 0 56 | textureFormatSet: 0 57 | platformSettings: 58 | - buildTarget: DefaultTexturePlatform 59 | maxTextureSize: 2048 60 | textureFormat: -1 61 | textureCompression: 1 62 | compressionQuality: 50 63 | crunchedCompression: 0 64 | allowsAlphaSplitting: 0 65 | overridden: 0 66 | - buildTarget: Standalone 67 | maxTextureSize: 2048 68 | textureFormat: -1 69 | textureCompression: 1 70 | compressionQuality: 50 71 | crunchedCompression: 0 72 | allowsAlphaSplitting: 0 73 | overridden: 0 74 | - buildTarget: Android 75 | maxTextureSize: 2048 76 | textureFormat: -1 77 | textureCompression: 1 78 | compressionQuality: 50 79 | crunchedCompression: 0 80 | allowsAlphaSplitting: 0 81 | overridden: 0 82 | - buildTarget: WebGL 83 | maxTextureSize: 2048 84 | textureFormat: -1 85 | textureCompression: 1 86 | compressionQuality: 50 87 | crunchedCompression: 0 88 | allowsAlphaSplitting: 0 89 | overridden: 0 90 | spriteSheet: 91 | serializedVersion: 2 92 | sprites: [] 93 | outline: [] 94 | physicsShape: [] 95 | spritePackingTag: 96 | userData: 97 | assetBundleName: 98 | assetBundleVariant: 99 | -------------------------------------------------------------------------------- /xNode/Scripts/Editor/Resources/xnode_dot_outer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dumble009/UnityEditorTreeGraph/85cfcf5d381a0cddd58b87701b5f585edf2646b8/xNode/Scripts/Editor/Resources/xnode_dot_outer.png -------------------------------------------------------------------------------- /xNode/Scripts/Editor/Resources/xnode_dot_outer.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 434ca8b4bdfa5574abb0002bbc9b65ad 3 | timeCreated: 1506110357 4 | licenseType: Store 5 | TextureImporter: 6 | fileIDToRecycleName: {} 7 | serializedVersion: 4 8 | mipmaps: 9 | mipMapMode: 0 10 | enableMipMap: 0 11 | sRGBTexture: 0 12 | linearTexture: 0 13 | fadeOut: 0 14 | borderMipMap: 0 15 | mipMapsPreserveCoverage: 0 16 | alphaTestReferenceValue: 0.5 17 | mipMapFadeDistanceStart: 1 18 | mipMapFadeDistanceEnd: 3 19 | bumpmap: 20 | convertToNormalMap: 0 21 | externalNormalMap: 0 22 | heightScale: 0.25 23 | normalMapFilter: 0 24 | isReadable: 0 25 | grayScaleToAlpha: 0 26 | generateCubemap: 6 27 | cubemapConvolution: 0 28 | seamlessCubemap: 0 29 | textureFormat: 1 30 | maxTextureSize: 2048 31 | textureSettings: 32 | serializedVersion: 2 33 | filterMode: -1 34 | aniso: 1 35 | mipBias: -1 36 | wrapU: 1 37 | wrapV: -1 38 | wrapW: -1 39 | nPOTScale: 0 40 | lightmap: 0 41 | compressionQuality: 50 42 | spriteMode: 0 43 | spriteExtrude: 1 44 | spriteMeshType: 1 45 | alignment: 0 46 | spritePivot: {x: 0.5, y: 0.5} 47 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 48 | spritePixelsToUnits: 100 49 | alphaUsage: 1 50 | alphaIsTransparency: 1 51 | spriteTessellationDetail: -1 52 | textureType: 2 53 | textureShape: 1 54 | maxTextureSizeSet: 0 55 | compressionQualitySet: 0 56 | textureFormatSet: 0 57 | platformSettings: 58 | - buildTarget: DefaultTexturePlatform 59 | maxTextureSize: 2048 60 | textureFormat: -1 61 | textureCompression: 1 62 | compressionQuality: 50 63 | crunchedCompression: 0 64 | allowsAlphaSplitting: 0 65 | overridden: 0 66 | - buildTarget: Standalone 67 | maxTextureSize: 2048 68 | textureFormat: -1 69 | textureCompression: 1 70 | compressionQuality: 50 71 | crunchedCompression: 0 72 | allowsAlphaSplitting: 0 73 | overridden: 0 74 | - buildTarget: Android 75 | maxTextureSize: 2048 76 | textureFormat: -1 77 | textureCompression: 1 78 | compressionQuality: 50 79 | crunchedCompression: 0 80 | allowsAlphaSplitting: 0 81 | overridden: 0 82 | - buildTarget: WebGL 83 | maxTextureSize: 2048 84 | textureFormat: -1 85 | textureCompression: 1 86 | compressionQuality: 50 87 | crunchedCompression: 0 88 | allowsAlphaSplitting: 0 89 | overridden: 0 90 | spriteSheet: 91 | serializedVersion: 2 92 | sprites: [] 93 | outline: [] 94 | physicsShape: [] 95 | spritePackingTag: 96 | userData: 97 | assetBundleName: 98 | assetBundleVariant: 99 | -------------------------------------------------------------------------------- /xNode/Scripts/Editor/Resources/xnode_node.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dumble009/UnityEditorTreeGraph/85cfcf5d381a0cddd58b87701b5f585edf2646b8/xNode/Scripts/Editor/Resources/xnode_node.png -------------------------------------------------------------------------------- /xNode/Scripts/Editor/Resources/xnode_node.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2fea1dcb24935ef4ca514d534eb6aa3d 3 | timeCreated: 1507454532 4 | licenseType: Store 5 | TextureImporter: 6 | fileIDToRecycleName: {} 7 | serializedVersion: 4 8 | mipmaps: 9 | mipMapMode: 0 10 | enableMipMap: 0 11 | sRGBTexture: 0 12 | linearTexture: 0 13 | fadeOut: 0 14 | borderMipMap: 0 15 | mipMapsPreserveCoverage: 0 16 | alphaTestReferenceValue: 0.5 17 | mipMapFadeDistanceStart: 1 18 | mipMapFadeDistanceEnd: 3 19 | bumpmap: 20 | convertToNormalMap: 0 21 | externalNormalMap: 0 22 | heightScale: 0.25 23 | normalMapFilter: 0 24 | isReadable: 0 25 | grayScaleToAlpha: 0 26 | generateCubemap: 6 27 | cubemapConvolution: 0 28 | seamlessCubemap: 0 29 | textureFormat: 1 30 | maxTextureSize: 2048 31 | textureSettings: 32 | serializedVersion: 2 33 | filterMode: -1 34 | aniso: 1 35 | mipBias: -1 36 | wrapU: 1 37 | wrapV: 1 38 | wrapW: 1 39 | nPOTScale: 0 40 | lightmap: 0 41 | compressionQuality: 50 42 | spriteMode: 0 43 | spriteExtrude: 1 44 | spriteMeshType: 1 45 | alignment: 0 46 | spritePivot: {x: 0.5, y: 0.5} 47 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 48 | spritePixelsToUnits: 100 49 | alphaUsage: 1 50 | alphaIsTransparency: 1 51 | spriteTessellationDetail: -1 52 | textureType: 2 53 | textureShape: 1 54 | maxTextureSizeSet: 0 55 | compressionQualitySet: 0 56 | textureFormatSet: 0 57 | platformSettings: 58 | - buildTarget: DefaultTexturePlatform 59 | maxTextureSize: 2048 60 | textureFormat: -1 61 | textureCompression: 1 62 | compressionQuality: 50 63 | crunchedCompression: 0 64 | allowsAlphaSplitting: 0 65 | overridden: 0 66 | - buildTarget: Standalone 67 | maxTextureSize: 2048 68 | textureFormat: -1 69 | textureCompression: 1 70 | compressionQuality: 50 71 | crunchedCompression: 0 72 | allowsAlphaSplitting: 0 73 | overridden: 0 74 | - buildTarget: Android 75 | maxTextureSize: 2048 76 | textureFormat: -1 77 | textureCompression: 1 78 | compressionQuality: 50 79 | crunchedCompression: 0 80 | allowsAlphaSplitting: 0 81 | overridden: 0 82 | - buildTarget: WebGL 83 | maxTextureSize: 2048 84 | textureFormat: -1 85 | textureCompression: 1 86 | compressionQuality: 50 87 | crunchedCompression: 0 88 | allowsAlphaSplitting: 0 89 | overridden: 0 90 | spriteSheet: 91 | serializedVersion: 2 92 | sprites: [] 93 | outline: [] 94 | physicsShape: [] 95 | spritePackingTag: 96 | userData: 97 | assetBundleName: 98 | assetBundleVariant: 99 | -------------------------------------------------------------------------------- /xNode/Scripts/Editor/Resources/xnode_node_highlight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dumble009/UnityEditorTreeGraph/85cfcf5d381a0cddd58b87701b5f585edf2646b8/xNode/Scripts/Editor/Resources/xnode_node_highlight.png -------------------------------------------------------------------------------- /xNode/Scripts/Editor/Resources/xnode_node_highlight.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2ab2b92d7e1771b47bba0a46a6f0f6d5 3 | timeCreated: 1516610730 4 | licenseType: Store 5 | TextureImporter: 6 | fileIDToRecycleName: {} 7 | externalObjects: {} 8 | serializedVersion: 4 9 | mipmaps: 10 | mipMapMode: 0 11 | enableMipMap: 0 12 | sRGBTexture: 0 13 | linearTexture: 0 14 | fadeOut: 0 15 | borderMipMap: 0 16 | mipMapsPreserveCoverage: 0 17 | alphaTestReferenceValue: 0.5 18 | mipMapFadeDistanceStart: 1 19 | mipMapFadeDistanceEnd: 3 20 | bumpmap: 21 | convertToNormalMap: 0 22 | externalNormalMap: 0 23 | heightScale: 0.25 24 | normalMapFilter: 0 25 | isReadable: 0 26 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: -1 35 | aniso: 1 36 | mipBias: -1 37 | wrapU: 1 38 | wrapV: 1 39 | wrapW: -1 40 | nPOTScale: 0 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 0 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 49 | spritePixelsToUnits: 100 50 | alphaUsage: 1 51 | alphaIsTransparency: 1 52 | spriteTessellationDetail: -1 53 | textureType: 2 54 | textureShape: 1 55 | maxTextureSizeSet: 0 56 | compressionQualitySet: 0 57 | textureFormatSet: 0 58 | platformSettings: 59 | - buildTarget: DefaultTexturePlatform 60 | maxTextureSize: 2048 61 | resizeAlgorithm: 0 62 | textureFormat: -1 63 | textureCompression: 1 64 | compressionQuality: 50 65 | crunchedCompression: 0 66 | allowsAlphaSplitting: 0 67 | overridden: 0 68 | androidETC2FallbackOverride: 0 69 | - buildTarget: Standalone 70 | maxTextureSize: 2048 71 | resizeAlgorithm: 0 72 | textureFormat: -1 73 | textureCompression: 1 74 | compressionQuality: 50 75 | crunchedCompression: 0 76 | allowsAlphaSplitting: 0 77 | overridden: 0 78 | androidETC2FallbackOverride: 0 79 | spriteSheet: 80 | serializedVersion: 2 81 | sprites: [] 82 | outline: [] 83 | physicsShape: [] 84 | spritePackingTag: 85 | userData: 86 | assetBundleName: 87 | assetBundleVariant: 88 | -------------------------------------------------------------------------------- /xNode/Scripts/Editor/Resources/xnode_node_workfile.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dumble009/UnityEditorTreeGraph/85cfcf5d381a0cddd58b87701b5f585edf2646b8/xNode/Scripts/Editor/Resources/xnode_node_workfile.psd -------------------------------------------------------------------------------- /xNode/Scripts/Editor/Resources/xnode_node_workfile.psd.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2267efa6e1e349348ae0b28fb659a6e2 3 | timeCreated: 1507454532 4 | licenseType: Store 5 | TextureImporter: 6 | fileIDToRecycleName: {} 7 | serializedVersion: 4 8 | mipmaps: 9 | mipMapMode: 0 10 | enableMipMap: 0 11 | sRGBTexture: 0 12 | linearTexture: 0 13 | fadeOut: 0 14 | borderMipMap: 0 15 | mipMapsPreserveCoverage: 0 16 | alphaTestReferenceValue: 0.5 17 | mipMapFadeDistanceStart: 1 18 | mipMapFadeDistanceEnd: 3 19 | bumpmap: 20 | convertToNormalMap: 0 21 | externalNormalMap: 0 22 | heightScale: 0.25 23 | normalMapFilter: 0 24 | isReadable: 0 25 | grayScaleToAlpha: 0 26 | generateCubemap: 6 27 | cubemapConvolution: 0 28 | seamlessCubemap: 0 29 | textureFormat: 1 30 | maxTextureSize: 2048 31 | textureSettings: 32 | serializedVersion: 2 33 | filterMode: -1 34 | aniso: 1 35 | mipBias: -1 36 | wrapU: 1 37 | wrapV: -1 38 | wrapW: -1 39 | nPOTScale: 0 40 | lightmap: 0 41 | compressionQuality: 50 42 | spriteMode: 0 43 | spriteExtrude: 1 44 | spriteMeshType: 1 45 | alignment: 0 46 | spritePivot: {x: 0.5, y: 0.5} 47 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 48 | spritePixelsToUnits: 100 49 | alphaUsage: 1 50 | alphaIsTransparency: 1 51 | spriteTessellationDetail: -1 52 | textureType: 2 53 | textureShape: 1 54 | maxTextureSizeSet: 0 55 | compressionQualitySet: 0 56 | textureFormatSet: 0 57 | platformSettings: 58 | - buildTarget: DefaultTexturePlatform 59 | maxTextureSize: 2048 60 | textureFormat: -1 61 | textureCompression: 1 62 | compressionQuality: 50 63 | crunchedCompression: 0 64 | allowsAlphaSplitting: 0 65 | overridden: 0 66 | - buildTarget: Standalone 67 | maxTextureSize: 2048 68 | textureFormat: -1 69 | textureCompression: 1 70 | compressionQuality: 50 71 | crunchedCompression: 0 72 | allowsAlphaSplitting: 0 73 | overridden: 0 74 | - buildTarget: Android 75 | maxTextureSize: 2048 76 | textureFormat: -1 77 | textureCompression: 1 78 | compressionQuality: 50 79 | crunchedCompression: 0 80 | allowsAlphaSplitting: 0 81 | overridden: 0 82 | - buildTarget: WebGL 83 | maxTextureSize: 2048 84 | textureFormat: -1 85 | textureCompression: 1 86 | compressionQuality: 50 87 | crunchedCompression: 0 88 | allowsAlphaSplitting: 0 89 | overridden: 0 90 | spriteSheet: 91 | serializedVersion: 2 92 | sprites: [] 93 | outline: [] 94 | physicsShape: [] 95 | spritePackingTag: 96 | userData: 97 | assetBundleName: 98 | assetBundleVariant: 99 | -------------------------------------------------------------------------------- /xNode/Scripts/Node.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f26231e5ab9368746948d0ea49e8178a 3 | timeCreated: 1505419984 4 | licenseType: Store 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /xNode/Scripts/NodeDataCache.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 64ea6af1e195d024d8df0ead1921e517 3 | timeCreated: 1507566823 4 | licenseType: Store 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /xNode/Scripts/NodeGraph.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 093f68ef2455d544fa2d14b80c811322 3 | timeCreated: 1505461376 4 | licenseType: Store 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /xNode/Scripts/NodePort.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7dd2f76ac25c6f44c9426dff3e7491a3 3 | timeCreated: 1505734054 4 | licenseType: Store 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /xNode/xNode.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b3a7548c2d8d7704bb667e1c7189eb83 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /xNode/xNode/Scripts.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 12608a836526cc84e960f2666ffffdeb 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /xNode/xNode/Scripts/Editor.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d333518d2f46b754e95eaa39e3879329 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /xNode/xNode/Scripts/Editor/NodeEditorWindow.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dumble009/UnityEditorTreeGraph/85cfcf5d381a0cddd58b87701b5f585edf2646b8/xNode/xNode/Scripts/Editor/NodeEditorWindow.cs -------------------------------------------------------------------------------- /xNode/xNode/Scripts/Editor/NodeEditorWindow.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 0c699c4234c45eb4689269bb5e6ca3f0 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /xNode/xNode/Scripts/Editor/NodeGraphEditor.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dumble009/UnityEditorTreeGraph/85cfcf5d381a0cddd58b87701b5f585edf2646b8/xNode/xNode/Scripts/Editor/NodeGraphEditor.cs -------------------------------------------------------------------------------- /xNode/xNode/Scripts/Editor/NodeGraphEditor.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2ffbace4759320741bbb4ee0f377f0db 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /xNode/xNode/Scripts/NodeGraph.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dumble009/UnityEditorTreeGraph/85cfcf5d381a0cddd58b87701b5f585edf2646b8/xNode/xNode/Scripts/NodeGraph.cs -------------------------------------------------------------------------------- /xNode/xNode/Scripts/NodeGraph.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 1e0ee2ebe24705840bc8acef93182c70 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | --------------------------------------------------------------------------------