Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
54 commits
Select commit Hold shift + click to select a range
b9467a4
Move Toolbox assembly to the Runtime directory; fix InspectorUtility.…
arimger Dec 16, 2024
253d08b
Fix searching for private members in the base types
arimger Feb 19, 2025
105bdb7
Move FolderData type to the runtime assembly
arimger Feb 19, 2025
7ac87ff
Update README.md
arimger Feb 19, 2025
5ee484f
Clear InLinedEditor after folding properties; improve displaying mixe…
arimger Feb 19, 2025
92d5047
Fix AmbiguousMatchException while searching for overrided fields & pr…
arimger Feb 22, 2025
43bace2
Update: README.md, package.json, CHANGELOG.md
arimger Feb 22, 2025
69e34d8
Update: CHANGELOG.md
arimger Feb 22, 2025
7e850c5
Update workflows
arimger Feb 22, 2025
ce91498
Merge pull request #127 from arimger/develop
arimger Feb 23, 2025
4392c10
Ability to decide if EditorButton should be rendered below or above t…
arimger Mar 24, 2025
795c87e
Improvements to the SerializedScene drawing logic
arimger Mar 27, 2025
b432dcd
More validation checks while creating new settings assets
arimger Apr 22, 2025
3926a61
Update: README.md, package.json, CHANGELOG.md
arimger Apr 22, 2025
688f421
Update docs
arimger Apr 22, 2025
8c7112e
Merge pull request #137 from arimger/develop
arimger Apr 22, 2025
b87f4b3
Fix drawing FormattedNumber for multiple different values; minor refa…
arimger May 30, 2025
b43ce82
Add CustomSelectableEditor in the examples
arimger Jul 3, 2025
7cf6a7a
Updated SerializedDictionary to implement IReadOnlyDictionary.
snarlynarwhal Jul 7, 2025
3f88c46
Merge pull request #141 from snarlynarwhal/develop
arimger Jul 8, 2025
be4f104
Include global indentation while drawing ReorderableLists
arimger Aug 6, 2025
89f3054
Fix Append/Remove List operations if multi-selection is active
arimger Aug 6, 2025
1631b60
Ability to copy & paste SerializeReference-based arrays
arimger Aug 8, 2025
6fb2c93
Add confirmation box support for the ReferencePickerAttribute
arimger Aug 9, 2025
980fc04
Update: README.md
arimger Aug 9, 2025
8cac626
Update: README.md
arimger Aug 9, 2025
cbdde91
Minor refactor changes
arimger Aug 10, 2025
75685dd
Update: README.md, package.json, CHANGELOG.md
arimger Aug 10, 2025
bf85e98
Update: CHANGELOG.md
arimger Aug 10, 2025
6da24bc
Minor refactor changes
arimger Aug 10, 2025
1d68a42
Minor refactor changes
arimger Aug 10, 2025
46c88b5
Merge pull request #144 from arimger/develop
arimger Aug 10, 2025
86ccf55
Implement ValueStep property for the ProgressBarAttribute
arimger Oct 26, 2025
66e67fc
Add hierarchy objects to tab selector + wire cube highlight to hovere…
ppixu Dec 8, 2025
20e3ce8
Possibility to display managed reference by LabelByChildAttribute
trueDemetri Dec 17, 2025
e749e56
Fix Copy/Paste context menu operations for serialized references
arimger Dec 22, 2025
ee7031c
Unity 6.3 support: improvements to the Scene serialization process; n…
arimger Dec 28, 2025
2452f73
Minor refactor changes
arimger Dec 28, 2025
7c2d655
Update: README.md
arimger Dec 28, 2025
7071737
Minor refactor changes
arimger Dec 29, 2025
3578c2d
Merge pull request #147 from trueDemetri/managed-reference-output
arimger Dec 29, 2025
bc2a486
Merge pull request #146 from ppixu/master
arimger Dec 29, 2025
724d6ee
Update: CHANGELOG.md, package.json
arimger Dec 29, 2025
3043365
Merge remote-tracking branch 'origin/master' into develop
arimger Dec 29, 2025
96d313d
Minor refactor changes
arimger Dec 29, 2025
9e81cec
Update: CHANGELOG.md
arimger Dec 29, 2025
8eae0d1
Update: CHANGELOG.md
arimger Dec 29, 2025
594083e
Fix compilation errors for Unity 2018
arimger Dec 29, 2025
706de3f
Fix compilation errors for Unity 2019
arimger Dec 29, 2025
54adca6
Update: README.md
arimger Dec 29, 2025
5ec33e6
Update: README.md
arimger Dec 29, 2025
f3f6ec7
Fix compilation errors in Unity 6.3
arimger Dec 29, 2025
18ac973
Merge pull request #148 from arimger/develop
arimger Dec 29, 2025
e9903c9
Add tabbed inspector UI and attributes
MaykerStudio Feb 8, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/activation.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ jobs:
uses: game-ci/unity-request-activation-file@v2
# Upload artifact (Unity_v20XX.X.XXXX.alf)
- name: Expose as artifact
uses: actions/upload-artifact@v2
uses: actions/upload-artifact@v4
with:
name: ${{ steps.getManualLicenseFile.outputs.filePath }}
path: ${{ steps.getManualLicenseFile.outputs.filePath }}
2 changes: 1 addition & 1 deletion .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ jobs:
testMode: ${{ matrix.testMode }}
artifactsPath: ${{ matrix.testMode }}-artifacts
checkName: ${{ matrix.testMode }} Test Results
- uses: actions/upload-artifact@v3
- uses: actions/upload-artifact@v4
if: always()
with:
name: Test results for ${{ matrix.testMode }}
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/upm-dev.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ jobs:
name: split upm branch
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: split upm branch
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/upm.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ jobs:
name: split upm branch
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: split upm branch
Expand Down
45 changes: 45 additions & 0 deletions Assets/Editor Toolbox/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,48 @@
## 0.14.3 [29.12.2025]

### Added:
- Ability to specify 'ValueStep' in the ProgressBar attribute

### Changed:
- Toolbar support for Unity 6.3+
- Material Drawers support for Unity 6.3+
- Serialized Scene support for Unity 6.3+
- Fix issues with copy/past operations for the [SerializeReference]-based arrays
- Ability to display parent objects in the SceneView tool
- Ability to display managed reference values while using LabelByChild attribute

## 0.14.2 [10.08.2025]

### Added:
- `AddConfirmationBox` property to the [ReferencePicker]; allows to display an intermediate confirmation window before assigning a new reference

### Changed:
- Fix [FormattedNumber] behaviour while multi-editing different values
- [LabelByChild] now displays ToString() value for UnityEngine.Object references
- Fix ReorderableLists indentation level for nested objects
- Fix various smaller issues related to [SerializeReference]-based properties while being in the multi-editing mode
- Rename 'Copy Serialize Reference' to 'Copy Serialized References', from now this operation also works on arrays and lists
- Rename 'Paste Serialize Reference' to 'Paste Serialized References', from now this operation also works on arrays and lists

## 0.14.1 [22.04.2025]

### Changed:
- Ability to define [EditorButton] position (below or above the target property)
- Improvements to the SerializedScene class & linked drawer
- Fix rare issue with nested layouts

## 0.14.0 [23.02.2025]

### Added:
- OnToolbarGuiRight callback (ability to draw GUI elements on the right side of the toolbar container); OnToolbarGui replaced with the OnToolbarGuiLeft callback

### Changed:
- Fix fetching private members from base classes in various cases (e.g. [EditorButton] or conditionals)
- Move FolderData to the Runtime assembly to fix issues caused by the Visual Scripting package
- Fix minor rendering issues caused by the ReoerdableList's footer position
- Fix clearing cached Editor instances in the [InLineEditor] (fix for the AudioClip still playing)
- Improve displaying [SerializeReference]-based properties in the multi-editing mode

## 0.13.2 [29.11.2024]

### Added:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,11 @@ static ToolboxContextMenuManager()
{
registeredOperations = new List<IContextMenuOperation>()
{
#if UNITY_2021_3_OR_NEWER
new CopySerializeReferenceOperation(),
new PasteSerializeReferenceOperation(),
new DuplicateSerializeReferenceArrayElementOperation()
#endif
};

EditorApplication.contextualPropertyMenu -= OnContextMenuOpening;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,16 +1,26 @@
using System;
using System.Collections.Generic;

namespace Toolbox.Editor.ContextMenu.Operations
{
/// <summary>
/// Cache created by the copy operation.
/// All properties are based on data from the source <see cref="UnityEditor.SerializedProperty"/>.
/// </summary>
internal class CopySerializeReferenceCache
{
public CopySerializeReferenceCache(Type referenceType, string data)
public CopySerializeReferenceCache(Type referenceType, IReadOnlyList<CopySerializeReferenceEntry> entires, bool isArrayCopy)
{
ReferenceType = referenceType;
Data = data;
Entries = entires;
IsArrayCopy = isArrayCopy;
}

/// <summary>
/// Base managed reference type of the source <see cref="UnityEditor.SerializedProperty"/>.
/// </summary>
public Type ReferenceType { get; }
public string Data { get; }
public IReadOnlyList<CopySerializeReferenceEntry> Entries { get; }
public bool IsArrayCopy { get; }
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
using System;

namespace Toolbox.Editor.ContextMenu.Operations
{
internal class CopySerializeReferenceEntry
{
public CopySerializeReferenceEntry(Type referenceType, string referenceData)
{
ReferenceType = referenceType;
ReferenceData = referenceData;
}

public Type ReferenceType { get; }
public string ReferenceData { get; }
}
}

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
using UnityEditor;
#if UNITY_2021_3_OR_NEWER
using System.Collections.Generic;

using UnityEditor;
using UnityEngine;

namespace Toolbox.Editor.ContextMenu.Operations
Expand All @@ -9,40 +12,69 @@ internal class CopySerializeReferenceOperation : IContextMenuOperation

[InitializeOnLoadMethod]
private static void Initialize()
{
Reset();
}

private CopySerializeReferenceEntry CreateEntry(SerializedProperty property)
{
if (property == null)
{
return new CopySerializeReferenceEntry(null, null);
}

var value = property.managedReferenceValue;
if (value == null)
{
return new CopySerializeReferenceEntry(null, null);
}

var referenceType = value.GetType();
var data = JsonUtility.ToJson(value);
return new CopySerializeReferenceEntry(referenceType, data);
}

internal static void Reset()
{
Cache = null;
}

public bool IsVisible(SerializedProperty property)
{
#if UNITY_2021_3_OR_NEWER
return property != null && property.propertyType == SerializedPropertyType.ManagedReference;
#else
return false;
#endif
return PropertyUtility.IsSerializeReferenceProperty(property);
}

public bool IsEnabled(SerializedProperty property)
{
return true;
return property.isArray ? property.arraySize > 0 : true;
}

public void Perform(SerializedProperty property)
{
#if UNITY_2021_3_OR_NEWER
var value = property.managedReferenceValue;
if (value != null)
var isArrayCopy = false;
var entries = new List<CopySerializeReferenceEntry>();
if (property.propertyType == SerializedPropertyType.ManagedReference)
{
var entry = CreateEntry(property);
entries.Add(entry);
}
else if (property.isArray)
{
var referenceType = value.GetType();
var data = JsonUtility.ToJson(value);
Cache = new CopySerializeReferenceCache(referenceType, data);
return;
isArrayCopy = true;
var propertiesCount = property.arraySize;
for (var i = 0; i < propertiesCount; i++)
{
var childProperty = property.GetArrayElementAtIndex(i);
var entry = CreateEntry(childProperty);
entries.Add(entry);
}
}

Cache = new CopySerializeReferenceCache(null, null);
#endif
PropertyUtility.TryGetSerializeReferenceType(property, out var referenceType);
Cache = new CopySerializeReferenceCache(referenceType, entries, isArrayCopy);
}

public GUIContent Label => new GUIContent("Copy Serialize Reference");
public GUIContent Label => new GUIContent("Copy Serialized References");
}
}
}
#endif
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using UnityEditor;
#if UNITY_2021_3_OR_NEWER
using UnityEditor;
using UnityEngine;

namespace Toolbox.Editor.ContextMenu.Operations
Expand All @@ -7,12 +8,8 @@ internal class DuplicateSerializeReferenceArrayElementOperation : IContextMenuOp
{
public bool IsVisible(SerializedProperty property)
{
#if UNITY_2021_3_OR_NEWER
return property != null && property.propertyType == SerializedPropertyType.ManagedReference &&
PropertyUtility.IsSerializableArrayElement(property);
#else
return false;
#endif
}

public bool IsEnabled(SerializedProperty property)
Expand All @@ -22,7 +19,6 @@ public bool IsEnabled(SerializedProperty property)

public void Perform(SerializedProperty property)
{
#if UNITY_2021_3_OR_NEWER
var sourceProperty = property.Copy();
sourceProperty.serializedObject.Update();
var sourceValue = sourceProperty.managedReferenceValue;
Expand All @@ -40,9 +36,9 @@ public void Perform(SerializedProperty property)
}

sourceProperty.serializedObject.ApplyModifiedProperties();
#endif
}

public GUIContent Label => new GUIContent("Duplicate Serialize Reference Array Element");
}
}
}
#endif
Loading