Skip to content

Commit cb34232

Browse files
committed
app - workaround unity build issue (it doesn't include sg in build now), temporary add emitted data to repo
1 parent ba84a02 commit cb34232

12 files changed

+551
-11
lines changed

src/App/Common/Data/Common.Data.asmdef

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
"Shared.Tp",
66
"Shared.Tp.Data.Web",
77
"Shared.Tp.Data.Mem",
8-
"MemoryPack.Generator_Unity"
8+
"MemoryPack.Generator_Unity-DISABLED-AS-EMIT-UNTIL-UNITY-BUILD-BUG"
99
],
1010
"includePlatforms": [],
1111
"excludePlatforms": [],
Lines changed: 36 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
11
<Project Sdk="Microsoft.NET.Sdk">
22

33
<PropertyGroup>
4+
<!--
5+
Using several target frameworks as it's requirement of MemoryPack usage with netstandard2.1 libraries
6+
https://github.com/Cysharp/MemoryPack?tab=readme-ov-file#target-framework-dependency
7+
-->
48
<TargetFrameworks>netstandard2.1;net9.0</TargetFrameworks>
5-
<LangVersion>11</LangVersion>
69
<Nullable>enable</Nullable>
710
</PropertyGroup>
811

@@ -12,17 +15,36 @@
1215
</ItemGroup>
1316

1417
<!--
15-
TODO: MemoryPack source generation to repo (SG MemoryPack.Generator isn't included in Unity):
18+
MemoryPack source generation to repo (SG MemoryPack.Generator isn't included in Unity):
19+
https://andrewlock.net/creating-a-source-generator-part-6-saving-source-generator-output-in-source-control/#splitting-by-target-framework
1620
* Simplify debugging and generated code introspection while stabilize
21+
* Workaround for the wrong Unity 6 behaviour: it doesn't include SG in build (only in playmode)
22+
TODO: get rid when Unity player build will be fixed
1723
-->
18-
<!--<PropertyGroup Condition="'$(TargetFramework)' == 'netstandard2.1'">-->
19-
<!-- <EmitCompilerGeneratedFiles>true</EmitCompilerGeneratedFiles>-->
20-
<!-- <CompilerGeneratedFilesOutputPath>Generated</CompilerGeneratedFilesOutputPath>-->
21-
<!--</PropertyGroup>-->
22-
<!--<ItemGroup Condition="'$(TargetFramework)' == 'netstandard2.1'">-->
23-
<!-- <Compile Remove="$(CompilerGeneratedFilesOutputPath)\**\*.cs"/>-->
24-
<!-- <AdditionalFiles Include="$(CompilerGeneratedFilesOutputPath)\**\*.cs"/>-->
25-
<!--</ItemGroup>-->
24+
<PropertyGroup>
25+
<GeneratedFolder>Generated</GeneratedFolder>
26+
</PropertyGroup>
27+
<PropertyGroup Condition="'$(TargetFramework)' == 'netstandard2.1'">
28+
<EmitCompilerGeneratedFiles>true</EmitCompilerGeneratedFiles>
29+
<CompilerGeneratedFilesOutputPath>$(GeneratedFolder)\$(TargetFramework)</CompilerGeneratedFilesOutputPath>
30+
</PropertyGroup>
31+
<ItemGroup>
32+
<Compile Remove="$(GeneratedFolder)/**/*.cs" />
33+
<!--<Compile Remove="$(CompilerGeneratedFilesOutputPath)\**\*.cs"/>-->
34+
<!--<AdditionalFiles Include="$(CompilerGeneratedFilesOutputPath)\**\*.cs"/>-->
35+
</ItemGroup>
36+
<!--
37+
Using different language version because it's used in generator and emmiting code need to be compiled in unity.
38+
Unfortunatelly cannot enable C#9 because for net9.0 generated code isn't compiled and
39+
cannot disable net9.0 as MemoryPack.Core uses its features (https://github.com/Cysharp/MemoryPack?tab=readme-ov-file#target-framework-dependency).
40+
TODO: get rid in case of MemoryPack.Core/MemoryPack.Generator customization (that will use same SG in net9) or disabling emit
41+
-->
42+
<PropertyGroup Condition="'$(TargetFramework)' == 'netstandard2.1'">
43+
<LangVersion>9</LangVersion>
44+
</PropertyGroup>
45+
<PropertyGroup Condition="'$(TargetFramework)' == 'net9.0'">
46+
<LangVersion>11.0</LangVersion>
47+
</PropertyGroup>
2648

2749
<ItemGroup>
2850
<!--<PackageReference Include="MemoryPack.Core" Version="1.21.4"/>-->
@@ -34,4 +56,8 @@
3456
/>
3557
</ItemGroup>
3658

59+
<ItemGroup>
60+
<Folder Include="Generated\" />
61+
</ItemGroup>
62+
3763
</Project>

src/App/Common/Data/Generated.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.

src/App/Common/Data/Generated/netstandard2.1.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.

src/App/Common/Data/Generated/netstandard2.1/MemoryPack.Generator.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.

src/App/Common/Data/Generated/netstandard2.1/MemoryPack.Generator/MemoryPack.Generator.MemoryPackGenerator.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.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+

2+
// <auto-generated/>
3+
#nullable enable
4+
#pragma warning disable CS0108 // hides inherited member
5+
#pragma warning disable CS0162 // Unreachable code
6+
#pragma warning disable CS0164 // This label has not been referenced
7+
#pragma warning disable CS0219 // Variable assigned but never used
8+
#pragma warning disable CS0618 // Type or member is obsolete
9+
#pragma warning disable CS8600 // Converting null literal or possible null value to non-nullable type.
10+
#pragma warning disable CS8601 // Possible null reference assignment
11+
#pragma warning disable CS8602
12+
#pragma warning disable CS8604 // Possible null reference argument for parameter
13+
#pragma warning disable CS8619
14+
#pragma warning disable CS8620
15+
#pragma warning disable CS8631 // The type cannot be used as type parameter in the generic type or method
16+
#pragma warning disable CS8765 // Nullability of type of parameter
17+
#pragma warning disable CS9074 // The 'scoped' modifier of parameter doesn't match overridden or implemented member
18+
#pragma warning disable CA1050 // Declare types in namespaces.
19+
20+
using System;
21+
using MemoryPack;
22+
23+
namespace Common.Data {
24+
25+
/// <remarks>
26+
/// MemoryPack GenerateType: unmanaged<br/>
27+
/// <code>
28+
/// <b>int</b> Frame<br/>
29+
/// <b>int</b> Ms<br/>
30+
/// <b>float</b> X<br/>
31+
/// <b>float</b> Y<br/>
32+
/// <b>uint</b> Color<br/>
33+
/// </code>
34+
/// </remarks>
35+
partial struct ClientState : IMemoryPackable<ClientState>
36+
{
37+
38+
static partial void StaticConstructor();
39+
40+
static ClientState()
41+
{
42+
RegisterFormatter();
43+
StaticConstructor();
44+
}
45+
46+
[global::MemoryPack.Internal.Preserve]
47+
public static void RegisterFormatter()
48+
{
49+
if (!global::MemoryPack.MemoryPackFormatterProvider.IsRegistered<ClientState>())
50+
{
51+
global::MemoryPack.MemoryPackFormatterProvider.Register(new ClientStateFormatter());
52+
}
53+
if (!global::MemoryPack.MemoryPackFormatterProvider.IsRegistered<ClientState[]>())
54+
{
55+
global::MemoryPack.MemoryPackFormatterProvider.Register(new global::MemoryPack.Formatters.ArrayFormatter<ClientState>());
56+
}
57+
58+
}
59+
60+
[global::MemoryPack.Internal.Preserve]
61+
public static void Serialize<TBufferWriter>(ref MemoryPackWriter<TBufferWriter> writer, ref ClientState value) where TBufferWriter : class, System.Buffers.IBufferWriter<byte>
62+
{
63+
64+
writer.WriteUnmanaged(value);
65+
END:
66+
67+
return;
68+
}
69+
70+
[global::MemoryPack.Internal.Preserve]
71+
public static void Deserialize(ref MemoryPackReader reader, ref ClientState value)
72+
{
73+
74+
reader.ReadUnmanaged(out value);
75+
END:
76+
77+
return;
78+
}
79+
}
80+
partial struct ClientState
81+
{
82+
[global::MemoryPack.Internal.Preserve]
83+
sealed class ClientStateFormatter : MemoryPackFormatter<ClientState>
84+
{
85+
[global::MemoryPack.Internal.Preserve]
86+
public override void Serialize<TBufferWriter>(ref MemoryPackWriter<TBufferWriter> writer, ref ClientState value)
87+
{
88+
ClientState.Serialize(ref writer, ref value);
89+
}
90+
91+
[global::MemoryPack.Internal.Preserve]
92+
public override void Deserialize(ref MemoryPackReader reader, ref ClientState value)
93+
{
94+
ClientState.Deserialize(ref reader, ref value);
95+
}
96+
}
97+
}
98+
}

src/App/Common/Data/Generated/netstandard2.1/MemoryPack.Generator/MemoryPack.Generator.MemoryPackGenerator/Common.Data.ClientState.MemoryPackFormatter.g.cs.meta

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,183 @@
1+

2+
// <auto-generated/>
3+
#nullable enable
4+
#pragma warning disable CS0108 // hides inherited member
5+
#pragma warning disable CS0162 // Unreachable code
6+
#pragma warning disable CS0164 // This label has not been referenced
7+
#pragma warning disable CS0219 // Variable assigned but never used
8+
#pragma warning disable CS0618 // Type or member is obsolete
9+
#pragma warning disable CS8600 // Converting null literal or possible null value to non-nullable type.
10+
#pragma warning disable CS8601 // Possible null reference assignment
11+
#pragma warning disable CS8602
12+
#pragma warning disable CS8604 // Possible null reference argument for parameter
13+
#pragma warning disable CS8619
14+
#pragma warning disable CS8620
15+
#pragma warning disable CS8631 // The type cannot be used as type parameter in the generic type or method
16+
#pragma warning disable CS8765 // Nullability of type of parameter
17+
#pragma warning disable CS9074 // The 'scoped' modifier of parameter doesn't match overridden or implemented member
18+
#pragma warning disable CA1050 // Declare types in namespaces.
19+
20+
using System;
21+
using MemoryPack;
22+
23+
namespace Common.Data {
24+
25+
/// <remarks>
26+
/// MemoryPack GenerateType: Object<br/>
27+
/// <code>
28+
/// <b>string</b> Id<br/>
29+
/// <b>Common.Data.ClientState</b> ClientState<br/>
30+
/// </code>
31+
/// </remarks>
32+
partial struct PeerState : IMemoryPackable<PeerState>
33+
{
34+
35+
static partial void StaticConstructor();
36+
37+
static PeerState()
38+
{
39+
RegisterFormatter();
40+
StaticConstructor();
41+
}
42+
43+
[global::MemoryPack.Internal.Preserve]
44+
public static void RegisterFormatter()
45+
{
46+
if (!global::MemoryPack.MemoryPackFormatterProvider.IsRegistered<PeerState>())
47+
{
48+
global::MemoryPack.MemoryPackFormatterProvider.Register(new PeerStateFormatter());
49+
}
50+
if (!global::MemoryPack.MemoryPackFormatterProvider.IsRegistered<PeerState[]>())
51+
{
52+
global::MemoryPack.MemoryPackFormatterProvider.Register(new global::MemoryPack.Formatters.ArrayFormatter<PeerState>());
53+
}
54+
55+
}
56+
57+
[global::MemoryPack.Internal.Preserve]
58+
public static void Serialize<TBufferWriter>(ref MemoryPackWriter<TBufferWriter> writer, ref PeerState value) where TBufferWriter : class, System.Buffers.IBufferWriter<byte>
59+
{
60+
61+
62+
63+
writer.WriteObjectHeader(2);
64+
writer.WriteString(value.@Id);
65+
writer.WriteUnmanaged(value.@ClientState);
66+
67+
END:
68+
69+
return;
70+
}
71+
72+
[global::MemoryPack.Internal.Preserve]
73+
public static void Deserialize(ref MemoryPackReader reader, ref PeerState value)
74+
{
75+
76+
if (!reader.TryReadObjectHeader(out var count))
77+
{
78+
value = default!;
79+
goto END;
80+
}
81+
82+
83+
84+
string __Id;
85+
global::Common.Data.ClientState __ClientState;
86+
87+
88+
if (count == 2)
89+
{
90+
91+
{
92+
__Id = reader.ReadString();
93+
reader.ReadUnmanaged(out __ClientState);
94+
95+
96+
goto NEW;
97+
}
98+
#if false
99+
{
100+
__Id = value.@Id;
101+
__ClientState = value.@ClientState;
102+
103+
__Id = reader.ReadString();
104+
reader.ReadUnmanaged(out __ClientState);
105+
106+
goto SET;
107+
}
108+
#endif
109+
}
110+
else if (count > 2)
111+
{
112+
MemoryPackSerializationException.ThrowInvalidPropertyCount(typeof(PeerState), 2, count);
113+
goto READ_END;
114+
}
115+
else
116+
{
117+
118+
{
119+
__Id = default!;
120+
__ClientState = default!;
121+
}
122+
#if false
123+
{
124+
__Id = value.@Id;
125+
__ClientState = value.@ClientState;
126+
}
127+
#endif
128+
129+
if (count == 0) goto SKIP_READ;
130+
__Id = reader.ReadString(); if (count == 1) goto SKIP_READ;
131+
reader.ReadUnmanaged(out __ClientState); if (count == 2) goto SKIP_READ;
132+
133+
SKIP_READ:
134+
135+
{
136+
goto NEW;
137+
}
138+
#if false
139+
{
140+
goto SET;
141+
}
142+
#endif
143+
}
144+
145+
SET:
146+
147+
value.@Id = __Id;
148+
value.@ClientState = __ClientState;
149+
goto READ_END;
150+
151+
NEW:
152+
value = new PeerState()
153+
{
154+
@Id = __Id,
155+
@ClientState = __ClientState
156+
};
157+
158+
READ_END:
159+
160+
END:
161+
162+
return;
163+
}
164+
}
165+
partial struct PeerState
166+
{
167+
[global::MemoryPack.Internal.Preserve]
168+
sealed class PeerStateFormatter : MemoryPackFormatter<PeerState>
169+
{
170+
[global::MemoryPack.Internal.Preserve]
171+
public override void Serialize<TBufferWriter>(ref MemoryPackWriter<TBufferWriter> writer, ref PeerState value)
172+
{
173+
PeerState.Serialize(ref writer, ref value);
174+
}
175+
176+
[global::MemoryPack.Internal.Preserve]
177+
public override void Deserialize(ref MemoryPackReader reader, ref PeerState value)
178+
{
179+
PeerState.Deserialize(ref reader, ref value);
180+
}
181+
}
182+
}
183+
}

0 commit comments

Comments
 (0)