Coder Social home page Coder Social logo

varneon / vudon-arrayextensions Goto Github PK

View Code? Open in Web Editor NEW
27.0 1.0 0.0 47 KB

Collection of array extension methods compatible with UdonSharp 1.x which adds partial feature set from List<T>

License: MIT License

C# 100.00%
udonsharp vrcsdk3-worlds vrchat vrchat-sdk3 vrchat-udon

vudon-arrayextensions's Introduction

VUdon - Array Extensions GitHub Repo stars GitHub all releases GitHub tag (latest SemVer)

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

⚠️ 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

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

  1. Download com.varneon.vudon.array-extensions.zip from here
  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
  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:

  1. Download latest com.varneon.vudon.array-extensions.unitypackage from here
  2. Import the downloaded .unitypackage into your Unity project

Developed by Varneon with ♥️

Twitter Follow YouTube Channel Subscribers GitHub followers

vudon-arrayextensions's People

Contributors

varneon avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

vudon-arrayextensions's Issues

Get annoying error warrning In vscode

Sorry to interrupt. I'm new to unity, so it's possible that this problem isn't caused by this tool, but still want some help.
I imported this tool into my project, and then vscode says, it can't find the namespace. But I had no trouble compiling and running the code. How do I let vscode know that the project includes this package or namespace.
Thanks in advance.

image

Remove version file

UPM package's version is stored in the manifest, version file is obsolete

Automate VPM releases

Automate the release workflow for creating new releases based on package manifest information with following assets included:

  • .zip compatible with VRChat Package Manager
  • .unitypackage

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.