๐ฏ๐ต ๆฅๆฌ่ช็
Fundamental scripting library for Unity designed to be minimal, efficient & dependency-free as possible.
Most of scripts are C# / .NET compliant. See using
statements in .cs
files for details.
Tip
Licensed under the MIT License unless otherwise described.
Supported Unity version: Unity 2021.3+
Add the following git URL
in Unity Package Manager (UPM)
https://github.com/sator-imaging/Unity-Fundamentals.git#v1.3.1
ย Append desired version at the end. (#vX.Y.Z
)
https://github.com/sator-imaging/Unity-Fundamentals.git
ย very experimental, may have breaking changes without notice.
Split string without allocation. ๐ or ๆฅๆฌ่ช็
Transform event Action<T>
to IObservable<T>
.
Task.WhenEach
for Unity / .NET Standard 2.1
๐
or ๆฅๆฌ่ช็
Providing function for early-finally
pattern.
๐
TODO: implement IAsyncDisposable
overloads.
- ex)
await using var _ = Defer.New(async () => await ...);
Unlike other enum utility, this class re-use system cache and also support parsing Flags
value.
๐
List implementation of Span<T>
especially designed to work with Span<char>
.
๐
TODO: add (int, int) GetMinMaxLength()
- to prevent enumerating repeatedly to get same result.
- add
bool _isFrozen
to determine recalculate is required.Write
turns it off when changed. - add
bool IsFormattable
with more strict token check:{one}{two}
(currently accepted but must be rejected) - one pass replacement for
FormatNonAlloc
: search for{
then perform.Slice(foundIndex, fromTokenMaxLength)
, check which one is match.
Minimal xxHash32 / xxHash64 implementation. ๐ or ๆฅๆฌ่ช็
License: BSD 2-Clause
xxHash Clean C Reference Implementation
xxHash Library
Copyright (c) 2012-2020 Yann Collet
Copyright (c) 2019-2020 Devin Hussey (easyaspi314)
All rights reserved.
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice, this
list of conditions and the following disclaimer in the documentation and/or
other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Lightning-fast non-alloc string builder faster than DefaultInterpolatedStringHandler
๐
or ๆ่ก็ใช่งฃ่ชฌ
NOTE: depending on StrictEnum
TODO: benchmark
Self-contained singly linked list based object pool. ๐ or ๆฅๆฌ่ช็
TODO: write tests
Fast & efficient exclusive or concurrent thread/event manager. ๐
Job runner for Unity providing reliable un-async-ing functions and more.
Note
InitializeMainThreadContext
may be required to being called on Unity startup. (it called automatically by default)
TODO: documentation for OnMainThread
, InThreadPool
, SetExceptionHandler
, GetTimerToken
, GetElapsedTime
, Shutdown
, CreateNewScheduler
, SetConcurrentThreadCount
Thread! safe!! singleton!!! ๆฅๆฌ่ช็
https://github.com/sator-imaging/Half-Ulid
Crazy stuff.
No need to use this anymore as unity asset store now accepts package.json
.
๐
Transform UnityEvent
to IObservable<T>
.
๐
Reliable nullable (??
?.
) support for ??=
UnityEngine.Object
.
๐
Provides functions that avoid creating leaked managed shell. ๐ or ่งฃ่ชฌใใฎ๏ผ ใใฎ๏ผ
Self-contained singly linked list based MonoBehaviour
pool.
๐
or ๆฅๆฌ่ช็
ExecuteAfter
extension method- unlike builtin
ExecuteLater
method, this method runs action right after specified number of repaint events.
- unlike builtin
DisableStyleTransitionScope
extension method- this method temporarily turns off all transitions and turns them back on when leaving the
IDisposable
scope. useful for immediate style update without transition animation.
- this method temporarily turns off all transitions and turns them back on when leaving the
Use extension method RegisterCallbackAsSubscription
to register event as IDisposable
interface.
It allows easily unregister event later.
Extension method RegisterCallbackAsEnum
allows implement typed callback.
And also there is option to delay event to correctly handle dropdown event.
(if no delay, dropdown in Unity editor behaves like 'stop-the-world' and some actions are not work as expected)
NOTE: depending on StrictEnum
Download C# API Documentation from Nuget.org. ๐
License: Apache License version 2.0
Provide access to VisualElement
in Unity main toolbar.
๐
or ๆฅๆฌ่ช็
Not perfect. Just for reference. ๐
TODO: documentation
As IL2CPP bloats resulting C++ code if C# class is not marked with sealed
modifier.
Obsolete features still exist as .txt
files.
๐
or ๆฅๆฌ่ช็
https://sator-imaging.github.io/Unity-Fundamentals/api/index.html
ย
ย
How to set DefineConstants
in .csproj file from dotnet
command, see
Directory.Build.Props
and
Program.cs
for details.
Source: dotnet/sdk#9562 (comment)
Post as a comment for pull request.
/gemini summary
/gemini review
/gemini
/gemini help
https://developers.google.com/gemini-code-assist/docs/customize-gemini-behavior-github#style-guide