Search Unity

  1. Megacity Metro Demo now available. Download now.
    Dismiss Notice
  2. Unity support for visionOS is now available. Learn more in our blog post.
    Dismiss Notice

NodeCanvas - (Behaviour Trees | State Machines | Dialogue Trees)

Discussion in 'Assets and Asset Store' started by nuverian, Feb 8, 2014.

  1. nuverian

    nuverian

    Joined:
    Oct 3, 2011
    Posts:
    2,087
    Hey,

    Sorry, I haven't done something in that part yet. I will post as soon as I do. I will try to hasten that :)

    Hey,
    It was my mistake to confuse you by telling you to use the inherited blackboard property. I didn't know that you were overriding the agent as your screenshot shows.
    So since you are overriding the agent in your task, yes, you need to explicetely get the blackboard component FROM the overriden agent as you did in the first place, since by using the property you are getting the blackboard of the owner agent which doesn't have a variable named "attributes" and thus the the GetDataValue was returning the deafult value of your type, which is NULL, and thus the null reference expection.

    Still, I think that you would be better off using a MonoBehaviour script on each of your players with the data in there and use it directly either with script control or in your own tasks. That way you would just call agent.GetComponent<PlayerAttributes>() directly in your task and do what you want with them instead of going through the blackboard of the agent, which contains a custom variable, which contains the player attributes. I just think it's a long way around :)
     
  2. Danirey

    Danirey

    Joined:
    Apr 3, 2013
    Posts:
    548
    Ok! I understand.

    I have planed to change that. I'm reusing the old huge scripts to use some data. I'll remove all the useles scripts and create some new only to store the basic character data.

    Thanks!:D
     
  3. msl_manni

    msl_manni

    Joined:
    Jul 5, 2011
    Posts:
    272
    Any update? Will this be available?

    And also ...........

    Are there any good articles on Goal Oriented AI. And how can it be realized with NodeCanvas? An example will suffice.

    Thanks.
     
  4. Danirey

    Danirey

    Joined:
    Apr 3, 2013
    Posts:
    548
    Hi guys!

    How can i remove all elements of a BBGameObject list?
     
  5. msl_manni

    msl_manni

    Joined:
    Jul 5, 2011
    Posts:
    272
    You can clear all type of Lists with - *Blackboard - Clear List.
     
  6. Danirey

    Danirey

    Joined:
    Apr 3, 2013
    Posts:
    548
    Hey thanks! I didn't see that!
     
  7. nuverian

    nuverian

    Joined:
    Oct 3, 2011
    Posts:
    2,087
    Hey,

    Sorry for late reply. I am a bit slow in summers. Its very hot in Greece and Im often offsite :)
    No update on that matter yet, even though I am not really sure where this should help. There are some other stuff in the the priority of the TODO list before that :)

    Have you taken a look at the articles linked in the online documentation page for Behaviour Trees? What are you after?

    Cheers :)
     
  8. nuverian

    nuverian

    Joined:
    Oct 3, 2011
    Posts:
    2,087
    Im very glad to see the first unofficial NC Pack on the Asset Store by Embersoft :)

    'cInput actions for NodeCanvas'

    Asset Store Link
     
  9. nuverian

    nuverian

    Joined:
    Oct 3, 2011
    Posts:
    2,087
    Version 1.5.5 submitted


    Mecanim Parameter Sync
    A script which you can add, select an Animator as well a a Blackboard and the parameters/variables you want to sync together. Syncing is one way from Blackboard to Animator. So just by controling some variables you can automaticaly control animator as well.

    Behaviour Tree Nodes
    Switch
    (Composite)
    Executes one child based on the provided integer index OR a provided enum. In the case of an enum, the enum values will be used. If the index change while a child is running, that child will be interrupted before the new one is executed, thus it's fully dynamic.
    So the Index Switch is very useful if you want to somehow mimic 'states' in a Behaviour Tree and even though there are other ways to mimic states, this is a convenient one since I get asked a lot about it :)
    Switch.png

    Flip Selector (Composite)
    Works like a normal Selector, but when a child node returns Success, it is moved to the end (right). As a result, previously failed children will be checked first and recently successfull children last. (thanks Simon)
    FlipSelector.png

    Step Iterator (Composite)
    Executes chidren nodes ONE-BY-ONE. Each time Step Iterator is executed, it will execute the next child in order and return it's status. Once all children have been executed, the iteration will start from the begining. Consider the following example tree:
    Step.png
    This will log: "1", "OK", "2", "OK", "3", "OK", "1", "OK" etc...

    Optional
    (Decorator)
    Executes the decorated child node without taking into acount it's return status, thus making it optional to the parent node. This is like having the node disabled, but instead it will execute normaly. This is really convenient instead of trying to hack your way out of the returned status, in case it doesn't matter.

    List Iterator V2 (Decorator)
    This is like the existing Iterator Decorator, but instead it can iterate over any type of list instead of only List<GameObject>. As a reminder, this is in essence a 'for each'.
    ----------

    Runtime
    • AgentType can now also be an interface.
    • Similarily, the Unity Object Variable can also be set to an interface instead.
    • When overriding the agent, the variables dropdown will now also list any variable that is of the required agent type instead of only GameObject variables.
    • The Check Property/Field/Method reflection tasks, will now show a comparison method (EqualTo, LessThan....) if the type is float or integer.
    • The SetVector task can now also multiply, add etc the 2 vectors together.
    • Abstract variables are now handled.
    • State Machines will once again Finish when reaching a finished state with no transitions.
    • More performance boost.
    Editor
    • Nodes will now automaticaly scale-down and adjust width/height. Scale button removed.
    • Nodes now can "inherit" Icons from their assigned Tasks if the Task has the Icon attribute defined.
    • Much better Task serialization, safer to name refactors.
    • Missing assigned Tasks no longer just disapear. Instead their name will show up in red so that you know what's missing if anything.
    • Editor Assemblies will no longer show in relevant context popups.
    • There is no longer a confirmation to delete a graph when removing a GraphOwner.
    Added Task Search field
    TaskSearch.png

    Added 'Defined Parameters Info'
    This shows a collective list of all defined parameters within the various tasks of the tree, their type and occurencies. It makes a lot easier to know what parameters/variables the tree requires to function correctly. (More on parametrized subtrees comming in future update :) )
    (The same is true for State Machines as well)
    DefinedParams.png


    Fixes
    • Fixed Prefab instantiation reference issues, where prefab graphs were no working correctly on more than the first agent in some cases
    • Fixed Web Player build not working due to some reflection code.
    • Fixed error for when reading from some assemblies.
    • Fixed GUI errors that poped up when entering nested graphs.
    • Fixed VariableData safety check.
    • Fixed 'Repeat Times' that was a float. It's now an Integer.
    • Fixed Nested Dialogue Trees no returning correct status.
    • Added scrolbar on the GenericPopup Editor.
     
    Last edited: Aug 15, 2014
  10. nuverian

    nuverian

    Joined:
    Oct 3, 2011
    Posts:
    2,087
    Version 1.5.5 is now live on the asset store.
    That was prety fast :)
     
  11. Danirey

    Danirey

    Joined:
    Apr 3, 2013
    Posts:
    548
    Awesome!!

    Thanks for the update! Very helpful;)

    Is it possible to reorganize the variables in the blackboard. Let's say i want all character related grouped at the top and so on... I don't know if it is already possible but it would be of help. Anyway it is not so important..:)

    Cheers!
     
  12. nuverian

    nuverian

    Joined:
    Oct 3, 2011
    Posts:
    2,087
    Hey,

    Glad you like it!
    It's not possible right now, but I will look into re-ordering the variables :)

    Cheers!
     
  13. Danirey

    Danirey

    Joined:
    Apr 3, 2013
    Posts:
    548
    Nice!

    Thanks :)
     
  14. tomi-trescak

    tomi-trescak

    Joined:
    Jul 31, 2013
    Posts:
    78
    Hey Nuverian, nice update! Was refactoring the code to the new update but I can no longer find the possibility to decide whether behaviour is executed automatically or no. Thanks!
     
  15. nuverian

    nuverian

    Joined:
    Oct 3, 2011
    Posts:
    2,087
    Hey,

    Thanks!
    If you mean whether or not the GraphOwner starts behaving OnEnable, it is an enum on the GraphOwner instead of that obsolete boolean that existed up until now:
    owner.onEnable = GraphOwner.EnableAction.StartBehaviour;
    owner.onEnable = GraphOwner.EnableAction.DoNothing;

    If you mean something else please let me know
     
  16. msl_manni

    msl_manni

    Joined:
    Jul 5, 2011
    Posts:
    272
    There are many _MonoManager Objects beeing added to the Hierarchy.
    I suppose these are added at runtime but are not being removed after play.
    Why is that so? Can these be deleted safely?

    And also please a Probability State Node to the FSM, as in BT. Thanks.
     
  17. nuverian

    nuverian

    Joined:
    Oct 3, 2011
    Posts:
    2,087
    Hey,

    There are some occasions that this happen after the latest version, which I am hunting down to fix.
    It's totaly safe to remove them from the hierarchy out of play time, yes.
    Does this happen in your scene constantely, or some times?

    By the way, you can fake the probability state node, by using the "Utilities/Probability" condition on the transitions of a state. As a result the transitions will be checked in order top-bottom and the first Probability conditions that succeeds will also take place.
     
  18. msl_manni

    msl_manni

    Joined:
    Jul 5, 2011
    Posts:
    272
    It happens almost every time, where the _MonoManager is not removed from the hierarchy.

    I require a proper Probability State Node, where the probability is distributed correctly.
    Fake Probability is not working for my needs. I want an equally distributed Probability among out nodes.

    I tried to do it myself but FSM has ActionList and I did not find the way how to do it properly. In BT and DT the nodes have Condition Task to achieve it. I am Lost.

    Please do the needful, as this is much needed, and I suppose you can do it. :)
    Thanks.
     
  19. msl_manni

    msl_manni

    Joined:
    Jul 5, 2011
    Posts:
    272
    I am having problem destroying the self object from the FSM. The following graph gives me error. How to solve this?
     

    Attached Files:

  20. nuverian

    nuverian

    Joined:
    Oct 3, 2011
    Posts:
    2,087
    I think you are trying to turn an FSM into something that is not :)
    In any case, if you want you can make a custom FSMState node by inheriting from FSMState class and overriding the required functions like Init, Enter, Stay, Exit etc. Here is the documentation:
    http://nodecanvas.com/documentation/creating-custom-nodes/creating-fsm-state-nodes/
    Not all states need to have an Action List. The Action State has an Action List.
    I still don't know if what you are after is possible without some workarounds, since thats not exactly the way FSM are ment to work :)

    Regarding _MonoManager, if it does happen all the time, it would be great if you can send me some project that it does, so that I can pinpoint the issue.

    Indeed. This happens in FSM when destroying the FSM itself.
    Please change the action in DestroyGameObject.cs from OnExecute to OnUpdate so that it takes place 1 frame later and it will work without throwing the error :)

    Cheers!
     
  21. msl_manni

    msl_manni

    Joined:
    Jul 5, 2011
    Posts:
    272
    Well FSM means Finite State Machine - a Machine is in a Finite State at a particular time. So a state node is only evaluating some actions and may act according to conditions or in Machine terms it is creating the Machine State. But the action can also be a condition and the result be an action. But summary is that it is a Machine State. So I dont agree with your analogy about FSM. In modern FSM, you also include Fuzziness, so FSM is not what it is meant to be. :)

    Anyway there is no harm in having Helper States like Multi Evaluator State, Probability State, Stepper State, etc........

    Other than Action List, what other type of can be on a state. Please give some code examples. Like Action, Condition, and about conditional connection and connection. Where to look for some example code?

    Can you be specific about this? Is it about FSM? Or what I am after? Or about coding the required state?

    I cant share the current project. I will check it happens with other projects too.

    This works fine. Thanks.
     
    Last edited: Aug 29, 2014
  22. msl_manni

    msl_manni

    Joined:
    Jul 5, 2011
    Posts:
    272
    I need an Idea how to do it error free.

    I have a player and some five followers who are fighting evil beings. Followers search for Enemies and Items with GetOverlapSphereObjects and work on their own. If the target is far they get closer to it and do actions as necessary. Now the Enemy or Item has to be removed from the scene, but here the problem starts, if the target is removed, some other follower may be referencing the target and it will certainly throw an error. So how to do it error free?

    Your input is necessary. Thanks. :)
     
  23. Alexis14

    Alexis14

    Joined:
    Aug 6, 2014
    Posts:
    3
    I am trying to get started with NodeCanvas (beginner) and would like to know, whether you have some advices on how to start and actually learn the fundamentals of NC.

    Thanks in Advance!
     
  24. nuverian

    nuverian

    Joined:
    Oct 3, 2011
    Posts:
    2,087
    A. You can just code a custom state as you like by overriding Enter, Stay, Exit etc and do whatever you want it to do. You don't have to use Action or Condition Task. You can just "plainly" code what you want the state to do.
    B. I was refering to creating the kind of state you are after.

    Are you refering to a Task Init error due to a RequiredField missing?

    Hello there,

    Depending on what part of NC you want to use (Behaviour Trees, FSMs, Dialogue Trees) it would be great if you first have a read about how these systems work in general. I've gathered the most interesting external web links on the website (end of page):
    http://nodecanvas.com/documentation/node-systems/behaviour-trees/
    http://nodecanvas.com/documentation/node-systems/state-machines/

    I would certainly advice you NOT to try and understand/use them all together at once.

    After or along reading about them you can download and play around with the demo scenes found here:
    http://nodecanvas.com/resources/

    Also there is a bunch on documentation online but I would really recommend you to read at least the first 3 sections:
    Key Concepts, Editor Overview and of course Graph Systems (depending on which one you are after)
    ...and once you feel comfortable and want to delve deeper, continue with the rest of the documentation.

    Last but not least feel free to ask anything here, or on the official forums:
    http://nodecanvas.com/forums/

    :)
     
    Alexis14 likes this.
  25. nuverian

    nuverian

    Joined:
    Oct 3, 2011
    Posts:
    2,087
    The new version 1.5.6 is submited. Not a whole lot new stuff this time but here they are :)

    • Blackboard Variables are now re-orderable
    • Script Control task functions are now listed along with their parameter and return types in the dropdown menu
    • Fixed GC Alloc that was high when using Script Control Tasks
    • Improved performance
    • Fixed BT Nested FSM not sending the correct event
     
  26. msl_manni

    msl_manni

    Joined:
    Jul 5, 2011
    Posts:
    272
    Here is the sequence..........

    1. GetOverlapSphereObjects -> EnemyList
    2. SortObjectListByDistance -> EnemyList
    3. PickListObject -> EnemyList[0] -> Target
    4. MoveToFromList -> Target............... Modified to walk to Target

    So if the Enemy is destroyed. But some other follower might be walking to that target, it will lead into error as target not valid.


    walkToTarget


    Code (CSharp):
    1. void Go(){
    2.  
    3.             //var targetPos = targetList.value[index].transform.position;
    4.             var targetPos = target.value.transform.position;               //////////// [B][U]Error as cached target is no more valid[/U][/B]
    5.             if (lastRequest != targetPos){
    6.                 if ( !navAgent.SetDestination( targetPos) ){
    7.                     EndAction(false);
    8.                     return;
    9.                 }
    10.             }
    11.  
    12.             lastRequest = targetPos;
    13.  
    14.             if (!navAgent.pathPending && navAgent.remainingDistance <= navAgent.stoppingDistance + keepDistance)
    15.                 EndAction(true);          
    16.         }
    Hope the problem is explained properly. :)
     
  27. nuverian

    nuverian

    Joined:
    Oct 3, 2011
    Posts:
    2,087
    Well,
    You could simply modify it a bit more and do a null check
    Code (CSharp):
    1.  
    2. if (targetList.value[index] == null){
    3.     EndAction(false);
    4.     return;
    5. }
    6.  
    Unless I misunderstood something :)
     
  28. msl_manni

    msl_manni

    Joined:
    Jul 5, 2011
    Posts:
    272
    Thanks again, though I had to add the check to all functions that referenced the target.:)
    The FSM branch is quiet long that is referencing the target. :rolleyes:

    Code (CSharp):
    1. if (target.value == null){
    2.                 EndAction(false);
    3.                 return;
    4.             }


    ....................Edited.........................

    This too cant eliminate the error to appear at rare occasions.
     
    Last edited: Aug 30, 2014
  29. nuverian

    nuverian

    Joined:
    Oct 3, 2011
    Posts:
    2,087
    Can you please be more specific :) What error and occasions?
     
  30. nuverian

    nuverian

    Joined:
    Oct 3, 2011
    Posts:
    2,087
    Glad to see another integration asset from Embersoft. This time for Aron's A* Project, containing lots of Tasks to deal with pathfinding. Nice job :)

    "A* Pathfinding for NodeCanvas"


    Asset Store
     
  31. msl_manni

    msl_manni

    Joined:
    Jul 5, 2011
    Posts:
    272
    The sequence is
    PickTarget - MoveToTarget - LookAtTarget - Anim() - Shoot - DamageTheTarget(health--) etc.

    So each Node is acting on target, and though it might escape via null check on each of them, but they may become null after the check itself, and BB is still refrencing them. Like in DamageTheTarget - setInt - substract from target.health.


    For now I have made a more elaborate check This check is on every task that is referencing the target

    Code (CSharp):
    1. void check()
    2.         {
    3.             if (target.value == null){
    4.                 EndAction(false);
    5.                 return;
    6.             }
    7.            
    8.             string layerString = "Ignore";
    9.            
    10.             if(LayerMask.NameToLayer(layerString) == target.value.layer){
    11.                 EndAction(false);
    12.                 return;
    13.             }
    14.         }
    I change the layer type of the Enemy and Item so that they are not gathered by GetOverlapSphereObjects anymore, and the ones already gathered have decent time to be escaped by the check function. There is a changeLayerType and then wait(2) on the enemy/Item before it is destroyed.

    Your opinion please. Thanks.
     
  32. Danirey

    Danirey

    Joined:
    Apr 3, 2013
    Posts:
    548
    Hi there!

    I have the _MonoManager objects issue too.

    Thanks for adding the reorderable variables ;).

    Have you checked the new ui? Do you think it will be possible to use the new event system form NodeCanvas? I have a lot On mouse over like functions to see over what object is the mouse. With the new event system, you not only can check events for the ui elements, but 3d objects too.


    Cheers!
     
  33. RyuMaster

    RyuMaster

    Joined:
    Sep 13, 2010
    Posts:
    468
    Hi! Are the sample scenes available for download on site still for version 1.0?
     
  34. Alexis14

    Alexis14

    Joined:
    Aug 6, 2014
    Posts:
    3
    thanks! For now I am trying to understand the Bahaviour Tree (reading the documentations) and going through the samples, but I was hoping to find some more tutorials ;)
     
  35. nuverian

    nuverian

    Joined:
    Oct 3, 2011
    Posts:
    2,087
    Well. I still can't really figure out the exact issue you are running into, but I'd suggest not to change the source code so severely if you are to upgrade to next versions.
    Please start a thread on the official forums if you'd like to discuss this further and find a solution if you still have an issue, because it might be lengthy.
    Thanks


    You are welcome.
    In the new commited version the _MonoManager issue should be fixed.
    I've only briefly looked at the new UI. Didn't have time to delve deeper, but I am most than certain that it is possible :)
    What kind of Tasks are you after based on the new GUI?


    Hello,
    No, the example scenes are for all version. The version number there is relative to the scenes. I guess that's confusing, so I will remove that :)
     
  36. nuverian

    nuverian

    Joined:
    Oct 3, 2011
    Posts:
    2,087
    You are welcome.
    The good thing about Behaviur Trees and FSMs is that they are somewhat standarized, so 90% of the resources found on the web (like the links provided in the documentation) are valid for NC as well. The various perks and features that are unique to NC are though explicitely explained in the docs.
    Regardless, I agree that there should be more tutorials. I might create a new docs section soon after summer :)
     
  37. Danirey

    Danirey

    Joined:
    Apr 3, 2013
    Posts:
    548
    Hi! :)

    Well, i'm learning about how to use the events right now, but i would begin with a OnPointerEnter/exit/click etc... with the panel/button/image/text object as a parameter…

    I realized that i have some custom tasks to ray cast from the cursor and check for an object's tag or root tag. With the event system, you can do that with the Raycast Physics component , which do the the same thing. If this work with a bit of flexibility, the check for which object is blocking the ray would be handled by the event system itself. If you have a 2d button over a 3d clickable box the button will block the ray to the box. But i don't know how can this be done by code yet…

    Tha basic tasks i think should be the check for pointer enter exit and click… for now… :D

    I'm already using the events through the inspector, but this forces you to create a lot of functions to be called from there…
    In some cases(a lot actually) you want to handle what object is clicked to access to other components. Or when click a button, pass more parameters to some function…

    Cheers
     
  38. msl_manni

    msl_manni

    Joined:
    Jul 5, 2011
    Posts:
    272
    Sorry if my explanation is not clear enough, and dont know if a new thread would help. :)

    The check is working fine for now. I keep a separate copy of all modified files, with modified task names and file names. I have many additions to the system so I have to keep them in separate folder. :)

    Thanks for your help.


    .
     
  39. Danirey

    Danirey

    Joined:
    Apr 3, 2013
    Posts:
    548
    I have an example of the Hover handling functions in C#. This is a good example i think.
    Of corse i'm trying to convert it to UnityScript, but not luck yet…

    Code (CSharp):
    1. using UnityEngine;
    2. using UnityEngine.Events;
    3. using UnityEngine.EventSystems;
    4.  
    5. public class hoverInfo : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler
    6. {
    7.     void IPointerEnterHandler.OnPointerEnter(PointerEventData data)
    8.     {
    9.         Debug.Log("Hover started.");
    10.     }
    11.    
    12.    
    13.     void IPointerExitHandler.OnPointerExit(PointerEventData data)
    14.     {
    15.         Debug.Log("Hover ended.");
    16.     }
    17. }
    See you!
     
  40. nuverian

    nuverian

    Joined:
    Oct 3, 2011
    Posts:
    2,087
    Ah.. I was missing the PhysicsRaycaster to make it work in 3D objects :) Thanks.
    I've managed to integrate the new GUI with NC. I will post more tomorrow in the online Resources section. Need to do some final checks.

    By the way, the code you posted in UnityScript would look like this:
    Code (JavaScript):
    1.  
    2. #pragma strict
    3.  
    4. import UnityEngine.Events;
    5. import UnityEngine.EventSystems;
    6.  
    7. public class Example extends MonoBehaviour implements IPointerEnterHandler, IPointerExitHandler{
    8.  
    9.     function OnPointerEnter(data : PointerEventData){
    10.         Debug.Log("Enter");
    11.     }
    12.  
    13.     function OnPointerExit (data : PointerEventData) {
    14.         Debug.Log("Exit");
    15.     }
    16. }
    17.  
    Hope this helps you :)
    Cheers
     
  41. Danirey

    Danirey

    Joined:
    Apr 3, 2013
    Posts:
    548
    Hey!!! :eek: You are like a god!!!! Of corse it helps! The problem is that with this you have just killed my intention of begin using C. :D

    Thank you so much! I already have some scripting tests in c for drag and drop objects of a grid in c, but i prefer to use JS like the rest of my code.

    I swear the next game will be in C# 100% ;)

    The raycasts are cool and somewhere is an option to choose what will be blocked: none, 2d and 3d. I think it is in the canvas or in the evens object.
    I tested that and works really fine and saves you a lot of raycast coding and checking... The new build(18) of the beta has more documentation, if you don't have it yet.

    Cheers!
     
  42. Alexis14

    Alexis14

    Joined:
    Aug 6, 2014
    Posts:
    3
    Hey folks,

    it´s me again, I am trying to rotate a zylinder (it contains a rigidbody) by using the wheelCollider and one of the actions "rotate" (NC - Behaviour Tree). The purpose of the rotating zylinder is to move an object, for example like a roll in a conveyer.
    But somehow the zylinder is not spinning around the correct axis.... Hope you have some advices!

    Cheers!
     
  43. msl_manni

    msl_manni

    Joined:
    Jul 5, 2011
    Posts:
    272
    Its not yet updated, strange. Any News?
     
  44. nuverian

    nuverian

    Joined:
    Oct 3, 2011
    Posts:
    2,087
    Hah. Don't exagerate, it's just syntax :)
    I'll go and grab the new beta then.

    Hey,
    Can you please describe your setup in more detail and which action you are using to rotate it?
    Thanks :)

    Nop. It just takes forever :(
     
  45. msl_manni

    msl_manni

    Joined:
    Jul 5, 2011
    Posts:
    272
    Why not make the next update faster. :)
     
  46. nuverian

    nuverian

    Joined:
    Oct 3, 2011
    Posts:
    2,087
    What do you mean? I ment it takes forever for the Asset Store team to aprove and put it live.
    The next update is already ready. Im just waiting for this one to go live first :)
     
  47. msl_manni

    msl_manni

    Joined:
    Jul 5, 2011
    Posts:
    272
    I mean that - just push the next update, that way they may take notice about their fault. :) Dont you think so? ;)
     
  48. msl_manni

    msl_manni

    Joined:
    Jul 5, 2011
    Posts:
    272
    Still the update is not on the store. Any reason? Cant you ask the Store or check with someone there?
    Maybe they did not get the notice for the update?
     
  49. nuverian

    nuverian

    Joined:
    Oct 3, 2011
    Posts:
    2,087
    For obscured reasons the previous version was pending for like 10 days, so I went ahead and sumbitted the even next version on top of that. Here is whats to expect in the new version 1.5.8:

    Property Binder
    Similar to the Mecanim Binder introduced in version 1.5.5, there is a new script which binds any property of a component with a blackboard variable. The binding can be either -Variable to Property- or -Property to Variable- (with the first being much faster). This workflow saves from using reduntant nodes and lets the design concetrate more on the actual behaviour flow.

    2014-09-08_04h11_13.png

    Improved Script Control Tasks
    Until now Script Control tasks required the agent to be known, so it was impossible to call a function on a component variable that was created at runtime. Now, it is possible to do so by selecting the expected component type that the agent will have.

    Configurable Type Selections
    Until now whenever you were to select a type like for example when setting the type of an Object or Enum blackboard variable, you had to search through the huge list of all available types in your project every time. Now instead of this, you can configure the commonly used types in a new Editor Window and only those will show up in the popup menu. In the long run this saves lots of time in a project.
    2014-09-08_03h21_09.png

    Unity 4.6 GUI Support
    While most of Unity's new GUI is totaly accessible and usable with the use of Script Control Tasks already (image bellow), there are two new Tasks:
    ButtonClick: Will check if a button is clicked
    InterceptEvent: Will check for the selected event on the selected agent and return true when it is invoked. This can be used on any GUI element or 3D object.
    2014-09-08_03h18_56.png

    Furthermore
    • Added option in FSM states to check transitions continouesly (like now) or only after the state is Finished.
    • Added onRootStatusChanged event in BehaviourTree.
    • Added onValueChanged event in blackboard's VariableData.
    • Added SetEnum and CheckEnum Tasks.
    • Tasks are now deactivated if their Initialization fails.
    • Shared blackboards will now apear in variable seleciton dropdown even if they don't contain any variable of the type required.
    • List tasks are now subcategorized under the Blackboard category.
    • Fixed SetAnyBlackboardVariable action task.

    There are more nice things comming in the next updates, so stay tuned :)
    Cheers
     
    _met44 likes this.
  50. Danirey

    Danirey

    Joined:
    Apr 3, 2013
    Posts:
    548
    Cool! :D

    Very helpfull!

    Cheers!