port from perforce

This commit is contained in:
2026-04-18 22:31:51 +02:00
commit 8d0ab5b7cc
8409 changed files with 3972376 additions and 0 deletions

View File

@@ -0,0 +1,66 @@
using System;
using System.Reactive.Linq;
using DynamicData;
using Intromat.Model.Compiler;
using Intromat.PersistentModel;
using Intromat.ViewModels;
using Intromat.ViewModels.Editors;
using Intromat.ViewModels.Previews;
using Intromat.Views;
using NodeNetwork.Toolkit.ValueNode;
using ReactiveUI;
using Splat;
namespace Intromat.Nodes.Code
{
public class FloatLiteralNode : CodeGenNodeViewModel
{
static FloatLiteralNode()
{
Locator.CurrentMutable.Register(() => new CodeGenNodeView(), typeof(IViewFor<FloatLiteralNode>));
}
public FloatLiteralNode() : base(NodeType.Literal)
{
Name = "Float";
Output = new CodeGenOutputViewModel<ITypedExpression<float>>(EPortType.Float)
{
Name = "Value",
Editor = ValueEditor,
Value = ValueEditor.ValueChanged.Select(v => new FloatLiteralValue { Value = v })
};
Outputs.Add(Output);
var stringPreview = new StringPreviewViewModel();
Preview = stringPreview;
this.WhenAnyValue(vm => vm.Output.CurrentValue)
.Where(v => v != null)
.Subscribe(_ => stringPreview.Value = Output.CurrentValue.PreviewValue ?? "0.0");
}
public FloatValueEditorViewModel ValueEditor { get; } = new();
public ValueNodeOutputViewModel<ITypedExpression<float>> Output { get; }
public override NodeModelBase CreateModel()
{
return new FloatLiteralModel();
}
public override void LoadModel(NodeModelBase model)
{
base.LoadModel(model);
var floatLiteral = (FloatLiteralModel)model;
ValueEditor.Value = floatLiteral.Value;
}
public override void SaveModel(NodeModelBase model)
{
base.SaveModel(model);
var floatLiteral = (FloatLiteralModel)model;
floatLiteral.Value = ValueEditor.Value;
}
}
}