Search Unity

[RELEASED] Nottorus - Unlimited Visual programming plugin

Discussion in 'Assets and Asset Store' started by Stridemann, Apr 4, 2016.

  1. gyltefors

    gyltefors

    Joined:
    Apr 5, 2013
    Posts:
    48
    I tried parsing a script I am working on, but get the following error:

    NullReferenceException: Object reference not set to an instance of an object
    Addon_CSP.ClassStructInitializerExpression..ctor (Addon_CSP.ExpressionNode leftSide, Addon_CSP.Collections.ExpressionList expressions)
    Addon_CSP.Parser.ParseSubexpression (Int32 precBound, Addon_CSP.ExpressionNode left)
    Addon_CSP.Parser.ParseSubexpression (Int32 precBound)
    Addon_CSP.Parser.ParseExpression ()
    Addon_CSP.Parser.ParseStatement ()
    Addon_CSP.Parser.ParseBlock (Addon_CSP.BlockStatement node, Boolean isCase)
    Addon_CSP.Parser.ParseBlock (Addon_CSP.BlockStatement node)
    Addon_CSP.Parser.ParseMethod (IType type, Addon_CSP.QualifiedIdentifierExpression name)
    Addon_CSP.Parser.ParseClassMember ()
    Addon_CSP.Parser.ParseClass ()
    Addon_CSP.Parser.ParseNamespaceOrTypes ()
    Addon_CSP.Parser.ParseNamespace ()
    Addon_CSP.Parser.ParseNamespaceOrTypes ()
    Addon_CSP.Parser.Parse (Addon_CSP.Collections.TokenCollection tokens, System.Collections.Generic.List`1 strings)


    [See follow up posts with screenshots. Apparently, default parameters, overloaded methods etc. breaks the parsing.]

    Also, it can not be used on a Mac (Mac has only one mouse button, uses Ctrl-Click as secondary click, Cmd-C for for copy, panning for panning and not zoom, Cmd-Delete for deleting when not using Delete etc., but I would expect a $270 to have that degree of polish), so I am afraid I'll have to remove Nottoris from my project for now, and wait until it has matured further.

    I tested Nottorus a bit more. One script can't be compiled anymore. An error mark is shown on the compile icon, but the Nottorus console is empty, and no error is reported in the Unity console either. Also, when clicking on the script icon in Nottorus, Unity will crash.
     
    Last edited: Apr 22, 2017
  2. Inspeinre

    Inspeinre

    Joined:
    Jun 15, 2013
    Posts:
    44
    I finally decided to buy it (I hope for Mac everything will be fine). Is it possible to restore images in this thread? Many are no longer available o_O
     
  3. ocimpean

    ocimpean

    Joined:
    Aug 10, 2013
    Posts:
    128
    Hello David

    Thank you for the answer. I just watched some video of yours on YouTube. I hope you will release some more, asap.
    If you don't want to use your voice your videos, maybe text to voice software could help, or even subtitles. Better that then nothing :)
     
  4. Inspeinre

    Inspeinre

    Joined:
    Jun 15, 2013
    Posts:
    44
    I did some testing - with Nottorus I had order in the code!:D
    I have a question - after parsing *.cs file created without Notorus and fixing some errors in the nodes, after successfully compiling the nodes - the code file was completely overwritten without warning. All my comments to the code, some variables and even commands (Debug.Log () for example) have disappeared. I would like Nottorus to save the previous version of the *.cs file:rolleyes:
     
  5. Stridemann

    Stridemann

    Joined:
    Oct 12, 2013
    Posts:
    251
    Thanks @daville

    Yes, why not?

    Why not a month?) DRM was extended from 1 to 3 days, but I think it will be disabled in the near future (also I think it will work (draw the nodes) a lil bit faster due to disabling code obfuscation).
     
  6. gyltefors

    gyltefors

    Joined:
    Apr 5, 2013
    Posts:
    48
    Another issue. Simple code like this:

    upload_2017-4-22_21-30-17.png

    Is parsed like this:

    upload_2017-4-22_21-31-13.png

    There is an error, and in general it looks quite strange.
     
  7. gyltefors

    gyltefors

    Joined:
    Apr 5, 2013
    Posts:
    48
    Also, this function does not parse:

    upload_2017-4-22_21-37-49.png

    Btw, would it be possible to remember the last opened script directory? When debugging parse issues like this one, you have to drill down from the top of the Asset directory each time to locate the script.
     
  8. ocimpean

    ocimpean

    Joined:
    Aug 10, 2013
    Posts:
    128
    If I am out of touch in the countryside for a week at the time and DRM cannot connect, then the program will not work anymore.
    I didn't talk about removing code obfuscation.
    Makes sense?
     
  9. Inspeinre

    Inspeinre

    Joined:
    Jun 15, 2013
    Posts:
    44
    Unknown error...What did I do wrong?
    Снимок экрана 2017-04-23 в 0.59.05.png
    Waiting to receive the code:
    Code (CSharp):
    1. void WindowFunction(int windowID)
    2.     {
    3.         style.normal.textColor = UnityEngine.Color.white;
    4.         mtext = "Have a nice day!";
    5.         UnityEngine.GUI.Label(new UnityEngine.Rect(25f, 25f, 100f, 20f), mtext);
    6.     }
    7.  
    :)
    Uncheck newGUIStyleState normal!
    everything is fine :cool:
    Снимок экрана 2017-04-23 в 1.18.45.png

    If anyone is interested:
    Снимок экрана 2017-04-23 в 1.29.06.png
    Code (CSharp):
    1. public void OnGUI()
    2.     {
    3.         windowRect = UnityEngine.GUI.Window(0, windowRect, WindowFunction, "MyWindow");
    4.     }
    All:
    Code (CSharp):
    1. using UnityEngine;
    2. using System;
    3.  
    4.  
    5. public class myNT : UnityEngine.MonoBehaviour
    6. {
    7.     public string mtext = "Hi";
    8.     public UnityEngine.Rect windowRect = new UnityEngine.Rect(20f, 20f, 600f, 300f);
    9.     public UnityEngine.GUIStyle wstyle = null;
    10.  
    11.  
    12.     void Start()
    13.     {
    14.     }
    15.     void Update()
    16.     {
    17.     }
    18.     public void OnGUI()
    19.     {
    20.         windowRect = UnityEngine.GUI.Window(0, windowRect, WindowFunction, "MyWindow");
    21.     }
    22.     public void WindowFunction(int windowID)
    23.     {
    24.         wstyle.normal.textColor = UnityEngine.Color.white;
    25.         UnityEngine.GUI.Label(new UnityEngine.Rect(25f, 25f, 100f, 20f), mtext);
    26.     }
    27. }
    to crave a pardon for neglect!
    Correct:
    Снимок экрана 2017-04-23 в 1.49.31.png
    Code (CSharp):
    1. public void WindowFunction(int windowID)
    2.     {
    3.         wstyle.normal.textColor = UnityEngine.Color.white;
    4.         mtext = "Have a nice day!";
    5.         UnityEngine.GUI.Label(new UnityEngine.Rect(25f, 25f, 100f, 20f), mtext);
    6.     }
     
    Last edited: Apr 22, 2017
  10. MrMetwurst2

    MrMetwurst2

    Joined:
    Jul 16, 2009
    Posts:
    253
    Hey Stridemann. Good to see a bit more life in the forums here and loving all the updates lately. :)

    Also thanks for adding the Pin Type function.
    Do you think you will still make a dedicated "Hash Table Builder" node?

    A similar node to create dictionaries would also be cool! :D

    Cheers!
     
    Last edited: Apr 23, 2017
  11. MrMetwurst2

    MrMetwurst2

    Joined:
    Jul 16, 2009
    Posts:
    253
    The Increment/Decrement should have been a Math node with *=. A problem with the Parser.

    I imagine the parser is (and probably always will be) a Beta feature.
    I use it as a training tool. It gives you guidelines on how to use Nottorus when you're stuck. I don't expect it to correctly convert all code into script.

    Your code examples could be whipped up in a couple of minutes in Nottorus without the need to parse. Do you need help creating them?
     
  12. Inspeinre

    Inspeinre

    Joined:
    Jun 15, 2013
    Posts:
    44
    Снимок экрана 2017-04-23 в 17.35.16.png
    Code (CSharp):
    1. public UnityEngine.Vector3 worldPosition(UnityEngine.Vector2 point)
    2.     {
    3.         float scale = 0f;
    4.         UnityEngine.Vector3 position;
    5.  
    6.         position = new UnityEngine.Vector3((point *= scale).x, -((point *= scale).y), 0f);
    7.         return position;
    8.     }
     
  13. gyltefors

    gyltefors

    Joined:
    Apr 5, 2013
    Posts:
    48
    Thank you for the replies regarding the *= operator. The examples are just extracts from a longer script I have, showing individual issues with the parser. I have been been able to modify the code a bit to parse it better, but there are still too many issues to get the full script through the parser with the current version of Nottorus (a message on what line the parse failed would awsome, now it fails silently). Personally, the parser is what I am most interested in. I would likely write code in c-sharp, and then parse it and modify it in Nottorus when I feel too tired to code. Writing code will always be quicker than using a PB style graph. The ability to go back and forth between nodes and code is what makes Nottorus unique, compared to other cheaper competitors like uScript or Nodus.

    Another thought about Nottorus. The graph node are very wide, and the tree quickly carries away horizontally into infinity. They could be more narrow, as they seem to contain excessive padding. Also, (optionally) moving the in/out flow pins to the top/bottom edges would allow vertical stacking, like Houdini or Max, which would greatly improve readability. Or even better, to have themes, so the user could select BP-style, uScript-style, Houdine-style, Scratch-style etc. Then there wouldn't ever be a need to install any other competing product.
     
    Last edited: Apr 23, 2017
  14. MrMetwurst2

    MrMetwurst2

    Joined:
    Jul 16, 2009
    Posts:
    253
    I usually like to make the variable local like below. Really Nottorus should let us edit the Function Arguments. It's probably something Stridemann should look at.


    upload_2017-4-23_23-0-20.png

    upload_2017-4-23_22-54-36.png
     
  15. gyltefors

    gyltefors

    Joined:
    Apr 5, 2013
    Posts:
    48
    Below is one example that parsed fine, but when cleaning up the graph, the wrong result is generated. The parsed version has a lot of textWriter variable nodes which clutters the graph. When cleaning up, one can either connect all to the get pin of the variable set node, as done at the top of the graph. Though, more natural when using graphs would be to connect directly to the new node, as done at the bottom of the graph, and remove all local variables completely.

    upload_2017-4-24_18-26-45.png

    The first generates correct code, but the second incorrect code.

    Code (CSharp):
    1. ///Write Data
    2. textWriter = new System.IO.StreamWriter("/tmp/ramp.pgm");
    3. ///Write Data
    4. textWriter.Write(data);
    5. ///Write Data
    6. new System.IO.StreamWriter("/tmp/ramp.pgm").Close();
    I am not sure how Unreal would treat this case, but other node based tools like Max never require local variables, which could be generated implicitly as needed instead. Without the explicit variables in the graph, the flow would be much more intuitive.

    Also note how wide the New StreamWriter node is. It could be made a lot narrower, to keep things more compact and readable, but removing excessive padding.
     
  16. MrMetwurst2

    MrMetwurst2

    Joined:
    Jul 16, 2009
    Posts:
    253
    You should be closing textWriter like this...

    upload_2017-4-25_1-39-44.png
    upload_2017-4-25_1-40-10.png

    Or let Nottorus handle the variables by ticking the create temp variable box like this...

    upload_2017-4-25_1-49-31.png

    upload_2017-4-25_1-49-54.png
     
    Last edited: Apr 24, 2017
  17. gyltefors

    gyltefors

    Joined:
    Apr 5, 2013
    Posts:
    48
    Awesome, the temp variable was just what I needed! Though, the checkbox is not there in my graph. Are you using a newer beta version? If we had the same option for creating temporary function arguments, then the issue discussed earlier would be solved as well.
     
  18. Inspeinre

    Inspeinre

    Joined:
    Jun 15, 2013
    Posts:
    44
    In fact, the variant with a textWriter variable is much more correct and looks more logical.
     
  19. MrMetwurst2

    MrMetwurst2

    Joined:
    Jul 16, 2009
    Posts:
    253
    You might want to go back and look at your graph. It's right there.
    Screenshot_20170425-180846.png
    It's just the normal version. When you attach the pin to 2 nodes it will give you that option where appropriate.
     
  20. gyltefors

    gyltefors

    Joined:
    Apr 5, 2013
    Posts:
    48
    I see, I had disconnected the second node to use the variable, which removed the checkmark. Whether to use explicit or implicit local variables is probably a matter of taste, but personally I prefer the implicit version with fewer nodes when working visually.

    Though, this is broken in debug mode, where it will create separate temp variables for each output connection.

    Another Mac issue. The cursor is only one pixel wide, which on a retina screen by definition is invisible, as it is thinner than the eye can see. Also the tab menu appears to require clicking once in the text field before typing, which defeats the purpose of a tab menu, end the menu does not go away with the escape key. Also, no Cmd-D shortcut for duplication nodes is frustrating (as is the mix between having to use either Cmd-C and Ctrl-C for copying, depending on what you copy).

    Also, is it possible to turn off generation of verbatim string literals? The generated code appends @ to strings, so strings can not contain any escaped characters. When used in C-Sharp, you could enter new-lines etc, but in Nottorus, the text fields do not allow you to enter multiple lines, so non-verbatim strings would make more sense.

    When opening a graph using the 'recent' list, absolute paths are used, causing a 'Use path relative to project folder' error when compiling, and the compiled script is not loaded. As mentioned above, rather than an open recent, just remembering the last folder opened would be more efficient, as well as allowing graphs to be opened via the project view.
     
    Last edited: Apr 27, 2017
    valentinwinkelmann likes this.
  21. gyltefors

    gyltefors

    Joined:
    Apr 5, 2013
    Posts:
    48
    Other issues.

    Comment boxes are drawn outside the view area:
    upload_2017-4-26_16-41-51.png

    Dragging game objects into the view will put the popup outside the view area:
    upload_2017-4-26_16-42-56.png

    Also getting an error message "'xxx.cs' is an absolute path, importing is skipped", and the graph stopped generating temporarily.

    There are also a lot of 'inconsistent line endings' spam in the console.
     
  22. Stridemann

    Stridemann

    Joined:
    Oct 12, 2013
    Posts:
    251
    Omg, seems unity forum doesn't deign to send me a notification about new messages in this forum..

    As you know parser still in beta. I'm still making improvements, but it can make a lots of mistakes even on simple scripts.

    About MAC: everything is the same as in windows, but pre-compiler will doesn't work (as I know it still not fixed in unity on MAC platforms). pre-compiler can capture some mistakes that missed by nottorus (multiplying vector by vector, etc.).

    "Unknown error during compilation" - mean DRM found some problem in security and it skip the compilation.
    DRM was removed in v1.21 (released, waiting aprovement)

    Yes, but there was a warning (New script->Parse button description) about code overriding and making a copy before compilation parsed script.

    Yeah, I will look at this. Thought it is fixable :)

    Also thanks to @MrMetwurst2 for a help.
     
    MrMetwurst2 and daville like this.
  23. daville

    daville

    Joined:
    Aug 5, 2012
    Posts:
    303
    :eek:

    That's brave.
     
    MrMetwurst2 likes this.
  24. somosky

    somosky

    Joined:
    Feb 15, 2014
    Posts:
    138
    HI Daville I was browsing the forum here for Nottorus and saw you were talking about making a few tutorial videos. I was wondering if any of them have to do with Courintines or with arrays and how they work. I'm aware Nottorus isn't a learning tool exactly but that's exactly what I'm using it for and it's helping a lot but these two subjects are still confusing me. Not what they are supposed to do because I understand that but how to actually do them.

    For example maybe using a Courintine for a reload time on a weapon and how to access certain parts of anew array. Let's say I have a script with 10 weapons and want to be able to change weapon #3 in the array or something along those lines.
     
  25. MrMetwurst2

    MrMetwurst2

    Joined:
    Jul 16, 2009
    Posts:
    253
    I'll see how I go. I might try whip up something over the weekend if Dave doesn't beat me to it ;)
     
  26. somosky

    somosky

    Joined:
    Feb 15, 2014
    Posts:
    138
    So I attempted last night to teach myself arrays which went pretty well at first. I understand how they work with Ints and Floats now using te get and set values but I'm running into a issue of of I set the Array to GameObject I can't do anything with the GameObject array at all. There are no nodes that I can create off of the get function on my GameObject array except New Variable. Any ideas? I'm simply trying to be able to retrieve a Gameobject off of a specific Index of the array.
     
  27. Stridemann

    Stridemann

    Joined:
    Oct 12, 2013
    Posts:
    251
    Thought you need a Foreach node:
     
  28. Stridemann

    Stridemann

    Joined:
    Oct 12, 2013
    Posts:
    251
    I found 2 bugs with array nodes:
    Make array with new instance initialisation:

    ..compilation fail..

    The second is:

    ..and after using the out pin it change the order of In pins and compilation failed:

    Will be fixed in next update.
     
  29. daville

    daville

    Joined:
    Aug 5, 2012
    Posts:
    303
    Yes Sorry I've been very busy at work, I have contemplated arrays and other things...

    I could make the tutorials faster if I don't speak, that's my inconvinience, I'm not used to sepeak in english and I have to record many times the audio to find a version that sounds less awkward... also Youtube is removing annotations soon, so if I write the instructios they'll have to be over the video.

    I'll see what I can do, since people have complained about the lack of voice on my videos that's why I'm making an effort to record audio.
     
  30. somosky

    somosky

    Joined:
    Feb 15, 2014
    Posts:
    138
    Thank you. My issue was that I cannot get the Get/Set Array node will not be created directly from the Get node of my GameObject array but I can just create the node and attach it manually no big deal. Thank you for the reply. Very helpful.
     
  31. somosky

    somosky

    Joined:
    Feb 15, 2014
    Posts:
    138
    I spent some time last night learning arrays and they are actually pretty simple. I was having a issue with my GameObject array where I couldn't create the Node Get/Set Array directly from my GameObject array I had to create it sepertry and attach it manually which is no big deal but I just was going crazy trying to figure out how to get the Get/Set node. I wonder if that's deliberate or a bug. Either way no big deal it's easy to get working.

    I'm still super confused by Courintines though haha.

    I watched all of your videos when I first got Nottorus and found them very helpful. I guess audio would have made them a bit nicer but just the information in general is nice so it didn't bother me. Maybe just do a quick intro with what you are going to do and explain the ideas you are going to go over and then have no audio while you are actually producing the script in Nottorus. I think that might be a happy medium between no audio and audio.
     
    daville likes this.
  32. Stridemann

    Stridemann

    Joined:
    Oct 12, 2013
    Posts:
    251
    List<> (List<Gameobject>) is more simple then arrays) You can get/insert/add/remove array element in any time and no need to set array length. Also they is serializable (displayed in inspector as arrays)
     
  33. Alienmadness

    Alienmadness

    Joined:
    Sep 6, 2012
    Posts:
    109
    i have playmaker and blox, this is hands down much better in many ways.
    - creates clean c# scripts, which means you can delete nottorus from your project prior to build.
    - no custom dll or other stuff in the way
    - code is clean. not some computer generated garbage.

    i bought this before the sale (by about a month or so). and i have no regrets.
     
  34. MrMetwurst2

    MrMetwurst2

    Joined:
    Jul 16, 2009
    Posts:
    253
    Hiya,

    Not sure if this is exactly what you're after but here's a small tutorial that covers Arrays and Coroutines.
    Let me know if there's any questions.



    And here's the code produced by Nottorus...

    Code (csharp):
    1.  
    2. using UnityEngine;
    3. using System;
    4. using System.Collections;
    5.  
    6.  
    7. public class ArraysAndCoroutines : UnityEngine.MonoBehaviour
    8. {
    9.     public UnityEngine.GameObject cube = null;
    10.     public UnityEngine.GameObject[] cubesArray = new UnityEngine.GameObject[10];
    11.     public int arrayIndex = 0;
    12.  
    13.  
    14.     void Update()
    15.     {
    16.         if (UnityEngine.Input.GetMouseButtonDown(0))
    17.         {
    18.             cubesArray[arrayIndex] = Instantiate(cube, UnityEngine.Camera.main.ScreenToWorldPoint(new UnityEngine.Vector3(UnityEngine.Input.mousePosition.x, UnityEngine.Input.mousePosition.y, 20f)), new UnityEngine.Quaternion(0f, 0f, 0f, 0f));
    19.             arrayIndex ++;
    20.             if ((arrayIndex == 10))
    21.             {
    22.                 arrayIndex = 0;
    23.             }
    24.  
    25.             StartCoroutine(SpinCubes());
    26.         }
    27.  
    28.     }
    29.     public System.Collections.IEnumerator SpinCubes()
    30.     {
    31.         foreach (var iterator_128 in cubesArray)
    32.         {
    33.             if ((iterator_128 != null))
    34.             {
    35.                 iterator_128.transform.rotation = new UnityEngine.Quaternion(UnityEngine.Random.value, UnityEngine.Random.value, UnityEngine.Random.value, UnityEngine.Random.value);
    36.                 yield return null;
    37.             }
    38.  
    39.         }
    40.     }
    41. }
    42.  
     
    Stridemann and gyltefors like this.
  35. ModStoryGames

    ModStoryGames

    Joined:
    Apr 27, 2012
    Posts:
    179
    Is there something going on with the Asset Store today? I just purchased Nottorus this morning, and I can't get it to download. I get "Error" when I click the Download button.

    EDIT: I already sent the AS an email, but they haven't responded yet. I was just looking forward to playing with this...
     
  36. MrMetwurst2

    MrMetwurst2

    Joined:
    Jul 16, 2009
    Posts:
    253
    I downloaded the latest update yesterday no problem.
    Have you tried a different asset?
     
  37. Sussifix

    Sussifix

    Joined:
    Dec 1, 2015
    Posts:
    9
    Same problem. Can't download and no answer per PM in Nottorus forum.
    Other assets no problem.
     
  38. Stridemann

    Stridemann

    Joined:
    Oct 12, 2013
    Posts:
    251
    Hi.
    Sorry guys, but I'm on vacation now, even don't have a good internet.
    If you can't download- it's a problem with assetstore.
    Anyway I will be at home on tuesday and will try to fix this.
     
  39. Sussifix

    Sussifix

    Joined:
    Dec 1, 2015
    Posts:
    9
    Thanks for answer. Happy vacation!
     
  40. Alienmadness

    Alienmadness

    Joined:
    Sep 6, 2012
    Posts:
    109
    I'm having the same problem with the download. i get an error as well. have no issues with any other asset.

    it's only the latest update that seems to be problematic.
     
  41. daville

    daville

    Joined:
    Aug 5, 2012
    Posts:
    303
    Oh I posted the other day saying also that I have the same problem with the download, but other assets download fine... but the comment it's gone :/ I also posted a picture... weird...
     
  42. Stridemann

    Stridemann

    Joined:
    Oct 12, 2013
    Posts:
    251
    I'm home. Just test it, everything works fine for me.
    Chrome assetstore, button open the assetstore page in unity, and I just click import:

    Tested on:
    Unity 5.6.0f3
    Unity 5.0.0f4
     
    daville likes this.
  43. Sussifix

    Sussifix

    Joined:
    Dec 1, 2015
    Posts:
    9
    Hm, still not for me:

    upload_2017-5-1_20-1-7.png


    All other assets working fine
     
  44. Alienmadness

    Alienmadness

    Joined:
    Sep 6, 2012
    Posts:
    109
    yes, i get the same error WPG_Member is getting. i tried a new project as well, to see if it was project specific. Same error.
    unity version 5.6.0p2 (Downloading 5.6.0p3 now). will report back.

    5.6.0.p3 gives error also.
     
    Last edited: May 1, 2017
  45. Alienmadness

    Alienmadness

    Joined:
    Sep 6, 2012
    Posts:
    109
    I can import from the main page, but this doesn't download the updated version. if i go to downloads and selected update. i get an error.
     
  46. Alienmadness

    Alienmadness

    Joined:
    Sep 6, 2012
    Posts:
    109
    @daville
    you message was removed, because the unity forums were hacked and they had to revert back to a previous backup.
     
    daville likes this.
  47. iamsam

    iamsam

    Joined:
    Dec 22, 2013
    Posts:
    233
    I think it may be due to an error in uploading the new version to the asset store. If you look at the Unity store page - the "Package Contents" window is empty as well as it does not list below the asset version number which Unity version was used to upload the package.
     
  48. Stridemann

    Stridemann

    Joined:
    Oct 12, 2013
    Posts:
    251
    Omg, true.
    Ok guys I just republish v1.21 as v1.22. Usially it takes 2-5 days for approvement.

    Also it available without error on the main page: https://www.assetstore.unity3d.com/en/#!/content/59656

    Cheers.
     
    Last edited: May 1, 2017
  49. Inspeinre

    Inspeinre

    Joined:
    Jun 15, 2013
    Posts:
    44
    Where I can read the changes in version 1.21 or 1.22? )
     
  50. gyltefors

    gyltefors

    Joined:
    Apr 5, 2013
    Posts:
    48
    So Unity reviewers spend 2-4 days on a review, and accept an empty package which they sell for 300 bucks... Which is one more reason to learn BP (for which Nottorus is a big help).