Giter VIP home page Giter VIP logo

issues's People

Contributors

elmartalibzade avatar

Stargazers

Meta avatar  avatar  avatar Dmitriy Yukhanov avatar

Watchers

 avatar James Cloos avatar  avatar

Forkers

dmitriyyukhanov

issues's Issues

Variable Bank List - Add Scroll

Feature Proposal
Window launched from Variable Bank to preview List items should have Scroll

Problem this Solves
If you have list with 20+ elements (for example you are using 2 separate lists of Scenes to include in build not related to BuildWindow you cant preview all elements because there is no scroll

Step class renaming breaks job execution

Steps to Reproduce

  • Create new dummy steps "Step1" and "Step2"
  • Add both steps to job, save project
  • Rename Step1.cs and corresponding class to SuperStep1
  • See Step1 was removed from Job list which is really sad if it had lots of settings - all of them seems to be lost
  • Add SuperStep1 to the beginning of the job steps list (may be not necessary)
  • Try running job to see error in console:

NullReferenceException: Object reference not set to an instance of an object HardCodeLab.RockTomate.Core.Steps.Scope.StopAll () (at Library/PackageCache/[email protected]/RockTomate/Scripts/Core/Data/Session/Scope.cs:197) HardCodeLab.RockTomate.Core.Data.JobSession.Stop () (at Library/PackageCache/[email protected]/RockTomate/Scripts/Core/Data/Session/JobSession.cs:431) HardCodeLab.RockTomate.Core.Managers.JobSessionController.StopSession () (at Library/PackageCache/[email protected]/RockTomate/Scripts/Core/Managers/JobSessionController.cs:226) HardCodeLab.RockTomate.Editor.Windows.JobEditorWindow.StopJob () (at Library/PackageCache/[email protected]/RockTomate/Scripts/Editor/Windows/JobEditorWindow.cs:134) HardCodeLab.RockTomate.Editor.Windows.JobEditorWindow.OnToolbarGUI () (at Library/PackageCache/[email protected]/RockTomate/Scripts/Editor/Windows/JobEditorWindow.cs:110) HardCodeLab.RockTomate.Editor.Windows.JobEditorWindow.OnGUI () (at Library/PackageCache/[email protected]/RockTomate/Scripts/Editor/Windows/JobEditorWindow.cs:198) UnityEditor.HostView.InvokeOnGUI (UnityEngine.Rect onGUIPosition, UnityEngine.Rect viewRect) (at <92f998fbb4ca4d8dab7793d6e003b794>:0) UnityEditor.DockArea.DrawView (UnityEngine.Rect viewRect, UnityEngine.Rect dockAreaRect) (at <92f998fbb4ca4d8dab7793d6e003b794>:0) UnityEditor.DockArea.OldOnGUI () (at <92f998fbb4ca4d8dab7793d6e003b794>:0) UnityEngine.UIElements.IMGUIContainer.DoOnGUI (UnityEngine.Event evt, UnityEngine.Matrix4x4 parentTransform, UnityEngine.Rect clippingRect, System.Boolean isComputingLayout, UnityEngine.Rect layoutSize, System.Action onGUIHandler, System.Boolean canAffectFocus) (at <e40488dcb2e3475fad9ef37a4468eea0>:0) UnityEngine.UIElements.IMGUIContainer.HandleIMGUIEvent (UnityEngine.Event e, UnityEngine.Matrix4x4 worldTransform, UnityEngine.Rect clippingRect, System.Action onGUIHandler, System.Boolean canAffectFocus) (at <e40488dcb2e3475fad9ef37a4468eea0>:0) UnityEngine.UIElements.IMGUIContainer.HandleIMGUIEvent (UnityEngine.Event e, System.Action onGUIHandler, System.Boolean canAffectFocus) (at <e40488dcb2e3475fad9ef37a4468eea0>:0) UnityEngine.UIElements.IMGUIContainer.HandleIMGUIEvent (UnityEngine.Event e, System.Boolean canAffectFocus) (at <e40488dcb2e3475fad9ef37a4468eea0>:0) UnityEngine.UIElements.IMGUIContainer.SendEventToIMGUIRaw (UnityEngine.UIElements.EventBase evt, System.Boolean canAffectFocus, System.Boolean verifyBounds) (at <e40488dcb2e3475fad9ef37a4468eea0>:0) UnityEngine.UIElements.IMGUIContainer.SendEventToIMGUI (UnityEngine.UIElements.EventBase evt, System.Boolean canAffectFocus, System.Boolean verifyBounds) (at <e40488dcb2e3475fad9ef37a4468eea0>:0) UnityEngine.UIElements.IMGUIContainer.HandleEvent (UnityEngine.UIElements.EventBase evt) (at <e40488dcb2e3475fad9ef37a4468eea0>:0) UnityEngine.UIElements.CallbackEventHandler.HandleEventAtTargetPhase (UnityEngine.UIElements.EventBase evt) (at <e40488dcb2e3475fad9ef37a4468eea0>:0) UnityEngine.UIElements.MouseCaptureDispatchingStrategy.DispatchEvent (UnityEngine.UIElements.EventBase evt, UnityEngine.UIElements.IPanel panel) (at <e40488dcb2e3475fad9ef37a4468eea0>:0) UnityEngine.UIElements.EventDispatcher.ApplyDispatchingStrategies (UnityEngine.UIElements.EventBase evt, UnityEngine.UIElements.IPanel panel, System.Boolean imguiEventIsInitiallyUsed) (at <e40488dcb2e3475fad9ef37a4468eea0>:0) UnityEngine.UIElements.EventDispatcher.ProcessEvent (UnityEngine.UIElements.EventBase evt, UnityEngine.UIElements.IPanel panel) (at <e40488dcb2e3475fad9ef37a4468eea0>:0) UnityEngine.UIElements.EventDispatcher.ProcessEventQueue () (at <e40488dcb2e3475fad9ef37a4468eea0>:0) UnityEngine.UIElements.EventDispatcher.OpenGate () (at <e40488dcb2e3475fad9ef37a4468eea0>:0) UnityEngine.UIElements.EventDispatcherGate.Dispose () (at <e40488dcb2e3475fad9ef37a4468eea0>:0) UnityEngine.UIElements.EventDispatcher.ProcessEvent (UnityEngine.UIElements.EventBase evt, UnityEngine.UIElements.IPanel panel) (at <e40488dcb2e3475fad9ef37a4468eea0>:0) UnityEngine.UIElements.EventDispatcher.Dispatch (UnityEngine.UIElements.EventBase evt, UnityEngine.UIElements.IPanel panel, UnityEngine.UIElements.DispatchMode dispatchMode) (at <e40488dcb2e3475fad9ef37a4468eea0>:0) UnityEngine.UIElements.BaseVisualElementPanel.SendEvent (UnityEngine.UIElements.EventBase e, UnityEngine.UIElements.DispatchMode dispatchMode) (at <e40488dcb2e3475fad9ef37a4468eea0>:0) UnityEngine.UIElements.UIElementsUtility.DoDispatch (UnityEngine.UIElements.BaseVisualElementPanel panel) (at <e40488dcb2e3475fad9ef37a4468eea0>:0) UnityEngine.UIElements.UIElementsUtility.UnityEngine.UIElements.IUIElementsUtility.ProcessEvent (System.Int32 instanceID, System.IntPtr nativeEventPtr, System.Boolean& eventHandled) (at <e40488dcb2e3475fad9ef37a4468eea0>:0) UnityEngine.UIElements.UIEventRegistration.ProcessEvent (System.Int32 instanceID, System.IntPtr nativeEventPtr) (at <e40488dcb2e3475fad9ef37a4468eea0>:0) UnityEngine.UIElements.UIEventRegistration+<>c.<.cctor>b__1_2 (System.Int32 i, System.IntPtr ptr) (at <e40488dcb2e3475fad9ef37a4468eea0>:0) UnityEngine.GUIUtility.ProcessEvent (System.Int32 instanceID, System.IntPtr nativeEventPtr, System.Boolean& result) (at <faa31f22dbbe43159226eb3a4f009ff2>:0)

Expected Results
Ideally, step just renames in Job, or at least job does not fails to run

Actual Results
Renamed step disappears from job list and job fails to run

Somechanges in Job Editor doesn't make JobAsset Dirty so changes aren't saved on Git

Steps to Reproduce

  • I'm not sure which changes aren't saved because reading Yaml file of Job isn't easy to read manually, but sometimes after moving assets to another pc using git Jobs are different (not added step, different values in RunJob Input

Expected Results
JobAsset should be dirtied after every change and saved automatically, to make it compatible with sourceControl

Add paralleling to steps

Feature Proposal
Would be great to see parallel group steps in RockTomate, to run few different tasks in parallel.

Problem this Solves
This, for example, could save a lot of time while running test suites in different Unity versions in parallel (or upload to Asset Store from different Unity versions in parallel, etc.)

Capitalize first letter of FieldAttributes

Feature Proposal
It's pretty annoying current way FieldAttributes are printed in Inspector forces to use specific coding style when naming those fields.

For example, I prefer lowerCase for public fields and if I declare it like this:

[InputField]
public string variableName;

I'll get variable Name in the Inspector.
I'd like to have first letter always capitalized no matter how I write it in code, this is a default Unity behaviour which we are used to.

I'd propose to use something like this to make it possible:

public static string NicifyName(string name)
{
	var nicePropertyName = ObjectNames.NicifyVariableName(name);
	if (textInfo == null) textInfo = new CultureInfo("en-US", false).TextInfo;
	return textInfo.ToTitleCase(nicePropertyName);
}

Problem this Solves
Allows to use any coding style while making custom Steps and such.

Copied variables bank does not opens in another Unity version with null reference errors

Steps to Reproduce

  • in Unity 2020.1 create new variables bank and add few variables there
  • save project
  • create new 2017.4.1 project
  • copy variables bank from Unity 2020.1 project to 2017.4.1 project
  • try to open (double-click) variables bank in 2017.4
  • see errors in console

Expected Results
If this is not allowed - would be nice to see some meaningful error message.
Otherwise I expect it to work properly

Actual Results
I see such errors in console:

NullReferenceException: Object reference not set to an instance of an object HardCodeLab.RockTomate.Editor.Controls.VariableTreeElement.set_Field (HardCodeLab.RockTomate.Core.Data.BaseField value) (at Assets/!Service/RockTomate/Scripts/Editor/Controls/TreeViews/Variables/VariableTreeElement.cs:20) HardCodeLab.RockTomate.Editor.Controls.VariableTreeElement..ctor (Int32 id, Int32 depth, HardCodeLab.RockTomate.Core.Data.BaseField field, Boolean isRoot) (at Assets/!Service/RockTomate/Scripts/Editor/Controls/TreeViews/Variables/VariableTreeElement.cs:71) HardCodeLab.RockTomate.Editor.Windows.VariableBankEditorWindow.GetVariableElements (System.Collections.Generic.List1 fields) (at Assets/!Service/RockTomate/Scripts/Editor/Windows/VariableBankEditorWindow.cs:163)
HardCodeLab.RockTomate.Editor.Windows.VariableBankEditorWindow.Init () (at Assets/!Service/RockTomate/Scripts/Editor/Windows/VariableBankEditorWindow.cs:84)
HardCodeLab.RockTomate.Editor.Windows.VariableBankEditorWindow.OnGUI () (at Assets/!Service/RockTomate/Scripts/Editor/Windows/VariableBankEditorWindow.cs:121)
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:222)
Rethrow as TargetInvocationException: Exception has been thrown by the target of an invocation.
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:232)
System.Reflection.MethodBase.Invoke (System.Object obj, System.Object[] parameters) (at /Users/builduser/buildslave/mono/build/mcs/class/corlib/System.Reflection/MethodBase.cs:115)
UnityEditor.HostView.Invoke (System.String methodName, System.Object obj) (at C:/buildslave/unity/build/Editor/Mono/HostView.cs:295)
UnityEditor.HostView.Invoke (System.String methodName) (at C:/buildslave/unity/build/Editor/Mono/HostView.cs:288)
UnityEditor.HostView.OldOnGUI () (at C:/buildslave/unity/build/Editor/Mono/HostView.cs:107)
UnityEngine.Experimental.UIElements.IMGUIContainer.DoOnGUI (UnityEngine.Event evt) (at C:/buildslave/unity/build/Runtime/UIElements/Managed/IMGUIContainer.cs:182)
UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr)
`

Modified on runtime VariableBanks aren't dirty, and cant be saved without edit.

Steps to Reproduce

  • Create Step which update Variable from VariableBank via Output
  • Run Job
  • You can see updated value in editor but, after save project asset file isn't updated

Expected Results
VariableBanks modified by Runtime should be saved during save project

Actual Results
VariableBanks are changed only in Library, and asset isn't dirty so can't be saved

RunJob ignore content when called from CLI

Steps to Reproduce

  • Create RunJobStep without InputFields
  • Call Main Job from CLI
  • Sometimes JobLog doesn't include any step from subJob (neither any substep works)

Expected Results
GoogleDrive Job has 6steps inside so everystep should be visible in Log and be called
Actual Results
Job is Called but no Step in Job is Completed

[ROCKTOMATE][Info] ====================================================================================================
[ROCKTOMATE][Info] Starting a Job of name "GoogleDrive"
[ROCKTOMATE][Info] ====================================================================================================
[ROCKTOMATE][Info] Starting to update persistent variables
[ROCKTOMATE][Info] Done updating persistent variables.
[ROCKTOMATE][Info] ====================================================================================================
[ROCKTOMATE][Info] Finished running a Job of name "GoogleDrive"
[ROCKTOMATE][Info] ====================================================================================================

[Duplicating a Job and using it as a RunJob triggers an error]

Reason for the usage
Sometimes it’s nice to ‘refactor’ a group of steps that are inside a job as a separate standalone job on it’s own. (I.e. a series of Create, Copy, Move Folders that could be re-used by many jobs).
This can be currently achieved by duplicating a job and deleting all the steps that were not part of the intended ‘refactor’

Steps to Reproduce

  • Duplicate a JobA inside unity’s Project Browser section (let’s call it JobB)
  • Open JobB and remove steps not needed for this “refactor”
  • Open JobA back, remove the steps that are meant to be replaced by JobB
  • Create a RunJob (pointing to JobB)

Expected Results
Runs JobB

Actual Results
Several things can happen:

  • JobB cannot be assigned on the reference slot of JobA’s RunJob step (the intended reference type the slot expected sometimes switches to a variables object type instead of a Jobs object type)
  • Closing and opening unity will fix the previous reference type bug, but assigning JobB to RunJob of JobA and running it will fail (it outputs an error on the log that says that it cannot Run the ‘same’ job it’s currently run... might be a serialization error during file duplication)

[Feature] Path selector button

Feature Proposal
Add optional parameter to string fields that allow using the additional button for file selection.

Problem this Solves
For example in BuildPlayerStep there is AssetBundleManifest Path, with the button we would be able to select a specific file instead of copying path from the explorer

Working example in attached video (but i don't like how i made it)

 public class StringDrawer : FieldDrawer<string>
   {

       /// <inheritdoc />
       protected override string OnRender(GUIContent content, string value, FormulaCollection formulaCollection)
       {
           value = EditorGUILayout.TextField(content, value);
           if (content.text.ToLower().Contains("path"))
           {
               if (GUILayout.Button("Select path"))
               {
                   value = EditorUtility.OpenFilePanel(value, "", "");
               }
           }

           return value;
       }
30-06-2021_17-02-22.mp4

[Root Vars] Application version and Build Number

Feature Proposal
Application Version and Build number on the root variable set (maybe there's a better way).
Build number might need to be dynamic in the sense that it depends on the player's settings per platform.

Problem this Solves
When creating build target paths it would be nice to be able to get the Application.version and build number from the app.

Extra notes
Can we add variables to that root vars window list?

Getting exceptions spam in console from Job Session Log window after project reopen

Steps to Reproduce
Unfortunately I'm not sure how to reproduce it.
I did tried to reproduce it when I faced this problem first time but had no luck.
Now I see it again and not sure what's exactly leads to this problem.

Simply I run few jobs, while Job Session Log window is visible, close project, reopen it again and sometimes it's totally fine but sometimes it throws errors in console and Job Session Log window stays empty

Expected Results
No errors in console.

Actual Results
Errors spam in console:

ArgumentException: Invalid Depth info in input list. Depth cannot increase more than 1 per row. Index 0 has Depth -1 while index 1 has Depth 2 HardCodeLab.RockTomate.Editor.Helpers.TreeElementUtility.ValidateDepthValues[T] (System.Collections.Generic.IList1[T] list) (at Library/PackageCache/[email protected]/RockTomate/Scripts/Editor/Helpers/TreeElementUtility.cs:122)
HardCodeLab.RockTomate.Editor.Helpers.TreeElementUtility.ListToTree[T] (System.Collections.Generic.IList1[T] list) (at Library/PackageCache/[email protected]/RockTomate/Scripts/Editor/Helpers/TreeElementUtility.cs:43) HardCodeLab.RockTomate.Editor.Controls.TreeModel1[T].Init (System.Collections.Generic.IList1[T] data) (at Library/PackageCache/[email protected]/RockTomate/Scripts/Editor/Controls/TreeViews/TreeModel.cs:44) HardCodeLab.RockTomate.Editor.Controls.TreeModel1[T].SetData (System.Collections.Generic.IList1[T] data) (at Library/PackageCache/[email protected]/RockTomate/Scripts/Editor/Controls/TreeViews/TreeModel.cs:34) HardCodeLab.RockTomate.Editor.Controls.TreeModel1[T]..ctor (System.Collections.Generic.IList1[T] data) (at Library/PackageCache/[email protected]/RockTomate/Scripts/Editor/Controls/TreeViews/TreeModel.cs:24) HardCodeLab.RockTomate.Editor.Windows.JobSessionLogWindow.Init () (at Library/PackageCache/[email protected]/RockTomate/Scripts/Editor/Windows/JobSessionLogWindow.cs:65) HardCodeLab.RockTomate.Editor.Windows.JobSessionLogWindow.OnGUI () (at Library/PackageCache/[email protected]/RockTomate/Scripts/Editor/Windows/JobSessionLogWindow.cs:191) UnityEditor.HostView.InvokeOnGUI (UnityEngine.Rect onGUIPosition, UnityEngine.Rect viewRect) (at <92f998fbb4ca4d8dab7793d6e003b794>:0) UnityEditor.DockArea.DrawView (UnityEngine.Rect viewRect, UnityEngine.Rect dockAreaRect) (at <92f998fbb4ca4d8dab7793d6e003b794>:0) UnityEditor.DockArea.OldOnGUI () (at <92f998fbb4ca4d8dab7793d6e003b794>:0) UnityEngine.UIElements.IMGUIContainer.DoOnGUI (UnityEngine.Event evt, UnityEngine.Matrix4x4 parentTransform, UnityEngine.Rect clippingRect, System.Boolean isComputingLayout, UnityEngine.Rect layoutSize, System.Action onGUIHandler, System.Boolean canAffectFocus) (at <e40488dcb2e3475fad9ef37a4468eea0>:0) UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr, Boolean&)

Variable bank editor does not updates when opening another bank

Steps to Reproduce

  • create variables bank 1 with variable A
  • create variables bank 2 with variable B
  • double click variables bank 1
  • double click variables bank 2
  • see Variable bank editor still shows variable A from bank 1

Expected Results
Updated list of variables from newly opened bank

Actual Results
List of variables from previously opened bank

Variables Created inside RunJob aren't Available outside Job without storing them in Bank

Steps to Reproduce

  • Create Job where you creating new Variable (for example Change "Project Name" to "Project_Name")
  • Add RunJob to Main Job and call previous Job
  • Add Another RunJob where variable from First Job is needed (For example FileName for Build)
  • Variable isn't resolved (%VariableName% is used as FileName)

Expected Results
Because there is no described way to Move Variable from One Job to Another, Variables Created inside RunJob should be available in MainJob and in all Jobs Called From MainJob

Actual Results
Variable isn't Resolved and must be stored in VariableBank with RuntimeFlag

Variable bank does not save when you finish editing variables

Steps to Reproduce

  • create new variables bank
  • commit changes in VCS
  • edit variables in bank and close bank editor
  • see no new changes in VCS
  • save project from File>Save Project
  • see changes are visible in VCS now

Expected Results
I expect bank editor to save changes when I close editor or even when I unfocus input field

Actual Results
Bank editor does not saves changes immediately leading to possible data loss if Unity will crash before you'll save project changes.

Null Reference Exception on RunJob from CLI

Steps to Reproduce

  • Create RunJobStep with input parameters
  • Call MainJob from CLI (Jenkins)
  • Sometimes there is NullRereneceException

Expected Results
Sub Job Should be called
Actual Results

[ROCKTOMATE][Info] Step "Run Job" at ROW 6: Preparing the execution...
[ROCKTOMATE][Info] Step "Run Job" at ROW 6: Beginning to evaluate input field values...
[ROCKTOMATE][Info] Step "Run Job" at ROW 6: Successfully set value for input field "Target Job". Value is "BuildXbox.rock.job (HardCodeLab.RockTomate.Core.Data.Job)"
[ROCKTOMATE][Info] Step "Run Job" at ROW 6: Finished evaluating input field values.
[ROCKTOMATE][Info] Step "Run Job" at ROW 6: Beginning to validate fields...
[ROCKTOMATE][Info] Step "Run Job" at ROW 6: Finished validating fields.
[ROCKTOMATE][Info] Step "Run Job" at ROW 6: Resetting the Step...
[ROCKTOMATE][Info] Step "Run Job" at ROW 6: Finished resetting the Step.
[ROCKTOMATE][Info] Step "Run Job" at ROW 6: Preparation has finished. Beginning the execution...
NullReferenceException: Object reference not set to an instance of an object
  at HardCodeLab.RockTomate.Steps.RunJobStep+<OnExecute>d__9.MoveNext () [0x00144] in C:\Users\user\AppData\Local\Jenkins.jenkins\workspace\ToolsUp - RockTomate - Xbox\default\Assets\Plugins\RockTomate\Scripts\Steps\Classes\General\RunJobStep.cs:80 
  at HardCodeLab.RockTomate.Core.Coroutines.EditorCoroutines.MoveNext (HardCodeLab.RockTomate.Core.Coroutines.ECoroutine coroutine) [0x00001] in C:\Users\user\AppData\Local\Jenkins.jenkins\workspace\ToolsUp - RockTomate - Xbox\default\Assets\Plugins\RockTomate\Scripts\Core\Utils\EditorCoroutines\EditorCoroutines.cs:205 
  at HardCodeLab.RockTomate.Core.Coroutines.EditorCoroutines.GoStartCoroutine (HardCodeLab.RockTomate.Core.Coroutines.ECoroutine coroutine) [0x000c4] in C:\Users\user\AppData\Local\Jenkins.jenkins\workspace\ToolsUp - RockTomate - Xbox\default\Assets\Plugins\RockTomate\Scripts\Core\Utils\EditorCoroutines\EditorCoroutines.cs:157 
  at HardCodeLab.RockTomate.Core.Coroutines.EditorCoroutines.GoStartCoroutine (System.Collections.IEnumerator routine, System.Object thisReference) [0x00022] in C:\Users\user\AppData\Local\Jenkins.jenkins\workspace\ToolsUp - RockTomate - Xbox\default\Assets\Plugins\RockTomate\Scripts\Core\Utils\EditorCoroutines\EditorCoroutines.cs:130 
  at HardCodeLab.RockTomate.Core.Coroutines.EditorCoroutines.StartCoroutine (System.Collections.IEnumerator routine, System.Object thisReference) [0x00001] in C:\Users\user\AppData\Local\Jenkins.jenkins\workspace\ToolsUp - RockTomate - Xbox\default\Assets\Plugins\RockTomate\Scripts\Core\Utils\EditorCoroutines\EditorCoroutines.cs:69 
  at HardCodeLab.RockTomate.Core.Steps.Step+<Execute>d__45.MoveNext () [0x0023f] in C:\Users\user\AppData\Local\Jenkins.jenkins\workspace\ToolsUp - RockTomate - Xbox\default\Assets\Plugins\RockTomate\Scripts\Core\Steps\Step.cs:308 
  at HardCodeLab.RockTomate.Core.Coroutines.EditorCoroutines.MoveNext (HardCodeLab.RockTomate.Core.Coroutines.ECoroutine coroutine) [0x00001] in C:\Users\user\AppData\Local\Jenkins.jenkins\workspace\ToolsUp - RockTomate - Xbox\default\Assets\Plugins\RockTomate\Scripts\Core\Utils\EditorCoroutines\EditorCoroutines.cs:205 
  at HardCodeLab.RockTomate.Core.Coroutines.EditorCoroutines.OnUpdate () [0x000f1] in C:\Users\user\AppData\Local\Jenkins.jenkins\workspace\ToolsUp - RockTomate - Xbox\default\Assets\Plugins\RockTomate\Scripts\Core\Utils\EditorCoroutines\EditorCoroutines.cs:188 
  at (wrapper managed-to-native) System.Reflection.MonoMethod.InternalInvoke(System.Reflection.MonoMethod,object,object[],System.Exception&)
  at System.Reflection.MonoMethod.Invoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00032] in <fb001e01371b4adca20013e0ac763896>:0 
Rethrow as TargetInvocationException: Exception has been thrown by the target of an invocation.
  at System.Reflection.MonoMethod.Invoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00048] in <fb001e01371b4adca20013e0ac763896>:0 
  at System.Reflection.MethodBase.Invoke (System.Object obj, System.Object[] parameters) [0x00000] in <fb001e01371b4adca20013e0ac763896>:0 
  at System.Delegate.DynamicInvokeImpl (System.Object[] args) [0x000e7] in <fb001e01371b4adca20013e0ac763896>:0 
  at System.MulticastDelegate.DynamicInvokeImpl (System.Object[] args) [0x00008] in <fb001e01371b4adca20013e0ac763896>:0 
  at System.Delegate.DynamicInvoke (System.Object[] args) [0x00000] in <fb001e01371b4adca20013e0ac763896>:0 
  at UnityEditor.EditorApplication.Internal_CallUpdateFunctions () [0x00041] in <8004fcc221b54f98ba547350ea71d812>:0 
 
(Filename: Assets/Plugins/RockTomate/Scripts/Steps/Classes/General/RunJobStep.cs Line: 80)

[High] Running a Loop on a Job trigger by another Job bugs

Steps to Reproduce

  • Create a Job with a loop (I used %CommandLineArgs%)
  • Make a for loop with the resulting items collection.

Expected Results
To iterate through the items and it does when on the job itself.

Actual Results
When the job is triggered stand alone it works, when it's triggered by another process, it fails.

[RunJob - Maybe not a Bug] The External Variables have to be referenced on the parent that executes RunJob.

Steps to Reproduce

  • Create a Job (JobChild) that uses an Externals Variables Asset.
  • Create Job Parent which at some point calls RunJob(JobChild), no externals variables assigned.

Expected Results
JobParent manages to run JobChild.

Actual Results
Externals variables used in JobChild won't resolve (will stay %variablename%);
Temporal Fix: Add the same External variables asset used by JobChild in JobParent.
This is maybe by design (as that would allow for overrides), however, it would be nice that if we don't add the same variables anywhere, that JobParent could run JobChild without having to know too much about the variables on JobChild

[Blocker Bug] Clicking on External and creating a Var Bank breaks Run Job's TargetJob Field

Steps to Reproduce

  • Create a RockTomate automated Job
  • Create a new Run Job step inside (Target Job field is correctly of type Job)
  • Click on the External variable on the variables window, click on the 'create a new bank' + button.
  • RunJob targetJob's field changes to type of Variable Bank and stays that way until Unity is restarted

Environment
Unity 2019.3.9f1 OSX
Unity 2019.3.9f1 Windows
This was a sneaky one to find, but these steps gets it triggered 100% on my side.

Actual Results
The target job's field changes from typeof 'Job' to typeof 'Variable Bank' with no way to get back to job type until unity is restarted

More Info

  • If there was a variable bank already assigned to the automated job's variable config, just clicking on the External Variables tab will also trigger the bug, any RunJob without assigned Job's will have an incorrect target job field type
  • Duplicating already properly configure 'RunJob' steps on the current work space to get around the issue won't work, the newly duplicated RunJob step has no job assigned to it and the field to Variable Bank type.

MakeTextListStep output saved to VariableBank Field throw exceptions

Steps to Reproduce

  • Create Variable Bank
  • Assign bank to Job
  • Add StringArray to Bank
  • Make Array Runtime
  • Add MakeTextListStep to Job
  • Use %IncludedScenesInBuild% as Input
  • Use name of Variable in Bank as Output
  • Run Job
  • Open Variable Bank
  • Now you can see 0 items
  • Click [...]
  • In new Window you can see (Count) different than 0, no items, and IndexOutOfRange exception in console

Debugging
Problem is related to FormulaCollection used to render Fields.
FormulaCollection has 0 items, because makeListStep just changes array without changing FormulaCollection

Expected Results
You can inspect items in Bank and modify them

Actual Results
You can't see any item, GUI is broken, Exception is thrown in Console

Fix

//Fix adding new elements to list without FormulaCollection
OutputFieldData.TrySetVariable(JobContext context, object newValue)
//After
            field.SetValue(newValue);
//Add this
            if(newValue is Array array) //Check if newValue is Array
            {
                if (field.FormulaCollection.ChildFormulas.Count != array.Length) // Check if FormulasCount is different than array length
                {
                    field.FormulaCollection.ChildFormulas.Clear(); // Remove formulas to prevent adding new items everytime
                    foreach (var item in array)
                    {
                        field.FormulaCollection.ChildFormulas.Add(Formula.Create(field.ReturnType));
                    }
                }
            }
//Fix displaying fields without FormulaCollection
CollectionDrawer.Render(GUIContent content, object value, FormulaCollection formulaCollection)
                Formula formula;
                if(formulaCollection.ChildFormulas.Count > i)
                {
                    formula = formulaCollection.ChildFormulas[i];
                }
                else
                {
                    formulaCollection.ChildFormulas.Add(Formula.Create(itemType));
                    formula = formulaCollection.ChildFormulas[i];
                }
//Instead
                var formula = formulaCollection.ChildFormulas[i];

[OS X] Directory Paths: Can't resolve ~/ to user path

Steps to Reproduce

  • Create Directory Step with a home path (~/testFolder/)

Expected Results
Creates a test folder at the root of the user's path

Actual Results
Creates a folder at the project's dir with the name '~' and then 'testFolder' inside of it.

Creating variables with spaces in names silently fails

Steps to Reproduce

  • try creating new variables with spaces in name
  • see nothing happens - no errors and nothing else happens after you press "Create" button

Expected Results
I expect see some error if this action is not allowed.

Actual Results
Nothing happens.

[Low Prio] [Feature]: JobSession Log selects the Step on the Job Editor

Feature Proposal
A somewhat QoL feature, selecting a line on the JobSession Log that has Step information could highlight the job.
It's about visibility in general.

Problem this Solves
It's about visibility in general, the JobSession Log can get crowded, selecting a line in it could select the step on the Job Editor.
Viceversa there's a similar issue, when looking for the 'error message info' it's a bit hard to find the failed steps on the JobSession Log, maybe the error steps could be highlit in red or have some error marker at the failed lines.

Edit existing variables names and types

Feature Proposal
Would be great to be able to edit existing variables names and types, even without applying those changes to the places where variables are used - it would already help a lot.

Problem this Solves
It would allow quickly fix incorrect name or type if you accidentally select \ input wrong values before creating variable.
Now you have to remove old variable and create new one from scratch which is pretty time-consuming when dealing with lots of variables.

Upload to Asset Store step fails when run as external job

Steps to Reproduce

  • create and configure Upload to Asset Store step
  • put it to Unity 2017.4.1 project
  • configure Run External Job step to run this step, like this:
    image
  • run job
  • see Run External Job fails

Expected Results
I expected to see asset uploaded to the Asset Store successfully

Actual Results
Upload fails with this in logs:

Authorization Required
UnityEngine.DebugLogHandler:Internal_Log(LogType, String, Object)
UnityEngine.DebugLogHandler:LogFormat(LogType, Object, String, Object[])
UnityEngine.Logger:Log(LogType, Object)
UnityEngine.Debug:LogError(Object)
HardCodeLab.RockTomate.Steps.AssetStorePublisher.<OnLoginCompleted>c__AnonStorey1:<>m__0(HttpWebResponse, String) (at Assets\!Service\RockTomate\Scripts\Steps\Classes\AssetStorePublisher\AssetStoreAPI.cs:117)
HardCodeLab.RockTomate.Steps.AssetStorePublisher.<HandleRequest>c__AnonStorey6:<>m__0() (at Assets\!Service\RockTomate\Scripts\Steps\Classes\AssetStorePublisher\AssetStoreAPI.cs:332)
UnityEditor.EditorApplication:Internal_CallDelayFunctions() (at C:\buildslave\unity\build\Editor\Mono\EditorApplication.cs:136)
 
(Filename: Assets/!Service/RockTomate/Scripts/Steps/Classes/AssetStorePublisher/AssetStoreAPI.cs Line: 117)

Request timed out while processing request "https://public-cdn.cloud.unity3d.com/config/production", HTTP error code 0
.[UnityConnect] Request timed out.
Refresh: detecting if any assets need to be imported or removed ... Refresh: elapses 0.019315 seconds (Nothing changed)
Connect to CacheServer localhost:64959
Updating ProjectSettings/ProjectSettings.asset - GUID: 00000000000000004000000000000000...
 done. [Time: 3.420400 ms] 
Disconnect from CacheServer
Refreshing native plugins compatible for Editor in 3.06 ms, found 4 plugins.
Preloading 2 native plugins for Editor in 0.17 ms.

----- Total AssetImport time: 0.085522s, AssetImport time: 0.030815s, Asset hashing: 0.000000s [0 B, 0.000000 mb/s]
----- Cache Server detail: CacheServerIntegrate time: 0.000000s, CacheServer download: 0.000036s [0 B, 0.000000 mb/s]
----- Cache Server detail: Total assets requested: 1, Cached Assets: 0, Not available: 0, Not supported: 1.
----- Cache Server detail: CacheMove: 0.000000s, CacheDelete: 0.000000s.

Refresh: detecting if any assets need to be imported or removed ... Refresh: elapses 0.019331 seconds (Nothing changed)
[Package Manager] Server::Kill -- Server was shutdown
Cleanup mono

Adding Run job step to the Job Editor causes multiple errors

Steps to Reproduce

  • add "Run Job" step to Job Editor
  • see errors in console

Expected Results
no errors

Actual Results
console is full of such errors:

ArgumentException: Object of type 'UnityEngine.Object' cannot be converted to type 'HardCodeLab.RockTomate.Core.Data.Job'.
System.RuntimeType.CheckValue (System.Object value, System.Reflection.Binder binder, System.Globalization.CultureInfo culture, System.Reflection.BindingFlags invokeAttr) (at <437ba245d8404784b9fbab9b439ac908>:0)
System.Reflection.MonoMethod.ConvertValues (System.Reflection.Binder binder, System.Object[] args, System.Reflection.ParameterInfo[] pinfo, System.Globalization.CultureInfo culture, System.Reflection.BindingFlags invokeAttr) (at <437ba245d8404784b9fbab9b439ac908>:0)
System.Reflection.MonoMethod.Invoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) (at <437ba245d8404784b9fbab9b439ac908>:0)
System.Reflection.MethodBase.Invoke (System.Object obj, System.Object[] parameters) (at <437ba245d8404784b9fbab9b439ac908>:0)
HardCodeLab.RockTomate.Core.Extensions.MemberInfoExtensions.SetMemberValue (System.Reflection.MemberInfo member, System.Object obj, System.Object value) (at Library/PackageCache/[email protected]/RockTomate/Scripts/Core/Extensions/MemberInfoExtensions.cs:55)
HardCodeLab.RockTomate.Core.Metadata.FieldMetadata.SetValue (HardCodeLab.RockTomate.Core.Steps.Step step, System.Object newValue) (at Library/PackageCache/[email protected]/RockTomate/Scripts/Core/Data/Metadata/FieldMetadata.cs:207)
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 Library/PackageCache/[email protected]/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 Library/PackageCache/[email protected]/RockTomate/Scripts/Editor/Controls/Drawers/Steps/StepDrawer.cs:146)
HardCodeLab.RockTomate.Editor.Controls.StepDrawer.RenderStepFields (HardCodeLab.RockTomate.Core.Steps.Step step, HardCodeLab.RockTomate.Core.Metadata.StepMetadata stepMetadata) (at Library/PackageCache/[email protected]/RockTomate/Scripts/Editor/Controls/Drawers/Steps/StepDrawer.cs:86)
HardCodeLab.RockTomate.Editor.Controls.StepDrawer.Render (HardCodeLab.RockTomate.Core.Steps.Step step) (at Library/PackageCache/[email protected]/RockTomate/Scripts/Editor/Controls/Drawers/Steps/StepDrawer.cs:71)
HardCodeLab.RockTomate.Editor.Inspectors.StepPropertiesCustomInspector.RenderStepProperties () (at Library/PackageCache/[email protected]/RockTomate/Scripts/Editor/Inspectors/StepPropertiesCustomInspector.cs:46)
HardCodeLab.RockTomate.Editor.Inspectors.StepPropertiesCustomInspector.OnInspectorGUI () (at Library/PackageCache/[email protected]/RockTomate/Scripts/Editor/Inspectors/StepPropertiesCustomInspector.cs:79)
UnityEditor.UIElements.InspectorElement+<>c__DisplayClass58_0.<CreateIMGUIInspectorFromEditor>b__0 () (at <b5e754b172ef4f1b82e78043441796df>:0)
UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr, Boolean&)

Evaluate macroses right from the variables editors

Feature Proposal
Would be great to somehow evaluate variables values which are made in function mode (fx icon).

Problem this Solves
It's often hard to tell if entered value is correct and can evaluate to proper value until it tested in job.
Would be great to be able to quickly check e.g. path("%ProjectDir%\..\..\..\Folder", true) actual value before running it from job.

[Feature] Script Field for Steps (for easier access)

Feature Proposal
I think scriptField reference like in classic Inspector is very useful if you want to edit step

Problem this Solves
Right now I have to look for script asset in projectWindow every time I want to edit stepScript or open script using VS, I would like to have easier access to script.

Example
image

Example Implementation

    private void DrawStepHeader()
        {
            string[] assets = AssetDatabase.FindAssets(SelectedStep.GetType().Name);
            GUI.enabled = false;
            foreach (string assetGUIDS in assets)
            {
                string path = AssetDatabase.GUIDToAssetPath(assetGUIDS);
                Object script = AssetDatabase.LoadAssetAtPath(path, typeof(MonoScript));
                EditorGUILayout.ObjectField("Script", script, SelectedStep.GetType(), false);
            }
            GUI.enabled = true;
        }

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.