Add support for compiling and running engine without C# scripting

(configurable via `EngineConfiguration.UseCSharp` in Flax.Build)
This commit is contained in:
2021-10-23 16:43:15 +02:00
parent 0b3d6b03ac
commit 8938f13a0b
86 changed files with 1244 additions and 688 deletions
@@ -208,12 +208,14 @@ void Serialization::Serialize(ISerializable::SerializeStream& stream, const Vari
case VariantType::ManagedObject:
case VariantType::Structure:
{
#if USE_MONO
MonoObject* obj;
if (v.Type.Type == VariantType::Structure)
obj = MUtils::BoxVariant(v);
else
obj = (MonoObject*)v;
ManagedSerialization::Serialize(stream, obj);
#endif
break;
}
default:
@@ -346,6 +348,7 @@ void Serialization::Deserialize(ISerializable::DeserializeStream& stream, Varian
case VariantType::ManagedObject:
case VariantType::Structure:
{
#if USE_MONO
auto obj = (MonoObject*)v;
if (!obj && v.Type.TypeName)
{
@@ -369,6 +372,7 @@ void Serialization::Deserialize(ISerializable::DeserializeStream& stream, Varian
ManagedSerialization::Deserialize(value, obj);
if (v.Type.Type == VariantType::Structure)
v = MUtils::UnboxVariant(obj);
#endif
break;
}
default:
+4
View File
@@ -356,6 +356,7 @@ void ReadStream::ReadVariant(Variant* data)
// Json
StringAnsi json;
ReadStringAnsi(&json, -71);
#if USE_MONO
MCore::AttachThread();
MonoClass* klass = MUtils::GetClass(data->Type);
if (!klass)
@@ -376,6 +377,7 @@ void ReadStream::ReadVariant(Variant* data)
data->SetManagedObject(obj);
else
*data = MUtils::UnboxVariant(obj);
#endif
}
else
{
@@ -706,6 +708,7 @@ void WriteStream::WriteVariant(const Variant& data)
case VariantType::ManagedObject:
case VariantType::Structure:
{
#if USE_MONO
MonoObject* obj;
if (data.Type.Type == VariantType::Structure)
obj = MUtils::BoxVariant(data);
@@ -721,6 +724,7 @@ void WriteStream::WriteVariant(const Variant& data)
WriteStringAnsi(StringAnsiView(json.GetString(), (int32)json.GetSize()), -71);
}
else
#endif
{
WriteByte(0);
}