Skip to content

Commit 525b182

Browse files
authored
able to generate code into AssemblyCSharp.dll which is useful for library design (#7)
1 parent a66ef14 commit 525b182

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

46 files changed

+796
-438
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,3 +68,5 @@ Assets/Plugins/Animancer/Examples.meta
6868
# OS
6969
.DS_Store
7070
.vsconfig
71+
Packages/generic-serialize-reference/Test
72+
Packages/generic-serialize-reference/Test.meta

Assets/Sample/GenericSerializeReference.Sample.asmdef

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,14 @@
33
"rootNamespace": "",
44
"references": [
55
"GUID:e68bcd447d2cc4be2b6d31311e6ca7e9",
6-
"GUID:7db2c3edd9cbf4a0c84e314cca3ddf42"
6+
"GUID:36fd0010d4685b4408721d3172136183"
77
],
88
"includePlatforms": [],
99
"excludePlatforms": [],
1010
"allowUnsafeCode": false,
1111
"overrideReferences": true,
1212
"precompiledReferences": [],
13-
"autoReferenced": false,
13+
"autoReferenced": true,
1414
"defineConstraints": [],
1515
"versionDefines": [],
1616
"noEngineReferences": false

Assets/_.meta renamed to Assets/Sample/Library.meta

Lines changed: 2 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
{
2+
"name": "GenericSerializeReference.Sample.Library",
3+
"rootNamespace": "",
4+
"references": [
5+
"GUID:e68bcd447d2cc4be2b6d31311e6ca7e9",
6+
"GUID:bb7127c6ea4789d41b77cdef13d93652"
7+
],
8+
"includePlatforms": [],
9+
"excludePlatforms": [],
10+
"allowUnsafeCode": false,
11+
"overrideReferences": false,
12+
"precompiledReferences": [],
13+
"autoReferenced": true,
14+
"defineConstraints": [],
15+
"versionDefines": [],
16+
"noEngineReferences": false
17+
}

Assets/Sample/Library/GenericSerializeReference.Sample.Library.asmdef.meta

Lines changed: 7 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Assets/Sample/Library/Implement.meta

Lines changed: 8 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
{
2+
"name": "GenericSerializeReference.Sample.Library.Implement",
3+
"rootNamespace": "",
4+
"references": [
5+
"GUID:bb7127c6ea4789d41b77cdef13d93652"
6+
],
7+
"includePlatforms": [],
8+
"excludePlatforms": [],
9+
"allowUnsafeCode": false,
10+
"overrideReferences": false,
11+
"precompiledReferences": [],
12+
"autoReferenced": true,
13+
"defineConstraints": [],
14+
"versionDefines": [],
15+
"noEngineReferences": false
16+
}

Assets/Sample/Library/Implement/GenericSerializeReference.Sample.Library.Implement.asmdef.meta

Lines changed: 7 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
public class LibIntObject : ILibInterface<int> {}
2+
public class LibGenericObject<T> : ILibInterface<T> {}
3+
public class LibGenericObject_2<T> : ILibInterface<T> {}
4+
public class LibFloatObject : ILibInterface<float> {}

Assets/Sample/Library/Implement/Implement.cs.meta

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Assets/Sample/Library/Interface.meta

Lines changed: 8 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
{
2+
"name": "GenericSerializeReference.Sample.Library.Interface",
3+
"rootNamespace": "",
4+
"references": [],
5+
"includePlatforms": [],
6+
"excludePlatforms": [],
7+
"allowUnsafeCode": false,
8+
"overrideReferences": false,
9+
"precompiledReferences": [],
10+
"autoReferenced": true,
11+
"defineConstraints": [],
12+
"versionDefines": [],
13+
"noEngineReferences": false
14+
}

Assets/Sample/Library/Interface/GenericSerializeReference.Sample.Library.Interface.asmdef.meta

Lines changed: 7 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
public interface ILibInterface<T> {}

Assets/Sample/Library/Interface/Interface.cs.meta

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Assets/Sample/Library/LibBehavior.cs

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
using System;
2+
using GenericSerializeReference;
3+
using UnityEngine;
4+
5+
[assembly: GenericSerializeReferenceLoggerAttribute(LogLevel.Debug)]
6+
public class LibBehavior : MonoBehaviour
7+
{
8+
[GenericSerializeReference(mode: GenerateMode.AssemblyCSharp)]
9+
public ILibInterface<int> Int { get; set; }
10+
11+
[GenericSerializeReference(mode: GenerateMode.AssemblyCSharp)]
12+
public ILibInterface<float> Float { get; set; }
13+
14+
private void Awake()
15+
{
16+
Debug.Log($"{nameof(LibBehavior)}.{nameof(Int)} is {Int.GetType()}");
17+
Debug.Log($"{nameof(LibBehavior)}.{nameof(Float)} is {Float.GetType()}");
18+
}
19+
}

Assets/Sample/Library/LibBehavior.cs.meta

Lines changed: 11 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Assets/Sample/MyMonoBehavior.cs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
using System;
12
using GenericSerializeReference;
23
using UnityEngine;
34

@@ -7,10 +8,15 @@ public class MyGenericObject<T> : IMyInterface<T> {}
78
public struct StructWillNotShow : IMyInterface<int> {}
89
public class MyMonoBehavior : MonoBehaviour
910
{
10-
[GenericSerializeReference]
11+
[GenericSerializeReference(mode: GenerateMode.Embed)]
1112
public IMyInterface<int> Value { get; set; }
1213
//
1314
// [GenericSerializeReference("_serialized")]
1415
// public IMyInterface<int> Foo { get; set; }
1516
// private int __Foo;
17+
18+
private void Awake()
19+
{
20+
Debug.Log($"{name}.{nameof(Value)} is {Value.GetType()}");
21+
}
1622
}

Assets/Sample/Test.unity

Lines changed: 26 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ RenderSettings:
3838
m_ReflectionIntensity: 1
3939
m_CustomReflection: {fileID: 0}
4040
m_Sun: {fileID: 0}
41-
m_IndirectSpecularColor: {r: 0.37311953, g: 0.38074014, b: 0.3587274, a: 1}
41+
m_IndirectSpecularColor: {r: 0.3731193, g: 0.38073996, b: 0.35872698, a: 1}
4242
m_UseRadianceAmbientProbe: 0
4343
--- !u!157 &3
4444
LightmapSettings:
@@ -134,6 +134,7 @@ GameObject:
134134
- component: {fileID: 366887100}
135135
- component: {fileID: 366887099}
136136
- component: {fileID: 366887101}
137+
- component: {fileID: 366887102}
137138
m_Layer: 0
138139
m_Name: GameObject
139140
m_TagString: Untagged
@@ -174,12 +175,11 @@ MonoBehaviour:
174175
data:
175176
V: 0
176177
00000001:
177-
type: {class: TestMonoBehavior/<FloatInt>__generic_serialize_reference/SubObject, ns: GenericSerializeReference.Sample, asm: GenericSerializeReference.Sample}
178+
type: {class: TestMonoBehavior/<FloatInt>__generic_serialize_reference/PartialObject, ns: GenericSerializeReference.Sample, asm: GenericSerializeReference.Sample}
178179
data:
179180
ValueT: 0
180181
ValueU: 0
181-
SubValueT: []
182-
SubValueU:
182+
ValueDouble: 0
183183
00000002:
184184
type: {class: TestMonoBehavior/<IntInt>__generic_serialize_reference/PartialObject, ns: GenericSerializeReference.Sample, asm: GenericSerializeReference.Sample}
185185
data:
@@ -191,10 +191,9 @@ MonoBehaviour:
191191
data:
192192
Value: 0
193193
00000004:
194-
type: {class: TestMonoBehavior/<Double>__generic_serialize_reference/SubObject, ns: GenericSerializeReference.Sample, asm: GenericSerializeReference.Sample}
194+
type: {class: TestMonoBehavior/<Double>__generic_serialize_reference/DoubleObject, ns: GenericSerializeReference.Sample, asm: GenericSerializeReference.Sample}
195195
data:
196196
Value: 0
197-
SubValue: []
198197
00000005:
199198
type: {class: TestMonoBehavior/<IntObject>__generic_serialize_reference/SubObject, ns: GenericSerializeReference.Sample, asm: GenericSerializeReference.Sample}
200199
data:
@@ -235,11 +234,29 @@ MonoBehaviour:
235234
m_EditorClassIdentifier:
236235
__Value:
237236
id: 0
238-
_serializedFoo:
237+
references:
238+
version: 1
239+
00000000:
240+
type: {class: MyMonoBehavior/<Value>__generic_serialize_reference/MyGenericObject, ns: , asm: GenericSerializeReference.Sample}
241+
--- !u!114 &366887102
242+
MonoBehaviour:
243+
m_ObjectHideFlags: 0
244+
m_CorrespondingSourceObject: {fileID: 0}
245+
m_PrefabInstance: {fileID: 0}
246+
m_PrefabAsset: {fileID: 0}
247+
m_GameObject: {fileID: 366887098}
248+
m_Enabled: 1
249+
m_EditorHideFlags: 0
250+
m_Script: {fileID: 11500000, guid: 66e141599402ff44f8de6aef9ccd07f2, type: 3}
251+
m_Name:
252+
m_EditorClassIdentifier:
253+
__Int:
254+
id: 0
255+
__Float:
239256
id: 1
240257
references:
241258
version: 1
242259
00000000:
243-
type: {class: MyMonoBehavior/<Value>__generic_serialize_reference/MyIntObject, ns: , asm: GenericSerializeReference.Sample}
260+
type: {class: ILibInterface`1<System_Int32>/LibGenericObject, ns: <GenericSerializeReference>, asm: Assembly-CSharp}
244261
00000001:
245-
type: {class: MyMonoBehavior/<Foo>__generic_serialize_reference/MyIntObject, ns: , asm: GenericSerializeReference.Sample}
262+
type: {class: ILibInterface`1<System_Single>/LibGenericObject_2, ns: <GenericSerializeReference>, asm: Assembly-CSharp}

Assets/Sample/TestMonoBehavior.cs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,25 +14,25 @@ public class Object : MultipleGeneric.IInterface<int, float>
1414
public int V;
1515
}
1616

17-
[GenericSerializeReference]
17+
[GenericSerializeReference(mode: GenerateMode.Embed)]
1818
public MultipleGeneric.IInterface<int, float> IntFloat { get; set; }
1919

20-
[GenericSerializeReference]
20+
[GenericSerializeReference(mode: GenerateMode.Embed)]
2121
public MultipleGeneric.IInterface<float, int> FloatInt { get; set; }
2222

23-
[GenericSerializeReference]
23+
[GenericSerializeReference(mode: GenerateMode.Embed)]
2424
public MultipleGeneric.IInterface<int, int> IntInt { get; set; }
2525

26-
[GenericSerializeReference]
26+
[GenericSerializeReference(mode: GenerateMode.Embed)]
2727
public SingleGeneric.IInterface<int> Int { get; set; }
2828

29-
[GenericSerializeReference]
29+
[GenericSerializeReference(mode: GenerateMode.Embed)]
3030
public SingleGeneric.IInterface<double> Double { get; set; }
3131

32-
[GenericSerializeReference]
32+
[GenericSerializeReference(mode: GenerateMode.Embed)]
3333
public SingleGeneric.Object<int> IntObject { get; set; }
3434

35-
[GenericSerializeReference]
35+
[GenericSerializeReference(mode: GenerateMode.Embed)]
3636
public MultipleGeneric.Object<int, int> IntIntObject { get; set; }
3737

3838
private void Awake()

Assets/_

Whitespace-only changes.

Assets/__.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
namespace GenericSerializeReference.Library.CodeGen
2+
{
3+
internal static class ___ {}
4+
}

Assets/__.cs.meta

Lines changed: 11 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)