port from perforce
This commit is contained in:
66
intromat/Intromat/Nodes/Code/FloatLiteralNode.cs
Normal file
66
intromat/Intromat/Nodes/Code/FloatLiteralNode.cs
Normal 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;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user