Skip to content

Releases: malanek/SerializedCollections

Release 1.1.24

04 Dec 12:13

Choose a tag to compare

✨ Features

  • Added ShowIfAttribute for conditional property visibility in the inspector.
  • Added SearchEnumAttribute for searchable enum dropdowns.

Release 1.1.22

01 Jun 13:02

Choose a tag to compare

✨ Features

  • Added support for resizable columns in the serialized dictionary inspector via drag handles.
  • Implemented IEquatable<Array2D<T>> for value-based comparisons.

Release 1.1.20

08 Jan 21:03

Choose a tag to compare

New Feature: Rich Text Resizable Text Area for Unity Editor

Added:

  • ResizableRichTextAreaAttribute – A new attribute that allows for resizable text areas with rich text support in Unity's editor.
  • ResizableRichTextAreaDrawer – Custom property drawer that enables dynamic resizing of text areas while supporting rich text rendering.
  • Toggle button (Rich) to switch between plain and rich text modes.
  • RichTextUtility – A static utility class providing extension methods to easily format text with rich text tags (color, bold, italic, size).

Release 1.1.15

08 Dec 15:37

Choose a tag to compare

Added New Features to SerializedDictionary

GetRandomSubset(int count)

  • Description: Returns a random subset of key-value pairs from the dictionary, with no repetitions.

  • Usage Example:

    var randomSubset = mySerializedDictionary.GetRandomSubset(3);
    foreach (var kvp in randomSubset)
    {
        Console.WriteLine($"{kvp.Key}: {kvp.Value}");
    }
  • Exceptions:

    • Throws ArgumentNullException if the dictionary is null.
    • Throws ArgumentOutOfRangeException if count is negative.
    • Throws ArgumentException if count is greater than the dictionary size.

GetRandomKeys(int count)

  • Description: Returns a random subset of keys from the dictionary, with no repetitions.

  • Usage Example:

    var randomKeys = mySerializedDictionary.GetRandomKeys(2);
    foreach (var key in randomKeys)
    {
        Console.WriteLine($"Key: {key}");
    }
  • Exceptions:

    • Throws ArgumentNullException if the dictionary is null.
    • Throws ArgumentOutOfRangeException if count is negative.
    • Throws ArgumentException if count is greater than the dictionary size.

GetRandomValues(int count)

  • Description: Returns a random subset of values from the dictionary, with no repetitions.

  • Usage Example:

    var randomValues = mySerializedDictionary.GetRandomValues(2);
    foreach (var value in randomValues)
    {
        Console.WriteLine($"Value: {value}");
    }
  • Exceptions:

    • Throws ArgumentNullException if the dictionary is null.
    • Throws ArgumentOutOfRangeException if count is negative.
    • Throws ArgumentException if count is greater than the dictionary size.

GetRandomKey()

  • Description: Returns a single random key from the dictionary.

  • Usage Example:

    var randomKey = mySerializedDictionary.GetRandomKey();
    Console.WriteLine($"Random Key: {randomKey}");
  • Exceptions:

    • Throws InvalidOperationException if the dictionary is empty.
    • Throws ArgumentNullException if the dictionary is null.

GetRandomValue()

  • Description: Returns a single random value from the dictionary.

  • Usage Example:

    var randomValue = mySerializedDictionary.GetRandomValue();
    Console.WriteLine($"Random Value: {randomValue}");
  • Exceptions:

    • Throws InvalidOperationException if the dictionary is empty.
    • Throws ArgumentNullException if the dictionary is null.

Release 1.1.12

07 Nov 10:42

Choose a tag to compare

Added IReadOnlyArray2D<T> Interface to Array2D<T>

This release introduces the IReadOnlyArray2D<T> interface to the Array2D<T> class, providing a standardized, read-only way to access elements in a two-dimensional array. This interface supports the IEnumerable<T> interface, enabling iteration over array elements in a row-major order. It also includes properties for retrieving array metadata, such as dimensions and column width, without modifying the underlying data.

1.1.11

07 Nov 10:39

Choose a tag to compare

Fixed Issue with Changing Array Size

1.1.9

07 Nov 10:38

Choose a tag to compare

Added IEnumerable Support to Array2D

This release introduces IEnumerable support for the Array2D class, allowing for easy iteration over elements in a two-dimensional array. With this enhancement, users can now leverage LINQ operations and other collection-based functionality directly on Array2D objects.

1.1.8

07 Nov 10:36

Choose a tag to compare

  • Expandable attribute fixes

1.1.7

07 Nov 10:35

Choose a tag to compare

  • Expandable attribute fixes

Release 1.1.6

04 Sep 08:24

Choose a tag to compare

Release 1.1.6 - Serialized Collections + Inspector Extensions

New Features

  • Array2D: Added support for serializing and editing 2D arrays directly in the Unity inspector. This feature simplifies working with grid-based data, such as maps or tables.

  • SerializedDictionary<TKey, TValue>: Introduced the ability to serialize dictionaries in the Unity inspector. You can now easily manage key-value pairs without needing custom solutions.

Inspector Extensions

  • [Radio]: A new attribute that allows you to mark a group of bool fields in the inspector so that only one can be selected at a time. Perfect for scenarios where you need radio button-like functionality.

  • [FolderPath]: Added a button in the inspector for easily selecting folder paths. This tool speeds up the configuration of file paths or data loading.

  • [ExpandRef]: Allows you to expand and preview referenced objects directly in the inspector, making it easier to manage complex data structures.

Fixes

  • General performance improvements and code optimizations.
  • Fixed several minor issues related to the serialization of custom structures.