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.
Files changed (36) hide show
  1. package/.github/workflows/release-package.yml +22 -0
  2. package/Editor/HierarchyActivationTool.cs +37 -0
  3. package/Editor/HierarchyActivationTool.cs.meta +11 -0
  4. package/Editor/SoosvetGames.CommonTools.Editor.asmdef +16 -0
  5. package/Editor/SoosvetGames.CommonTools.Editor.asmdef.meta +7 -0
  6. package/Editor.meta +8 -0
  7. package/README.md +4 -0
  8. package/README.md.meta +7 -0
  9. package/Runtime/Extensions/AssetDatabaseExtensions.cs +31 -0
  10. package/Runtime/Extensions/AssetDatabaseExtensions.cs.meta +11 -0
  11. package/Runtime/Extensions/CanvasGroupExtensions.cs +14 -0
  12. package/Runtime/Extensions/CanvasGroupExtensions.cs.meta +3 -0
  13. package/Runtime/Extensions/CollectionExtensions.cs +92 -0
  14. package/Runtime/Extensions/CollectionExtensions.cs.meta +11 -0
  15. package/Runtime/Extensions/ImageExtensions.cs +14 -0
  16. package/Runtime/Extensions/ImageExtensions.cs.meta +11 -0
  17. package/Runtime/Extensions/LinqExtensions.cs +29 -0
  18. package/Runtime/Extensions/LinqExtensions.cs.meta +11 -0
  19. package/Runtime/Extensions/ListExtensions.cs +20 -0
  20. package/Runtime/Extensions/ListExtensions.cs.meta +11 -0
  21. package/Runtime/Extensions/RectExtensions.cs +16 -0
  22. package/Runtime/Extensions/RectExtensions.cs.meta +11 -0
  23. package/Runtime/Extensions/ReflectionExtensions.cs +23 -0
  24. package/Runtime/Extensions/ReflectionExtensions.cs.meta +11 -0
  25. package/Runtime/Extensions/StringExtensions.cs +37 -0
  26. package/Runtime/Extensions/StringExtensions.cs.meta +11 -0
  27. package/Runtime/Extensions/VectorExtensions.cs +12 -0
  28. package/Runtime/Extensions/VectorExtensions.cs.meta +11 -0
  29. package/Runtime/Extensions.meta +3 -0
  30. package/Runtime/Registry.cs +97 -0
  31. package/Runtime/Registry.cs.meta +3 -0
  32. package/Runtime/SoosvetGames.CommonTools.asmdef +3 -0
  33. package/Runtime/SoosvetGames.CommonTools.asmdef.meta +7 -0
  34. package/Runtime.meta +8 -0
  35. package/package.json +11 -0
  36. 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,11 @@
1
+ fileFormatVersion: 2
2
+ guid: f841e3d9d85f8044fa260bf6b79a37fe
3
+ MonoImporter:
4
+ externalObjects: {}
5
+ serializedVersion: 2
6
+ defaultReferences: []
7
+ executionOrder: 0
8
+ icon: {instanceID: 0}
9
+ userData:
10
+ assetBundleName:
11
+ assetBundleVariant:
@@ -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
+ }
@@ -0,0 +1,7 @@
1
+ fileFormatVersion: 2
2
+ guid: c17a1ce4f00bf464e8572ddd1f141fe0
3
+ AssemblyDefinitionImporter:
4
+ externalObjects: {}
5
+ userData:
6
+ assetBundleName:
7
+ assetBundleVariant:
package/Editor.meta ADDED
@@ -0,0 +1,8 @@
1
+ fileFormatVersion: 2
2
+ guid: 57ea8a28850546040b2bc350bf8e18e6
3
+ folderAsset: yes
4
+ DefaultImporter:
5
+ externalObjects: {}
6
+ userData:
7
+ assetBundleName:
8
+ assetBundleVariant:
package/README.md ADDED
@@ -0,0 +1,4 @@
1
+ # SoosvetGames-CommonTools
2
+ Common tools for Unity.
3
+ ## How to use
4
+ Install from npm by "com.soosvet_games.common_tools".<br>
package/README.md.meta ADDED
@@ -0,0 +1,7 @@
1
+ fileFormatVersion: 2
2
+ guid: d2b442a7730a12a4fae2a6bbfc2f28d9
3
+ TextScriptImporter:
4
+ externalObjects: {}
5
+ userData:
6
+ assetBundleName:
7
+ assetBundleVariant:
@@ -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,11 @@
1
+ fileFormatVersion: 2
2
+ guid: a235c3cca85f17441ab13f992f59aaac
3
+ MonoImporter:
4
+ externalObjects: {}
5
+ serializedVersion: 2
6
+ defaultReferences: []
7
+ executionOrder: 0
8
+ icon: {instanceID: 0}
9
+ userData:
10
+ assetBundleName:
11
+ assetBundleVariant:
@@ -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,3 @@
1
+ fileFormatVersion: 2
2
+ guid: 777bae3048ba40fca35a452e436a0693
3
+ timeCreated: 1785415229
@@ -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,11 @@
1
+ fileFormatVersion: 2
2
+ guid: b20fdb941529e894badfaf53ff904a60
3
+ MonoImporter:
4
+ externalObjects: {}
5
+ serializedVersion: 2
6
+ defaultReferences: []
7
+ executionOrder: 0
8
+ icon: {instanceID: 0}
9
+ userData:
10
+ assetBundleName:
11
+ assetBundleVariant:
@@ -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,11 @@
1
+ fileFormatVersion: 2
2
+ guid: 86142a458bbc55d4d9a2ad491b337d68
3
+ MonoImporter:
4
+ externalObjects: {}
5
+ serializedVersion: 2
6
+ defaultReferences: []
7
+ executionOrder: 0
8
+ icon: {instanceID: 0}
9
+ userData:
10
+ assetBundleName:
11
+ assetBundleVariant:
@@ -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,11 @@
1
+ fileFormatVersion: 2
2
+ guid: 7011ab07f2b22554080621ab3a9394b5
3
+ MonoImporter:
4
+ externalObjects: {}
5
+ serializedVersion: 2
6
+ defaultReferences: []
7
+ executionOrder: 0
8
+ icon: {instanceID: 0}
9
+ userData:
10
+ assetBundleName:
11
+ assetBundleVariant:
@@ -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,11 @@
1
+ fileFormatVersion: 2
2
+ guid: eb635ea32ba50534a812293482444d02
3
+ MonoImporter:
4
+ externalObjects: {}
5
+ serializedVersion: 2
6
+ defaultReferences: []
7
+ executionOrder: 0
8
+ icon: {instanceID: 0}
9
+ userData:
10
+ assetBundleName:
11
+ assetBundleVariant:
@@ -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,11 @@
1
+ fileFormatVersion: 2
2
+ guid: b77c50c5cc01f904dbfba8e34fccc880
3
+ MonoImporter:
4
+ externalObjects: {}
5
+ serializedVersion: 2
6
+ defaultReferences: []
7
+ executionOrder: 0
8
+ icon: {instanceID: 0}
9
+ userData:
10
+ assetBundleName:
11
+ assetBundleVariant:
@@ -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,11 @@
1
+ fileFormatVersion: 2
2
+ guid: 4194dd5922905c64bab9783668e350aa
3
+ MonoImporter:
4
+ externalObjects: {}
5
+ serializedVersion: 2
6
+ defaultReferences: []
7
+ executionOrder: 0
8
+ icon: {instanceID: 0}
9
+ userData:
10
+ assetBundleName:
11
+ assetBundleVariant:
@@ -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,11 @@
1
+ fileFormatVersion: 2
2
+ guid: d2a28c8e760880a4e94cd30da2c1a23b
3
+ MonoImporter:
4
+ externalObjects: {}
5
+ serializedVersion: 2
6
+ defaultReferences: []
7
+ executionOrder: 0
8
+ icon: {instanceID: 0}
9
+ userData:
10
+ assetBundleName:
11
+ assetBundleVariant:
@@ -0,0 +1,12 @@
1
+ using UnityEngine;
2
+
3
+ namespace SoosvetGames.CommonTools.Extensions
4
+ {
5
+ public static class VectorExtensions
6
+ {
7
+ public static float RandomBtw( this Vector2 vector )
8
+ {
9
+ return Random.Range( vector.x, vector.y );
10
+ }
11
+ }
12
+ }
@@ -0,0 +1,11 @@
1
+ fileFormatVersion: 2
2
+ guid: 8c4aea082036a4248a10901f715094f0
3
+ MonoImporter:
4
+ externalObjects: {}
5
+ serializedVersion: 2
6
+ defaultReferences: []
7
+ executionOrder: 0
8
+ icon: {instanceID: 0}
9
+ userData:
10
+ assetBundleName:
11
+ assetBundleVariant:
@@ -0,0 +1,3 @@
1
+ fileFormatVersion: 2
2
+ guid: 0a3500edc8e44be191e79da7e564562a
3
+ timeCreated: 1785415182
@@ -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
+ }
@@ -0,0 +1,3 @@
1
+ fileFormatVersion: 2
2
+ guid: 01d5a2af34604c92bc915d5ffac9b208
3
+ timeCreated: 1785415636
@@ -0,0 +1,3 @@
1
+ {
2
+ "name": "SoosvetGames.CommonTools"
3
+ }
@@ -0,0 +1,7 @@
1
+ fileFormatVersion: 2
2
+ guid: fc66ead725e6274499ca24ec3aefc298
3
+ AssemblyDefinitionImporter:
4
+ externalObjects: {}
5
+ userData:
6
+ assetBundleName:
7
+ assetBundleVariant:
package/Runtime.meta ADDED
@@ -0,0 +1,8 @@
1
+ fileFormatVersion: 2
2
+ guid: b81cce0a27963414c983ad2435753889
3
+ folderAsset: yes
4
+ DefaultImporter:
5
+ externalObjects: {}
6
+ userData:
7
+ assetBundleName:
8
+ assetBundleVariant:
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
+ }
@@ -0,0 +1,7 @@
1
+ fileFormatVersion: 2
2
+ guid: 33dba2f708a9c9f4986b0477d134445d
3
+ TextScriptImporter:
4
+ externalObjects: {}
5
+ userData:
6
+ assetBundleName:
7
+ assetBundleVariant: