Various improvements to the networking

This commit is contained in:
Wojciech Figat
2022-11-23 12:12:37 +01:00
parent 8e41711e82
commit 2644b4d75a
5 changed files with 21 additions and 15 deletions

View File

@@ -46,6 +46,7 @@ namespace Flax.Build.Bindings
public static event Action<BuildData, IGrouping<string, Module>, StringBuilder> GenerateCppBinaryModuleHeader;
public static event Action<BuildData, IGrouping<string, Module>, StringBuilder> GenerateCppBinaryModuleSource;
public static event Action<BuildData, ModuleInfo, StringBuilder> GenerateCppModuleSource;
public static event Action<BuildData, ApiTypeInfo, StringBuilder> GenerateCppTypeInternalsStatics;
public static event Action<BuildData, ApiTypeInfo, StringBuilder> GenerateCppTypeInternals;
public static event Action<BuildData, ApiTypeInfo, StringBuilder> GenerateCppTypeInitRuntime;
public static event Action<BuildData, VirtualClassInfo, FunctionInfo, int, int, StringBuilder> GenerateCppScriptWrapperFunction;
@@ -1553,6 +1554,7 @@ namespace Flax.Build.Bindings
if (classInfo.IsAutoSerialization)
GenerateCppAutoSerialization(buildData, contents, moduleInfo, classInfo, classTypeNameNative);
GenerateCppTypeInternalsStatics?.Invoke(buildData, classInfo, contents);
contents.AppendLine();
contents.AppendFormat("class {0}Internal", classTypeNameInternal).AppendLine();
@@ -1868,6 +1870,7 @@ namespace Flax.Build.Bindings
if (structureInfo.IsAutoSerialization)
GenerateCppAutoSerialization(buildData, contents, moduleInfo, structureInfo, structureTypeNameNative);
GenerateCppTypeInternalsStatics?.Invoke(buildData, structureInfo, contents);
contents.AppendLine();
contents.AppendFormat("class {0}Internal", structureTypeNameInternal).AppendLine();
@@ -2097,6 +2100,8 @@ namespace Flax.Build.Bindings
var interfaceTypeNameManaged = interfaceInfo.FullNameManaged;
var interfaceTypeNameInternal = interfaceInfo.FullNameNativeInternal;
GenerateCppTypeInternalsStatics?.Invoke(buildData, interfaceInfo, contents);
// Wrapper interface implement to invoke scripting if inherited in C# or VS
contents.AppendLine();
contents.AppendFormat("class {0}Wrapper : public ", interfaceTypeNameInternal).Append(interfaceTypeNameNative).AppendLine();

View File

@@ -90,20 +90,20 @@ namespace Flax.Build.Plugins
private void OnParseMemberTag(ref bool valid, BindingsGenerator.TagParameter tag, MemberInfo memberInfo)
{
if (tag.Tag == NetworkReplicated)
if (string.Equals(tag.Tag, NetworkReplicated, StringComparison.OrdinalIgnoreCase))
{
// Mark member as replicated
valid = true;
memberInfo.SetTag(NetworkReplicated, string.Empty);
}
else if (tag.Tag == NetworkRpc)
else if (string.Equals(tag.Tag, NetworkRpc, StringComparison.OrdinalIgnoreCase))
{
// Mark member as rpc
valid = true;
memberInfo.SetTag(NetworkRpc, tag.Value);
}
}
private void OnGenerateCppTypeInternals(Builder.BuildData buildData, ApiTypeInfo typeInfo, StringBuilder contents)
{
// Skip modules that don't use networking
@@ -466,6 +466,10 @@ namespace Flax.Build.Plugins
private void OnBuildDotNetAssembly(TaskGraph graph, Builder.BuildData buildData, NativeCpp.BuildOptions buildOptions, Task buildTask, IGrouping<string, Module> binaryModule)
{
// Skip FlaxEngine.dll
if (string.Equals(binaryModule.Key, "FlaxEngine", StringComparison.Ordinal))
return;
// Skip assemblies not using netowrking
if (!binaryModule.Any(module => module.Tags.ContainsKey(Network)))
return;