Renamed EditfloatX to EditFloatX

This commit is contained in:
Simon Lübeß
2023-11-22 00:54:43 +01:00
parent 8127884b50
commit 05350d4768
3 changed files with 113 additions and 158 deletions
@@ -226,7 +226,7 @@ class MaterialAssetPropertiesEditor : AssetPropertiesEditor
float2 minV = hasMin ? min.Get<float2>() : (float2)float.MinValue; float2 minV = hasMin ? min.Get<float2>() : (float2)float.MinValue;
float2 maxV = hasMax ? max.Get<float2>() : (float2)float.MaxValue; float2 maxV = hasMax ? max.Get<float2>() : (float2)float.MaxValue;
if (ImGui.Editfloat2(displayName, ref value, .Zero, 0.1f, 100.0f, minV, maxV)) if (ImGui.EditFloat2(displayName, ref value, .Zero, 0.1f, 100.0f, minV, maxV))
material.SetVariable(variable.Name, value); material.SetVariable(variable.Name, value);
case 3: case 3:
material.GetVariable<float3>(variable.Name, var value); material.GetVariable<float3>(variable.Name, var value);
@@ -234,7 +234,7 @@ class MaterialAssetPropertiesEditor : AssetPropertiesEditor
float3 minV = hasMin ? min.Get<float3>() : (float3)float.MinValue; float3 minV = hasMin ? min.Get<float3>() : (float3)float.MinValue;
float3 maxV = hasMax ? max.Get<float3>() : (float3)float.MaxValue; float3 maxV = hasMax ? max.Get<float3>() : (float3)float.MaxValue;
if (ImGui.Editfloat3(displayName, ref value, .Zero, 0.1f, 100.0f, minV, maxV)) if (ImGui.EditFloat3(displayName, ref value, .Zero, 0.1f, 100.0f, minV, maxV))
material.SetVariable(variable.Name, value); material.SetVariable(variable.Name, value);
case 4: case 4:
material.GetVariable<float4>(variable.Name, var value); material.GetVariable<float4>(variable.Name, var value);
@@ -242,7 +242,7 @@ class MaterialAssetPropertiesEditor : AssetPropertiesEditor
float4 minV = hasMin ? min.Get<float4>() : (float4)float.MinValue; float4 minV = hasMin ? min.Get<float4>() : (float4)float.MinValue;
float4 maxV = hasMax ? max.Get<float4>() : (float4)float.MaxValue; float4 maxV = hasMax ? max.Get<float4>() : (float4)float.MaxValue;
if (ImGui.Editfloat4(displayName, ref value, .Zero, 0.1f, 100.0f, minV, maxV)) if (ImGui.EditFloat4(displayName, ref value, .Zero, 0.1f, 100.0f, minV, maxV))
material.SetVariable(variable.Name, value); material.SetVariable(variable.Name, value);
} }
} }
@@ -196,7 +196,7 @@ namespace GlitchyEditor.EditWindows
textWidth += ImGui.GetStyle().FramePadding.x * 3.0f; textWidth += ImGui.GetStyle().FramePadding.x * 3.0f;
float3 position = transform.Position; float3 position = transform.Position;
if (ImGui.Editfloat3("Position", ref position, .Zero, 0.1f, textWidth)) if (ImGui.EditFloat3("Position", ref position, .Zero, 0.1f, textWidth))
{ {
transform.Position = position; transform.Position = position;
@@ -217,7 +217,7 @@ namespace GlitchyEditor.EditWindows
rotationEuler.XY = 0; rotationEuler.XY = 0;
} }
if (ImGui.Editfloat3("Rotation", ref rotationEuler, .Zero, 0.1f, textWidth, componentEnabled: componentEditable)) if (ImGui.EditFloat3("Rotation", ref rotationEuler, .Zero, 0.1f, textWidth, componentEnabled: componentEditable))
{ {
transform.EditorRotationEuler = MathHelper.ToRadians(rotationEuler); transform.EditorRotationEuler = MathHelper.ToRadians(rotationEuler);
@@ -229,7 +229,7 @@ namespace GlitchyEditor.EditWindows
} }
float3 scale = transform.Scale; float3 scale = transform.Scale;
if (ImGui.Editfloat3("Scale", ref scale, .One, 0.1f, textWidth)) if (ImGui.EditFloat3("Scale", ref scale, .One, 0.1f, textWidth))
transform.Scale = scale; transform.Scale = scale;
} }
@@ -436,11 +436,11 @@ namespace GlitchyEditor.EditWindows
float2 offset = boxCollider.Offset; float2 offset = boxCollider.Offset;
if (ImGui.Editfloat2("Offset", ref offset, .Zero, 0.1f, textWidth)) if (ImGui.EditFloat2("Offset", ref offset, .Zero, 0.1f, textWidth))
boxCollider.Offset = offset; boxCollider.Offset = offset;
float2 size = boxCollider.Size; float2 size = boxCollider.Size;
if (ImGui.Editfloat2("Size", ref size, .Zero, 0.1f, textWidth, float2(0.01f, 0.01f), float.PositiveInfinity.XX)) if (ImGui.EditFloat2("Size", ref size, .Zero, 0.1f, textWidth, float2(0.01f, 0.01f), float.PositiveInfinity.XX))
boxCollider.Size = size; boxCollider.Size = size;
float density = boxCollider.Density; float density = boxCollider.Density;
@@ -466,7 +466,7 @@ namespace GlitchyEditor.EditWindows
textWidth += ImGui.GetStyle().FramePadding.x * 3.0f; textWidth += ImGui.GetStyle().FramePadding.x * 3.0f;
float2 offset = circleCollider.Offset; float2 offset = circleCollider.Offset;
if (ImGui.Editfloat2("Offset", ref offset, .Zero, 0.1f, textWidth)) if (ImGui.EditFloat2("Offset", ref offset, .Zero, 0.1f, textWidth))
circleCollider.Offset = offset; circleCollider.Offset = offset;
float radius = circleCollider.Radius; float radius = circleCollider.Radius;
@@ -496,7 +496,7 @@ namespace GlitchyEditor.EditWindows
textWidth += ImGui.GetStyle().FramePadding.x * 3.0f; textWidth += ImGui.GetStyle().FramePadding.x * 3.0f;
float2 offset = polygonCollider.Offset; float2 offset = polygonCollider.Offset;
if (ImGui.Editfloat2("Offset", ref offset, .Zero, 0.1f, textWidth)) if (ImGui.EditFloat2("Offset", ref offset, .Zero, 0.1f, textWidth))
polygonCollider.Offset = offset; polygonCollider.Offset = offset;
// TODO: Handles in editor, etc... // TODO: Handles in editor, etc...
@@ -504,7 +504,7 @@ namespace GlitchyEditor.EditWindows
{ {
for (int i < polygonCollider.VertexCount) for (int i < polygonCollider.VertexCount)
{ {
ImGui.Editfloat2(scope $"{i}", ref polygonCollider.Vertices[i]); ImGui.EditFloat2(scope $"{i}", ref polygonCollider.Vertices[i]);
} }
} }
@@ -629,159 +629,108 @@ namespace GlitchyEditor.EditWindows
if (scriptComponent.Instance?.IsInitialized == true) if (scriptComponent.Instance?.IsInitialized == true)
{ {
SharpClass sharpClass = scriptComponent.Instance.ScriptClass; // SharpClass sharpClass = scriptComponent.Instance.ScriptClass;
ScriptInstance scriptInstance = scriptComponent.Instance; // ScriptInstance scriptInstance = scriptComponent.Instance;
/*void DoFunnyStuff(void* instance, SharpType sharpType) // for (let (fieldName, scriptField) in sharpClass.Fields)
{ // {
for (let (fieldName, scriptField) in sharpType.Fields) // var monoField = scriptField.[Friend]_monoField;
{
var monoField = scriptField.[Friend]_monoField;
switch (scriptField.FieldType) // switch (scriptField.FieldType)
{ // {
case .Float: // case .Bool:
var value = GetData<float>(instance, scriptField); // var value = GetFieldValue<bool>(scriptInstance, scriptField);
if (ImGui.DragScalar(fieldName.ToScopeCStr!(), .Float, &value)) // if (ImGui.Checkbox(fieldName.ToScopeCStr!(), &value))
SetData(instance, scriptField, value); // SetFieldValue(scriptInstance, scriptField, value);
case .Struct: // case .SByte:
{ // var value = GetFieldValue<int8>(scriptInstance, scriptField);
var v = Mono.mono_field_get_value_object(ScriptEngine.[Friend]s_AppDomain, scriptField.[Friend]_monoField, (.)instance); // 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);
void* dataPtr = Mono.mono_object_unbox(v); // 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);
Span<uint8> data = .((.)dataPtr, scriptField.SizeInBytes); // case .Float:
// var value = GetFieldValue<float>(scriptInstance, scriptField);
// if (ImGui.DragScalar(fieldName.ToScopeCStr!(), .Float, &value))
// SetFieldValue(scriptInstance, scriptField, value);
if (ImGui.CollapsingHeader(fieldName.Ptr)) // case .float2:
{ // GetFieldValue<float2>(scriptInstance, scriptField, var value);
DoFunnyStuff(dataPtr, scriptField.SharpType); // 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);
SetData<MonoObject>(instance, scriptField, v); // case .Double:
// var value = GetFieldValue<double>(scriptInstance, scriptField);
// if (ImGui.DragScalar(fieldName.ToScopeCStr!(), .Double, &value))
// SetFieldValue(scriptInstance, scriptField, value);
//Mono.mono_field_set_value_object(ScriptEngine.[Friend]s_AppDomain, scriptField.[Friend]_monoField, (.)instance); // case .Entity:
//uint8* data = ; // // TODO!
/*uint8[] data = scope .[scriptField.SizeInBytes]; // case .Enum:
// // TODO!
// case .Struct:
// // TODO!
// /*{
// uint8[] data = scope .[scriptField.SizeInBytes];
GetData(instance, scriptField, data.Ptr); // Mono.mono_field_get_value(scriptInstance.[Friend]_instance, scriptField.[Friend]_monoField, data.Ptr);
if (ImGui.CollapsingHeader(fieldName.Ptr)) // //scriptField.
{
DoFunnyStuff(data.Ptr, scriptField.SharpType);
}
MonoObject* boxed = Mono.mono_value_box(ScriptEngine.[Friend]s_AppDomain, ((SharpClass)scriptField.SharpType).[Friend]_monoClass, data.Ptr); // //scriptInstance.GetFieldValue();
SetData<MonoObject>(instance, scriptField, boxed);*/ // //scriptInstance.ScriptClass.Fields[]
// /*
//Mono.mono_field_get_value(instance, scriptField.[Friend]_monoField, data.Ptr); // var value = GetFieldValue<double>(scriptInstance, scriptField);
// if (ImGui.DragScalar(fieldName.ToScopeCStr!(), .Double, &value))
} // SetFieldValue(scriptInstance, scriptField, value);
default: // */
//Log.EngineLogger.Error($"Unhandled field type {scriptField.FieldType}"); // }*/
} // case .Class:
} // {
} // var value = GetFieldValue<void*>(scriptInstance, scriptField);
// }
DoFunnyStuff(scriptInstance.[Friend]_instance, sharpClass);*/ // default:
// Log.EngineLogger.Error($"Unhandled field type {scriptField.FieldType}");
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);
*/
}*/
default:
Log.EngineLogger.Error($"Unhandled field type {scriptField.FieldType}");
}
}
} }
else if (scriptClass != null) else if (scriptClass != null)
{ {
@@ -847,15 +796,15 @@ namespace GlitchyEditor.EditWindows
field.SetData(value); field.SetData(value);
case .float2: case .float2:
var value = field.GetData<float2>(); var value = field.GetData<float2>();
if (ImGui.Editfloat2(fieldName, ref value)) if (ImGui.EditFloat2(fieldName, ref value))
field.SetData(value); field.SetData(value);
case .float3: case .float3:
var value = field.GetData<float3>(); var value = field.GetData<float3>();
if (ImGui.Editfloat3(fieldName, ref value)) if (ImGui.EditFloat3(fieldName, ref value))
field.SetData(value); field.SetData(value);
case .float4: case .float4:
var value = field.GetData<float4>(); var value = field.GetData<float4>();
if (ImGui.Editfloat4(fieldName, ref value)) if (ImGui.EditFloat4(fieldName, ref value))
field.SetData(value); field.SetData(value);
case .Double: case .Double:
+9 -3
View File
@@ -118,20 +118,26 @@ namespace ImGui
/// Releases references that accumulated calls like ImGui::Image /// Releases references that accumulated calls like ImGui::Image
protected internal static extern void CleanupFrame(); protected internal static extern void CleanupFrame();
[Export, LinkName(.C)]
private static bool ImGui_EditFloat2(char8* label, ref float2 value, float2 resetValues = .Zero, float dragSpeed = 0.1f, float columnWidth = 100f, float2 minValue = .Zero, float2 maxValue = .Zero, bool2 componentEnabled = true)
{
return EditFloat2(StringView(label), ref value, resetValues, dragSpeed, columnWidth, minValue, maxValue, componentEnabled);
}
/// Control to edit a vector 2 with drag functionality and reset buttons /// Control to edit a vector 2 with drag functionality and reset buttons
public static bool Editfloat2(StringView label, ref float2 value, float2 resetValues = .Zero, float dragSpeed = 0.1f, float columnWidth = 100f, float2 minValue = .Zero, float2 maxValue = .Zero, bool2 componentEnabled = true) public static bool EditFloat2(StringView label, ref float2 value, float2 resetValues = .Zero, float dragSpeed = 0.1f, float columnWidth = 100f, float2 minValue = .Zero, float2 maxValue = .Zero, bool2 componentEnabled = true)
{ {
return EditVector<2>(label, ref *(float[2]*)&value, (float[2])resetValues, dragSpeed, columnWidth, (float[2])minValue, (float[2])maxValue, (bool[2])componentEnabled); return EditVector<2>(label, ref *(float[2]*)&value, (float[2])resetValues, dragSpeed, columnWidth, (float[2])minValue, (float[2])maxValue, (bool[2])componentEnabled);
} }
/// Control to edit a vector 3 with drag functionality and reset buttons /// Control to edit a vector 3 with drag functionality and reset buttons
public static bool Editfloat3(StringView label, ref float3 value, float3 resetValues = .Zero, float dragSpeed = 0.1f, float columnWidth = 100f, float3 minValue = .Zero, float3 maxValue = .Zero, bool3 componentEnabled = true) public static bool EditFloat3(StringView label, ref float3 value, float3 resetValues = .Zero, float dragSpeed = 0.1f, float columnWidth = 100f, float3 minValue = .Zero, float3 maxValue = .Zero, bool3 componentEnabled = true)
{ {
return EditVector<3>(label, ref *(float[3]*)&value, (float[3])resetValues, dragSpeed, columnWidth, (float[3])minValue, (float[3])maxValue, (bool[3])componentEnabled); return EditVector<3>(label, ref *(float[3]*)&value, (float[3])resetValues, dragSpeed, columnWidth, (float[3])minValue, (float[3])maxValue, (bool[3])componentEnabled);
} }
/// Control to edit a vector 4 with drag functionality and reset buttons /// Control to edit a vector 4 with drag functionality and reset buttons
public static bool Editfloat4(StringView label, ref float4 value, float4 resetValues = .Zero, float dragSpeed = 0.1f, float columnWidth = 100f, float4 minValue = .Zero, float4 maxValue = .Zero, bool4 componentEnabled = true) public static bool EditFloat4(StringView label, ref float4 value, float4 resetValues = .Zero, float dragSpeed = 0.1f, float columnWidth = 100f, float4 minValue = .Zero, float4 maxValue = .Zero, bool4 componentEnabled = true)
{ {
return EditVector<4>(label, ref *(float[4]*)&value, (float[4])resetValues, dragSpeed, columnWidth, (float[4])minValue, (float[4])maxValue, (bool[4])componentEnabled); return EditVector<4>(label, ref *(float[4]*)&value, (float[4])resetValues, dragSpeed, columnWidth, (float[4])minValue, (float[4])maxValue, (bool[4])componentEnabled);
} }