Removed script editor from beef side

This commit is contained in:
Simon Lübeß
2023-12-02 00:40:17 +01:00
parent 5852e11ccb
commit aaa48158c3
@@ -559,11 +559,6 @@ namespace GlitchyEditor.EditWindows
if (ImGui.Selectable(className.ToScopeCStr!(),
className == scriptComponent.ScriptClassName))
{
//scriptComponent.Instance = new ScriptInstance(scriptClass);
// decrement refCount to 1 (scriptComponent.Instance increments its)
//scriptComponent.Instance.ReleaseRef();
//ScriptEngine.InitializeInstance(entity, scriptComponent);
scriptComponent.ScriptClassName = scriptClass.FullName;
ScriptEngine.CreateScriptFieldMap(entity);
@@ -573,277 +568,6 @@ namespace GlitchyEditor.EditWindows
}
ScriptEngine.ShowScriptEditor(entity, scriptComponent);
ImGui.Separator();
ScriptClass scriptClass = ScriptEngine.GetScriptClass(scriptComponent.ScriptClassName);
/*T GetFieldValue<T>()
{
return scriptComponent.Instance.GetFieldValue<T>(monoField);
}
void SetFieldValue<T>(in T value)
{
scriptComponent.Instance.SetFieldValue<T>(monoField, value);
}*/
T GetFieldValue<T>(ScriptInstance scriptInstance, in ScriptField scriptField)
{
return scriptInstance.GetFieldValue<T>(scriptField);
}
void GetFieldValue<T>(ScriptInstance scriptInstance, in ScriptField scriptField, out T value)
{
value = scriptInstance.GetFieldValue<T>(scriptField);
}
void SetFieldValue<T>(ScriptInstance scriptInstance, in ScriptField scriptField, in T value)
{
scriptInstance.SetFieldValue<T>(scriptField, value);
}
T GetData<T>(void* instance, ScriptField scriptField)
{
T data = default;
Mono.mono_field_get_value((.)instance, scriptField.[Friend]_monoField, &data);
return data;
}
void GetData<T>(void* instance, ScriptField scriptField, T* data)
{
Mono.mono_field_get_value((.)instance, scriptField.[Friend]_monoField, data);
}
void SetData<T>(void* instance, ScriptField scriptField, in T value)
{
Mono.mono_field_set_value((.)instance, scriptField.[Friend]_monoField, &value);
}
void SetData<T>(void* instance, ScriptField scriptField, T* data)
{
Mono.mono_field_set_value((.)instance, scriptField.[Friend]_monoField, data);
}
if (scriptComponent.Instance?.IsInitialized == true)
{
// SharpClass sharpClass = scriptComponent.Instance.ScriptClass;
// ScriptInstance scriptInstance = scriptComponent.Instance;
// for (let (fieldName, scriptField) in sharpClass.Fields)
// {
// var monoField = scriptField.[Friend]_monoField;
// switch (scriptField.FieldType)
// {
// case .Bool:
// var value = GetFieldValue<bool>(scriptInstance, scriptField);
// if (ImGui.Checkbox(fieldName.ToScopeCStr!(), &value))
// SetFieldValue(scriptInstance, scriptField, value);
// case .SByte:
// var value = GetFieldValue<int8>(scriptInstance, scriptField);
// if (ImGui.DragScalar(fieldName.ToScopeCStr!(), .S8, &value))
// SetFieldValue(scriptInstance, scriptField, value);
// case .Short:
// var value = GetFieldValue<int16>(scriptInstance, scriptField);
// if (ImGui.DragScalar(fieldName.ToScopeCStr!(), .S16, &value))
// SetFieldValue(scriptInstance, scriptField, value);
// case .Int:
// var value = GetFieldValue<int32>(scriptInstance, scriptField);
// if (ImGui.DragScalar(fieldName.ToScopeCStr!(), .S32, &value))
// SetFieldValue(scriptInstance, scriptField, value);
// case .Long:
// var value = GetFieldValue<int64>(scriptInstance, scriptField);
// if (ImGui.DragScalar(fieldName.ToScopeCStr!(), .S64, &value))
// SetFieldValue(scriptInstance, scriptField, value);
// case .Byte:
// var value = GetFieldValue<uint8>(scriptInstance, scriptField);
// if (ImGui.DragScalar(fieldName.ToScopeCStr!(), .U8, &value))
// SetFieldValue(scriptInstance, scriptField, value);
// case .UShort:
// var value = GetFieldValue<uint16>(scriptInstance, scriptField);
// if (ImGui.DragScalar(fieldName.ToScopeCStr!(), .U16, &value))
// SetFieldValue(scriptInstance, scriptField, value);
// case .UInt:
// var value = GetFieldValue<uint32>(scriptInstance, scriptField);
// if (ImGui.DragScalar(fieldName.ToScopeCStr!(), .U32, &value))
// SetFieldValue(scriptInstance, scriptField, value);
// case .ULong:
// var value = GetFieldValue<uint64>(scriptInstance, scriptField);
// if (ImGui.DragScalar(fieldName.ToScopeCStr!(), .U64, &value))
// SetFieldValue(scriptInstance, scriptField, value);
// case .Float:
// var value = GetFieldValue<float>(scriptInstance, scriptField);
// if (ImGui.DragScalar(fieldName.ToScopeCStr!(), .Float, &value))
// SetFieldValue(scriptInstance, scriptField, value);
// case .float2:
// GetFieldValue<float2>(scriptInstance, scriptField, var value);
// if (ImGui.EditFloat2(fieldName, ref value))
// SetFieldValue(scriptInstance, scriptField, value);
// case .float3:
// GetFieldValue<float3>(scriptInstance, scriptField, var value);
// if (ImGui.EditFloat3(fieldName, ref value))
// SetFieldValue(scriptInstance, scriptField, value);
// case .float4:
// GetFieldValue<float4>(scriptInstance, scriptField, var value);
// if (ImGui.EditFloat4(fieldName, ref value))
// SetFieldValue(scriptInstance, scriptField, value);
// case .Double:
// var value = GetFieldValue<double>(scriptInstance, scriptField);
// if (ImGui.DragScalar(fieldName.ToScopeCStr!(), .Double, &value))
// SetFieldValue(scriptInstance, scriptField, value);
// case .Entity:
// // TODO!
// case .Enum:
// // TODO!
// case .Struct:
// // TODO!
// /*{
// uint8[] data = scope .[scriptField.SizeInBytes];
// Mono.mono_field_get_value(scriptInstance.[Friend]_instance, scriptField.[Friend]_monoField, data.Ptr);
// //scriptField.
// //scriptInstance.GetFieldValue();
// //scriptInstance.ScriptClass.Fields[]
// /*
// var value = GetFieldValue<double>(scriptInstance, scriptField);
// if (ImGui.DragScalar(fieldName.ToScopeCStr!(), .Double, &value))
// SetFieldValue(scriptInstance, scriptField, value);
// */
// }*/
// case .Class:
// {
// var value = GetFieldValue<void*>(scriptInstance, scriptField);
// }
// default:
// Log.EngineLogger.Error($"Unhandled field type {scriptField.FieldType}");
// }
// }
}
else if (scriptClass != null)
{
let scriptFields = ScriptEngine.GetScriptFieldMap(entity);
for (var (fieldName, field) in ref scriptFields)
{
switch (field.Type)
{
case .Bool:
var value = field.GetData<bool>();
if (ImGui.Checkbox(fieldName.CStr(), &value))
field.SetData(value);
case .SByte:
var value = field.GetData<int8>();
if (ImGui.DragScalar(fieldName.CStr(), .S8, &value))
field.SetData(value);
case .Short:
var value = field.GetData<int16>();
if (ImGui.DragScalar(fieldName.CStr(), .S16, &value))
field.SetData(value);
case .Int:
var value = field.GetData<int32>();
if (ImGui.DragScalar(fieldName.CStr(), .S32, &value))
field.SetData(value);
case .Int2:
var value = field.GetData<int2>();
if (ImGui.DragScalarN(fieldName.CStr(), .S32, &value, 2))
field.SetData(value);
case .Int3:
var value = field.GetData<int3>();
if (ImGui.DragScalarN(fieldName.CStr(), .S32, &value, 3))
field.SetData(value);
case .Int4:
var value = field.GetData<int4>();
if (ImGui.DragScalarN(fieldName.CStr(), .S32, &value, 4))
field.SetData(value);
case .Long:
var value = field.GetData<int64>();
if (ImGui.DragScalar(fieldName.CStr(), .S64, &value))
field.SetData(value);
case .Byte:
var value = field.GetData<uint8>();
if (ImGui.DragScalar(fieldName.CStr(), .U8, &value))
field.SetData(value);
case .UShort:
var value = field.GetData<uint16>();
if (ImGui.DragScalar(fieldName.CStr(), .U16, &value))
field.SetData(value);
case .UInt:
var value = field.GetData<uint32>();
if (ImGui.DragScalar(fieldName.CStr(), .U32, &value))
field.SetData(value);
case .ULong:
var value = field.GetData<uint64>();
if (ImGui.DragScalar(fieldName.CStr(), .U64, &value))
field.SetData(value);
case .Float:
var value = field.GetData<float>();
if (ImGui.DragScalar(fieldName.CStr(), .Float, &value))
field.SetData(value);
case .float2:
var value = field.GetData<float2>();
if (ImGui.EditFloat2(fieldName, ref value))
field.SetData(value);
case .float3:
var value = field.GetData<float3>();
if (ImGui.EditFloat3(fieldName, ref value))
field.SetData(value);
case .float4:
var value = field.GetData<float4>();
if (ImGui.EditFloat4(fieldName, ref value))
field.SetData(value);
case .Double:
var value = field.GetData<double>();
if (ImGui.DragScalar(fieldName.CStr(), .Double, &value))
field.SetData(value);
case .Double2:
var value = field.GetData<double2>();
if (ImGui.DragScalarN(fieldName.CStr(), .Double, &value, 2))
field.SetData(value);
case .Double3:
var value = field.GetData<double3>();
if (ImGui.DragScalarN(fieldName.CStr(), .Double, &value, 3))
field.SetData(value);
case .Double4:
var value = field.GetData<double4>();
if (ImGui.DragScalarN(fieldName.CStr(), .Double, &value, 4))
field.SetData(value);
case .Enum:
ShowEnumSelector(field, fieldName, scriptClass);
//case .String:
// TODO!
case .Entity:
ShowEntityReceiver(field, fieldName, scriptClass);
case .Component:
ShowComponentReceiver(field, fieldName, scriptClass);
case .Struct:
// TODO!
case .Class:
// We don't support editing classes
default:
Log.EngineLogger.Error($"Unhandled field type {field.Type}");
}
}
}
}
private static void ShowEnumSelector(ScriptFieldInstance* field, StringView fieldName, ScriptClass scriptClass)