Search Unity

RATED ★★★★★ [RELEASED] RockTomate - Automate repetitive tasks in Unity

Discussion in 'Assets and Asset Store' started by elmar1028, Jan 22, 2020.

  1. elmar1028

    elmar1028

    Joined:
    Nov 21, 2013
    Posts:
    2,359

    Have you ever been stuck in a perpetual cycle of doing manual work such as:
    1. Building your project for different platforms
    2. Running test scenes
    3. Baking lightmaps and occlusion culling for every scene

    Surely you might've created simple scripts to handle repetitive tasks, but they're likely only a quick-fix solution that doesn't scale well as requirements change. As a result, all those scripts pile up as technical debt in your project!

    If you've seen yourself in that situation, then you need RockTomate.

    Logo_Wide_1024x512.png

    What is RockTomate?

    RockTomate is an editor extension that lets you create automated, reusable and adaptive actions in your project that can be run in a single click.

    Here's a 3-minute demonstration of creating a job to build asset bundles for you:


    Features

    Reliable User Interface

    rocktomate-workspace.png

    The UI is designed to manage large jobs with hundreds of steps. The process of building steps is fun and simple: drag and drop into the list, set fields from the Inspector Window and press "play". Bam! You'll see steps being executed live! Doesn't stagger the whole Editor and lets you cancel anytime.

    Formulas

    Every step parameter can be evaluated on the run. These can let you resolve variables and run macros, which lets you do mathematical operations, resolve wildcard paths and lot more!

    forum_print_variable.gif

    You can even create reusable variables across multiple jobs. There are also tons of built-in variables for you to use.

    Flow Control

    You can define branching, create for/while loops and even run jobs within jobs! The possibilities are endless!

    Run from the Command-Line

    Jenkins.png

    RockTomate is perfect for running Unity from a build server such as Jenkins. It's as simple as passing 'RockTomate.Jobs.Start' as a static method when starting Unity in batch mode.

    You can also pass custom arguments to RockTomate and map them to job variables!

    Extendable

    make_steps.png

    RockTomate is designed to be extendable. Creating own steps and macros is as simple as creating a C# class: declare public members, assign few attributes and you're done!

    Steps and Macros are free and open source!

    All RockTomate steps' and macros' are open-source on a public repository! Everyone is free to contribute!

    Big plans ahead

    RockTomate has been in development for over a year: it's stable and ready production use!

    But I believe it has a more optimistic future other than simple bug fixes. Event-based job execution, a more sophisticated formula editor, more steps, usability improvements and lots more!

    Documentation is live and can be found here.
    I hope you'll enjoy using RockTomate as much as I enjoyed creating it!

    If you have any questions, feel free to ask! :D
     
    Last edited: Jan 19, 2022
    firstuser, Recon03, codestage and 2 others like this.
  2. elmar1028

    elmar1028

    Joined:
    Nov 21, 2013
    Posts:
    2,359
    RockTomate will come with several premade jobs so you won't have to start from scratch. Here are some so far:
    • Baking Scene Data
    • Build for all available platforms
    • Build asset bundles for all platforms
     
  3. elmar1028

    elmar1028

    Joined:
    Nov 21, 2013
    Posts:
    2,359
    Personally, I use RockTomate to test and publish my own assets. Here's how my Job looks like:

    example_job.png

    What it basically does is:
    • Create a temp directory
    • Create a template folder. Copy into that folder the following:
      • Core RockTomate scripts
      • Step and Macro scripts downloaded from a public repository
      • Helper files such as Asset Store Tools plugin
      • Unit Tests
    • For every available Unity installation:
      • Create a project through batch mode
      • Copy template contents into the project's "Assets" folder
      • Re-open the project to compile new scripts and refresh the asset database
      • Run unit tests
    In the near future, I plan to add an ability to publish directly to the store. I also intend to create a more generalized version and use that across my other projects such as Tutorial Master and Project Scan.
     
    AdamGoodrich likes this.
  4. AdamGoodrich

    AdamGoodrich

    Joined:
    Feb 12, 2013
    Posts:
    3,782
    Looking forward to learning more about this!
     
    elmar1028 likes this.
  5. elmar1028

    elmar1028

    Joined:
    Nov 21, 2013
    Posts:
    2,359
    I am glad you're interested! I don't have many videos just yet, but I've published full documentation here.
     
  6. elmar1028

    elmar1028

    Joined:
    Nov 21, 2013
    Posts:
    2,359
    Made a quick tutorial - Setting Up Editor Workspace and creating a Job.

     
  7. Ian-Lai

    Ian-Lai

    Joined:
    Jul 31, 2019
    Posts:
    15
    I've used a similar asset named utomate before. But I can't find it.
    I really want to buy this asset now.
     
    elmar1028 likes this.
  8. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,688
    uTomate was deprecated a few years ago. It's no longer on the Asset Store unless you already have it purchased in your account from before it was deprecated. (It also doesn't work with Unity 2018+ without a lot of manual updating.)

    I think that's one of the reasons elmar1028 decided to develop RockTomate, as a replacement.
     
    elmar1028 likes this.
  9. elmar1028

    elmar1028

    Joined:
    Nov 21, 2013
    Posts:
    2,359
    Correct. RockTomate aims to be a replacement, and hopefully, an improvement over uTomate.
     
  10. elmar1028

    elmar1028

    Joined:
    Nov 21, 2013
    Posts:
    2,359
    TonyLi likes this.
  11. elmar1028

    elmar1028

    Joined:
    Nov 21, 2013
    Posts:
    2,359
    9 days until promotion ends!

    Get RockTomate at a discounted price!
     
    Last edited: Feb 19, 2020
    MostHated likes this.
  12. elmar1028

    elmar1028

    Joined:
    Nov 21, 2013
    Posts:
    2,359
    New step: "WHILE"

    Works exactly as you'd expect a while loop to function in other programming languages: repeat a set of actions as long as conditions are true.

    Here's the quick demo:

    while_loop_demo.gif
    Will be included in the next update! :D

    Happy Valentine's Day!
     
    TonyLi likes this.
  13. rplionelusa

    rplionelusa

    Joined:
    Jul 15, 2019
    Posts:
    3
    Anyone can help me out with Unity Jenkins build automation for a fee?
     
  14. elmar1028

    elmar1028

    Joined:
    Nov 21, 2013
    Posts:
    2,359
    Hi,

    Is this related to RockTomate product? If not, I recommend making a new thread on this topic.

    Elmar
     
  15. elmar1028

    elmar1028

    Joined:
    Nov 21, 2013
    Posts:
    2,359
    Due to prolonged review process, I couldn't get price change updated on time. As such, the sale will continue on until Asset Store team approves changes.

    While you can still get RockTomate at a discounted rate, expect the sale to end at any point.

    Apologies in advance!
     
  16. Ian-Lai

    Ian-Lai

    Joined:
    Jul 31, 2019
    Posts:
    15
    Hi,

    I've bought rocktomate from asset store. I want to compile my scripts by this tools. But it seems not as easy in visual studio by click Build. I make a simple cs file below for Compile DLL test.

    Code (CSharp):
    1. public class DLLTest
    2. {
    3.    
    4. }
    5.  
    I've put it below Assets folder and write Script Paths like below in formula.

    %AssetsDir%/DLLTest.cs

    But the result is failed. The Job Session Log shows messages below.

    21/02/2020 12:23:16.971 | WARNING | Step "Compile DLL" at ROW 1: (0,0) : warning CS2029: Invalid conditional define symbol `'
    21/02/2020 12:23:16.972 | ERROR | Step "Compile DLL" at ROW 1: (0,0) : error :
    21/02/2020 12:23:16.972 | ERROR | Step "Compile DLL" at ROW 1: (0,0) : error : at System.Reflection.Emit.AssemblyBuilder.DefineDynamicModule (System.String name, System.String fileName, Boolean emitSymbolInfo, Boolean transient) [0x00000] in <filename unknown>:0
    21/02/2020 12:23:16.972 | ERROR | Step "Compile DLL" at ROW 1: (0,0) : error : at System.Reflection.Emit.AssemblyBuilder.DefineDynamicModule (System.String name, System.String fileName, Boolean emitSymbolInfo) [0x00000] in <filename unknown>:0
    21/02/2020 12:23:16.973 | ERROR | Step "Compile DLL" at ROW 1: (0,0) : error : at Mono.CSharp.CodeGen.Init (System.String name, System.String output, Boolean want_debugging_support, Mono.CSharp.CompilerContext ctx) [0x00000] in <filename unknown>:0
    21/02/2020 12:23:16.973 | ERROR | Step "Compile DLL" at ROW 1: (0,0) : error : at Mono.CSharp.Driver.Compile () [0x00000] in <filename unknown>:0
    21/02/2020 12:23:16.973 | ERROR | Step "Compile DLL" at ROW 1: (0,0) : error : at Mono.CSharp.Driver.Main (System.String[] args) [0x00000] in <filename unknown>:0

    Is there any simple compile dll guide?
     
  17. elmar1028

    elmar1028

    Joined:
    Nov 21, 2013
    Posts:
    2,359
    Hi Ian,

    Could you show me your "Compille DLL" step properties?

    Elmar
     
  18. Ian-Lai

    Ian-Lai

    Joined:
    Jul 31, 2019
    Posts:
    15
    inspector.png
     
  19. elmar1028

    elmar1028

    Joined:
    Nov 21, 2013
    Posts:
    2,359
    "Output Path" field should be the filename, not the directory.

    So something like
    %ProjectFolderDir%/Output/MyLibrary.dll
     
    Last edited: Feb 21, 2020
  20. Ian-Lai

    Ian-Lai

    Joined:
    Jul 31, 2019
    Posts:
    15
    Thanks. Test dll can build now. But there are another question in build apk. My step is below.

    Image 3.png

    But it failed with this exception message.


    ArgumentException: The Assembly UnityEditor is referenced by OdinSerializer ('Assets/RockTomate/Libraries/OdinSerializer/OdinSerializer.dll'). But the dll is not allowed to be included or could not be found.
    UnityEditor.AssemblyHelper.AddReferencedAssembliesRecurse (System.String assemblyPath, System.Collections.Generic.List`1 alreadyFoundAssemblies, System.String[] allAssemblyPaths, System.String[] foldersToSearch, System.Collections.Generic.Dictionary`2 cache, BuildTarget target) (at C:/buildslave/unity/build/Editor/Mono/AssemblyHelper.cs:150)
    UnityEditor.AssemblyHelper.FindAssembliesReferencedBy (System.String[] paths, System.String[] foldersToSearch, BuildTarget target) (at C:/buildslave/unity/build/Editor/Mono/AssemblyHelper.cs:190)
    UnityEditor.BuildPipeline:BuildPlayer(BuildPlayerOptions)
    HardCodeLab.RockTomate.Steps.BuildPlayerStep:OnStepStart() (at Assets/RockTomate/Scripts/Steps/Classes/Building/BuildPlayerStep.cs:124)
    HardCodeLab.RockTomate.Core.Steps.SimpleStep:StartStep() (at Assets/RockTomate/Scripts/Core/Steps/SimpleStep.cs:30)
    HardCodeLab.RockTomate.Core.Steps.<OnExecute>c__Iterator0:MoveNext() (at Assets/RockTomate/Scripts/Core/Steps/SimpleStep.cs:17)
    HardCodeLab.RockTomate.Core.Coroutines.EditorCoroutines:MoveNext(EditorCoroutine) (at Assets/RockTomate/Scripts/Core/Utils/EditorCoroutines/EditorCoroutines.cs:303)
    HardCodeLab.RockTomate.Core.Coroutines.EditorCoroutines:GoStartCoroutine(EditorCoroutine) (at Assets/RockTomate/Scripts/Core/Utils/EditorCoroutines/EditorCoroutines.cs:255)
    HardCodeLab.RockTomate.Core.Coroutines.EditorCoroutines:GoStartCoroutine(IEnumerator, Object) (at Assets/RockTomate/Scripts/Core/Utils/EditorCoroutines/EditorCoroutines.cs:228)
    HardCodeLab.RockTomate.Core.Coroutines.EditorCoroutines:StartCoroutine(IEnumerator, Object) (at Assets/RockTomate/Scripts/Core/Utils/EditorCoroutines/EditorCoroutines.cs:167)
    HardCodeLab.RockTomate.Core.Steps.<Execute>c__Iterator0:MoveNext() (at Assets/RockTomate/Scripts/Core/Steps/Step.cs:255)
    HardCodeLab.RockTomate.Core.Coroutines.EditorCoroutines:MoveNext(EditorCoroutine) (at Assets/RockTomate/Scripts/Core/Utils/EditorCoroutines/EditorCoroutines.cs:303)
    HardCodeLab.RockTomate.Core.Coroutines.EditorCoroutines:OnUpdate() (at Assets/RockTomate/Scripts/Core/Utils/EditorCoroutines/EditorCoroutines.cs:286)
    UnityEditor.EditorApplication:Internal_CallUpdateFunctions()

     
  21. elmar1028

    elmar1028

    Joined:
    Nov 21, 2013
    Posts:
    2,359
    Hi @Ian-Lai

    Could you try going to
    Assets/RockTomate/Libraries/OdinSerializer/OdinSerializer.dll
    and set it to be available in Editor only, like so:

    odin_serializer_config.png
    I seem to have overlooked that, which may be the reason why Unity tried including it into your build. I will be sure to have that fixed in the next update.

    Let me know if it works.

    Elmar
     
  22. Ian-Lai

    Ian-Lai

    Joined:
    Jul 31, 2019
    Posts:
    15
    Hi Elmar,

    I change OdinSerializer.dll to only editor and cause another error. It triggered because Assets/RockTomate/Scripts/Core/Libraries/System.Data.dll is build in .NET 4.x. But my enviroment is .NET3.5. It may be another issue.

    Ian
     
  23. elmar1028

    elmar1028

    Joined:
    Nov 21, 2013
    Posts:
    2,359
    This library shouldn't be here. RockTomate doesn't depend on it anymore so you're free to remove it. Apologies for that.
     
  24. elmar1028

    elmar1028

    Joined:
    Nov 21, 2013
    Posts:
    2,359
  25. elmar1028

    elmar1028

    Joined:
    Nov 21, 2013
    Posts:
    2,359
    RockTomate Release Notes 1.0.1
    Changes & Improvements
    • Now plays a system sound when Job has finished the execution when Unity isn't in focus
    • [Variables Window] Can now copy root variable values to the clipboard (both dynamic and non-dynamic)
    • [Variables Window] Root variables that resolve to array/list now show the first 20 items on the list. Copying to the clipboard will return all array items separated by a line.
    • [Job Editor Window] Now shows elapsed time while and after running a job.
    • Added %WorkDir% root variable - resolves a current working directory of Unity
    • Step property fields now properly updated when Step class is modified (e.g. adding or removing a new field etc.)
    Steps
    • New Step: WHILE Loop
    • New Step: Upload to Asset Store
    • [Move File] Now asks for destination file path, allowing you to rename a file while moving it
    Bug Fixes
    • Included Job asset files no longer appear corrupted
    • Adjusted visuals to make UI more readable for dark theme users
    • Fixed a bug when OR Joining operator would always return true
    • Fixed an issue when RockTomate prevented Unity from compiling the game
    • Fixed a minor issue where the name of the Job would have "(clone)" appended to it when running through a dialog window.
    • Removed unused DLL
    • Fixed a bug when child step would get deselected after job changes are saved
    • Fixed a bug when it was possible to create new variables while the job was running
    • Fixed an exception being thrown when trying to update job metadata when no job is being edited
    • Fixed an exception being thrown when trying to start a job with an empty variable bank
    • Fixed a bug when maximizing any window would throw errors for other editor windows
     
    Last edited: Apr 14, 2020
    codestage and TonyLi like this.
  26. elmar1028

    elmar1028

    Joined:
    Nov 21, 2013
    Posts:
    2,359
    TonyLi likes this.
  27. Edy

    Edy

    Joined:
    Jun 3, 2010
    Posts:
    2,507
    Hi,

    I've been trying RockTomate for the first time. It's very good overall, but contains several issues and a show-stopper. Here's my feedback (Unity 2018 LTS):
    • There's a missing step in the included tutorial PDF. It doesn't show how to configure the Print Log step to show the output of the Loop step (as for the tutorial only, it prints empty log messages).
    • RockTomate adds a sub-menu to the very top of the Project context menu (right-click in the Project window). This is quite annoying, as I'm very used to expect the Create submenu at the top of the context menu.
    • Creates a RockTomate folder for caches and temporary files in the root of the project folder. This requires modifying any VCS settings for excluding that folder. I think such folder should go inside the Library or Temp folders.
    • Can't rename job variables in the Variables window. The only way is creating a new variable and deleting old.
    • Couldn't found a reference for the available macros and their usage.
    • When the "Compile To Dll" step fails, the Log window shows nothing and throws errors to the Console.
    • Removes all my Scripting Define Symbols in the Project Settings and replaces them with ROCKTOMATE alone. It does this every time the project is rebuilt.
    After hitting the latest one I had to remove RockTomate from my project. Obviously, I need my own scripting define symbols in place. I could accept ROCKTOMATE to be added once after the package is first imported, but I should be allowed to remove it.

    Hope you find this feedback useful :)
     
  28. elmar1028

    elmar1028

    Joined:
    Nov 21, 2013
    Posts:
    2,359
    Hi @Edy

    In Print Log, you'd need to update 'Message' field like so:

    upload_2020-3-29_17-41-48.png

    I will update the manual pdf to include missing step.

    That's for running a job from the context menu. There is already a creation sub-menu for creating Jobs and Variable Banks.

    I am going to move it somewhere lower down to avoid problems.

    Good point. I will move it into 'Temp' directory.

    This is weird. Did you try pressing F2 when selecting a variable?
    It's not as intuitive as I imagined. I will introduce additional ways of renaming a variable.

    You can find them here: https://github.com/RockTomate/Macros/wiki/
    The page is a bit outdated, but I will fix that in the coming days.

    What kind of errors show up?

    That one's pretty bad! Could you send me your invoice number through private messaging so that I could verify the purchase and send you a fix?

    Sorry for the inconvenience!

    Elmar
     
  29. Edy

    Edy

    Joined:
    Jun 3, 2010
    Posts:
    2,507
    Oh! No, I just had tried double-clicking. For some reason I assumed that was the way (typical in tabulated data)
    Sorry, I should have taken some screenshots before removing the package. But the issue was pretty consistent: add a Compile To Dll step with arbitrary parameters (so it will fail), Run Job, open the Log.
    Done.

    Thanks for your support!
     
  30. elmar1028

    elmar1028

    Joined:
    Nov 21, 2013
    Posts:
    2,359
    Hmm, the compilation errors will get printed out. If a field is missing then it gets printed as well.

    For field "Output Path", do the leading directories exist?
     
  31. Edy

    Edy

    Joined:
    Jun 3, 2010
    Posts:
    2,507
    The directory didn't exist, and that was a cause of failure of the component. But the log didn't show anything and throw errors in the console. I'll give you more details if that happens again (for now I'll continue using VS to compile to dll).
     
  32. elmar1028

    elmar1028

    Joined:
    Nov 21, 2013
    Posts:
    2,359
    Hi Edy,

    That was the exact problem the other user had. I have updated it to auto-create a directory structure if it doesn't exist.

    You can find it here: https://github.com/RockTomate/Steps/blob/master/Classes/Building/CompileDllStep.cs

    Elmar
     
    Recon03 and Edy like this.
  33. Recon03

    Recon03

    Joined:
    Aug 5, 2013
    Posts:
    845

    Glad to see this released, I know you asked me early on to beta test and I said no, I get asked a lot as I test many, many assets over the last years since the asset store opened..... nearly. and glad that you proved me wrong. I didn't think it would release as I see to many that I test for, and I nearly ever got a thank you, from alot of them.... So, I know my good friend tested for you, and was happy to hear you released. and things are going well.


    I used Utomate for many years too. So, I hope to buy into this, once the virus, is handled. ( I live in a hot spot, so soon as it claims down I will come support you. I just wanted to say, great job. Glad to see you followed through with this and that it has come to light.. I see to many people asking me, and it ends up being a waste of my time.

    So keep up the great work..!


    PS( alot of users know me from helping users and being around, I will post this on some of the Discords I belong to, so I hope to see this running for years to come. ( its a most needed asset for the community.) ..
     
    elmar1028 likes this.
  34. elmar1028

    elmar1028

    Joined:
    Nov 21, 2013
    Posts:
    2,359
    Thank you for your kind words and support, @Recon03! I really appreciate it! :)

    Stay safe!
     
  35. Ian-Lai

    Ian-Lai

    Joined:
    Jul 31, 2019
    Posts:
    15
    Hi Elmar

    Where can I find the information about special operator inside fx like word between % is present as variable. My compile dll step has different Additional Compile Symbols in different condition. I am wondering is there any operator could do so or I just need to duplicate into different steps.
     
  36. Ian-Lai

    Ian-Lai

    Joined:
    Jul 31, 2019
    Posts:
    15
    Hi Elmar

    When I put "Run Job" step in job editor. There are bunch of log displayed in console.

    Unexpected top level layout group! Missing GUILayout.EndScrollView/EndVertical/EndHorizontal?
    UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr)


    ArgumentException: failed to convert parameters
    System.Reflection.MonoMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) (at /Users/builduser/buildslave/mono/build/mcs/class/corlib/System.Reflection/MonoMethod.cs:192)
    System.Reflection.MethodBase.Invoke (System.Object obj, System.Object[] parameters) (at /Users/builduser/buildslave/mono/build/mcs/class/corlib/System.Reflection/MethodBase.cs:115)
    HardCodeLab.RockTomate.Core.Extensions.MemberInfoExtensions.SetMemberValue (System.Reflection.MemberInfo member, System.Object obj, System.Object value) (at Assets/RockTomate/Scripts/Core/Extensions/MemberInfoExtensions.cs:55)
    HardCodeLab.RockTomate.Core.Metadata.FieldMetadata.SetValue (HardCodeLab.RockTomate.Core.Steps.Step step, System.Object newValue) (at Assets/RockTomate/Scripts/Core/Data/Metadata/FieldMetadata.cs:208)
    HardCodeLab.RockTomate.Editor.Controls.StepDrawer.RenderInputField (HardCodeLab.RockTomate.Core.Steps.Step step, HardCodeLab.RockTomate.Core.Metadata.FieldMetadata inputField, HardCodeLab.RockTomate.Core.Data.FormulaCollection formulaCollection, System.Object currentValue) (at Assets/RockTomate/Scripts/Editor/Controls/Drawers/Steps/StepDrawer.cs:218)
    HardCodeLab.RockTomate.Editor.Controls.StepDrawer.RenderInputFields (HardCodeLab.RockTomate.Core.Steps.Step step, HardCodeLab.RockTomate.Core.Metadata.StepMetadata stepMetadata) (at Assets/RockTomate/Scripts/Editor/Controls/Drawers/Steps/StepDrawer.cs:145)
    HardCodeLab.RockTomate.Editor.Controls.StepDrawer.RenderStepFields (HardCodeLab.RockTomate.Core.Steps.Step step, HardCodeLab.RockTomate.Core.Metadata.StepMetadata stepMetadata) (at Assets/RockTomate/Scripts/Editor/Controls/Drawers/Steps/StepDrawer.cs:85)
    HardCodeLab.RockTomate.Editor.Controls.StepDrawer.Render (HardCodeLab.RockTomate.Core.Steps.Step step) (at Assets/RockTomate/Scripts/Editor/Controls/Drawers/Steps/StepDrawer.cs:70)
    HardCodeLab.RockTomate.Editor.Inspectors.StepPropertiesCustomInspector.RenderStepProperties () (at Assets/RockTomate/Scripts/Editor/Inspectors/StepPropertiesCustomInspector.cs:46)
    HardCodeLab.RockTomate.Editor.Inspectors.StepPropertiesCustomInspector.OnInspectorGUI () (at Assets/RockTomate/Scripts/Editor/Inspectors/StepPropertiesCustomInspector.cs:79)
    UnityEditor.InspectorWindow.DoOnInspectorGUI (Boolean rebuildOptimizedGUIBlock, UnityEditor.Editor editor, Boolean wasVisible, UnityEngine.Rect& contentRect) (at C:/buildslave/unity/build/Editor/Mono/Inspector/InspectorWindow.cs:1625)
    UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr)


    This two messages keep refreshing in update. It seems like this step can't work correctly now.
     
  37. elmar1028

    elmar1028

    Joined:
    Nov 21, 2013
    Posts:
    2,359
    Hi Ian,

    You'd have to duplicate it into different steps, unfortunately. At the moment there's no way to have condition check inside of formulas. This is something I have in my backlog.

    I have fixed that. Could you please private message me your invoice number and I will send a fix?

    Kind regards,

    Elmar
     
  38. Ian-Lai

    Ian-Lai

    Joined:
    Jul 31, 2019
    Posts:
    15
    Hi Elmar

    In "Copy Directory" step, "Exclueded Paths" can only exclude definitely path. Not like Assets/XXX/*.cs to remove files in specific folder. It's not really convenient now.
     
  39. elmar1028

    elmar1028

    Joined:
    Nov 21, 2013
    Posts:
    2,359
    Hi Ian,

    You can use wildcards by using a
    path()
    macro.

    Example usage:
    path("Assets/XXX/*.cs", true)


    The first argument is the path wildcard. The second argument specifies whether or not you want the resolved paths to be relative to the Assets project.

    Elmar
     
  40. Ian-Lai

    Ian-Lai

    Joined:
    Jul 31, 2019
    Posts:
    15
    Hi Elmar

    Macro! I forgot this. Thanks.
     
  41. Crossway

    Crossway

    Joined:
    May 24, 2016
    Posts:
    507
    I need to set password for some of inspector windows in my project (To avoid other group members change parameters suddenly) is that possible achieve such a thing with AutoMatt?
     
  42. elmar1028

    elmar1028

    Joined:
    Nov 21, 2013
    Posts:
    2,359
    Hi,

    Could you elaborate more on this? What do you want to achieve?

    Elmar
     
  43. elmar1028

    elmar1028

    Joined:
    Nov 21, 2013
    Posts:
    2,359
    RockTomate Release Notes 1.0.2

    Thanks to @codestage, @Edy and @opsive for reported bugs and feature suggestions!
    Changes & Improvements
    • Minimum version raised to 2018.4.0f1
    • Can now rename variables by double-clicking on them or through the context menu
    • Can now enable formulas for new fields by default
    • Can now disable system sound when Job finishes execution
    • Changed context menu items to be less obstructive
    • An error message is shown if illegal characters are present in variable creation pop-up
    • Input field names are now auto-capitalized
    • Macro arguments now support single quotes
    • RockTomate's temp directory has been moved to Unity's "Temp" directory
    Root Variables
    • New root variable:
      %CompileSymbols%
    • New root variable:
      %IsOnline%
    Macros
    • New input macro:
      contains(%array%, %item%)
      - checks if array contains an item
    • New input macro:
      pretty(%string%)
      - prettifies a string (adds space between capital letters)
    • New input macro:
      invert(%boolean%)
      - inverts a boolean
    • New output macro:
      invert(%boolean%)
      - inverts a resultant boolean and saves it to a variable
    Steps
    • New steps integration: Turbo Switch PRO
    • New steps integration: Turbo Builder PRO
    • New steps integration: Turbo Backup PRO
    • New steps integration: Maintainer
    • [Compile DLL] Now auto-creates a missing directory instead of throwing an arbitrary error
    • [Upload to Asset Store] Fixed a bug when the uploaded package would be corrupted
    Third-Party steps are not included out-of-the-box. Follow this guide to learn how to import steps.

    Bug Fixes
    • Fixed a bug when existing scripting define symbols would be overwritten
    • Fixed a bug when a part of the macro argument would get removed if it either starts or ends with a quote
    • Moving RockTomate to a different directory no longer causes UI-related problems
    • Creating a directory named "RockTomate" no longer causes UI-related problems
    • [Job Editor Window] Fixed an issue when toolbar buttons were clipping in Unity 2019.3 (new UI)
    • [Job Editor Window] Fixed an issue when "Suppressed" column label was clipping in Unity 2019.3 (new UI)
    • [Variable Manager Window] Fixed an issue when adding an empty variable bank would spam Job Session Log Window with errors
    • [Variable Bank Window] Fixed a bug when the variable list wouldn't get updated if a different variable bank is selected
    • Exceptions are no longer thrown when trying to access "Run Job" step properties window

    You can now submit bug reports and feature requests on a Github issues page.
     
    Recon03, codestage and opsive like this.
  44. elmar1028

    elmar1028

    Joined:
    Nov 21, 2013
    Posts:
    2,359
    How would you feel about event-based job execution?

    Instead of manually running the job, have RockTomate run Jobs with different variables based on different events.

    Some examples:
    • Bake scene lightmaps, navmesh etc. before Unity player is being built
    • Auto-rename a file to match your team's style after it has been imported into the project
     
  45. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,688
    RockTomate is a great product. I think the best bang for the buck in terms of effort would be writing even more documentation, such as a reference page for each step that's already in RockTomate.
     
    elmar1028 likes this.
  46. elmar1028

    elmar1028

    Joined:
    Nov 21, 2013
    Posts:
    2,359
    Documentation is one of the things I will address very soon! :)
     
    TonyLi likes this.
  47. Crossway

    Crossway

    Joined:
    May 24, 2016
    Posts:
    507
    I need to prevent other team members to access some editor features like some inspector windows or saving project.
     
  48. elmar1028

    elmar1028

    Joined:
    Nov 21, 2013
    Posts:
    2,359
    Unfortunately, RockTomate is not for such use-case.
     
  49. Ian-Lai

    Ian-Lai

    Joined:
    Jul 31, 2019
    Posts:
    15
    I found that unity change UnityEngine.UI.dll into package in Unity 2019 ( I'm using 2019.2.16).

    In previous unity version, I can just add UnityEngine.UI.dll path to additional reference. But now it's separated into scripts. Is there any easy way like add asmdef file as additional reference, or I should build it into dll file first?
     
  50. elmar1028

    elmar1028

    Joined:
    Nov 21, 2013
    Posts:
    2,359
    Hi Ian,

    When Unity compiles assembly definitions, it also compiles DLLs located inside of Temp/ScriptAssemblies (can be found at the root of your Unity project). You can use those as a reference.

    However, you don't need to do this for Unity packages/libraries. I have addressed this issue in the future update: you no longer need to explicitly specify which Unity DLLs to include.

    At the moment, it's not officially released, but you can find the updated "Compile DLL" step here: https://github.com/RockTomate/Steps/blob/stable/Classes/Building/CompileDllStep.cs

    You'd need to replace contents of CompileDLLStep.cs in your project with the contents of the link above.

    Let me know if you need help with that.

    Regards,

    Elmar
     
    TonyLi likes this.