Several visual fixes

This commit is contained in:
barsdeveloper
2023-09-24 23:20:30 +02:00
parent 6f276856d6
commit 25a445ec0e
17 changed files with 407 additions and 123 deletions

View File

@@ -1,8 +0,0 @@
/// <reference types="cypress" />
import generateNodeTests from "../fixtures/testUtilities.js"
const tests = [
]
generateNodeTests(tests)

View File

@@ -1,6 +1,9 @@
/// <reference types="cypress" />
import generateNodeTests from "../fixtures/testUtilities.js"
import NodeElement from "../../js/element/NodeElement.js"
import PinElement from "../../js/element/PinElement.js"
import SVGIcon from "../../js/SVGIcon.js"
const tests = [
{
@@ -21,9 +24,17 @@ const tests = [
pins: 3,
delegate: false,
development: false,
additionalTest:
/** @param {NodeElement} node */
node => {
let pins = /** @type {PinElement[]} */(node.querySelectorAll("ueb-pin"))
for (const pin of pins) {
expect(pin.template.renderIcon().strings.join("").trim()).to.be.equal(SVGIcon.operationPin.strings.join("").trim())
}
}
},
{
name: "LessEqual",
name: "Less Equal",
title: "<=",
value: String.raw`
Begin Object Class=/Script/BlueprintGraph.K2Node_PromotableOperator Name="K2Node_PromotableOperator_6" ExportPath=/Script/BlueprintGraph.K2Node_PromotableOperator'"/Temp/Untitled_1.Untitled_1:PersistentLevel.Untitled.EventGraph.K2Node_PromotableOperator_6"'
@@ -42,6 +53,14 @@ const tests = [
pins: 3,
delegate: false,
development: false,
additionalTest:
/** @param {NodeElement} node */
node => {
let pins = /** @type {PinElement[]} */(node.querySelectorAll("ueb-pin"))
for (const pin of pins) {
expect(pin.template.renderIcon().strings.join("").trim()).to.be.equal(SVGIcon.operationPin.strings.join("").trim())
}
}
},
{
name: "Equal",
@@ -62,29 +81,44 @@ const tests = [
pins: 3,
delegate: false,
development: false,
additionalTest:
/** @param {NodeElement} node */
node => {
let pins = /** @type {PinElement[]} */(node.querySelectorAll("ueb-pin"))
for (const pin of pins) {
expect(pin.template.renderIcon().strings.join("").trim()).to.be.equal(SVGIcon.operationPin.strings.join("").trim())
}
}
},
{
name: "Greater",
title: ">",
value: String.raw`
Begin Object Class=/Script/BlueprintGraph.K2Node_PromotableOperator Name="K2Node_PromotableOperator_7" ExportPath=/Script/BlueprintGraph.K2Node_PromotableOperator'"/Temp/Untitled_1.Untitled_1:PersistentLevel.Untitled.EventGraph.K2Node_PromotableOperator_7"'
bIsPureFunc=True
FunctionReference=(MemberParent=/Script/CoreUObject.Class'"/Script/Engine.KismetMathLibrary"',MemberName="Greater_ByteByte")
NodePosX=128
NodeGuid=11FE7BC92D8C489A8E4034697377122C
CustomProperties Pin (PinId=7C43E9ED4C264D328341E620FF154BD2,PinName="A",PinToolTip="A\nBoolean",PinType.PinCategory="bool",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_PromotableOperator_6 3E135915A0FE467CBC499FDCAAB3906A,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=23A96E0897564EA6B86CCC88BB518AC2,PinName="B",PinToolTip="B\nByte",PinType.PinCategory="byte",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=E6887819C15B4C78ADFBEA15EE57EBA9,PinName="ReturnValue",PinToolTip="Return Value\nBoolean\n\nReturns true if A is greater than B (A > B)",Direction="EGPD_Output",PinType.PinCategory="bool",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=0ADD760F647340E98762FC4EF7374255,PinName="ErrorTolerance",PinToolTip="Error Tolerance\n",PinType.PinCategory="",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=True,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
Begin Object Class=/Script/BlueprintGraph.K2Node_PromotableOperator Name="K2Node_PromotableOperator_3" ExportPath=/Script/BlueprintGraph.K2Node_PromotableOperator'"/Temp/Untitled_1.Untitled_1:PersistentLevel.Untitled.EventGraph.K2Node_PromotableOperator_3"'
"bIsPureFunc"=True
"FunctionReference"=(MemberParent=/Script/CoreUObject.Class'"/Script/Engine.KismetMathLibrary"',MemberName="Greater_TimespanTimespan")
"NodePosX"=-288
"NodeGuid"=F7FABC9C44966BAAC491D4AE6E588CCC
CustomProperties Pin (PinId=E5B7684F4812610A60F5E8A1217BD592,PinName="A",PinType.PinCategory="wildcard",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=62516570444A943984F804A683C737A1,PinName="B",PinType.PinCategory="wildcard",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=58F3E9EC42933068D0F9B493EB7C1F16,PinName="ReturnValue",Direction="EGPD_Output",PinType.PinCategory="bool",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
End Object
`,
size: [7.5, 4],
pins: 3,
delegate: false,
development: false,
additionalTest:
/** @param {NodeElement} node */
node => {
let pins = /** @type {PinElement[]} */(node.querySelectorAll("ueb-pin"))
for (const pin of pins) {
expect(pin.template.renderIcon().strings.join("").trim()).to.be.equal(SVGIcon.operationPin.strings.join("").trim())
}
}
},
{
name: "GreaterEqual",
name: "Greater Equal",
title: ">=",
value: String.raw`
Begin Object Class=/Script/BlueprintGraph.K2Node_PromotableOperator Name="K2Node_PromotableOperator_8" ExportPath=/Script/BlueprintGraph.K2Node_PromotableOperator'"/Temp/Untitled_1.Untitled_1:PersistentLevel.Untitled.EventGraph.K2Node_PromotableOperator_8"'
@@ -103,6 +137,14 @@ const tests = [
pins: 3,
delegate: false,
development: false,
additionalTest:
/** @param {NodeElement} node */
node => {
let pins = /** @type {PinElement[]} */(node.querySelectorAll("ueb-pin"))
for (const pin of pins) {
expect(pin.template.renderIcon().strings.join("").trim()).to.be.equal(SVGIcon.operationPin.strings.join("").trim())
}
}
},
{
name: "AND",
@@ -124,6 +166,14 @@ const tests = [
delegate: false,
development: false,
variadic: true,
additionalTest:
/** @param {NodeElement} node */
node => {
let pins = /** @type {PinElement[]} */(node.querySelectorAll("ueb-pin"))
for (const pin of pins) {
expect(pin.template.renderIcon().strings.join("").trim()).to.be.equal(SVGIcon.operationPin.strings.join("").trim())
}
}
},
{
name: "NAND",
@@ -145,6 +195,14 @@ const tests = [
delegate: false,
development: false,
variadic: true,
additionalTest:
/** @param {NodeElement} node */
node => {
let pins = /** @type {PinElement[]} */(node.querySelectorAll("ueb-pin"))
for (const pin of pins) {
expect(pin.template.renderIcon().strings.join("").trim()).to.be.equal(SVGIcon.operationPin.strings.join("").trim())
}
}
},
{
name: "Bitwise AND 1",
@@ -167,6 +225,14 @@ const tests = [
delegate: false,
development: false,
variadic: true,
additionalTest:
/** @param {NodeElement} node */
node => {
let pins = /** @type {PinElement[]} */(node.querySelectorAll("ueb-pin"))
for (const pin of pins) {
expect(pin.template.renderIcon().strings.join("").trim()).to.be.equal(SVGIcon.operationPin.strings.join("").trim())
}
}
},
{
name: "Bitwise AND 2",
@@ -189,6 +255,14 @@ const tests = [
delegate: false,
development: false,
variadic: true,
additionalTest:
/** @param {NodeElement} node */
node => {
let pins = /** @type {PinElement[]} */(node.querySelectorAll("ueb-pin"))
for (const pin of pins) {
expect(pin.template.renderIcon().strings.join("").trim()).to.be.equal(SVGIcon.operationPin.strings.join("").trim())
}
}
},
{
name: "Bitwise OR 1",
@@ -214,6 +288,14 @@ const tests = [
delegate: false,
development: false,
variadic: true,
additionalTest:
/** @param {NodeElement} node */
node => {
let pins = /** @type {PinElement[]} */(node.querySelectorAll("ueb-pin"))
for (const pin of pins) {
expect(pin.template.renderIcon().strings.join("").trim()).to.be.equal(SVGIcon.operationPin.strings.join("").trim())
}
}
},
{
name: "Bitwise OR 2",
@@ -237,6 +319,14 @@ const tests = [
delegate: false,
development: false,
variadic: true,
additionalTest:
/** @param {NodeElement} node */
node => {
let pins = /** @type {PinElement[]} */(node.querySelectorAll("ueb-pin"))
for (const pin of pins) {
expect(pin.template.renderIcon().strings.join("").trim()).to.be.equal(SVGIcon.operationPin.strings.join("").trim())
}
}
},
{
name: "Bitwise NOT 1",
@@ -258,6 +348,14 @@ const tests = [
delegate: false,
development: false,
variadic: false,
additionalTest:
/** @param {NodeElement} node */
node => {
let pins = /** @type {PinElement[]} */(node.querySelectorAll("ueb-pin"))
for (const pin of pins) {
expect(pin.template.renderIcon().strings.join("").trim()).to.be.equal(SVGIcon.operationPin.strings.join("").trim())
}
}
},
{
name: "Bitwise NOT 2",
@@ -279,6 +377,14 @@ const tests = [
delegate: false,
development: false,
variadic: false,
additionalTest:
/** @param {NodeElement} node */
node => {
let pins = /** @type {PinElement[]} */(node.querySelectorAll("ueb-pin"))
for (const pin of pins) {
expect(pin.template.renderIcon().strings.join("").trim()).to.be.equal(SVGIcon.operationPin.strings.join("").trim())
}
}
},
{
name: "Bitwise XOR 1",
@@ -301,6 +407,14 @@ const tests = [
delegate: false,
development: false,
variadic: false,
additionalTest:
/** @param {NodeElement} node */
node => {
let pins = /** @type {PinElement[]} */(node.querySelectorAll("ueb-pin"))
for (const pin of pins) {
expect(pin.template.renderIcon().strings.join("").trim()).to.be.equal(SVGIcon.operationPin.strings.join("").trim())
}
}
},
{
name: "Bitwise XOR 2",
@@ -322,6 +436,14 @@ const tests = [
delegate: false,
development: false,
variadic: false,
additionalTest:
/** @param {NodeElement} node */
node => {
let pins = /** @type {PinElement[]} */(node.querySelectorAll("ueb-pin"))
for (const pin of pins) {
expect(pin.template.renderIcon().strings.join("").trim()).to.be.equal(SVGIcon.operationPin.strings.join("").trim())
}
}
},
{
name: "SIN",
@@ -342,6 +464,72 @@ const tests = [
delegate: false,
development: false,
variadic: false,
additionalTest:
/** @param {NodeElement} node */
node => {
let pins = /** @type {PinElement[]} */(node.querySelectorAll("ueb-pin"))
for (const pin of pins) {
expect(pin.template.renderIcon().strings.join("").trim()).to.be.equal(SVGIcon.operationPin.strings.join("").trim())
}
}
},
{
name: "Not Equal",
title: "!=",
value: String.raw`
Begin Object Class=/Script/BlueprintGraph.K2Node_PromotableOperator Name="K2Node_PromotableOperator_0" ExportPath=/Script/BlueprintGraph.K2Node_PromotableOperator'"/Temp/Untitled_1.Untitled_1:PersistentLevel.Untitled.EventGraph.K2Node_PromotableOperator_0"'
"bIsPureFunc"=True
"FunctionReference"=(MemberParent=/Script/CoreUObject.Class'"/Script/GameplayTags.BlueprintGameplayTagLibrary"',MemberName="NotEqual_GameplayTagContainer")
"NodePosX"=-256
"NodeGuid"=29F5E14B4509543D59F652854F3B6AB6
CustomProperties Pin (PinId=815D7F344EC326D3E021F68BB4D9B3AD,PinName="A",PinToolTip="A\nWildcard",PinType.PinCategory="wildcard",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=3B762DCB4AA262D90BA202939BDB049D,PinName="B",PinToolTip="B\nWildcard",PinType.PinCategory="wildcard",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=6DACCB8046585A22DA055FA2ECE67712,PinName="ReturnValue",PinToolTip="Return Value\nBoolean\n\nReturns true if the values are not equal (A != B)",Direction="EGPD_Output",PinType.PinCategory="bool",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
End Object
`,
size: [9, 4],
pins: 3,
delegate: false,
development: false,
variadic: false,
additionalTest:
/** @param {NodeElement} node */
node => {
let pins = /** @type {PinElement[]} */(node.querySelectorAll("ueb-pin"))
for (const pin of pins) {
expect(pin.template.renderIcon().strings.join("").trim()).to.be.equal(SVGIcon.operationPin.strings.join("").trim())
}
}
},
{
name: "Equal",
title: "==",
value: String.raw`
Begin Object Class=/Script/BlueprintGraph.K2Node_PromotableOperator Name="K2Node_PromotableOperator_1" ExportPath=/Script/BlueprintGraph.K2Node_PromotableOperator'"/Temp/Untitled_1.Untitled_1:PersistentLevel.Untitled.EventGraph.K2Node_PromotableOperator_1"'
"bIsPureFunc"=True
"FunctionReference"=(MemberParent=/Script/CoreUObject.Class'"/Script/Engine.KismetMathLibrary"',MemberName="EqualEqual_ByteByte")
"NodePosX"=-256
"NodePosY"=128
"NodeGuid"=219043694FA6E83CD69DD791FB1C08AE
CustomProperties Pin (PinId=8E6EE9EB47FF4B99F5092CAA5DC364D2,PinName="A",PinToolTip="A\nByte",PinType.PinCategory="byte",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_ForEachElementInEnum_0 E892F26242AA3EDCB057699DC234F057,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=6A74B02D468CF910E233A48E38EDDDD8,PinName="B",PinToolTip="B\nByte",PinType.PinCategory="byte",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=1D70EDE14002E5290A451090FC8D747B,PinName="ReturnValue",PinToolTip="Return Value\nBoolean\n\nReturns true if A is equal to B (A == B)",Direction="EGPD_Output",PinType.PinCategory="bool",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=503CA95B4180C28504ECE5AE43FA118B,PinName="ErrorTolerance",PinToolTip="Error Tolerance\n",PinType.PinCategory="",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=True,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
End Object
`,
size: [10, 4],
pins: 3,
delegate: false,
development: false,
variadic: false,
additionalTest:
/** @param {NodeElement} node */
node => {
let pins = /** @type {PinElement[]} */(node.querySelectorAll("ueb-pin"))
for (const pin of pins) {
expect(pin.template.renderIcon().strings.join("").trim()).to.be.equal(SVGIcon.operationPin.strings.join("").trim())
}
}
},
]

View File

@@ -0,0 +1,94 @@
/// <reference types="cypress" />
import Configuration from "../../js/Configuration.js"
import generateNodeTests from "../fixtures/testUtilities.js"
import NodeElement from "../../js/element/NodeElement.js"
import PinElement from "../../js/element/PinElement.js"
import SVGIcon from "../../js/SVGIcon.js"
const tests = [
{
name: "Execute Blueprint",
value: String.raw`
Begin Object Class=/Script/PCGEditor.PCGEditorGraphNode Name="PCGEditorGraphNode_2" ExportPath=/Script/PCGEditor.PCGEditorGraphNode'"/Game/NewPCGGraph.NewPCGGraph:PCGEditorGraph_1.PCGEditorGraphNode_2"'
Begin Object Class=/Script/PCG.PCGNode Name="ExecuteBlueprint_7" ExportPath=/Script/PCG.PCGNode'"/Game/NewPCGGraph.NewPCGGraph:PCGEditorGraph_1.PCGEditorGraphNode_2.ExecuteBlueprint_7"'
Begin Object Class=/Script/PCG.PCGBlueprintSettings Name="PCGBlueprintSettings_0" ExportPath=/Script/PCG.PCGBlueprintSettings'"/Game/NewPCGGraph.NewPCGGraph:PCGEditorGraph_1.PCGEditorGraphNode_2.ExecuteBlueprint_7.PCGBlueprintSettings_0"'
End Object
Begin Object Class=/Script/PCG.PCGPin Name="PCGPin_0" ExportPath=/Script/PCG.PCGPin'"/Game/NewPCGGraph.NewPCGGraph:PCGEditorGraph_1.PCGEditorGraphNode_2.ExecuteBlueprint_7.PCGPin_0"'
End Object
Begin Object Class=/Script/PCG.PCGPin Name="PCGPin_1" ExportPath=/Script/PCG.PCGPin'"/Game/NewPCGGraph.NewPCGGraph:PCGEditorGraph_1.PCGEditorGraphNode_2.ExecuteBlueprint_7.PCGPin_1"'
End Object
Begin Object Class=/Script/PCG.PCGPin Name="PCGPin_2" ExportPath=/Script/PCG.PCGPin'"/Game/NewPCGGraph.NewPCGGraph:PCGEditorGraph_1.PCGEditorGraphNode_2.ExecuteBlueprint_7.PCGPin_2"'
End Object
Begin Object Class=/Script/PCG.PCGPin Name="PCGPin_3" ExportPath=/Script/PCG.PCGPin'"/Game/NewPCGGraph.NewPCGGraph:PCGEditorGraph_1.PCGEditorGraphNode_2.ExecuteBlueprint_7.PCGPin_3"'
End Object
End Object
Begin Object Name="ExecuteBlueprint_7" ExportPath=/Script/PCG.PCGNode'"/Game/NewPCGGraph.NewPCGGraph:PCGEditorGraph_1.PCGEditorGraphNode_2.ExecuteBlueprint_7"'
Begin Object Name="PCGBlueprintSettings_0" ExportPath=/Script/PCG.PCGBlueprintSettings'"/Game/NewPCGGraph.NewPCGGraph:PCGEditorGraph_1.PCGEditorGraphNode_2.ExecuteBlueprint_7.PCGBlueprintSettings_0"'
"Seed"=-1282097489
"bExposeToLibrary"=False
"CachedOverridableParams"(0)=(Label="Seed",PropertiesNames=("Seed"),PropertyClass=/Script/CoreUObject.Class'"/Script/PCG.PCGBlueprintSettings"')
End Object
Begin Object Name="PCGPin_0" ExportPath=/Script/PCG.PCGPin'"/Game/NewPCGGraph.NewPCGGraph:PCGEditorGraph_1.PCGEditorGraphNode_2.ExecuteBlueprint_7.PCGPin_0"'
"Node"=/Script/PCG.PCGNode'"PCGEditorGraphNode_2.ExecuteBlueprint_7"'
"Properties"=(Label="In")
End Object
Begin Object Name="PCGPin_1" ExportPath=/Script/PCG.PCGPin'"/Game/NewPCGGraph.NewPCGGraph:PCGEditorGraph_1.PCGEditorGraphNode_2.ExecuteBlueprint_7.PCGPin_1"'
"Node"=/Script/PCG.PCGNode'"PCGEditorGraphNode_2.ExecuteBlueprint_7"'
"Properties"=(Label="Overrides",AllowedTypes=Param,bAdvancedPin=True,Tooltip=NSLOCTEXT("PCGSettings", "GlobalParamPinTooltip", "Atribute Set containing multiple parameters to override. Names must match perfectly."))
End Object
Begin Object Name="PCGPin_2" ExportPath=/Script/PCG.PCGPin'"/Game/NewPCGGraph.NewPCGGraph:PCGEditorGraph_1.PCGEditorGraphNode_2.ExecuteBlueprint_7.PCGPin_2"'
"Node"=/Script/PCG.PCGNode'"PCGEditorGraphNode_2.ExecuteBlueprint_7"'
"Properties"=(Label="Seed",AllowedTypes=Param,bAllowMultipleData=False,bAllowMultipleConnections=False,bAdvancedPin=True,Tooltip=LOCGEN_FORMAT_ORDERED(NSLOCTEXT("PCGSettings", "OverridableParamPinTooltip", "{0}Attribute type is \"{1}\" and its exact name is \"{2}\""), "", "int32", "Seed"))
End Object
Begin Object Name="PCGPin_3" ExportPath=/Script/PCG.PCGPin'"/Game/NewPCGGraph.NewPCGGraph:PCGEditorGraph_1.PCGEditorGraphNode_2.ExecuteBlueprint_7.PCGPin_3"'
"Node"=/Script/PCG.PCGNode'"PCGEditorGraphNode_2.ExecuteBlueprint_7"'
"Properties"=(Label="Out",AllowedTypes=Spatial)
End Object
"PositionX"=768
"PositionY"=128
"SettingsInterface"=/Script/PCG.PCGBlueprintSettings'"PCGBlueprintSettings_0"'
"InputPins"(0)=/Script/PCG.PCGPin'"PCGPin_0"'
"InputPins"(1)=/Script/PCG.PCGPin'"PCGPin_1"'
"InputPins"(2)=/Script/PCG.PCGPin'"PCGPin_2"'
"OutputPins"(0)=/Script/PCG.PCGPin'"PCGPin_3"'
End Object
"PCGNode"=/Script/PCG.PCGNode'"ExecuteBlueprint_7"'
"NodePosX"=768
"NodePosY"=128
"AdvancedPinDisplay"=Shown
"bUserSetEnabledState"=True
"NodeGuid"=510EDA9C48C94C29D834BDBC2E6698A5
CustomProperties Pin (PinId=84EFEAC94F4D8F7B54DBA39777ACE90B,PinName="In",PinFriendlyName="In",PinType.PinCategory="",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=14D4F997473AFF411CEB30824798BF16,PinName="Overrides",PinFriendlyName="Overrides",PinType.PinCategory="Attribute Set",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=True,bOrphanedPin=False,)
CustomProperties Pin (PinId=B534894344C992A0A4DA798A15D1C438,PinName="Seed",PinFriendlyName="Seed",PinType.PinCategory="Attribute Set",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=True,bOrphanedPin=False,)
CustomProperties Pin (PinId=A6E46EE44272FFAB9F2E1B944ADC28CB,PinName="Out",PinFriendlyName="Out",Direction="EGPD_Output",PinType.PinCategory="Spatial Data",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
End Object
`,
size: [10, 9],
color: Configuration.nodeColors.darkBlue,
pins: 4,
pinNames: ["In", "Overrides", "Seed", "Out"],
delegate: false,
development: false,
additionalTest:
/** @param {NodeElement} node */
node => {
let pins = /** @type {PinElement[]} */(node.querySelectorAll("ueb-pin"))
const inPin = pins.find(pin => pin.innerText === "In")
const overridesPin = pins.find(pin => pin.innerText === "Overrides")
const seedPin = pins.find(pin => pin.innerText === "Seed")
const out = pins.find(pin => pin.innerText === "Out")
expect(inPin).to.not.be.null
expect(inPin.template.renderIcon()).to.be.equal(SVGIcon.pcgStackPin)
expect(overridesPin).to.not.be.null
expect(overridesPin.template.renderIcon()).to.be.equal(SVGIcon.pcgParamPin)
expect(seedPin).to.not.be.null
expect(seedPin.template.renderIcon()).to.be.equal(SVGIcon.pcgParamPin)
expect(out).to.not.be.null
expect(out.template.renderIcon()).to.be.equal(SVGIcon.pcgSpatialPin)
}
},
]
generateNodeTests(tests)

View File

@@ -49,8 +49,8 @@ ueb-blueprint svg {
margin-left: auto;
padding: 5px;
color: #2b2b2b;
/* 1.53846 is to get an effective font size of 20px from --ueb-font-size which is 13 px */
font-size: calc(1.53846 * var(--ueb-font-size));
/* 160% is to get an effective font size of 20px from --ueb-font-size which is 12.5 px by default */
font-size: 160%;
font-weight: bold;
letter-spacing: -1px;
}
@@ -315,7 +315,6 @@ ueb-node[data-selected=true] > .ueb-node-border {
}
.ueb-node-outputs ueb-pin[data-type=exec] .ueb-pin-wrapper {
margin-right: -3px;
min-height: 26px;
}
@@ -343,8 +342,8 @@ ueb-blueprint[data-scrolling=false][data-selecting=false] ueb-node.ueb-node-styl
.ueb-node-top {
grid-area: top;
color: #d0d0d0;
/* 1.030769 is to get an effective font size of 13.4px from --ueb-font-size which is 13 px */
font-size: calc(1.030769 * var(--ueb-font-size));
/* 112% is to get an effective font size of 14px from --ueb-font-size which is 12.5 px by default */
font-size: 112%;
font-weight: bold;
line-height: 120%;
white-space: nowrap;
@@ -423,8 +422,8 @@ ueb-node[data-pure-function=true] .ueb-node-name-symbol {
.ueb-node-subtitle-text {
padding-top: 1px;
padding-right: 5px;
/* 0.946154 is to get an effective font size of 12.3px from --ueb-font-size which is 13 px */
font-size: calc(0.946154 * var(--ueb-font-size));
/* Reset font size set by the parent */
font-size: var(--ueb-font-size);
font-weight: 100;
font-style: italic;
color: #a9b78f;
@@ -435,8 +434,8 @@ ueb-node[data-pure-function=true] .ueb-node-name-symbol {
}
ueb-node.ueb-node-has-inputs .ueb-node-inputs {
padding-right: 20px;
padding-left: 5px;
padding-right: 15px;
padding-left: 6px;
}
.ueb-node-outputs {
@@ -445,7 +444,7 @@ ueb-node.ueb-node-has-inputs .ueb-node-inputs {
.ueb-node-outputs,
.ueb-node-variadic {
padding-right: 8px;
padding-right: 6px;
}
.ueb-node-variadic {
@@ -551,8 +550,8 @@ ueb-node.ueb-node-style-operation .ueb-node-top {
align-self: center;
justify-self: center;
padding: 0;
/* 2.15385 is to get an effective font size of 28px from --ueb-font-size which is 13 px */
font-size: calc(2.15385 * var(--ueb-font-size));
/* 224% is to get an effective font size of 28px from --ueb-font-size which is 12.5 px by default */
font-size: 224%;
font-stretch: condensed;
font-weight: bold;
line-height: 100%;
@@ -604,8 +603,8 @@ ueb-node.ueb-node-style-comment .ueb-node-top {
border-radius: 0;
background: rgb(var(--ueb-node-color));
color: white;
/* 1.84615 is to get an effective font size of 24px from --ueb-font-size which is 13 px */
font-size: calc(1.84615 * var(--ueb-font-size));
/* 192% is to get an effective font size of 24px from --ueb-font-size which is 12.5 px */
font-size: 192%;
text-shadow: 2px 1px 1px #444, 0 0 2px #bbb;
line-height: 1.22;
z-index: 1;
@@ -665,7 +664,7 @@ ueb-node[data-advanced-display=Hidden] ueb-pin[data-advanced-view=true][data-lin
.ueb-pin-wrapper {
display: inline-flex;
box-sizing: border-box;
padding: 3px 5px;
padding: 3px 6px;
min-height: 24px;
align-items: center;
}
@@ -700,8 +699,6 @@ ueb-blueprint[data-scrolling=false][data-selecting=false] .ueb-pin-wrapper:hover
.ueb-pin-icon {
color: var(--ueb-pin-color);
width: 12px;
height: 12px;
text-align: left;
}
@@ -715,7 +712,7 @@ ueb-pin[data-connectable=false] .ueb-pin-icon {
}
.ueb-node-inputs .ueb-pin-icon {
margin-right: 10px;
margin-right: 6px;
}
.ueb-node-outputs .ueb-pin-icon {
@@ -723,7 +720,7 @@ ueb-pin[data-connectable=false] .ueb-pin-icon {
}
.ueb-pin-icon > svg {
vertical-align: top;
display: block;
}
ueb-pin[data-direction=output] .ueb-pin-reflect-output {
@@ -759,10 +756,6 @@ ueb-pin.ueb-node-variadic-default::before {
background: linear-gradient(90deg, transparent 0, #404240 6px, #404240 calc(100% - 6px), transparent 100%);
}
.ueb-pin-name {
letter-spacing: -0.25px;
}
.ueb-zoom--6 .ueb-pin-content {
visibility: hidden;
}
@@ -836,8 +829,8 @@ ueb-pin[data-type="/Script/CoreUObject.LinearColor"] .ueb-pin-input {
min-width: 10px;
max-width: 400px;
max-height: 16em;
/* 0.96923 is to get an effective font size of 12.6px from --ueb-font-size which is 13 px */
font-size: calc(0.96923 * var(--ueb-font-size));
/* 108% is to get an effective font size of 13.5px from --ueb-font-size which is 12.5 px by default */
font-size: 108%;
white-space: nowrap;
background: none;
color: inherit;

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

64
dist/ueblueprint.js vendored
View File

@@ -58,7 +58,7 @@ class Configuration {
begin: "blueprint-focus",
end: "blueprint-unfocus",
}
static fontSize = i$3`13px`
static fontSize = i$3`12.5px`
static gridAxisLineColor = i$3`black`
static gridExpandThreshold = 0.25 // remaining size factor threshold to cause an expansion event
static gridLineColor = i$3`#353535`
@@ -113,6 +113,7 @@ class Configuration {
ambientSound: "/Script/Engine.AmbientSound",
asyncAction: "/Script/BlueprintGraph.K2Node_AsyncAction",
blueprint: "/Script/Engine.Blueprint",
blueprintGameplayTagLibrary: "/Script/GameplayTags.BlueprintGameplayTagLibrary",
blueprintMapLibrary: "/Script/Engine.BlueprintMapLibrary",
blueprintSetLibrary: "/Script/Engine.BlueprintSetLibrary",
callArrayFunction: "/Script/BlueprintGraph.K2Node_CallArrayFunction",
@@ -885,7 +886,7 @@ class Utility {
: new /** @type {EntityConstructor} */(targetType)(value);
}
if (value instanceof Boolean || value instanceof Number || value instanceof String) {
value = value.valueOf(); // Get the relative primitive value
value = /** @type {AnyValue} */(value.valueOf()); // Get the relative primitive value
}
return value
}
@@ -1220,7 +1221,7 @@ class IEntity extends Serializable {
.getSerializer(defaultType)
.read(/** @type {String} */(value));
}
assignAttribute(Utility.sanitize(value, /** @type {AnyConstructor<*>} */(defaultType)));
assignAttribute(Utility.sanitize(value, /** @type {SimpleValueType<SimpleValue>} */(defaultType)));
continue // We have a value, need nothing more
}
if (Object.hasOwn(attribute, "default")) { // Accept also explicit undefined
@@ -1576,7 +1577,7 @@ class Grammar {
/**
* @template {IEntity} T
* @param {AnyConstructor<T> & EntityConstructor} entityType
* @param {(new (...args: any) => T) & EntityConstructor} entityType
* @param {Boolean | Number} acceptUnknownKeys Number to specify the limit or true, to let it be a reasonable value
* @returns {Parsimmon.Parser<T>}
*/
@@ -3182,8 +3183,8 @@ class PinEntity extends IEntity {
class SVGIcon {
static array = x`
<svg viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
static arrayPin = x`
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M4 0H0V4H4V0Z" fill="currentColor" />
<path d="M10 0H6V4H10V0Z" fill="currentColor" />
<path d="M16 0H12V4H16V0Z" fill="currentColor" />
@@ -3284,7 +3285,7 @@ class SVGIcon {
`
static execPin = x`
<svg viewBox="-2 0 16 16" xmlns="http://www.w3.org/2000/svg">
<svg width="15" height="15" viewBox="-2 0 16 16" xmlns="http://www.w3.org/2000/svg">
<path class="ueb-pin-tofill" stroke-width="1.25" stroke="white" fill="none"
d="M 2 1 a 2 2 0 0 0 -2 2 v 10 a 2 2 0 0 0 2 2 h 4 a 2 2 0 0 0 1.519 -0.698 l 4.843 -5.651 a 1 1 0 0 0 0 -1.302 L 7.52 1.7 a 2 2 0 0 0 -1.519 -0.698 z" />
</svg>
@@ -3331,7 +3332,7 @@ class SVGIcon {
`
static genericPin = x`
<svg viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg">
<svg width="16" height="12" viewBox="0 0 42 32" xmlns="http://www.w3.org/2000/svg">
<circle class="ueb-pin-tofill" cx="16" cy="16" r="13" fill="black" stroke="currentColor" stroke-width="5" />
<path fill="currentColor" d="M 34 6 L 34 26 L 42 16 Z" />
</svg>
@@ -3371,7 +3372,7 @@ class SVGIcon {
</svg>
`
static map = x`
static mapPin = x`
<svg viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M4 0H0V4H4V0Z" fill="currentColor" />
<path d="M4 6H0V10H4V6Z" fill="currentColor" />
@@ -3445,8 +3446,15 @@ class SVGIcon {
</svg>
`
static pcgPinStack = x`
<svg version="1.1" viewBox="6 8 20 20" xmlns="http://www.w3.org/2000/svg">
static operationPin = x`
<svg width="14" height="14" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg">
<circle class="ueb-pin-tostroke" cx="16" cy="16" r="14" stroke="currentColor" stroke-width="4" />
<circle cx="16" cy="16" r="9.5" fill="#817a7a" />
</svg>
`
static pcgStackPin = x`
<svg width="18" height="22" viewBox="4 0 28 36" xmlns="http://www.w3.org/2000/svg">
<path stroke="black" stroke-width="1" fill="rgba(var(--ueb-pin-color-rgb), 0.5)" d="M25.8,32.2V17.5c0-1.7,1.3-3.1,3-3.1s3,1.3,3,3.1v14.7c0,1.8-1.3,3.2-3,3.2C27,35.5,25.8,34,25.8,32.2z" />
<path stroke="black" stroke-width="1" fill="rgba(var(--ueb-pin-color-rgb), 0.75)" d="M18.8,30.1V11.8c0-2.4,1.8-4.3,4-4.3s4,1.9,4,4.3v18.4c0,2.4-1.8,4.3-4,4.3C20.5,34.5,18.8,32.5,18.8,30.1z" />
<path stroke="black" stroke-width="1" fill="currentColor" d="M21.3,6.4v21.3c0,3.2-2.4,5.8-5.5,5.8s-5.5-2.5-5.5-5.8V6.3c0-3.2,2.4-5.8,5.5-5.8C18.8,0.5,21.2,3,21.3,6.4z" />
@@ -3457,7 +3465,7 @@ class SVGIcon {
`
static pcgPin = x`
<svg class="ueb-pin-reflect-output" version="1.1" viewBox="8 8 20 20" xmlns="http://www.w3.org/2000/svg">
<svg class="ueb-pin-reflect-output" width="12" height="20" viewBox="8 0 20 36" xmlns="http://www.w3.org/2000/svg">
<path stroke="black" stroke-width="1" fill="currentColor" d="M21.2,34.5c-3.1,0-5.5-2.6-5.5-5.8V7.3c0-3.3,2.4-5.8,5.5-5.8s5.5,2.6,5.5,5.8v21.3C26.8,31.9,24.3,34.5,21.2,34.5z" />
<circle class="ueb-pin-tofill ueb-pin-tostroke" stroke="currentColor" stroke-width="1" cx="15.8" cy="10" r="6" />
<circle class="ueb-pin-tofill ueb-pin-tostroke" stroke="currentColor" stroke-width="1" cx="15.8" cy="18" r="6" />
@@ -3465,15 +3473,15 @@ class SVGIcon {
</svg>
`
static pcgPinParam = x`
<svg class="ueb-pin-reflect-output" version="1.1" viewBox="8 8 20 20" xmlns="http://www.w3.org/2000/svg">
static pcgParamPin = x`
<svg class="ueb-pin-reflect-output" width="18" height="12" viewBox="8 8 19 21" xmlns="http://www.w3.org/2000/svg">
<path class="ueb-pin-tofill" stroke="currentcolor" stroke-width="1" d="M8,18c-2.5,0-4.5-2-4.5-4.5S5.5,9,8,9h20c2.5,0,4.5,2,4.5,4.5S30.5,18,28,18H8z" />
<path fill="currentColor" d="M31,27.5H13c-0.5,0-1-0.4-1-1v-4c0-0.5,0.4-1,1-1h18c0.5,0,1,0.4,1,1v4C32,27.1,31.6,27.5,31,27.5z" />
</svg>
`
static pcgSpatialPin = x`
<svg version="1.1" viewBox="8 8 20 20" xmlns="http://www.w3.org/2000/svg">
<svg width="14" height="16" viewBox="5 4 28 28" xmlns="http://www.w3.org/2000/svg">
<path stroke="#ffffff" stroke-width="1" fill="#808080" d="M20.5,33h-10c-2.8,0-5-2.2-5-5V8c0-2.8,2.2-5,5-5h10c2.8,0,5,2.2,5,5v20C25.5,30.8,23.3,33,20.5,33z" />
<circle class="ueb-pin-tofill" stroke="#ffffff" stroke-width="1" fill="#202020" cx="23.7" cy="18" r="10" />
</svg>
@@ -3493,7 +3501,7 @@ class SVGIcon {
`
static referencePin = x`
<svg viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg">
<svg width="12" height="12" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg">
<polygon class="ueb-pin-tofill" points="4 16 16 4 28 16 16 28" stroke="currentColor" stroke-width="5" />
</svg>
`
@@ -3505,8 +3513,8 @@ class SVGIcon {
</svg>
`
static set = x`
<svg viewBox="2 2 12 12" fill="none" xmlns="http://www.w3.org/2000/svg">
static setPin = x`
<svg width="16" height="16" viewBox="2 2 12 12" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M1 7.99956V6.99956C1.62451 6.89501 2.23976 6.7412 2.84 6.53956C3.02865 6.44859 3.18802 6.30655 3.3 6.12956C3.44478 5.91383 3.53723 5.6673 3.57 5.40956C3.6183 5.04164 3.63836 4.67055 3.63 4.29956C3.60615 3.68664 3.64974 3.07296 3.76 2.46956C3.82982 2.152 3.99359 1.86279 4.23 1.63956C4.51974 1.39713 4.86221 1.22589 5.23 1.13956C5.68612 1.03782 6.15275 0.990826 6.62 0.999563H7V1.99956C6.69952 2.01634 6.4103 2.11967 6.16722 2.2971C5.92414 2.47453 5.73757 2.71849 5.63 2.99956C5.5431 3.18346 5.5052 3.3867 5.52 3.58956C5.52 3.86956 5.52 4.40956 5.46 5.19956C5.44584 5.56977 5.38194 5.9364 5.27 6.28956C5.18779 6.5495 5.05527 6.79074 4.88 6.99956C4.62654 7.36597 4.33121 7.70157 4 7.99956" fill="currentColor" />
<path d="M4 7.99951C4.33723 8.31397 4.63295 8.67019 4.88 9.05951C5.05095 9.2601 5.18319 9.49067 5.27 9.73951C5.38194 10.0927 5.44584 10.4593 5.46 10.8295C5.5 11.6228 5.52 12.1628 5.52 12.4495C5.5061 12.6523 5.54395 12.8553 5.63 13.0395C5.74563 13.3117 5.93533 13.546 6.17752 13.7157C6.41972 13.8854 6.70468 13.9837 7 13.9995V14.9995H6.62C6.15021 15.0156 5.68019 14.9753 5.22 14.8795C4.85378 14.7889 4.51224 14.6181 4.22 14.3795C3.98551 14.1548 3.8221 13.8662 3.75 13.5495C3.64077 12.946 3.59718 12.3324 3.62 11.7195C3.63014 11.3418 3.61007 10.964 3.56 10.5895C3.52723 10.3318 3.43478 10.0852 3.29 9.86951C3.17802 9.69252 3.01865 9.55048 2.83 9.45951C2.23302 9.25838 1.62113 9.10457 1 8.99951V7.99951" fill="currentColor" />
<path d="M12 7.99955C11.6688 7.70156 11.3735 7.36596 11.12 6.99955C10.947 6.79667 10.8146 6.56242 10.73 6.30955C10.6181 5.95638 10.5542 5.58976 10.54 5.21954C10.54 4.42954 10.48 3.88955 10.48 3.60955C10.4983 3.40004 10.4604 3.18944 10.37 2.99955C10.2624 2.71847 10.0759 2.47452 9.83278 2.29708C9.5897 2.11965 9.30048 2.01632 9 1.99955V0.999545H9.38C9.84979 0.983442 10.3198 1.02373 10.78 1.11955C11.1478 1.20587 11.4903 1.37711 11.78 1.61955C12.0164 1.84278 12.1802 2.13198 12.25 2.44955C12.3603 3.05294 12.4039 3.66662 12.38 4.27955C12.3706 4.6572 12.3907 5.03501 12.44 5.40954C12.4728 5.66728 12.5652 5.91382 12.71 6.12955C12.822 6.30653 12.9813 6.44858 13.17 6.53955C13.767 6.74067 14.3789 6.89448 15 6.99955V7.99955" fill="currentColor" />
@@ -4568,8 +4576,9 @@ class ObjectEntity extends IEntity {
)
}
switch (memberParent) {
case Configuration.paths.slateBlueprintLibrary:
case Configuration.paths.blueprintGameplayTagLibrary:
case Configuration.paths.kismetMathLibrary:
case Configuration.paths.slateBlueprintLibrary:
case Configuration.paths.timeManagementBlueprintLibrary:
const leadingLetter = memberName.match(/[BF]([A-Z]\w+)/);
if (leadingLetter) {
@@ -8336,7 +8345,7 @@ class PinTemplate extends ITemplate {
return SVGIcon.pcgPin
case "Param":
case "Param[]":
return SVGIcon.pcgPinParam
return SVGIcon.pcgParamPin
case "Spatial":
case "Spatial[]":
return SVGIcon.pcgSpatialPin
@@ -8350,17 +8359,20 @@ class PinTemplate extends ITemplate {
case "Point":
case "Surface":
case "Volume":
return SVGIcon.pcgPinStack
return SVGIcon.pcgStackPin
}
}
switch (this.element.entity.PinType.ContainerType?.toString()) {
case "Array": return SVGIcon.array
case "Set": return SVGIcon.set
case "Map": return SVGIcon.map
switch (this.element.entity.PinType?.ContainerType?.toString()) {
case "Array": return SVGIcon.arrayPin
case "Set": return SVGIcon.setPin
case "Map": return SVGIcon.mapPin
}
if (this.element.entity.PinType.PinCategory.toLocaleLowerCase() === "delegate") {
if (this.element.entity.PinType?.PinCategory?.toLocaleLowerCase() === "delegate") {
return SVGIcon.delegate
}
if (this.element.nodeElement?.template instanceof VariableOperationNodeTemplate) {
return SVGIcon.operationPin
}
return SVGIcon.genericPin
}

File diff suppressed because one or more lines are too long

View File

@@ -34,7 +34,7 @@ export default class Configuration {
begin: "blueprint-focus",
end: "blueprint-unfocus",
}
static fontSize = css`13px`
static fontSize = css`12.5px`
static gridAxisLineColor = css`black`
static gridExpandThreshold = 0.25 // remaining size factor threshold to cause an expansion event
static gridLineColor = css`#353535`
@@ -89,6 +89,7 @@ export default class Configuration {
ambientSound: "/Script/Engine.AmbientSound",
asyncAction: "/Script/BlueprintGraph.K2Node_AsyncAction",
blueprint: "/Script/Engine.Blueprint",
blueprintGameplayTagLibrary: "/Script/GameplayTags.BlueprintGameplayTagLibrary",
blueprintMapLibrary: "/Script/Engine.BlueprintMapLibrary",
blueprintSetLibrary: "/Script/Engine.BlueprintSetLibrary",
callArrayFunction: "/Script/BlueprintGraph.K2Node_CallArrayFunction",

View File

@@ -2,8 +2,8 @@ import { html } from "lit"
export default class SVGIcon {
static array = html`
<svg viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
static arrayPin = html`
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M4 0H0V4H4V0Z" fill="currentColor" />
<path d="M10 0H6V4H10V0Z" fill="currentColor" />
<path d="M16 0H12V4H16V0Z" fill="currentColor" />
@@ -104,7 +104,7 @@ export default class SVGIcon {
`
static execPin = html`
<svg viewBox="-2 0 16 16" xmlns="http://www.w3.org/2000/svg">
<svg width="15" height="15" viewBox="-2 0 16 16" xmlns="http://www.w3.org/2000/svg">
<path class="ueb-pin-tofill" stroke-width="1.25" stroke="white" fill="none"
d="M 2 1 a 2 2 0 0 0 -2 2 v 10 a 2 2 0 0 0 2 2 h 4 a 2 2 0 0 0 1.519 -0.698 l 4.843 -5.651 a 1 1 0 0 0 0 -1.302 L 7.52 1.7 a 2 2 0 0 0 -1.519 -0.698 z" />
</svg>
@@ -151,7 +151,7 @@ export default class SVGIcon {
`
static genericPin = html`
<svg viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg">
<svg width="16" height="12" viewBox="0 0 42 32" xmlns="http://www.w3.org/2000/svg">
<circle class="ueb-pin-tofill" cx="16" cy="16" r="13" fill="black" stroke="currentColor" stroke-width="5" />
<path fill="currentColor" d="M 34 6 L 34 26 L 42 16 Z" />
</svg>
@@ -191,7 +191,7 @@ export default class SVGIcon {
</svg>
`
static map = html`
static mapPin = html`
<svg viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M4 0H0V4H4V0Z" fill="currentColor" />
<path d="M4 6H0V10H4V6Z" fill="currentColor" />
@@ -265,8 +265,15 @@ export default class SVGIcon {
</svg>
`
static pcgPinStack = html`
<svg version="1.1" viewBox="6 8 20 20" xmlns="http://www.w3.org/2000/svg">
static operationPin = html`
<svg width="14" height="14" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg">
<circle class="ueb-pin-tostroke" cx="16" cy="16" r="14" stroke="currentColor" stroke-width="4" />
<circle cx="16" cy="16" r="9.5" fill="#817a7a" />
</svg>
`
static pcgStackPin = html`
<svg width="18" height="22" viewBox="4 0 28 36" xmlns="http://www.w3.org/2000/svg">
<path stroke="black" stroke-width="1" fill="rgba(var(--ueb-pin-color-rgb), 0.5)" d="M25.8,32.2V17.5c0-1.7,1.3-3.1,3-3.1s3,1.3,3,3.1v14.7c0,1.8-1.3,3.2-3,3.2C27,35.5,25.8,34,25.8,32.2z" />
<path stroke="black" stroke-width="1" fill="rgba(var(--ueb-pin-color-rgb), 0.75)" d="M18.8,30.1V11.8c0-2.4,1.8-4.3,4-4.3s4,1.9,4,4.3v18.4c0,2.4-1.8,4.3-4,4.3C20.5,34.5,18.8,32.5,18.8,30.1z" />
<path stroke="black" stroke-width="1" fill="currentColor" d="M21.3,6.4v21.3c0,3.2-2.4,5.8-5.5,5.8s-5.5-2.5-5.5-5.8V6.3c0-3.2,2.4-5.8,5.5-5.8C18.8,0.5,21.2,3,21.3,6.4z" />
@@ -277,7 +284,7 @@ export default class SVGIcon {
`
static pcgPin = html`
<svg class="ueb-pin-reflect-output" version="1.1" viewBox="8 8 20 20" xmlns="http://www.w3.org/2000/svg">
<svg class="ueb-pin-reflect-output" width="12" height="20" viewBox="8 0 20 36" xmlns="http://www.w3.org/2000/svg">
<path stroke="black" stroke-width="1" fill="currentColor" d="M21.2,34.5c-3.1,0-5.5-2.6-5.5-5.8V7.3c0-3.3,2.4-5.8,5.5-5.8s5.5,2.6,5.5,5.8v21.3C26.8,31.9,24.3,34.5,21.2,34.5z" />
<circle class="ueb-pin-tofill ueb-pin-tostroke" stroke="currentColor" stroke-width="1" cx="15.8" cy="10" r="6" />
<circle class="ueb-pin-tofill ueb-pin-tostroke" stroke="currentColor" stroke-width="1" cx="15.8" cy="18" r="6" />
@@ -285,15 +292,15 @@ export default class SVGIcon {
</svg>
`
static pcgPinParam = html`
<svg class="ueb-pin-reflect-output" version="1.1" viewBox="8 8 20 20" xmlns="http://www.w3.org/2000/svg">
static pcgParamPin = html`
<svg class="ueb-pin-reflect-output" width="18" height="12" viewBox="8 8 19 21" xmlns="http://www.w3.org/2000/svg">
<path class="ueb-pin-tofill" stroke="currentcolor" stroke-width="1" d="M8,18c-2.5,0-4.5-2-4.5-4.5S5.5,9,8,9h20c2.5,0,4.5,2,4.5,4.5S30.5,18,28,18H8z" />
<path fill="currentColor" d="M31,27.5H13c-0.5,0-1-0.4-1-1v-4c0-0.5,0.4-1,1-1h18c0.5,0,1,0.4,1,1v4C32,27.1,31.6,27.5,31,27.5z" />
</svg>
`
static pcgSpatialPin = html`
<svg version="1.1" viewBox="8 8 20 20" xmlns="http://www.w3.org/2000/svg">
<svg width="14" height="16" viewBox="5 4 28 28" xmlns="http://www.w3.org/2000/svg">
<path stroke="#ffffff" stroke-width="1" fill="#808080" d="M20.5,33h-10c-2.8,0-5-2.2-5-5V8c0-2.8,2.2-5,5-5h10c2.8,0,5,2.2,5,5v20C25.5,30.8,23.3,33,20.5,33z" />
<circle class="ueb-pin-tofill" stroke="#ffffff" stroke-width="1" fill="#202020" cx="23.7" cy="18" r="10" />
</svg>
@@ -313,7 +320,7 @@ export default class SVGIcon {
`
static referencePin = html`
<svg viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg">
<svg width="12" height="12" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg">
<polygon class="ueb-pin-tofill" points="4 16 16 4 28 16 16 28" stroke="currentColor" stroke-width="5" />
</svg>
`
@@ -325,8 +332,8 @@ export default class SVGIcon {
</svg>
`
static set = html`
<svg viewBox="2 2 12 12" fill="none" xmlns="http://www.w3.org/2000/svg">
static setPin = html`
<svg width="16" height="16" viewBox="2 2 12 12" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M1 7.99956V6.99956C1.62451 6.89501 2.23976 6.7412 2.84 6.53956C3.02865 6.44859 3.18802 6.30655 3.3 6.12956C3.44478 5.91383 3.53723 5.6673 3.57 5.40956C3.6183 5.04164 3.63836 4.67055 3.63 4.29956C3.60615 3.68664 3.64974 3.07296 3.76 2.46956C3.82982 2.152 3.99359 1.86279 4.23 1.63956C4.51974 1.39713 4.86221 1.22589 5.23 1.13956C5.68612 1.03782 6.15275 0.990826 6.62 0.999563H7V1.99956C6.69952 2.01634 6.4103 2.11967 6.16722 2.2971C5.92414 2.47453 5.73757 2.71849 5.63 2.99956C5.5431 3.18346 5.5052 3.3867 5.52 3.58956C5.52 3.86956 5.52 4.40956 5.46 5.19956C5.44584 5.56977 5.38194 5.9364 5.27 6.28956C5.18779 6.5495 5.05527 6.79074 4.88 6.99956C4.62654 7.36597 4.33121 7.70157 4 7.99956" fill="currentColor" />
<path d="M4 7.99951C4.33723 8.31397 4.63295 8.67019 4.88 9.05951C5.05095 9.2601 5.18319 9.49067 5.27 9.73951C5.38194 10.0927 5.44584 10.4593 5.46 10.8295C5.5 11.6228 5.52 12.1628 5.52 12.4495C5.5061 12.6523 5.54395 12.8553 5.63 13.0395C5.74563 13.3117 5.93533 13.546 6.17752 13.7157C6.41972 13.8854 6.70468 13.9837 7 13.9995V14.9995H6.62C6.15021 15.0156 5.68019 14.9753 5.22 14.8795C4.85378 14.7889 4.51224 14.6181 4.22 14.3795C3.98551 14.1548 3.8221 13.8662 3.75 13.5495C3.64077 12.946 3.59718 12.3324 3.62 11.7195C3.63014 11.3418 3.61007 10.964 3.56 10.5895C3.52723 10.3318 3.43478 10.0852 3.29 9.86951C3.17802 9.69252 3.01865 9.55048 2.83 9.45951C2.23302 9.25838 1.62113 9.10457 1 8.99951V7.99951" fill="currentColor" />
<path d="M12 7.99955C11.6688 7.70156 11.3735 7.36596 11.12 6.99955C10.947 6.79667 10.8146 6.56242 10.73 6.30955C10.6181 5.95638 10.5542 5.58976 10.54 5.21954C10.54 4.42954 10.48 3.88955 10.48 3.60955C10.4983 3.40004 10.4604 3.18944 10.37 2.99955C10.2624 2.71847 10.0759 2.47452 9.83278 2.29708C9.5897 2.11965 9.30048 2.01632 9 1.99955V0.999545H9.38C9.84979 0.983442 10.3198 1.02373 10.78 1.11955C11.1478 1.20587 11.4903 1.37711 11.78 1.61955C12.0164 1.84278 12.1802 2.13198 12.25 2.44955C12.3603 3.05294 12.4039 3.66662 12.38 4.27955C12.3706 4.6572 12.3907 5.03501 12.44 5.40954C12.4728 5.66728 12.5652 5.91382 12.71 6.12955C12.822 6.30653 12.9813 6.44858 13.17 6.53955C13.767 6.74067 14.3789 6.89448 15 6.99955V7.99955" fill="currentColor" />

View File

@@ -128,7 +128,7 @@ export default class IEntity extends Serializable {
.getSerializer(defaultType)
.read(/** @type {String} */(value))
}
assignAttribute(Utility.sanitize(value, /** @type {AnyConstructor<*>} */(defaultType)))
assignAttribute(Utility.sanitize(value, /** @type {SimpleValueType<SimpleValue>} */(defaultType)))
continue // We have a value, need nothing more
}
if (Object.hasOwn(attribute, "default")) { // Accept also explicit undefined

View File

@@ -941,8 +941,9 @@ export default class ObjectEntity extends IEntity {
)
}
switch (memberParent) {
case Configuration.paths.slateBlueprintLibrary:
case Configuration.paths.blueprintGameplayTagLibrary:
case Configuration.paths.kismetMathLibrary:
case Configuration.paths.slateBlueprintLibrary:
case Configuration.paths.timeManagementBlueprintLibrary:
const leadingLetter = memberName.match(/[BF]([A-Z]\w+)/)
if (leadingLetter) {

View File

@@ -91,7 +91,7 @@ export default class PinTemplate extends ITemplate {
return SVGIcon.pcgPin
case "Param":
case "Param[]":
return SVGIcon.pcgPinParam
return SVGIcon.pcgParamPin
case "Spatial":
case "Spatial[]":
return SVGIcon.pcgSpatialPin
@@ -105,17 +105,20 @@ export default class PinTemplate extends ITemplate {
case "Point":
case "Surface":
case "Volume":
return SVGIcon.pcgPinStack
return SVGIcon.pcgStackPin
}
}
switch (this.element.entity.PinType.ContainerType?.toString()) {
case "Array": return SVGIcon.array
case "Set": return SVGIcon.set
case "Map": return SVGIcon.map
switch (this.element.entity.PinType?.ContainerType?.toString()) {
case "Array": return SVGIcon.arrayPin
case "Set": return SVGIcon.setPin
case "Map": return SVGIcon.mapPin
}
if (this.element.entity.PinType.PinCategory.toLocaleLowerCase() === "delegate") {
if (this.element.entity.PinType?.PinCategory?.toLocaleLowerCase() === "delegate") {
return SVGIcon.delegate
}
if (this.element.nodeElement?.template instanceof VariableOperationNodeTemplate) {
return SVGIcon.operationPin
}
return SVGIcon.genericPin
}

View File

@@ -53,8 +53,8 @@ ueb-blueprint svg {
margin-left: auto;
padding: 5px;
color: #2b2b2b;
/* 1.53846 is to get an effective font size of 20px from --ueb-font-size which is 13 px */
font-size: calc(1.53846 * var(--ueb-font-size));
/* 160% is to get an effective font size of 20px from --ueb-font-size which is 12.5 px by default */
font-size: 160%;
font-weight: bold;
letter-spacing: -1px;
}

View File

@@ -72,7 +72,6 @@ ueb-node[data-selected="true"]>.ueb-node-border {
}
.ueb-node-outputs ueb-pin[data-type="exec"] .ueb-pin-wrapper {
margin-right: -3px;
min-height: 26px;
}
@@ -100,8 +99,8 @@ ueb-blueprint[data-scrolling="false"][data-selecting="false"] ueb-node.ueb-node-
.ueb-node-top {
grid-area: top;
color: #d0d0d0;
/* 1.030769 is to get an effective font size of 13.4px from --ueb-font-size which is 13 px */
font-size: calc(1.030769 * var(--ueb-font-size));
/* 112% is to get an effective font size of 14px from --ueb-font-size which is 12.5 px by default */
font-size: 112%;
font-weight: bold;
line-height: 120%;
white-space: nowrap;
@@ -184,8 +183,8 @@ ueb-node[data-pure-function="true"] .ueb-node-name-symbol {
.ueb-node-subtitle-text {
padding-top: 1px;
padding-right: 5px;
/* 0.946154 is to get an effective font size of 12.3px from --ueb-font-size which is 13 px */
font-size: calc(0.946154 * var(--ueb-font-size));
/* Reset font size set by the parent */
font-size: var(--ueb-font-size);
font-weight: 100;
font-style: italic;
color: #a9b78f;
@@ -196,8 +195,8 @@ ueb-node[data-pure-function="true"] .ueb-node-name-symbol {
}
ueb-node.ueb-node-has-inputs .ueb-node-inputs {
padding-right: 20px;
padding-left: 5px;
padding-right: 15px;
padding-left: 6px;
}
.ueb-node-outputs {
@@ -206,7 +205,7 @@ ueb-node.ueb-node-has-inputs .ueb-node-inputs {
.ueb-node-outputs,
.ueb-node-variadic {
padding-right: 8px;
padding-right: 6px;
}
.ueb-node-variadic {
@@ -324,8 +323,8 @@ ueb-node.ueb-node-style-operation .ueb-node-top {
align-self: center;
justify-self: center;
padding: 0;
/* 2.15385 is to get an effective font size of 28px from --ueb-font-size which is 13 px */
font-size: calc(2.15385 * var(--ueb-font-size));
/* 224% is to get an effective font size of 28px from --ueb-font-size which is 12.5 px by default */
font-size: 224%;
font-stretch: condensed;
font-weight: bold;
line-height: 100%;
@@ -390,8 +389,8 @@ ueb-node.ueb-node-style-comment .ueb-node-top {
border-radius: 0;
background: rgb(var(--ueb-node-color));
color: white;
/* 1.84615 is to get an effective font size of 24px from --ueb-font-size which is 13 px */
font-size: calc(1.84615 * var(--ueb-font-size));
/* 192% is to get an effective font size of 24px from --ueb-font-size which is 12.5 px */
font-size: 192%;
text-shadow: 2px 1px 1px #444, 0 0 2px #bbb;
line-height: 1.22;
z-index: 1;

View File

@@ -39,7 +39,7 @@ ueb-node[data-advanced-display="Hidden"] ueb-pin[data-advanced-view="true"][data
.ueb-pin-wrapper {
display: inline-flex;
box-sizing: border-box;
padding: 3px 5px;
padding: 3px 6px;
min-height: 24px;
align-items: center;
}
@@ -74,8 +74,6 @@ ueb-blueprint[data-scrolling="false"][data-selecting="false"] .ueb-pin-wrapper:h
.ueb-pin-icon {
color: var(--ueb-pin-color);
width: 12px;
height: 12px;
text-align: left;
}
@@ -89,7 +87,7 @@ ueb-pin[data-connectable="false"] .ueb-pin-icon {
}
.ueb-node-inputs .ueb-pin-icon {
margin-right: 10px;
margin-right: 6px;
}
.ueb-node-outputs .ueb-pin-icon {
@@ -97,7 +95,7 @@ ueb-pin[data-connectable="false"] .ueb-pin-icon {
}
.ueb-pin-icon>svg {
vertical-align: top;
display: block;
}
ueb-pin[data-direction="output"] .ueb-pin-reflect-output {
@@ -138,10 +136,6 @@ ueb-pin.ueb-node-variadic-default {
}
}
.ueb-pin-name {
letter-spacing: -0.25px;
}
.ueb-zoom--6 .ueb-pin-content {
visibility: hidden;
}
@@ -219,8 +213,8 @@ ueb-pin[data-type="/Script/CoreUObject.LinearColor"] .ueb-pin-input {
min-width: 10px;
max-width: 400px;
max-height: 16em;
/* 0.96923 is to get an effective font size of 12.6px from --ueb-font-size which is 13 px */
font-size: calc(0.96923 * var(--ueb-font-size));
/* 108% is to get an effective font size of 13.5px from --ueb-font-size which is 12.5 px by default */
font-size: 108%;
white-space: nowrap;
background: none;
color: inherit;