https://github.com/varneon/vudon-arrayextensions
Collection of array extension methods compatible with UdonSharp 1.x which adds partial feature set from List<T>
https://github.com/varneon/vudon-arrayextensions
udonsharp vrchat vrchat-sdk3 vrchat-udon vrcsdk3-worlds
Last synced: about 1 month ago
JSON representation
Collection of array extension methods compatible with UdonSharp 1.x which adds partial feature set from List<T>
- Host: GitHub
- URL: https://github.com/varneon/vudon-arrayextensions
- Owner: Varneon
- License: mit
- Created: 2022-08-10T00:52:47.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2023-10-07T13:18:52.000Z (over 1 year ago)
- Last Synced: 2025-03-16T19:53:55.406Z (about 1 month ago)
- Topics: udonsharp, vrchat, vrchat-sdk3, vrchat-udon, vrcsdk3-worlds
- Language: C#
- Homepage:
- Size: 45.9 KB
- Stars: 35
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
# [VUdon](https://github.com/Varneon/VUdon) - Array Extensions  [](https://github.com/Varneon/VUdon-ArrayExtensions/stargazers) [](https://github.com/Varneon/VUdon-ArrayExtensions/releases) [](https://github.com/Varneon/VUdon-ArrayExtensions/releases/latest)
Collection of array extension methods compatible with UdonSharp 1.x which adds partial feature set from List
| **Method** | **Parameters** | **Returns** | **Description** |
| - | - | - | - |
| `Add` | `T` | `T[]` | *Adds an item to an array* |
| `AddRange` | `T[]` | `T[]` | *Adds the elements of the specified collection to the end of the array* |
| `AddUnique` | `T` | `T[]` | *Adds an item to an array and ensures duplicates are not added* |
| `Contains` | `T` | `bool` | *Determines whether an element is in the array* |
| `FirstOrDefault` | | `T` | *Returns the first element, or default value if the array is empty* |
| `GetElementTypeUdon` | | `Type` | *Gets the element type of the array type* |
| `GetRange` | `Int, Int` | `T[]` | *Creates a shallow copy of a range of elements in the source* |
| `IndexOf` | `T` (`Int`, `Int`) | `Int` | *Returns the zero-based index of the first occurrence of a value in the T[]* |
| `Insert` | `Int, T` | `T[]` | *Inserts item to array at index* |
| `InsertRange` | `Int, T[]` | `T[]` | *Inserts the elements of a collection into the [] at the specified index* |
| `LastIndexOf` | `T` (`Int`, `Int`) | `Int` | *Returns the zero-based index of the last occurrence of a value in the T[]* |
| `LastOrDefault` | | `T` | *Returns the last element, or default value if the array is empty* |
| `Remove` | `T` | `T[]` | *Removes item from array* |
| `RemoveAt` | `Int` | `T[]` | *Removes item at index from array* |
| `RemoveRange` | `Int, Int` | `T[]` | *Removes a range of elements from the T[]* |
| `Resize` | `Int` | `T[]` | *Resizes array* |
| `Reverse` | | `T[]` | *Reverses Array* |> ### :warning: For performance reasons this extension method library doesn't implement null checks! Please ensure the arrays you're accessing with the methods from this library are initialized.
## Usage Demonstration
```csharp
using UdonSharp;
using UnityEngine;
using Varneon.VUdon.ArrayExtensions;public class UdonArrayExtensionDemo : UdonSharpBehaviour
{
[SerializeField]
private string[] strings;[SerializeField]
private string[] range;[SerializeField]
private string text;[SerializeField]
private int index;[SerializeField]
private int count;public void UsageDemo()
{
// Add item to array
strings = strings.Add(text);// Add range of elements to array
strings = strings.AddRange(range);
// Check if item is contained in array
Debug.Log(strings.Contains(text));// Get range of elements in array
Debug.Log(string.Join("\n", strings.GetRange(index, count)));// Get the first index of element in array
Debug.Log(strings.IndexOf(text));// Get the first index of element in array, starting at index
Debug.Log(strings.IndexOf(text, index));// Get the first index of element in array in a range starting at index at the size of count
Debug.Log(strings.IndexOf(text, index, count));// Insert item to array
strings = strings.Insert(index, text);// Insert array of items to array
strings = strings.InsertRange(index, range);// Get the last index of element in array
Debug.Log(strings.LastIndexOf(text));// Get the last index of element in array, starting at index
Debug.Log(strings.LastIndexOf(text, index));// Get the last index of element in array in a range starting at index at the size of count
Debug.Log(strings.LastIndexOf(text, index, count));// Remove item from array
strings = strings.Remove(text);// Remove item at index from array
strings = strings.RemoveAt(index);// Remove range of elements from array
strings = strings.RemoveRange(index, count);// Reverse array
strings = strings.Reverse();// Get the first element in array
Debug.Log(strings.FirstOrDefault());// Get the last element in array
Debug.Log(strings.LastOrDefault());// Get the element type of a type
Debug.Log(strings.GetType().GetElementTypeUdon());// Add unique item to array (if item exists in array, it won't be added)
strings = strings.AddUnique(text);// Resize array
strings = strings.Resize(index);
}
}```
# Installation
### Import with [VRChat Creator Companion](https://vcc.docs.vrchat.com/vpm/packages#user-packages):
> 1. Download `com.varneon.vudon.array-extensions.zip` from [here](https://github.com/Varneon/VUdon-ArrayExtensions/releases/latest)
> 2. Unpack the .zip somewhere
> 3. In VRChat Creator Companion, navigate to `Settings` > `User Packages` > `Add`
> 4. Navigate to the unpacked folder, `com.varneon.vudon.array-extensions` and click `Select Folder`
> 5. `VUdon - Array Extensions` should now be visible under `Local User Packages` in the project view in VRChat Creator Companion
> 6. Click `Add`### Import with [Unity Package Manager (git)](https://docs.unity3d.com/2019.4/Documentation/Manual/upm-ui-giturl.html):
> 1. In the Unity toolbar, select `Window` > `Package Manager` > `[+]` > `Add package from git URL...`
> 2. Paste the following link: `https://github.com/Varneon/VUdon-ArrayExtensions.git?path=/Packages/com.varneon.vudon.array-extensions`### Import from [Unitypackage](https://docs.unity3d.com/2019.4/Documentation/Manual/AssetPackagesImport.html):
> 1. Download latest `com.varneon.vudon.array-extensions.unitypackage` from [here](https://github.com/Varneon/VUdon-ArrayExtensions/releases/latest)
> 2. Import the downloaded .unitypackage into your Unity project## Developed by Varneon with :hearts:
[](https://twitter.com/Varneon)
[](https://www.youtube.com/Varneon)
[](https://github.com/Varneon)