Minor fixes

This commit is contained in:
Wojtek Figat
2025-06-27 18:52:25 +02:00
parent 8cdec15fa6
commit 185151b025
3 changed files with 67 additions and 8 deletions

View File

@@ -1,7 +1,6 @@
// Copyright (c) Wojciech Figat. All rights reserved. // Copyright (c) Wojciech Figat. All rights reserved.
using System; using System;
using System.Linq;
using FlaxEditor.Content.Settings; using FlaxEditor.Content.Settings;
using FlaxEditor.Scripting; using FlaxEditor.Scripting;
using FlaxEditor.Surface.Elements; using FlaxEditor.Surface.Elements;
@@ -262,12 +261,55 @@ namespace FlaxEditor.Surface.Archetypes
} }
} }
#if false // TODO: finish code editor based on RichTextBoxBase with text block parsing for custom styling
internal sealed class CustomCodeTextBox : RichTextBoxBase
{
protected override void OnParseTextBlocks()
{
base.OnParseTextBlocks();
// Single block for a whole text
// TODO: implement code parsing with HLSL syntax
var font = Style.Current.FontMedium;
var style = new TextBlockStyle
{
Font = new FontReference(font),
Color = Style.Current.Foreground,
BackgroundSelectedBrush = new SolidColorBrush(Style.Current.BackgroundSelected),
};
_textBlocks.Clear();
_textBlocks.Add(new TextBlock
{
Range = new TextRange
{
StartIndex = 0,
EndIndex = TextLength,
},
Style = style,
Bounds = new Rectangle(Float2.Zero, font.MeasureText(Text)),
});
}
#else
internal sealed class CustomCodeTextBox : TextBox
{
#endif
public override void Draw()
{
base.Draw();
// Draw border
if (!IsFocused)
Render2D.DrawRectangle(new Rectangle(Float2.Zero, Size), Style.Current.BorderNormal);
}
}
internal sealed class CustomCodeNode : SurfaceNode internal sealed class CustomCodeNode : SurfaceNode
{ {
private Rectangle _resizeButtonRect; private Rectangle _resizeButtonRect;
private Float2 _startResizingSize; private Float2 _startResizingSize;
private Float2 _startResizingCornerOffset; private Float2 _startResizingCornerOffset;
private bool _isResizing; private bool _isResizing;
private CustomCodeTextBox _textBox;
private int SizeValueIndex => Archetype.TypeID == 8 ? 1 : 3; // Index of the Size stored in Values array private int SizeValueIndex => Archetype.TypeID == 8 ? 1 : 3; // Index of the Size stored in Values array
@@ -280,6 +322,26 @@ namespace FlaxEditor.Surface.Archetypes
public CustomCodeNode(uint id, VisjectSurfaceContext context, NodeArchetype nodeArch, GroupArchetype groupArch) public CustomCodeNode(uint id, VisjectSurfaceContext context, NodeArchetype nodeArch, GroupArchetype groupArch)
: base(id, context, nodeArch, groupArch) : base(id, context, nodeArch, groupArch)
{ {
Float2 pos = new Float2(FlaxEditor.Surface.Constants.NodeMarginX, FlaxEditor.Surface.Constants.NodeMarginY + FlaxEditor.Surface.Constants.NodeHeaderSize), size;
if (nodeArch.TypeID == 8)
{
pos += new Float2(60, 0);
size = new Float2(172, 200);
}
else
{
pos += new Float2(0, 40);
size = new Float2(300, 200);
}
_textBox = new CustomCodeTextBox
{
IsMultiline = true,
Location = pos,
Size = size,
Parent = this,
AnchorMax = Float2.One,
};
_textBox.EditEnd += () => SetValue(0, _textBox.Text);
} }
public override bool CanSelect(ref Float2 location) public override bool CanSelect(ref Float2 location)
@@ -291,8 +353,7 @@ namespace FlaxEditor.Surface.Archetypes
{ {
base.OnSurfaceLoaded(action); base.OnSurfaceLoaded(action);
var textBox = (TextBox)Children.First(x => x is TextBox); _textBox.Text = (string)Values[0];
textBox.AnchorMax = Float2.One;
var size = SizeValue; var size = SizeValue;
if (Surface != null && Surface.GridSnappingEnabled) if (Surface != null && Surface.GridSnappingEnabled)
@@ -306,6 +367,7 @@ namespace FlaxEditor.Surface.Archetypes
var size = SizeValue; var size = SizeValue;
Resize(size.X, size.Y); Resize(size.X, size.Y);
_textBox.Text = (string)Values[0];
} }
protected override void UpdateRectangles() protected override void UpdateRectangles()
@@ -579,8 +641,6 @@ namespace FlaxEditor.Surface.Archetypes
NodeElementArchetype.Factory.Output(1, "Output1", typeof(Float4), 9), NodeElementArchetype.Factory.Output(1, "Output1", typeof(Float4), 9),
NodeElementArchetype.Factory.Output(2, "Output2", typeof(Float4), 10), NodeElementArchetype.Factory.Output(2, "Output2", typeof(Float4), 10),
NodeElementArchetype.Factory.Output(3, "Output3", typeof(Float4), 11), NodeElementArchetype.Factory.Output(3, "Output3", typeof(Float4), 11),
NodeElementArchetype.Factory.TextBox(60, 0, 175, 200, 0),
} }
}, },
new NodeArchetype new NodeArchetype
@@ -1038,7 +1098,6 @@ namespace FlaxEditor.Surface.Archetypes
NodeElementArchetype.Factory.Text(20, 0, "Enabled"), NodeElementArchetype.Factory.Text(20, 0, "Enabled"),
NodeElementArchetype.Factory.Text(0, 20, "Location"), NodeElementArchetype.Factory.Text(0, 20, "Location"),
NodeElementArchetype.Factory.Enum(50, 20, 120, 2, typeof(MaterialTemplateInputsMapping)), NodeElementArchetype.Factory.Enum(50, 20, 120, 2, typeof(MaterialTemplateInputsMapping)),
NodeElementArchetype.Factory.TextBox(0, 40, 300, 200, 0),
} }
}, },
new NodeArchetype new NodeArchetype

View File

@@ -156,7 +156,7 @@ Object::~Object()
{ {
#if BUILD_DEBUG #if BUILD_DEBUG
// Prevent removing object that is still reverenced by the removal service // Prevent removing object that is still reverenced by the removal service
ASSERT(!ObjectsRemovalService::IsInPool(this)); //ASSERT(!ObjectsRemovalService::IsInPool(this));
#endif #endif
} }

View File

@@ -57,7 +57,7 @@ namespace FlaxEngine.GUI
{ {
base.OnSizeChanged(); base.OnSizeChanged();
// Refresh textblocks since thos emight depend on control size (eg. align right) // Refresh textblocks since those might depend on control size (eg. align right)
UpdateTextBlocks(); UpdateTextBlocks();
} }
} }