From 9322a2006a0e7219018f9ad922911fcca30b60dc Mon Sep 17 00:00:00 2001 From: Wojtek Figat Date: Mon, 17 Apr 2023 14:04:08 +0200 Subject: [PATCH] Post merge fixes for new dotnet7 --- .../Engine/Networking/NetworkReplicator.cpp | 2 +- Source/Engine/Networking/NetworkReplicator.h | 4 ++-- .../Bindings/BindingsGenerator.CSharp.cs | 19 ++++++++++--------- .../Bindings/BindingsGenerator.Cpp.cs | 2 +- 4 files changed, 14 insertions(+), 13 deletions(-) diff --git a/Source/Engine/Networking/NetworkReplicator.cpp b/Source/Engine/Networking/NetworkReplicator.cpp index 7ce2022a4..32e8d97d3 100644 --- a/Source/Engine/Networking/NetworkReplicator.cpp +++ b/Source/Engine/Networking/NetworkReplicator.cpp @@ -684,7 +684,7 @@ void NetworkReplicator::AddRPC(const ScriptingTypeHandle& typeHandle, const Stri NetworkRpcInfo::RPCsTable[rpcName] = rpcInfo; } -void NetworkReplicator::CSharpEndInvokeRPC(ScriptingObject* obj, const ScriptingTypeHandle& type, const StringAnsiView& name, NetworkStream* argsStream, MonoArray* targetIds) +void NetworkReplicator::CSharpEndInvokeRPC(ScriptingObject* obj, const ScriptingTypeHandle& type, const StringAnsiView& name, NetworkStream* argsStream, MArray* targetIds) { EndInvokeRPC(obj, type, GetCSharpCachedName(name), argsStream, MUtils::ToSpan(targetIds)); } diff --git a/Source/Engine/Networking/NetworkReplicator.h b/Source/Engine/Networking/NetworkReplicator.h index e0893cc64..b2d2e30eb 100644 --- a/Source/Engine/Networking/NetworkReplicator.h +++ b/Source/Engine/Networking/NetworkReplicator.h @@ -1,4 +1,4 @@ -// Copyright (c) 2012-2023 Wojciech Figat. All rights reserved. +// Copyright (c) 2012-2023 Wojciech Figat. All rights reserved. #pragma once @@ -183,7 +183,7 @@ private: #if !COMPILE_WITHOUT_CSHARP API_FUNCTION(NoProxy) static void AddSerializer(const ScriptingTypeHandle& typeHandle, const Function& serialize, const Function& deserialize); API_FUNCTION(NoProxy) static void AddRPC(const ScriptingTypeHandle& typeHandle, const StringAnsiView& name, const Function& execute, bool isServer, bool isClient, NetworkChannelType channel); - API_FUNCTION(NoProxy) static void CSharpEndInvokeRPC(ScriptingObject* obj, const ScriptingTypeHandle& type, const StringAnsiView& name, NetworkStream* argsStream, MonoArray* targetIds); + API_FUNCTION(NoProxy) static void CSharpEndInvokeRPC(ScriptingObject* obj, const ScriptingTypeHandle& type, const StringAnsiView& name, NetworkStream* argsStream, MArray* targetIds); static StringAnsiView GetCSharpCachedName(const StringAnsiView& name); #endif }; diff --git a/Source/Tools/Flax.Build/Bindings/BindingsGenerator.CSharp.cs b/Source/Tools/Flax.Build/Bindings/BindingsGenerator.CSharp.cs index cd90c65fe..22e88d222 100644 --- a/Source/Tools/Flax.Build/Bindings/BindingsGenerator.CSharp.cs +++ b/Source/Tools/Flax.Build/Bindings/BindingsGenerator.CSharp.cs @@ -1387,6 +1387,7 @@ namespace Flax.Build.Bindings { // Native struct begin + // TODO: skip using this utility structure if the auto-generated C# struct is already the same as XXXInternal here below GenerateCSharpAttributes(buildData, contents, indent, structureInfo, true); contents.Append(indent).AppendLine("[HideInEditor]"); contents.Append(indent).AppendLine("[StructLayout(LayoutKind.Sequential)]"); @@ -1433,7 +1434,7 @@ namespace Flax.Build.Bindings var apiType = FindApiTypeInfo(buildData, fieldInfo.Type, structureInfo); bool internalType = apiType is StructureInfo fieldStructureInfo && UseCustomMarshalling(buildData, fieldStructureInfo, structureInfo); - string internalTypeMarshaler = ""; + string internalTypeMarshaller = ""; if (fieldInfo.Type.IsArray && (fieldInfo.NoArray || structureInfo.IsPod)) { @@ -1460,7 +1461,7 @@ namespace Flax.Build.Bindings type = "IntPtr"; else if (fieldInfo.Type.IsPtr && !originalType.EndsWith("*")) type = "IntPtr"; - else if (fieldInfo.Type.Type == "Array") + else if (fieldInfo.Type.Type == "Array" || fieldInfo.Type.Type == "Span" || fieldInfo.Type.Type == "DataContainer" || fieldInfo.Type.Type == "BytesContainer") { type = "IntPtr"; apiType = FindApiTypeInfo(buildData, fieldInfo.Type.GenericArgs[0], structureInfo); @@ -1476,8 +1477,8 @@ namespace Flax.Build.Bindings type = "NativeVariant"; else if (internalType) { - internalTypeMarshaler = type + "Marshaller"; - type = $"{internalTypeMarshaler}.{type}Internal"; + internalTypeMarshaller = type + "Marshaller"; + type = $"{internalTypeMarshaller}.{type}Internal"; } //else if (type == "Guid") // type = "GuidNative"; @@ -1546,7 +1547,7 @@ namespace Flax.Build.Bindings freeContents.AppendLine($"if (unmanaged.{fieldInfo.Name} != IntPtr.Zero) {{ ManagedHandle.FromIntPtr(unmanaged.{fieldInfo.Name}).Free(); }}"); freeContents2.AppendLine($"if (unmanaged.{fieldInfo.Name} != IntPtr.Zero) {{ ManagedHandle.FromIntPtr(unmanaged.{fieldInfo.Name}).Free(); }}"); } - else if (fieldInfo.Type.Type == "Array") + else if (fieldInfo.Type.Type == "Array" || fieldInfo.Type.Type == "Span" || fieldInfo.Type.Type == "DataContainer" || fieldInfo.Type.Type == "BytesContainer") { string originalElementType = originalType.Substring(0, originalType.Length - 2); if (internalType) @@ -1597,10 +1598,10 @@ namespace Flax.Build.Bindings } else if (internalType) { - toManagedContent.Append($"{internalTypeMarshaler}.ToManaged(managed.{fieldInfo.Name})"); - toNativeContent.Append($"{internalTypeMarshaler}.ToNative(managed.{fieldInfo.Name})"); - freeContents.AppendLine($"{internalTypeMarshaler}.Free(unmanaged.{fieldInfo.Name});"); - freeContents2.AppendLine($"{internalTypeMarshaler}.Free(unmanaged.{fieldInfo.Name});"); + toManagedContent.Append($"{internalTypeMarshaller}.ToManaged(managed.{fieldInfo.Name})"); + toNativeContent.Append($"{internalTypeMarshaller}.ToNative(managed.{fieldInfo.Name})"); + freeContents.AppendLine($"{internalTypeMarshaller}.Free(unmanaged.{fieldInfo.Name});"); + freeContents2.AppendLine($"{internalTypeMarshaller}.Free(unmanaged.{fieldInfo.Name});"); } /*else if (originalType == "Guid") { diff --git a/Source/Tools/Flax.Build/Bindings/BindingsGenerator.Cpp.cs b/Source/Tools/Flax.Build/Bindings/BindingsGenerator.Cpp.cs index c9e91b3a8..019f06b46 100644 --- a/Source/Tools/Flax.Build/Bindings/BindingsGenerator.Cpp.cs +++ b/Source/Tools/Flax.Build/Bindings/BindingsGenerator.Cpp.cs @@ -514,7 +514,7 @@ namespace Flax.Build.Bindings if (typeInfo.Type == "Span" && typeInfo.GenericArgs != null) { type = "MonoArray*"; - return "MUtils::Span({0}, " + GenerateCppGetNativeClass(buildData, typeInfo.GenericArgs[0], caller, functionInfo) + ")"; + return "MUtils::Span({0}, " + GenerateCppGetMClass(buildData, typeInfo.GenericArgs[0], caller, functionInfo) + ")"; } // BytesContainer