com.soosvet_games.common_tools 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/workflows/release-package.yml +22 -0
- package/Editor/HierarchyActivationTool.cs +37 -0
- package/Editor/HierarchyActivationTool.cs.meta +11 -0
- package/Editor/SoosvetGames.CommonTools.Editor.asmdef +16 -0
- package/Editor/SoosvetGames.CommonTools.Editor.asmdef.meta +7 -0
- package/Editor.meta +8 -0
- package/README.md +4 -0
- package/README.md.meta +7 -0
- package/Runtime/Extensions/AssetDatabaseExtensions.cs +31 -0
- package/Runtime/Extensions/AssetDatabaseExtensions.cs.meta +11 -0
- package/Runtime/Extensions/CanvasGroupExtensions.cs +14 -0
- package/Runtime/Extensions/CanvasGroupExtensions.cs.meta +3 -0
- package/Runtime/Extensions/CollectionExtensions.cs +92 -0
- package/Runtime/Extensions/CollectionExtensions.cs.meta +11 -0
- package/Runtime/Extensions/ImageExtensions.cs +14 -0
- package/Runtime/Extensions/ImageExtensions.cs.meta +11 -0
- package/Runtime/Extensions/LinqExtensions.cs +29 -0
- package/Runtime/Extensions/LinqExtensions.cs.meta +11 -0
- package/Runtime/Extensions/ListExtensions.cs +20 -0
- package/Runtime/Extensions/ListExtensions.cs.meta +11 -0
- package/Runtime/Extensions/RectExtensions.cs +16 -0
- package/Runtime/Extensions/RectExtensions.cs.meta +11 -0
- package/Runtime/Extensions/ReflectionExtensions.cs +23 -0
- package/Runtime/Extensions/ReflectionExtensions.cs.meta +11 -0
- package/Runtime/Extensions/StringExtensions.cs +37 -0
- package/Runtime/Extensions/StringExtensions.cs.meta +11 -0
- package/Runtime/Extensions/VectorExtensions.cs +12 -0
- package/Runtime/Extensions/VectorExtensions.cs.meta +11 -0
- package/Runtime/Extensions.meta +3 -0
- package/Runtime/Registry.cs +97 -0
- package/Runtime/Registry.cs.meta +3 -0
- package/Runtime/SoosvetGames.CommonTools.asmdef +3 -0
- package/Runtime/SoosvetGames.CommonTools.asmdef.meta +7 -0
- package/Runtime.meta +8 -0
- package/package.json +11 -0
- package/package.json.meta +7 -0
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
name: Add Package
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches:
|
|
6
|
+
- main
|
|
7
|
+
|
|
8
|
+
jobs:
|
|
9
|
+
publish-gpr:
|
|
10
|
+
runs-on: ubuntu-latest
|
|
11
|
+
permissions:
|
|
12
|
+
packages: write
|
|
13
|
+
contents: read
|
|
14
|
+
steps:
|
|
15
|
+
- uses: actions/checkout@v3
|
|
16
|
+
- uses: actions/setup-node@v3
|
|
17
|
+
with:
|
|
18
|
+
node-version: '16.x'
|
|
19
|
+
- run: npm install
|
|
20
|
+
- run: npm publish
|
|
21
|
+
env:
|
|
22
|
+
NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
using UnityEditor;
|
|
2
|
+
using UnityEngine;
|
|
3
|
+
|
|
4
|
+
namespace SoosvetGames.CommonTools.Extensions.Editor
|
|
5
|
+
{
|
|
6
|
+
[ InitializeOnLoad ]
|
|
7
|
+
internal static class HierarchyActivationTool
|
|
8
|
+
{
|
|
9
|
+
static HierarchyActivationTool() => EditorApplication.hierarchyWindowItemOnGUI += HierarchWindowOnGui;
|
|
10
|
+
|
|
11
|
+
private static void HierarchWindowOnGui( int instanceID, Rect selectionRect )
|
|
12
|
+
{
|
|
13
|
+
// make rectangle
|
|
14
|
+
var r = new Rect(selectionRect);
|
|
15
|
+
r.x = 35;
|
|
16
|
+
r.width = 18;
|
|
17
|
+
|
|
18
|
+
// get objects
|
|
19
|
+
Object o = EditorUtility.InstanceIDToObject(instanceID);
|
|
20
|
+
var obj = o as GameObject;
|
|
21
|
+
|
|
22
|
+
// drag toggle gui
|
|
23
|
+
if (obj != null)
|
|
24
|
+
{
|
|
25
|
+
bool prev = obj.activeSelf;
|
|
26
|
+
bool next = GUI.Toggle(r, obj.activeSelf, string.Empty);
|
|
27
|
+
|
|
28
|
+
if (next != prev)
|
|
29
|
+
{
|
|
30
|
+
Undo.RecordObject(obj, $"Record {obj.name}");
|
|
31
|
+
obj.SetActive(next);
|
|
32
|
+
EditorUtility.SetDirty(obj);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "SoosvetGames.CommonTools.Editor",
|
|
3
|
+
"rootNamespace": "",
|
|
4
|
+
"references": [],
|
|
5
|
+
"includePlatforms": [
|
|
6
|
+
"Editor"
|
|
7
|
+
],
|
|
8
|
+
"excludePlatforms": [],
|
|
9
|
+
"allowUnsafeCode": false,
|
|
10
|
+
"overrideReferences": false,
|
|
11
|
+
"precompiledReferences": [],
|
|
12
|
+
"autoReferenced": true,
|
|
13
|
+
"defineConstraints": [],
|
|
14
|
+
"versionDefines": [],
|
|
15
|
+
"noEngineReferences": false
|
|
16
|
+
}
|
package/Editor.meta
ADDED
package/README.md
ADDED
package/README.md.meta
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
#if UNITY_EDITOR
|
|
2
|
+
using System.IO;
|
|
3
|
+
using UnityEditor;
|
|
4
|
+
using UnityEngine;
|
|
5
|
+
|
|
6
|
+
namespace SoosvetGames.CommonTools.Extensions
|
|
7
|
+
{
|
|
8
|
+
public static class AssetDatabaseExtensions
|
|
9
|
+
{
|
|
10
|
+
public static void ClearFolder( this DefaultAsset defaultAsset )
|
|
11
|
+
{
|
|
12
|
+
ClearFolder( AssetDatabase.GetAssetPath( defaultAsset ) );
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
public static void ClearFolder( string folderPath )
|
|
16
|
+
{
|
|
17
|
+
var dataPath = Application.dataPath.Replace( "/Assets", "" );
|
|
18
|
+
var fullFolderPath = $"{dataPath}/{folderPath}";
|
|
19
|
+
|
|
20
|
+
if ( Directory.Exists( fullFolderPath ) )
|
|
21
|
+
{
|
|
22
|
+
Directory.Delete( fullFolderPath, true );
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
Directory.CreateDirectory( fullFolderPath );
|
|
26
|
+
|
|
27
|
+
AssetDatabase.Refresh();
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
#endif
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
using UnityEngine;
|
|
2
|
+
|
|
3
|
+
namespace SoosvetGames.CommonTools.Extensions
|
|
4
|
+
{
|
|
5
|
+
public static class CanvasGroupExtensions
|
|
6
|
+
{
|
|
7
|
+
public static void Enable( this CanvasGroup canvasGroup, bool trigger, bool withAlpha = true )
|
|
8
|
+
{
|
|
9
|
+
if ( withAlpha ) canvasGroup.alpha = trigger ? 1f : 0f;
|
|
10
|
+
canvasGroup.blocksRaycasts = trigger;
|
|
11
|
+
canvasGroup.interactable = trigger;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
using System;
|
|
2
|
+
using System.Collections.Generic;
|
|
3
|
+
using System.Linq;
|
|
4
|
+
|
|
5
|
+
namespace SoosvetGames.CommonTools.Extensions
|
|
6
|
+
{
|
|
7
|
+
public static class CollectionExtensions
|
|
8
|
+
{
|
|
9
|
+
public static T RandomItem< T >( this IList< T > list, int from = 0, int to = -1 )
|
|
10
|
+
{
|
|
11
|
+
if ( list.Count == 0 ) return default;
|
|
12
|
+
return list[ UnityEngine.Random.Range( from, to == -1 ? list.Count : to ) ];
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
public static T RandomItem< T >( this IList< T > list, int from = 0, int to = -1, params T[] except )
|
|
16
|
+
{
|
|
17
|
+
if ( list.Count == 0 ) return default;
|
|
18
|
+
|
|
19
|
+
var check = list.Except( except ).ToList();
|
|
20
|
+
return check[ UnityEngine.Random.Range( from, to == -1 ? check.Count : to ) ];
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
public static List< T > Shuffle< T >( this IList< T > list )
|
|
24
|
+
{
|
|
25
|
+
Random rnd = new Random();
|
|
26
|
+
var copy = new List< T >( list );
|
|
27
|
+
int n = copy.Count;
|
|
28
|
+
while ( n > 1 )
|
|
29
|
+
{
|
|
30
|
+
n--;
|
|
31
|
+
int k = rnd.Next( n + 1 );
|
|
32
|
+
T value = copy[ k ];
|
|
33
|
+
copy[ k ] = copy[ n ];
|
|
34
|
+
copy[ n ] = value;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
return copy;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/// <summary>
|
|
41
|
+
/// Resize for listB by listA
|
|
42
|
+
/// </summary>
|
|
43
|
+
public static void Resize< FIRST, SECOND >( IList< FIRST > listA, IList< SECOND > listB, Func< SECOND > onCreate, Func< SECOND > onRemove = null )
|
|
44
|
+
{
|
|
45
|
+
Resize( listA.Count, listB, onCreate, onRemove );
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/// <summary>
|
|
49
|
+
/// Resize list by size
|
|
50
|
+
/// </summary>
|
|
51
|
+
public static void Resize< T >( int size, IList< T > list, Func< T > onCreate, Func< T > onRemove = null )
|
|
52
|
+
{
|
|
53
|
+
int diff = size - list.Count;
|
|
54
|
+
|
|
55
|
+
if ( diff != 0 )
|
|
56
|
+
{
|
|
57
|
+
if ( diff > 0 ) //add
|
|
58
|
+
{
|
|
59
|
+
for ( int i = 0; i < diff; i++ )
|
|
60
|
+
{
|
|
61
|
+
Add();
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
else //rm
|
|
65
|
+
{
|
|
66
|
+
for ( int i = 0; i < -diff; i++ )
|
|
67
|
+
{
|
|
68
|
+
Remove();
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
void Add()
|
|
74
|
+
{
|
|
75
|
+
if ( onCreate != null )
|
|
76
|
+
{
|
|
77
|
+
T item = onCreate.Invoke();
|
|
78
|
+
list.Add( item );
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
void Remove()
|
|
83
|
+
{
|
|
84
|
+
if ( onRemove != null )
|
|
85
|
+
{
|
|
86
|
+
T item = onRemove.Invoke();
|
|
87
|
+
list.Remove( item );
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
using UnityEngine.UI;
|
|
2
|
+
|
|
3
|
+
namespace SoosvetGames.CommonTools.Extensions
|
|
4
|
+
{
|
|
5
|
+
public static class ImageExtensions
|
|
6
|
+
{
|
|
7
|
+
public static void SetAlpha( this Image image, float value )
|
|
8
|
+
{
|
|
9
|
+
var color = image.color;
|
|
10
|
+
color.a = value;
|
|
11
|
+
image.color = color;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
using System;
|
|
2
|
+
using System.Collections.Generic;
|
|
3
|
+
|
|
4
|
+
namespace SoosvetGames.CommonTools.Extensions
|
|
5
|
+
{
|
|
6
|
+
public static class LinqExtensions
|
|
7
|
+
{
|
|
8
|
+
/// <summary>Perform an action on each item.</summary>
|
|
9
|
+
/// <param name="source">The source.</param>
|
|
10
|
+
/// <param name="action">The action to perform.</param>
|
|
11
|
+
public static IEnumerable< T > ForEach< T >( this IEnumerable< T > source, Action< T > action )
|
|
12
|
+
{
|
|
13
|
+
foreach ( T obj in source )
|
|
14
|
+
action( obj );
|
|
15
|
+
return source;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
/// <summary>Perform an action on each item.</summary>
|
|
19
|
+
/// <param name="source">The source.</param>
|
|
20
|
+
/// <param name="action">The action to perform.</param>
|
|
21
|
+
public static IEnumerable< T > ForEach< T >( this IEnumerable< T > source, Action< T, int > action )
|
|
22
|
+
{
|
|
23
|
+
int num = 0;
|
|
24
|
+
foreach ( T obj in source )
|
|
25
|
+
action( obj, num++ );
|
|
26
|
+
return source;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
using System.Collections.Generic;
|
|
2
|
+
|
|
3
|
+
namespace SoosvetGames.CommonTools.Extensions
|
|
4
|
+
{
|
|
5
|
+
public static class ListExtensions
|
|
6
|
+
{
|
|
7
|
+
public static T PopAt< T >( this IList< T > list, int index )
|
|
8
|
+
{
|
|
9
|
+
if ( index < 0 || index >= list.Count ) return default;
|
|
10
|
+
|
|
11
|
+
T item = list[ index ];
|
|
12
|
+
list.RemoveAt( index );
|
|
13
|
+
return item;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
public static T PopFirst< T >( this IList< T > list ) => list.PopAt( 0 );
|
|
17
|
+
|
|
18
|
+
public static T PopLast< T >( this IList< T > list ) => list.PopAt( list.Count - 1 );
|
|
19
|
+
}
|
|
20
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
using UnityEngine;
|
|
2
|
+
|
|
3
|
+
namespace SoosvetGames.CommonTools.Extensions
|
|
4
|
+
{
|
|
5
|
+
public static class RectExtensions
|
|
6
|
+
{
|
|
7
|
+
public static Rect Encapsulate( this Rect rect, Rect other )
|
|
8
|
+
{
|
|
9
|
+
float xmin = Mathf.Min( rect.min.x, rect.max.x, other.min.x, other.max.x );
|
|
10
|
+
float xmax = Mathf.Max( rect.min.x, rect.max.x, other.min.x, other.max.x );
|
|
11
|
+
float ymin = Mathf.Min( rect.min.y, rect.max.y, other.min.y, other.max.y );
|
|
12
|
+
float ymax = Mathf.Max( rect.min.y, rect.max.y, other.min.y, other.max.y );
|
|
13
|
+
return Rect.MinMaxRect( xmin, ymin, xmax, ymax );
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
using System;
|
|
2
|
+
using System.Reflection;
|
|
3
|
+
|
|
4
|
+
namespace SoosvetGames.CommonTools.Extensions
|
|
5
|
+
{
|
|
6
|
+
public static class ReflectionExtensions
|
|
7
|
+
{
|
|
8
|
+
public static FieldInfo GetPrivateField( this Type type, string name )
|
|
9
|
+
{
|
|
10
|
+
return type.GetField( name, BindingFlags.Instance | BindingFlags.NonPublic );
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
public static MethodInfo GetInternalMethod( this Type type, string method )
|
|
14
|
+
{
|
|
15
|
+
return type.GetMethod( method, BindingFlags.Instance | BindingFlags.NonPublic );
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
public static MethodInfo GetStaticMethod( this Type type, string method )
|
|
19
|
+
{
|
|
20
|
+
return type.GetMethod( method, BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public );
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
using System;
|
|
2
|
+
|
|
3
|
+
namespace SoosvetGames.CommonTools.Extensions
|
|
4
|
+
{
|
|
5
|
+
public static class StringExtensions
|
|
6
|
+
{
|
|
7
|
+
public static readonly char EmptyChar = ' ';
|
|
8
|
+
|
|
9
|
+
/// <summary>
|
|
10
|
+
/// Checks if a string is empty.
|
|
11
|
+
/// </summary>
|
|
12
|
+
public static bool IsEmpty( this string s ) => string.IsNullOrEmpty( s ) || string.IsNullOrWhiteSpace( s );
|
|
13
|
+
|
|
14
|
+
public static string ReplaceAllCharsOn( this string s, char replacement )
|
|
15
|
+
{
|
|
16
|
+
var chars = s.ToCharArray();
|
|
17
|
+
|
|
18
|
+
for ( int i = 0; i < chars.Length; i++ )
|
|
19
|
+
{
|
|
20
|
+
if ( chars[ i ] != EmptyChar )
|
|
21
|
+
{
|
|
22
|
+
chars[ i ] = replacement;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
return new string( chars );
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
public static string FirstCharToUpper( this string input ) =>
|
|
30
|
+
input switch
|
|
31
|
+
{
|
|
32
|
+
null => throw new ArgumentNullException( nameof(input) ),
|
|
33
|
+
"" => throw new ArgumentException( $"{nameof(input)} cannot be empty", nameof(input) ),
|
|
34
|
+
_ => input[ 0 ].ToString().ToUpper() + input.Substring( 1 )
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
using System;
|
|
2
|
+
using System.Collections.Generic;
|
|
3
|
+
using System.Linq;
|
|
4
|
+
|
|
5
|
+
namespace SoosvetGames.CommonTools
|
|
6
|
+
{
|
|
7
|
+
public class Registry< T >
|
|
8
|
+
{
|
|
9
|
+
public event Action OnCollectionChanged;
|
|
10
|
+
public event Action< T > OnItemAdded;
|
|
11
|
+
public event Action< T > OnItemRemoved;
|
|
12
|
+
|
|
13
|
+
public IReadOnlyList< T > Registers => _registers;
|
|
14
|
+
protected readonly List< T > _registers = new();
|
|
15
|
+
|
|
16
|
+
public void SetCollection( IEnumerable< T > items )
|
|
17
|
+
{
|
|
18
|
+
_registers.Clear();
|
|
19
|
+
_registers.AddRange( items );
|
|
20
|
+
|
|
21
|
+
OnCollectionChanged?.Invoke();
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
public virtual bool Registrate( T register )
|
|
25
|
+
{
|
|
26
|
+
if ( !_registers.Contains( register ) )
|
|
27
|
+
{
|
|
28
|
+
_registers.Add( register );
|
|
29
|
+
|
|
30
|
+
OnItemAdded?.Invoke( register );
|
|
31
|
+
OnCollectionChanged?.Invoke();
|
|
32
|
+
|
|
33
|
+
return true;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
return false;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
public virtual void Registrate( IEnumerable< T > items )
|
|
40
|
+
{
|
|
41
|
+
foreach ( T register in items )
|
|
42
|
+
if ( !_registers.Contains( register ) )
|
|
43
|
+
_registers.Add( register );
|
|
44
|
+
|
|
45
|
+
OnCollectionChanged?.Invoke();
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
public virtual bool UnRegistrate( T register )
|
|
49
|
+
{
|
|
50
|
+
if ( _registers.Contains( register ) )
|
|
51
|
+
{
|
|
52
|
+
_registers.Remove( register );
|
|
53
|
+
|
|
54
|
+
OnItemRemoved?.Invoke( register );
|
|
55
|
+
OnCollectionChanged?.Invoke();
|
|
56
|
+
|
|
57
|
+
return true;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
return false;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
public R GetAs< R >() where R : class, T => Get< R >() as R;
|
|
64
|
+
|
|
65
|
+
public T Get< R >() where R : T
|
|
66
|
+
{
|
|
67
|
+
if ( ContainsType< R >() ) return _registers.FirstOrDefault( x => x is R );
|
|
68
|
+
|
|
69
|
+
throw new Exception( $"REGISTRATOR DOESN'T CONTAINS {typeof(R)} ERROR" );
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
public T Get( Type registr )
|
|
73
|
+
{
|
|
74
|
+
if ( ContainsType( registr ) ) return _registers.FirstOrDefault( x => x.GetType() == registr );
|
|
75
|
+
|
|
76
|
+
throw new Exception( $"REGISTRATOR DOESN'T CONTAINS {registr} ERROR" );
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
public bool ContainsType< R >() where R : T => _registers.OfType< R >().Any();
|
|
80
|
+
|
|
81
|
+
public bool ContainsType< R >( R registr ) where R : T
|
|
82
|
+
{
|
|
83
|
+
return ContainsType( registr.GetType() );
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
public bool ContainsType( Type registr )
|
|
87
|
+
{
|
|
88
|
+
return _registers.Any( ( x ) => x.GetType() == registr );
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
public bool ContainsType< R >( out R registr ) where R : T
|
|
92
|
+
{
|
|
93
|
+
registr = _registers.OfType< R >().FirstOrDefault();
|
|
94
|
+
return registr != null;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
package/Runtime.meta
ADDED
package/package.json
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name" : "com.soosvet_games.common_tools",
|
|
3
|
+
"displayName" : "Soosvet Games Common Tools",
|
|
4
|
+
"version" : "1.0.0",
|
|
5
|
+
"author" : "Soosvet Games",
|
|
6
|
+
"description" : "Common tools for Unity.",
|
|
7
|
+
"repository": {
|
|
8
|
+
"type": "git",
|
|
9
|
+
"url": "https://github.com/Soosvet-games/com.soosvet_games.common_tools"
|
|
10
|
+
}
|
|
11
|
+
}
|