{"id":20994562,"url":"https://github.com/uta-org/uzlib.lite","last_synced_at":"2026-03-03T08:15:24.786Z","repository":{"id":38010089,"uuid":"166732835","full_name":"uta-org/uzLib.Lite","owner":"uta-org","description":"The Lite version of my paid uzLib (Unity3D) API used as dependency of my open-source repos.","archived":false,"fork":false,"pushed_at":"2022-12-08T07:33:39.000Z","size":3652,"stargazers_count":3,"open_issues_count":8,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-25T20:23:29.331Z","etag":null,"topics":["api","extension-methods","extensions","library"],"latest_commit_sha":null,"homepage":"http://u3d.as/1vfn","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/uta-org.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-01-21T02:00:10.000Z","updated_at":"2022-02-02T23:37:23.000Z","dependencies_parsed_at":"2023-01-24T19:31:01.719Z","dependency_job_id":null,"html_url":"https://github.com/uta-org/uzLib.Lite","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/uta-org%2FuzLib.Lite","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/uta-org%2FuzLib.Lite/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/uta-org%2FuzLib.Lite/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/uta-org%2FuzLib.Lite/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/uta-org","download_url":"https://codeload.github.com/uta-org/uzLib.Lite/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254230776,"owners_count":22036237,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api","extension-methods","extensions","library"],"created_at":"2024-11-19T07:18:46.457Z","updated_at":"2026-03-03T08:15:24.715Z","avatar_url":"https://github.com/uta-org.png","language":"C#","funding_links":["https://www.patreon.com/z3nth10n","https://paypal.me/z3nth10n"],"categories":[],"sub_categories":[],"readme":"# uzLib.Lite [![HitCount](http://hits.dwyl.io/uta-org/uzLibLite.svg)](http://hits.dwyl.io/uta-org/uzLibLite)\n\n\u003e The Lite version of my paid uzLib (Unity3D) API used as dependency of my open-source repos.\n\n* uzLib.Lite: [![NuGet version (uzLib.Lite)](https://img.shields.io/nuget/v/uzLib.Lite.svg?style=flat-square)](https://www.nuget.org/packages/uzLib.Lite/)\n* uzLib.Lite.ExternalCode: [![NuGet version (uzLib.Lite.ExternalCode)](https://img.shields.io/nuget/v/uzLib.Lite.ExternalCode.svg?style=flat-square)](https://www.nuget.org/packages/uzLib.Lite.ExternalCode/)\n\n## Contents\n\nThis API has an extensive list of methods to extend functionality of .NET Framework classes, WinForms, System.Console and Unity3D, also it contains own/third party implementation:\n\n### List of interesting contents by namespaces\n\n- **uzLib.Lite.Core**\n\t- Contains a Singleton implementation.\n\t- Contains a Console wrapper to read lines or keys at the same time. (**ConsoleOutput** class, *method: ReadLineOrKey*)\n\t- Inside of the Input namespace we can find some class that contains an implementation (**SmartPsswrd class**) to read `passwords` in screen without displaying it (as expected).\n\n- **uzLib.Lite.Extensions**\n\t- Contains some *array/collection extensions* (add element to an array, check if *Dictionary/List/HashSet/IEnumerable* is null or empty (`IsNullOrEmpty`), ForEach extensions to execute `Action` callbacks (included with index) (expanded on paid API), remove at index, `DisctintBy`...)\n\t- Contains some Dictionary extensions methods:\n\t\t- **FindIndex** (find item index by predicate)\n\t\t- **GetIndex** (get index of existing item, if not, returns -1)\n\t\t- **AddOrSet** (add value if key doesn't exists, if not update its value)\n\t\t\t- **AddOrAppend** (the same as before, but for `List\u003cT\u003e/T[]` as **TValue**)\n\t\t- **AddAndGet** (if key doesn't exist add it with specified value, then return it)\n\t\t\t- **Get** (the same as before, but force generic types with constraints to be classes (`where TValue : class, new()`))\n\t\t\t- **SafeGet** (try to get value if key exists if not returns default value (`default(TValue)`))\n\t- Contains some *Bitmap extensions*: get an `IEnumerable` of Colors from a `Bitmap` class or `Save` it to a path (or to a Stream (**TODO**)).\n\t- Contains some *byte extensions*: `RoundOff` method (to get a rounded byte)...\n\t- Contains some *Color extensions*: **get threshold** between two colors, compare `color1` to **get similar color** from a IEnumerable of colors (2), *posterize convolution*, get percentage of similarity, round color...\n\t- Contains a method extension to **compile \\*.sln files**... \n\t- Contains *compression extensions*: **zip/unzip** files from it's path, streams or objects (sync/async)...\n\t- Contains a *CodeDOM extension* to add `static` literal to new classes declared through `CodeTypeDeclaration` class.\n\t- Contains a *DateTime extension* to get its *UNIX timestamp*(in `DateTime` not `DateTimeOffset` class).\n\t- Contains a *Exception extension* to check if *array/List/Dictionary* specified index **is out of bounds**.\n\t- Contains *Git extensions* to get some data by using **LibGit2Sharp** library.\n\t- Contains *HTML extensions* to **clean and find ocurrences** on *HTML source code*.\n\t- Contains *IO exntensions* to check valid paths, get file names from urls, get and check relatives paths patterns, check if path is a directory, get top level directories, go up in the tree (*N times*), get temporaly directories, check if directories are empty or null, delete folder contents...\n\t- Contains *Net extensions* to download files and make (`GET`) requests...\n\t- Contains a *Object extension* to check if object is casteable...\n\t- Contains a *Process extension* to run process asynchronously...\n\t- Contains *Reflection extensions* to invoke static/non-static methods, check if method exists in Assembly, run method by checking exceptions...\n\t- Contains *Serialization methods* to serialize/deserialize files/Streams/objects/byte arrays and to check if valid JSON/XML, etc...\n\t- Contains *String extensions* to check if strig is null or empty (no longer needed to use `...string.IsNullOrEmpty(\"example\")...`), format strings (the same logic), to change the first character from a string in uppercase... \n\t- Contains a *URI extension* to check if URL passed by string is valid.\n\t- Contains a *Visual Studio extension* to get the Startup project from a solution file...\n\n- **uzLib.Lite.Plugins.SymLinker**\n\t- Contains a system to create **symbolic links** in Windows/Linux/Mac OSx...\n\n- **uzLib.Lite.Shells**\n\t- Contains an **obsolete** GitShell (an self-implementation of Git funcionality before I discovered LibGit2Sharp...)\n\n- **uzLib.Lite.Unity.Extensions**\n\t- Contains *Animations extensions*.\n\t- Contains *Color extensions*: Orange color (**TODO**: implement more colors), check if colors are similar, the distance between colors, get random colors, the same extensions from `uzLib.Lite.Extensions.ColorHelper` class (but adapted for Unity3D)...\n\t- Contains *Geometry extensions* to get random positions (`Vector3`), get average of `Vector3`s, get encapsuled bounds (this is an average of the bounds of all renderers of an `GameObject`s), getting the orthographic size to set in a camera to make this object fit perfectly on its view, get the offset from a model (getting the maximum and the minimum centers from the `Renderer`s of a `GameObject`s), compare *Vector3/Vector2* types to check if lesser or equal, greater or equal, lesser/greater than another *Vector3/Vector2*, get inverted Vector3/Vector2, get the ray from a camera center...\n\t- Contains *Math extensions* get the maximum absolute of an array of floats (`params`), getting the multiple of a float, check if float is between a range (exclusive/inclusive operation), set the \"Y\" parameter of a vector, get the distance from two Vector3/Vector2...\n\t- Contains *Object extensions (GameObject/Transforms)* to set layers, tags recursively, remove components recurisvely, find Transform parent by its name, get the topmost parent component, the components by name, get or add component in a GameObject (or throw exception/LogError), make child easily, safe destroy (check if Application isEditor to execute `DesroyImmediate` instead), get GameObject path (dump hierarchy of childs into a string), send message to objects of selected type...\n\t- Contains *Rect extensions* to make `PropertyDrawer`s implemenentation easier, check if rect is inside another rect, add padding to a rect, Clamp them...\n\t- Contains *Texture extensions* to write a text into a texture, get its width/height as a `Vector2`, create a texture from a color...\n\t- Contains *UI extensions* where are located some custom `GUIStyle`s, get centered `Rect`, draw a `Rect`, draw a `ProgressBar`, centered label, draw Marquees...\n\n- **uzLib.Lite.Unity.Utils**\n\t- Contains a *GLDebug class* to visualize Gizmos in-game.\n\n# TODO: This must be rewritten\n\n## Projects on this repo\n\n- **uzLib.Lite**: Main project.\n- **uzLib.Lite.BeforeBuild**: Program project that launches *before* `uzLib.Lite` builds.\n- **uzLib.Lite.AfterBuild**: Program project that launches *after* `uzLib.Lite` builds.\n- **uzLib.Lite.Tests**: Project to do tests.\n- **uzLib.Lite.UnitTesting**: Project for UnitTesting (used outside of Unity3D).\n- **uzLib.Lite.UnityEditor**: Project that contains Unity3D Editor scripts.\n- **uzLib.Lite.ExternalCode**: Project used to include files that will not be compiled (mainly used for Unity3D directives, `UNITY_EDITOR` or `UNITY_xxx`). This files are copied by the *BeforeBuild* \u0026\u0026 *AfterBuild* projects.\n\n#### TODO Projects\n\n- **uzLib.Lite.ResolveConflicts**: This project will resolve conflicts when Rebuiling (launched at uzLib.Lite.BeforeBuild exception). It will launch Meld with the conflicting files (those files will be serialized in BeforeBuild process).\n\n## Setup\n\nNeed help? Just clone this repository into your Unity project or in your solution.\n\nFor documentation, just check the [Documentation API](http://dev.z3nth10n.net/dev/assets/uzlib.lite/docs).\n\n## Interesting Resources\n\n[There is an extensive of interesting resources](/docs/Interesting%20Resources/) that I would like to implement as third party utils onto this libraryy or maybe as reimplementations of paid assets.\n\n## Issues\n\nHaving issues? Just report in [the issue section](/issues). **Thanks for the feedback!**\n\n## Contribute\n\nFork this repository, make your changes and then issue a pull request. If you find bugs or have new ideas that you do not want to implement yourself, fill a bug report.\n\n### TODO\n\n- Change `Safe` word on methods and use `Try`.\n- Do a more friendly compilation (select paths of compilation more easily)\n- Check for unusable `usings` in code\n- Disable `AssetDatabase` refresh while uzLibe.Lite is compiling through `WebSockets`\n- Make backups of the `ExternalCode`, in case we didn't saved the code on the lib part\n- Automerge changes from local Unity projects in the `ExternalCode` part\n- Fix namespaces (files inside of Unity folders must be starting by `UnityEngine` instead of `uzLib.Lite....`)\n- Check that Unity3D can compile without problems before launching v1.3\n\n## Donate\n\nBecome a patron, by simply clicking on this button (**very appreciated!**):\n\n[![](https://c5.patreon.com/external/logo/become_a_patron_button.png)](https://www.patreon.com/z3nth10n)\n\n... Or if you prefer a one-time donation:\n\n[![](https://www.paypalobjects.com/en_US/i/btn/btn_donateCC_LG.gif)](https://paypal.me/z3nth10n)\n\n## Copyright\n\nCopyright (c) 2020 z3nth10n (United Teamwork Association).\n\nLicense: GNU General Public License v3.0\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Futa-org%2Fuzlib.lite","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Futa-org%2Fuzlib.lite","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Futa-org%2Fuzlib.lite/lists"}