mirror of
https://github.com/aharabada/glitchy-engine-beef.git
synced 2026-09-05 21:01:52 +00:00
Add / Remove Components
This commit is contained in:
@@ -6,8 +6,19 @@ namespace ImGui
|
||||
{
|
||||
extension ImGui
|
||||
{
|
||||
// TODO: Color-functions
|
||||
extension Vec2
|
||||
{
|
||||
public static explicit operator Vector2(Vec2 v) => .(v.x, v.y);
|
||||
public static explicit operator Vec2(Vector2 v) => .(v.X, v.Y);
|
||||
}
|
||||
|
||||
extension Vec4
|
||||
{
|
||||
public static explicit operator Vector4(Vec4 v) => .(v.x, v.y, v.z, v.w);
|
||||
public static explicit operator Vec4(Vector4 v) => .(v.X, v.Y, v.Z, v.W);
|
||||
}
|
||||
|
||||
// TODO: Color-functions
|
||||
public static bool ColorEdit3(char* label, ref ColorRGB col, ColorEditFlags flags = (ColorEditFlags) 0) => ColorEdit3Impl(label, *(float[3]*)&col, flags);
|
||||
public static bool ColorEdit3(char* label, ref ColorRGBA col, ColorEditFlags flags = (ColorEditFlags) 0) => ColorEdit3Impl(label, *(float[3]*)&col, flags);
|
||||
|
||||
@@ -29,16 +40,87 @@ namespace ImGui
|
||||
/// Releases references that accumulated calls like ImGui::Image
|
||||
protected internal static extern void CleanupFrame();
|
||||
|
||||
extension Vec2
|
||||
/// Control to edit a vector 3 with drag functionality and reset buttons
|
||||
public static bool EditVector3(StringView label, ref Vector3 value, Vector3 resetValues = .Zero, float dragSpeed = 0.1f, float columnWidth = 100f)
|
||||
{
|
||||
public static explicit operator Vector2(Vec2 v) => .(v.x, v.y);
|
||||
public static explicit operator Vec2(Vector2 v) => .(v.X, v.Y);
|
||||
}
|
||||
bool changed = false;
|
||||
|
||||
extension Vec4
|
||||
{
|
||||
public static explicit operator Vector4(Vec4 v) => .(v.x, v.y, v.z, v.w);
|
||||
public static explicit operator Vec4(Vector4 v) => .(v.X, v.Y, v.Z, v.W);
|
||||
PushID(label);
|
||||
defer PopID();
|
||||
|
||||
Columns(2);
|
||||
defer Columns(1);
|
||||
SetColumnWidth(0, columnWidth);
|
||||
|
||||
TextUnformatted(label);
|
||||
|
||||
NextColumn();
|
||||
|
||||
PushMultiItemsWidths(3, CalcItemWidth());
|
||||
PushStyleVar(.ItemSpacing, Vec2.Zero);
|
||||
defer PopStyleVar();
|
||||
|
||||
float lineHeight = GetFont().FontSize + GetStyle().FramePadding.y * 2.0f;
|
||||
ImGui.Vec2 buttonSize = .(lineHeight + 3.0f, lineHeight);
|
||||
|
||||
PushStyleColor(.Button, Color(230, 25, 45).Value);
|
||||
PushStyleColor(.ButtonHovered, Color(150, 25, 45).Value);
|
||||
PushStyleColor(.ButtonActive, Color(230, 120, 130).Value);
|
||||
|
||||
if (Button("X", buttonSize))
|
||||
{
|
||||
value.X = resetValues.X;
|
||||
changed = true;
|
||||
}
|
||||
|
||||
SameLine();
|
||||
|
||||
if (DragFloat("##X", &value.X, dragSpeed))
|
||||
changed = true;
|
||||
|
||||
PopItemWidth();
|
||||
SameLine();
|
||||
|
||||
PopStyleColor(3);
|
||||
PushStyleColor(.Button, Color(50, 190, 15).Value);
|
||||
PushStyleColor(.ButtonHovered, Color(50, 120, 15).Value);
|
||||
PushStyleColor(.ButtonActive, Color(116, 190, 99).Value);
|
||||
|
||||
if (Button("Y", buttonSize))
|
||||
{
|
||||
value.Y = resetValues.Y;
|
||||
changed = true;
|
||||
}
|
||||
|
||||
SameLine();
|
||||
|
||||
if (DragFloat("##Y", &value.Y, dragSpeed))
|
||||
changed = true;
|
||||
|
||||
PopItemWidth();
|
||||
SameLine();
|
||||
|
||||
PopStyleColor(3);
|
||||
PushStyleColor(.Button, Color(55, 55, 230).Value);
|
||||
PushStyleColor(.ButtonHovered, Color(55, 55, 150).Value);
|
||||
PushStyleColor(.ButtonActive, Color(90, 90, 230).Value);
|
||||
|
||||
if (Button("Z", buttonSize))
|
||||
{
|
||||
value.Z = resetValues.Z;
|
||||
changed = true;
|
||||
}
|
||||
|
||||
SameLine();
|
||||
|
||||
if (DragFloat("##Z", &value.Z, dragSpeed))
|
||||
changed = true;
|
||||
|
||||
PopItemWidth();
|
||||
|
||||
PopStyleColor(3);
|
||||
|
||||
return changed;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user