Merge remote-tracking branch 'origin/master' into 1.8

This commit is contained in:
Wojtek Figat
2023-12-08 11:23:06 +01:00
155 changed files with 4997 additions and 2971 deletions

View File

@@ -108,6 +108,7 @@ namespace
};
ChunkedArray<Location, 256> ManagedSourceLocations;
ThreadLocal<uint32> ManagedEventsCount;
#endif
#endif
}
@@ -145,7 +146,9 @@ DEFINE_INTERNAL_CALL(void) ProfilerInternal_BeginEvent(MString* nameObj)
srcLoc->color = 0;
}
//static constexpr tracy::SourceLocationData tracySrcLoc{ nullptr, __FUNCTION__, __FILE__, (uint32_t)__LINE__, 0 };
tracy::ScopedZone::Begin(srcLoc);
const bool tracyActive = tracy::ScopedZone::Begin(srcLoc);
if (tracyActive)
ManagedEventsCount.Get()++;
#endif
#endif
#endif
@@ -155,7 +158,12 @@ DEFINE_INTERNAL_CALL(void) ProfilerInternal_EndEvent()
{
#if COMPILE_WITH_PROFILER
#if TRACY_ENABLE
tracy::ScopedZone::End();
uint32& tracyActive = ManagedEventsCount.Get();
if (tracyActive > 0)
{
tracyActive--;
tracy::ScopedZone::End();
}
#endif
ProfilerCPU::EndEvent();
#endif

View File

@@ -18,7 +18,7 @@ private:
#elif USE_NETCORE
void* _handle;
StringAnsi _name;
StringAnsi _namespace_;
StringAnsi _namespace;
uint32 _types = 0;
mutable uint32 _size = 0;
#endif

View File

@@ -1208,6 +1208,21 @@ void* MUtils::VariantToManagedArgPtr(Variant& value, MType* type, bool& failed)
object = nullptr;
return object;
}
case MTypes::Ptr:
switch (value.Type.Type)
{
case VariantType::Pointer:
return &value.AsPointer;
case VariantType::Object:
return &value.AsObject;
case VariantType::Asset:
return &value.AsAsset;
case VariantType::Structure:
case VariantType::Blob:
return &value.AsBlob.Data;
default:
return nullptr;
}
default:
break;
}

View File

@@ -118,7 +118,7 @@ struct MConverter<String>
{
MString** dataPtr = MCore::Array::GetAddress<MString*>(data);
for (int32 i = 0; i < result.Length(); i++)
MUtils::ToString(dataPtr[i], result[i]);
MUtils::ToString(dataPtr[i], result.Get()[i]);
}
};
@@ -151,7 +151,7 @@ struct MConverter<StringAnsi>
{
MString** dataPtr = MCore::Array::GetAddress<MString*>(data);
for (int32 i = 0; i < result.Length(); i++)
MUtils::ToString(dataPtr[i], result[i]);
MUtils::ToString(dataPtr[i], result.Get()[i]);
}
};
@@ -184,7 +184,7 @@ struct MConverter<StringView>
{
MString** dataPtr = MCore::Array::GetAddress<MString*>(data);
for (int32 i = 0; i < result.Length(); i++)
MUtils::ToString(dataPtr[i], result[i]);
MUtils::ToString(dataPtr[i], result.Get()[i]);
}
};
@@ -217,7 +217,7 @@ struct MConverter<Variant>
{
MObject** dataPtr = MCore::Array::GetAddress<MObject*>(data);
for (int32 i = 0; i < result.Length(); i++)
result[i] = MUtils::UnboxVariant(dataPtr[i]);
result.Get()[i] = MUtils::UnboxVariant(dataPtr[i]);
}
};
@@ -250,7 +250,7 @@ struct MConverter<T*, typename TEnableIf<TIsBaseOf<class ScriptingObject, T>::Va
{
MObject** dataPtr = MCore::Array::GetAddress<MObject*>(data);
for (int32 i = 0; i < result.Length(); i++)
result[i] = (T*)ScriptingObject::ToNative(dataPtr[i]);
result.Get()[i] = (T*)ScriptingObject::ToNative(dataPtr[i]);
}
};
@@ -307,7 +307,7 @@ struct MConverter<ScriptingObjectReference<T>>
{
MObject** dataPtr = MCore::Array::GetAddress<MObject*>(data);
for (int32 i = 0; i < result.Length(); i++)
result[i] = (T*)ScriptingObject::ToNative(dataPtr[i]);
result.Get()[i] = (T*)ScriptingObject::ToNative(dataPtr[i]);
}
};
@@ -343,7 +343,7 @@ struct MConverter<AssetReference<T>>
{
MObject** dataPtr = MCore::Array::GetAddress<MObject*>(data);
for (int32 i = 0; i < result.Length(); i++)
result[i] = (T*)ScriptingObject::ToNative(dataPtr[i]);
result.Get()[i] = (T*)ScriptingObject::ToNative(dataPtr[i]);
}
};

View File

@@ -840,7 +840,7 @@ bool MAssembly::UnloadImage(bool isReloading)
MClass::MClass(const MAssembly* parentAssembly, void* handle, const char* name, const char* fullname, const char* namespace_, MTypeAttributes attributes)
: _handle(handle)
, _name(name)
, _namespace_(namespace_)
, _namespace(namespace_)
, _assembly(parentAssembly)
, _fullname(fullname)
, _hasCachedProperties(false)
@@ -919,7 +919,7 @@ StringAnsiView MClass::GetName() const
StringAnsiView MClass::GetNamespace() const
{
return _namespace_;
return _namespace;
}
MType* MClass::GetType() const
@@ -1661,7 +1661,7 @@ bool InitHostfxr()
// Get path to hostfxr library
get_hostfxr_parameters get_hostfxr_params;
get_hostfxr_params.size = sizeof(hostfxr_initialize_parameters);
get_hostfxr_params.size = sizeof(get_hostfxr_parameters);
get_hostfxr_params.assembly_path = libraryPath.Get();
#if PLATFORM_MAC
::String macOSDotnetRoot = TEXT("/usr/local/share/dotnet");

View File

@@ -20,10 +20,7 @@ public class Scripting : EngineModule
void AddFrameworkDefines(string template, int major, int latestMinor)
{
for (int minor = latestMinor; minor >= 0; minor--)
{
options.ScriptingAPI.Defines.Add(string.Format(template, major, minor));
options.ScriptingAPI.Defines.Add(string.Format($"{template}_OR_GREATER", major, minor));
}
}
// .NET
@@ -31,14 +28,15 @@ public class Scripting : EngineModule
options.ScriptingAPI.Defines.Add("USE_NETCORE");
// .NET SDK
AddFrameworkDefines("NET{0}_{1}", 7, 0); // "NET7_0" and "NET7_0_OR_GREATER"
AddFrameworkDefines("NET{0}_{1}", 6, 0);
AddFrameworkDefines("NET{0}_{1}", 5, 0);
var dotnetSdk = DotNetSdk.Instance;
options.ScriptingAPI.Defines.Add("NET");
AddFrameworkDefines("NETCOREAPP{0}_{1}", 3, 1); // "NETCOREAPP3_1" and "NETCOREAPP3_1_OR_GREATER"
AddFrameworkDefines("NETCOREAPP{0}_{1}", 2, 2);
AddFrameworkDefines("NETCOREAPP{0}_{1}", 1, 1);
AddFrameworkDefines("NET{0}_{1}", dotnetSdk.Version.Major, 0); // "NET7_0"
for (int i = 5; i <= dotnetSdk.Version.Major; i++)
AddFrameworkDefines("NET{0}_{1}_OR_GREATER", dotnetSdk.Version.Major, 0); // "NET7_0_OR_GREATER"
options.ScriptingAPI.Defines.Add("NETCOREAPP");
AddFrameworkDefines("NETCOREAPP{0}_{1}_OR_GREATER", 3, 1); // "NETCOREAPP3_1_OR_GREATER"
AddFrameworkDefines("NETCOREAPP{0}_{1}_OR_GREATER", 2, 2);
AddFrameworkDefines("NETCOREAPP{0}_{1}_OR_GREATER", 1, 1);
if (options.Target is EngineTarget engineTarget && engineTarget.UseSeparateMainExecutable(options))
{