diff --git a/dist/ueblueprint.js b/dist/ueblueprint.js index cf8dd77..59d668d 100755 --- a/dist/ueblueprint.js +++ b/dist/ueblueprint.js @@ -4414,20 +4414,19 @@ function nodeTitle(entity) { } return Utility.formatStringName(entity.OpName.toString()).replaceAll("::", " ") } - let prefix; - if ( - className.startsWith(prefix = "/Script/NiagaraEditor.NiagaraNodeParameter") - || className.startsWith(prefix = "/Script/NiagaraEditor.NiagaraNode" - - )) { - return Utility.formatStringName(className.substring(prefix.length)) - } if (entity.FunctionDisplayName) { return Utility.formatStringName(entity.FunctionDisplayName.toString()) } if (entity.ObjectRef) { return entity.ObjectRef.getName() } + let prefix; + if ( + className.startsWith(prefix = "/Script/NiagaraEditor.NiagaraNodeParameter") + || className.startsWith(prefix = "/Script/NiagaraEditor.NiagaraNode") + ) { + return Utility.formatStringName(className.substring(prefix.length)) + } return Utility.formatStringName(entity.getNameAndCounter()[0]) } diff --git a/dist/ueblueprint.min.js b/dist/ueblueprint.min.js index baf2054..0fbbeb2 100644 --- a/dist/ueblueprint.min.js +++ b/dist/ueblueprint.min.js @@ -3,31 +3,31 @@ * Copyright 2019 Google LLC * SPDX-License-Identifier: BSD-3-Clause */ -const e = window, t = e.ShadowRoot && (void 0 === e.ShadyCSS || e.ShadyCSS.nativeShadow) && "adoptedStyleSheets" in Document.prototype && "replace" in CSSStyleSheet.prototype, i = Symbol(), s = new WeakMap; class r { constructor(e, t, s) { if (this._$cssResult$ = !0, s !== i) throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead."); this.cssText = e, this.t = t } get styleSheet() { let e = this.o; const i = this.t; if (t && void 0 === e) { const t = void 0 !== i && 1 === i.length; t && (e = s.get(i)), void 0 === e && ((this.o = e = new CSSStyleSheet).replaceSync(this.cssText), t && s.set(i, e)) } return e } toString() { return this.cssText } } const n = (e, ...t) => { const s = 1 === e.length ? e[0] : t.reduce(((t, i, s) => t + (e => { if (!0 === e._$cssResult$) return e.cssText; if ("number" == typeof e) return e; throw Error("Value passed to 'css' function must be a 'css' function result: " + e + ". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.") })(i) + e[s + 1]), e[0]); return new r(s, e, i) }, a = t ? e => e : e => e instanceof CSSStyleSheet ? (e => { let t = ""; for (const i of e.cssRules) t += i.cssText; return (e => new r("string" == typeof e ? e : e + "", void 0, i))(t) })(e) : e +const e=window,t=e.ShadowRoot&&(void 0===e.ShadyCSS||e.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,i=Symbol(),s=new WeakMap;class n{constructor(e,t,s){if(this._$cssResult$=!0,s!==i)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=e,this.t=t}get styleSheet(){let e=this.o;const i=this.t;if(t&&void 0===e){const t=void 0!==i&&1===i.length;t&&(e=s.get(i)),void 0===e&&((this.o=e=new CSSStyleSheet).replaceSync(this.cssText),t&&s.set(i,e))}return e}toString(){return this.cssText}}const r=(e,...t)=>{const s=1===e.length?e[0]:t.reduce(((t,i,s)=>t+(e=>{if(!0===e._$cssResult$)return e.cssText;if("number"==typeof e)return e;throw Error("Value passed to 'css' function must be a 'css' function result: "+e+". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.")})(i)+e[s+1]),e[0]);return new n(s,e,i)},a=t?e=>e:e=>e instanceof CSSStyleSheet?(e=>{let t="";for(const i of e.cssRules)t+=i.cssText;return(e=>new n("string"==typeof e?e:e+"",void 0,i))(t)})(e):e /** * @license * Copyright 2017 Google LLC * SPDX-License-Identifier: BSD-3-Clause - */; var o; const l = window, u = l.trustedTypes, c = u ? u.emptyScript : "", h = l.reactiveElementPolyfillSupport, p = { toAttribute(e, t) { switch (t) { case Boolean: e = e ? c : null; break; case Object: case Array: e = null == e ? e : JSON.stringify(e) }return e }, fromAttribute(e, t) { let i = e; switch (t) { case Boolean: i = null !== e; break; case Number: i = null === e ? null : Number(e); break; case Object: case Array: try { i = JSON.parse(e) } catch (e) { i = null } }return i } }, d = (e, t) => t !== e && (t == t || e == e), m = { attribute: !0, type: String, converter: p, reflect: !1, hasChanged: d }, g = "finalized"; class b extends HTMLElement { constructor() { super(), this._$Ei = new Map, this.isUpdatePending = !1, this.hasUpdated = !1, this._$El = null, this._$Eu() } static addInitializer(e) { var t; this.finalize(), (null !== (t = this.h) && void 0 !== t ? t : this.h = []).push(e) } static get observedAttributes() { this.finalize(); const e = []; return this.elementProperties.forEach(((t, i) => { const s = this._$Ep(i, t); void 0 !== s && (this._$Ev.set(s, i), e.push(s)) })), e } static createProperty(e, t = m) { if (t.state && (t.attribute = !1), this.finalize(), this.elementProperties.set(e, t), !t.noAccessor && !this.prototype.hasOwnProperty(e)) { const i = "symbol" == typeof e ? Symbol() : "__" + e, s = this.getPropertyDescriptor(e, i, t); void 0 !== s && Object.defineProperty(this.prototype, e, s) } } static getPropertyDescriptor(e, t, i) { return { get() { return this[t] }, set(s) { const r = this[e]; this[t] = s, this.requestUpdate(e, r, i) }, configurable: !0, enumerable: !0 } } static getPropertyOptions(e) { return this.elementProperties.get(e) || m } static finalize() { if (this.hasOwnProperty(g)) return !1; this[g] = !0; const e = Object.getPrototypeOf(this); if (e.finalize(), void 0 !== e.h && (this.h = [...e.h]), this.elementProperties = new Map(e.elementProperties), this._$Ev = new Map, this.hasOwnProperty("properties")) { const e = this.properties, t = [...Object.getOwnPropertyNames(e), ...Object.getOwnPropertySymbols(e)]; for (const i of t) this.createProperty(i, e[i]) } return this.elementStyles = this.finalizeStyles(this.styles), !0 } static finalizeStyles(e) { const t = []; if (Array.isArray(e)) { const i = new Set(e.flat(1 / 0).reverse()); for (const e of i) t.unshift(a(e)) } else void 0 !== e && t.push(a(e)); return t } static _$Ep(e, t) { const i = t.attribute; return !1 === i ? void 0 : "string" == typeof i ? i : "string" == typeof e ? e.toLowerCase() : void 0 } _$Eu() { var e; this._$E_ = new Promise((e => this.enableUpdating = e)), this._$AL = new Map, this._$Eg(), this.requestUpdate(), null === (e = this.constructor.h) || void 0 === e || e.forEach((e => e(this))) } addController(e) { var t, i; (null !== (t = this._$ES) && void 0 !== t ? t : this._$ES = []).push(e), void 0 !== this.renderRoot && this.isConnected && (null === (i = e.hostConnected) || void 0 === i || i.call(e)) } removeController(e) { var t; null === (t = this._$ES) || void 0 === t || t.splice(this._$ES.indexOf(e) >>> 0, 1) } _$Eg() { this.constructor.elementProperties.forEach(((e, t) => { this.hasOwnProperty(t) && (this._$Ei.set(t, this[t]), delete this[t]) })) } createRenderRoot() { var i; const s = null !== (i = this.shadowRoot) && void 0 !== i ? i : this.attachShadow(this.constructor.shadowRootOptions); return ((i, s) => { t ? i.adoptedStyleSheets = s.map((e => e instanceof CSSStyleSheet ? e : e.styleSheet)) : s.forEach((t => { const s = document.createElement("style"), r = e.litNonce; void 0 !== r && s.setAttribute("nonce", r), s.textContent = t.cssText, i.appendChild(s) })) })(s, this.constructor.elementStyles), s } connectedCallback() { var e; void 0 === this.renderRoot && (this.renderRoot = this.createRenderRoot()), this.enableUpdating(!0), null === (e = this._$ES) || void 0 === e || e.forEach((e => { var t; return null === (t = e.hostConnected) || void 0 === t ? void 0 : t.call(e) })) } enableUpdating(e) { } disconnectedCallback() { var e; null === (e = this._$ES) || void 0 === e || e.forEach((e => { var t; return null === (t = e.hostDisconnected) || void 0 === t ? void 0 : t.call(e) })) } attributeChangedCallback(e, t, i) { this._$AK(e, i) } _$EO(e, t, i = m) { var s; const r = this.constructor._$Ep(e, i); if (void 0 !== r && !0 === i.reflect) { const n = (void 0 !== (null === (s = i.converter) || void 0 === s ? void 0 : s.toAttribute) ? i.converter : p).toAttribute(t, i.type); this._$El = e, null == n ? this.removeAttribute(r) : this.setAttribute(r, n), this._$El = null } } _$AK(e, t) { var i; const s = this.constructor, r = s._$Ev.get(e); if (void 0 !== r && this._$El !== r) { const e = s.getPropertyOptions(r), n = "function" == typeof e.converter ? { fromAttribute: e.converter } : void 0 !== (null === (i = e.converter) || void 0 === i ? void 0 : i.fromAttribute) ? e.converter : p; this._$El = r, this[r] = n.fromAttribute(t, e.type), this._$El = null } } requestUpdate(e, t, i) { let s = !0; void 0 !== e && (((i = i || this.constructor.getPropertyOptions(e)).hasChanged || d)(this[e], t) ? (this._$AL.has(e) || this._$AL.set(e, t), !0 === i.reflect && this._$El !== e && (void 0 === this._$EC && (this._$EC = new Map), this._$EC.set(e, i))) : s = !1), !this.isUpdatePending && s && (this._$E_ = this._$Ej()) } async _$Ej() { this.isUpdatePending = !0; try { await this._$E_ } catch (e) { Promise.reject(e) } const e = this.scheduleUpdate(); return null != e && await e, !this.isUpdatePending } scheduleUpdate() { return this.performUpdate() } performUpdate() { var e; if (!this.isUpdatePending) return; this.hasUpdated, this._$Ei && (this._$Ei.forEach(((e, t) => this[t] = e)), this._$Ei = void 0); let t = !1; const i = this._$AL; try { t = this.shouldUpdate(i), t ? (this.willUpdate(i), null === (e = this._$ES) || void 0 === e || e.forEach((e => { var t; return null === (t = e.hostUpdate) || void 0 === t ? void 0 : t.call(e) })), this.update(i)) : this._$Ek() } catch (e) { throw t = !1, this._$Ek(), e } t && this._$AE(i) } willUpdate(e) { } _$AE(e) { var t; null === (t = this._$ES) || void 0 === t || t.forEach((e => { var t; return null === (t = e.hostUpdated) || void 0 === t ? void 0 : t.call(e) })), this.hasUpdated || (this.hasUpdated = !0, this.firstUpdated(e)), this.updated(e) } _$Ek() { this._$AL = new Map, this.isUpdatePending = !1 } get updateComplete() { return this.getUpdateComplete() } getUpdateComplete() { return this._$E_ } shouldUpdate(e) { return !0 } update(e) { void 0 !== this._$EC && (this._$EC.forEach(((e, t) => this._$EO(t, this[t], e))), this._$EC = void 0), this._$Ek() } updated(e) { } firstUpdated(e) { } } + */;var o;const l=window,u=l.trustedTypes,c=u?u.emptyScript:"",h=l.reactiveElementPolyfillSupport,p={toAttribute(e,t){switch(t){case Boolean:e=e?c:null;break;case Object:case Array:e=null==e?e:JSON.stringify(e)}return e},fromAttribute(e,t){let i=e;switch(t){case Boolean:i=null!==e;break;case Number:i=null===e?null:Number(e);break;case Object:case Array:try{i=JSON.parse(e)}catch(e){i=null}}return i}},d=(e,t)=>t!==e&&(t==t||e==e),m={attribute:!0,type:String,converter:p,reflect:!1,hasChanged:d},g="finalized";class b extends HTMLElement{constructor(){super(),this._$Ei=new Map,this.isUpdatePending=!1,this.hasUpdated=!1,this._$El=null,this._$Eu()}static addInitializer(e){var t;this.finalize(),(null!==(t=this.h)&&void 0!==t?t:this.h=[]).push(e)}static get observedAttributes(){this.finalize();const e=[];return this.elementProperties.forEach(((t,i)=>{const s=this._$Ep(i,t);void 0!==s&&(this._$Ev.set(s,i),e.push(s))})),e}static createProperty(e,t=m){if(t.state&&(t.attribute=!1),this.finalize(),this.elementProperties.set(e,t),!t.noAccessor&&!this.prototype.hasOwnProperty(e)){const i="symbol"==typeof e?Symbol():"__"+e,s=this.getPropertyDescriptor(e,i,t);void 0!==s&&Object.defineProperty(this.prototype,e,s)}}static getPropertyDescriptor(e,t,i){return{get(){return this[t]},set(s){const n=this[e];this[t]=s,this.requestUpdate(e,n,i)},configurable:!0,enumerable:!0}}static getPropertyOptions(e){return this.elementProperties.get(e)||m}static finalize(){if(this.hasOwnProperty(g))return!1;this[g]=!0;const e=Object.getPrototypeOf(this);if(e.finalize(),void 0!==e.h&&(this.h=[...e.h]),this.elementProperties=new Map(e.elementProperties),this._$Ev=new Map,this.hasOwnProperty("properties")){const e=this.properties,t=[...Object.getOwnPropertyNames(e),...Object.getOwnPropertySymbols(e)];for(const i of t)this.createProperty(i,e[i])}return this.elementStyles=this.finalizeStyles(this.styles),!0}static finalizeStyles(e){const t=[];if(Array.isArray(e)){const i=new Set(e.flat(1/0).reverse());for(const e of i)t.unshift(a(e))}else void 0!==e&&t.push(a(e));return t}static _$Ep(e,t){const i=t.attribute;return!1===i?void 0:"string"==typeof i?i:"string"==typeof e?e.toLowerCase():void 0}_$Eu(){var e;this._$E_=new Promise((e=>this.enableUpdating=e)),this._$AL=new Map,this._$Eg(),this.requestUpdate(),null===(e=this.constructor.h)||void 0===e||e.forEach((e=>e(this)))}addController(e){var t,i;(null!==(t=this._$ES)&&void 0!==t?t:this._$ES=[]).push(e),void 0!==this.renderRoot&&this.isConnected&&(null===(i=e.hostConnected)||void 0===i||i.call(e))}removeController(e){var t;null===(t=this._$ES)||void 0===t||t.splice(this._$ES.indexOf(e)>>>0,1)}_$Eg(){this.constructor.elementProperties.forEach(((e,t)=>{this.hasOwnProperty(t)&&(this._$Ei.set(t,this[t]),delete this[t])}))}createRenderRoot(){var i;const s=null!==(i=this.shadowRoot)&&void 0!==i?i:this.attachShadow(this.constructor.shadowRootOptions);return((i,s)=>{t?i.adoptedStyleSheets=s.map((e=>e instanceof CSSStyleSheet?e:e.styleSheet)):s.forEach((t=>{const s=document.createElement("style"),n=e.litNonce;void 0!==n&&s.setAttribute("nonce",n),s.textContent=t.cssText,i.appendChild(s)}))})(s,this.constructor.elementStyles),s}connectedCallback(){var e;void 0===this.renderRoot&&(this.renderRoot=this.createRenderRoot()),this.enableUpdating(!0),null===(e=this._$ES)||void 0===e||e.forEach((e=>{var t;return null===(t=e.hostConnected)||void 0===t?void 0:t.call(e)}))}enableUpdating(e){}disconnectedCallback(){var e;null===(e=this._$ES)||void 0===e||e.forEach((e=>{var t;return null===(t=e.hostDisconnected)||void 0===t?void 0:t.call(e)}))}attributeChangedCallback(e,t,i){this._$AK(e,i)}_$EO(e,t,i=m){var s;const n=this.constructor._$Ep(e,i);if(void 0!==n&&!0===i.reflect){const r=(void 0!==(null===(s=i.converter)||void 0===s?void 0:s.toAttribute)?i.converter:p).toAttribute(t,i.type);this._$El=e,null==r?this.removeAttribute(n):this.setAttribute(n,r),this._$El=null}}_$AK(e,t){var i;const s=this.constructor,n=s._$Ev.get(e);if(void 0!==n&&this._$El!==n){const e=s.getPropertyOptions(n),r="function"==typeof e.converter?{fromAttribute:e.converter}:void 0!==(null===(i=e.converter)||void 0===i?void 0:i.fromAttribute)?e.converter:p;this._$El=n,this[n]=r.fromAttribute(t,e.type),this._$El=null}}requestUpdate(e,t,i){let s=!0;void 0!==e&&(((i=i||this.constructor.getPropertyOptions(e)).hasChanged||d)(this[e],t)?(this._$AL.has(e)||this._$AL.set(e,t),!0===i.reflect&&this._$El!==e&&(void 0===this._$EC&&(this._$EC=new Map),this._$EC.set(e,i))):s=!1),!this.isUpdatePending&&s&&(this._$E_=this._$Ej())}async _$Ej(){this.isUpdatePending=!0;try{await this._$E_}catch(e){Promise.reject(e)}const e=this.scheduleUpdate();return null!=e&&await e,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){var e;if(!this.isUpdatePending)return;this.hasUpdated,this._$Ei&&(this._$Ei.forEach(((e,t)=>this[t]=e)),this._$Ei=void 0);let t=!1;const i=this._$AL;try{t=this.shouldUpdate(i),t?(this.willUpdate(i),null===(e=this._$ES)||void 0===e||e.forEach((e=>{var t;return null===(t=e.hostUpdate)||void 0===t?void 0:t.call(e)})),this.update(i)):this._$Ek()}catch(e){throw t=!1,this._$Ek(),e}t&&this._$AE(i)}willUpdate(e){}_$AE(e){var t;null===(t=this._$ES)||void 0===t||t.forEach((e=>{var t;return null===(t=e.hostUpdated)||void 0===t?void 0:t.call(e)})),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(e)),this.updated(e)}_$Ek(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$E_}shouldUpdate(e){return!0}update(e){void 0!==this._$EC&&(this._$EC.forEach(((e,t)=>this._$EO(t,this[t],e))),this._$EC=void 0),this._$Ek()}updated(e){}firstUpdated(e){}} /** * @license * Copyright 2017 Google LLC * SPDX-License-Identifier: BSD-3-Clause */ -var v; b[g] = !0, b.elementProperties = new Map, b.elementStyles = [], b.shadowRootOptions = { mode: "open" }, null == h || h({ ReactiveElement: b }), (null !== (o = l.reactiveElementVersions) && void 0 !== o ? o : l.reactiveElementVersions = []).push("1.6.3"); const f = window, y = f.trustedTypes, w = y ? y.createPolicy("lit-html", { createHTML: e => e }) : void 0, S = "$lit$", E = `lit$${(Math.random() + "").slice(9)}$`, C = "?" + E, N = `<${C}>`, x = document, P = () => x.createComment(""), k = e => null === e || "object" != typeof e && "function" != typeof e, A = Array.isArray, L = "[ \t\n\f\r]", M = /<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g, T = /-->/g, I = />/g, O = RegExp(`>|${L}(?:([^\\s"'>=/]+)(${L}*=${L}*(?:[^ \t\n\f\r"'\`<>=]|("|')|))|$)`, "g"), D = /'/g, $ = /"/g, B = /^(?:script|style|textarea|title)$/i, G = (e => (t, ...i) => ({ _$litType$: e, strings: t, values: i }))(1), H = Symbol.for("lit-noChange"), V = Symbol.for("lit-nothing"), R = new WeakMap, _ = x.createTreeWalker(x, 129, null, !1); function z(e, t) { if (!Array.isArray(e) || !e.hasOwnProperty("raw")) throw Error("invalid template strings array"); return void 0 !== w ? w.createHTML(t) : t } const F = (e, t) => { const i = e.length - 1, s = []; let n, r = 2 === t ? "" : "", a = M; for (let t = 0; t < i; t++) { const i = e[t]; let o, l, u = -1, c = 0; for (; c < i.length && (a.lastIndex = c, l = a.exec(i), null !== l);)c = a.lastIndex, a === M ? "!--" === l[1] ? a = T : void 0 !== l[1] ? a = I : void 0 !== l[2] ? (B.test(l[2]) && (n = RegExp("" + l[2], "g")), a = O) : void 0 !== l[3] && (a = O) : a === O ? ">" === l[0] ? (a = null != n ? n : M, u = -1) : void 0 === l[1] ? u = -2 : (u = a.lastIndex - l[2].length, o = l[1], a = void 0 === l[3] ? O : '"' === l[3] ? $ : D) : a === $ || a === D ? a = O : a === T || a === I ? a = M : (a = O, n = void 0); const h = a === O && e[t + 1].startsWith("/>") ? " " : ""; r += a === M ? i + N : u >= 0 ? (s.push(o), i.slice(0, u) + S + i.slice(u) + E + h) : i + E + (-2 === u ? (s.push(void 0), t) : h) } return [z(e, r + (e[i] || ">") + (2 === t ? "" : "")), s] }; class j { constructor({ strings: e, _$litType$: t }, i) { let s; this.parts = []; let n = 0, r = 0; const a = e.length - 1, o = this.parts, [l, u] = F(e, t); if (this.el = j.createElement(l, i), _.currentNode = this.el.content, 2 === t) { const e = this.el.content, t = e.firstChild; t.remove(), e.append(...t.childNodes) } for (; null !== (s = _.nextNode()) && o.length < a;) { if (1 === s.nodeType) { if (s.hasAttributes()) { const e = []; for (const t of s.getAttributeNames()) if (t.endsWith(S) || t.startsWith(E)) { const i = u[r++]; if (e.push(t), void 0 !== i) { const e = s.getAttribute(i.toLowerCase() + S).split(E), t = /([.?@])?(.*)/.exec(i); o.push({ type: 1, index: n, name: t[2], strings: e, ctor: "." === t[1] ? q : "?" === t[1] ? W : "@" === t[1] ? Q : X }) } else o.push({ type: 6, index: n }) } for (const t of e) s.removeAttribute(t) } if (B.test(s.tagName)) { const e = s.textContent.split(E), t = e.length - 1; if (t > 0) { s.textContent = y ? y.emptyScript : ""; for (let i = 0; i < t; i++)s.append(e[i], P()), _.nextNode(), o.push({ type: 2, index: ++n }); s.append(e[t], P()) } } } else if (8 === s.nodeType) if (s.data === C) o.push({ type: 2, index: n }); else { let e = -1; for (; -1 !== (e = s.data.indexOf(E, e + 1));)o.push({ type: 7, index: n }), e += E.length - 1 } n++ } } static createElement(e, t) { const i = x.createElement("template"); return i.innerHTML = e, i } } function U(e, t, i = e, s) { var n, r, a, o; if (t === H) return t; let l = void 0 !== s ? null === (n = i._$Co) || void 0 === n ? void 0 : n[s] : i._$Cl; const u = k(t) ? void 0 : t._$litDirective$; return (null == l ? void 0 : l.constructor) !== u && (null === (r = null == l ? void 0 : l._$AO) || void 0 === r || r.call(l, !1), void 0 === u ? l = void 0 : (l = new u(e), l._$AT(e, i, s)), void 0 !== s ? (null !== (a = (o = i)._$Co) && void 0 !== a ? a : o._$Co = [])[s] = l : i._$Cl = l), void 0 !== l && (t = U(e, l._$AS(e, t.values), l, s)), t } class Y { constructor(e, t) { this._$AV = [], this._$AN = void 0, this._$AD = e, this._$AM = t } get parentNode() { return this._$AM.parentNode } get _$AU() { return this._$AM._$AU } u(e) { var t; const { el: { content: i }, parts: s } = this._$AD, n = (null !== (t = null == e ? void 0 : e.creationScope) && void 0 !== t ? t : x).importNode(i, !0); _.currentNode = n; let r = _.nextNode(), a = 0, o = 0, l = s[0]; for (; void 0 !== l;) { if (a === l.index) { let t; 2 === l.type ? t = new K(r, r.nextSibling, this, e) : 1 === l.type ? t = new l.ctor(r, l.name, l.strings, this, e) : 6 === l.type && (t = new J(r, this, e)), this._$AV.push(t), l = s[++o] } a !== (null == l ? void 0 : l.index) && (r = _.nextNode(), a++) } return _.currentNode = x, n } v(e) { let t = 0; for (const i of this._$AV) void 0 !== i && (void 0 !== i.strings ? (i._$AI(e, i, t), t += i.strings.length - 2) : i._$AI(e[t])), t++ } } class K { constructor(e, t, i, s) { var n; this.type = 2, this._$AH = V, this._$AN = void 0, this._$AA = e, this._$AB = t, this._$AM = i, this.options = s, this._$Cp = null === (n = null == s ? void 0 : s.isConnected) || void 0 === n || n } get _$AU() { var e, t; return null !== (t = null === (e = this._$AM) || void 0 === e ? void 0 : e._$AU) && void 0 !== t ? t : this._$Cp } get parentNode() { let e = this._$AA.parentNode; const t = this._$AM; return void 0 !== t && 11 === (null == e ? void 0 : e.nodeType) && (e = t.parentNode), e } get startNode() { return this._$AA } get endNode() { return this._$AB } _$AI(e, t = this) { e = U(this, e, t), k(e) ? e === V || null == e || "" === e ? (this._$AH !== V && this._$AR(), this._$AH = V) : e !== this._$AH && e !== H && this._(e) : void 0 !== e._$litType$ ? this.g(e) : void 0 !== e.nodeType ? this.$(e) : (e => A(e) || "function" == typeof (null == e ? void 0 : e[Symbol.iterator]))(e) ? this.T(e) : this._(e) } k(e) { return this._$AA.parentNode.insertBefore(e, this._$AB) } $(e) { this._$AH !== e && (this._$AR(), this._$AH = this.k(e)) } _(e) { this._$AH !== V && k(this._$AH) ? this._$AA.nextSibling.data = e : this.$(x.createTextNode(e)), this._$AH = e } g(e) { var t; const { values: i, _$litType$: s } = e, n = "number" == typeof s ? this._$AC(e) : (void 0 === s.el && (s.el = j.createElement(z(s.h, s.h[0]), this.options)), s); if ((null === (t = this._$AH) || void 0 === t ? void 0 : t._$AD) === n) this._$AH.v(i); else { const e = new Y(n, this), t = e.u(this.options); e.v(i), this.$(t), this._$AH = e } } _$AC(e) { let t = R.get(e.strings); return void 0 === t && R.set(e.strings, t = new j(e)), t } T(e) { A(this._$AH) || (this._$AH = [], this._$AR()); const t = this._$AH; let i, s = 0; for (const n of e) s === t.length ? t.push(i = new K(this.k(P()), this.k(P()), this, this.options)) : i = t[s], i._$AI(n), s++; s < t.length && (this._$AR(i && i._$AB.nextSibling, s), t.length = s) } _$AR(e = this._$AA.nextSibling, t) { var i; for (null === (i = this._$AP) || void 0 === i || i.call(this, !1, !0, t); e && e !== this._$AB;) { const t = e.nextSibling; e.remove(), e = t } } setConnected(e) { var t; void 0 === this._$AM && (this._$Cp = e, null === (t = this._$AP) || void 0 === t || t.call(this, e)) } } class X { constructor(e, t, i, s, n) { this.type = 1, this._$AH = V, this._$AN = void 0, this.element = e, this.name = t, this._$AM = s, this.options = n, i.length > 2 || "" !== i[0] || "" !== i[1] ? (this._$AH = Array(i.length - 1).fill(new String), this.strings = i) : this._$AH = V } get tagName() { return this.element.tagName } get _$AU() { return this._$AM._$AU } _$AI(e, t = this, i, s) { const n = this.strings; let r = !1; if (void 0 === n) e = U(this, e, t, 0), r = !k(e) || e !== this._$AH && e !== H, r && (this._$AH = e); else { const s = e; let a, o; for (e = n[0], a = 0; a < n.length - 1; a++)o = U(this, s[i + a], t, a), o === H && (o = this._$AH[a]), r || (r = !k(o) || o !== this._$AH[a]), o === V ? e = V : e !== V && (e += (null != o ? o : "") + n[a + 1]), this._$AH[a] = o } r && !s && this.j(e) } j(e) { e === V ? this.element.removeAttribute(this.name) : this.element.setAttribute(this.name, null != e ? e : "") } } class q extends X { constructor() { super(...arguments), this.type = 3 } j(e) { this.element[this.name] = e === V ? void 0 : e } } const Z = y ? y.emptyScript : ""; class W extends X { constructor() { super(...arguments), this.type = 4 } j(e) { e && e !== V ? this.element.setAttribute(this.name, Z) : this.element.removeAttribute(this.name) } } class Q extends X { constructor(e, t, i, s, n) { super(e, t, i, s, n), this.type = 5 } _$AI(e, t = this) { var i; if ((e = null !== (i = U(this, e, t, 0)) && void 0 !== i ? i : V) === H) return; const s = this._$AH, n = e === V && s !== V || e.capture !== s.capture || e.once !== s.once || e.passive !== s.passive, r = e !== V && (s === V || n); n && this.element.removeEventListener(this.name, this, s), r && this.element.addEventListener(this.name, this, e), this._$AH = e } handleEvent(e) { var t, i; "function" == typeof this._$AH ? this._$AH.call(null !== (i = null === (t = this.options) || void 0 === t ? void 0 : t.host) && void 0 !== i ? i : this.element, e) : this._$AH.handleEvent(e) } } class J { constructor(e, t, i) { this.element = e, this.type = 6, this._$AN = void 0, this._$AM = t, this.options = i } get _$AU() { return this._$AM._$AU } _$AI(e) { U(this, e) } } const ee = f.litHtmlPolyfillSupport; null == ee || ee(j, K), (null !== (v = f.litHtmlVersions) && void 0 !== v ? v : f.litHtmlVersions = []).push("2.8.0") +var v;b[g]=!0,b.elementProperties=new Map,b.elementStyles=[],b.shadowRootOptions={mode:"open"},null==h||h({ReactiveElement:b}),(null!==(o=l.reactiveElementVersions)&&void 0!==o?o:l.reactiveElementVersions=[]).push("1.6.3");const f=window,y=f.trustedTypes,w=y?y.createPolicy("lit-html",{createHTML:e=>e}):void 0,S="$lit$",E=`lit$${(Math.random()+"").slice(9)}$`,C="?"+E,N=`<${C}>`,x=document,P=()=>x.createComment(""),k=e=>null===e||"object"!=typeof e&&"function"!=typeof e,A=Array.isArray,L="[ \t\n\f\r]",M=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,I=/-->/g,T=/>/g,O=RegExp(`>|${L}(?:([^\\s"'>=/]+)(${L}*=${L}*(?:[^ \t\n\f\r"'\`<>=]|("|')|))|$)`,"g"),$=/'/g,D=/"/g,B=/^(?:script|style|textarea|title)$/i,G=(e=>(t,...i)=>({_$litType$:e,strings:t,values:i}))(1),H=Symbol.for("lit-noChange"),V=Symbol.for("lit-nothing"),R=new WeakMap,_=x.createTreeWalker(x,129,null,!1);function z(e,t){if(!Array.isArray(e)||!e.hasOwnProperty("raw"))throw Error("invalid template strings array");return void 0!==w?w.createHTML(t):t}const F=(e,t)=>{const i=e.length-1,s=[];let n,r=2===t?"":"",a=M;for(let t=0;t"===l[0]?(a=null!=n?n:M,u=-1):void 0===l[1]?u=-2:(u=a.lastIndex-l[2].length,o=l[1],a=void 0===l[3]?O:'"'===l[3]?D:$):a===D||a===$?a=O:a===I||a===T?a=M:(a=O,n=void 0);const h=a===O&&e[t+1].startsWith("/>")?" ":"";r+=a===M?i+N:u>=0?(s.push(o),i.slice(0,u)+S+i.slice(u)+E+h):i+E+(-2===u?(s.push(void 0),t):h)}return[z(e,r+(e[i]||">")+(2===t?"":"")),s]};class j{constructor({strings:e,_$litType$:t},i){let s;this.parts=[];let n=0,r=0;const a=e.length-1,o=this.parts,[l,u]=F(e,t);if(this.el=j.createElement(l,i),_.currentNode=this.el.content,2===t){const e=this.el.content,t=e.firstChild;t.remove(),e.append(...t.childNodes)}for(;null!==(s=_.nextNode())&&o.length0){s.textContent=y?y.emptyScript:"";for(let i=0;iA(e)||"function"==typeof(null==e?void 0:e[Symbol.iterator]))(e)?this.T(e):this._(e)}k(e){return this._$AA.parentNode.insertBefore(e,this._$AB)}$(e){this._$AH!==e&&(this._$AR(),this._$AH=this.k(e))}_(e){this._$AH!==V&&k(this._$AH)?this._$AA.nextSibling.data=e:this.$(x.createTextNode(e)),this._$AH=e}g(e){var t;const{values:i,_$litType$:s}=e,n="number"==typeof s?this._$AC(e):(void 0===s.el&&(s.el=j.createElement(z(s.h,s.h[0]),this.options)),s);if((null===(t=this._$AH)||void 0===t?void 0:t._$AD)===n)this._$AH.v(i);else{const e=new Y(n,this),t=e.u(this.options);e.v(i),this.$(t),this._$AH=e}}_$AC(e){let t=R.get(e.strings);return void 0===t&&R.set(e.strings,t=new j(e)),t}T(e){A(this._$AH)||(this._$AH=[],this._$AR());const t=this._$AH;let i,s=0;for(const n of e)s===t.length?t.push(i=new K(this.k(P()),this.k(P()),this,this.options)):i=t[s],i._$AI(n),s++;s2||""!==i[0]||""!==i[1]?(this._$AH=Array(i.length-1).fill(new String),this.strings=i):this._$AH=V}get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}_$AI(e,t=this,i,s){const n=this.strings;let r=!1;if(void 0===n)e=U(this,e,t,0),r=!k(e)||e!==this._$AH&&e!==H,r&&(this._$AH=e);else{const s=e;let a,o;for(e=n[0],a=0;a { var s, n; const r = null !== (s = null == i ? void 0 : i.renderBefore) && void 0 !== s ? s : t; let a = r._$litPart$; if (void 0 === a) { const e = null !== (n = null == i ? void 0 : i.renderBefore) && void 0 !== n ? n : null; r._$litPart$ = a = new K(t.insertBefore(P(), e), e, void 0, null != i ? i : {}) } return a._$AI(e), a })(t, this.renderRoot, this.renderOptions) } connectedCallback() { var e; super.connectedCallback(), null === (e = this._$Do) || void 0 === e || e.setConnected(!0) } disconnectedCallback() { var e; super.disconnectedCallback(), null === (e = this._$Do) || void 0 === e || e.setConnected(!1) } render() { return H } } se.finalized = !0, se._$litElement$ = !0, null === (te = globalThis.litElementHydrateSupport) || void 0 === te || te.call(globalThis, { LitElement: se }); const ne = globalThis.litElementPolyfillSupport; null == ne || ne({ LitElement: se }), (null !== (ie = globalThis.litElementVersions) && void 0 !== ie ? ie : globalThis.litElementVersions = []).push("3.3.3"); class re { static nodeColors = { black: r``, blue: r``, darkBlue: r``, darkerBlue: r``, darkTurquoise: r``, gray: r``, green: r``, intenseGreen: r``, lime: r``, red: r``, turquoise: r``, violet: r``, yellow: r`` }; static alphaPattern = "repeating-conic-gradient(#7c8184 0% 25%, #c2c3c4 0% 50%) 50% / 10px 10px"; static colorDragEventName = "ueb-color-drag"; static colorPickEventName = "ueb-color-pick"; static colorWindowEventName = "ueb-color-window"; static colorWindowName = "Color Picker"; static defaultCommentHeight = 96; static defaultCommentWidth = 400; static distanceThreshold = 5; static dragEventName = "ueb-drag"; static dragGeneralEventName = "ueb-drag-general"; static edgeScrollThreshold = 50; static editTextEventName = { begin: "ueb-edit-text-begin", end: "ueb-edit-text-end" }; static expandGridSize = 400; static focusEventName = { begin: "blueprint-focus", end: "blueprint-unfocus" }; static fontSize = r``; static gridAxisLineColor = r``; static gridExpandThreshold = .25; static gridLineColor = r``; static gridLineWidth = 1; static gridSet = 8; static gridSetLineColor = r``; static gridShrinkThreshold = 4; static gridSize = 16; static hexColorRegex = /^\s*#(?[0-9a-fA-F]{2})(?[0-9a-fA-F]{2})(?[0-9a-fA-F]{2})([0-9a-fA-F]{2})?|#(?[0-9a-fA-F])(?[0-9a-fA-F])(?[0-9a-fA-F])\s*$/; static indentation = " "; static keysSeparator = /[\.\(\)]/; static knotOffset = [-re.gridSize, -.5 * re.gridSize]; static lineTracePattern = /LineTrace(Single|Multi)(\w*)/; static linkCurveHeight = 15; static linkCurveWidth = 80; static linkMinWidth = 100; static nameRegexSpaceReplacement = new RegExp("^K2(?:[Nn]ode)?_|(?<=[a-z])(?=[A-Z0-9])|(?<=[A-Z])(? { let s = 100 - e; return `M ${e} 0 C ${t.toFixed(3)} 0, ${i.toFixed(3)} 0, 50 50 S ${(s - t + e).toFixed(3)} 100, ${s.toFixed(3)} 100` }; static maxZoom = 7; static minZoom = -12; static mouseClickButton = 0; static mouseRightClickButton = 2; static mouseWheelZoomThreshold = 80; static nodeDragEventName = "ueb-node-drag"; static nodeDragGeneralEventName = "ueb-node-drag-general"; static nodeTitle = (e, t) => `${e}_${t}`; static nodeRadius = 8; static nodeReflowEventName = "ueb-node-reflow"; static paths = { actorBoundEvent: "/Script/BlueprintGraph.K2Node_ActorBoundEvent", addDelegate: "/Script/BlueprintGraph.K2Node_AddDelegate", 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", callDelegate: "/Script/BlueprintGraph.K2Node_CallDelegate", callFunction: "/Script/BlueprintGraph.K2Node_CallFunction", clearDelegate: "/Script/BlueprintGraph.K2Node_ClearDelegate", comment: "/Script/UnrealEd.EdGraphNode_Comment", commutativeAssociativeBinaryOperator: "/Script/BlueprintGraph.K2Node_CommutativeAssociativeBinaryOperator", componentBoundEvent: "/Script/BlueprintGraph.K2Node_ComponentBoundEvent", createDelegate: "/Script/BlueprintGraph.K2Node_CreateDelegate", customEvent: "/Script/BlueprintGraph.K2Node_CustomEvent", doN: "/Engine/EditorBlueprintResources/StandardMacros.StandardMacros:Do N", doOnce: "/Engine/EditorBlueprintResources/StandardMacros.StandardMacros:DoOnce", dynamicCast: "/Script/BlueprintGraph.K2Node_DynamicCast", eAttachmentRule: "/Script/Engine.EAttachmentRule", edGraph: "/Script/Engine.EdGraph", eDrawDebugTrace: "/Script/Engine.EDrawDebugTrace", eMaterialSamplerType: "/Script/Engine.EMaterialSamplerType", eNiagara_Float4Channel: "/Niagara/Enums/ENiagara_Float4Channel.ENiagara_Float4Channel", enum: "/Script/CoreUObject.Enum", enumLiteral: "/Script/BlueprintGraph.K2Node_EnumLiteral", eSamplerSourceMode: "/Script/Engine.ESamplerSourceMode", eSearchCase: "/Script/CoreUObject.ESearchCase", eSearchDir: "/Script/CoreUObject.ESearchDir", eSpawnActorCollisionHandlingMethod: "/Script/Engine.ESpawnActorCollisionHandlingMethod", eTextureMipValueMode: "/Script/Engine.ETextureMipValueMode", eTraceTypeQuery: "/Script/Engine.ETraceTypeQuery", event: "/Script/BlueprintGraph.K2Node_Event", eWorldPositionIncludedOffsets: "/Script/Engine.EWorldPositionIncludedOffsets", executionSequence: "/Script/BlueprintGraph.K2Node_ExecutionSequence", flipflop: "/Engine/EditorBlueprintResources/StandardMacros.StandardMacros:FlipFlop", forEachElementInEnum: "/Script/BlueprintGraph.K2Node_ForEachElementInEnum", forEachLoop: "/Engine/EditorBlueprintResources/StandardMacros.StandardMacros:ForEachLoop", forEachLoopWithBreak: "/Engine/EditorBlueprintResources/StandardMacros.StandardMacros:ForEachLoopWithBreak", forLoop: "/Engine/EditorBlueprintResources/StandardMacros.StandardMacros:ForLoop", forLoopWithBreak: "/Engine/EditorBlueprintResources/StandardMacros.StandardMacros:ForLoopWithBreak", functionEntry: "/Script/BlueprintGraph.K2Node_FunctionEntry", functionResult: "/Script/BlueprintGraph.K2Node_FunctionResult", gameplayTag: "/Script/GameplayTags.GameplayTag", getInputAxisKeyValue: "/Script/BlueprintGraph.K2Node_GetInputAxisKeyValue", ifThenElse: "/Script/BlueprintGraph.K2Node_IfThenElse", inputAxisKeyEvent: "/Script/BlueprintGraph.K2Node_InputAxisKeyEvent", inputDebugKey: "/Script/InputBlueprintNodes.K2Node_InputDebugKey", inputKey: "/Script/BlueprintGraph.K2Node_InputKey", inputVectorAxisEvent: "/Script/BlueprintGraph.K2Node_InputVectorAxisEvent", isValid: "/Engine/EditorBlueprintResources/StandardMacros.StandardMacros:IsValid", kismetArrayLibrary: "/Script/Engine.KismetArrayLibrary", kismetMathLibrary: "/Script/Engine.KismetMathLibrary", knot: "/Script/BlueprintGraph.K2Node_Knot", linearColor: "/Script/CoreUObject.LinearColor", literal: "/Script/BlueprintGraph.K2Node_Literal", macro: "/Script/BlueprintGraph.K2Node_MacroInstance", makeArray: "/Script/BlueprintGraph.K2Node_MakeArray", makeMap: "/Script/BlueprintGraph.K2Node_MakeMap", makeSet: "/Script/BlueprintGraph.K2Node_MakeSet", makeStruct: "/Script/BlueprintGraph.K2Node_MakeStruct", materialExpressionComponentMask: "/Script/Engine.MaterialExpressionComponentMask", materialExpressionConstant: "/Script/Engine.MaterialExpressionConstant", materialExpressionConstant2Vector: "/Script/Engine.MaterialExpressionConstant2Vector", materialExpressionConstant3Vector: "/Script/Engine.MaterialExpressionConstant3Vector", materialExpressionConstant4Vector: "/Script/Engine.MaterialExpressionConstant4Vector", materialExpressionFunctionInput: "/Script/Engine.MaterialExpressionFunctionInput", materialExpressionLogarithm: "/Script/InterchangeImport.MaterialExpressionLogarithm", materialExpressionLogarithm10: "/Script/Engine.MaterialExpressionLogarithm10", materialExpressionLogarithm2: "/Script/Engine.MaterialExpressionLogarithm2", materialExpressionMaterialFunctionCall: "/Script/Engine.MaterialExpressionMaterialFunctionCall", materialExpressionSquareRoot: "/Script/Engine.MaterialExpressionSquareRoot", materialExpressionSubtract: "/Script/Engine.MaterialExpressionSubtract", materialExpressionTextureCoordinate: "/Script/Engine.MaterialExpressionTextureCoordinate", materialExpressionTextureSample: "/Script/Engine.MaterialExpressionTextureSample", materialExpressionWorldPosition: "/Script/Engine.MaterialExpressionWorldPosition", materialGraphNode: "/Script/UnrealEd.MaterialGraphNode", materialGraphNodeComment: "/Script/UnrealEd.MaterialGraphNode_Comment", metasoundEditorGraphExternalNode: "/Script/MetasoundEditor.MetasoundEditorGraphExternalNode", multiGate: "/Script/BlueprintGraph.K2Node_MultiGate", niagaraBool: "/Script/Niagara.NiagaraBool", niagaraClipboardContent: "/Script/NiagaraEditor.NiagaraClipboardContent", niagaraDataInterfaceVolumeTexture: "/Script/Niagara.NiagaraDataInterfaceVolumeTexture", niagaraFloat: "/Script/Niagara.NiagaraFloat", niagaraMatrix: "/Script/Niagara.NiagaraMatrix", niagaraNodeFunctionCall: "/Script/NiagaraEditor.NiagaraNodeFunctionCall", niagaraNodeOp: "/Script/NiagaraEditor.NiagaraNodeOp", niagaraNumeric: "/Script/Niagara.NiagaraNumeric", niagaraPosition: "/Script/Niagara.NiagaraPosition", pawn: "/Script/Engine.Pawn", pcgEditorGraphNode: "/Script/PCGEditor.PCGEditorGraphNode", pcgEditorGraphNodeInput: "/Script/PCGEditor.PCGEditorGraphNodeInput", pcgEditorGraphNodeOutput: "/Script/PCGEditor.PCGEditorGraphNodeOutput", pcgHiGenGridSizeSettings: "/Script/PCG.PCGHiGenGridSizeSettings", pcgSubgraphSettings: "/Script/PCG.PCGSubgraphSettings", promotableOperator: "/Script/BlueprintGraph.K2Node_PromotableOperator", quat4f: "/Script/CoreUObject.Quat4f", removeDelegate: "/Script/BlueprintGraph.K2Node_RemoveDelegate", reverseForEachLoop: "/Engine/EditorBlueprintResources/StandardMacros.StandardMacros:ReverseForEachLoop", rotator: "/Script/CoreUObject.Rotator", select: "/Script/BlueprintGraph.K2Node_Select", self: "/Script/BlueprintGraph.K2Node_Self", slateBlueprintLibrary: "/Script/UMG.SlateBlueprintLibrary", spawnActorFromClass: "/Script/BlueprintGraph.K2Node_SpawnActorFromClass", switchEnum: "/Script/BlueprintGraph.K2Node_SwitchEnum", switchGameplayTag: "/Script/GameplayTagsEditor.GameplayTagsK2Node_SwitchGameplayTag", switchInteger: "/Script/BlueprintGraph.K2Node_SwitchInteger", switchName: "/Script/BlueprintGraph.K2Node_SwitchName", switchString: "/Script/BlueprintGraph.K2Node_SwitchString", timeline: "/Script/BlueprintGraph.K2Node_Timeline", timeManagementBlueprintLibrary: "/Script/TimeManagement.TimeManagementBlueprintLibrary", transform: "/Script/CoreUObject.Transform", userDefinedEnum: "/Script/Engine.UserDefinedEnum", variableGet: "/Script/BlueprintGraph.K2Node_VariableGet", variableSet: "/Script/BlueprintGraph.K2Node_VariableSet", vector: "/Script/CoreUObject.Vector", vector2D: "/Script/CoreUObject.Vector2D", vector3f: "/Script/CoreUObject.Vector3f", vector4f: "/Script/CoreUObject.Vector4f", whileLoop: "/Engine/EditorBlueprintResources/StandardMacros.StandardMacros:WhileLoop" }; static pinInputWrapWidth = 145; static removeEventName = "ueb-element-delete"; static scale = { [-12]: .133333, [-11]: .166666, [-10]: .2, [-9]: .233333, [-8]: .266666, [-7]: .3, [-6]: .333333, [-5]: .375, [-4]: .5, [-3]: .675, [-2]: .75, [-1]: .875, 0: 1, 1: 1.25, 2: 1.375, 3: 1.5, 4: 1.675, 5: 1.75, 6: 1.875, 7: 2 }; static smoothScrollTime = 1e3; static stringEscapedCharacters = /["\\]/g; static subObjectAttributeNamePrefix = "#SubObject"; static subObjectAttributeNameFromEntity = (e, t = !1) => this.subObjectAttributeNamePrefix + (!t && e.Class ? `_${e.Class.type}` : "") + "_" + e.Name; static subObjectAttributeNameFromReference = (e, t = !1) => this.subObjectAttributeNamePrefix + (t ? "" : "_" + e.type) + "_" + e.path; static subObjectAttributeNameFromName = e => this.subObjectAttributeNamePrefix + "_" + e; static switchTargetPattern = /\/Script\/[\w\.\/\:]+K2Node_Switch([A-Z]\w+)+/; static trackingMouseEventName = { begin: "ueb-tracking-mouse-begin", end: "ueb-tracking-mouse-end" }; static unescapedBackslash = /(?<=(?:[^\\]|^)(?:\\\\)*)\\(?!\\)/; static windowApplyEventName = "ueb-window-apply"; static windowApplyButtonText = "OK"; static windowCancelEventName = "ueb-window-cancel"; static windowCancelButtonText = "Cancel"; static windowCloseEventName = "ueb-window-close"; static CommonEnums = { [this.paths.eAttachmentRule]: ["KeepRelative", "KeepWorld", "SnapToTarget"], [this.paths.eDrawDebugTrace]: ["None", "ForOneFrame", "ForDuration", "Persistent"], [this.paths.eMaterialSamplerType]: ["Color", "Grayscale", "Alpha", "Normal", "Masks", "Distance Field Font", "Linear Color", "Linear Grayscale", "Data", "External", "Virtual Color", "Virtual Grayscale", "Virtual Alpha", "Virtual Normal", "Virtual Mask", "Virtual Linear Color", "Virtual Linear Grayscal"], [this.paths.eNiagara_Float4Channel]: [["NewEnumerator0", "R"], ["NewEnumerator1", "G"], ["NewEnumerator2", "B"], ["NewEnumerator3", "A"]], [this.paths.eSamplerSourceMode]: ["From texture asset", "Shared: Wrap", "Shared: Clamp", "Hidden"], [this.paths.eSearchCase]: ["CaseSensitive", "IgnoreCase"], [this.paths.eWorldPositionIncludedOffsets]: ["Absolute World Position (Including Material Shader Offsets)", "Absolute World Position (Excluding Material Shader Offsets)", "Camera Relative World Position (Including Material Shader Offsets)", "Camera Relative World Position (Excluding Material Shader Offsets)"], [this.paths.eSearchDir]: ["FromStart", "FromEnd"], [this.paths.eSpawnActorCollisionHandlingMethod]: [["Undefined", "Default"], ["AlwaysSpawn", "Always Spawn, Ignore Collisions"], ["AdjustIfPossibleButAlwaysSpawn", "Try To Adjust Location, But Always Spawn"], ["AdjustIfPossibleButDontSpawnIfColliding", "Try To Adjust Location, Don't Spawn If Still Colliding"], ["DontSpawnIfColliding", "Do Not Spawn"]], [this.paths.eTextureMipValueMode]: ["None (use computed mip level)", "MipLevel (absolute, 0 is full resolution)", "MipBias (relative to the computed mip level)", "Derivative (explicit derivative to compute mip level)"], [this.paths.eTraceTypeQuery]: [["TraceTypeQuery1", "Visibility"], ["TraceTypeQuery2", "Camera"]] }; static ModifierKeys = ["Ctrl", "Shift", "Alt", "Meta"]; static rgba = ["R", "G", "B", "A"]; static Keys = { Backspace: "Backspace", Tab: "Tab", LeftControl: "ControlLeft", RightControl: "ControlRight", LeftShift: "ShiftLeft", RightShift: "ShiftRight", LeftAlt: "AltLeft", RightAlt: "AltRight", Enter: "Enter", Pause: "Pause", CapsLock: "CapsLock", Escape: "Escape", Space: "Space", PageUp: "PageUp", PageDown: "PageDown", End: "End", Home: "Home", ArrowLeft: "ArrowLeft", ArrowUp: "ArrowUp", ArrowRight: "ArrowRight", ArrowDown: "ArrowDown", PrintScreen: "PrintScreen", Insert: "Insert", Delete: "Delete", Zero: "Digit0", One: "Digit1", Two: "Digit2", Three: "Digit3", Four: "Digit4", Five: "Digit5", Six: "Digit6", Seven: "Digit7", Eight: "Digit8", Nine: "Digit9", A: "KeyA", B: "KeyB", C: "KeyC", D: "KeyD", E: "KeyE", F: "KeyF", G: "KeyG", H: "KeyH", I: "KeyI", K: "KeyK", L: "KeyL", M: "KeyM", N: "KeyN", O: "KeyO", P: "KeyP", Q: "KeyQ", R: "KeyR", S: "KeyS", T: "KeyT", U: "KeyU", V: "KeyV", W: "KeyW", X: "KeyX", Y: "KeyY", Z: "KeyZ", NumPadZero: "Numpad0", NumPadOne: "Numpad1", NumPadTwo: "Numpad2", NumPadThree: "Numpad3", NumPadFour: "Numpad4", NumPadFive: "Numpad5", NumPadSix: "Numpad6", NumPadSeven: "Numpad7", NumPadEight: "Numpad8", NumPadNine: "Numpad9", Multiply: "NumpadMultiply", Add: "NumpadAdd", Subtract: "NumpadSubtract", Decimal: "NumpadDecimal", Divide: "NumpadDivide", F1: "F1", F2: "F2", F3: "F3", F4: "F4", F5: "F5", F6: "F6", F7: "F7", F8: "F8", F9: "F9", F10: "F10", F11: "F11", F12: "F12", NumLock: "NumLock", ScrollLock: "ScrollLock" } } class ae { static clamp(e, t = -1 / 0, i = 1 / 0) { return Math.min(Math.max(e, t), i) } static getScale(e) { const t = e.blueprint?.getScale() ?? getComputedStyle(e).getPropertyValue("--ueb-scale"); return "" != t ? parseFloat(t) : 1 } static minDecimals(e, t = 1, i = 1e-8) { const s = e * 10 ** t; return Math.abs(s % 1) > i ? e.toString() : e.toFixed(t) } static roundDecimals(e, t = 1) { const i = 10 ** t; return Math.round(e * i) / i } static printExponential(e) { if (e == Number.POSITIVE_INFINITY) return "inf"; if (e == Number.NEGATIVE_INFINITY) return "-inf"; const t = Math.round(e); if (t >= 1e3) { const i = Math.floor(Math.log10(t)); return `${Math.round(e / 10 ** (i - 2)) / 100}e+${i < 10 ? "0" : ""}${i}` } return 0 == Math.floor(e) ? e.toString() : this.roundDecimals(e, Math.max(0, 3 - Math.floor(e).toString().length)).toString() } static approximatelyEqual(e, t, i = 1e-8) { return !(Math.abs(e - t) > i) } static convertLocation(e, t, i = !1) { const s = i ? 1 : 1 / ae.getScale(t), n = t.getBoundingClientRect(); return [Math.round((e[0] - n.x) * s), Math.round((e[1] - n.y) * s)] } static isSerialized(e, t) { return e.attributes?.[t]?.serialized ?? e.constructor.attributes?.[t]?.serialized ?? !1 } static objectGet(e, t, i = void 0) { if (void 0 !== e) { if (!(t instanceof Array)) throw new TypeError("UEBlueprint: Expected keys to be an array"); return 0 != t.length && t[0] in e && void 0 !== e[t[0]] ? 1 == t.length ? e[t[0]] : ae.objectGet(e[t[0]], t.slice(1), i) : i } } static objectSet(e, t, i, s = Object) { if (!(t instanceof Array)) throw new TypeError("Expected keys to be an array."); if (1 == t.length) { if (t[0] in e || void 0 === e[t[0]]) return e[t[0]] = i, !0 } else if (t.length > 0) return e[t[0]] instanceof Object || (e[t[0]] = new s), ae.objectSet(e[t[0]], t.slice(1), i, s); return !1 } static snapToGrid(e, t, i) { return 1 === i ? [e, t] : [i * Math.floor(e / i), i * Math.floor(t / i)] } static mergeArrays(e = [], t = [], i = (e, t) => e == t) { let s = []; e = [...e], t = [...t]; e: for (; ;) { for (let n = 0; n < t.length; ++n)for (let r = 0; r < e.length; ++r)if (i(e[r], t[n])) { s.push(...e.splice(0, r), ...t.splice(0, n), ...e.splice(0, 1)), t.shift(); continue e } break e } return [...new Set(s.concat(...e, ...t))] } static escapeNewlines(e) { return e.replaceAll("\n", "\\n").replaceAll("\t", "\\t") } static escapeString(e, t = !0) { let i = e.replaceAll(new RegExp(`(${re.stringEscapedCharacters.source})`, "g"), "\\$1"); return t && (i = i.replaceAll("\n", "\\n").replaceAll("\t", "\\t")), i } static unescapeString(e) { return e.replaceAll(new RegExp(re.unescapedBackslash.source + "t", "g"), "\t").replaceAll(new RegExp(re.unescapedBackslash.source + "n", "g"), "\n").replaceAll(new RegExp(`\\\\(${re.stringEscapedCharacters.source})`, "g"), "$1") } static clearHTMLWhitespace(e) { return e.replaceAll(" ", " ").replaceAll(/|/g, "\n").replaceAll(/(\)/g, "") } static encodeHTMLWhitespace(e) { return e.replaceAll(" ", " ") } static capitalFirstLetter(e) { return 0 === e.length ? e : e.charAt(0).toUpperCase() + e.slice(1) } static formatStringName(e = "") { return e.replace(/^\s*b(?=[A-Z])/, "").replaceAll(re.nameRegexSpaceReplacement, " ").trim().split(" ").map((e => ae.capitalFirstLetter(e))).join(" ") } static getIdFromReference(e) { return e.replace(/(?:.+\.)?([^\.]+)$/, "$1").replaceAll(/(?<=[a-z\d])(?=[A-Z])|(?<=[a-zA-Z])(?=\d)|(?<=[A-Z]{2})(?=[A-Z][a-z])/g, "-").toLowerCase() } static getNameFromPath(e, t = !1) { const i = t ? /([^\.\/]+?)(?:_\d+)$/ : /([^\.\/]+)$/; return e.match(i)?.[1] ?? "" } static getPolarCoordinates(e, t, i = !1) { let s = Math.atan2(t, e); return i && s < 0 && (s = 2 * Math.PI + s), [Math.sqrt(e * e + t * t), s] } static getCartesianCoordinates(e, t) { return [e * Math.cos(t), e * Math.sin(t)] } static range(e = 0, t = 0, i = (t >= e ? 1 : -1)) { return Array.from({ length: Math.ceil((t - e) / i) }, ((t, s) => e + s * i)) } static getFirstWordOrder(e) { return new RegExp(/\s*/.source + e.join(/[^\n]+\n\s*/.source) + /\s*/.source) } static paste(e, t) { const i = new ClipboardEvent("paste", { bubbles: !0, cancelable: !0, clipboardData: new DataTransfer }); i.clipboardData.setData("text", t), e.dispatchEvent(i) } static async copy(e) { const t = new ClipboardEvent("copy", { bubbles: !0, cancelable: !0, clipboardData: new DataTransfer }); e.dispatchEvent(t) } static animate(e, t, i, s, n = e => { }, r = e => { const t = e ** 3.5; return t / (t + (1 - e) ** 3.5) }) { let a; const o = l => { void 0 === a && (a = l); let u = (l - a) / i; ae.approximatelyEqual(u, 1) || u > 1 ? u = 1 : n(requestAnimationFrame(o)); const c = e + (t - e) * r(u); s(c) }; n(requestAnimationFrame(o)) } } class oe extends se { #e; get blueprint() { return this.#e } set blueprint(e) { this.#e = e } #t; get entity() { return this.#t } set entity(e) { this.#t = e } #i; get template() { return this.#i } isInitialized = !1; isSetup = !1; inputObjects = []; initialize(e, t) { this.requestUpdate(), this.#t = e, this.#i = t, this.#i.initialize(this), this.isConnected && this.updateComplete.then((() => this.setup())), this.isInitialized = !0 } connectedCallback() { super.connectedCallback(), this.blueprint = this.closest("ueb-blueprint"), this.isInitialized && (this.requestUpdate(), this.updateComplete.then((() => this.setup()))) } disconnectedCallback() { super.disconnectedCallback(), this.isSetup && this.updateComplete.then((() => this.cleanup())), this.acknowledgeDelete() } createRenderRoot() { return this } setup() { this.template.setup(), this.isSetup = !0 } cleanup() { this.template.cleanup(), this.isSetup = !1 } willUpdate(e) { super.willUpdate(e), this.template.willUpdate(e) } update(e) { super.update(e), this.template.update(e) } render() { return this.template.render() } firstUpdated(e) { super.firstUpdated(e), this.template.firstUpdated(e), this.template.inputSetup() } updated(e) { super.updated(e), this.template.updated(e) } acknowledgeDelete() { let e = new CustomEvent(re.removeEventName); this.dispatchEvent(e) } isSameGraph(e) { return this.blueprint && this.blueprint == e?.blueprint } } class le { static arrayPin = G``; static branchNode = G``; static breakStruct = G``; static cast = G``; static close = G``; static convert = G``; static correct = G``; static delegate = G``; static doN = G``; static doOnce = G``; static enum = G``; static event = G``; static execPin = G``; static expandIcon = G``; static flipflop = G``; static forEachLoop = G``; static functionSymbol = G``; static gamepad = G``; static genericPin = G``; static keyboard = G``; static loop = G``; static macro = G``; static mapPin = G``; static makeArray = G``; static makeMap = G``; static makeSet = G``; static makeStruct = G``; static metasoundFunction = G``; static mouse = G``; static node = G``; static operationPin = G``; static pcgStackPin = G``; static pcgPin = G``; static pcgParamPin = G``; static pcgSpatialPin = G``; static plusCircle = G``; static questionMark = G``; static referencePin = G``; static reject = G``; static setPin = G``; static select = G``; static sequence = G``; static sound = G``; static spawnActor = G``; static switch = G``; static timer = G``; static touchpad = G`` } class ue { static makeSuccess(e, t, i = null, s = 0) { return { status: !0, value: t, position: e, bestParser: i, bestPosition: s } } static makeFailure(e = 0, t = null, i = 0) { return { status: !1, value: null, position: e, bestParser: t, bestPosition: i } } static makeContext(e = null, t = "") { return { parsernostrum: e, input: t, highlighted: null } } static makePathNode(e, t = 0, i = null) { return { parent: i, current: e, index: t } } } class ce { static indentation = " "; static highlight = "Last valid parser"; Self; static frame(e, t = "", i = "") { t = e ? "[ " + t + " ]" : ""; let s = e.split("\n"); const n = Math.max(...s.map((e => e.length))), r = n < t.length ? " ".repeat(t.length - n) : ""; for (let e = 0; e < s.length; ++e)s[e] = i + "| " + s[e] + " ".repeat(n - s[e].length) + r + " |"; t.length < n && (t += "─".repeat(n - t.length)); const a = "┌─" + t + "─┐", o = i + "└─" + "─".repeat(t.length) + "─┘"; return s = [a, ...s, o], s.join("\n") } makePath(e, t) { return { current: this, parent: e, index: t } } isHighlighted(e, t) { if (e.highlighted instanceof ce) return e.highlighted === this; if (!e.highlighted || !t?.current) return !1; let i, s; for (i = t, s = e.highlighted; i.current && s.current; i = i.parent, s = s.parent)if (i.current !== s.current || i.index !== s.index) return !1; return !i.current && !s.current } isVisited(e) { if (!e) return !1; for (e = e.parent; null != e; e = e.parent)if (e.current === this) return !0; return !1 } parse(e, t, i, s) { return null } toString(e = ue.makeContext(null, ""), t = "", i = null, s = 0) { if (i = this.makePath(i, s), this.isVisited(i)) return "<...>"; const n = this.isVisited(i), r = this.isHighlighted(e, i); let a = n ? "<...>" : this.doToString(e, r ? "" : t, i, s); return r && (a = ce.frame(a, ce.highlight, t)), a } doToString(e, t, i, s) { return `${this.constructor.name} does not implement toString()` } } class he extends ce { #s; get value() { return this.#s } constructor(e) { super(), this.#s = e } parse(e, t, i, s) { i = this.makePath(i, s); const n = t + this.#s.length, r = e.input.substring(t, n); return this.#s === r ? ue.makeSuccess(n, this.#s, i, n) : ue.makeFailure() } doToString(e, t, i, s) { return `"${this.value.replaceAll("\n", "\\n").replaceAll('"', '\\"')}"` } } class pe extends ce { static instance = new pe; parse(e, t, i, s) { return i = this.makePath(i, s), ue.makeSuccess(t, "", i, 0) } doToString(e, t, i, s) { return "" } } class de extends ce { #n; get parsers() { return this.#n } constructor(...e) { super(), this.#n = e } parse(e, t, i, s) { i = this.makePath(i, s); const n = ue.makeSuccess(0, ""); for (let s = 0; s < this.#n.length; ++s) { const r = this.#n[s].parse(e, t, i, s); if (r.bestPosition > n.bestPosition && (n.bestParser = r.bestParser, n.bestPosition = r.bestPosition), r.status) return n.value = r.value, n.position = r.position, n } return n.status = !1, n.value = null, n } doToString(e, t, i, s) { if (2 === this.#n.length && this.#n[1] instanceof pe) { let s = this.#n[0].toString(e, t, i, 0); return this.#n[0] instanceof he || (s = "<" + s + ">"), s += "?", s } const n = t + ce.indentation; let r = "ALT<\n" + n + this.#n.map(((t, s) => t.toString(e, n + " ".repeat(0 === s ? 0 : ce.indentation.length - 2), i, s))).join("\n" + n + "| ") + "\n" + t + ">"; return r } } class me extends ce { #r; get parser() { return this.#r } #a; constructor(e, t) { super(), this.#r = e, this.#a = t } parse(e, t, i, s) { i = this.makePath(i, s); const n = this.#r.parse(e, t, i, 0); if (!n.status) return n; const r = this.#a(n.value, e.input, n.position).getParser().parse(e, n.position, i, 0); return n.bestPosition > r.bestPosition && (r.bestParser = n.bestParser, r.bestPosition = n.bestPosition), r } doToString(e, t, i, s) { return this.#r.toString(e, t, i, 0) + " => chained" } } class ge extends ce { static instance = new ge; parse(e, t, i, s) { return ue.makeFailure() } doToString(e, t, i, s) { return "" } } class be extends ce { #r; get parser() { return this.#r } #o = ""; constructor(e, t) { super(), this.#r = e, this.#o = t } makePath(e, t) { return e } parse(e, t, i, s) { return this.parse = this.#r.parse.bind(this.#r), this.parse(e, t, i, s) } doToString(e, t, i, s) { let n = this.#r.toString(e, "", i, s); return n = ce.frame(n, this.#o, t), n } } class ve extends ce { #r; #l; constructor(e) { super(), this.#r = e } makePath(e, t) { return e } isHighlighted(e, t) { if (super.isHighlighted(e, t)) { const i = { parent: t, parser: this.#l, index: 0 }; e.highlighted = e.highlighted instanceof ce ? this.#l : i } return !1 } resolve() { return this.#l || (this.#l = this.#r().getParser()), this.#l } parse(e, t, i, s) { return this.resolve(), this.parse = this.#l.parse.bind(this.#l), this.parse(e, t, i, s) } doToString(e, t, i, s) { return this.resolve(), this.doToString = this.#l.toString.bind(this.#l), this.doToString(e, t, i, s) } } class fe extends ce { #r; get parser() { return this.#r } #u; get type() { return this.#u } static Type = { NEGATIVE_AHEAD: "?!", NEGATIVE_BEHIND: "? String.raw`[^${e}\\]*(?:\\.[^${e}\\]*)*`; static #m = /[-\+]?(?:\d*\.)?\d+/; static common = { number: new RegExp(this.#m.source + String.raw`(?!\.)`), numberInteger: /[\-\+]?\d+(?!\.\d)/, numberNatural: /\d+/, numberExponential: new RegExp(this.#m.source + String.raw`(?:[eE][\+\-]?\d+)?(?!\.)`), numberUnit: /\+?(?:0(?:\.\d+)?|1(?:\.0+)?)(?![\.\d])/, numberByte: /0*(?:25[0-5]|2[0-4]\d|1?\d?\d)(?!\d|\.)/, whitespace: /\s+/, whitespaceOpt: /\s*/, whitespaceInline: /[^\S\n]+/, whitespaceInlineOpt: /[^\S\n]*/, whitespaceMultiline: /\s*?\n\s*/, doubleQuotedString: new RegExp(`"(${this.#d('"')})"`), singleQuotedString: new RegExp(`'(${this.#d("'")})'`), backtickQuotedString: new RegExp("`(" + this.#d("`") + ")`") }; constructor(e, t) { super(), this.#c = e, this.#h = new RegExp(`^(?:${e.source})`, e.flags), this.#p = t } parse(e, t, i, s) { i = this.makePath(i, s); const n = this.#h.exec(e.input.substring(t)); n && (t += n[0].length); return n ? ue.makeSuccess(t, this.#p(n), i, t) : ue.makeFailure() } doToString(e, t, i, s) { let n = "/" + this.#c.source + "/"; const r = Object.entries(ye.common).find((([e, t]) => t.source === this.#c.source))?.[0]; return r && (n = "P." + r), n } } class we extends ce { #r; get parser() { return this.#r } #g; get mapper() { return this.#g } constructor(e, t) { super(), this.#r = e, this.#g = t } isHighlighted(e, t) { if (super.isHighlighted(e, t)) { const i = { parent: t, parser: this.#r, index: 0 }; e.highlighted = e.highlighted instanceof ce ? this.#r : i } return !1 } parse(e, t, i, s) { i = this.makePath(i, s); const n = this.#r.parse(e, t, i, 0); return n.status && (n.value = this.#g(n.value)), n } doToString(e, t, i, s) { let n = this.#r.toString(e, t, i, 0); if (this.#r instanceof ye && Object.values(ye.common).includes(this.#r.regexp)) return this.#r.regexp === ye.common.numberInteger && this.#g === BigInt ? "P.numberBigInteger" : n; let r = this.#g.toString(); return (r.length > 60 || r.includes("\n")) && (r = "(...) => { ... }"), n += ` -> map<${r}>`, n } } class Se extends ye { static #g = e => e; constructor(e) { super(e, Se.#g) } } class Ee extends ye { constructor(e, t = 0) { super(e, (e => e[t])) } } class Ce extends ce { #n; get parsers() { return this.#n } constructor(...e) { super(), this.#n = e } parse(e, t, i, s) { i = this.makePath(i, s); const n = new Array(this.#n.length), r = ue.makeSuccess(t, n); for (let t = 0; t < this.#n.length; ++t) { const s = this.#n[t].parse(e, r.position, i, t); if (s.bestPosition > r.bestPosition && (r.bestParser = s.bestParser, r.bestPosition = s.bestPosition), !s.status) { r.status = !1, r.value = null; break } r.value[t] = s.value, r.position = s.position } return r } doToString(e, t, i, s) { const n = t + ce.indentation, r = "SEQ<\n" + n + this.#n.map(((t, s) => t.toString(e, n, i, s))).join("\n" + n) + "\n" + t + ">"; return r } } class Ne extends ce { #r; get parser() { return this.#r } #b; get min() { return this.#b } #v; get max() { return this.#v } constructor(e, t = 0, i = Number.POSITIVE_INFINITY) { if (super(), t > i) throw new Error("Min is greater than max"); this.#r = e, this.#b = t, this.#v = i } parse(e, t, i, s) { i = this.makePath(i, s); const n = ue.makeSuccess(t, [], i); for (let t = 0; t < this.#v; ++t) { const s = this.#r.parse(e, n.position, i, 0); if (s.bestPosition > n.bestPosition && (n.bestParser = s.bestParser, n.bestPosition = s.bestPosition), !s.status) { t < this.#b && (n.status = !1, n.value = null); break } n.value.push(s.value), n.position = s.position } return n } doToString(e, t, i, s) { let n = this.parser.toString(e, t, i, 0); return n += 0 === this.#b && 1 === this.#v ? "?" : 0 === this.#b && this.#v === Number.POSITIVE_INFINITY ? "*" : 1 === this.#b && this.#v === Number.POSITIVE_INFINITY ? "+" : "{" + this.#b + (this.#b !== this.#v ? "," + this.#v : "") + "}", n } } class xe { #r; Self; static lineColumnFromOffset(e, t) { const i = e.substring(0, t).split("\n"); return { line: i.length, column: i[i.length - 1].length + 1 } } static #f = ([e, t]) => e; static #y = ([e, t]) => t; static #w = ([e, t]) => [e, ...t]; static #S = e => e instanceof Array ? e.join("") : e; static number = this.reg(ye.common.number).map(Number); static numberInteger = this.reg(ye.common.numberInteger).map(Number); static numberBigInteger = this.reg(this.numberInteger.getParser().parser.regexp).map(BigInt); static numberNatural = this.reg(ye.common.numberNatural).map(Number); static numberExponential = this.reg(ye.common.numberExponential).map(Number); static numberUnit = this.reg(ye.common.numberUnit).map(Number); static numberByte = this.reg(ye.common.numberByte).map(Number); static whitespace = this.reg(ye.common.whitespace); static whitespaceOpt = this.reg(ye.common.whitespaceOpt); static whitespaceInline = this.reg(ye.common.whitespaceInline); static whitespaceInlineOpt = this.reg(ye.common.whitespaceInlineOpt); static whitespaceMultiline = this.reg(ye.common.whitespaceMultiline); static doubleQuotedString = this.reg(ye.common.doubleQuotedString, 1); static singleQuotedString = this.reg(ye.common.singleQuotedString, 1); static backtickQuotedString = this.reg(ye.common.backtickQuotedString, 1); constructor(e, t = !1) { this.#r = e } static #E(e) { const t = []; for (; e;)t.push(e), e = e.parent; t.reverse(); let i = new Map; for (let e = 1; e < t.length; ++e) { const s = i.get(t[e].current); void 0 !== s ? (t[e + 1] && (t[e + 1].parent = t[s]), i = new Map([...i.entries()].filter((([t, i]) => i <= s || i > e))), i.set(t[e].current, s), t.splice(s + 1, e - s), e = s) : i.set(t[e].current, e) } return t[t.length - 1] } getParser() { return this.#r } run(e) { const t = this.#r.parse(ue.makeContext(this, e), 0, ue.makePathNode(), 0); return t.position !== e.length && (t.status = !1), t } parse(e, t = !0) { const i = this.run(e); if (i.status) return i.value; const s = [Math.ceil(30), Math.floor(30)], n = xe.lineColumnFromOffset(e, i.bestPosition); let r = i.bestPosition; const a = e.replaceAll(/^(\s)+|\s{6,}|\s*?\n\s*/g, ((e, t, s) => { let n = t ? "..." : " ... "; return s <= i.bestPosition && (i.bestPosition < s + e.length ? r -= i.bestPosition - s : r -= e.length - n.length), n })), o = a.substring(0, 60).trimEnd(), l = Math.min(e.substring(i.bestPosition - s[0]).match(/^\s*/)[0].length, s[0] - 1); let u = Math.min(r, s[0] - l); s[0] = Math.max(0, r - s[0]) + l, s[1] = Math.min(e.length, s[0] + 60); let c = a.substring(...s); s[0] > 0 && (c = "..." + c, u += 3), s[1] < a.length - 1 && (c += "..."); const h = this.toString(ce.indentation, !0, xe.#E(i.bestParser)); throw new Error(`Could not parse: ${o}\n\nInput: ${c}\n ` + " ".repeat(u) + `^ From here (line: ${n.line}, ` + `column: ${n.column}, ` + `offset: ${i.bestPosition})${i.bestPosition === e.length ? ", end of string" : ""}\n` + (t ? "\n" + (i.bestParser ? "Last valid parser matched:" : "No parser matched:") + h + "\n" : "")) } static str(e) { return new this(new he(e)) } static reg(e, t = 0) { return new this(new Ee(e, t)) } static regArray(e) { return new this(new Se(e)) } static success() { return new this(pe.instance) } static failure() { return new this(ge.instance) } static seq(...e) { return new this(new Ce(...e.map((e => e.getParser())))) } static alt(...e) { return new this(new de(...e.map((e => e.getParser())))) } static lookahead(e) { return new this(new fe(e.getParser(), fe.Type.POSITIVE_AHEAD)) } static lazy(e) { return new this(new ve(e)) } times(e, t = e) { return new xe(new Ne(this.#r, e, t)) } many() { return this.times(0, Number.POSITIVE_INFINITY) } atLeast(e) { return this.times(e, Number.POSITIVE_INFINITY) } atMost(e) { return this.times(0, e) } opt(e = "") { let t = xe.success(); return "" !== e && (t = t.map((() => e))), xe.alt(this, t) } sepBy(e, t = 1, i = !1) { let s = xe.seq(this, xe.seq(e, this).map(xe.#y).atLeast(t - 1), ...i ? [e.opt([])] : []).map(xe.#w); return 0 === t && (s = s.opt([])), s } skipSpace() { return xe.seq(this, xe.whitespaceOpt).map(xe.#f) } map(e) { return new xe(new we(this.#r, e)) } chain(e) { return new xe(new me(this.#r, e)) } assert(e) { return this.chain(((t, i, s) => e(t, i, s) ? xe.success().map((() => t)) : xe.failure())) } join(e = "") { return this.map(xe.#S) } label(e = "") { return new xe(new be(this.#r, e)) } toString(e = "", t = !1, i = null) { i instanceof xe && (i = i.getParser()); const s = ue.makeContext(this, ""); s.highlighted = i; const n = ue.makePathNode(); return (t ? "\n" + e : "") + this.#r.toString(s, e, n) } } class Pe { static same = e => e; static notWrapped = (e, t) => t; static defaultWrapped = (e, t) => `${e.#C}(${t})`; static wrap = this.defaultWrapped; static attributeSeparator = ","; static keySeparator = "="; static printKey = e => e; static grammar = xe.lazy((() => this.createGrammar())); static unknownEntityGrammar; static unknownEntity; static attributes = {}; static lookbehind = ""; static default; static nullable = !1; static ignored = !1; static serialized = !1; static expected = !1; static inlined = !1; static quoted; static silent = !1; static trailing = !1; #N; get keys() { return this.#N ?? Object.keys(this) } set keys(e) { this.#N = [...new Set(e)] } #C = this.constructor.lookbehind; get lookbehind() { return this.#C.trim() } set lookbehind(e) { this.#C = e } #x = this.constructor.ignored; get ignored() { return this.#x } set ignored(e) { this.#x = e } #P = this.constructor.inlined; get inlined() { return this.#P } set inlined(e) { this.#P = e } #k; get quoted() { return this.#k ?? this.constructor.quoted ?? !1 } set quoted(e) { this.#k = e } #A; get trailing() { return this.#A ?? this.constructor.trailing ?? !1 } set trailing(e) { this.#A = e } constructor(e = {}) { const t = this.constructor.attributes, i = ae.mergeArrays(Object.keys(e), Object.entries(t).filter((([e, t]) => void 0 !== t.default)).map((([e, t]) => e))); for (const s of i) { if (void 0 !== e[s]) { e[s].constructor === Object && (e[s] = new (void 0 !== t[s] ? t[s] : Pe.unknownEntity)(e[s])); const i = t[s]; if (this[s] = e[s], i?.compute) { const t = i.compute(this).grammar.run(e[s].toString()); t.status && (this[s] = t.value) } continue } const i = t[s]; void 0 === i.default || (this[s] = i.default(i)) } } static createGrammar() { return this.unknownEntityGrammar } static actualClass() { let e = this; for (; !e.name;)e = Object.getPrototypeOf(e); return e } static className() { return this.actualClass().name } static asUniqueClass() { let e = this; return this.name.length && (e = class extends (this) { }, e.grammar = e.createGrammar()), e } static withLookbehind(e) { const t = this.asUniqueClass(); return t.lookbehind = e, t } static withDefault(e = e => new e) { const t = this.asUniqueClass(); return t.default = e, t } static flagNullable(e = !0) { const t = this.asUniqueClass(); return t.nullable = e, t } static flagIgnored(e = !0) { const t = this.asUniqueClass(); return t.ignored = e, t } static flagSerialized(e = !0) { const t = this.asUniqueClass(); return t.serialized = e, t } static flagInlined(e = !0) { const t = this.asUniqueClass(); return t.inlined = e, t } static flagQuoted(e = !0) { const t = this.asUniqueClass(); return t.quoted = e, t } static flagSilent(e = !0) { const t = this.asUniqueClass(); return t.silent = e, t } static flagTrailing(e = !0) { const t = this.asUniqueClass(); return t.trailing = e, t } static asSerializedString(e) { return `"${e.replaceAll(/(?<=(?:[^\\]|^)(?:\\\\)*?)"/g, '\\"')}"` } showProperty(e) { let t = this[e]; const i = t.constructor; if (i.silent && void 0 !== i.default) { void 0 === i["#default"] && (i["#default"] = i.default(i)); const e = i["#default"]; return !t.equals(e) } return !0 } listenAttribute(e, t) { const i = Object.getOwnPropertyDescriptor(this, e), s = i.set; s ? (i.set = e => { s(e), t(e) }, Object.defineProperties(this, { [e]: i })) : i.value && Object.defineProperties(this, { ["#" + e]: { value: i.value, writable: !0, enumerable: !1 }, [e]: { enumerable: !0, get() { return this["#" + e] }, set(i) { t(i), this["#" + e] = i } } }) } doSerialize(e = !1, t = "", i = this.constructor, s = i.printKey, n = i.keySeparator, r = i.attributeSeparator, a = i.wrap) { const o = i !== this.constructor; let l = "", u = !0; const c = this instanceof Pe ? this.keys : Object.keys(this); for (const a of c) { const o = this[a], c = o?.constructor; if (void 0 === o || this instanceof Pe && !this.showProperty(a)) continue; u ? u = !1 : l += r; let h = this instanceof Array ? `(${a})` : a; if (h.length && (i.attributes[a]?.quoted || o.quoted) && (h = `"${h}"`), o.inlined) { const a = "ArrayEntity" === c.className() ? e => s(`${h}${e}`) : e => s(`${h}.${e}`); l += o.serialize(e, t, void 0, a, n, r, i.notWrapped); continue } h = s(h), h.length && (l += (r.includes("\n") ? t : "") + h + n); let p = o?.serialize(e, t); l += p } return this instanceof Pe && (o && i.trailing || this.trailing) && l.length && (l += r), a(this, l) } serialize(e = !1, t = "", i = this.constructor, s = i.printKey, n = i.keySeparator, r = i.attributeSeparator, a = i.wrap) { this.constructor; let o = this instanceof Array ? Pe.prototype.doSerialize.bind(this)(e, t, i, s, n, r, a) : this.doSerialize(e, t, i, s, n, r, a); return i.serialized && (o = Pe.asSerializedString(o)), o } equals(e) { if (!(e instanceof Pe)) return !1; const t = Object.keys(this), i = Object.keys(e), s = this.constructor.actualClass(), n = e.constructor.actualClass(); if (!(t.length === i.length && this.lookbehind == e.lookbehind && (e instanceof s || this instanceof n))) return !1; for (let s = 0; s < t.length; ++s) { const n = t[s]; if (!i.includes(n)) return !1; const r = this[n], a = e[n]; if (r instanceof Pe) { if (!r.equals(a)) return !1 } else if (r instanceof Array && a instanceof Array) { if (r.length !== a.length) return !1; for (let e = 0; e < r.length; ++e)if (!(r[e] instanceof Pe && r[e].equals(a[e])) && r[e] !== a[e]) return !1 } else if (r !== a) return !1 } return !0 } } class ke extends Pe { static grammar = this.createGrammar(); static booleanConverter = { fromAttribute: (e, t) => { }, toAttribute: (e, t) => !0 === e ? "true" : !1 === e ? "false" : "" }; #L = !0; get uppercase() { return this.#L } set uppercase(e) { this.#L = e } static createGrammar() { return xe.regArray(/(true)|(True)|(false)|(False)/).map((e => { const t = e[1] ?? e[2] ? new this(!0) : new this(!1); return t.uppercase = void 0 !== (e[2] ?? e[4]), t })).label("BooleanEntity") } constructor(e = !1) { super(), this.value = e } serialize(e = !1, t = "", i = this.constructor) { let s = this.value ? this.#L ? "True" : "true" : this.#L ? "False" : "false"; return i.serialized && (s = `"${s}"`), s } valueOf() { return this.value } } class Ae { static #M = new Map; static registerElement(e, t) { Ae.#M.set(e, t) } static getConstructor(e) { return Ae.#M.get(e) } } class Le extends Pe { static alternatives = []; static className() { let e = super.className(); return this.alternatives.length && (e += ".accepting(" + this.alternatives.map((e => e.className())).join(", ") + ")"), e } static createGrammar() { const e = this.alternatives.map((e => e.grammar)); return 0 == this.alternatives.length || e.includes(this.unknownEntityGrammar) ? this.unknownEntityGrammar : xe.alt(...e) } static accepting(...e) { const t = this.asUniqueClass(); return t.alternatives = e, t.grammar = t.createGrammar(), t } } class Me { static numberRegexSource = xe.number.getParser().parser.regexp.source; static separatedBy = (e, t, i = 1) => new RegExp(e + "(?:" + t + e + ")" + (1 === i ? "*" : 2 === i ? "+" : `{${i},}`)); static Regex = class { static HexDigit = /[0-9a-fA-F]/; static InsideString = /(?:[^"\\]|\\.)*/; static InsideSingleQuotedString = /(?:[^'\\]|\\.)*/; static Integer = /[\-\+]?\d+(?!\d|\.)/; static Number = /[-\+]?(?:\d*\.)?\d+(?!\d|\.)/; static RealUnit = /\+?(?:0(?:\.\d+)?|1(?:\.0+)?)(?![\.\d])/; static Word = Me.separatedBy("[a-zA-Z]", "_"); static Symbol = /[a-zA-Z_]\w*/; static DotSeparatedSymbols = Me.separatedBy(this.Symbol.source, "\\."); static MultipleWordsSymbols = Me.separatedBy(this.Symbol.source, "(?:\\.|\\ +)"); static PathFragment = Me.separatedBy(this.Symbol.source, "[\\.:]"); static PathSpaceFragment = Me.separatedBy(this.Symbol.source, "[\\.:\\ ]"); static Path = new RegExp(`(?:\\/${this.PathFragment.source}){2,}`) }; static null = xe.reg(/\(\s*\)/).map((() => null)); static true = xe.reg(/true/i).map((() => !0)); static false = xe.reg(/false/i).map((() => !1)); static number = xe.regArray(new RegExp(`(${xe.number.getParser().parser.regexp.source})|(\\+?inf)|(-inf)`)).map((([e, t, i, s]) => t ? Number(t) : i ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY)); static bigInt = xe.reg(new RegExp(xe.number.getParser().parser.regexp.source)).map(BigInt).map((e => void 0 !== e[2] ? Number.POSITIVE_INFINITY : void 0 !== e[3] ? Number.NEGATIVE_INFINITY : Number(e[1]))); static naturalNumber = xe.lazy((() => xe.reg(/\d+/).map(Number))); static string = xe.doubleQuotedString.map((e => ae.unescapeString(e))); static colorValue = xe.numberByte; static word = xe.reg(Me.Regex.Word); static symbol = xe.reg(Me.Regex.Symbol); static symbolQuoted = xe.reg(new RegExp('"(' + Me.Regex.Symbol.source + ')"'), 1); static attributeName = xe.reg(Me.Regex.DotSeparatedSymbols); static attributeNameQuoted = xe.reg(new RegExp('"(' + Me.Regex.InsideString.source + ')"'), 1); static guid = xe.reg(new RegExp(`${Me.Regex.HexDigit.source}{32}`)); static commaSeparation = xe.reg(/\s*,\s*(?!\))/); static commaOrSpaceSeparation = xe.reg(/\s*,\s*(?!\))|\s+/); static equalSeparation = xe.reg(/\s*=\s*/); static hexColorChannel = xe.reg(new RegExp(Me.Regex.HexDigit.source + "{2}")); static getAttribute(e, [t, ...i]) { const s = e?.attributes?.[t]; if (s) { if (s.prototype instanceof Le) for (const e of s.alternatives) { const t = this.getAttribute(e, i); if (t) return t } return i.length > 0 ? this.getAttribute(s, i) : s } } static createAttributeGrammar(e, t = this.attributeName, i = this.equalSeparation, s = (e, t, i) => { }) { return xe.seq(t, i).chain((([t, i]) => { const n = t.split(re.keysSeparator), r = this.getAttribute(e, n), a = r ? r.grammar : Pe.unknownEntityGrammar, o = n.length > 1; return a.map((e => t => { ae.objectSet(t, n, e), n.reduce(((e, t, i) => (e[t].inlined = o && i < n.length - 1, e[t])), t), s(t, n, e) })) })) } static createEntityGrammar(e, t = this.commaSeparation, i = null, s = 1) { const n = e.lookbehind instanceof Array ? e.lookbehind.join("|") : e.lookbehind; return xe.seq(xe.reg(new RegExp(String.raw`(${n}\s*)\(\s*`), 1), this.createAttributeGrammar(e).sepBy(t, s), xe.reg(/\s*(,\s*)?\)/, 1)).map((([e, t, i]) => { let s = {}; return e.length && (s.lookbehind = e), t.forEach((e => e(s))), s.trailing = void 0 !== i, s })).chain((t => { (e.lookbehind instanceof Array || e.lookbehind !== n) && (e = e.withLookbehind(n)); const s = Object.keys(t), r = Object.keys(e.attributes); return null != i ? xe.success().assert((e => s.filter((e => r.includes(e))).length / r.length >= i)).map((() => new e(t))) : xe.success().map((() => new e(t))) })) } } class Te extends Pe { static grammar = this.createGrammar(); constructor(e = 0) { super(), this.value = e } static createGrammar() { return xe.number.map((e => new this(e))) } serialize(e = !1, t = "", i = this.constructor) { let s = this.value.toFixed(6); return i.serialized && (s = `"${s}"`), s } valueOf() { return this.value } } class Ie extends Pe { static attributes = { ...super.attributes, R: Te.withDefault(), G: Te.withDefault(), B: Te.withDefault(), A: Te.withDefault((e => new e(1))) }; static grammar = this.createGrammar(); #T = new Te; get H() { return this.#T } set H(e) { this.#T = e } #I = new Te; get S() { return this.#I } set S(e) { this.#I = e } #O = new Te; get V() { return this.#O } set V(e) { this.#O = e } constructor(e) { super(e), e instanceof Array && (e = { R: e[0] ?? 0, G: e[1] ?? 0, B: e[2] ?? 0, A: e[3] ?? 1 }), this.R, this.G, this.B, this.A, this.#D() } static createGrammar() { return Me.createEntityGrammar(this, Me.commaSeparation, .5).label("LinearColorEntity") } static printLinearColor(e) { return `${Math.round(255 * e.R.valueOf())}, ${Math.round(255 * e.G.valueOf())}, ${Math.round(255 * e.B.valueOf())}` } static linearToSRGB(e) { return e <= 0 ? 0 : e >= 1 ? 1 : e < .0031308 ? 12.92 * e : 1.055 * Math.pow(e, 1 / 2.4) - .055 } static sRGBtoLinear(e) { return e <= 0 ? 0 : e >= 1 ? 1 : e < .04045 ? e / 12.92 : Math.pow((e + .055) / 1.055, 2.4) } static getWhite() { return new Ie({ R: new Te(1), G: new Te(1), B: new Te(1) }) } static getLinearColorFromHexGrammar() { const e = /[0-9a-fA-F]/; return xe.regArray(new RegExp("#(" + e.source + "{2})(" + e.source + "{2})(" + e.source + "{2})(" + e.source + "{2})?")).map((([e, t, i, s, n]) => new this({ R: parseInt(t, 16) / 255, G: parseInt(i, 16) / 255, B: parseInt(s, 16) / 255, A: parseInt(n ?? "FF", 16) / 255 }))) } static getLinearColorRGBListGrammar() { return xe.seq(xe.numberByte, Me.commaSeparation, xe.numberByte, Me.commaSeparation, xe.numberByte).map((([e, t, i, s, n]) => new this({ R: e / 255, G: i / 255, B: n / 255, A: 1 }))) } static getLinearColorRGBGrammar() { return xe.seq(xe.reg(/rgb\s*\(\s*/), this.getLinearColorRGBListGrammar(), xe.reg(/\s*\)/)).map((([e, t, i]) => t)) } static getLinearColorRGBAGrammar() { return xe.seq(xe.reg(/rgba\s*\(\s*/), this.getLinearColorRGBListGrammar(), xe.reg(/\s*\)/)).map((([e, t, i]) => t)) } static getLinearColorFromAnyFormat() { return xe.alt(this.getLinearColorFromHexGrammar(), this.getLinearColorRGBAGrammar(), this.getLinearColorRGBGrammar(), this.getLinearColorRGBListGrammar()) } #D() { const e = this.R.value, t = this.G.value, i = this.B.value; if (ae.approximatelyEqual(e, t) && ae.approximatelyEqual(e, i) && ae.approximatelyEqual(t, i)) return this.S.value = 0, void (this.V.value = e); const s = Math.max(e, t, i), n = Math.min(e, t, i), r = s - n; let a; switch (s) { case n: a = 0; break; case e: a = (t - i) / r + (t < i ? 6 : 0); break; case t: a = (i - e) / r + 2; break; case i: a = (e - t) / r + 4 }a /= 6, this.H.value = a, this.S.value = 0 == s ? 0 : r / s, this.V.value = s } setFromRGBA(e, t, i, s = 1) { this.R.value = e, this.G.value = t, this.B.value = i, this.A.value = s, this.#D() } setFromHSVA(e, t, i, s = 1) { const n = Math.floor(6 * e), r = 6 * e - n, a = i * (1 - t), o = [i, i * (1 - r * t), a, a, i * (1 - (1 - r) * t), i], [l, u, c] = [o[n % 6], o[(n + 4) % 6], o[(n + 2) % 6]]; this.R.value = l, this.G.value = u, this.B.value = c, this.A.value = s, this.H.value = e, this.S.value = t, this.V.value = i } setFromWheelLocation(e, t, i, s) { const [n, r] = ae.getPolarCoordinates(e, t, !0); this.setFromHSVA(1 - r / (2 * Math.PI), n, i, s) } toDimmedColor(e = 0) { const t = new Ie; return t.setFromRGBANumber(this.toNumber()), t.setFromHSVA(t.H.value, .6 * t.S.value, .7 * Math.pow(t.V.value + e, .55)), t } toCSSRGBValues() { const e = Math.round(255 * this.R.value), t = Math.round(255 * this.G.value), i = Math.round(255 * this.B.value); return r`${e}${t}${i}` } toRGBA() { return [Math.round(255 * this.R.value), Math.round(255 * this.G.value), Math.round(255 * this.B.value), Math.round(255 * this.A.value)] } toSRGBA() { return [Math.round(255 * Ie.linearToSRGB(this.R.value)), Math.round(255 * Ie.linearToSRGB(this.G.value)), Math.round(255 * Ie.linearToSRGB(this.B.value)), Math.round(255 * this.A.value)] } toRGBAString() { return this.toRGBA().map((e => e.toString(16).toUpperCase().padStart(2, "0"))).join("") } toSRGBAString() { return this.toSRGBA().map((e => e.toString(16).toUpperCase().padStart(2, "0"))).join("") } toHSVA() { return [this.H.value, this.S.value, this.V.value, this.A.value] } toNumber() { return (Math.round(255 * this.R.value) << 24) + (Math.round(255 * this.G.value) << 16) + (Math.round(255 * this.B.value) << 8) + Math.round(255 * this.A.value) } toArray() { return [this.R.value, this.G.value, this.B.value, this.A.value] } setFromRGBANumber(e) { this.A.value = (255 & e) / 255, this.B.value = (e >> 8 & 255) / 255, this.G.value = (e >> 16 & 255) / 255, this.R.value = (e >> 24 & 255) / 255, this.#D() } setFromSRGBANumber(e) { this.A.value = (255 & e) / 255, this.B.value = Ie.sRGBtoLinear((e >> 8 & 255) / 255), this.G.value = Ie.sRGBtoLinear((e >> 16 & 255) / 255), this.R.value = Ie.sRGBtoLinear((e >> 24 & 255) / 255), this.#D() } toString() { return Ie.printLinearColor(this) } } class Oe extends Pe { static type; constructor(e = null) { super(); const t = this.constructor; e ??= void 0 !== t.default ? t.default(t).getter : e, this.getter = e } static createGrammar(e = this.type?.grammar ?? xe.lazy((() => this.unknownEntityGrammar))) { return this.type?.grammar.map((e => new this((() => e)))) } static withDefault(e = e => new e((() => new e.type))) { return super.withDefault(e) } static of(e) { const t = this.asUniqueClass(); return t.type = e, t.grammar = t.createGrammar(), t } doSerialize(e = !1, t = "", i = this.constructor, s = i.printKey, n = i.keySeparator, r = i.attributeSeparator, a = i.wrap) { return this.getter().serialize(e, t, i.type, s, n, r, a) } equals(e) { return e instanceof Oe && (e = e.getter?.()), this.getter?.().equals(e) } valueOf() { return this.valueOf = this.getter().valueOf.bind(this.getter()), this.valueOf() } toString() { return this.toString = this.getter().toString.bind(this.getter()), this.toString() } } class De extends Pe { static numberRegexSource = String.raw`${Me.numberRegexSource}(?<=(?:\.(\d*0+))?)`; static grammar = this.createGrammar(); static precision; #$; get precision() { return this.constructor.precision ?? this.#$ } set precision(e) { this.#$ = e } _value; get value() { return this._value } set value(e) { -0 === e && (e = 0), this._value = e } constructor(e = 0, t = null) { super(), this.value = Number(e), null !== t && (this.#$ = Number(t)) } static createGrammar() { return xe.regArray(new RegExp(`(?${this.numberRegexSource})|(?\\+?inf)|(?-inf)`)).map((({ 2: e, groups: { n: t, posInf: i, negInf: s } }) => new this(t ? Number(t) : i ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY, e?.length))).label("NumberEntity") } static withPrecision(e = 0) { const t = this.asUniqueClass(); return t.precision = e, t } static printNumber(e) { return e == Number.POSITIVE_INFINITY ? "inf" : e == Number.NEGATIVE_INFINITY ? "-inf" : ae.minDecimals(e) } serialize(e = !1, t = "", i = this.constructor) { if (this.value === Number.POSITIVE_INFINITY) return "+inf"; if (this.value === Number.NEGATIVE_INFINITY) return "-inf"; const s = i.precision ?? this.precision; let n = void 0 !== s ? this.value.toFixed(s) : this.value.toString(); return i.serialized && (n = `"${n}"`), n } valueOf() { return this.value } toString() { return this.value.toString() } } class $e extends Pe { static attributes = { ...super.attributes, X: De.withDefault(), Y: De.withDefault(), Z: De.withDefault() }; static grammar = this.createGrammar(); constructor(e) { super(e), this.X, this.Y, this.Z } static createGrammar() { return Me.createEntityGrammar(this, Me.commaSeparation, 1).label("VectorEntity") } toArray() { return [this.X.valueOf(), this.Y.valueOf(), this.Z.valueOf()] } } const Be = /\/Script\/SequencerScripting\.MovieSceneScripting(.+)Channel/, Ge = { A_AccentGrave: "à", Add: "Num +", C_Cedille: "ç", Decimal: "Num .", Divide: "Num /", E_AccentAigu: "é", E_AccentGrave: "è", F1: "F1", F10: "F10", F11: "F11", F12: "F12", F2: "F2", F3: "F3", F4: "F4", F5: "F5", F6: "F6", F7: "F7", F8: "F8", F9: "F9", Gamepad_Special_Left_X: "Touchpad Button X Axis", Gamepad_Special_Left_Y: "Touchpad Button Y Axis", Mouse2D: "Mouse XY 2D-Axis", Multiply: "Num *", Section: "§", Subtract: "Num -", Tilde: "`" }; function He(e = "") { switch (e = e.toLowerCase()) { case "zero": return 0; case "one": return 1; case "two": return 2; case "three": return 3; case "four": return 4; case "five": return 5; case "six": return 6; case "seven": return 7; case "eight": return 8; case "nine": return 9 } } function Ve(e) { let t; switch (e.getType()) { case re.paths.addDelegate: t ??= "Bind Event to "; case re.paths.clearDelegate: t ??= "Unbind all Events from "; case re.paths.removeDelegate: return t ??= "Unbind Event from ", t + ae.formatStringName(e.DelegateReference?.MemberName?.toString().replace(/Delegate$/, "") ?? "None"); case re.paths.asyncAction: if (e.ProxyFactoryFunctionName) return ae.formatStringName(e.ProxyFactoryFunctionName?.toString()); case re.paths.actorBoundEvent: case re.paths.componentBoundEvent: return `${ae.formatStringName(e.DelegatePropertyName?.toString())} (${e.ComponentPropertyName?.toString() ?? "Unknown"})`; case re.paths.callDelegate: return `Call ${e.DelegateReference?.MemberName?.toString() ?? "None"}`; case re.paths.createDelegate: return "Create Event"; case re.paths.customEvent: if (e.CustomFunctionName) return e.CustomFunctionName?.toString(); case re.paths.dynamicCast: return e.TargetType ? `Cast To ${e.TargetType?.getName()}` : "Bad cast node"; case re.paths.enumLiteral: return `Literal enum ${e.Enum?.getName()}`; case re.paths.event: return `Event ${(e.EventReference?.MemberName?.toString() ?? "").replace(/^Receive/, "")}`; case re.paths.executionSequence: return "Sequence"; case re.paths.forEachElementInEnum: return `For Each ${e.Enum?.getName()}`; case re.paths.forEachLoopWithBreak: return "For Each Loop with Break"; case re.paths.functionEntry: return "UserConstructionScript" === e.FunctionReference?.MemberName?.toString() ? "Construction Script" : e.FunctionReference?.MemberName?.toString(); case re.paths.functionResult: return "Return Node"; case re.paths.ifThenElse: return "Branch"; case re.paths.makeStruct: if (e.StructType) return `Make ${e.StructType.getName()}`; case re.paths.materialExpressionComponentMask: { const t = e.getMaterialSubobject(); if (t) return `Mask ( ${re.rgba.filter((e => !0 === t[e].getter().value)).map((e => e + " ")).join("")})` } case re.paths.materialExpressionConstant: t ??= [e.getCustomproperties().find((e => "Value" == e.PinName.toString()))?.DefaultValue]; case re.paths.materialExpressionConstant2Vector: t ??= [e.getCustomproperties().find((e => "X" == e.PinName?.toString()))?.DefaultValue, e.getCustomproperties().find((e => "Y" == e.PinName?.toString()))?.DefaultValue]; case re.paths.materialExpressionConstant3Vector: case re.paths.materialExpressionConstant4Vector: if (!t) { const i = e.getCustomproperties().find((e => "Constant" == e.PinName?.toString()))?.DefaultValue; t = i instanceof $e ? [i.X, i.Y, i.Z].map((e => e.valueOf())) : i instanceof Ie ? [i.R, i.G, i.B, i.A].map((e => e.valueOf())) : [] } if (t?.length > 0) return t.map((e => ae.printExponential(e))).join(","); t = void 0; break; case re.paths.materialExpressionFunctionInput: { const t = e.getMaterialSubobject(); return `Input ${t?.InputName ?? "In"} (${t?.InputType?.value.match(/^.+?_(\w+)$/)?.[1] ?? "Vector3"})` } case re.paths.materialExpressionLogarithm: return "Ln"; case re.paths.materialExpressionLogarithm10: return "Log10"; case re.paths.materialExpressionLogarithm2: return "Log2"; case re.paths.materialExpressionMaterialFunctionCall: const i = e.getMaterialSubobject()?.MaterialFunction; if (i) return i.getName(); break; case re.paths.materialExpressionSquareRoot: return "Sqrt"; case re.paths.materialExpressionSubtract: const s = e.getMaterialSubobject(); if (s) return `Subtract(${s.ConstA ?? "1"},${s.ConstB ?? "1"})`; case re.paths.metasoundEditorGraphExternalNode: { const t = e.ClassName?.Name; if (t) return "Add" === t ? "+" : t } case re.paths.pcgEditorGraphNodeInput: return "Input"; case re.paths.pcgEditorGraphNodeOutput: return "Output"; case re.paths.spawnActorFromClass: let n = e.getCustomproperties().find((e => "ReturnValue" == e.PinName.toString()))?.PinType?.PinSubCategoryObject?.getName(); return "Actor" === n && (n = null), `SpawnActor ${ae.formatStringName(n ?? "NONE")}`; case re.paths.switchEnum: return `Switch on ${e.Enum?.getName() ?? "Enum"}`; case re.paths.switchInteger: return "Switch on Int"; case re.paths.variableGet: return ""; case re.paths.variableSet: return "SET" }let i = e.switchTarget(); if (i) return "E" !== i[0] && (i = ae.formatStringName(i)), `Switch on ${i}`; if (e.isComment()) return e.NodeComment.toString(); const s = e.getHIDAttribute(); if (s) { const t = s.toString(); let i = function (e) { let t = Ge[e]; if (t) return t; if (t = He(e)?.toString(), t) return t; const i = e.match(/NumPad([a-zA-Z]+)/); return i && (t = He(i[1]).toString(), t) ? "Num " + t : void 0 }(t) ?? ae.formatStringName(t); return e.getClass() === re.paths.inputDebugKey ? i = "Debug Key " + i : e.getClass() === re.paths.getInputAxisKeyValue && (i = "Get " + i), i } if (e.getClass() === re.paths.macro) return ae.formatStringName(e.MacroGraphReference?.getMacroName()); if (e.isMaterial() && e.getMaterialSubobject()) { let t = Ve(e.getMaterialSubobject()); return t = t.match(/Material Expression (.+)/)?.[1] ?? t, t } if (e.isPcg() && e.getPcgSubobject()) { let t = e.getPcgSubobject(); return t.NodeTitle ? t.NodeTitle.toString() : Ve(t) } const n = e.getSubgraphObject(); if (n) return n.Graph.getName(); const r = e.getSettingsObject(); if (r) { if (r.ExportPath.type === re.paths.pcgHiGenGridSizeSettings) return `Grid Size: ${r.HiGenGridSize?.toString().match(/\d+/)?.[0]?.concat("00") ?? r.HiGenGridSize?.toString().match(/^\w+$/)?.[0] ?? "256"}`; if (r.BlueprintElementInstance) return ae.formatStringName(r.BlueprintElementType.getName()); if (r.Operation) { const e = r.Name?.toString().match(/PCGMetadata(\w+)Settings_\d+/); if (e) return ae.formatStringName(e[1] + ": " + r.Operation) } const e = r.getSubgraphObject(); if (e && e.Graph) return e.Graph.getName() } let a = e.FunctionReference?.MemberName?.toString(); if (a) { const t = e.FunctionReference.MemberParent?.path ?? ""; switch (a) { case "AddKey": let e = t.match(Be); if (e) return `Add Key (${ae.formatStringName(e[1])})`; case "Concat_StrStr": return "Append" }const i = a.match(re.lineTracePattern); if (i) return "Line Trace" + ("Multi" === i[1] ? " Multi " : " ") + ("" === i[2] ? "By Channel" : ae.formatStringName(i[2])); switch (t) { case re.paths.blueprintGameplayTagLibrary: case re.paths.kismetMathLibrary: case re.paths.slateBlueprintLibrary: case re.paths.timeManagementBlueprintLibrary: const e = a.match(/[BF]([A-Z]\w+)/); switch (e && (a = e[1]), a) { case "Abs": return "ABS"; case "BooleanAND": return "AND"; case "BooleanNAND": return "NAND"; case "BooleanOR": return "OR"; case "Exp": return "e"; case "LineTraceSingle": return "Line Trace By Channel"; case "Max": case "MaxInt64": return "MAX"; case "Min": case "MinInt64": return "MIN"; case "Not_PreBool": return "NOT"; case "Sin": return "SIN"; case "Sqrt": return "SQRT"; case "Square": return "^2"; case "CrossProduct2D": return "cross"; case "Vector4_CrossProduct3": return "cross3"; case "DotProduct2D": case "Vector4_DotProduct": return "dot"; case "Vector4_DotProduct3": return "dot3" }if (a.startsWith("Add_")) return "+"; if (a.startsWith("And_")) return "&"; if (a.startsWith("Conv_")) return ""; if (a.startsWith("Cross_")) return "cross"; if (a.startsWith("Divide_")) return String.fromCharCode(247); if (a.startsWith("Dot_")) return "dot"; if (a.startsWith("EqualEqual_")) return "=="; if (a.startsWith("Greater_")) return ">"; if (a.startsWith("GreaterEqual_")) return ">="; if (a.startsWith("Less_")) return "<"; if (a.startsWith("LessEqual_")) return "<="; if (a.startsWith("Multiply_")) return String.fromCharCode(10799); if (a.startsWith("Not_")) return "~"; if (a.startsWith("NotEqual_")) return "!="; if (a.startsWith("Or_")) return "|"; if (a.startsWith("Percent_")) return "%"; if (a.startsWith("Subtract_")) return "-"; if (a.startsWith("Xor_")) return "^"; break; case re.paths.blueprintSetLibrary: { const e = a.match(/Set_(\w+)/); if (e) return ae.formatStringName(e[1]).toUpperCase() } break; case re.paths.blueprintMapLibrary: { const e = a.match(/Map_(\w+)/); if (e) return ae.formatStringName(e[1]).toUpperCase() } break; case re.paths.kismetArrayLibrary: { const e = a.match(/Array_(\w+)/); if (e) return e[1].toUpperCase() } }return ae.formatStringName(a) } if (e.OpName) { switch (e.OpName.toString()) { case "Boolean::LogicAnd": return "Logic AND"; case "Boolean::LogicEq": return "=="; case "Boolean::LogicNEq": return "!="; case "Boolean::LogicNot": return "Logic NOT"; case "Boolean::LogicOr": return "Logic OR"; case "Matrix::MatrixMultiply": return "Multiply (Matrix * Matrix)"; case "Matrix::MatrixVectorMultiply": return "Multiply (Matrix * Vector4)"; case "Numeric::Abs": return "Abs"; case "Numeric::Add": return "+"; case "Numeric::DistancePos": return "Distance"; case "Numeric::Mul": return String.fromCharCode(10799) }return ae.formatStringName(e.OpName.toString()).replaceAll("::", " ") } return e.FunctionDisplayName ? ae.formatStringName(e.FunctionDisplayName.toString()) : e.ObjectRef ? e.ObjectRef.getName() : ae.formatStringName(e.getNameAndCounter()[0]) } class Re extends Pe { static type; static grammar = this.createGrammar(); get length() { return this.values.length } constructor(e = []) { super(), this.values = e } static createGrammar(e = this.type?.grammar ?? xe.lazy((() => this.unknownEntityGrammar))) { return this.inlined ? e : xe.seq(xe.reg(/\(\s*/), e.sepBy(Me.commaSeparation).opt(), xe.reg(/\s*(,\s*)?\)/, 1)).map((([e, t, i]) => { t = t instanceof Array ? t : []; let s = this; void 0 !== i !== s.trailing && (s = s.flagTrailing(void 0 !== i)); return new s(t) })).label(`ArrayEntity of ${this.type?.className() ?? "unknown values"}`) } static flagInlined(e = !0) { const t = this.asUniqueClass(); return t.inlined = e, t.grammar = t.createGrammar(), t } static of(e) { const t = this.asUniqueClass(); return t.type = e, t.grammar = t.createGrammar(), t } doSerialize(e = !1, t = "", i = this.constructor, s = i.printKey, n = i.keySeparator, r = i.attributeSeparator, a = i.wrap) { if (i.inlined) return super.serialize.bind(this.values, e, t, i, s, n, r, a)(); let o = this.values.map((t => t?.serialize(e))).join(i.attributeSeparator); return this.trailing && (o += i.attributeSeparator), `(${o})` } valueOf() { return this.values } equals(e) { if (!(e instanceof Re) || this.values.length !== e.values.length) return !1; for (let t = 0; t < this.values.length; ++t)if (!this.values[t].equals(e.values[t])) return !1; return !0 } } var _e; "undefined" == typeof window ? import("crypto").then((e => _e = e.default)).catch() : _e = window.crypto; class ze extends Pe { static grammar = this.createGrammar(); static generateGuid() { let e = new Uint32Array(4); _e.getRandomValues(e); let t = ""; return e.forEach((e => { t += ("0".repeat(8) + e.toString(16).toUpperCase()).slice(-8) })), t } constructor(e = ze.generateGuid()) { super(), this.value = e } static createGrammar() { return xe.reg(/[0-9A-F]{32}/i).map((e => new this(e))).label("GuidEntity") } serialize(e = !1, t = "", i = this.constructor) { let s = this.value; return i.serialized && (s = `"${s}"`), s } toString() { return this.value } } class Fe extends De { static grammar = this.createGrammar(); get value() { return super.value } set value(e) { (e = Math.trunc(e)) >= 1 << 31 && e < -(1 << 31) && (e = Math.floor(e), super.value = e) } static createGrammar() { return xe.numberInteger.map((e => new this(e))) } } class je extends Fe { static grammar = this.createGrammar(); get value() { return super.value } set value(e) { e = Math.round(ae.clamp(e, 0)), super.value = e } static createGrammar() { return xe.numberNatural.map((e => new this(e))) } } const Ue = { [re.paths.niagaraBool]: r``, [re.paths.niagaraDataInterfaceVolumeTexture]: r``, [re.paths.niagaraFloat]: r``, [re.paths.niagaraMatrix]: r``, [re.paths.niagaraNumeric]: r``, [re.paths.niagaraPosition]: r``, [re.paths.quat4f]: r``, [re.paths.rotator]: r``, [re.paths.transform]: r``, [re.paths.vector]: r``, [re.paths.vector3f]: r``, [re.paths.vector4f]: r``, Any: r``, "Any[]": r``, audio: r``, blue: r``, bool: r``, byte: r``, class: r``, default: r``, delegate: r``, enum: r``, exec: r``, float: r``, green: r``, int: r``, int32: r``, int64: r``, interface: r``, name: r``, object: r``, Param: r``, "Param[]": r``, Point: r``, "Point[]": r``, real: r``, red: r``, string: r``, struct: r``, Surface: r``, "Surface[]": r``, text: r``, time: r``, Volume: r``, "Volume[]": r``, wildcard: r`` }, Ye = r``; function Ke(e) { let t, i = e.PinFriendlyName ? e.PinFriendlyName.toString() : ae.formatStringName(e.PinName?.toString() ?? ""); return (t = e.PinToolTip?.toString().match(/\s*(.+?(?=\n)|.+\S)\s*/)) && t[1].toLowerCase() === i.toLowerCase() ? t[1] : i } class Xe extends Fe { static grammar = this.createGrammar(); get value() { return super.value } set value(e) { (e = Math.trunc(e)) >= 0 && e < 256 && (super.value = e) } createGrammar() { return xe.numberByte.map((e => new this(e))) } } class qe extends Pe { static grammar = this.createGrammar(); static escapedCharacters = /['"\\]/g; static unescapedBackslash = /(?<=(?:[^\\]|^)(?:\\\\)*)\\(?!\\)/; constructor(e = "") { super(), this.value = e } static createGrammar() { return xe.doubleQuotedString.map((e => new this(qe.unescape(e)))).label("StringEntity") } static escape(e, t = !0) { let i = e.replaceAll(new RegExp(`(${qe.escapedCharacters.source})`, "g"), "\\$1"); return t && (i = i.replaceAll("\n", "\\n").replaceAll("\t", "\\t")), i } static unescape(e) { return e.replaceAll(new RegExp(qe.unescapedBackslash.source + "t", "g"), "\t").replaceAll(new RegExp(qe.unescapedBackslash.source + "n", "g"), "\n").replaceAll(new RegExp(`\\\\(${qe.escapedCharacters.source})`, "g"), "$1") } doSerialize(e = !1) { let t = `"${qe.escape(this.value)}"`; return e && (t = qe.escape(t, !1)), t } valueOf() { return this.value } toString() { return this.value } } class Ze extends Pe { static grammar = this.createGrammar(); static f; static createGrammar() { return qe.grammar } static from(e) { const t = this.asUniqueClass(); return t.f = e, t } static compute(e) { return this.f(e) } } class We extends Pe { static attributeConverter = { fromAttribute: (e, t) => new this(e), toAttribute: (e, t) => e.toString() }; static grammar = this.createGrammar(); static createGrammar() { return Me.symbol.map((e => new this(e))).label("SymbolEntity") } constructor(e = "") { super(), this.value = e } serialize(e = !1, t = "", i = this.constructor) { let s = this.value; return i.serialized && (s = `"${s}"`), s } toString() { return this.value } } class Qe extends We { static grammar = this.createGrammar(); static createGrammar() { return Me.symbol.map((e => new this(e))) } } class Je extends Qe { static grammar = this.createGrammar(); static createGrammar() { return xe.reg(Me.Regex.InsideString).map((e => new this(e))) } } class et extends Pe { static lookbehind = "INVTEXT"; static grammar = this.createGrammar(); constructor(e = "") { super(), this.value = e } static createGrammar() { return xe.alt(xe.seq(xe.reg(new RegExp(`${this.lookbehind}\\s*\\(`)), xe.doubleQuotedString, xe.reg(/\s*\)/)).map((([e, t, i]) => Number(t))), xe.reg(new RegExp(this.lookbehind)).map((() => 0))).map((e => new this(e))).label("InvariantTextEntity") } doSerialize() { return this.lookbehind + "(" + this.value + ")" } valueOf() { return this.value } } class tt extends Pe { static attributeSeparator = ", "; static printKey = e => ""; static lookbehind = "NSLOCTEXT"; static attributes = { ...super.attributes, namespace: qe.withDefault(), key: qe.withDefault(), value: qe.withDefault() }; static grammar = this.createGrammar(); constructor(e = {}) { super(e), this.namespace, this.key, this.value } static createGrammar() { return xe.regArray(new RegExp(String.raw`${tt.lookbehind}\s*\(` + String.raw`\s*"(?${Me.Regex.InsideString.source})"\s*,` + String.raw`\s*"(?${Me.Regex.InsideString.source})"\s*,` + String.raw`\s*"(?${Me.Regex.InsideString.source})"\s*` + String.raw`(?,\s+)?` + String.raw`\)`, "m")).map((({ groups: { namespace: e, key: t, value: i, trailing: s } }) => new this({ namespace: new this.attributes.namespace(ae.unescapeString(e)), key: new this.attributes.namespace(ae.unescapeString(t)), value: new this.attributes.namespace(ae.unescapeString(i)), trailing: void 0 !== s }))).label("LocalizedTextEntity") } toString() { return ae.capitalFirstLetter(this.value.valueOf()) } } class it extends Pe { static attributeSeparator = ", "; static lookbehind = ["LOCGEN_FORMAT_NAMED", "LOCGEN_FORMAT_ORDERED"]; static grammar = this.createGrammar(); constructor(e) { super(), this.values = e } static createGrammar() { return xe.lazy((() => xe.seq(xe.reg(new RegExp(String.raw`(${this.lookbehind.join("|")})\s*\(\s*`), 1), xe.alt(...[qe, tt, et, it].map((e => e.grammar))).sepBy(xe.reg(/\s*\,\s*/)), xe.reg(/\s*\)/)).map((([e, t]) => { const i = new this(t); return i.lookbehind = e, i })))).label("FormatTextEntity") } doSerialize(e = !1, t = "", i = this.constructor, s = i.printKey, n = i.keySeparator, r = i.attributeSeparator, a = i.wrap) { const o = i.attributeSeparator; return this.lookbehind + "(" + this.values.map((t => t.serialize(e))).join(o) + (i.trailing ? o : "") + ")" } toString() { const e = this.values?.[0]?.toString(); if (!e) return ""; const t = this.values.slice(1).map((e => e?.valueOf())); return "LOCGEN_FORMAT_NAMED" == this.lookbehind ? e.replaceAll(/\{([a-zA-Z]\w*)\}/g, ((e, i) => { const s = t.indexOf(i) + 1; return s > 0 && s < t.length ? t[s] : e })) : "LOCGEN_FORMAT_ORDERED" == this.lookbehind ? e.replaceAll(/\{(\d+)\}/g, ((e, i) => { const s = Number(i); return s < t.length ? t[s] : e })) : "" } } class st extends Pe { static grammar = this.createGrammar(); _value; get value() { return this._value } set value(e) { e >= -(1n << 63n) && e < 1n << 63n && (this._value = e) } constructor(e = 0n) { super(), this.value = BigInt(e) } static createGrammar() { return xe.numberBigInteger.map((e => new this(e))) } serialize(e = !1, t = "", i = this.constructor) { let s = this.value.toString(); return i.serialized && (s = `"${s}"`), s } valueOf() { return this.value } toString() { return this.value.toString() } } class nt extends Pe { static _quotedParser = xe.regArray(new RegExp(`'"(${Me.Regex.InsideString.source})"'|'(${Me.Regex.InsideSingleQuotedString.source})'`)).map((([e, t, i]) => t ?? i)); static typeReference = xe.reg(new RegExp(Me.Regex.Path.source + "|" + Me.symbol.getParser().regexp.source)); static fullReferenceGrammar = this.createFullReferenceGrammar(); static grammar = this.createGrammar(); #u; get type() { return this.#u } set type(e) { this.#u = e } #B; get path() { return this.#B } set path(e) { this.#B = e } #G; #H; get full() { return this.#H } set full(e) { this.#H = e } constructor(e = "None", t = "", i = null) { super(), this.#u = e, this.#B = t, this.#H = i ?? (this.type.includes("/") || this.path ? `"${this.type + (this.path ? `'${this.path}'` : "")}"` : this.type) } static createGrammar() { return xe.alt(this.createFullReferenceSerializedGrammar(), this.createFullReferenceGrammar(), this.createTypeReferenceGrammar()).label("ObjectReferenceEntity") } static createFullReferenceGrammar() { return xe.regArray(new RegExp("(" + this.typeReference.getParser().regexp.source + ")(?:" + this._quotedParser.getParser().parser.regexp.source + ")")).map((([e, t, ...i]) => new this(t, i.find((e => e)), e))) } static createFullReferenceSerializedGrammar() { return xe.regArray(new RegExp('"(' + Me.Regex.InsideString.source + "?)(?:'(" + Me.Regex.InsideSingleQuotedString.source + "?)')?\"")).map((([e, t, i]) => new this(t, i, e))) } static createTypeReferenceGrammar() { return this.typeReference.map((e => new this(e, "", e))) } static createNoneInstance() { return new nt("None", "", "None") } getName(e = !1) { return ae.getNameFromPath(this.path.replace(/_C$/, ""), e) } doSerialize(e = !1) { return e ? (void 0 === this.#G && (this.#G = ae.escapeString(this.#H, !1)), this.#G) : this.full } equals(e) { return e instanceof nt && (this.type == e.type && this.path == e.path) } } class rt extends Pe { static grammar = this.createGrammar(); constructor(e = null, t = null) { super(), this.objectName = e, this.pinGuid = t } static createGrammar() { return xe.seq(We.grammar, xe.whitespace, ze.grammar).map((([e, t, i]) => new this(e, i))).label("PinReferenceEntity") } doSerialize() { return this.objectName.serialize() + " " + this.pinGuid.serialize() } } class at extends Pe { static attributes = { ...super.attributes, MemberParent: nt, MemberName: qe, MemberGuid: ze }; static grammar = this.createGrammar(); constructor(e) { super(e), this.MemberParent, this.MemberName, this.MemberGuid } static createGrammar() { return Me.createEntityGrammar(this, Me.commaSeparation, 0, 0) } } class ot extends Pe { static attributes = { ...super.attributes, PinCategory: qe.withDefault(), PinSubCategory: qe, PinSubCategoryObject: nt, PinSubCategoryMemberReference: at, ContainerType: We, bIsReference: ke, bIsConst: ke, bIsWeakPointer: ke, bIsUObjectWrapper: ke, bSerializeAsSinglePrecisionFloat: ke }; static grammar = this.createGrammar(); constructor(e = {}) { super(e), this.PinCategory, this.PinSubCategory, this.PinSubCategoryObject, this.PinSubCategoryMemberReference, this.ContainerType, this.bIsReference, this.bIsConst, this.bIsWeakPointer, this.bIsUObjectWrapper, this.bIsUObjectWrapper, this.bSerializeAsSinglePrecisionFloat } static createGrammar() { return Me.createEntityGrammar(this).label("PinTypeEntity") } copyTypeFrom(e) { for (const t of this.keys) void 0 !== e[t] && (this[t] = e[t]) } } class lt extends Pe { static attributes = { ...super.attributes, X: De.withDefault(), Y: De.withDefault() }; static grammar = this.createGrammar(); constructor(e) { super(e), this.X, this.Y } static createGrammar() { return Me.createEntityGrammar(this, Me.commaSeparation, 1).label("Vector2DEntity") } toArray() { return [this.X.valueOf(), this.Y.valueOf()] } } class ut extends lt { static grammar = this.createGrammar(); static createGrammar() { return xe.alt(xe.regArray(new RegExp(/X\s*=\s*/.source + "(?" + Me.numberRegexSource + ")\\s+" + /Y\s*=\s*/.source + "(?" + Me.numberRegexSource + ")")).map((({ groups: { x: e, y: t } }) => new this({ X: new lt.attributes.X(e), Y: new lt.attributes.Y(t) }))), lt.grammar.map((e => new this({ X: e.X, Y: e.Y })))).label("RBSerializationVector2DEntity") } } class ct extends Pe { static attributes = { ...super.attributes, R: De.withDefault(), P: De.withDefault(), Y: De.withDefault() }; static grammar = this.createGrammar(); constructor(e) { super(e), this.R, this.P, this.Y } static createGrammar() { return Me.createEntityGrammar(this, Me.commaSeparation, 1).label("RotatorEntity") } getRoll() { return this.R } getPitch() { return this.P } getYaw() { return this.Y } } class ht extends ct { static attributeSeparator = ", "; static grammar = this.createGrammar(); static createGrammar() { return xe.alt(xe.regArray(new RegExp(`(${De.numberRegexSource})` + String.raw`\s*,\s*` + `(${De.numberRegexSource})` + String.raw`\s*,\s*` + `(${De.numberRegexSource})`)).map((([e, t, i, s, n, r, a]) => new this({ R: new ct.attributes.R(r, a?.length), P: new ct.attributes.P(t, i?.length), Y: new ct.attributes.Y(s, n?.length) }))), ct.grammar.map((e => new this({ R: e.R, P: e.P, Y: e.Y })))).label("SimpleSerializationRotatorEntity") } doSerialize() { const e = this.constructor.attributeSeparator; return this.P.serialize() + e + this.Y.serialize() + e + this.R.serialize() + (this.trailing ? e : "") } } class pt extends lt { static attributeSeparator = ", "; static grammar = this.createGrammar(); static createGrammar() { return xe.alt(xe.regArray(new RegExp(`(${De.numberRegexSource})` + String.raw`\s*,\s*` + `(${De.numberRegexSource})`)).map((([e, t, i, s, n]) => new this({ X: new lt.attributes.X(t, i?.length), Y: new lt.attributes.Y(s, n?.length) }))), lt.grammar.map((e => new this({ X: e.X, Y: e.Y })))).label("SimpleSerializationVector2DEntity") } doSerialize() { const e = this.constructor.attributeSeparator; return this.X.serialize() + e + this.Y.serialize() + (this.trailing ? e : "") } } class dt extends Pe { static attributes = { ...super.attributes, X: De.withDefault(), Y: De.withDefault(), Z: De.withDefault(), W: De.withDefault() }; static grammar = this.createGrammar(); constructor(e) { super(e), this.X, this.Y, this.Z, this.W } static createGrammar() { return Me.createEntityGrammar(this, Me.commaSeparation, 1).label("Vector4DEntity") } toArray() { return [this.X.valueOf(), this.Y.valueOf(), this.Z.valueOf(), this.W.valueOf()] } } class mt extends dt { static grammar = this.createGrammar(); static createGrammar() { return xe.alt(xe.regArray(new RegExp(`(${Me.numberRegexSource})` + String.raw`\s*,\s*` + `(${Me.numberRegexSource})` + String.raw`\s*,\s*` + `(${Me.numberRegexSource})` + String.raw`\s*,\s*` + `(${Me.numberRegexSource})`)).map((([e, t, i, s, n]) => new this({ X: new dt.attributes.X(t), Y: new dt.attributes.Y(i), Z: new dt.attributes.Z(s), W: new dt.attributes.W(n) }))), dt.grammar) } } class gt extends $e { static allowShortSerialization = !1; static attributeSeparator = ", "; static grammar = this.createGrammar(); static createGrammar() { return xe.alt(xe.regArray(new RegExp(`(${De.numberRegexSource})` + (this.allowShortSerialization ? "(?:" : "") + String.raw`\s*,\s*` + `(${De.numberRegexSource})` + String.raw`\s*,\s*` + `(${De.numberRegexSource})` + (this.allowShortSerialization ? ")?" : ""))).map((([e, t, i, s, n, r, a]) => new this({ X: new $e.attributes.X(t, i?.length), Y: new $e.attributes.Y(s, n?.length), Z: new $e.attributes.Z(r, a?.length) }))), $e.grammar.map((e => new this({ X: e.X, Y: e.Y, Z: e.Z })))) } static flagAllowShortSerialization(e = !0) { const t = this.asUniqueClass(); return e !== t.allowShortSerialization && (t.allowShortSerialization = e, t.grammar = t.createGrammar()), t } doSerialize() { const e = this.constructor.attributeSeparator; return this.X.serialize() + e + this.Y.serialize() + e + this.Z.serialize() + (this.trailing ? e : "") } } class bt extends Pe { static lookbehind = "Pin"; static #V = { bool: ke, byte: Xe, enum: Qe, exec: qe, int: Fe, int64: st, name: qe, real: De, string: qe, [re.paths.linearColor]: Ie, [re.paths.niagaraPosition]: $e, [re.paths.rotator]: ct, [re.paths.vector]: $e, [re.paths.vector2D]: lt, [re.paths.vector4f]: dt }; static #R = { enum: Je, rg: ut, [re.paths.niagaraPosition]: gt.flagAllowShortSerialization(), [re.paths.rotator]: ht, [re.paths.vector]: gt, [re.paths.vector2D]: pt, [re.paths.vector3f]: gt, [re.paths.vector4f]: mt }; static attributes = { PinId: ze.withDefault(), PinName: qe.withDefault(), PinFriendlyName: Le.accepting(tt, it, et, qe), PinToolTip: qe, Direction: qe, PinType: ot.withDefault().flagInlined(), LinkedTo: Re.of(rt).withDefault().flagSilent(), SubPins: Re.of(rt), ParentPin: rt, DefaultValue: Ze.from((e => e.getEntityType(!0)?.flagSerialized() ?? qe)), AutogeneratedDefaultValue: qe, DefaultObject: nt, PersistentGuid: ze, bHidden: ke, bNotConnectable: ke, bDefaultValueIsReadOnly: ke, bDefaultValueIsIgnored: ke, bAdvancedView: ke, bOrphanedPin: ke }; static grammar = this.createGrammar(); #_ = !1; set recomputesNodeTitleOnChange(e) { this.#_ = e } get recomputesNodeTitleOnChange() { return this.#_ } #z = null; get objectEntity() { try { return this.#z } catch (e) { return null } } set objectEntity(e) { this.#z = e } #F; get pinIndex() { return this.#F } set pinIndex(e) { this.#F = e } constructor(e = {}) { super(e), this.PinId, this.PinName, this.PinFriendlyName, this.PinToolTip, this.Direction, this.PinType, this.LinkedTo, this.DefaultValue, this.AutogeneratedDefaultValue, this.DefaultObject, this.PersistentGuid, this.bHidden, this.bNotConnectable, this.bDefaultValueIsReadOnly, this.bDefaultValueIsIgnored, this.bAdvancedView, this.bOrphanedPin, this.objectEntity } static createGrammar() { return Me.createEntityGrammar(this) } static fromLegacyObject(e) { return new bt(e) } getType() { const e = this.PinType.PinCategory?.toString().toLocaleLowerCase(); if ("struct" === e || "class" === e || "object" === e || "type" === e) return this.PinType.PinSubCategoryObject?.path; if (this.isEnum()) return "enum"; if (this.objectEntity?.isPcg()) { const e = this.objectEntity.getPcgSubobject(), t = this.isInput() ? e.InputPins?.valueOf()[this.pinIndex] : e.OutputPins?.valueOf()[this.pinIndex]; if (t) { const i = e[re.subObjectAttributeNameFromReference(t, !0)]; let s = i.Properties?.AllowedTypes?.toString() ?? ""; if ("" == s && (s = this.PinType.PinCategory ?? "", "" == s && (s = "Any")), s) return !1 !== i.Properties.bAllowMultipleData?.valueOf() && !1 !== i.Properties.bAllowMultipleConnections?.valueOf() && (s += "[]"), s } } if ("optional" === e) { const e = this.PinType.PinSubCategory?.toString(); switch (e) { case "red": return "real"; case "rg": return "rg"; case "rgb": return re.paths.vector; case "rgba": return re.paths.linearColor; default: return e } } return e } getEntityType(e = !1) { const t = this.getType(), i = bt.#V[t], s = bt.#R[t]; return e && void 0 !== s ? s : i } pinTitle() { return Ke(this) } copyTypeFrom(e) { this.PinType = e.PinType } getDefaultValue(e = !1) { return void 0 === this.DefaultValue && e && (this.DefaultValue = new (this.getEntityType(!0))), this.DefaultValue } isEnum() { const e = this.PinType.PinSubCategoryObject?.type; return e === re.paths.enum || e === re.paths.userDefinedEnum || "enum" === e?.toLowerCase() } isExecution() { return "exec" === this.PinType.PinCategory.toString() } isHidden() { return this.bHidden?.valueOf() } isInput() { return !this.isHidden() && "EGPD_Output" != this.Direction?.toString() } isOutput() { return !this.isHidden() && "EGPD_Output" == this.Direction?.toString() } isLinked() { return this.LinkedTo?.length > 0 ?? !1 } linkTo(e, t) { const i = this.LinkedTo.values?.some((i => i.objectName.toString() == e && i.pinGuid.toString() == t.PinId.toString())); return !i && (this.LinkedTo.values.push(new rt(new We(e), t.PinId)), !0) } unlinkFrom(e, t) { const i = this.LinkedTo.values?.findIndex((i => i.objectName.toString() == e && i.pinGuid.toString() == t.PinId.toString())); return i >= 0 && (this.LinkedTo.values.splice(i, 1), 0 === this.LinkedTo.length && void 0 === bt.attributes.LinkedTo.default && (this.LinkedTo.values = []), !0) } getSubCategory() { return this.PinType.PinSubCategoryObject?.path } pinColor() { return function (e) { if ("mask" === e.PinType.PinCategory?.toString()) { const t = Ue[e.PinType.PinSubCategory?.toString()]; if (t) return t } else if ("optional" === e.PinType.PinCategory?.toString()) return Ye; return Ue[e.getType()] ?? Ue[e.PinType.PinCategory?.toString().toLowerCase()] ?? Ue.default }(this) } } const vt = e => e.PinName?.toString().match(/^\s*([A-Z])\s*$/)?.[1]?.charCodeAt(0) - "A".charCodeAt(0); class ft extends Pe { static attributes = { ...super.attributes, MacroGraph: nt, GraphBlueprint: nt, GraphGuid: ze }; static grammar = this.createGrammar(); constructor(e) { super(e), this.MacroGraph, this.GraphBlueprint, this.GraphGuid } static createGrammar() { return Me.createEntityGrammar(this) } getMacroName() { const e = this.MacroGraph.path.search(":"); return this.MacroGraph.path.substring(e + 1) } } class yt extends Pe { static grammar = this.createGrammar(); static createGrammar() { return xe.reg(new RegExp(String.raw`\(${xe.whitespaceInlineOpt.getParser().regexp.source}\)`)).map((e => new this)).label("NullEntity") } serialize(e = !1, t = "", i = this.constructor) { let s = "()"; return i.serialized && (s = `"${s}"`), s } } class wt extends Pe { static attributes = { ...super.attributes, ScriptVariable: nt, OriginalChangeId: ze }; static grammar = this.createGrammar(); constructor(e = {}) { super(e), this.ScriptVariable, this.OriginalChangeId } static createGrammar() { return Me.createEntityGrammar(this).label("ScriptVariableEntity") } } class St extends bt { static attributes = { ...super.attributes, PinId: ze }; static grammar = this.createGrammar(); static createGrammar() { return xe.seq(xe.reg(new RegExp(`(${Me.Regex.Symbol.source}\\s*)\\(\\s*`), 1), Me.createAttributeGrammar(this).sepBy(Me.commaSeparation), xe.reg(/\s*(?:,\s*)?\)/)).map((([e, t, i]) => { e ??= ""; let s = {}; return e.length && (s.lookbehind = e), t.forEach((e => e(s))), new this(s) })).label("UnknownPinEntity") } } class Et extends Pe { static attributes = { ...super.attributes, MemberScope: qe, MemberName: qe.withDefault(), MemberGuid: ze, bSelfContext: ke }; static grammar = this.createGrammar(); constructor(e) { super(e), this.MemberScope, this.MemberName, this.MemberGuid, this.bSelfContext } static createGrammar() { return Me.createEntityGrammar(this).label("VariableReferenceEntity") } } class Ct extends Pe { #j = !1; get exported() { return this.#j } set exported(e) { this.#j = e } static #U = /^(\w+?)(?:_(\d+))?$/; static printKey = e => e.startsWith(re.subObjectAttributeNamePrefix) ? "" : e; static attributeSeparator = "\n"; static wrap = this.notWrapped; static trailing = !0; static attributes = { ...super.attributes, Class: nt, Name: qe, Archetype: nt, ExportPath: nt, ObjectRef: nt, BlueprintElementType: nt, BlueprintElementInstance: nt, ConstA: Oe.of(De), ConstB: Oe.of(De), PinTags: Re.of(yt).flagInlined(), PinNames: Re.of(qe).flagInlined(), AxisKey: We, InputAxisKey: We, InputName: qe, InputType: We, NumAdditionalInputs: je, bIsPureFunc: ke, bIsConstFunc: ke, bIsCaseSensitive: ke, VariableReference: Et, SelfContextInfo: We, DelegatePropertyName: qe, DelegateOwnerClass: nt, ComponentPropertyName: qe, EventReference: at, FunctionReference: at, FunctionScript: nt, CustomFunctionName: qe, TargetType: nt, MacroGraphReference: ft, Enum: nt, EnumEntries: Re.of(qe).flagInlined(), InputKey: We, OpName: qe, CachedChangeId: ze, FunctionDisplayName: qe, AddedPins: Re.of(St).withDefault().flagInlined().flagSilent(), ChangeId: ze, MaterialFunction: nt, bOverrideFunction: ke, bInternalEvent: ke, bConsumeInput: ke, bExecuteWhenPaused: ke, bOverrideParentBinding: ke, bControl: ke, bAlt: ke, bShift: ke, bCommand: ke, CommentColor: Ie, bCommentBubbleVisible_InDetailsPanel: ke, bColorCommentBubble: ke, ProxyFactoryFunctionName: qe, ProxyFactoryClass: nt, ProxyClass: nt, StructType: nt, MaterialExpression: nt, MaterialExpressionComment: nt, MoveMode: We, TimelineName: qe, TimelineGuid: ze, SizeX: Oe.of(Fe), SizeY: Oe.of(Fe), Text: Oe.of(qe), MaterialExpressionEditorX: Oe.of(Fe), MaterialExpressionEditorY: Oe.of(Fe), NodeTitle: qe, NodeTitleColor: Ie, PositionX: Oe.of(Fe), PositionY: Oe.of(Fe), SettingsInterface: nt, PCGNode: nt, HiGenGridSize: We, Operation: We, NodePosX: Fe, NodePosY: Fe, NodeHeight: Fe, NodeWidth: Fe, Graph: nt, SubgraphInstance: qe, InputPins: Re.of(nt).flagInlined(), OutputPins: Re.of(nt).flagInlined(), bExposeToLibrary: ke, bCanRenameNode: ke, bCommentBubblePinned: ke, bCommentBubbleVisible: ke, NodeComment: qe, AdvancedPinDisplay: We, DelegateReference: Et, EnabledState: We, NodeGuid: ze, ErrorType: Fe, ErrorMsg: qe, ScriptVariables: Re.of(wt), Node: Oe.of(nt), ExportedNodes: qe, CustomProperties: Re.of(Le.accepting(bt, St)).withDefault().flagSilent() }; static customPropertyGrammar = xe.seq(xe.reg(/CustomProperties\s+/), this.attributes.CustomProperties.type.grammar).map((([e, t]) => e => { (e.CustomProperties ??= new this.attributes.CustomProperties).values.push(t) })); static inlinedArrayEntryGrammar = xe.seq(xe.alt(Me.symbolQuoted.map((e => [e, !0])), Me.symbol.map((e => [e, !1]))), xe.reg(new RegExp(String.raw`\s*\(\s*(\d+)\s*\)\s*\=\s*`), 1).map(Number)).chain((([[e, t], i]) => (this.attributes[e]?.grammar ?? Pe.unknownEntityGrammar).map((s => n => { if (void 0 === n[e]) { let i = Re; t != i.quoted && (i = i.flagQuoted(t)), i.inlined || (i = i.flagInlined()), n[e] = new i } n[e].values[i] = s })))); static grammar = this.createGrammar(); static grammarMultipleObjects = xe.seq(xe.whitespaceOpt, this.grammar, xe.seq(xe.whitespace, this.grammar).map((([e, t]) => t)).many(), xe.whitespaceOpt).map((([e, t, i, s]) => [t, ...i])); constructor(e = {}) { if ("NodePosX" in e != "NodePosY" in e) { const t = Object.entries(e), [i, s] = "NodePosX" in e ? ["NodePosY", Object.keys(e).indexOf("NodePosX") + 1] : ["NodePosX", Object.keys(e).indexOf("NodePosY")]; t.splice(s, 0, [i, new Fe(0)]), e = Object.fromEntries(t) } super(e), this.AddedPins, this.AdvancedPinDisplay, this.Archetype, this.AxisKey, this.bIsPureFunc, this.BlueprintElementInstance, this.ConstA, this.ConstB, this.BlueprintElementType, this.Class, this.CommentColor, this.ComponentPropertyName, this.CustomFunctionName, this.CustomProperties, this.DelegatePropertyName, this.DelegateReference, this.EnabledState, this.Enum, this.EnumEntries, this.EventReference, this.ExportedNodes, this.ExportPath, this.FunctionDisplayName, this.FunctionReference, this.FunctionScript, this.Graph, this.HiGenGridSize, this.InputAxisKey, this.InputKey, this.InputName, this.InputPins, this.InputType, this.MacroGraphReference, this.MaterialExpression, this.MaterialExpressionComment, this.MaterialExpressionEditorX, this.MaterialExpressionEditorY, this.MaterialFunction, this.Name, this.Node, this.NodeComment, this.NodeHeight, this.NodePosX, this.NodePosY, this.NodeTitle, this.NodeTitleColor, this.NodeWidth, this.NumAdditionalInputs, this.ObjectRef, this.Operation, this.OpName, this.OutputPins, this.PCGNode, this.PinTags, this.PinNames, this.PositionX, this.PositionY, this.ProxyFactoryFunctionName, this.ScriptVariables, this.SettingsInterface, this.SizeX, this.SizeY, this.StructType, this.SubgraphInstance, this.TargetType, this.Text, this.Text, this.VariableReference, this.Pins instanceof Re && this.Pins.valueOf().forEach((e => { const t = this[re.subObjectAttributeNameFromReference(e, !0)]; if (t) { const e = bt.fromLegacyObject(t); e.LinkedTo = new bt.attributes.LinkedTo, this.getCustomproperties(!0).push(e), this.CustomProperties.ignored = !0 } })); const t = this.getMaterialSubobject(); if (t) { const e = t; if (void 0 !== e.SizeX && (e.SizeX.getter = () => this.NodeWidth), e.SizeY && (e.SizeY.getter = () => this.NodeHeight), e.Text && (e.Text.getter = () => this.NodeComment), e.MaterialExpressionEditorX && (e.MaterialExpressionEditorX.getter = () => this.NodePosX), e.MaterialExpressionEditorY && (e.MaterialExpressionEditorY.getter = () => this.NodePosY), this.getType() === re.paths.materialExpressionComponentMask) { const t = re.rgba.map((e => { const t = this.getPinEntities().find((t => t.PinName.toString() === e)); return t.recomputesNodeTitleOnChange = !0, t })); e.keys = [...re.rgba, ...e.keys]; const i = Oe.of(ke).withDefault().flagSilent(); e.R = new i((() => t[0].DefaultValue)), e.G = new i((() => t[1].DefaultValue)), e.B = new i((() => t[2].DefaultValue)), e.A = new i((() => t[3].DefaultValue)) } else if (this.getType() === re.paths.materialExpressionSubtract) { const t = Oe.of(De.withPrecision(6)).withDefault((() => new Oe((() => new De(1))))).flagSilent(), i = this.getCustomproperties().find((e => "A" === e.PinName?.toString())), s = this.getCustomproperties().find((e => "B" === e.PinName?.toString())); (i || s) && (e.keys = ["ConstA", "ConstB", ...e.keys], i && (i.recomputesNodeTitleOnChange = !0, e.ConstA = new t((() => i.DefaultValue))), s && (s.recomputesNodeTitleOnChange = !0, e.ConstB = new t((() => s.DefaultValue)))) } } const i = this.getPcgSubobject(); i && (i.PositionX && (i.PositionX.getter = () => this.NodePosX), i.PositionY && (i.PositionY.getter = () => this.NodePosY), i.getSubobjects().forEach((e => { if (void 0 !== e.Node) { const t = e.Node.getter(); t.type === this.PCGNode.type && t.path === `${this.Name}.${this.PCGNode.path}` && (e.Node.getter = () => new nt(this.PCGNode.type, `${this.Name}.${this.PCGNode.path}`, t.full)) } }))); let s = 0, n = 0; this.getCustomproperties().forEach(((e, t) => { e.objectEntity = this, e.pinIndex = e.isInput() ? s++ : e.isOutput() ? n++ : t })) } static createGrammar() { return xe.seq(xe.reg(/Begin +Object/), xe.seq(xe.whitespace, xe.alt(this.createSubObjectGrammar(), this.customPropertyGrammar, Me.createAttributeGrammar(this, xe.reg(Me.Regex.MultipleWordsSymbols)), Me.createAttributeGrammar(this, Me.attributeNameQuoted, void 0, ((e, t, i) => { ae.objectSet(e, [...t, "quoted"], !0) })), this.inlinedArrayEntryGrammar)).map((([e, t]) => t)).many(), xe.reg(/\s+End +Object/)).map((([e, t, i]) => { const s = {}; return t.forEach((e => e(s))), new this(s) })).label("ObjectEntity") } static createSubObjectGrammar() { return xe.lazy((() => this.grammar)).map((e => t => { e.trailing = !1, t[re.subObjectAttributeNameFromEntity(e)] = e })) } #Y; getClass() { if (!this.#Y && (this.#Y = (this.Class?.path ? this.Class.path : this.Class?.type) ?? this.ExportPath?.type ?? "", this.#Y && !this.#Y.startsWith("/"))) { let e = Object.values(re.paths).find((e => e.endsWith("." + this.#Y))); e && (this.#Y = e) } return this.#Y } getType() { let e = this.getClass(); return this.MacroGraphReference?.MacroGraph?.path ? this.MacroGraphReference.MacroGraph.path : this.MaterialExpression ? this.MaterialExpression.type : e } getObjectName(e = !1) { return e ? this.getNameAndCounter()[0] : this.Name.toString() } getNameAndCounter() { const e = this.getObjectName().match(Ct.#U); return e ? [e[1] ?? "", parseInt(e[2] ?? "0")] : ["", 0] } getCounter() { return this.getNameAndCounter()[1] } getNodeWidth() { return this.NodeWidth ?? this.isComment() ? re.defaultCommentWidth : void 0 } setNodeWidth(e) { this.NodeWidth || (this.NodeWidth = new Fe), this.NodeWidth.value = e } getNodeHeight() { return this.NodeHeight ?? this.isComment() ? re.defaultCommentHeight : void 0 } setNodeHeight(e) { this.NodeHeight || (this.NodeHeight = new Fe), this.NodeHeight.value = e } getNodePosX() { return this.NodePosX?.value ?? 0 } setNodePosX(e) { this.NodePosX || (this.NodePosX = new Fe), this.NodePosX.value = Math.round(e) } getNodePosY() { return this.NodePosY?.value ?? 0 } setNodePosY(e) { this.NodePosY || (this.NodePosY = new Fe), this.NodePosY.value = Math.round(e) } getCustomproperties(e = !1) { return this.CustomProperties.values } getPinEntities() { return this.getCustomproperties().filter((e => e.constructor === bt)) } getSubobjects() { return Object.keys(this).filter((e => e.startsWith(re.subObjectAttributeNamePrefix))).flatMap((e => [this[e], ...this[e].getSubobjects()])) } switchTarget() { const e = this.getClass().match(re.switchTargetPattern); if (e) return e[1] } isEvent() { switch (this.getClass()) { case re.paths.actorBoundEvent: case re.paths.componentBoundEvent: case re.paths.customEvent: case re.paths.event: case re.paths.inputAxisKeyEvent: case re.paths.inputVectorAxisEvent: return !0 }return !1 } isComment() { switch (this.getClass()) { case re.paths.comment: case re.paths.materialGraphNodeComment: return !0 }return !1 } isMaterial() { return this.getClass() === re.paths.materialGraphNode } getMaterialSubobject() { const e = this.MaterialExpression ?? this.MaterialExpressionComment; return e ? this[re.subObjectAttributeNameFromReference(e, !0)] : null } isPcg() { return this.getClass() === re.paths.pcgEditorGraphNode || null != this.getPcgSubobject() } isNiagara() { return this.Class && (this.Class.type ? this.Class.type : this.Class.path)?.startsWith("/Script/NiagaraEditor.") } getPcgSubobject() { const e = this.PCGNode; return e ? this[re.subObjectAttributeNameFromReference(e, !0)] : null } getSettingsObject() { const e = this.SettingsInterface; return e ? this[re.subObjectAttributeNameFromReference(e, !0)] : null } getSubgraphObject() { const e = this.SubgraphInstance; return e ? this[re.subObjectAttributeNameFromName(e)] : null } isDevelopmentOnly() { const e = this.getClass(); return "DevelopmentOnly" === this.EnabledState?.toString() || e.includes("Debug", Math.max(0, e.lastIndexOf("."))) } getHIDAttribute() { return this.InputKey ?? this.AxisKey ?? this.InputAxisKey } getDelegatePin() { return this.getCustomproperties().find((e => "delegate" === e.PinType.PinCategory.toString())) } nodeColor() { return function (e) { switch (e.getType()) { case re.paths.materialExpressionConstant2Vector: case re.paths.materialExpressionConstant3Vector: case re.paths.materialExpressionConstant4Vector: return re.nodeColors.yellow; case re.paths.materialExpressionFunctionInput: case re.paths.materialExpressionTextureCoordinate: case re.paths.materialExpressionWorldPosition: case re.paths.pcgEditorGraphNodeInput: case re.paths.pcgEditorGraphNodeOutput: return re.nodeColors.red; case re.paths.makeStruct: return re.nodeColors.darkBlue; case re.paths.materialExpressionMaterialFunctionCall: return re.nodeColors.blue; case re.paths.materialExpressionTextureSample: return re.nodeColors.darkTurquoise }switch (e.getClass()) { case re.paths.callFunction: return e.bIsPureFunc?.valueOf() ? re.nodeColors.green : re.nodeColors.blue; case re.paths.niagaraNodeFunctionCall: return re.nodeColors.darkerBlue; case re.paths.dynamicCast: return re.nodeColors.turquoise; case re.paths.inputDebugKey: case re.paths.inputKey: return re.nodeColors.red; case re.paths.createDelegate: case re.paths.enumLiteral: case re.paths.makeArray: case re.paths.makeMap: case re.paths.materialGraphNode: case re.paths.select: return re.nodeColors.green; case re.paths.executionSequence: case re.paths.ifThenElse: case re.paths.macro: case re.paths.multiGate: return re.nodeColors.gray; case re.paths.functionEntry: case re.paths.functionResult: return re.nodeColors.violet; case re.paths.timeline: return re.nodeColors.yellow }if (e.switchTarget()) return re.nodeColors.lime; if (e.isEvent()) return re.nodeColors.red; if (e.isComment()) return (e.CommentColor ? e.CommentColor : Ie.getWhite()).toDimmedColor().toCSSRGBValues(); const t = e.getPcgSubobject(); if (t) { if (t.NodeTitleColor) return t.NodeTitleColor.toDimmedColor(.1).toCSSRGBValues(); switch (e.PCGNode?.getName(!0)) { case "Branch": case "Select": return re.nodeColors.intenseGreen } } return e.bIsPureFunc?.valueOf() ? re.nodeColors.green : re.nodeColors.blue }(this) } nodeIcon() { return function (e) { if (e.isMaterial() || e.isPcg() || e.isNiagara()) return null; switch (e.getType()) { case re.paths.addDelegate: case re.paths.asyncAction: case re.paths.callDelegate: case re.paths.clearDelegate: case re.paths.createDelegate: case re.paths.functionEntry: case re.paths.functionResult: case re.paths.removeDelegate: return le.node; case re.paths.customEvent: return le.event; case re.paths.doN: return le.doN; case re.paths.doOnce: return le.doOnce; case re.paths.dynamicCast: return le.cast; case re.paths.enumLiteral: return le.enum; case re.paths.event: return le.event; case re.paths.executionSequence: case re.paths.multiGate: return le.sequence; case re.paths.flipflop: return le.flipflop; case re.paths.forEachElementInEnum: case re.paths.forLoop: case re.paths.forLoopWithBreak: case re.paths.whileLoop: return le.loop; case re.paths.forEachLoop: case re.paths.forEachLoopWithBreak: return le.forEachLoop; case re.paths.ifThenElse: return le.branchNode; case re.paths.isValid: return le.questionMark; case re.paths.makeArray: return le.makeArray; case re.paths.makeMap: return le.makeMap; case re.paths.makeSet: return le.makeSet; case re.paths.makeStruct: return le.makeStruct; case re.paths.metasoundEditorGraphExternalNode: return le.metasoundFunction; case re.paths.select: return le.select; case re.paths.spawnActorFromClass: return le.spawnActor; case re.paths.timeline: return le.timer }if (e.switchTarget()) return le.switch; if (Ve(e).startsWith("Break")) return le.breakStruct; if (e.getClass() === re.paths.macro) return le.macro; const t = e.getHIDAttribute()?.toString(); return t ? t.includes("Mouse") ? le.mouse : t.includes("Gamepad_Special") ? le.keyboard : t.includes("Gamepad") || t.includes("Steam") ? le.gamepad : t.includes("Touch") ? le.touchpad : le.keyboard : e.getDelegatePin() ? le.event : e.ObjectRef?.type === re.paths.ambientSound ? le.sound : le.functionSymbol }(this) } additionalPinInserter() { return function (e) { let t, i, s, n, r; switch (e.getType()) { case re.paths.commutativeAssociativeBinaryOperator: case re.paths.promotableOperator: switch (r = e.FunctionReference?.MemberName?.toString(), r) { default: if (!(r?.startsWith("Add_") || r?.startsWith("Subtract_") || r?.startsWith("Multiply_") || r?.startsWith("Divide_"))) break; case "And_Int64Int64": case "And_IntInt": case "BMax": case "BMin": case "BooleanAND": case "BooleanNAND": case "BooleanOR": case "Concat_StrStr": case "FMax": case "FMin": case "Max": case "MaxInt64": case "Min": case "MinInt64": case "Or_Int64Int64": case "Or_IntInt": t ??= () => e.getPinEntities().filter((e => e.isInput())), i ??= vt, s ??= (i, s = -1, n = -1) => { const r = String.fromCharCode(i >= 0 ? i : n + "A".charCodeAt(0) + 1); return e.NumAdditionalInputs = new je(t().length - 1), r } }break; case re.paths.executionSequence: n ??= "Then"; case re.paths.multiGate: n ??= "Out", t ??= () => e.getPinEntities().filter((e => e.isOutput())), i ??= e => Number(e.PinName?.toString().match(new RegExp(String.raw`^\s*${n}[_\s]+(\d+)\s*$`, "i"))?.[1]), s ??= (e, t = -1, i = -1, s) => `${n} ${e >= 0 ? e : t > 0 ? `${n} 0` : i + 1}`; break; case re.paths.switchInteger: t ??= () => e.getPinEntities().filter((e => e.isOutput())), i ??= e => Number(e.PinName?.toString().match(/^\s*(\d+)\s*$/)?.[1]), s ??= (e, t = -1, i = -1, s) => (e < 0 ? i + 1 : e).toString(); break; case re.paths.switchGameplayTag: s ??= (t, i = -1, s = -1, n) => { const r = `Case_${t >= 0 ? t : i > 0 ? "0" : s + 1}`; return e.PinNames ??= new Re, e.PinNames.valueOf().push(new qe(r)), delete e.PinTags.valueOf()[e.PinTags.length - 1], e.PinTags.valueOf()[e.PinTags.length] = null, r }; case re.paths.switchName: case re.paths.switchString: t ??= () => e.getPinEntities().filter((e => e.isOutput())), i ??= e => Number(e.PinName.toString().match(/^\s*Case[_\s]+(\d+)\s*$/i)?.[1]), s ??= (t, i = -1, s = -1, n) => { const r = `Case_${t >= 0 ? t : i > 0 ? "0" : s + 1}`; return e.PinNames ??= new Re, e.PinNames.valueOf().push(new qe(r)), r } }if (t) return () => { let n = Number.MAX_SAFE_INTEGER, r = Number.MIN_SAFE_INTEGER, a = []; const o = t().reduce(((e, t) => { const s = i(t); if (isNaN(s)) { if (void 0 === e) return t } else if (a.push(s), n = Math.min(s, n), s > r) return r = s, t; return e }), void 0); if (n !== Number.MAX_SAFE_INTEGER && r !== Number.MIN_SAFE_INTEGER || (n = void 0, r = void 0), !o) return null; a.sort(((e, t) => e < t ? -1 : e === t ? 0 : 1)); let l = a[0], u = a.findIndex((e => { const t = e - l > 1; return l = e, t })); const c = new bt(o); return c.PinId = new ze, c.PinName = new qe(s(u, n, r, c)), c.PinToolTip = void 0, c.DefaultValue && (c.DefaultValue = new c.DefaultValue.constructor), e.getCustomproperties(!0).push(c), c } }(this) } showProperty(e) { switch (e) { case "Class": case "Name": case "Archetype": case "ExportPath": case "CustomProperties": return !1 }return super.showProperty(e) } doSerialize(e = !1, t = "", i = this.constructor, s = i.printKey, n = i.keySeparator, r = i.attributeSeparator, a = i.wrap) { const o = t + re.indentation, l = this.trailing; this.trailing = !1; const u = super.doSerialize(e, o, i, s, n, r, a); return this.trailing = l, t + "Begin Object" + (this.Class?.type || this.Class?.path ? ` Class${n}${this.Class.serialize(e)}` : "") + (this.Name ? ` Name${n}${this.Name.serialize(e)}` : "") + (this.Archetype ? ` Archetype${n}${this.Archetype.serialize(e)}` : "") + (this.ExportPath?.type || this.ExportPath?.path ? ` ExportPath${n}${this.ExportPath.serialize(e)}` : "") + (u ? r + u : "") + (!0 !== i.attributes.CustomProperties.ignored && !0 !== this.CustomProperties.ignored ? this.getCustomproperties().map((t => r + o + s("CustomProperties ") + t.serialize(e))).join("") : "") + r + t + "End Object" + (this.trailing ? r : "") } } class Nt extends Ct { constructor(e = {}, t = void 0) { e.Class = new nt(re.paths.knot), e.Name = new Ct.attributes.Name("K2Node_Knot"); const i = new bt({ PinName: new bt.attributes.PinName("InputPin") }), s = new bt({ PinName: new bt.attributes.PinName("OutputPin"), Direction: new bt.attributes.Direction("EGPD_Output") }); t && (i.copyTypeFrom(t), s.copyTypeFrom(t)), e.CustomProperties = new Ct.attributes.CustomProperties([i, s]), super(e) } } class xt { #K; get target() { return this.#K } #e; get blueprint() { return this.#e } consumeEvent; options; listenHandler = () => this.listenEvents(); unlistenHandler = () => this.unlistenEvents(); constructor(e, t, i = {}) { i.consumeEvent ??= !1, i.listenOnFocus ??= !1, i.unlistenOnTextEdit ??= !1, this.#K = e, this.#e = t, this.consumeEvent = i.consumeEvent, this.options = i } setup() { this.options.listenOnFocus && (this.blueprint.addEventListener(re.focusEventName.begin, this.listenHandler), this.blueprint.addEventListener(re.focusEventName.end, this.unlistenHandler)), this.options.unlistenOnTextEdit && (this.blueprint.addEventListener(re.editTextEventName.begin, this.unlistenHandler), this.blueprint.addEventListener(re.editTextEventName.end, this.listenHandler)), this.blueprint.focused && this.listenEvents() } cleanup() { this.unlistenEvents(), this.blueprint.removeEventListener(re.focusEventName.begin, this.listenHandler), this.blueprint.removeEventListener(re.focusEventName.end, this.unlistenHandler), this.blueprint.removeEventListener(re.editTextEventName.begin, this.unlistenHandler), this.blueprint.removeEventListener(re.editTextEventName.end, this.listenHandler) } listenEvents() { } unlistenEvents() { } } class Pt extends Pe { static attributes = { ...super.attributes, ActionName: qe, bShift: ke, bCtrl: ke, bAlt: ke, bCmd: ke, Key: We }; static grammar = this.createGrammar(); constructor(e) { super(e), this.ActionName, this.bShift, this.bCtrl, this.bAlt, this.bCmd, this.Key } static createGrammar() { return xe.alt(We.grammar.map((e => new this({ Key: e }))), Me.createEntityGrammar(this)) } } class kt extends xt { static #X = e => { }; #q; pressedKey = ""; constructor(e, t, i = {}, s = kt.#X, n = kt.#X) { i.activationKeys ??= [], i.consumeEvent ??= !0, i.listenOnFocus ??= !0, i.unlistenOnTextEdit ??= !0, i.activationKeys instanceof Array || (i.activationKeys = [i.activationKeys]), i.activationKeys = i.activationKeys.map((e => { if (e instanceof Pt) return e; if (e.constructor === String) { const t = Pt.grammar.run(e); if (t.status) return t.value } throw new Error("Unexpected key value") })), super(e, t, i), this.onKeyDown = s, this.onKeyUp = n, this.#q = this.options.activationKeys ?? []; let r = this; this.keyDownHandler = e => { r.#q.some((t => (e => e.bShift?.valueOf() || "LeftShift" == e.Key.valueOf() || "RightShift" == e.Key.valueOf())(t) == e.shiftKey && (e => e.bCtrl?.valueOf() || "LeftControl" == e.Key.valueOf() || "RightControl" == e.Key.valueOf())(t) == e.ctrlKey && (e => e.bAlt?.valueOf() || "LeftAlt" == e.Key.valueOf() || "RightAlt" == e.Key.valueOf())(t) == e.altKey && re.Keys[t.Key.value] == e.code)) && (this.consumeEvent && (e.preventDefault(), e.stopImmediatePropagation()), this.pressedKey = e.code, r.fire(), document.removeEventListener("keydown", r.keyDownHandler), document.addEventListener("keyup", r.keyUpHandler)) }, this.keyUpHandler = e => { r.#q.some((t => t.bShift?.valueOf() && "Shift" == e.key || t.bCtrl?.valueOf() && "Control" == e.key || t.bAlt?.valueOf() && "Alt" == e.key || t.bCmd?.valueOf() && "Meta" == e.key || re.Keys[t.Key.value] == e.code)) && (this.consumeEvent && e.stopImmediatePropagation(), r.unfire(), this.pressedKey = "", document.removeEventListener("keyup", this.keyUpHandler), document.addEventListener("keydown", this.keyDownHandler)) } } listenEvents() { document.addEventListener("keydown", this.keyDownHandler) } unlistenEvents() { document.removeEventListener("keydown", this.keyDownHandler) } fire() { this.onKeyDown(this) } unfire() { this.onKeyUp(this) } } class At extends xt { #Z = [0, 0]; get location() { return this.#Z } #W; get enablerKey() { return this.#W } #Q = !0; get enablerActivated() { return this.#Q } constructor(e, t, i = {}) { i.ignoreTranslateCompensate ??= !1, i.ignoreScale ??= !1, i.movementSpace ??= t.getGridDOMElement() ?? document.documentElement, super(e, t, i), this.movementSpace = i.movementSpace, i.enablerKey && (this.#W = i.enablerKey, this.#W.onKeyDown = () => this.#Q = !0, this.#W.onKeyUp = () => this.#Q = !1, this.#W.consumeEvent = !1, this.#W.listenEvents(), this.#Q = !1) } setLocationFromEvent(e) { let t = ae.convertLocation([e.clientX, e.clientY], this.movementSpace, this.options.ignoreScale); return t = this.options.ignoreTranslateCompensate ? t : this.blueprint.compensateTranslation(t[0], t[1]), this.#Z = [...t], this.#Z } } class Lt extends At { static #X = e => { }; #J = e => { if (this.blueprint.setFocused(!0), !this.enablerKey || this.enablerActivated) if (e.button === this.options.clickButton) this.options.strictTarget && e.target !== e.currentTarget || (this.consumeEvent && e.stopImmediatePropagation(), document.addEventListener("mouseup", this.#ee), this.setLocationFromEvent(e), this.clickedPosition[0] = this.location[0], this.clickedPosition[1] = this.location[1], this.blueprint.mousePosition[0] = this.location[0], this.blueprint.mousePosition[1] = this.location[1], this.clicked(this.clickedPosition)); else this.options.exitAnyButton || this.#ee(e) }; #ee = e => { this.options.exitAnyButton && e.button != this.options.clickButton || (this.consumeEvent && e.stopImmediatePropagation(), document.removeEventListener("mouseup", this.#ee), this.unclicked()) }; clickedPosition = [0, 0]; constructor(e, t, i = {}, s = Lt.#X, n = Lt.#X) { i.clickButton ??= re.mouseClickButton, i.consumeEvent ??= !0, i.exitAnyButton ??= !0, i.strictTarget ??= !1, super(e, t, i), this.onClick = s, this.onUnclick = n, this.listenEvents() } listenEvents() { this.target.addEventListener("mousedown", this.#J), this.options.clickButton === re.mouseRightClickButton && this.target.addEventListener("contextmenu", (e => e.preventDefault())) } unlistenEvents() { this.target.removeEventListener("mousedown", this.#J) } clicked(e) { this.onClick(this) } unclicked(e) { this.onUnclick(this) } } class Mt extends At { static ignoreDbClick = e => { }; #te = e => { this.options.strictTarget && e.target !== e.currentTarget || (this.consumeEvent && e.stopImmediatePropagation(), this.clickedPosition = this.setLocationFromEvent(e), this.blueprint.mousePosition = [...this.clickedPosition], this.dbclicked(this.clickedPosition)) }; #ie; get onDbClick() { return this.#ie } set onDbClick(e) { this.#ie = e } clickedPosition = [0, 0]; constructor(e, t, i = {}, s = Mt.ignoreDbClick) { i.consumeEvent ??= !0, i.strictTarget ??= !1, super(e, t, i), this.#ie = s, this.listenEvents() } listenEvents() { this.target.addEventListener("dblclick", this.#te) } unlistenEvents() { this.target.removeEventListener("dblclick", this.#te) } dbclicked(e) { this.onDbClick(e) } } class Tt { static deleteNodes = "Delete"; static duplicateNodes = "(bCtrl=True,Key=D)"; static enableLinkDelete = "LeftAlt"; static enableZoomIn = ["LeftControl", "RightControl"]; static selectAllNodes = "(bCtrl=True,Key=A)" } class It { element; get blueprint() { return this.element.blueprint } #se = []; get inputObjects() { return this.#se } initialize(e) { this.element = e } createInputObjects() { return [] } setup() { this.#se.forEach((e => e.setup())) } cleanup() { this.#se.forEach((e => e.cleanup())) } willUpdate(e) { } update(e) { } render() { return G`` } firstUpdated(e) { } updated(e) { } inputSetup() { this.#se = this.createInputObjects() } } class Ot extends It { update(e) { super.update(e); const [t, i, s, n] = [Math.round(this.element.fromX), Math.round(this.element.fromY), Math.round(this.element.toX), Math.round(this.element.toY)], [r, a, o, l] = [Math.min(t, s), Math.min(i, n), Math.abs(t - s), Math.abs(i - n)]; (e.has("fromX") || e.has("toX")) && (this.element.style.left = `${r}px`, this.element.style.width = `${o}px`), (e.has("fromY") || e.has("toY")) && (this.element.style.top = `${a}px`, this.element.style.height = `${l}px`) } } class Dt extends Ot { static sigmoidPositive(e, t = 3.7, i = 1.1) { return 1 - Math.exp(-((e / i) ** t)) } static decreasingValue(e, t) { const i = -e * t[0] ** 2, s = t[1] - i / t[0]; return e => i / e + s } static clampedLine(e, t) { if (e[0] > t[0]) { const i = e; e = t, t = i } const i = (t[1] - e[1]) / (t[0] - e[0]), s = e[1] - i * e[0]; return n => n < e[0] ? e[1] : n > t[0] ? t[1] : i * n + s } static c1DecreasingValue = Dt.decreasingValue(-.15, [100, 15]); static c2DecreasingValue = Dt.decreasingValue(-.05, [500, 130]); static c2Clamped = Dt.clampedLine([0, 80], [200, 40]); #ne = `ueb-id-${Math.floor(1e12 * Math.random())}`; #re = e => { const t = new Nt({}, this.element.source.entity), i = Ae.getConstructor("ueb-node").newObject(t); i.setLocation(...this.blueprint.snapToGrid(...e)); const s = i.template; this.blueprint.addGraphElement(i); const n = this.element.getInputPin(), r = this.element.getOutputPin(); this.element.source = null, this.element.destination = null; const a = Ae.getConstructor("ueb-link").newObject(r, s.inputPin); this.blueprint.addGraphElement(a), this.element.source = s.outputPin, this.element.destination = n }; createInputObjects() { const e = this.element.querySelector(".ueb-link-area"); return [...super.createInputObjects(), new Mt(e, this.blueprint, void 0, (e => { e[0] += re.knotOffset[0], e[1] += re.knotOffset[1], e = ae.snapToGrid(e[0], e[1], re.gridSize), this.#re(e) })), new Lt(e, this.blueprint, { enablerKey: new kt(this.blueprint, this.blueprint, { activationKeys: Tt.enableLinkDelete }) }, (() => this.blueprint.removeGraphElement(this.element)))] } willUpdate(e) { super.willUpdate(e); const t = this.element.source, i = this.element.destination; if (e.has("fromX") || e.has("toX")) { const e = this.element.fromX, s = this.element.toX, n = t?.nodeElement.getType() == re.paths.knot, r = i?.nodeElement.getType() == re.paths.knot; !n || i && !r || (t?.isInput() && s > e + re.distanceThreshold ? this.element.source = t.nodeElement.template.outputPin : t?.isOutput() && s < e - re.distanceThreshold && (this.element.source = t.nodeElement.template.inputPin)), !r || t && !n || (i?.isInput() && s < e - re.distanceThreshold ? this.element.destination = i.nodeElement.template.outputPin : i?.isOutput() && s > e + re.distanceThreshold && (this.element.destination = i.nodeElement.template.inputPin)) } const s = Math.max(Math.abs(this.element.fromX - this.element.toX), 1), n = Math.max(Math.abs(this.element.fromY - this.element.toY), 1), r = Math.max(s, re.linkMinWidth), a = s / r, o = this.element.originatesFromInput ? this.element.fromX < this.element.toX : this.element.toX < this.element.fromX; this.element.startPixels = s < r ? (r - s) / 2 : 0, this.element.startPercentage = o ? this.element.startPixels + 100 * a : this.element.startPixels; const l = this.element.startPercentage + (o ? Dt.c1DecreasingValue(r) : 10) * a, u = n / Math.max(30, s), c = Dt.c2Clamped(s) * Dt.sigmoidPositive(1.2 * a + .5 * u, 1.5, 1.8) + this.element.startPercentage; this.element.svgPathD = re.linkRightSVGPath(this.element.startPercentage, l, c) } update(e) { super.update(e), e.has("originatesFromInput") && this.element.style.setProperty("--ueb-from-input", this.element.originatesFromInput ? "1" : "0"); const t = this.element.getOutputPin(!0); t && this.element.style.setProperty("--ueb-link-color-rgb", Ie.printLinearColor(t.color)), this.element.style.setProperty("--ueb-y-reflected", "" + (this.element.fromY > this.element.toY ? 1 : 0)), this.element.style.setProperty("--ueb-start-percentage", `${Math.round(this.element.startPercentage)}%`), this.element.style.setProperty("--ueb-link-start", `${Math.round(this.element.startPixels)}`) } render() { return G` ${this.element.linkMessageIcon || this.element.linkMessageText ? G`${this.element.linkMessageIcon !== V ? G`${this.element.linkMessageIcon}` : V} ${this.element.linkMessageText !== V ? G`${this.element.linkMessageText}` : V}` : V}` } } class $t extends oe { static properties = { ...super.properties, fromX: { type: Number, attribute: !1 }, fromY: { type: Number, attribute: !1 }, toX: { type: Number, attribute: !1 }, toY: { type: Number, attribute: !1 } }; constructor() { super(), this.fromX = 0, this.fromY = 0, this.toX = 0, this.toY = 0 } setBothLocations([e, t]) { this.fromX = e, this.fromY = t, this.toX = e, this.toY = t } addSourceLocation(e, t) { this.fromX += e, this.fromY += t } addDestinationLocation(e, t) { this.toX += e, this.toY += t } } class Bt extends $t { static properties = { ...super.properties, dragging: { type: Boolean, attribute: "data-dragging", converter: ke.booleanConverter, reflect: !0 }, originatesFromInput: { type: Boolean, attribute: !1 }, svgPathD: { type: String, attribute: !1 }, linkMessageIcon: { type: String, attribute: !1 }, linkMessageText: { type: String, attribute: !1 } }; #ae; get source() { return this.#ae } set source(e) { this.#oe(e, !1) } #le; get destination() { return this.#le } set destination(e) { this.#oe(e, !0) } #ue = () => this.remove(); #ce = e => this.addSourceLocation(...e.detail.value); #he = e => this.addDestinationLocation(...e.detail.value); #pe = e => this.setSourceLocation(); #de = e => this.setDestinationLocation(); linkMessageIcon = V; linkMessageText = V; pathElement; constructor() { super(), this.dragging = !1, this.originatesFromInput = !1, this.startPercentage = 0, this.svgPathD = "", this.startPixels = 0 } static newObject(e, t) { const i = new Bt; return i.initialize(e, t), i } initialize(e, t) { super.initialize({}, new Dt), e && (this.source = e, t || (this.toX = this.fromX, this.toY = this.fromY)), t && (this.destination = t, e || (this.fromX = this.toX, this.fromY = this.toY)) } #oe(e, t) { const i = () => t ? this.destination : this.source; if (i() != e) { if (i()) { const e = i().getNodeElement(); e.removeEventListener(re.removeEventName, this.#ue), e.removeEventListener(re.nodeDragEventName, t ? this.#he : this.#ce), e.removeEventListener(re.nodeReflowEventName, t ? this.#de : this.#pe), this.#me() } if (t ? this.#le = e : this.#ae = e, i()) { const e = i().getNodeElement(); e.addEventListener(re.removeEventName, this.#ue), e.addEventListener(re.nodeDragEventName, t ? this.#he : this.#ce), e.addEventListener(re.nodeReflowEventName, t ? this.#de : this.#pe), t ? this.setDestinationLocation() : (this.setSourceLocation(), this.originatesFromInput = this.source.isInput()), this.#ge() } } } #ge() { this.source && this.destination && (this.source.linkTo(this.destination), this.destination.linkTo(this.source)) } #me() { this.source && this.destination && (this.source.unlinkFrom(this.destination, !1), this.destination.unlinkFrom(this.source, !1)) } cleanup() { super.cleanup(), this.#me(), this.source = null, this.destination = null } setSourceLocation(e = null, t = !0) { if (null == e) { const i = this; if (t && (!this.hasUpdated || !this.source.hasUpdated)) return void Promise.all([this.updateComplete, this.source.updateComplete]).then((() => i.setSourceLocation(null, !1))); e = this.source.template.getLinkLocation() } const [i, s] = e; this.fromX = i, this.fromY = s } setDestinationLocation(e = null, t = !0) { if (null == e) { const i = this; if (t && (!this.hasUpdated || !this.destination.hasUpdated)) return void Promise.all([this.updateComplete, this.destination.updateComplete]).then((() => i.setDestinationLocation(null, !1))); e = this.destination.template.getLinkLocation() } this.toX = e[0], this.toY = e[1] } getInputPin(e = !1) { return this.source?.isInput() ? this.source : this.destination?.isInput() ? this.destination : e ? this.source ?? this.destination : void 0 } setInputPin(e) { this.source?.isInput() && (this.source = e), this.destination = e } getOutputPin(e = !1) { return this.source?.isOutput() ? this.source : this.destination?.isOutput() ? this.destination : e ? this.source ?? this.destination : void 0 } setOutputPin(e) { this.destination?.isOutput() && (this.destination = e), this.source = e } startDragging() { this.dragging = !0 } finishDragging() { this.dragging = !1 } removeMessage() { this.linkMessageIcon = V, this.linkMessageText = V } setMessageConvertType() { this.linkMessageIcon = le.convert, this.linkMessageText = G`Convert ${this.source.pinType} to ${this.destination.pinType}.` } setMessageCorrect() { this.linkMessageIcon = le.correct, this.linkMessageText = V } setMessageReplace() { this.linkMessageIcon = le.correct, this.linkMessageText = V } setMessageDirectionsIncompatible() { this.linkMessageIcon = le.reject, this.linkMessageText = G`Directions are not compatbile.` } setMessagePlaceNode() { this.linkMessageIcon = V, this.linkMessageText = G`Place a new node.` } setMessageReplaceLink() { this.linkMessageIcon = le.correct, this.linkMessageText = G`Replace existing input connections.` } setMessageReplaceOutputLink() { this.linkMessageIcon = le.correct, this.linkMessageText = G`Replace existing output connections.` } setMessageSameNode() { this.linkMessageIcon = le.reject, this.linkMessageText = G`Both are on the same node.` } setMessageTypesIncompatible(e, t) { this.linkMessageIcon = le.reject, this.linkMessageText = G`${ae.capitalFirstLetter(e.pinType)} is not compatible with ${ae.capitalFirstLetter(t.pinType)}.` } } class Gt extends oe { static properties = { ...super.properties, locationX: { type: Number, attribute: !1 }, locationY: { type: Number, attribute: !1 }, sizeX: { type: Number, attribute: !1 }, sizeY: { type: Number, attribute: !1 } }; static dragEventName = re.dragEventName; static dragGeneralEventName = re.dragGeneralEventName; constructor() { super(), this.locationX = 0, this.locationY = 0, this.sizeX = 0, this.sizeY = 0 } computeSizes() { const e = this.getBoundingClientRect(); this.sizeX = this.blueprint.scaleCorrect(e.width), this.sizeY = this.blueprint.scaleCorrect(e.height) } firstUpdated(e) { super.firstUpdated(e), this.computeSizes() } setLocation(e, t, i = !0) { const s = e - this.locationX, n = t - this.locationY; if (this.locationX = e, this.locationY = t, this.blueprint && i) { const e = new CustomEvent(this.constructor.dragEventName, { detail: { value: [s, n] }, bubbles: !1, cancelable: !0 }); this.dispatchEvent(e) } } addLocation(e, t, i = !0) { this.setLocation(this.locationX + e, this.locationY + t, i) } acknowledgeDrag(e) { const t = new CustomEvent(this.constructor.dragGeneralEventName, { detail: { value: e }, bubbles: !0, cancelable: !0 }); this.dispatchEvent(t) } snapToGrid() { const e = ae.snapToGrid(this.locationX, this.locationY, re.gridSize); this.locationX == e[0] && this.locationY == e[1] || this.setLocation(e[0], e[1]) } topBoundary(e = !1) { return this.template.topBoundary(e) } rightBoundary(e = !1) { return this.template.rightBoundary(e) } bottomBoundary(e = !1) { return this.template.bottomBoundary(e) } leftBoundary(e = !1) { return this.template.leftBoundary(e) } } class Ht extends At { #J = e => { if (this.blueprint.setFocused(!0), e.button === this.options.clickButton) this.options.strictTarget && e.target != e.currentTarget || (this.consumeEvent && e.stopImmediatePropagation(), this.#be.addEventListener("mousemove", this.#ve), document.addEventListener("mouseup", this.#ee), this.setLocationFromEvent(e), this.clickedPosition[0] = this.location[0], this.clickedPosition[1] = this.location[1], this.blueprint.mousePosition[0] = this.location[0], this.blueprint.mousePosition[1] = this.location[1], this.target instanceof Gt && (this.clickedOffset = [this.clickedPosition[0] - this.target.locationX, this.clickedPosition[1] - this.target.locationY]), this.clicked(this.clickedPosition)); else this.options.exitAnyButton || this.#ee(e) }; #ve = e => { this.consumeEvent && e.stopImmediatePropagation(), this.#be.removeEventListener("mousemove", this.#ve), this.#be.addEventListener("mousemove", this.#fe); const t = this.getEvent(re.trackingMouseEventName.begin); this.#ye = 0 == this.target.dispatchEvent(t), this.setLocationFromEvent(e), this.lastLocation = ae.snapToGrid(this.clickedPosition[0], this.clickedPosition[1], this.stepSize), this.startDrag(this.location), this.started = !0, this.#fe(e) }; #fe = e => { this.consumeEvent && e.stopImmediatePropagation(); const t = this.setLocationFromEvent(e), i = [e.movementX, e.movementY]; if (this.dragTo(t, i), this.#ye && (this.blueprint.mousePosition = t), this.options.scrollGraphEdge) { const e = Math.sqrt(i[0] * i[0] + i[1] * i[1]), s = this.blueprint.scaleCorrect(re.edgeScrollThreshold), n = this.blueprint.template.gridLeftVisibilityBoundary() + s, r = this.blueprint.template.gridRightVisibilityBoundary() - s; let a = 0; t[0] < n ? a = t[0] - n : t[0] > r && (a = t[0] - r); const o = this.blueprint.template.gridTopVisibilityBoundary() + s, l = this.blueprint.template.gridBottomVisibilityBoundary() - s; let u = 0; t[1] < o ? u = t[1] - o : t[1] > l && (u = t[1] - l), a = ae.clamp(this.blueprint.scaleCorrectReverse(a) ** 3 * e * .6, -20, 20), u = ae.clamp(this.blueprint.scaleCorrectReverse(u) ** 3 * e * .6, -20, 20), this.blueprint.scrollDelta(a, u) } }; #ee = e => { if (!this.options.exitAnyButton || e.button == this.options.clickButton) { if (this.consumeEvent && e.stopImmediatePropagation(), this.#be.removeEventListener("mousemove", this.#ve), this.#be.removeEventListener("mousemove", this.#fe), document.removeEventListener("mouseup", this.#ee), this.started && this.endDrag(), this.unclicked(), this.#ye) { const e = this.getEvent(re.trackingMouseEventName.end); this.target.dispatchEvent(e), this.#ye = !1 } this.started = !1 } }; #ye = !1; #be; #we; get draggableElement() { return this.#we } clickedOffset = [0, 0]; clickedPosition = [0, 0]; lastLocation = [0, 0]; started = !1; stepSize = 1; constructor(e, t, i = {}) { i.clickButton ??= re.mouseClickButton, i.consumeEvent ??= !0, i.draggableElement ??= e, i.exitAnyButton ??= !0, i.moveEverywhere ??= !1, i.movementSpace ??= t?.getGridDOMElement(), i.repositionOnClick ??= !1, i.scrollGraphEdge ??= !1, i.strictTarget ??= !1, super(e, t, i), this.stepSize = Number(i.stepSize ?? re.gridSize), this.#be = this.options.moveEverywhere ? document.documentElement : this.movementSpace, this.#we = this.options.draggableElement, this.listenEvents() } listenEvents() { super.listenEvents(), this.#we.addEventListener("mousedown", this.#J), this.options.clickButton === re.mouseRightClickButton && this.#we.addEventListener("contextmenu", (e => e.preventDefault())) } unlistenEvents() { super.unlistenEvents(), this.#we.removeEventListener("mousedown", this.#J) } getEvent(e) { return new CustomEvent(e, { detail: { tracker: this }, bubbles: !0, cancelable: !0 }) } clicked(e) { } startDrag(e) { } dragTo(e, t) { } endDrag() { } unclicked(e) { } } class Vt extends Ht { clicked(e) { this.options.repositionOnClick && (this.target.setLocation(...this.stepSize > 1 ? ae.snapToGrid(e[0], e[1], this.stepSize) : e), this.clickedOffset = [0, 0]) } dragTo(e, t) { const i = [this.target.locationX ?? this.lastLocation[0], this.target.locationY ?? this.lastLocation[1]], [s, n] = this.stepSize > 1 ? [ae.snapToGrid(e[0], e[1], this.stepSize), ae.snapToGrid(i[0], i[1], this.stepSize)] : [e, i]; 0 == (t = [s[0] - this.lastLocation[0], s[1] - this.lastLocation[1]])[0] && 0 == t[1] || (t[0] += n[0] - i[0], t[1] += n[1] - i[1], this.dragAction(s, t), this.lastLocation = s) } dragAction(e, t) { this.target.setLocation(e[0] - this.clickedOffset[0], e[1] - this.clickedOffset[1]) } } class Rt extends Vt { #Se; #Ee; #Ce; #Ne; constructor(e, t, i = {}) { super(e, t, i), i.onClicked && (this.#Se = i.onClicked), i.onStartDrag && (this.#Ee = i.onStartDrag), i.onDrag && (this.#Ce = i.onDrag), i.onEndDrag && (this.#Ne = i.onEndDrag) } clicked(e) { super.clicked(e), this.#Se?.() } startDrag() { super.startDrag(), this.#Ee?.() } dragAction(e, t) { this.#Ce?.(e, t) } endDrag() { super.endDrag(), this.#Ne?.() } } class _t extends Vt { constructor(e, t, i = {}) { super(e, t, i), this.draggableElement.classList.add("ueb-draggable") } startDrag() { this.target.selected || (this.blueprint.unselectAll(), this.target.setSelected(!0)) } dragAction(e, t) { this.target.acknowledgeDrag(t) } unclicked() { this.started ? (this.blueprint.getNodes(!0).forEach((e => e.boundComments.filter((t => !e.isInsideComment(t))).forEach((t => e.unbindFromComment(t))))), this.blueprint.getCommentNodes().forEach((e => e.template.manageNodesBind()))) : (this.blueprint.unselectAll(), this.target.setSelected(!0)) } } class zt extends It { getDraggableElement() { return this.element } createDraggableObject() { const e = this.getDraggableElement(); return new Vt(this.element, this.blueprint, { draggableElement: e }) } createInputObjects() { return [...super.createInputObjects(), this.createDraggableObject(), new kt(this.element, this.blueprint, { activationKeys: [re.Keys.ArrowUp, re.Keys.ArrowRight, re.Keys.ArrowDown, re.Keys.ArrowLeft] }, (e => e.target.acknowledgeDrag([e.pressedKey === re.Keys.ArrowLeft ? -re.gridSize : e.pressedKey === re.Keys.ArrowRight ? re.gridSize : 0, e.pressedKey === re.Keys.ArrowUp ? -re.gridSize : e.pressedKey === re.Keys.ArrowDown ? re.gridSize : 0])))] } topBoundary(e = !1) { return this.element.locationY } rightBoundary(e = !1) { return this.element.locationX + this.element.sizeX } bottomBoundary(e = !1) { return this.element.locationY + this.element.sizeY } leftBoundary(e = !1) { return this.element.locationX } centerInViewport() { const e = Math.min(this.blueprint.template.viewportSize[0] / 10, this.blueprint.template.viewportSize[1] / 10), t = this.leftBoundary() - this.blueprint.template.gridLeftVisibilityBoundary(), i = this.blueprint.template.gridRightVisibilityBoundary() - this.rightBoundary(); let s = Math.max((t + i) / 2, e); const n = this.topBoundary() - this.blueprint.template.gridTopVisibilityBoundary(), r = this.blueprint.template.gridBottomVisibilityBoundary() - this.bottomBoundary(); let a = Math.max((n + r) / 2, e); this.blueprint.scrollDelta(t - s, n - a, !0) } } class Ft extends zt { update(e) { super.update(e), e.has("locationX") && (this.element.style.left = `${this.element.locationX}px`), e.has("locationY") && (this.element.style.top = `${this.element.locationY}px`) } } class jt extends Ft { getDraggableElement() { return this.element } createDraggableObject() { return new _t(this.element, this.blueprint, { draggableElement: this.getDraggableElement(), scrollGraphEdge: !0 }) } firstUpdated(e) { super.firstUpdated(e), this.element.selected && !this.element.listeningDrag && this.element.setSelected(!0) } } class Ut extends jt { static nodeStyleClasses = ["ueb-node-style-default"]; #xe; pinInserter; inputContainer; outputContainer; pinElement; addPinHandler = () => { const e = this.pinInserter?.(); e && (this.defaultPin && this.defaultPin.isInput() === e.isInput() ? this.defaultPin.before(this.createPinElement(e)) : (e.isInput() ? this.inputContainer : this.outputContainer).appendChild(this.createPinElement(e)), this.element.acknowledgeReflow()) }; toggleAdvancedDisplayHandler = () => { this.element.toggleShowAdvancedPinDisplay(), this.element.requestUpdate(), this.element.updateComplete.then((() => this.element.acknowledgeReflow())) }; createPinElement(e) { const t = Ae.getConstructor("ueb-pin").newObject(e, void 0, this.element); return this.pinInserter && !this.defaultPin && "Default" === t.getPinName() && (this.defaultPin = t, this.defaultPin.classList.add("ueb-node-variadic-default")), t } initialize(e) { super.initialize(e), this.#xe = function (e) { switch (e.getType()) { case re.paths.addDelegate: case re.paths.clearDelegate: case re.paths.removeDelegate: return null }const t = e.getPinEntities().find((e => "self" === e.PinName?.toString() && "Target" === Ke(e))); if (t) { const i = e.FunctionReference?.MemberParent?.getName() ?? t.PinType?.PinSubCategoryObject?.getName() ?? "Untitled"; return i.length > 0 ? `Target is ${ae.formatStringName(i)}` : null } return null }(e.entity), this.element.classList.add(...this.constructor.nodeStyleClasses), this.element.style.setProperty("--ueb-node-color", this.getColor().cssText), this.pinInserter = this.element.entity.additionalPinInserter(), this.pinInserter && this.element.classList.add("ueb-node-is-variadic") } getColor() { return this.element.entity.nodeColor() } render() { return G`${this.renderTop()}${this.pinInserter ? G`Add pin ${le.plusCircle}` : V} ${this.element.entity.isDevelopmentOnly() ? G`Development Only` : V} ${this.element.advancedPinDisplay ? G`${le.expandIcon}` : V}` } renderNodeIcon() { return this.element.entity.nodeIcon() } renderNodeName() { return this.element.nodeDisplayName } renderTop() { const e = this.renderNodeIcon(), t = this.renderNodeName(); return G`${e ? G`${e}` : V} ${t ? G`${t} ${this.#xe ? G`${this.#xe}` : V}` : V}` } firstUpdated(e) { super.firstUpdated(e), this.inputContainer = this.element.querySelector(".ueb-node-inputs"), this.outputContainer = this.element.querySelector(".ueb-node-outputs"), this.setupPins(), this.element.updateComplete.then((() => this.element.acknowledgeReflow())) } setupPins() { this.element.nodeNameElement = this.element.querySelector(".ueb-node-name-text"); let e = !1, t = !1; for (const i of this.getPinElements()) i !== this.defaultPin && (i.isInput() ? (this.inputContainer.appendChild(i), e = !0) : i.isOutput() && (this.outputContainer.appendChild(i), t = !0)); this.defaultPin && (this.defaultPin.isInput() ? this.inputContainer : this.outputContainer).appendChild(this.defaultPin), e && this.element.classList.add("ueb-node-has-inputs"), t && this.element.classList.add("ueb-node-has-outputs") } getPinElements() { return this.element.getPinElements() } createPinElements() { return this.element.getPinEntities().filter((e => !e.isHidden())).map((e => this.createPinElement(e))) } linksChanged() { } } class Yt extends Ut { #Pe = document.createElement("div"); #ke = document.createElement("div"); #Ae = document.createElement("div"); #Le = document.createElement("div"); #Me = document.createElement("div"); #Te = document.createElement("div"); #Ie = document.createElement("div"); #Oe = document.createElement("div"); initialize(e) { super.initialize(e), this.element.classList.add("ueb-resizeable"), this.#Pe.classList.add("ueb-resizeable-top"), this.#ke.classList.add("ueb-resizeable-right"), this.#Ae.classList.add("ueb-resizeable-bottom"), this.#Le.classList.add("ueb-resizeable-left"), this.#Me.classList.add("ueb-resizeable-top-right"), this.#Te.classList.add("ueb-resizeable-bottom-right"), this.#Ie.classList.add("ueb-resizeable-bottom-left"), this.#Oe.classList.add("ueb-resizeable-top-left") } update(e) { super.update(e), this.element.sizeX >= 0 && e.has("sizeX") && (this.element.style.width = `${this.element.sizeX}px`), this.element.sizeY >= 0 && e.has("sizeY") && (this.element.style.height = `${this.element.sizeY}px`) } firstUpdated(e) { super.firstUpdated(e), this.element.append(this.#Pe, this.#ke, this.#Ae, this.#Le, this.#Me, this.#Te, this.#Ie, this.#Oe) } createInputObjects() { return [...super.createInputObjects(), new Rt(this.#Pe, this.blueprint, { onDrag: (e, t) => { t[1] = e[1] - this.element.topBoundary(), this.setSizeY(this.element.sizeY - t[1]) && this.element.addLocation(0, t[1], !1) }, onEndDrag: () => this.endResize() }), new Rt(this.#ke, this.blueprint, { onDrag: (e, t) => { t[0] = e[0] - this.element.rightBoundary(), this.setSizeX(this.element.sizeX + t[0]) }, onEndDrag: () => this.endResize() }), new Rt(this.#Ae, this.blueprint, { onDrag: (e, t) => { t[1] = e[1] - this.element.bottomBoundary(), this.setSizeY(this.element.sizeY + t[1]) }, onEndDrag: () => this.endResize() }), new Rt(this.#Le, this.blueprint, { onDrag: (e, t) => { t[0] = e[0] - this.element.leftBoundary(), this.setSizeX(this.element.sizeX - t[0]) && this.element.addLocation(t[0], 0, !1) }, onEndDrag: () => this.endResize() }), new Rt(this.#Me, this.blueprint, { onDrag: (e, t) => { t[0] = e[0] - this.element.rightBoundary(), t[1] = e[1] - this.element.topBoundary(), this.setSizeX(this.element.sizeX + t[0]), this.setSizeY(this.element.sizeY - t[1]) && this.element.addLocation(0, t[1], !1) }, onEndDrag: () => this.endResize() }), new Rt(this.#Te, this.blueprint, { onDrag: (e, t) => { t[0] = e[0] - this.element.rightBoundary(), t[1] = e[1] - this.element.bottomBoundary(), this.setSizeX(this.element.sizeX + t[0]), this.setSizeY(this.element.sizeY + t[1]) }, onEndDrag: () => this.endResize() }), new Rt(this.#Ie, this.blueprint, { onDrag: (e, t) => { t[0] = e[0] - this.element.leftBoundary(), t[1] = e[1] - this.element.bottomBoundary(), this.setSizeX(this.element.sizeX - t[0]) && this.element.addLocation(t[0], 0, !1), this.setSizeY(this.element.sizeY + t[1]) }, onEndDrag: () => this.endResize() }), new Rt(this.#Oe, this.blueprint, { onDrag: (e, t) => { t[0] = e[0] - this.element.leftBoundary(), t[1] = e[1] - this.element.topBoundary(), this.setSizeX(this.element.sizeX - t[0]) && this.element.addLocation(t[0], 0, !1), this.setSizeY(this.element.sizeY - t[1]) && this.element.addLocation(0, t[1], !1) }, onEndDrag: () => this.endResize() })] } setSizeX(e) { return this.element.setNodeWidth(e), !0 } setSizeY(e) { return this.element.setNodeHeight(e), !0 } endResize() { } } class Kt extends Yt { #De = 0; initialize(e) { super.initialize(e), e.classList.add("ueb-node-style-comment", "ueb-node-resizeable"), e.sizeX = 25 * re.gridSize, e.sizeY = 6 * re.gridSize, super.initialize(e) } getDraggableElement() { return this.element.querySelector(".ueb-node-top") } render() { return G`` } firstUpdated(e) { super.firstUpdated(e); const t = this.getDraggableElement().getBoundingClientRect(); this.#De = t.height } manageNodesBind() { let e = this.blueprint.getNodes(); for (let t of e) t.topBoundary() >= this.element.topBoundary() && t.rightBoundary() <= this.element.rightBoundary() && t.bottomBoundary() <= this.element.bottomBoundary() && t.leftBoundary() >= this.element.leftBoundary() ? t.bindToComment(this.element) : t.unbindFromComment(this.element) } setSizeX(e) { return (e = Math.round(e)) >= 2 * re.gridSize && (this.element.setNodeWidth(e), !0) } setSizeY(e) { return (e = Math.round(e)) >= 2 * re.gridSize && (this.element.setNodeHeight(e), !0) } endResize() { this.manageNodesBind() } topBoundary(e = !1) { return this.element.locationY } rightBoundary(e = !1) { return this.element.locationX + this.element.sizeX } bottomBoundary(e = !1) { return e ? this.element.locationY + this.#De : super.bottomBoundary() } leftBoundary(e = !1) { return this.element.locationX } } class Xt extends Ht { #$e; #Be = null; #Ge = e => { if (!this.enteredPin) { this.linkValid = !1, this.enteredPin = e.target; const t = this.link.source ?? this.target, i = this.enteredPin, s = t.isOutput() ? t : i; t.nodeElement.getType() === re.paths.knot || i.nodeElement.getType() === re.paths.knot ? (this.link.setMessageCorrect(), this.linkValid = !0) : t.getNodeElement() === i.getNodeElement() ? this.link.setMessageSameNode() : t.isOutput() === i.isOutput() ? this.link.setMessageDirectionsIncompatible() : this.blueprint.getLinks(t, i).length ? (this.link.setMessageReplaceLink(), this.linkValid = !0) : "exec" === s.entity.getType() && s.isLinked ? (this.link.setMessageReplaceOutputLink(), this.linkValid = !0) : "object" == t.entity.PinType.PinCategory.valueOf() && "object" == i.entity.PinType.PinCategory.valueOf() || t.pinType == i.pinType ? (this.link.setMessageCorrect(), this.linkValid = !0) : (this.link.setMessageTypesIncompatible(t, i), this.linkValid = !1) } }; #He = e => { this.enteredPin == e.target && (this.enteredPin = null, this.linkValid = !1, this.link?.setMessagePlaceNode()) }; link; enteredPin; linkValid = !1; constructor(e, t, i = {}) { i.scrollGraphEdge ??= !0, super(e, t, i) } startDrag(e) { this.target.nodeElement.getType() == re.paths.knot && (this.#Be = this.target), this.link = Ae.getConstructor("ueb-link").newObject(this.target, null), this.blueprint.template.linksContainerElement.prepend(this.link), this.link.setMessagePlaceNode(), this.#$e = this.blueprint.querySelectorAll("ueb-pin"), this.#$e.forEach((e => { e != this.target && (e.addEventListener("mouseenter", this.#Ge), e.addEventListener("mouseleave", this.#He)) })), this.link.startDragging(), this.link.setDestinationLocation(e) } dragTo(e, t) { this.link.setDestinationLocation(e) } endDrag() { if (this.#$e.forEach((e => { e.removeEventListener("mouseenter", this.#Ge), e.removeEventListener("mouseleave", this.#He) })), this.#$e = null, this.enteredPin && this.linkValid) { if (this.#Be) { const e = this.#Be !== this.link.source ? this.link.source : this.enteredPin; if (this.#Be.isInput() && e.isInput() || this.#Be.isOutput() && e.isOutput()) { const e = this.#Be.template.getOppositePin(); this.#Be === this.link.source ? this.link.source = e : this.enteredPin = e } } else this.enteredPin.nodeElement.getType() === re.paths.knot && (this.#Be = this.enteredPin, this.link.source.isOutput() && (this.enteredPin = this.enteredPin.template.getOppositePin())); this.link.source.getLinks().find((e => e.equals(this.enteredPin.createPinReference()))) ? this.link.remove() : (this.blueprint.addGraphElement(this.link), this.link.destination = this.enteredPin) } else this.link.remove(); this.enteredPin = null, this.link.removeMessage(), this.link.finishDragging(), this.link = null } } class qt extends Ut { #Ve = !1; #Re = !1; displayName = ""; static nodeStyleClasses = ["ueb-node-style-glass"]; initialize(e) { super.initialize(e), this.displayName = this.element.nodeDisplayName } render() { return G`${this.displayName ? G`${this.displayName}` : V} ${this.#Ve ? G`` : V} ${this.#Re ? G`` : V} ${this.pinInserter ? G`Add pin ${le.plusCircle}` : V}` } createPinElements() { return this.element.getPinEntities().filter((e => !e.isHidden())).map((e => { this.#Ve ||= e.isInput(), this.#Re ||= e.isOutput(); return Ae.getConstructor("ueb-pin").newObject(e, void 0, this.element) })) } } class Zt extends qt { static nodeStyleClasses = ["ueb-node-style-metasound", "ueb-node-style-operation"] } class Wt extends qt { static nodeStyleClasses = [...super.nodeStyleClasses, "ueb-node-style-conversion"] } class Qt extends qt { static nodeStyleClasses = [...super.nodeStyleClasses, "ueb-node-style-operation"] } class Jt extends It { static canWrapInput = !0; #_e; get iconElement() { return this.#_e } #ze; get wrapperElement() { return this.#ze } isNameRendered = !0; initialize(e) { if (super.initialize(e), this.element.nodeElement) { const e = this.element.nodeElement.template; this.isNameRendered = !(e instanceof Wt || e instanceof Qt || e instanceof Zt) } } setup() { super.setup(), this.element.nodeElement = this.element.closest("ueb-node"); const e = this.element.nodeElement.template; (e instanceof Wt || e instanceof Qt) && (this.isNameRendered = !1, this.element.requestUpdate()) } createInputObjects() { return [new Xt(this.element, this.blueprint, { moveEverywhere: !0, draggableElement: this.getClickableElement() })] } render() { const e = G`${this.renderIcon()}`, t = G`${this.isNameRendered ? this.renderName() : V} ${this.isInputRendered() ? this.renderInput() : G``}`; return G`${this.element.isInput() ? G`${e}${t}` : G`${t}${e}`}` } renderIcon() { if (this.element.nodeElement.entity.isPcg()) switch (this.element.entity.getType()) { case "Any": return le.pcgPin; case "Param": case "Param[]": return le.pcgParamPin; case "Spatial": case "Spatial[]": return le.pcgSpatialPin; case "Any[]": case "Point[]": case "Surface[]": case "Volume[]": if (this.element.isOutput()) return le.pcgPin; case "Point": case "Surface": case "Volume": return le.pcgStackPin }switch (this.element.entity.PinType.ContainerType?.toString()) { case "Array": return le.arrayPin; case "Set": return le.setPin; case "Map": return le.mapPin }return "delegate" === this.element.entity.PinType.PinCategory?.toString().toLocaleLowerCase() ? le.delegate : this.element.nodeElement?.template instanceof Qt ? le.operationPin : le.genericPin } renderName() { let e = this.element.getPinDisplayName(); const t = this.element.nodeElement, i = this.element.getPinName(); return t.getType() == re.paths.makeStruct && i == t.entity.StructType.getName() && (e = i), G`${e}` } isInputRendered() { return this.element.isInput() && !this.element.entity.bDefaultValueIsIgnored?.valueOf() && !this.element.entity.PinType.bIsReference?.valueOf() } renderInput() { return G`` } updated(e) { if (super.updated(e), this.element.isInput() && e.has("isLinked")) { const e = this.element.nodeElement; this.element.requestUpdate(), this.element.updateComplete.then((() => e.acknowledgeReflow())) } } firstUpdated(e) { super.firstUpdated(e), this.element.style.setProperty("--ueb-pin-color-rgb", this.element.entity.pinColor().cssText), this.#_e = this.element.querySelector(".ueb-pin-icon svg") ?? this.element, this.#ze = this.element.querySelector(".ueb-pin-wrapper") } getLinkLocation() { const e = this.iconElement.getBoundingClientRect(), t = [this.element.isInput() ? e.left : e.right + 1, (e.top + e.bottom) / 2], i = ae.convertLocation(t, this.blueprint.template.gridElement); return this.blueprint.compensateTranslation(i[0], i[1]) } getClickableElement() { return this.#ze ?? this.element } } class ei extends Jt { render() { return G`${this.renderIcon()}` } } class ti extends Ut { static nodeStyleClasses = [...super.nodeStyleClasses, "ueb-node-style-event"]; #Fe; firstUpdated(e) { super.firstUpdated(e), this.element.querySelector(".ueb-node-top").appendChild(this.createDelegatePinElement()) } renderTop() { const e = this.renderNodeIcon(), t = this.renderNodeName(), i = this.element.getType() === re.paths.customEvent && (this.element.entity.CustomFunctionName || this.element.entity.FunctionReference.MemberParent); return G`${e ? G`${e}` : V} ${t ? G`${t} ${i ? G`Custom Event` : V}` : V}` } getPinElements() { return this.element.getPinElements().filter((e => "delegate" !== e.entity.PinType.PinCategory?.toString())) } createDelegatePinElement() { return this.#Fe || (this.#Fe = Ae.getConstructor("ueb-pin").newObject(this.element.getPinEntities().find((e => !e.isHidden() && "delegate" === e.PinType.PinCategory?.toString())), new ei, this.element), this.#Fe.template.isNameRendered = !1), this.#Fe } createPinElements() { return [this.createDelegatePinElement(), ...this.element.getPinEntities().filter((e => !e.isHidden() && "delegate" !== e.PinType.PinCategory?.toString())).map((e => Ae.getConstructor("ueb-pin").newObject(e, void 0, this.element)))] } } class ii extends ei { render() { return this.element.isOutput() ? super.render() : G`` } getOppositePin() { const e = this.element.nodeElement.template; return this.element.isOutput() ? e.inputPin : e.outputPin } getLinkLocation() { const e = (this.element.isInput() ? this.element.nodeElement.template.outputPin.template : this).iconElement.getBoundingClientRect(), t = [this.element.isInput() ? e.left : e.right + 1, (e.top + e.bottom) / 2], i = ae.convertLocation(t, this.blueprint.template.gridElement); return this.blueprint.compensateTranslation(i[0], i[1]) } } class si extends Ut { static #je = new Set; #Ue = null; #Ye; get inputPin() { return this.#Ye } #Ke; get outputPin() { return this.#Ke } initialize(e) { super.initialize(e), this.element.classList.add("ueb-node-style-minimal") } findDirectionaPin(e) { if (e.nodeElement.getType() !== re.paths.knot || si.#je.has(e)) return si.#je.clear(), !0; si.#je.add(e); for (let t of e.getLinks().map((e => this.blueprint.getPin(e)))) if (this.findDirectionaPin(t)) return !0; return !1 } render() { return G`` } setupPins() { for (const e of this.getPinElements()) this.element.querySelector(".ueb-node-border").appendChild(e) } createPinElements() { const e = this.element.getPinEntities().filter((e => !e.isHidden())), t = e[e[0].isInput() ? 0 : 1], i = e[e[0].isOutput() ? 0 : 1], s = Ae.getConstructor("ueb-pin"); return [this.#Ye = s.newObject(t, new ii, this.element), this.#Ke = s.newObject(i, new ii, this.element)] } linksChanged() { } } class ni extends Ut { static nodeStyleClasses = ["ueb-node-style-metasound"] } class ri extends qt { initialize(e) { super.initialize(e); const t = e.getType(); t === re.paths.variableGet || t === re.paths.self ? (this.element.classList.add("ueb-node-style-getter"), this.displayName = "") : t === re.paths.variableSet && this.element.classList.add("ueb-node-style-setter") } setupPins() { super.setupPins(); let e = this.element.getPinElements().find((e => !e.entity.isHidden() && !e.entity.isExecution())); this.element.style.setProperty("--ueb-node-color", e.getColor().cssText) } } function ai(e) { if (e.getClass() === re.paths.callFunction || e.getClass() === re.paths.commutativeAssociativeBinaryOperator || e.getClass() === re.paths.callArrayFunction) { const t = e.FunctionReference?.MemberParent?.path ?? "", i = e.FunctionReference?.MemberName?.toString(); if (i && (t === re.paths.kismetMathLibrary || t === re.paths.kismetArrayLibrary)) { if (i.startsWith("Conv_")) return Wt; if (i.startsWith("Add_") || i.startsWith("And_") || i.startsWith("Boolean") || i.startsWith("Cross_") || i.startsWith("Dot_") || i.startsWith("Not_") || i.startsWith("Or_") || i.startsWith("Percent_") || i.startsWith("Xor_")) return Qt; switch (i) { case "Abs": case "Array_Add": case "Array_AddUnique": case "Array_Identical": case "BMax": case "BMin": case "CrossProduct2D": case "DotProduct2D": case "Exp": case "FMax": case "FMin": case "GetPI": case "Max": case "MaxInt64": case "Min": case "MinInt64": case "Sqrt": case "Square": case "Vector4_CrossProduct3": case "Vector4_DotProduct": case "Vector4_DotProduct3": case "Acos": case "Asin": case "Cos": case "DegAcos": case "DegCos": case "DegSin": case "DegTan": case "Sin": case "Tan": return Qt } } if (t === re.paths.blueprintSetLibrary) return Qt; if (t === re.paths.blueprintMapLibrary) return Qt } switch (e.getClass()) { case re.paths.comment: case re.paths.materialGraphNodeComment: return Kt; case re.paths.createDelegate: return Ut; case re.paths.metasoundEditorGraphExternalNode: return "Add" == e.ClassName?.Name ? Zt : ni; case re.paths.niagaraNodeOp: if (["Boolean::LogicEq", "Boolean::LogicNEq", "Numeric::Abs", "Numeric::Add", "Numeric::Mul"].includes(e.OpName?.toString())) return Qt; break; case re.paths.promotableOperator: return Qt; case re.paths.knot: return si; case re.paths.literal: case re.paths.self: case re.paths.variableGet: case re.paths.variableSet: return ri }return e.isEvent() ? ti : Ut } class oi extends Gt { static properties = { ...super.properties, selected: { type: Boolean, attribute: "data-selected", reflect: !0, converter: ke.booleanConverter } }; dragHandler = e => this.addLocation(...e.detail.value); constructor() { super(), this.selected = !1, this.listeningDrag = !1 } setup() { super.setup(), this.setSelected(this.selected) } cleanup() { super.cleanup(), this.blueprint.removeEventListener(re.nodeDragGeneralEventName, this.dragHandler) } setSelected(e = !0) { this.selected = e, this.blueprint && (this.selected ? (this.listeningDrag = !0, this.blueprint.addEventListener(re.nodeDragGeneralEventName, this.dragHandler)) : (this.blueprint.removeEventListener(re.nodeDragGeneralEventName, this.dragHandler), this.listeningDrag = !1)) } } class li extends oi { static properties = { ...oi.properties, typePath: { type: String, attribute: "data-type", reflect: !0 }, nodeTitle: { type: String, attribute: "data-title", reflect: !0 }, advancedPinDisplay: { type: String, attribute: "data-advanced-display", converter: We.attributeConverter, reflect: !0 }, enabledState: { type: String, attribute: "data-enabled-state", reflect: !0 }, nodeDisplayName: { type: String, attribute: !1 }, pureFunction: { type: Boolean, converter: ke.booleanConverter, attribute: "data-pure-function", reflect: !0 } }; static dragEventName = re.nodeDragEventName; static dragGeneralEventName = re.nodeDragGeneralEventName; get blueprint() { return super.blueprint } set blueprint(e) { super.blueprint = e, this.#Xe.forEach((t => t.blueprint = e)) } #qe; get nodeNameElement() { return this.#qe } set nodeNameElement(e) { this.#qe = e } #Xe = []; boundComments = []; #Ze = !1; #We = e => { this.selected || this.#Ze || (this.#Ze = !0, this.requestUpdate(), this.updateComplete.then((() => this.#Ze = !1)), this.addLocation(...e.detail.value)) }; static fromSerializedObject(e) { e = e.trim(); let t = Ct.grammar.parse(e); return li.newObject(t) } static newObject(e = new Ct, t = new (ai(e))) { const i = new li; return i.initialize(e, t), i } #Qe(e) { for (let t of this.getPinElements()) for (let i of t.getLinks()) this.blueprint.getPin(i).redirectLink(t, new rt(new We(e), t.entity.PinId)) } initialize(e = new Ct, t = new (ai(e))) { this.typePath = e.getType(), this.nodeTitle = e.getObjectName(), this.advancedPinDisplay = e.AdvancedPinDisplay?.toString(), this.enabledState = e.EnabledState, this.nodeDisplayName = Ve(e), this.pureFunction = e.bIsPureFunc?.valueOf(), this.dragLinkObjects = [], super.initialize(e, t), this.#Xe = this.template.createPinElements(), super.setLocation(this.entity.getNodePosX(), this.entity.getNodePosY()), this.entity.NodeWidth && this.entity.NodeHeight ? (this.sizeX = this.entity.NodeWidth.value, this.sizeY = this.entity.NodeHeight.value) : this.updateComplete.then((() => this.computeSizes())), e.listenAttribute("Name", (t => { this.#Qe(t.value), this.nodeTitle = t.value, this.nodeDisplayName = Ve(e) })) } async getUpdateComplete() { let e = await super.getUpdateComplete(); for (const t of this.getPinElements()) e &&= await t.updateComplete; return e } bindToComment(e) { e == this || this.boundComments.includes(e) || (e.addEventListener(re.nodeDragEventName, this.#We), this.boundComments.push(e)) } unbindFromComment(e) { const t = this.boundComments.indexOf(e); t >= 0 && (e.removeEventListener(re.nodeDragEventName, this.#We), this.boundComments[t] = this.boundComments[this.boundComments.length - 1], this.boundComments.pop()) } isInsideComment(e) { return this.topBoundary() >= e.topBoundary() && this.rightBoundary() <= e.rightBoundary() && this.bottomBoundary() <= e.bottomBoundary() && this.leftBoundary() >= e.leftBoundary() } getType() { return this.entity.getType() } getNodeName() { return this.entity.getObjectName() } computeNodeDisplayName() { this.nodeDisplayName = Ve(this.entity) } setNodeWidth(e) { this.entity.setNodeWidth(e), this.sizeX = e, this.acknowledgeReflow() } setNodeHeight(e) { this.entity.setNodeHeight(e), this.sizeY = e, this.acknowledgeReflow() } sanitizeLinks(e = []) { this.getPinElements().forEach((t => t.sanitizeLinks(e))) } getPinElements() { return this.#Xe } getPinEntities() { return this.entity.getPinEntities() } setLocation(e = 0, t = 0, i = !0) { this.entity.setNodePosX(e), this.entity.setNodePosY(t), super.setLocation(e, t, i) } acknowledgeReflow() { this.requestUpdate(), this.updateComplete.then((() => this.computeSizes())); let e = new CustomEvent(re.nodeReflowEventName); this.dispatchEvent(e) } setShowAdvancedPinDisplay(e) { this.entity.AdvancedPinDisplay = new We(e ? "Shown" : "Hidden"), this.advancedPinDisplay = this.entity.AdvancedPinDisplay } toggleShowAdvancedPinDisplay() { this.setShowAdvancedPinDisplay("Shown" != this.entity.AdvancedPinDisplay?.toString()) } } class ui extends Ct { #Je = new Map; #et = []; get objectEntities() { return this.#et } getHomonymObjectEntity(e) { const t = e.getObjectName(); return this.#et.find((e => e.getObjectName() == t)) } takeFreeName(e) { e = e.replace(/_\d+$/, ""); const t = (this.#Je.get(e) ?? -1) + 1; return this.#Je.set(e, t), re.nodeTitle(e, t) } addObjectEntity(e) { if (!this.#et.includes(e)) { this.#et.push(e); const [t, i] = e.getNameAndCounter(); return this.#Je.set(t, Math.max(this.#Je.get(t) ?? 0, i)), !0 } return !1 } removeObjectEntity(e) { const t = this.#et.indexOf(e); if (t >= 0) { const e = this.#et.pop(); return t < this.#et.length && (this.#et[t] = e), !0 } return !1 } mergeWith(e) { if (!e.ScriptVariables || 0 === e.ScriptVariables.length) return this; this.ScriptVariables && 0 !== this.ScriptVariables.length || (this.ScriptVariables = e.ScriptVariables); let t = ae.mergeArrays(this.ScriptVariables.valueOf(), e.ScriptVariables.valueOf(), ((e, t) => e.OriginalChangeId.value == t.OriginalChangeId.value)); if (t.length === this.ScriptVariables.length) return this; const i = t.concat(t).map(((i, s) => { const n = re.subObjectAttributeNameFromReference(i.ScriptVariable, s >= t.length); return [n, this[n] ?? e[n]] })); return i.push(...Object.entries(this).filter((([e, t]) => !e.startsWith(re.subObjectAttributeNamePrefix) && "ExportedNodes" !== e))), new ui(Object.fromEntries(i)) } } class ci extends xt { #tt; constructor(e, t, i = {}) { i.listenOnFocus ??= !0, i.unlistenOnTextEdit ??= !0, super(e, t, i); let s = this; this.#tt = () => s.copied() } listenEvents() { window.addEventListener("copy", this.#tt) } unlistenEvents() { window.removeEventListener("copy", this.#tt) } getSerializedText() { const e = this.blueprint.getNodes(!0).map((e => e.entity)), t = e.filter((e => e.exported)).map((e => e.serialize())), i = e.filter((e => !e.exported)).map((e => e.serialize())); return t.length && (this.blueprint.entity.ExportedNodes.value = btoa(t.join("")), i.splice(0, 0, this.blueprint.entity.serialize(!1)), delete this.blueprint.entity.ExportedNodes), i.join("") } copied() { const e = this.getSerializedText(); return navigator.clipboard.writeText(e), e } } class hi extends xt { #it; constructor(e, t, i = {}) { i.listenOnFocus ??= !0, i.unlistenOnTextEdit ??= !0, super(e, t, i); let s = this; this.#it = () => s.cut() } listenEvents() { window.addEventListener("cut", this.#it) } unlistenEvents() { window.removeEventListener("cut", this.#it) } getSerializedText() { return this.blueprint.getNodes(!0).map((e => e.entity.serialize())).join("") } cut() { this.blueprint.template.getCopyInputObject().copied(), this.blueprint.removeGraphElement(...this.blueprint.getNodes(!0)) } } class pi extends xt { #st; constructor(e, t, i = {}) { i.listenOnFocus ??= !0, i.unlistenOnTextEdit ??= !0, super(e, t, i); let s = this; this.#st = e => s.pasted(e.clipboardData.getData("Text")) } listenEvents() { window.addEventListener("paste", this.#st) } unlistenEvents() { window.removeEventListener("paste", this.#st) } pasted(e) { let t = 0, i = 0, s = 0, n = Ct.grammarMultipleObjects.parse(e).map((e => { let n = Ae.getConstructor("ueb-node").newObject(e); return t += n.locationY, i += n.locationX, ++s, n })); t /= s, i /= s, n.length > 0 && this.blueprint.unselectAll(); let r = this.blueprint.mousePosition; for (const e of n) e.addLocation(r[0] - i, r[1] - t), e.snapToGrid(), e.setSelected(!0); return this.blueprint.addGraphElement(...n), n } } class di extends At { static #X = e => { }; #nt = 0; get variation() { return this.#nt } #rt = e => { this.enablerKey && !this.enablerActivated || (e.preventDefault(), this.#nt = e.deltaY, this.setLocationFromEvent(e), this.wheel()) }; #at = e => e.preventDefault(); constructor(e, t, i = {}, s = di.#X) { i.listenOnFocus = !0, i.strictTarget ??= !1, super(e, t, i), this.strictTarget = i.strictTarget, this.onWheel = s } listenEvents() { this.movementSpace.addEventListener("wheel", this.#rt, !1), this.movementSpace.parentElement?.addEventListener("wheel", this.#at) } unlistenEvents() { this.movementSpace.removeEventListener("wheel", this.#rt, !1), this.movementSpace.parentElement?.removeEventListener("wheel", this.#at) } wheel() { this.onWheel(this) } } class mi extends di { #ot = 0; #lt = !1; get enableZoonIn() { return this.#lt } set enableZoonIn(e) { e != this.#lt && (this.#lt = e) } wheel() { if (this.#ot += -this.variation, Math.abs(this.#ot) < re.mouseWheelZoomThreshold) return; let e = this.blueprint.getZoom(); !this.enableZoonIn && 0 == e && this.#ot > 0 || (e += Math.sign(this.#ot), this.blueprint.setZoom(e, this.location), this.#ot = 0) } } class gi extends kt { #ut; constructor(e, t, i = {}) { i.activationKeys = Tt.enableZoomIn, super(e, t, i) } fire() { this.#ut = this.blueprint.template.getZoomInputObject(), this.#ut.enableZoonIn = !0 } unfire() { this.#ut.enableZoonIn = !1 } } class bi extends Ht { startDrag() { this.blueprint.scrolling = !0 } dragTo(e, t) { this.blueprint.scrollDelta(-t[0], -t[1]) } endDrag() { this.blueprint.scrolling = !1 } } class vi extends At { #ct = null; #ht = e => { e.preventDefault(), this.setLocationFromEvent(e), this.blueprint.mousePosition = [...this.location] }; #pt = e => { this.#ct || (e.preventDefault(), this.#ct = e.detail.tracker, this.unlistenMouseMove()) }; #dt = e => { this.#ct == e.detail.tracker && (e.preventDefault(), this.#ct = null, this.listenMouseMove()) }; constructor(e, t, i = {}) { i.listenOnFocus = !0, super(e, t, i) } listenMouseMove() { this.target.addEventListener("mousemove", this.#ht) } unlistenMouseMove() { this.target.removeEventListener("mousemove", this.#ht) } listenEvents() { this.listenMouseMove(), this.blueprint.addEventListener(re.trackingMouseEventName.begin, this.#pt), this.blueprint.addEventListener(re.trackingMouseEventName.end, this.#dt) } unlistenEvents() { this.unlistenMouseMove(), this.blueprint.removeEventListener(re.trackingMouseEventName.begin, this.#pt), this.blueprint.removeEventListener(re.trackingMouseEventName.end, this.#dt) } } class fi extends Ht { constructor(e, t, i = {}) { i.scrollGraphEdge ??= !0, super(e, t, i), this.selectorElement = this.blueprint.template.selectorElement } startDrag() { this.selectorElement.beginSelect(this.clickedPosition) } dragTo(e, t) { this.selectorElement.selectTo(e) } endDrag() { this.started && this.selectorElement.endSelect() } unclicked() { this.started || this.blueprint.unselectAll() } } class yi extends xt { #mt = e => this.clickedSomewhere(e.target); constructor(e, t, i = {}) { i.listenOnFocus = !0, super(e, t, i), this.blueprint.focus && document.addEventListener("click", this.#mt) } clickedSomewhere(e) { e.closest("ueb-blueprint") || this.blueprint.setFocused(!1) } listenEvents() { document.addEventListener("click", this.#mt) } unlistenEvents() { document.removeEventListener("click", this.#mt) } } class wi extends It { static styleVariables = { "--ueb-font-size": `${re.fontSize}`, "--ueb-grid-axis-line-color": `${re.gridAxisLineColor}`, "--ueb-grid-expand": `${re.expandGridSize}px`, "--ueb-grid-line-color": `${re.gridLineColor}`, "--ueb-grid-line-width": `${re.gridLineWidth}px`, "--ueb-grid-set-line-color": `${re.gridSetLineColor}`, "--ueb-grid-set": `${re.gridSet}`, "--ueb-grid-size": `${re.gridSize}px`, "--ueb-link-min-width": `${re.linkMinWidth}`, "--ueb-node-radius": `${re.nodeRadius}px` }; #gt = new ResizeObserver((e => { const t = e.find((e => e.target === this.viewportElement))?.devicePixelContentBoxSize?.[0]; t && (this.viewportSize[0] = t.inlineSize, this.viewportSize[1] = t.blockSize) })); #bt; #vt; #ut; headerElement; overlayElement; viewportElement; selectorElement; gridElement; linksContainerElement; nodesContainerElement; viewportSize = [0, 0]; initialize(e) { super.initialize(e), this.element.style.cssText = Object.entries(wi.styleVariables).map((([e, t]) => `${e}:${t};`)).join(""); const t = this.element.querySelector(":scope > template")?.content.textContent; t && (this.element.requestUpdate(), this.element.updateComplete.then((() => { this.blueprint.mousePosition = [Math.round(this.viewportSize[0] / 2), Math.round(this.viewportSize[1] / 2)], this.getPasteInputObject().pasted(t), this.blueprint.unselectAll() }))) } setup() { super.setup(), this.#gt.observe(this.viewportElement, { box: "device-pixel-content-box" }); const e = this.viewportElement.getBoundingClientRect(); this.viewportSize[0] = e.width, this.viewportSize[1] = e.height, this.blueprint.nodes.length > 0 && (this.blueprint.requestUpdate(), this.blueprint.updateComplete.then((() => this.centerContentInViewport()))) } cleanup() { super.cleanup(), this.#gt.unobserve(this.viewportElement) } createInputObjects() { const e = this.element.getGridDOMElement(); return this.#bt = new ci(e, this.blueprint), this.#vt = new pi(e, this.blueprint), this.#ut = new mi(e, this.blueprint), [...super.createInputObjects(), this.#bt, this.#vt, this.#ut, new hi(e, this.blueprint), new kt(e, this.blueprint, { activationKeys: Tt.duplicateNodes }, (() => this.blueprint.template.getPasteInputObject().pasted(this.blueprint.template.getCopyInputObject().copied()))), new kt(e, this.blueprint, { activationKeys: Tt.deleteNodes }, (() => this.blueprint.removeGraphElement(...this.blueprint.getNodes(!0)))), new kt(e, this.blueprint, { activationKeys: Tt.selectAllNodes }, (() => this.blueprint.selectAll())), new fi(e, this.blueprint, { clickButton: re.mouseClickButton, exitAnyButton: !0, moveEverywhere: !0 }), new bi(e, this.blueprint, { clickButton: re.mouseRightClickButton, exitAnyButton: !1, moveEverywhere: !0 }), new yi(e, this.blueprint), new vi(e, this.blueprint), new gi(e, this.blueprint)] } render() { return G`Zoom ${0 == this.blueprint.zoom ? "1:1" : (this.blueprint.zoom > 0 ? "+" : "") + this.blueprint.zoom}` } firstUpdated(e) { super.firstUpdated(e), this.headerElement = this.blueprint.querySelector(".ueb-viewport-header"), this.overlayElement = this.blueprint.querySelector(".ueb-viewport-overlay"), this.viewportElement = this.blueprint.querySelector(".ueb-viewport-body"), this.selectorElement = this.blueprint.querySelector("ueb-selector"), this.gridElement = this.viewportElement.querySelector(".ueb-grid"), this.linksContainerElement = this.blueprint.querySelector("[data-links]"), this.linksContainerElement.append(...this.blueprint.getLinks()), this.nodesContainerElement = this.blueprint.querySelector("[data-nodes]"), this.nodesContainerElement.append(...this.blueprint.getNodes()), this.viewportElement.scroll(re.expandGridSize, re.expandGridSize) } willUpdate(e) { super.willUpdate(e), this.headerElement && e.has("zoom") && (this.headerElement.classList.add("ueb-zoom-changed"), this.headerElement.addEventListener("animationend", (() => this.headerElement.classList.remove("ueb-zoom-changed")))) } updated(e) { if (super.updated(e), (e.has("scrollX") || e.has("scrollY")) && this.viewportElement.scroll(this.blueprint.scrollX, this.blueprint.scrollY), e.has("zoom")) { this.blueprint.style.setProperty("--ueb-scale", this.blueprint.getScale()); const t = e.get("zoom"), i = Math.min(t, this.blueprint.zoom), s = Math.max(t, this.blueprint.zoom), n = ae.range(i, s), r = e => `ueb-zoom-${e}`; t < this.blueprint.zoom ? (this.blueprint.classList.remove(...n.filter((e => e < 0)).map(r)), this.blueprint.classList.add(...n.filter((e => e > 0)).map(r))) : (this.blueprint.classList.remove(...n.filter((e => e > 0)).map(r)), this.blueprint.classList.add(...n.filter((e => e < 0)).map(r))) } } getCommentNodes(e = !1) { return this.blueprint.querySelectorAll(`ueb-node[data-type="${re.paths.comment}"]${e ? '[data-selected="true"]' : ""}, ueb-node[data-type="${re.paths.materialGraphNodeComment}"]${e ? '[data-selected="true"]' : ""}`) } getPin(e) { return this.blueprint.querySelector(`ueb-node[data-title="${e.objectName}"] ueb-pin[data-id="${e.pinGuid}"]`) } getCopyInputObject() { return this.#bt } getPasteInputObject() { return this.#vt } getZoomInputObject() { return this.#ut } isPointVisible(e, t) { return !1 } gridTopVisibilityBoundary() { return this.blueprint.scaleCorrect(this.blueprint.scrollY) - this.blueprint.translateY } gridRightVisibilityBoundary() { return this.gridLeftVisibilityBoundary() + this.blueprint.scaleCorrect(this.viewportSize[0]) } gridBottomVisibilityBoundary() { return this.gridTopVisibilityBoundary() + this.blueprint.scaleCorrect(this.viewportSize[1]) } gridLeftVisibilityBoundary() { return this.blueprint.scaleCorrect(this.blueprint.scrollX) - this.blueprint.translateX } centerViewport(e = 0, t = 0, i = !0) { const s = this.gridLeftVisibilityBoundary() + this.blueprint.scaleCorrect(this.viewportSize[0] / 2), n = this.gridTopVisibilityBoundary() + this.blueprint.scaleCorrect(this.viewportSize[1] / 2); this.blueprint.scrollDelta(this.blueprint.scaleCorrectReverse(e - s), this.blueprint.scaleCorrectReverse(t - n), i) } centerContentInViewport(e = !0) { let t = 0, i = 0, s = Number.MAX_SAFE_INTEGER, n = Number.MIN_SAFE_INTEGER, r = Number.MAX_SAFE_INTEGER, a = Number.MIN_SAFE_INTEGER; const o = this.blueprint.getNodes(); for (const e of o) t += e.leftBoundary() + e.rightBoundary(), i += e.topBoundary() + e.bottomBoundary(), s = Math.min(s, e.leftBoundary()), n = Math.max(n, e.rightBoundary()), r = Math.min(r, e.topBoundary()), a = Math.max(a, e.bottomBoundary()); t = Math.round(n - s <= this.viewportSize[0] ? (n + s) / 2 : t / (2 * o.length)), i = Math.round(a - r <= this.viewportSize[1] ? (a + r) / 2 : i / (2 * o.length)), this.centerViewport(t, i, e) } } class Si extends oe { static properties = { selecting: { type: Boolean, attribute: "data-selecting", reflect: !0, converter: ke.booleanConverter }, scrolling: { type: Boolean, attribute: "data-scrolling", reflect: !0, converter: ke.booleanConverter }, focused: { type: Boolean, attribute: "data-focused", reflect: !0, converter: ke.booleanConverter }, zoom: { type: Number, attribute: "data-zoom", reflect: !0 }, scrollX: { type: Number, attribute: !1 }, scrollY: { type: Number, attribute: !1 }, additionalX: { type: Number, attribute: !1 }, additionalY: { type: Number, attribute: !1 }, translateX: { type: Number, attribute: !1 }, translateY: { type: Number, attribute: !1 } }; static nodeBoundariesSupplier = e => ({ primaryInf: e.leftBoundary(!0), primarySup: e.rightBoundary(!0), secondaryInf: e.topBoundary(!0), secondarySup: e.bottomBoundary(!0) }); static nodeSelectToggleFunction = (e, t) => { e.setSelected(t) }; #ft = 0; #yt = 0; nodes = []; links = []; nodesNames = new Map; mousePosition = [0, 0]; waitingExpandUpdate = !1; constructor() { super(), this.selecting = !1, this.scrolling = !1, this.focused = !1, this.zoom = 0, this.scrollX = re.expandGridSize, this.scrollY = re.expandGridSize, this.translateX = re.expandGridSize, this.translateY = re.expandGridSize, super.initialize(new ui, new wi) } initialize() { } getGridDOMElement() { return this.template.gridElement } getScroll() { return [this.scrollX, this.scrollY] } setScroll(e, t) { this.scrollX = e, this.scrollY = t } scrollDelta(e = 0, t = 0, i = !1, s = re.smoothScrollTime) { if (i) { let i = [0, 0]; this.#ft && cancelAnimationFrame(this.#ft), this.#yt && cancelAnimationFrame(this.#yt), ae.animate(0, e, s, (e => { this.scrollDelta(e - i[0], 0, !1), i[0] = e }), (e => this.#ft = e)), ae.animate(0, t, s, (e => { this.scrollDelta(0, e - i[1], !1), i[1] = e }), (e => this.#yt = e)) } else { const i = [2 * re.expandGridSize, 2 * re.expandGridSize]; let s = this.getScroll(), n = [s[0] + e, s[1] + t], r = [0, 0]; for (let e = 0; e < 2; ++e)n[e] < re.gridExpandThreshold * re.expandGridSize ? r[e] = -1 : n[e] > i[e] - re.gridExpandThreshold * re.expandGridSize && (r[e] = 1); 0 == r[0] && 0 == r[1] || this.seamlessExpand(r[0], r[1]), s = this.getScroll(), n = [s[0] + e, s[1] + t], this.setScroll(n[0], n[1]) } } scrollCenter(e = !1) { const t = this.getScroll(), i = [this.translateX - t[0], this.translateY - t[1]], s = this.getViewportSize().map((e => e / 2)), n = [i[0] - s[0], i[1] - s[1]]; this.scrollDelta(n[0], n[1], e) } getViewportSize() { return [this.template.viewportElement.clientWidth, this.template.viewportElement.clientHeight] } getScrollMax() { return [this.template.viewportElement.scrollWidth - this.template.viewportElement.clientWidth, this.template.viewportElement.scrollHeight - this.template.viewportElement.clientHeight] } snapToGrid(e, t) { return ae.snapToGrid(e, t, re.gridSize) } seamlessExpand(e, t) { e = Math.round(e), t = Math.round(t); let i = this.getScale();[e, t] = [-e * re.expandGridSize, -t * re.expandGridSize], 0 != e && (this.scrollX += e, e /= i), 0 != t && (this.scrollY += t, t /= i), this.translateX += e, this.translateY += t } progressiveSnapToGrid(e) { return re.expandGridSize * Math.round(e / re.expandGridSize + .5 * Math.sign(e)) } getZoom() { return this.zoom } setZoom(e, t) { if ((e = ae.clamp(e, re.minZoom, re.maxZoom)) == this.zoom) return; let i = this.getScale(); if (this.zoom = e, t) { t[0] += this.translateX, t[1] += this.translateY; let e = this.getScale() / i, s = [e * t[0], e * t[1]]; this.scrollDelta((s[0] - t[0]) * i, (s[1] - t[1]) * i) } } getScale() { return re.scale[this.getZoom()] } scaleCorrect(e) { return e / this.getScale() } scaleCorrectReverse(e) { return e * this.getScale() } compensateTranslation(e, t) { return [e -= this.translateX, t -= this.translateY] } getNodes(e = !1, [t, i, s, n] = [Number.MIN_SAFE_INTEGER, Number.MAX_SAFE_INTEGER, Number.MAX_SAFE_INTEGER, Number.MIN_SAFE_INTEGER]) { let r = this.nodes; return e && (r = r.filter((e => e.selected))), (t > Number.MIN_SAFE_INTEGER || i < Number.MAX_SAFE_INTEGER || s < Number.MAX_SAFE_INTEGER || n > Number.MIN_SAFE_INTEGER) && (r = r.filter((e => e.topBoundary() >= t && e.rightBoundary() <= i && e.bottomBoundary() <= s && e.leftBoundary() >= n))), r } getCommentNodes(e = !1) { let t = [...this.template.getCommentNodes(e)]; return 0 === t.length && (t = this.nodes.filter((t => t.getType() === re.paths.comment && (!e || t.selected)))), t } getPin(e) { let t = this.template.getPin(e); return t && t.nodeElement.getNodeName() == e.objectName.toString() || (t = [...this.nodes.find((t => e.objectName.toString() == t.getNodeName()))?.getPinElements() ?? []].find((t => e.pinGuid.toString() == t.getPinId().toString()))), t } getLinks(e = null, t = null) { if (null == e != (null == t)) { const i = e ?? t; return this.links.filter((e => e.source == i || e.destination == i)) } return null != e && null != t ? this.links.filter((i => i.source == e && i.destination == t || i.source == t && i.destination == e)) : this.links } getLink(e, t, i = !1) { return this.links.find((s => s.source == e && s.destination == t || !i && s.source == t && s.destination == e)) } selectAll() { this.getNodes().forEach((e => Si.nodeSelectToggleFunction(e, !0))) } unselectAll() { this.getNodes().forEach((e => Si.nodeSelectToggleFunction(e, !1))) } addGraphElement(...e) { const t = e => { const i = e.currentTarget; i.removeEventListener(re.removeEventName, t); const [s, n] = i instanceof li ? [this.nodes, i.entity] : i instanceof Bt ? [this.links] : null, r = s?.indexOf(i); if (r >= 0) { const e = s.pop(); r < s.length && (s[r] = e) } n && this.entity.removeObjectEntity(n) }; for (const i of e) if (i.blueprint = this, i instanceof li && !this.nodes.includes(i)) { if (i.getType() == re.paths.niagaraClipboardContent) { this.entity = this.entity.mergeWith(i.entity); const e = atob(i.entity.ExportedNodes.toString()); this.template.getPasteInputObject().pasted(e).forEach((e => e.entity._exported = !0)); continue } const e = i.entity.getObjectName(), s = this.entity.getHomonymObjectEntity(i.entity); if (s) { const t = this.entity.takeFreeName(e); s.Name = new s.Name.constructor(t) } this.nodes.push(i), this.entity.addObjectEntity(i.entity), i.addEventListener(re.removeEventName, t), this.template.nodesContainerElement?.appendChild(i) } else i instanceof Bt && !this.links.includes(i) && (this.links.push(i), i.addEventListener(re.removeEventName, t), this.template.linksContainerElement && !this.template.linksContainerElement.contains(i) && this.template.linksContainerElement.appendChild(i)); e.filter((e => e instanceof li)).forEach((t => t.sanitizeLinks(e))), e.filter((e => e instanceof li && e.getType() == re.paths.comment)).forEach((e => e.updateComplete.then((() => e.template.manageNodesBind())))) } removeGraphElement(...e) { for (let t of e) { if (t.closest("ueb-blueprint") !== this) return; t.remove() } } setFocused(e = !0) { if (this.focused == e) return; let t = new CustomEvent(e ? re.focusEventName.begin : re.focusEventName.end); this.focused = e, this.focused || this.unselectAll(), this.dispatchEvent(t) } acknowledgeEditText(e) { const t = new CustomEvent(e ? re.editTextEventName.begin : re.editTextEventName.end); this.dispatchEvent(t) } } customElements.define("ueb-blueprint", Si); class Ei extends zt { #wt; get locationChangeCallback() { return this.#wt } set locationChangeCallback(e) { this.#wt = e } movementSpace; movementSpaceSize = [0, 0]; firstUpdated(e) { super.firstUpdated(e), this.movementSpace = this.element.parentElement } setup() { super.setup(); const e = this.movementSpace.getBoundingClientRect(); this.movementSpaceSize = [e.width, e.height] } createDraggableObject() { return new Vt(this.element, this.blueprint, { draggableElement: this.movementSpace, ignoreTranslateCompensate: !0, moveEverywhere: !0, movementSpace: this.movementSpace, repositionOnClick: !0, stepSize: 1 }) } adjustLocation(e, t) { return this.locationChangeCallback?.(e, t), [e, t] } } class Ci extends Ei { adjustLocation(e, t) { const i = Math.round(this.movementSpaceSize[0] / 2); e -= i, t = -(t - i); let [s, n] = ae.getPolarCoordinates(e, t); return s = Math.min(s, i), [e, t] = ae.getCartesianCoordinates(s, n), this.locationChangeCallback?.(e / i, t / i), [e = Math.round(e + i), t = Math.round(-t + i)] } } class Ni extends Gt { windowElement; setup() { super.setup(), this.windowElement = this.closest("ueb-window") } setLocation(e, t) { super.setLocation(...this.template.adjustLocation(e, t)) } } class xi extends Ni { constructor() { super(), super.initialize({}, new Ci) } static newObject() { return new xi } initialize() { } } class Pi extends Ei { adjustLocation(e, t) { return e = ae.clamp(e, 0, this.movementSpaceSize[0]), t = ae.clamp(t, 0, this.movementSpaceSize[1]), this.locationChangeCallback?.(e / this.movementSpaceSize[0], 1 - t / this.movementSpaceSize[1]), [e, t] } } class ki extends Ni { constructor() { super(), super.initialize({}, new Pi) } static newObject() { return new ki } initialize() { } } class Ai extends Ht { constructor(e, t, i = {}) { i.consumeEvent = !0, super(e, t, i) } } class Li extends It { #St; #Et; #Ct = e => this.element.selectedOption = e.target.selectedOptions[0].value; render() { return G`${this.element.options.map((([e, t]) => G`${t}`))} ${this.element.selectedOption}` } firstUpdated(e) { super.firstUpdated(e), this.#St = this.element.querySelector("select:first-child"), this.#Et = this.element.querySelector("select:last-child"); const t = new Event("input", { bubbles: !0 }); this.#St.dispatchEvent(t) } updated(e) { super.updated(e); const t = this.#Et.getBoundingClientRect(); this.element.style.setProperty("--ueb-dropdown-width", t.width + "px") } createInputObjects() { return [...super.createInputObjects(), new Ai(this.element, this.blueprint)] } setSelectedValue(e) { this.element.querySelector(`option[value="${e}"]`).defaultSelected = !0 } getSelectedValue() { return this.#St.value } } class Mi extends oe { static properties = { ...super.properties, options: { type: Object }, selectedOption: { type: String } }; constructor() { super(), super.initialize({}, new Li), this.options = [], this.selectedOption = "" } static newObject(e) { return new Mi } initialize() { } getValue() { return this.template.getSelectedValue() } } class Ti extends It { #Nt = () => { this.blueprint.acknowledgeEditText(!0), this.element.selectOnFocus && getSelection().selectAllChildren(this.element) }; #xt = () => { this.blueprint.acknowledgeEditText(!1), getSelection().removeAllRanges() }; #Pt = e => e.target.querySelectorAll("br").forEach((e => e.remove())); #kt = e => { "Enter" != e.code || e.shiftKey || e.target.blur() }; initialize(e) { super.initialize(e), this.element.classList.add("ueb-pin-input-content"), this.element.setAttribute("role", "textbox"), this.element.contentEditable = "true" } firstUpdated(e) { super.firstUpdated(e); const t = new Event("input", { bubbles: !0 }); this.element.dispatchEvent(t) } createInputObjects() { return [...super.createInputObjects(), new Ai(this.element, this.blueprint)] } setup() { super.setup(), this.element.addEventListener("focus", this.#Nt), this.element.addEventListener("focusout", this.#xt), this.element.singleLine && this.element.addEventListener("input", this.#Pt), this.element.blurOnEnter && this.element.addEventListener("keydown", this.#kt) } cleanup() { super.cleanup(), this.element.removeEventListener("focus", this.#Nt), this.element.removeEventListener("focusout", this.#xt), this.element.removeEventListener("input", this.#Pt), this.element.removeEventListener("keydown", this.#kt) } } class Ii extends oe { static properties = { ...super.properties, singleLine: { type: Boolean, attribute: "data-single-line", converter: ke.booleanConverter, reflect: !0 }, selectOnFocus: { type: Boolean, attribute: "data-select-focus", converter: ke.booleanConverter, reflect: !0 }, blurOnEnter: { type: Boolean, attribute: "data-blur-enter", converter: ke.booleanConverter, reflect: !0 } }; constructor() { super(), this.singleLine = !1, this.selectOnFocus = !0, this.blurOnEnter = !0, super.initialize({}, new Ti) } static newObject() { return new Ii } initialize() { } } class Oi extends Jt { #At; #Lt = () => { const e = this.element.getDefaultValue(); e.value = this.#At.checked, this.element.setDefaultValue(e) }; firstUpdated(e) { super.firstUpdated(e), this.#At = this.element.querySelector(".ueb-pin-input") } setup() { super.setup(), this.#At?.addEventListener("change", this.#Lt) } cleanup() { super.cleanup(), this.#At?.removeEventListener("change", this.#Lt) } createInputObjects() { return [...super.createInputObjects(), new Ai(this.#At, this.blueprint)] } renderInput() { return G`` } } class Di extends Jt { static singleLineInput = !1; static selectOnFocus = !0; static saveEachInputChange = !1; #Mt; get inputWrapper() { return this.#Mt } #Tt; static stringFromInputToUE(e) { return e.replace(/(?=\n\s*)\n$/, "") } static stringFromUEToInput(e) { return e.replaceAll(/(?:\r|(?<=(?:^|[^\\])(?:\\\\)*)\\r)(?=\n)/g, "").replace(/(?<=\n\s*)$/, "\n") } #It = () => this.setInputs(this.getInputs(), !0); #Ot = e => this.#Dt(e.target); #Dt(e) { if (this.element.querySelector(".ueb-pin-name")?.getBoundingClientRect().width < 20) return; const t = this.blueprint.scaleCorrect(this.#Mt.getBoundingClientRect().width) + this.nameWidth, i = this.element.classList.contains("ueb-pin-input-wrap"); !i && t > re.pinInputWrapWidth ? this.element.classList.add("ueb-pin-input-wrap") : i && t <= re.pinInputWrapWidth && this.element.classList.remove("ueb-pin-input-wrap") } firstUpdated(e) { super.firstUpdated(e); this.constructor.canWrapInput && this.isInputRendered() && (this.element.addEventListener("input", this.#Ot), this.nameWidth = this.blueprint.scaleCorrect(this.element.querySelector(".ueb-pin-name")?.getBoundingClientRect().width ?? 0)), this.#Mt = this.element.querySelector(".ueb-pin-input-wrapper"), this.#Tt = [...this.element.querySelectorAll("ueb-input")] } setup() { super.setup(); const e = this.constructor; e.saveEachInputChange ? this.element.addEventListener("input", this.#It) : this.element.addEventListener("focusout", this.#It), e.canWrapInput && this.isInputRendered() && (this.element.addEventListener("input", this.#Ot), this.element.nodeElement.addEventListener(re.nodeReflowEventName, this.#Ot)) } cleanup() { super.cleanup(), this.element.nodeElement.removeEventListener(re.nodeReflowEventName, this.#Ot), this.element.removeEventListener("input", this.#Ot), this.element.removeEventListener("input", this.#It), this.element.removeEventListener("focusout", this.#It) } getInput() { return this.getInputs().reduce(((e, t) => e + t), "") } getInputs() { return this.#Tt.map((e => ae.clearHTMLWhitespace(e.innerHTML))) } setInputs(e = [], t = !0) { this.#Tt.forEach(this.constructor.singleLineInput ? (t, i) => t.innerText = e[i] : (t, i) => t.innerText = e[i].replaceAll("\n", "")), t && this.setDefaultValue(e.map((e => Di.stringFromInputToUE(e))), e), this.element.requestUpdate(), this.element.nodeElement.acknowledgeReflow() } setDefaultValue(e = [], t = e) { this.element.setDefaultValue(e.join("")) } renderInput() { const e = this.constructor, t = e.singleLineInput, i = e.selectOnFocus; return G`` } } class $i extends Jt { renderIcon() { return le.execPin } renderName() { let e = this.element.entity.PinName?.toString(); if (this.element.entity.PinFriendlyName) e = this.element.entity.PinFriendlyName.toString(); else if ("execute" === e || "then" === e) return G``; return G`${this.element.getPinDisplayName()}` } } class Bi extends Di { static singleLineInput = !0; setInputs(e = [], t = !1) { if (e && 0 != e.length || (e = [this.getInput()]), super.setInputs(e, !1), t) { let i = []; for (const s of e) { let e = parseFloat(s); isNaN(e) && (e = 0, t = !1), i.push(e) } this.setDefaultValue(i, e) } } setDefaultValue(e = [], t) { const i = this.element.getDefaultValue(); i.value = e[0], this.element.setDefaultValue(i), this.element.requestUpdate() } } class Gi extends Bi { renderInput() { return G`` } } +var te,ie;class se extends b{constructor(){super(...arguments),this.renderOptions={host:this},this._$Do=void 0}createRenderRoot(){var e,t;const i=super.createRenderRoot();return null!==(e=(t=this.renderOptions).renderBefore)&&void 0!==e||(t.renderBefore=i.firstChild),i}update(e){const t=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(e),this._$Do=((e,t,i)=>{var s,n;const r=null!==(s=null==i?void 0:i.renderBefore)&&void 0!==s?s:t;let a=r._$litPart$;if(void 0===a){const e=null!==(n=null==i?void 0:i.renderBefore)&&void 0!==n?n:null;r._$litPart$=a=new K(t.insertBefore(P(),e),e,void 0,null!=i?i:{})}return a._$AI(e),a})(t,this.renderRoot,this.renderOptions)}connectedCallback(){var e;super.connectedCallback(),null===(e=this._$Do)||void 0===e||e.setConnected(!0)}disconnectedCallback(){var e;super.disconnectedCallback(),null===(e=this._$Do)||void 0===e||e.setConnected(!1)}render(){return H}}se.finalized=!0,se._$litElement$=!0,null===(te=globalThis.litElementHydrateSupport)||void 0===te||te.call(globalThis,{LitElement:se});const ne=globalThis.litElementPolyfillSupport;null==ne||ne({LitElement:se}),(null!==(ie=globalThis.litElementVersions)&&void 0!==ie?ie:globalThis.litElementVersions=[]).push("3.3.3");class re{static nodeColors={black:r``,blue:r``,darkBlue:r``,darkerBlue:r``,darkTurquoise:r``,gray:r``,green:r``,intenseGreen:r``,lime:r``,red:r``,turquoise:r``,violet:r``,yellow:r``};static alphaPattern="repeating-conic-gradient(#7c8184 0% 25%, #c2c3c4 0% 50%) 50% / 10px 10px";static colorDragEventName="ueb-color-drag";static colorPickEventName="ueb-color-pick";static colorWindowEventName="ueb-color-window";static colorWindowName="Color Picker";static defaultCommentHeight=96;static defaultCommentWidth=400;static distanceThreshold=5;static dragEventName="ueb-drag";static dragGeneralEventName="ueb-drag-general";static edgeScrollThreshold=50;static editTextEventName={begin:"ueb-edit-text-begin",end:"ueb-edit-text-end"};static expandGridSize=400;static focusEventName={begin:"blueprint-focus",end:"blueprint-unfocus"};static fontSize=r``;static gridAxisLineColor=r``;static gridExpandThreshold=.25;static gridLineColor=r``;static gridLineWidth=1;static gridSet=8;static gridSetLineColor=r``;static gridShrinkThreshold=4;static gridSize=16;static hexColorRegex=/^\s*#(?[0-9a-fA-F]{2})(?[0-9a-fA-F]{2})(?[0-9a-fA-F]{2})([0-9a-fA-F]{2})?|#(?[0-9a-fA-F])(?[0-9a-fA-F])(?[0-9a-fA-F])\s*$/;static indentation=" ";static keysSeparator=/[\.\(\)]/;static knotOffset=[-re.gridSize,-.5*re.gridSize];static lineTracePattern=/LineTrace(Single|Multi)(\w*)/;static linkCurveHeight=15;static linkCurveWidth=80;static linkMinWidth=100;static nameRegexSpaceReplacement=new RegExp("^K2(?:[Nn]ode)?_|(?<=[a-z])(?=[A-Z0-9])|(?<=[A-Z])(?{let s=100-e;return`M ${e} 0 C ${t.toFixed(3)} 0, ${i.toFixed(3)} 0, 50 50 S ${(s-t+e).toFixed(3)} 100, ${s.toFixed(3)} 100`};static maxZoom=7;static minZoom=-12;static mouseClickButton=0;static mouseRightClickButton=2;static mouseWheelZoomThreshold=80;static nodeDragEventName="ueb-node-drag";static nodeDragGeneralEventName="ueb-node-drag-general";static nodeTitle=(e,t)=>`${e}_${t}`;static nodeRadius=8;static nodeReflowEventName="ueb-node-reflow";static paths={actorBoundEvent:"/Script/BlueprintGraph.K2Node_ActorBoundEvent",addDelegate:"/Script/BlueprintGraph.K2Node_AddDelegate",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",callDelegate:"/Script/BlueprintGraph.K2Node_CallDelegate",callFunction:"/Script/BlueprintGraph.K2Node_CallFunction",clearDelegate:"/Script/BlueprintGraph.K2Node_ClearDelegate",comment:"/Script/UnrealEd.EdGraphNode_Comment",commutativeAssociativeBinaryOperator:"/Script/BlueprintGraph.K2Node_CommutativeAssociativeBinaryOperator",componentBoundEvent:"/Script/BlueprintGraph.K2Node_ComponentBoundEvent",createDelegate:"/Script/BlueprintGraph.K2Node_CreateDelegate",customEvent:"/Script/BlueprintGraph.K2Node_CustomEvent",doN:"/Engine/EditorBlueprintResources/StandardMacros.StandardMacros:Do N",doOnce:"/Engine/EditorBlueprintResources/StandardMacros.StandardMacros:DoOnce",dynamicCast:"/Script/BlueprintGraph.K2Node_DynamicCast",eAttachmentRule:"/Script/Engine.EAttachmentRule",edGraph:"/Script/Engine.EdGraph",eDrawDebugTrace:"/Script/Engine.EDrawDebugTrace",eMaterialSamplerType:"/Script/Engine.EMaterialSamplerType",eNiagara_Float4Channel:"/Niagara/Enums/ENiagara_Float4Channel.ENiagara_Float4Channel",enum:"/Script/CoreUObject.Enum",enumLiteral:"/Script/BlueprintGraph.K2Node_EnumLiteral",eSamplerSourceMode:"/Script/Engine.ESamplerSourceMode",eSearchCase:"/Script/CoreUObject.ESearchCase",eSearchDir:"/Script/CoreUObject.ESearchDir",eSpawnActorCollisionHandlingMethod:"/Script/Engine.ESpawnActorCollisionHandlingMethod",eTextureMipValueMode:"/Script/Engine.ETextureMipValueMode",eTraceTypeQuery:"/Script/Engine.ETraceTypeQuery",event:"/Script/BlueprintGraph.K2Node_Event",eWorldPositionIncludedOffsets:"/Script/Engine.EWorldPositionIncludedOffsets",executionSequence:"/Script/BlueprintGraph.K2Node_ExecutionSequence",flipflop:"/Engine/EditorBlueprintResources/StandardMacros.StandardMacros:FlipFlop",forEachElementInEnum:"/Script/BlueprintGraph.K2Node_ForEachElementInEnum",forEachLoop:"/Engine/EditorBlueprintResources/StandardMacros.StandardMacros:ForEachLoop",forEachLoopWithBreak:"/Engine/EditorBlueprintResources/StandardMacros.StandardMacros:ForEachLoopWithBreak",forLoop:"/Engine/EditorBlueprintResources/StandardMacros.StandardMacros:ForLoop",forLoopWithBreak:"/Engine/EditorBlueprintResources/StandardMacros.StandardMacros:ForLoopWithBreak",functionEntry:"/Script/BlueprintGraph.K2Node_FunctionEntry",functionResult:"/Script/BlueprintGraph.K2Node_FunctionResult",gameplayTag:"/Script/GameplayTags.GameplayTag",getInputAxisKeyValue:"/Script/BlueprintGraph.K2Node_GetInputAxisKeyValue",ifThenElse:"/Script/BlueprintGraph.K2Node_IfThenElse",inputAxisKeyEvent:"/Script/BlueprintGraph.K2Node_InputAxisKeyEvent",inputDebugKey:"/Script/InputBlueprintNodes.K2Node_InputDebugKey",inputKey:"/Script/BlueprintGraph.K2Node_InputKey",inputVectorAxisEvent:"/Script/BlueprintGraph.K2Node_InputVectorAxisEvent",isValid:"/Engine/EditorBlueprintResources/StandardMacros.StandardMacros:IsValid",kismetArrayLibrary:"/Script/Engine.KismetArrayLibrary",kismetMathLibrary:"/Script/Engine.KismetMathLibrary",knot:"/Script/BlueprintGraph.K2Node_Knot",linearColor:"/Script/CoreUObject.LinearColor",literal:"/Script/BlueprintGraph.K2Node_Literal",macro:"/Script/BlueprintGraph.K2Node_MacroInstance",makeArray:"/Script/BlueprintGraph.K2Node_MakeArray",makeMap:"/Script/BlueprintGraph.K2Node_MakeMap",makeSet:"/Script/BlueprintGraph.K2Node_MakeSet",makeStruct:"/Script/BlueprintGraph.K2Node_MakeStruct",materialExpressionComponentMask:"/Script/Engine.MaterialExpressionComponentMask",materialExpressionConstant:"/Script/Engine.MaterialExpressionConstant",materialExpressionConstant2Vector:"/Script/Engine.MaterialExpressionConstant2Vector",materialExpressionConstant3Vector:"/Script/Engine.MaterialExpressionConstant3Vector",materialExpressionConstant4Vector:"/Script/Engine.MaterialExpressionConstant4Vector",materialExpressionFunctionInput:"/Script/Engine.MaterialExpressionFunctionInput",materialExpressionLogarithm:"/Script/InterchangeImport.MaterialExpressionLogarithm",materialExpressionLogarithm10:"/Script/Engine.MaterialExpressionLogarithm10",materialExpressionLogarithm2:"/Script/Engine.MaterialExpressionLogarithm2",materialExpressionMaterialFunctionCall:"/Script/Engine.MaterialExpressionMaterialFunctionCall",materialExpressionSquareRoot:"/Script/Engine.MaterialExpressionSquareRoot",materialExpressionSubtract:"/Script/Engine.MaterialExpressionSubtract",materialExpressionTextureCoordinate:"/Script/Engine.MaterialExpressionTextureCoordinate",materialExpressionTextureSample:"/Script/Engine.MaterialExpressionTextureSample",materialExpressionWorldPosition:"/Script/Engine.MaterialExpressionWorldPosition",materialGraphNode:"/Script/UnrealEd.MaterialGraphNode",materialGraphNodeComment:"/Script/UnrealEd.MaterialGraphNode_Comment",metasoundEditorGraphExternalNode:"/Script/MetasoundEditor.MetasoundEditorGraphExternalNode",multiGate:"/Script/BlueprintGraph.K2Node_MultiGate",niagaraBool:"/Script/Niagara.NiagaraBool",niagaraClipboardContent:"/Script/NiagaraEditor.NiagaraClipboardContent",niagaraDataInterfaceVolumeTexture:"/Script/Niagara.NiagaraDataInterfaceVolumeTexture",niagaraFloat:"/Script/Niagara.NiagaraFloat",NiagaraInt32:"/Script/Niagara.NiagaraInt32",niagaraMatrix:"/Script/Niagara.NiagaraMatrix",niagaraNodeConvert:"/Script/NiagaraEditor.NiagaraNodeConvert",niagaraNodeFunctionCall:"/Script/NiagaraEditor.NiagaraNodeFunctionCall",niagaraNodeOp:"/Script/NiagaraEditor.NiagaraNodeOp",niagaraNumeric:"/Script/Niagara.NiagaraNumeric",niagaraPosition:"/Script/Niagara.NiagaraPosition",pawn:"/Script/Engine.Pawn",pcgEditorGraphNode:"/Script/PCGEditor.PCGEditorGraphNode",pcgEditorGraphNodeInput:"/Script/PCGEditor.PCGEditorGraphNodeInput",pcgEditorGraphNodeOutput:"/Script/PCGEditor.PCGEditorGraphNodeOutput",pcgHiGenGridSizeSettings:"/Script/PCG.PCGHiGenGridSizeSettings",pcgSubgraphSettings:"/Script/PCG.PCGSubgraphSettings",promotableOperator:"/Script/BlueprintGraph.K2Node_PromotableOperator",quat4f:"/Script/CoreUObject.Quat4f",removeDelegate:"/Script/BlueprintGraph.K2Node_RemoveDelegate",reverseForEachLoop:"/Engine/EditorBlueprintResources/StandardMacros.StandardMacros:ReverseForEachLoop",rotator:"/Script/CoreUObject.Rotator",select:"/Script/BlueprintGraph.K2Node_Select",self:"/Script/BlueprintGraph.K2Node_Self",slateBlueprintLibrary:"/Script/UMG.SlateBlueprintLibrary",spawnActorFromClass:"/Script/BlueprintGraph.K2Node_SpawnActorFromClass",switchEnum:"/Script/BlueprintGraph.K2Node_SwitchEnum",switchGameplayTag:"/Script/GameplayTagsEditor.GameplayTagsK2Node_SwitchGameplayTag",switchInteger:"/Script/BlueprintGraph.K2Node_SwitchInteger",switchName:"/Script/BlueprintGraph.K2Node_SwitchName",switchString:"/Script/BlueprintGraph.K2Node_SwitchString",timeline:"/Script/BlueprintGraph.K2Node_Timeline",timeManagementBlueprintLibrary:"/Script/TimeManagement.TimeManagementBlueprintLibrary",transform:"/Script/CoreUObject.Transform",userDefinedEnum:"/Script/Engine.UserDefinedEnum",variableGet:"/Script/BlueprintGraph.K2Node_VariableGet",variableSet:"/Script/BlueprintGraph.K2Node_VariableSet",vector:"/Script/CoreUObject.Vector",vector2D:"/Script/CoreUObject.Vector2D",vector3f:"/Script/CoreUObject.Vector3f",vector4f:"/Script/CoreUObject.Vector4f",whileLoop:"/Engine/EditorBlueprintResources/StandardMacros.StandardMacros:WhileLoop"};static pinInputWrapWidth=145;static removeEventName="ueb-element-delete";static scale={[-12]:.133333,[-11]:.166666,[-10]:.2,[-9]:.233333,[-8]:.266666,[-7]:.3,[-6]:.333333,[-5]:.375,[-4]:.5,[-3]:.675,[-2]:.75,[-1]:.875,0:1,1:1.25,2:1.375,3:1.5,4:1.675,5:1.75,6:1.875,7:2};static smoothScrollTime=1e3;static stringEscapedCharacters=/["\\]/g;static subObjectAttributeNamePrefix="#SubObject";static subObjectAttributeNameFromEntity=(e,t=!1)=>this.subObjectAttributeNamePrefix+(!t&&e.Class?`_${e.Class.type}`:"")+"_"+e.Name;static subObjectAttributeNameFromReference=(e,t=!1)=>this.subObjectAttributeNamePrefix+(t?"":"_"+e.type)+"_"+e.path;static subObjectAttributeNameFromName=e=>this.subObjectAttributeNamePrefix+"_"+e;static switchTargetPattern=/\/Script\/[\w\.\/\:]+K2Node_Switch([A-Z]\w+)+/;static trackingMouseEventName={begin:"ueb-tracking-mouse-begin",end:"ueb-tracking-mouse-end"};static unescapedBackslash=/(?<=(?:[^\\]|^)(?:\\\\)*)\\(?!\\)/;static windowApplyEventName="ueb-window-apply";static windowApplyButtonText="OK";static windowCancelEventName="ueb-window-cancel";static windowCancelButtonText="Cancel";static windowCloseEventName="ueb-window-close";static CommonEnums={[this.paths.eAttachmentRule]:["KeepRelative","KeepWorld","SnapToTarget"],[this.paths.eDrawDebugTrace]:["None","ForOneFrame","ForDuration","Persistent"],[this.paths.eMaterialSamplerType]:["Color","Grayscale","Alpha","Normal","Masks","Distance Field Font","Linear Color","Linear Grayscale","Data","External","Virtual Color","Virtual Grayscale","Virtual Alpha","Virtual Normal","Virtual Mask","Virtual Linear Color","Virtual Linear Grayscal"],[this.paths.eNiagara_Float4Channel]:[["NewEnumerator0","R"],["NewEnumerator1","G"],["NewEnumerator2","B"],["NewEnumerator3","A"]],[this.paths.eSamplerSourceMode]:["From texture asset","Shared: Wrap","Shared: Clamp","Hidden"],[this.paths.eSearchCase]:["CaseSensitive","IgnoreCase"],[this.paths.eWorldPositionIncludedOffsets]:["Absolute World Position (Including Material Shader Offsets)","Absolute World Position (Excluding Material Shader Offsets)","Camera Relative World Position (Including Material Shader Offsets)","Camera Relative World Position (Excluding Material Shader Offsets)"],[this.paths.eSearchDir]:["FromStart","FromEnd"],[this.paths.eSpawnActorCollisionHandlingMethod]:[["Undefined","Default"],["AlwaysSpawn","Always Spawn, Ignore Collisions"],["AdjustIfPossibleButAlwaysSpawn","Try To Adjust Location, But Always Spawn"],["AdjustIfPossibleButDontSpawnIfColliding","Try To Adjust Location, Don't Spawn If Still Colliding"],["DontSpawnIfColliding","Do Not Spawn"]],[this.paths.eTextureMipValueMode]:["None (use computed mip level)","MipLevel (absolute, 0 is full resolution)","MipBias (relative to the computed mip level)","Derivative (explicit derivative to compute mip level)"],[this.paths.eTraceTypeQuery]:[["TraceTypeQuery1","Visibility"],["TraceTypeQuery2","Camera"]]};static ModifierKeys=["Ctrl","Shift","Alt","Meta"];static rgba=["R","G","B","A"];static Keys={Backspace:"Backspace",Tab:"Tab",LeftControl:"ControlLeft",RightControl:"ControlRight",LeftShift:"ShiftLeft",RightShift:"ShiftRight",LeftAlt:"AltLeft",RightAlt:"AltRight",Enter:"Enter",Pause:"Pause",CapsLock:"CapsLock",Escape:"Escape",Space:"Space",PageUp:"PageUp",PageDown:"PageDown",End:"End",Home:"Home",ArrowLeft:"ArrowLeft",ArrowUp:"ArrowUp",ArrowRight:"ArrowRight",ArrowDown:"ArrowDown",PrintScreen:"PrintScreen",Insert:"Insert",Delete:"Delete",Zero:"Digit0",One:"Digit1",Two:"Digit2",Three:"Digit3",Four:"Digit4",Five:"Digit5",Six:"Digit6",Seven:"Digit7",Eight:"Digit8",Nine:"Digit9",A:"KeyA",B:"KeyB",C:"KeyC",D:"KeyD",E:"KeyE",F:"KeyF",G:"KeyG",H:"KeyH",I:"KeyI",K:"KeyK",L:"KeyL",M:"KeyM",N:"KeyN",O:"KeyO",P:"KeyP",Q:"KeyQ",R:"KeyR",S:"KeyS",T:"KeyT",U:"KeyU",V:"KeyV",W:"KeyW",X:"KeyX",Y:"KeyY",Z:"KeyZ",NumPadZero:"Numpad0",NumPadOne:"Numpad1",NumPadTwo:"Numpad2",NumPadThree:"Numpad3",NumPadFour:"Numpad4",NumPadFive:"Numpad5",NumPadSix:"Numpad6",NumPadSeven:"Numpad7",NumPadEight:"Numpad8",NumPadNine:"Numpad9",Multiply:"NumpadMultiply",Add:"NumpadAdd",Subtract:"NumpadSubtract",Decimal:"NumpadDecimal",Divide:"NumpadDivide",F1:"F1",F2:"F2",F3:"F3",F4:"F4",F5:"F5",F6:"F6",F7:"F7",F8:"F8",F9:"F9",F10:"F10",F11:"F11",F12:"F12",NumLock:"NumLock",ScrollLock:"ScrollLock"}}class ae{static clamp(e,t=-1/0,i=1/0){return Math.min(Math.max(e,t),i)}static getScale(e){const t=e.blueprint?.getScale()??getComputedStyle(e).getPropertyValue("--ueb-scale");return""!=t?parseFloat(t):1}static minDecimals(e,t=1,i=1e-8){const s=e*10**t;return Math.abs(s%1)>i?e.toString():e.toFixed(t)}static roundDecimals(e,t=1){const i=10**t;return Math.round(e*i)/i}static printExponential(e){if(e==Number.POSITIVE_INFINITY)return"inf";if(e==Number.NEGATIVE_INFINITY)return"-inf";const t=Math.round(e);if(t>=1e3){const i=Math.floor(Math.log10(t));return`${Math.round(e/10**(i-2))/100}e+${i<10?"0":""}${i}`}return 0==Math.floor(e)?e.toString():this.roundDecimals(e,Math.max(0,3-Math.floor(e).toString().length)).toString()}static approximatelyEqual(e,t,i=1e-8){return!(Math.abs(e-t)>i)}static convertLocation(e,t,i=!1){const s=i?1:1/ae.getScale(t),n=t.getBoundingClientRect();return[Math.round((e[0]-n.x)*s),Math.round((e[1]-n.y)*s)]}static isSerialized(e,t){return e.attributes?.[t]?.serialized??e.constructor.attributes?.[t]?.serialized??!1}static objectGet(e,t,i=void 0){if(void 0!==e){if(!(t instanceof Array))throw new TypeError("UEBlueprint: Expected keys to be an array");return 0!=t.length&&t[0]in e&&void 0!==e[t[0]]?1==t.length?e[t[0]]:ae.objectGet(e[t[0]],t.slice(1),i):i}}static objectSet(e,t,i,s=Object){if(!(t instanceof Array))throw new TypeError("Expected keys to be an array.");if(1==t.length){if(t[0]in e||void 0===e[t[0]])return e[t[0]]=i,!0}else if(t.length>0)return e[t[0]]instanceof Object||(e[t[0]]=new s),ae.objectSet(e[t[0]],t.slice(1),i,s);return!1}static snapToGrid(e,t,i){return 1===i?[e,t]:[i*Math.floor(e/i),i*Math.floor(t/i)]}static mergeArrays(e=[],t=[],i=(e,t)=>e==t){let s=[];e=[...e],t=[...t];e:for(;;){for(let n=0;n|/g,"\n").replaceAll(/(\)/g,"")}static encodeHTMLWhitespace(e){return e.replaceAll(" "," ")}static capitalFirstLetter(e){return 0===e.length?e:e.charAt(0).toUpperCase()+e.slice(1)}static formatStringName(e=""){return e.replace(/^\s*b(?=[A-Z])/,"").replaceAll(re.nameRegexSpaceReplacement," ").trim().split(" ").map((e=>ae.capitalFirstLetter(e))).join(" ")}static getIdFromReference(e){return e.replace(/(?:.+\.)?([^\.]+)$/,"$1").replaceAll(/(?<=[a-z\d])(?=[A-Z])|(?<=[a-zA-Z])(?=\d)|(?<=[A-Z]{2})(?=[A-Z][a-z])/g,"-").toLowerCase()}static getNameFromPath(e,t=!1){const i=t?/([^\.\/]+?)(?:_\d+)$/:/([^\.\/]+)$/;return e.match(i)?.[1]??""}static getPolarCoordinates(e,t,i=!1){let s=Math.atan2(t,e);return i&&s<0&&(s=2*Math.PI+s),[Math.sqrt(e*e+t*t),s]}static getCartesianCoordinates(e,t){return[e*Math.cos(t),e*Math.sin(t)]}static range(e=0,t=0,i=(t>=e?1:-1)){return Array.from({length:Math.ceil((t-e)/i)},((t,s)=>e+s*i))}static getFirstWordOrder(e){return new RegExp(/\s*/.source+e.join(/[^\n]+\n\s*/.source)+/\s*/.source)}static paste(e,t){const i=new ClipboardEvent("paste",{bubbles:!0,cancelable:!0,clipboardData:new DataTransfer});i.clipboardData.setData("text",t),e.dispatchEvent(i)}static async copy(e){const t=new ClipboardEvent("copy",{bubbles:!0,cancelable:!0,clipboardData:new DataTransfer});e.dispatchEvent(t)}static animate(e,t,i,s,n=e=>{},r=e=>{const t=e**3.5;return t/(t+(1-e)**3.5)}){let a;const o=l=>{void 0===a&&(a=l);let u=(l-a)/i;ae.approximatelyEqual(u,1)||u>1?u=1:n(requestAnimationFrame(o));const c=e+(t-e)*r(u);s(c)};n(requestAnimationFrame(o))}}class oe extends se{#e;get blueprint(){return this.#e}set blueprint(e){this.#e=e}#t;get entity(){return this.#t}set entity(e){this.#t=e}#i;get template(){return this.#i}isInitialized=!1;isSetup=!1;inputObjects=[];initialize(e,t){this.requestUpdate(),this.#t=e,this.#i=t,this.#i.initialize(this),this.isConnected&&this.updateComplete.then((()=>this.setup())),this.isInitialized=!0}connectedCallback(){super.connectedCallback(),this.blueprint=this.closest("ueb-blueprint"),this.isInitialized&&(this.requestUpdate(),this.updateComplete.then((()=>this.setup())))}disconnectedCallback(){super.disconnectedCallback(),this.isSetup&&this.updateComplete.then((()=>this.cleanup())),this.acknowledgeDelete()}createRenderRoot(){return this}setup(){this.template.setup(),this.isSetup=!0}cleanup(){this.template.cleanup(),this.isSetup=!1}willUpdate(e){super.willUpdate(e),this.template.willUpdate(e)}update(e){super.update(e),this.template.update(e)}render(){return this.template.render()}firstUpdated(e){super.firstUpdated(e),this.template.firstUpdated(e),this.template.inputSetup()}updated(e){super.updated(e),this.template.updated(e)}acknowledgeDelete(){let e=new CustomEvent(re.removeEventName);this.dispatchEvent(e)}isSameGraph(e){return this.blueprint&&this.blueprint==e?.blueprint}}class le{static arrayPin=G``;static branchNode=G``;static breakStruct=G``;static cast=G``;static close=G``;static convert=G``;static correct=G``;static delegate=G``;static doN=G``;static doOnce=G``;static enum=G``;static event=G``;static execPin=G``;static expandIcon=G``;static flipflop=G``;static forEachLoop=G``;static functionSymbol=G``;static gamepad=G``;static genericPin=G``;static keyboard=G``;static loop=G``;static macro=G``;static mapPin=G``;static makeArray=G``;static makeMap=G``;static makeSet=G``;static makeStruct=G``;static metasoundFunction=G``;static mouse=G``;static node=G``;static operationPin=G``;static pcgStackPin=G``;static pcgPin=G``;static pcgParamPin=G``;static pcgSpatialPin=G``;static plusCircle=G``;static questionMark=G``;static referencePin=G``;static reject=G``;static setPin=G``;static select=G``;static sequence=G``;static sound=G``;static spawnActor=G``;static switch=G``;static timer=G``;static touchpad=G``}class ue{static makeSuccess(e,t,i=null,s=0){return{status:!0,value:t,position:e,bestParser:i,bestPosition:s}}static makeFailure(e=0,t=null,i=0){return{status:!1,value:null,position:e,bestParser:t,bestPosition:i}}static makeContext(e=null,t=""){return{parsernostrum:e,input:t,highlighted:null}}static makePathNode(e,t=0,i=null){return{parent:i,current:e,index:t}}}class ce{static indentation=" ";static highlight="Last valid parser";Self;static frame(e,t="",i=""){t=e?"[ "+t+" ]":"";let s=e.split("\n");const n=Math.max(...s.map((e=>e.length))),r=n";const n=this.isVisited(i),r=this.isHighlighted(e,i);let a=n?"<...>":this.doToString(e,r?"":t,i,s);return r&&(a=ce.frame(a,ce.highlight,t)),a}doToString(e,t,i,s){return`${this.constructor.name} does not implement toString()`}}class he extends ce{#s;get value(){return this.#s}constructor(e){super(),this.#s=e}parse(e,t,i,s){i=this.makePath(i,s);const n=t+this.#s.length,r=e.input.substring(t,n);return this.#s===r?ue.makeSuccess(n,this.#s,i,n):ue.makeFailure()}doToString(e,t,i,s){return`"${this.value.replaceAll("\n","\\n").replaceAll('"','\\"')}"`}}class pe extends ce{static instance=new pe;parse(e,t,i,s){return i=this.makePath(i,s),ue.makeSuccess(t,"",i,0)}doToString(e,t,i,s){return""}}class de extends ce{#n;get parsers(){return this.#n}constructor(...e){super(),this.#n=e}parse(e,t,i,s){i=this.makePath(i,s);const n=ue.makeSuccess(0,"");for(let s=0;sn.bestPosition&&(n.bestParser=r.bestParser,n.bestPosition=r.bestPosition),r.status)return n.value=r.value,n.position=r.position,n}return n.status=!1,n.value=null,n}doToString(e,t,i,s){if(2===this.#n.length&&this.#n[1]instanceof pe){let s=this.#n[0].toString(e,t,i,0);return this.#n[0]instanceof he||(s="<"+s+">"),s+="?",s}const n=t+ce.indentation;let r="ALT<\n"+n+this.#n.map(((t,s)=>t.toString(e,n+" ".repeat(0===s?0:ce.indentation.length-2),i,s))).join("\n"+n+"| ")+"\n"+t+">";return r}}class me extends ce{#r;get parser(){return this.#r}#a;constructor(e,t){super(),this.#r=e,this.#a=t}parse(e,t,i,s){i=this.makePath(i,s);const n=this.#r.parse(e,t,i,0);if(!n.status)return n;const r=this.#a(n.value,e.input,n.position).getParser().parse(e,n.position,i,0);return n.bestPosition>r.bestPosition&&(r.bestParser=n.bestParser,r.bestPosition=n.bestPosition),r}doToString(e,t,i,s){return this.#r.toString(e,t,i,0)+" => chained"}}class ge extends ce{static instance=new ge;parse(e,t,i,s){return ue.makeFailure()}doToString(e,t,i,s){return""}}class be extends ce{#r;get parser(){return this.#r}#o="";constructor(e,t){super(),this.#r=e,this.#o=t}makePath(e,t){return e}parse(e,t,i,s){return this.parse=this.#r.parse.bind(this.#r),this.parse(e,t,i,s)}doToString(e,t,i,s){let n=this.#r.toString(e,"",i,s);return n=ce.frame(n,this.#o,t),n}}class ve extends ce{#r;#l;constructor(e){super(),this.#r=e}makePath(e,t){return e}isHighlighted(e,t){if(super.isHighlighted(e,t)){const i={parent:t,parser:this.#l,index:0};e.highlighted=e.highlighted instanceof ce?this.#l:i}return!1}resolve(){return this.#l||(this.#l=this.#r().getParser()),this.#l}parse(e,t,i,s){return this.resolve(),this.parse=this.#l.parse.bind(this.#l),this.parse(e,t,i,s)}doToString(e,t,i,s){return this.resolve(),this.doToString=this.#l.toString.bind(this.#l),this.doToString(e,t,i,s)}}class fe extends ce{#r;get parser(){return this.#r}#u;get type(){return this.#u}static Type={NEGATIVE_AHEAD:"?!",NEGATIVE_BEHIND:"?String.raw`[^${e}\\]*(?:\\.[^${e}\\]*)*`;static#m=/[-\+]?(?:\d*\.)?\d+/;static common={number:new RegExp(this.#m.source+String.raw`(?!\.)`),numberInteger:/[\-\+]?\d+(?!\.\d)/,numberNatural:/\d+/,numberExponential:new RegExp(this.#m.source+String.raw`(?:[eE][\+\-]?\d+)?(?!\.)`),numberUnit:/\+?(?:0(?:\.\d+)?|1(?:\.0+)?)(?![\.\d])/,numberByte:/0*(?:25[0-5]|2[0-4]\d|1?\d?\d)(?!\d|\.)/,whitespace:/\s+/,whitespaceOpt:/\s*/,whitespaceInline:/[^\S\n]+/,whitespaceInlineOpt:/[^\S\n]*/,whitespaceMultiline:/\s*?\n\s*/,doubleQuotedString:new RegExp(`"(${this.#d('"')})"`),singleQuotedString:new RegExp(`'(${this.#d("'")})'`),backtickQuotedString:new RegExp("`("+this.#d("`")+")`")};constructor(e,t){super(),this.#c=e,this.#h=new RegExp(`^(?:${e.source})`,e.flags),this.#p=t}parse(e,t,i,s){i=this.makePath(i,s);const n=this.#h.exec(e.input.substring(t));n&&(t+=n[0].length);return n?ue.makeSuccess(t,this.#p(n),i,t):ue.makeFailure()}doToString(e,t,i,s){let n="/"+this.#c.source+"/";const r=Object.entries(ye.common).find((([e,t])=>t.source===this.#c.source))?.[0];return r&&(n="P."+r),n}}class we extends ce{#r;get parser(){return this.#r}#g;get mapper(){return this.#g}constructor(e,t){super(),this.#r=e,this.#g=t}isHighlighted(e,t){if(super.isHighlighted(e,t)){const i={parent:t,parser:this.#r,index:0};e.highlighted=e.highlighted instanceof ce?this.#r:i}return!1}parse(e,t,i,s){i=this.makePath(i,s);const n=this.#r.parse(e,t,i,0);return n.status&&(n.value=this.#g(n.value)),n}doToString(e,t,i,s){let n=this.#r.toString(e,t,i,0);if(this.#r instanceof ye&&Object.values(ye.common).includes(this.#r.regexp))return this.#r.regexp===ye.common.numberInteger&&this.#g===BigInt?"P.numberBigInteger":n;let r=this.#g.toString();return(r.length>60||r.includes("\n"))&&(r="(...) => { ... }"),n+=` -> map<${r}>`,n}}class Se extends ye{static#g=e=>e;constructor(e){super(e,Se.#g)}}class Ee extends ye{constructor(e,t=0){super(e,(e=>e[t]))}}class Ce extends ce{#n;get parsers(){return this.#n}constructor(...e){super(),this.#n=e}parse(e,t,i,s){i=this.makePath(i,s);const n=new Array(this.#n.length),r=ue.makeSuccess(t,n);for(let t=0;tr.bestPosition&&(r.bestParser=s.bestParser,r.bestPosition=s.bestPosition),!s.status){r.status=!1,r.value=null;break}r.value[t]=s.value,r.position=s.position}return r}doToString(e,t,i,s){const n=t+ce.indentation,r="SEQ<\n"+n+this.#n.map(((t,s)=>t.toString(e,n,i,s))).join("\n"+n)+"\n"+t+">";return r}}class Ne extends ce{#r;get parser(){return this.#r}#b;get min(){return this.#b}#v;get max(){return this.#v}constructor(e,t=0,i=Number.POSITIVE_INFINITY){if(super(),t>i)throw new Error("Min is greater than max");this.#r=e,this.#b=t,this.#v=i}parse(e,t,i,s){i=this.makePath(i,s);const n=ue.makeSuccess(t,[],i);for(let t=0;tn.bestPosition&&(n.bestParser=s.bestParser,n.bestPosition=s.bestPosition),!s.status){te;static#y=([e,t])=>t;static#w=([e,t])=>[e,...t];static#S=e=>e instanceof Array?e.join(""):e;static number=this.reg(ye.common.number).map(Number);static numberInteger=this.reg(ye.common.numberInteger).map(Number);static numberBigInteger=this.reg(this.numberInteger.getParser().parser.regexp).map(BigInt);static numberNatural=this.reg(ye.common.numberNatural).map(Number);static numberExponential=this.reg(ye.common.numberExponential).map(Number);static numberUnit=this.reg(ye.common.numberUnit).map(Number);static numberByte=this.reg(ye.common.numberByte).map(Number);static whitespace=this.reg(ye.common.whitespace);static whitespaceOpt=this.reg(ye.common.whitespaceOpt);static whitespaceInline=this.reg(ye.common.whitespaceInline);static whitespaceInlineOpt=this.reg(ye.common.whitespaceInlineOpt);static whitespaceMultiline=this.reg(ye.common.whitespaceMultiline);static doubleQuotedString=this.reg(ye.common.doubleQuotedString,1);static singleQuotedString=this.reg(ye.common.singleQuotedString,1);static backtickQuotedString=this.reg(ye.common.backtickQuotedString,1);constructor(e,t=!1){this.#r=e}static#E(e){const t=[];for(;e;)t.push(e),e=e.parent;t.reverse();let i=new Map;for(let e=1;ei<=s||i>e))),i.set(t[e].current,s),t.splice(s+1,e-s),e=s):i.set(t[e].current,e)}return t[t.length-1]}getParser(){return this.#r}run(e){const t=this.#r.parse(ue.makeContext(this,e),0,ue.makePathNode(),0);return t.position!==e.length&&(t.status=!1),t}parse(e,t=!0){const i=this.run(e);if(i.status)return i.value;const s=[Math.ceil(30),Math.floor(30)],n=xe.lineColumnFromOffset(e,i.bestPosition);let r=i.bestPosition;const a=e.replaceAll(/^(\s)+|\s{6,}|\s*?\n\s*/g,((e,t,s)=>{let n=t?"...":" ... ";return s<=i.bestPosition&&(i.bestPosition0&&(c="..."+c,u+=3),s[1]e.getParser()))))}static alt(...e){return new this(new de(...e.map((e=>e.getParser()))))}static lookahead(e){return new this(new fe(e.getParser(),fe.Type.POSITIVE_AHEAD))}static lazy(e){return new this(new ve(e))}times(e,t=e){return new xe(new Ne(this.#r,e,t))}many(){return this.times(0,Number.POSITIVE_INFINITY)}atLeast(e){return this.times(e,Number.POSITIVE_INFINITY)}atMost(e){return this.times(0,e)}opt(e=""){let t=xe.success();return""!==e&&(t=t.map((()=>e))),xe.alt(this,t)}sepBy(e,t=1,i=!1){let s=xe.seq(this,xe.seq(e,this).map(xe.#y).atLeast(t-1),...i?[e.opt([])]:[]).map(xe.#w);return 0===t&&(s=s.opt([])),s}skipSpace(){return xe.seq(this,xe.whitespaceOpt).map(xe.#f)}map(e){return new xe(new we(this.#r,e))}chain(e){return new xe(new me(this.#r,e))}assert(e){return this.chain(((t,i,s)=>e(t,i,s)?xe.success().map((()=>t)):xe.failure()))}join(e=""){return this.map(xe.#S)}label(e=""){return new xe(new be(this.#r,e))}toString(e="",t=!1,i=null){i instanceof xe&&(i=i.getParser());const s=ue.makeContext(this,"");s.highlighted=i;const n=ue.makePathNode();return(t?"\n"+e:"")+this.#r.toString(s,e,n)}}class Pe{static same=e=>e;static notWrapped=(e,t)=>t;static defaultWrapped=(e,t)=>`${e.#C}(${t})`;static wrap=this.defaultWrapped;static attributeSeparator=",";static keySeparator="=";static printKey=e=>e;static grammar=xe.lazy((()=>this.createGrammar()));static unknownEntityGrammar;static unknownEntity;static attributes={};static lookbehind="";static default;static nullable=!1;static ignored=!1;static serialized=!1;static expected=!1;static inlined=!1;static quoted;static silent=!1;static trailing=!1;#N;get keys(){return this.#N??Object.keys(this)}set keys(e){this.#N=[...new Set(e)]}#C=this.constructor.lookbehind;get lookbehind(){return this.#C.trim()}set lookbehind(e){this.#C=e}#x=this.constructor.ignored;get ignored(){return this.#x}set ignored(e){this.#x=e}#P=this.constructor.inlined;get inlined(){return this.#P}set inlined(e){this.#P=e}#k;get quoted(){return this.#k??this.constructor.quoted??!1}set quoted(e){this.#k=e}#A;get trailing(){return this.#A??this.constructor.trailing??!1}set trailing(e){this.#A=e}constructor(e={}){const t=this.constructor.attributes,i=ae.mergeArrays(Object.keys(e),Object.entries(t).filter((([e,t])=>void 0!==t.default)).map((([e,t])=>e)));for(const s of i){if(void 0!==e[s]){e[s].constructor===Object&&(e[s]=new(void 0!==t[s]?t[s]:Pe.unknownEntity)(e[s]));const i=t[s];if(this[s]=e[s],i?.compute){const t=i.compute(this).grammar.run(e[s].toString());t.status&&(this[s]=t.value)}continue}const i=t[s];void 0===i.default||(this[s]=i.default(i))}}static createGrammar(){return this.unknownEntityGrammar}static actualClass(){let e=this;for(;!e.name;)e=Object.getPrototypeOf(e);return e}static className(){return this.actualClass().name}static asUniqueClass(){let e=this;return this.name.length&&(e=class extends(this){},e.grammar=e.createGrammar()),e}static withLookbehind(e){const t=this.asUniqueClass();return t.lookbehind=e,t}static withDefault(e=e=>new e){const t=this.asUniqueClass();return t.default=e,t}static flagNullable(e=!0){const t=this.asUniqueClass();return t.nullable=e,t}static flagIgnored(e=!0){const t=this.asUniqueClass();return t.ignored=e,t}static flagSerialized(e=!0){const t=this.asUniqueClass();return t.serialized=e,t}static flagInlined(e=!0){const t=this.asUniqueClass();return t.inlined=e,t}static flagQuoted(e=!0){const t=this.asUniqueClass();return t.quoted=e,t}static flagSilent(e=!0){const t=this.asUniqueClass();return t.silent=e,t}static flagTrailing(e=!0){const t=this.asUniqueClass();return t.trailing=e,t}static asSerializedString(e){return`"${e.replaceAll(/(?<=(?:[^\\]|^)(?:\\\\)*?)"/g,'\\"')}"`}showProperty(e){let t=this[e];const i=t.constructor;if(i.silent&&void 0!==i.default){void 0===i["#default"]&&(i["#default"]=i.default(i));const e=i["#default"];return!t.equals(e)}return!0}listenAttribute(e,t){const i=Object.getOwnPropertyDescriptor(this,e),s=i.set;s?(i.set=e=>{s(e),t(e)},Object.defineProperties(this,{[e]:i})):i.value&&Object.defineProperties(this,{["#"+e]:{value:i.value,writable:!0,enumerable:!1},[e]:{enumerable:!0,get(){return this["#"+e]},set(i){t(i),this["#"+e]=i}}})}doSerialize(e=!1,t="",i=this.constructor,s=i.printKey,n=i.keySeparator,r=i.attributeSeparator,a=i.wrap){const o=i!==this.constructor;let l="",u=!0;const c=this instanceof Pe?this.keys:Object.keys(this);for(const a of c){const o=this[a],c=o?.constructor;if(void 0===o||this instanceof Pe&&!this.showProperty(a))continue;u?u=!1:l+=r;let h=this instanceof Array?`(${a})`:a;if(h.length&&(i.attributes[a]?.quoted||o.quoted)&&(h=`"${h}"`),o.inlined){const a="ArrayEntity"===c.className()?e=>s(`${h}${e}`):e=>s(`${h}.${e}`);l+=o.serialize(e,t,void 0,a,n,r,i.notWrapped);continue}h=s(h),h.length&&(l+=(r.includes("\n")?t:"")+h+n);let p=o?.serialize(e,t);l+=p}return this instanceof Pe&&(o&&i.trailing||this.trailing)&&l.length&&(l+=r),a(this,l)}serialize(e=!1,t="",i=this.constructor,s=i.printKey,n=i.keySeparator,r=i.attributeSeparator,a=i.wrap){this.constructor;let o=this instanceof Array?Pe.prototype.doSerialize.bind(this)(e,t,i,s,n,r,a):this.doSerialize(e,t,i,s,n,r,a);return i.serialized&&(o=Pe.asSerializedString(o)),o}equals(e){if(!(e instanceof Pe))return!1;const t=Object.keys(this),i=Object.keys(e),s=this.constructor.actualClass(),n=e.constructor.actualClass();if(!(t.length===i.length&&this.lookbehind==e.lookbehind&&(e instanceof s||this instanceof n)))return!1;for(let s=0;s{},toAttribute:(e,t)=>!0===e?"true":!1===e?"false":""};#L=!0;get uppercase(){return this.#L}set uppercase(e){this.#L=e}static createGrammar(){return xe.regArray(/(true)|(True)|(false)|(False)/).map((e=>{const t=e[1]??e[2]?new this(!0):new this(!1);return t.uppercase=void 0!==(e[2]??e[4]),t})).label("BooleanEntity")}constructor(e=!1){super(),this.value=e}serialize(e=!1,t="",i=this.constructor){let s=this.value?this.#L?"True":"true":this.#L?"False":"false";return i.serialized&&(s=`"${s}"`),s}valueOf(){return this.value}}class Ae{static#M=new Map;static registerElement(e,t){Ae.#M.set(e,t)}static getConstructor(e){return Ae.#M.get(e)}}class Le extends Pe{static alternatives=[];static className(){let e=super.className();return this.alternatives.length&&(e+=".accepting("+this.alternatives.map((e=>e.className())).join(", ")+")"),e}static createGrammar(){const e=this.alternatives.map((e=>e.grammar));return 0==this.alternatives.length||e.includes(this.unknownEntityGrammar)?this.unknownEntityGrammar:xe.alt(...e)}static accepting(...e){const t=this.asUniqueClass();return t.alternatives=e,t.grammar=t.createGrammar(),t}}class Me{static numberRegexSource=xe.number.getParser().parser.regexp.source;static separatedBy=(e,t,i=1)=>new RegExp(e+"(?:"+t+e+")"+(1===i?"*":2===i?"+":`{${i},}`));static Regex=class{static HexDigit=/[0-9a-fA-F]/;static InsideString=/(?:[^"\\]|\\.)*/;static InsideSingleQuotedString=/(?:[^'\\]|\\.)*/;static Integer=/[\-\+]?\d+(?!\d|\.)/;static Number=/[-\+]?(?:\d*\.)?\d+(?!\d|\.)/;static RealUnit=/\+?(?:0(?:\.\d+)?|1(?:\.0+)?)(?![\.\d])/;static Word=Me.separatedBy("[a-zA-Z]","_");static Symbol=/[a-zA-Z_]\w*/;static DotSeparatedSymbols=Me.separatedBy(this.Symbol.source,"\\.");static MultipleWordsSymbols=Me.separatedBy(this.Symbol.source,"(?:\\.|\\ +)");static PathFragment=Me.separatedBy(this.Symbol.source,"[\\.:]");static PathSpaceFragment=Me.separatedBy(this.Symbol.source,"[\\.:\\ ]");static Path=new RegExp(`(?:\\/${this.PathFragment.source}){2,}`)};static null=xe.reg(/\(\s*\)/).map((()=>null));static true=xe.reg(/true/i).map((()=>!0));static false=xe.reg(/false/i).map((()=>!1));static number=xe.regArray(new RegExp(`(${xe.number.getParser().parser.regexp.source})|(\\+?inf)|(-inf)`)).map((([e,t,i,s])=>t?Number(t):i?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY));static bigInt=xe.reg(new RegExp(xe.number.getParser().parser.regexp.source)).map(BigInt).map((e=>void 0!==e[2]?Number.POSITIVE_INFINITY:void 0!==e[3]?Number.NEGATIVE_INFINITY:Number(e[1])));static naturalNumber=xe.lazy((()=>xe.reg(/\d+/).map(Number)));static string=xe.doubleQuotedString.map((e=>ae.unescapeString(e)));static colorValue=xe.numberByte;static word=xe.reg(Me.Regex.Word);static symbol=xe.reg(Me.Regex.Symbol);static symbolQuoted=xe.reg(new RegExp('"('+Me.Regex.Symbol.source+')"'),1);static attributeName=xe.reg(Me.Regex.DotSeparatedSymbols);static attributeNameQuoted=xe.reg(new RegExp('"('+Me.Regex.InsideString.source+')"'),1);static guid=xe.reg(new RegExp(`${Me.Regex.HexDigit.source}{32}`));static commaSeparation=xe.reg(/\s*,\s*(?!\))/);static commaOrSpaceSeparation=xe.reg(/\s*,\s*(?!\))|\s+/);static equalSeparation=xe.reg(/\s*=\s*/);static hexColorChannel=xe.reg(new RegExp(Me.Regex.HexDigit.source+"{2}"));static getAttribute(e,[t,...i]){const s=e?.attributes?.[t];if(s){if(s.prototype instanceof Le)for(const e of s.alternatives){const t=this.getAttribute(e,i);if(t)return t}return i.length>0?this.getAttribute(s,i):s}}static createAttributeGrammar(e,t=this.attributeName,i=this.equalSeparation,s=(e,t,i)=>{}){return xe.seq(t,i).chain((([t,i])=>{const n=t.split(re.keysSeparator),r=this.getAttribute(e,n),a=r?r.grammar:Pe.unknownEntityGrammar,o=n.length>1;return a.map((e=>t=>{ae.objectSet(t,n,e),n.reduce(((e,t,i)=>(e[t].inlined=o&&i{let s={};return e.length&&(s.lookbehind=e),t.forEach((e=>e(s))),s.trailing=void 0!==i,s})).chain((t=>{(e.lookbehind instanceof Array||e.lookbehind!==n)&&(e=e.withLookbehind(n));const s=Object.keys(t),r=Object.keys(e.attributes);return null!=i?xe.success().assert((e=>s.filter((e=>r.includes(e))).length/r.length>=i)).map((()=>new e(t))):xe.success().map((()=>new e(t)))}))}}class Ie extends Pe{static grammar=this.createGrammar();constructor(e=0){super(),this.value=e}static createGrammar(){return xe.number.map((e=>new this(e)))}serialize(e=!1,t="",i=this.constructor){let s=this.value.toFixed(6);return i.serialized&&(s=`"${s}"`),s}valueOf(){return this.value}}class Te extends Pe{static attributes={...super.attributes,R:Ie.withDefault(),G:Ie.withDefault(),B:Ie.withDefault(),A:Ie.withDefault((e=>new e(1)))};static grammar=this.createGrammar();#I=new Ie;get H(){return this.#I}set H(e){this.#I=e}#T=new Ie;get S(){return this.#T}set S(e){this.#T=e}#O=new Ie;get V(){return this.#O}set V(e){this.#O=e}constructor(e){super(e),e instanceof Array&&(e={R:e[0]??0,G:e[1]??0,B:e[2]??0,A:e[3]??1}),this.R,this.G,this.B,this.A,this.#$()}static createGrammar(){return Me.createEntityGrammar(this,Me.commaSeparation,.5).label("LinearColorEntity")}static printLinearColor(e){return`${Math.round(255*e.R.valueOf())}, ${Math.round(255*e.G.valueOf())}, ${Math.round(255*e.B.valueOf())}`}static linearToSRGB(e){return e<=0?0:e>=1?1:e<.0031308?12.92*e:1.055*Math.pow(e,1/2.4)-.055}static sRGBtoLinear(e){return e<=0?0:e>=1?1:e<.04045?e/12.92:Math.pow((e+.055)/1.055,2.4)}static getWhite(){return new Te({R:new Ie(1),G:new Ie(1),B:new Ie(1)})}static getLinearColorFromHexGrammar(){const e=/[0-9a-fA-F]/;return xe.regArray(new RegExp("#("+e.source+"{2})("+e.source+"{2})("+e.source+"{2})("+e.source+"{2})?")).map((([e,t,i,s,n])=>new this({R:parseInt(t,16)/255,G:parseInt(i,16)/255,B:parseInt(s,16)/255,A:parseInt(n??"FF",16)/255})))}static getLinearColorRGBListGrammar(){return xe.seq(xe.numberByte,Me.commaSeparation,xe.numberByte,Me.commaSeparation,xe.numberByte).map((([e,t,i,s,n])=>new this({R:e/255,G:i/255,B:n/255,A:1})))}static getLinearColorRGBGrammar(){return xe.seq(xe.reg(/rgb\s*\(\s*/),this.getLinearColorRGBListGrammar(),xe.reg(/\s*\)/)).map((([e,t,i])=>t))}static getLinearColorRGBAGrammar(){return xe.seq(xe.reg(/rgba\s*\(\s*/),this.getLinearColorRGBListGrammar(),xe.reg(/\s*\)/)).map((([e,t,i])=>t))}static getLinearColorFromAnyFormat(){return xe.alt(this.getLinearColorFromHexGrammar(),this.getLinearColorRGBAGrammar(),this.getLinearColorRGBGrammar(),this.getLinearColorRGBListGrammar())}#$(){const e=this.R.value,t=this.G.value,i=this.B.value;if(ae.approximatelyEqual(e,t)&&ae.approximatelyEqual(e,i)&&ae.approximatelyEqual(t,i))return this.S.value=0,void(this.V.value=e);const s=Math.max(e,t,i),n=Math.min(e,t,i),r=s-n;let a;switch(s){case n:a=0;break;case e:a=(t-i)/r+(te.toString(16).toUpperCase().padStart(2,"0"))).join("")}toSRGBAString(){return this.toSRGBA().map((e=>e.toString(16).toUpperCase().padStart(2,"0"))).join("")}toHSVA(){return[this.H.value,this.S.value,this.V.value,this.A.value]}toNumber(){return(Math.round(255*this.R.value)<<24)+(Math.round(255*this.G.value)<<16)+(Math.round(255*this.B.value)<<8)+Math.round(255*this.A.value)}toArray(){return[this.R.value,this.G.value,this.B.value,this.A.value]}setFromRGBANumber(e){this.A.value=(255&e)/255,this.B.value=(e>>8&255)/255,this.G.value=(e>>16&255)/255,this.R.value=(e>>24&255)/255,this.#$()}setFromSRGBANumber(e){this.A.value=(255&e)/255,this.B.value=Te.sRGBtoLinear((e>>8&255)/255),this.G.value=Te.sRGBtoLinear((e>>16&255)/255),this.R.value=Te.sRGBtoLinear((e>>24&255)/255),this.#$()}toString(){return Te.printLinearColor(this)}}class Oe extends Pe{static type;constructor(e=null){super();const t=this.constructor;e??=void 0!==t.default?t.default(t).getter:e,this.getter=e}static createGrammar(e=this.type?.grammar??xe.lazy((()=>this.unknownEntityGrammar))){return this.type?.grammar.map((e=>new this((()=>e))))}static withDefault(e=e=>new e((()=>new e.type))){return super.withDefault(e)}static of(e){const t=this.asUniqueClass();return t.type=e,t.grammar=t.createGrammar(),t}doSerialize(e=!1,t="",i=this.constructor,s=i.printKey,n=i.keySeparator,r=i.attributeSeparator,a=i.wrap){return this.getter().serialize(e,t,i.type,s,n,r,a)}equals(e){return e instanceof Oe&&(e=e.getter?.()),this.getter?.().equals(e)}valueOf(){return this.getter().valueOf()}toString(){return this.getter().toString()}}class $e extends Pe{static numberRegexSource=String.raw`${Me.numberRegexSource}(?<=(?:\.(\d*0+))?)`;static grammar=this.createGrammar();static precision;#D;get precision(){return this.constructor.precision??this.#D}set precision(e){this.#D=e}_value;get value(){return this._value}set value(e){-0===e&&(e=0),this._value=e}constructor(e=0,t=null){super(),this.value=Number(e),null!==t&&(this.#D=Number(t))}static createGrammar(){return xe.regArray(new RegExp(`(?${this.numberRegexSource})|(?\\+?inf)|(?-inf)`)).map((({2:e,groups:{n:t,posInf:i,negInf:s}})=>new this(t?Number(t):i?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY,e?.length))).label("NumberEntity")}static withPrecision(e=0){const t=this.asUniqueClass();return t.precision=e,t}static printNumber(e){return e==Number.POSITIVE_INFINITY?"inf":e==Number.NEGATIVE_INFINITY?"-inf":ae.minDecimals(e)}serialize(e=!1,t="",i=this.constructor){if(this.value===Number.POSITIVE_INFINITY)return"+inf";if(this.value===Number.NEGATIVE_INFINITY)return"-inf";const s=i.precision??this.precision;let n=void 0!==s?this.value.toFixed(s):this.value.toString();return i.serialized&&(n=`"${n}"`),n}valueOf(){return this.value}toString(){return this.value.toString()}}class De extends Pe{static attributes={...super.attributes,X:$e.withDefault(),Y:$e.withDefault(),Z:$e.withDefault()};static grammar=this.createGrammar();constructor(e){super(e),this.X,this.Y,this.Z}static createGrammar(){return Me.createEntityGrammar(this,Me.commaSeparation,1).label("VectorEntity")}toArray(){return[this.X.valueOf(),this.Y.valueOf(),this.Z.valueOf()]}}const Be=/\/Script\/SequencerScripting\.MovieSceneScripting(.+)Channel/,Ge={A_AccentGrave:"à",Add:"Num +",C_Cedille:"ç",Decimal:"Num .",Divide:"Num /",E_AccentAigu:"é",E_AccentGrave:"è",F1:"F1",F10:"F10",F11:"F11",F12:"F12",F2:"F2",F3:"F3",F4:"F4",F5:"F5",F6:"F6",F7:"F7",F8:"F8",F9:"F9",Gamepad_Special_Left_X:"Touchpad Button X Axis",Gamepad_Special_Left_Y:"Touchpad Button Y Axis",Mouse2D:"Mouse XY 2D-Axis",Multiply:"Num *",Section:"§",Subtract:"Num -",Tilde:"`"};function He(e=""){switch(e=e.toLowerCase()){case"zero":return 0;case"one":return 1;case"two":return 2;case"three":return 3;case"four":return 4;case"five":return 5;case"six":return 6;case"seven":return 7;case"eight":return 8;case"nine":return 9}}function Ve(e){let t;switch(e.getType()){case re.paths.addDelegate:t??="Bind Event to ";case re.paths.clearDelegate:t??="Unbind all Events from ";case re.paths.removeDelegate:return t??="Unbind Event from ",t+ae.formatStringName(e.DelegateReference?.MemberName?.toString().replace(/Delegate$/,"")??"None");case re.paths.asyncAction:if(e.ProxyFactoryFunctionName)return ae.formatStringName(e.ProxyFactoryFunctionName?.toString());case re.paths.actorBoundEvent:case re.paths.componentBoundEvent:return`${ae.formatStringName(e.DelegatePropertyName?.toString())} (${e.ComponentPropertyName?.toString()??"Unknown"})`;case re.paths.callDelegate:return`Call ${e.DelegateReference?.MemberName?.toString()??"None"}`;case re.paths.createDelegate:return"Create Event";case re.paths.customEvent:if(e.CustomFunctionName)return e.CustomFunctionName?.toString();case re.paths.dynamicCast:return e.TargetType?`Cast To ${e.TargetType?.getName()}`:"Bad cast node";case re.paths.enumLiteral:return`Literal enum ${e.Enum?.getName()}`;case re.paths.event:return`Event ${(e.EventReference?.MemberName?.toString()??"").replace(/^Receive/,"")}`;case re.paths.executionSequence:return"Sequence";case re.paths.forEachElementInEnum:return`For Each ${e.Enum?.getName()}`;case re.paths.forEachLoopWithBreak:return"For Each Loop with Break";case re.paths.functionEntry:return"UserConstructionScript"===e.FunctionReference?.MemberName?.toString()?"Construction Script":e.FunctionReference?.MemberName?.toString();case re.paths.functionResult:return"Return Node";case re.paths.ifThenElse:return"Branch";case re.paths.makeStruct:if(e.StructType)return`Make ${e.StructType.getName()}`;case re.paths.materialExpressionComponentMask:{const t=e.getMaterialSubobject();if(t)return`Mask ( ${re.rgba.filter((e=>!0===t[e].getter().value)).map((e=>e+" ")).join("")})`}case re.paths.materialExpressionConstant:t??=[e.getCustomproperties().find((e=>"Value"==e.PinName.toString()))?.DefaultValue];case re.paths.materialExpressionConstant2Vector:t??=[e.getCustomproperties().find((e=>"X"==e.PinName?.toString()))?.DefaultValue,e.getCustomproperties().find((e=>"Y"==e.PinName?.toString()))?.DefaultValue];case re.paths.materialExpressionConstant3Vector:case re.paths.materialExpressionConstant4Vector:if(!t){const i=e.getCustomproperties().find((e=>"Constant"==e.PinName?.toString()))?.DefaultValue;t=i instanceof De?[i.X,i.Y,i.Z].map((e=>e.valueOf())):i instanceof Te?[i.R,i.G,i.B,i.A].map((e=>e.valueOf())):[]}if(t?.length>0)return t.map((e=>ae.printExponential(e))).join(",");t=void 0;break;case re.paths.materialExpressionFunctionInput:{const t=e.getMaterialSubobject();return`Input ${t?.InputName??"In"} (${t?.InputType?.value.match(/^.+?_(\w+)$/)?.[1]??"Vector3"})`}case re.paths.materialExpressionLogarithm:return"Ln";case re.paths.materialExpressionLogarithm10:return"Log10";case re.paths.materialExpressionLogarithm2:return"Log2";case re.paths.materialExpressionMaterialFunctionCall:const i=e.getMaterialSubobject()?.MaterialFunction;if(i)return i.getName();break;case re.paths.materialExpressionSquareRoot:return"Sqrt";case re.paths.materialExpressionSubtract:const s=e.getMaterialSubobject();if(s)return`Subtract(${s.ConstA??"1"},${s.ConstB??"1"})`;case re.paths.metasoundEditorGraphExternalNode:{const t=e.ClassName?.Name;if(t)return"Add"===t?"+":t}case re.paths.niagaraNodeConvert:return`Make ${(e.AutowireMakeType?.ClassStructOrEnum??"").toString().match(/(?:Niagara)?(\w+)['"]*$/)?.[1]??""}`;case re.paths.pcgEditorGraphNodeInput:return"Input";case re.paths.pcgEditorGraphNodeOutput:return"Output";case re.paths.spawnActorFromClass:let n=e.getCustomproperties().find((e=>"ReturnValue"==e.PinName.toString()))?.PinType?.PinSubCategoryObject?.getName();return"Actor"===n&&(n=null),`SpawnActor ${ae.formatStringName(n??"NONE")}`;case re.paths.switchEnum:return`Switch on ${e.Enum?.getName()??"Enum"}`;case re.paths.switchInteger:return"Switch on Int";case re.paths.variableGet:return"";case re.paths.variableSet:return"SET"}const i=e.getClass();let s=e.switchTarget();if(s)return"E"!==s[0]&&(s=ae.formatStringName(s)),`Switch on ${s}`;if(e.isComment())return e.NodeComment.toString();const n=e.getHIDAttribute();if(n){const e=n.toString();let t=function(e){let t=Ge[e];if(t)return t;if(t=He(e)?.toString(),t)return t;const i=e.match(/NumPad([a-zA-Z]+)/);return i&&(t=He(i[1]).toString(),t)?"Num "+t:void 0}(e)??ae.formatStringName(e);return i===re.paths.inputDebugKey?t="Debug Key "+t:i===re.paths.getInputAxisKeyValue&&(t="Get "+t),t}if(i===re.paths.macro)return ae.formatStringName(e.MacroGraphReference?.getMacroName());if(e.isMaterial()&&e.getMaterialSubobject()){let t=Ve(e.getMaterialSubobject());return t=t.match(/Material Expression (.+)/)?.[1]??t,t}if(e.isPcg()&&e.getPcgSubobject()){let t=e.getPcgSubobject();return t.NodeTitle?t.NodeTitle.toString():Ve(t)}const r=e.getSubgraphObject();if(r)return r.Graph.getName();const a=e.getSettingsObject();if(a){if(a.ExportPath?.valueOf()?.type===re.paths.pcgHiGenGridSizeSettings)return`Grid Size: ${a.HiGenGridSize?.toString().match(/\d+/)?.[0]?.concat("00")??a.HiGenGridSize?.toString().match(/^\w+$/)?.[0]??"256"}`;if(a.BlueprintElementInstance)return ae.formatStringName(a.BlueprintElementType.getName());if(a.Operation){const e=a.Name?.toString().match(/PCGMetadata(\w+)Settings_\d+/);if(e)return ae.formatStringName(e[1]+": "+a.Operation)}const e=a.getSubgraphObject();if(e&&e.Graph)return e.Graph.getName()}let o,l=e.FunctionReference?.MemberName?.toString();if(l){const t=e.FunctionReference.MemberParent?.path??"";switch(l){case"AddKey":let e=t.match(Be);if(e)return`Add Key (${ae.formatStringName(e[1])})`;case"Concat_StrStr":return"Append"}const i=l.match(re.lineTracePattern);if(i)return"Line Trace"+("Multi"===i[1]?" Multi ":" ")+(""===i[2]?"By Channel":ae.formatStringName(i[2]));switch(t){case re.paths.blueprintGameplayTagLibrary:case re.paths.kismetMathLibrary:case re.paths.slateBlueprintLibrary:case re.paths.timeManagementBlueprintLibrary:const e=l.match(/[BF]([A-Z]\w+)/);switch(e&&(l=e[1]),l){case"Abs":return"ABS";case"BooleanAND":return"AND";case"BooleanNAND":return"NAND";case"BooleanOR":return"OR";case"Exp":return"e";case"LineTraceSingle":return"Line Trace By Channel";case"Max":case"MaxInt64":return"MAX";case"Min":case"MinInt64":return"MIN";case"Not_PreBool":return"NOT";case"Sin":return"SIN";case"Sqrt":return"SQRT";case"Square":return"^2";case"CrossProduct2D":return"cross";case"Vector4_CrossProduct3":return"cross3";case"DotProduct2D":case"Vector4_DotProduct":return"dot";case"Vector4_DotProduct3":return"dot3"}if(l.startsWith("Add_"))return"+";if(l.startsWith("And_"))return"&";if(l.startsWith("Conv_"))return"";if(l.startsWith("Cross_"))return"cross";if(l.startsWith("Divide_"))return String.fromCharCode(247);if(l.startsWith("Dot_"))return"dot";if(l.startsWith("EqualEqual_"))return"==";if(l.startsWith("Greater_"))return">";if(l.startsWith("GreaterEqual_"))return">=";if(l.startsWith("Less_"))return"<";if(l.startsWith("LessEqual_"))return"<=";if(l.startsWith("Multiply_"))return String.fromCharCode(10799);if(l.startsWith("Not_"))return"~";if(l.startsWith("NotEqual_"))return"!=";if(l.startsWith("Or_"))return"|";if(l.startsWith("Percent_"))return"%";if(l.startsWith("Subtract_"))return"-";if(l.startsWith("Xor_"))return"^";break;case re.paths.blueprintSetLibrary:{const e=l.match(/Set_(\w+)/);if(e)return ae.formatStringName(e[1]).toUpperCase()}break;case re.paths.blueprintMapLibrary:{const e=l.match(/Map_(\w+)/);if(e)return ae.formatStringName(e[1]).toUpperCase()}break;case re.paths.kismetArrayLibrary:{const e=l.match(/Array_(\w+)/);if(e)return e[1].toUpperCase()}}return ae.formatStringName(l)}if(e.OpName){switch(e.OpName.toString()){case"Boolean::LogicAnd":return"Logic AND";case"Boolean::LogicEq":return"==";case"Boolean::LogicNEq":return"!=";case"Boolean::LogicNot":return"Logic NOT";case"Boolean::LogicOr":return"Logic OR";case"Matrix::MatrixMultiply":return"Multiply (Matrix * Matrix)";case"Matrix::MatrixVectorMultiply":return"Multiply (Matrix * Vector4)";case"Numeric::Abs":return"Abs";case"Numeric::Add":return"+";case"Numeric::DistancePos":return"Distance";case"Numeric::Mul":return String.fromCharCode(10799);case"Integer::BitLShift":return"Bitwise Left Shift";case"Integer::BitAnd":return"Bitwise AND";case"Integer::BitNot":return"Bitwise NOT";case"Integer::BitOr":return"Bitwise OR";case"Integer::BitRShift":return"Bitwise Right Shift";case"Integer::BitXOr":return"Bitwise XOR"}return ae.formatStringName(e.OpName.toString()).replaceAll("::"," ")}return e.FunctionDisplayName?ae.formatStringName(e.FunctionDisplayName.toString()):e.ObjectRef?e.ObjectRef.getName():i.startsWith(o="/Script/NiagaraEditor.NiagaraNodeParameter")||i.startsWith(o="/Script/NiagaraEditor.NiagaraNode")?ae.formatStringName(i.substring(o.length)):ae.formatStringName(e.getNameAndCounter()[0])}class Re extends Pe{static type;static grammar=this.createGrammar();get length(){return this.values.length}constructor(e=[]){super(),this.values=e}static createGrammar(e=this.type?.grammar??xe.lazy((()=>this.unknownEntityGrammar))){return this.inlined?e:xe.seq(xe.reg(/\(\s*/),e.sepBy(Me.commaSeparation).opt(),xe.reg(/\s*(,\s*)?\)/,1)).map((([e,t,i])=>{t=t instanceof Array?t:[];let s=this;return void 0!==i!==s.trailing&&(s=s.flagTrailing(void 0!==i)),new s(t)})).label(`ArrayEntity of ${this.type?.className()??"unknown values"}`)}static flagInlined(e=!0){const t=this.asUniqueClass();return t.inlined=e,t.grammar=t.createGrammar(),t}static of(e){const t=this.asUniqueClass();return t.type=e,t.grammar=t.createGrammar(),t}doSerialize(e=!1,t="",i=this.constructor,s=i.printKey,n=i.keySeparator,r=i.attributeSeparator,a=i.wrap){if(i.inlined)return super.serialize.bind(this.values,e,t,i,s,n,r,a)();let o=this.values.map((t=>t?.serialize(e))).join(i.attributeSeparator);return this.trailing&&(o+=i.attributeSeparator),`(${o})`}valueOf(){return this.values}equals(e){if(!(e instanceof Re)||this.values.length!==e.values.length)return!1;for(let t=0;t_e=e.default)).catch():_e=window.crypto;class ze extends Pe{static grammar=this.createGrammar();static generateGuid(){let e=new Uint32Array(4);_e.getRandomValues(e);let t="";return e.forEach((e=>{t+=("0".repeat(8)+e.toString(16).toUpperCase()).slice(-8)})),t}constructor(e=ze.generateGuid()){super(),this.value=e}static createGrammar(){return xe.reg(/[0-9A-F]{32}/i).map((e=>new this(e))).label("GuidEntity")}serialize(e=!1,t="",i=this.constructor){let s=this.value;return i.serialized&&(s=`"${s}"`),s}toString(){return this.value}}class Fe extends $e{static grammar=this.createGrammar();get value(){return super.value}set value(e){(e=Math.trunc(e))>=1<<31&&e<-(1<<31)&&(e=Math.floor(e),super.value=e)}static createGrammar(){return xe.numberInteger.map((e=>new this(e)))}}class je extends Fe{static grammar=this.createGrammar();get value(){return super.value}set value(e){e=Math.round(ae.clamp(e,0)),super.value=e}static createGrammar(){return xe.numberNatural.map((e=>new this(e)))}}const Ue={Any:r``,"Any[]":r``,audio:r``,blue:r``,bool:r``,byte:r``,class:r``,default:r``,delegate:r``,enum:r``,exec:r``,float:r``,green:r``,int:r``,int32:r``,int64:r``,interface:r``,name:r``,object:r``,Param:r``,"Param[]":r``,Point:r``,"Point[]":r``,real:r``,red:r``,string:r``,struct:r``,Surface:r``,"Surface[]":r``,text:r``,time:r``,Volume:r``,"Volume[]":r``,wildcard:r``,[re.paths.niagaraBool]:r``,[re.paths.niagaraDataInterfaceVolumeTexture]:r``,[re.paths.niagaraFloat]:r``,[re.paths.NiagaraInt32]:r``,[re.paths.niagaraMatrix]:r``,[re.paths.niagaraNumeric]:r``,[re.paths.niagaraPosition]:r``,[re.paths.quat4f]:r``,[re.paths.rotator]:r``,[re.paths.transform]:r``,[re.paths.vector]:r``,[re.paths.vector3f]:r``,[re.paths.vector4f]:r``},Ye=r``;function Ke(e){let t,i=e.PinFriendlyName?e.PinFriendlyName.toString():ae.formatStringName(e.PinName?.toString()??"");return(t=e.PinToolTip?.toString().match(/\s*(.+?(?=\n)|.+\S)\s*/))&&t[1].toLowerCase()===i.toLowerCase()?t[1]:(i=i.replace(/^Module\./,""),i)}class Xe extends Fe{static grammar=this.createGrammar();get value(){return super.value}set value(e){(e=Math.trunc(e))>=0&&e<256&&(super.value=e)}createGrammar(){return xe.numberByte.map((e=>new this(e)))}}class qe extends Pe{static grammar=this.createGrammar();static escapedCharacters=/['"\\]/g;static unescapedBackslash=/(?<=(?:[^\\]|^)(?:\\\\)*)\\(?!\\)/;constructor(e=""){super(),this.value=e}static createGrammar(){return xe.doubleQuotedString.map((e=>new this(qe.unescape(e)))).label("StringEntity")}static escape(e,t=!0){let i=e.replaceAll(new RegExp(`(${qe.escapedCharacters.source})`,"g"),"\\$1");return t&&(i=i.replaceAll("\n","\\n").replaceAll("\t","\\t")),i}static unescape(e){return e.replaceAll(new RegExp(qe.unescapedBackslash.source+"t","g"),"\t").replaceAll(new RegExp(qe.unescapedBackslash.source+"n","g"),"\n").replaceAll(new RegExp(`\\\\(${qe.escapedCharacters.source})`,"g"),"$1")}doSerialize(e=!1){let t=`"${qe.escape(this.value)}"`;return e&&(t=qe.escape(t,!1)),t}valueOf(){return this.value}toString(){return this.value}}class Ze extends Pe{static grammar=this.createGrammar();static f;static createGrammar(){return qe.grammar}static from(e){const t=this.asUniqueClass();return t.f=e,t}static compute(e){return this.f(e)}}class We extends Pe{static attributeConverter={fromAttribute:(e,t)=>new this(e),toAttribute:(e,t)=>e.toString()};static grammar=this.createGrammar();static createGrammar(){return Me.symbol.map((e=>new this(e))).label("SymbolEntity")}constructor(e=""){super(),this.value=e}serialize(e=!1,t="",i=this.constructor){let s=this.value;return i.serialized&&(s=`"${s}"`),s}toString(){return this.value}}class Qe extends We{static grammar=this.createGrammar();static createGrammar(){return Me.symbol.map((e=>new this(e)))}}class Je extends Qe{static grammar=this.createGrammar();static createGrammar(){return xe.reg(Me.Regex.InsideString).map((e=>new this(e)))}}class et extends Pe{static lookbehind="INVTEXT";static grammar=this.createGrammar();constructor(e=""){super(),this.value=e}static createGrammar(){return xe.alt(xe.seq(xe.reg(new RegExp(`${this.lookbehind}\\s*\\(`)),xe.doubleQuotedString,xe.reg(/\s*\)/)).map((([e,t,i])=>t)),xe.reg(new RegExp(this.lookbehind)).map((()=>""))).map((e=>new this(e))).label("InvariantTextEntity")}doSerialize(){return this.lookbehind+'("'+this.value+'")'}valueOf(){return this.value}toString(){return this.value}}class tt extends Pe{static attributeSeparator=", ";static printKey=e=>"";static lookbehind="NSLOCTEXT";static attributes={...super.attributes,namespace:qe.withDefault(),key:qe.withDefault(),value:qe.withDefault()};static grammar=this.createGrammar();constructor(e={}){super(e),this.namespace,this.key,this.value}static createGrammar(){return xe.regArray(new RegExp(String.raw`${tt.lookbehind}\s*\(`+String.raw`\s*"(?${Me.Regex.InsideString.source})"\s*,`+String.raw`\s*"(?${Me.Regex.InsideString.source})"\s*,`+String.raw`\s*"(?${Me.Regex.InsideString.source})"\s*`+String.raw`(?,\s+)?`+String.raw`\)`,"m")).map((({groups:{namespace:e,key:t,value:i,trailing:s}})=>new this({namespace:new this.attributes.namespace(ae.unescapeString(e)),key:new this.attributes.namespace(ae.unescapeString(t)),value:new this.attributes.namespace(ae.unescapeString(i)),trailing:void 0!==s}))).label("LocalizedTextEntity")}toString(){return ae.capitalFirstLetter(this.value.valueOf())}}class it extends Pe{static attributeSeparator=", ";static lookbehind=["LOCGEN_FORMAT_NAMED","LOCGEN_FORMAT_ORDERED"];static grammar=this.createGrammar();constructor(e){super(),this.values=e}static createGrammar(){return xe.lazy((()=>xe.seq(xe.reg(new RegExp(String.raw`(${this.lookbehind.join("|")})\s*\(\s*`),1),xe.alt(...[qe,tt,et,it].map((e=>e.grammar))).sepBy(xe.reg(/\s*\,\s*/)),xe.reg(/\s*\)/)).map((([e,t])=>{const i=new this(t);return i.lookbehind=e,i})))).label("FormatTextEntity")}doSerialize(e=!1,t="",i=this.constructor,s=i.printKey,n=i.keySeparator,r=i.attributeSeparator,a=i.wrap){const o=i.attributeSeparator;return this.lookbehind+"("+this.values.map((t=>t.serialize(e))).join(o)+(i.trailing?o:"")+")"}toString(){const e=this.values?.[0]?.toString();if(!e)return"";const t=this.values.slice(1).map((e=>e?.valueOf()));return"LOCGEN_FORMAT_NAMED"==this.lookbehind?e.replaceAll(/\{([a-zA-Z]\w*)\}/g,((e,i)=>{const s=t.indexOf(i)+1;return s>0&&s{const s=Number(i);return s=-(1n<<63n)&&e<1n<<63n&&(this._value=e)}constructor(e=0n){super(),this.value=BigInt(e)}static createGrammar(){return xe.numberBigInteger.map((e=>new this(e)))}serialize(e=!1,t="",i=this.constructor){let s=this.value.toString();return i.serialized&&(s=`"${s}"`),s}valueOf(){return this.value}toString(){return this.value.toString()}}class nt extends Pe{static typeReference=xe.reg(new RegExp(Me.Regex.Path.source+"|"+Me.symbol.getParser().regexp.source));static fullReferenceGrammar=this.createFullReferenceGrammar();static grammar=this.createGrammar();#u;get type(){return this.#u}set type(e){this.#u=e}#B;get path(){return this.#B}set path(e){this.#B=e}#G;get full(){return this.#G}set full(e){this.#G=e}constructor(e="None",t="",i=(e.includes("/")||t?(e,t)=>`"${e+(t?`'${t}'`:"")}"`:(e,t)=>e)){super(),this.#u=e,this.#B=t,this.#G=i}static createGrammar(){return xe.alt(this.createFullReferenceSerializedGrammar(),this.createFullReferenceGrammar(),this.createTypeReferenceGrammar()).label("ObjectReferenceEntity")}static createFullReferenceGrammar(){return xe.regArray(new RegExp("("+this.typeReference.getParser().regexp.source+")(?:"+`'"(${Me.Regex.InsideString.source})"'|`+`'(${Me.Regex.InsideSingleQuotedString.source})')`)).map((([e,t,i,s])=>{let n=!!i,r=n?["'\"","\"'"]:["'","'"];return new this(t,n?i:s,((e,t)=>e+r[0]+t+r[1]))}))}static createFullReferenceSerializedGrammar(){return xe.regArray(new RegExp('"('+Me.Regex.InsideString.source+"?)(?:'("+Me.Regex.InsideSingleQuotedString.source+"?)')?\"")).map((([e,t,i])=>new this(t,i,((e,t)=>`"${e}${t?`'${t}'`:""}"`))))}static createTypeReferenceGrammar(){return this.typeReference.map((e=>new this(e,"",((e,t)=>e))))}static createNoneInstance(){return new this("None")}getName(e=!1){return ae.getNameFromPath(this.path.replace(/_C$/,""),e)}doSerialize(e=!1){let t=this.full(this.type,this.path);return e&&(t=ae.escapeString(t,!1)),t}equals(e){return e instanceof nt&&(this.type==e.type&&this.path==e.path)}toString(){return this.full(this.type,this.path)}}class rt extends Pe{static grammar=this.createGrammar();constructor(e=null,t=null){super(),this.objectName=e,this.pinGuid=t}static createGrammar(){return xe.seq(We.grammar,xe.whitespace,ze.grammar).map((([e,t,i])=>new this(e,i))).label("PinReferenceEntity")}doSerialize(){return this.objectName.serialize()+" "+this.pinGuid.serialize()}}class at extends Pe{static attributes={...super.attributes,MemberParent:nt,MemberName:qe,MemberGuid:ze};static grammar=this.createGrammar();constructor(e){super(e),this.MemberParent,this.MemberName,this.MemberGuid}static createGrammar(){return Me.createEntityGrammar(this,Me.commaSeparation,0,0)}}class ot extends Pe{static attributes={...super.attributes,PinCategory:qe.withDefault(),PinSubCategory:qe,PinSubCategoryObject:nt,PinSubCategoryMemberReference:at,ContainerType:We,bIsReference:ke,bIsConst:ke,bIsWeakPointer:ke,bIsUObjectWrapper:ke,bSerializeAsSinglePrecisionFloat:ke};static grammar=this.createGrammar();constructor(e={}){super(e),this.PinCategory,this.PinSubCategory,this.PinSubCategoryObject,this.PinSubCategoryMemberReference,this.ContainerType,this.bIsReference,this.bIsConst,this.bIsWeakPointer,this.bIsUObjectWrapper,this.bIsUObjectWrapper,this.bSerializeAsSinglePrecisionFloat}static createGrammar(){return Me.createEntityGrammar(this).label("PinTypeEntity")}copyTypeFrom(e){for(const t of this.keys)void 0!==e[t]&&(this[t]=e[t])}}class lt extends Pe{static attributes={...super.attributes,X:$e.withDefault(),Y:$e.withDefault()};static grammar=this.createGrammar();constructor(e){super(e),this.X,this.Y}static createGrammar(){return Me.createEntityGrammar(this,Me.commaSeparation,1).label("Vector2DEntity")}toArray(){return[this.X.valueOf(),this.Y.valueOf()]}}class ut extends lt{static grammar=this.createGrammar();static createGrammar(){return xe.alt(xe.regArray(new RegExp(/X\s*=\s*/.source+"(?"+Me.numberRegexSource+")\\s+"+/Y\s*=\s*/.source+"(?"+Me.numberRegexSource+")")).map((({groups:{x:e,y:t}})=>new this({X:new lt.attributes.X(e),Y:new lt.attributes.Y(t)}))),lt.grammar.map((e=>new this({X:e.X,Y:e.Y})))).label("RBSerializationVector2DEntity")}}class ct extends Pe{static attributes={...super.attributes,R:$e.withDefault(),P:$e.withDefault(),Y:$e.withDefault()};static grammar=this.createGrammar();constructor(e){super(e),this.R,this.P,this.Y}static createGrammar(){return Me.createEntityGrammar(this,Me.commaSeparation,1).label("RotatorEntity")}getRoll(){return this.R}getPitch(){return this.P}getYaw(){return this.Y}}class ht extends ct{static attributeSeparator=", ";static grammar=this.createGrammar();static createGrammar(){return xe.alt(xe.regArray(new RegExp(`(${$e.numberRegexSource})`+String.raw`\s*,\s*`+`(${$e.numberRegexSource})`+String.raw`\s*,\s*`+`(${$e.numberRegexSource})`)).map((([e,t,i,s,n,r,a])=>new this({R:new ct.attributes.R(r,a?.length),P:new ct.attributes.P(t,i?.length),Y:new ct.attributes.Y(s,n?.length)}))),ct.grammar.map((e=>new this({R:e.R,P:e.P,Y:e.Y})))).label("SimpleSerializationRotatorEntity")}doSerialize(){const e=this.constructor.attributeSeparator;return this.P.serialize()+e+this.Y.serialize()+e+this.R.serialize()+(this.trailing?e:"")}}class pt extends lt{static attributeSeparator=", ";static grammar=this.createGrammar();static createGrammar(){return xe.alt(xe.regArray(new RegExp(`(${$e.numberRegexSource})`+String.raw`\s*,\s*`+`(${$e.numberRegexSource})`)).map((([e,t,i,s,n])=>new this({X:new lt.attributes.X(t,i?.length),Y:new lt.attributes.Y(s,n?.length)}))),lt.grammar.map((e=>new this({X:e.X,Y:e.Y})))).label("SimpleSerializationVector2DEntity")}doSerialize(){const e=this.constructor.attributeSeparator;return this.X.serialize()+e+this.Y.serialize()+(this.trailing?e:"")}}class dt extends Pe{static attributes={...super.attributes,X:$e.withDefault(),Y:$e.withDefault(),Z:$e.withDefault(),W:$e.withDefault()};static grammar=this.createGrammar();constructor(e){super(e),this.X,this.Y,this.Z,this.W}static createGrammar(){return Me.createEntityGrammar(this,Me.commaSeparation,1).label("Vector4DEntity")}toArray(){return[this.X.valueOf(),this.Y.valueOf(),this.Z.valueOf(),this.W.valueOf()]}}class mt extends dt{static grammar=this.createGrammar();static createGrammar(){return xe.alt(xe.regArray(new RegExp(`(${Me.numberRegexSource})`+String.raw`\s*,\s*`+`(${Me.numberRegexSource})`+String.raw`\s*,\s*`+`(${Me.numberRegexSource})`+String.raw`\s*,\s*`+`(${Me.numberRegexSource})`)).map((([e,t,i,s,n])=>new this({X:new dt.attributes.X(t),Y:new dt.attributes.Y(i),Z:new dt.attributes.Z(s),W:new dt.attributes.W(n)}))),dt.grammar)}}class gt extends De{static allowShortSerialization=!1;static attributeSeparator=", ";static grammar=this.createGrammar();static createGrammar(){return xe.alt(xe.regArray(new RegExp(`(${$e.numberRegexSource})`+(this.allowShortSerialization?"(?:":"")+String.raw`\s*,\s*`+`(${$e.numberRegexSource})`+String.raw`\s*,\s*`+`(${$e.numberRegexSource})`+(this.allowShortSerialization?")?":""))).map((([e,t,i,s,n,r,a])=>new this({X:new De.attributes.X(t,i?.length),Y:new De.attributes.Y(s,n?.length),Z:new De.attributes.Z(r,a?.length)}))),De.grammar.map((e=>new this({X:e.X,Y:e.Y,Z:e.Z}))))}static flagAllowShortSerialization(e=!0){const t=this.asUniqueClass();return e!==t.allowShortSerialization&&(t.allowShortSerialization=e,t.grammar=t.createGrammar()),t}doSerialize(){const e=this.constructor.attributeSeparator;return this.X.serialize()+e+this.Y.serialize()+e+this.Z.serialize()+(this.trailing?e:"")}}class bt extends Pe{static lookbehind="Pin";static#H={bool:ke,byte:Xe,enum:Qe,exec:qe,int:Fe,int64:st,name:qe,real:$e,string:qe,[re.paths.linearColor]:Te,[re.paths.niagaraBool]:ke,[re.paths.niagaraPosition]:De,[re.paths.rotator]:ct,[re.paths.vector]:De,[re.paths.vector2D]:lt,[re.paths.vector4f]:dt};static#V={enum:Je,rg:ut,[re.paths.niagaraPosition]:gt.flagAllowShortSerialization(),[re.paths.rotator]:ht,[re.paths.vector]:gt,[re.paths.vector2D]:pt,[re.paths.vector3f]:gt,[re.paths.vector4f]:mt};static attributes={PinId:ze.withDefault(),PinName:qe.withDefault(),PinFriendlyName:Le.accepting(tt,it,et,qe),PinToolTip:qe,Direction:qe,PinType:ot.withDefault().flagInlined(),LinkedTo:Re.of(rt).withDefault().flagSilent(),SubPins:Re.of(rt),ParentPin:rt,DefaultValue:Ze.from((e=>e.getEntityType(!0)?.flagSerialized()??qe)),AutogeneratedDefaultValue:qe,DefaultObject:nt,PersistentGuid:ze,bHidden:ke,bNotConnectable:ke,bDefaultValueIsReadOnly:ke,bDefaultValueIsIgnored:ke,bAdvancedView:ke,bOrphanedPin:ke};static grammar=this.createGrammar();#R=!1;set recomputesNodeTitleOnChange(e){this.#R=e}get recomputesNodeTitleOnChange(){return this.#R}#_=null;get objectEntity(){try{return this.#_}catch(e){return null}}set objectEntity(e){this.#_=e}#z;get pinIndex(){return this.#z}set pinIndex(e){this.#z=e}constructor(e={}){super(e),this.PinId,this.PinName,this.PinFriendlyName,this.PinToolTip,this.Direction,this.PinType,this.LinkedTo,this.DefaultValue,this.AutogeneratedDefaultValue,this.DefaultObject,this.PersistentGuid,this.bHidden,this.bNotConnectable,this.bDefaultValueIsReadOnly,this.bDefaultValueIsIgnored,this.bAdvancedView,this.bOrphanedPin,this.objectEntity}static createGrammar(){return Me.createEntityGrammar(this)}static fromLegacyObject(e){return new bt(e)}getType(){const e=this.PinType.PinCategory?.toString().toLocaleLowerCase();if("struct"===e||"class"===e||"object"===e||"type"===e)return this.PinType.PinSubCategoryObject?.path;if(this.isEnum())return"enum";if(this.objectEntity?.isPcg()){const e=this.objectEntity.getPcgSubobject(),t=this.isInput()?e.InputPins?.valueOf()[this.pinIndex]:e.OutputPins?.valueOf()[this.pinIndex];if(t){const i=e[re.subObjectAttributeNameFromReference(t,!0)];let s=i.Properties?.AllowedTypes?.toString()??"";if(""==s&&(s=this.PinType.PinCategory??"",""==s&&(s="Any")),s)return!1!==i.Properties.bAllowMultipleData?.valueOf()&&!1!==i.Properties.bAllowMultipleConnections?.valueOf()&&(s+="[]"),s}}if("optional"===e){const e=this.PinType.PinSubCategory?.toString();switch(e){case"red":return"real";case"rg":return"rg";case"rgb":return re.paths.vector;case"rgba":return re.paths.linearColor;default:return e}}return e}getEntityType(e=!1){const t=this.getType(),i=bt.#H[t],s=bt.#V[t];return e&&void 0!==s?s:i}pinTitle(){return Ke(this)}copyTypeFrom(e){this.PinType=e.PinType}getDefaultValue(e=!1){return void 0===this.DefaultValue&&e&&(this.DefaultValue=new(this.getEntityType(!0))),this.DefaultValue}isEnum(){const e=this.PinType.PinSubCategoryObject?.type;return e===re.paths.enum||e===re.paths.userDefinedEnum||"enum"===e?.toLowerCase()}isExecution(){return"exec"===this.PinType.PinCategory.toString()}isHidden(){return this.bHidden?.valueOf()}isInput(){return!this.isHidden()&&"EGPD_Output"!=this.Direction?.toString()}isOutput(){return!this.isHidden()&&"EGPD_Output"==this.Direction?.toString()}isLinked(){return this.LinkedTo?.length>0??!1}linkTo(e,t){const i=this.LinkedTo.values?.some((i=>i.objectName.toString()==e&&i.pinGuid.toString()==t.PinId.toString()));return!i&&(this.LinkedTo.values.push(new rt(new We(e),t.PinId)),!0)}unlinkFrom(e,t){const i=this.LinkedTo.values?.findIndex((i=>i.objectName.toString()==e&&i.pinGuid.toString()==t.PinId.toString()));return i>=0&&(this.LinkedTo.values.splice(i,1),0===this.LinkedTo.length&&void 0===bt.attributes.LinkedTo.default&&(this.LinkedTo.values=[]),!0)}getSubCategory(){return this.PinType.PinSubCategoryObject?.path}pinColor(){return function(e){if("mask"===e.PinType.PinCategory?.toString()){const t=Ue[e.PinType.PinSubCategory?.toString()];if(t)return t}else if("optional"===e.PinType.PinCategory?.toString())return Ye;return Ue[e.getType()]??Ue[e.PinType.PinCategory?.toString().toLowerCase()]??Ue.default}(this)}}const vt=e=>e.PinName?.toString().match(/^\s*([A-Z])\s*$/)?.[1]?.charCodeAt(0)-"A".charCodeAt(0);class ft extends Pe{static attributes={...super.attributes,MacroGraph:nt,GraphBlueprint:nt,GraphGuid:ze};static grammar=this.createGrammar();constructor(e){super(e),this.MacroGraph,this.GraphBlueprint,this.GraphGuid}static createGrammar(){return Me.createEntityGrammar(this)}getMacroName(){const e=this.MacroGraph.path.search(":");return this.MacroGraph.path.substring(e+1)}}class yt extends Pe{static grammar=this.createGrammar();static createGrammar(){return xe.reg(new RegExp(String.raw`\(${xe.whitespaceInlineOpt.getParser().regexp.source}\)`)).map((e=>new this)).label("NullEntity")}serialize(e=!1,t="",i=this.constructor){let s="()";return i.serialized&&(s=`"${s}"`),s}}class wt extends Pe{static attributes={...super.attributes,ScriptVariable:nt,OriginalChangeId:ze};static grammar=this.createGrammar();constructor(e={}){super(e),this.ScriptVariable,this.OriginalChangeId}static createGrammar(){return Me.createEntityGrammar(this).label("ScriptVariableEntity")}}class St extends bt{static attributes={...super.attributes,PinId:ze};static grammar=this.createGrammar();static createGrammar(){return xe.seq(xe.reg(new RegExp(`(${Me.Regex.Symbol.source}\\s*)\\(\\s*`),1),Me.createAttributeGrammar(this).sepBy(Me.commaSeparation),xe.reg(/\s*(?:,\s*)?\)/)).map((([e,t,i])=>{e??="";let s={};return e.length&&(s.lookbehind=e),t.forEach((e=>e(s))),new this(s)})).label("UnknownPinEntity")}}class Et extends Pe{static attributes={...super.attributes,MemberScope:qe,MemberName:qe.withDefault(),MemberGuid:ze,bSelfContext:ke};static grammar=this.createGrammar();constructor(e){super(e),this.MemberScope,this.MemberName,this.MemberGuid,this.bSelfContext}static createGrammar(){return Me.createEntityGrammar(this).label("VariableReferenceEntity")}}class Ct extends Pe{#F=!1;get exported(){return this.#F}set exported(e){this.#F=e}static#j=/^(\w+?)(?:_(\d+))?$/;static printKey=e=>e.startsWith(re.subObjectAttributeNamePrefix)?"":e;static attributeSeparator="\n";static wrap=this.notWrapped;static trailing=!0;static attributes={...super.attributes,Class:nt,Name:qe,Archetype:nt,ExportPath:Oe.of(nt),ObjectRef:nt,BlueprintElementType:nt,BlueprintElementInstance:nt,ConstA:Oe.of($e),ConstB:Oe.of($e),PinTags:Re.of(yt).flagInlined(),PinNames:Re.of(qe).flagInlined(),AxisKey:We,InputAxisKey:We,InputName:qe,InputType:We,NumAdditionalInputs:je,bIsPureFunc:ke,bIsConstFunc:ke,bIsCaseSensitive:ke,VariableReference:Et,SelfContextInfo:We,DelegatePropertyName:qe,DelegateOwnerClass:nt,ComponentPropertyName:qe,EventReference:at,FunctionReference:at,FunctionScript:nt,CustomFunctionName:qe,TargetType:nt,MacroGraphReference:ft,Enum:nt,EnumEntries:Re.of(qe).flagInlined(),InputKey:We,OpName:qe,CachedChangeId:ze,FunctionDisplayName:qe,AddedPins:Re.of(St).withDefault().flagInlined().flagSilent(),ChangeId:ze,MaterialFunction:nt,bOverrideFunction:ke,bInternalEvent:ke,bConsumeInput:ke,bExecuteWhenPaused:ke,bOverrideParentBinding:ke,bControl:ke,bAlt:ke,bShift:ke,bCommand:ke,CommentColor:Te,bCommentBubbleVisible_InDetailsPanel:ke,bColorCommentBubble:ke,ProxyFactoryFunctionName:qe,ProxyFactoryClass:nt,ProxyClass:nt,StructType:nt,MaterialExpression:nt,MaterialExpressionComment:nt,MoveMode:We,TimelineName:qe,TimelineGuid:ze,SizeX:Oe.of(Fe),SizeY:Oe.of(Fe),Text:Oe.of(qe),MaterialExpressionEditorX:Oe.of(Fe),MaterialExpressionEditorY:Oe.of(Fe),NodeTitle:qe,NodeTitleColor:Te,PositionX:Oe.of(Fe),PositionY:Oe.of(Fe),SettingsInterface:nt,PCGNode:nt,HiGenGridSize:We,Operation:We,NodePosX:Fe,NodePosY:Fe,NodeHeight:Fe,NodeWidth:Fe,Graph:nt,SubgraphInstance:qe,InputPins:Re.of(nt).flagInlined(),OutputPins:Re.of(nt).flagInlined(),bExposeToLibrary:ke,bCanRenameNode:ke,bCommentBubblePinned:ke,bCommentBubbleVisible:ke,NodeComment:qe,AdvancedPinDisplay:We,DelegateReference:Et,EnabledState:We,NodeGuid:ze,ErrorType:Fe,ErrorMsg:qe,ScriptVariables:Re.flagInlined().of(wt),Node:Oe.of(nt),ExportedNodes:qe,CustomProperties:Re.of(Le.accepting(bt,St)).withDefault().flagSilent()};static customPropertyGrammar=xe.seq(xe.reg(/CustomProperties\s+/),this.attributes.CustomProperties.type.grammar).map((([e,t])=>e=>{(e.CustomProperties??=new this.attributes.CustomProperties).values.push(t)}));static inlinedArrayEntryGrammar=xe.seq(xe.alt(Me.symbolQuoted.map((e=>[e,!0])),Me.symbol.map((e=>[e,!1]))),xe.reg(new RegExp(String.raw`\s*\(\s*(\d+)\s*\)\s*\=\s*`),1).map(Number)).chain((([[e,t],i])=>(this.attributes[e]?.grammar??Pe.unknownEntityGrammar).map((s=>n=>{if(void 0===n[e]){let i=Re;t!=i.quoted&&(i=i.flagQuoted(t)),i.inlined||(i=i.flagInlined()),n[e]=new i}n[e].values[i]=s}))));static grammar=this.createGrammar();static grammarMultipleObjects=xe.seq(xe.whitespaceOpt,this.grammar,xe.seq(xe.whitespace,this.grammar).map((([e,t])=>t)).many(),xe.whitespaceOpt).map((([e,t,i,s])=>[t,...i]));constructor(e={}){if("NodePosX"in e!="NodePosY"in e){const t=Object.entries(e),[i,s]="NodePosX"in e?["NodePosY",Object.keys(e).indexOf("NodePosX")+1]:["NodePosX",Object.keys(e).indexOf("NodePosY")];t.splice(s,0,[i,new Fe(0)]),e=Object.fromEntries(t)}super(e),this.AddedPins,this.AdvancedPinDisplay,this.Archetype,this.AxisKey,this.bIsPureFunc,this.BlueprintElementInstance,this.ConstA,this.ConstB,this.BlueprintElementType,this.Class,this.CommentColor,this.ComponentPropertyName,this.CustomFunctionName,this.CustomProperties,this.DelegatePropertyName,this.DelegateReference,this.EnabledState,this.Enum,this.EnumEntries,this.EventReference,this.ExportedNodes,this.ExportPath,this.FunctionDisplayName,this.FunctionReference,this.FunctionScript,this.Graph,this.HiGenGridSize,this.InputAxisKey,this.InputKey,this.InputName,this.InputPins,this.InputType,this.MacroGraphReference,this.MaterialExpression,this.MaterialExpressionComment,this.MaterialExpressionEditorX,this.MaterialExpressionEditorY,this.MaterialFunction,this.Name,this.Node,this.NodeComment,this.NodeHeight,this.NodePosX,this.NodePosY,this.NodeTitle,this.NodeTitleColor,this.NodeWidth,this.NumAdditionalInputs,this.ObjectRef,this.Operation,this.OpName,this.OutputPins,this.PCGNode,this.PinTags,this.PinNames,this.PositionX,this.PositionY,this.ProxyFactoryFunctionName,this.ScriptVariables,this.SettingsInterface,this.SizeX,this.SizeY,this.StructType,this.SubgraphInstance,this.TargetType,this.Text,this.Text,this.VariableReference,this.Pins instanceof Re&&this.Pins.valueOf().forEach((e=>{const t=this[re.subObjectAttributeNameFromReference(e,!0)];if(t){const e=bt.fromLegacyObject(t);e.LinkedTo=new bt.attributes.LinkedTo,this.getCustomproperties(!0).push(e),this.CustomProperties.ignored=!0}}));const t=this.getMaterialSubobject();if(t){const e=t;if(void 0!==e.SizeX&&(e.SizeX.getter=()=>this.NodeWidth),e.SizeY&&(e.SizeY.getter=()=>this.NodeHeight),e.Text&&(e.Text.getter=()=>this.NodeComment),e.MaterialExpressionEditorX&&(e.MaterialExpressionEditorX.getter=()=>this.NodePosX),e.MaterialExpressionEditorY&&(e.MaterialExpressionEditorY.getter=()=>this.NodePosY),this.getType()===re.paths.materialExpressionComponentMask){const t=re.rgba.map((e=>{const t=this.getPinEntities().find((t=>t.PinName.toString()===e));return t.recomputesNodeTitleOnChange=!0,t}));e.keys=[...re.rgba,...e.keys];const i=Oe.of(ke).withDefault().flagSilent();e.R=new i((()=>t[0].DefaultValue)),e.G=new i((()=>t[1].DefaultValue)),e.B=new i((()=>t[2].DefaultValue)),e.A=new i((()=>t[3].DefaultValue))}else if(this.getType()===re.paths.materialExpressionSubtract){const t=Oe.of($e.withPrecision(6)).withDefault((()=>new Oe((()=>new $e(1))))).flagSilent(),i=this.getCustomproperties().find((e=>"A"===e.PinName?.toString())),s=this.getCustomproperties().find((e=>"B"===e.PinName?.toString()));(i||s)&&(e.keys=["ConstA","ConstB",...e.keys],i&&(i.recomputesNodeTitleOnChange=!0,e.ConstA=new t((()=>i.DefaultValue))),s&&(s.recomputesNodeTitleOnChange=!0,e.ConstB=new t((()=>s.DefaultValue))))}}const i=this.getPcgSubobject();i&&(i.PositionX&&(i.PositionX.getter=()=>this.NodePosX),i.PositionY&&(i.PositionY.getter=()=>this.NodePosY),i.getSubobjects().forEach((e=>{if(void 0!==e.Node){const t=e.Node.getter();t.type===this.PCGNode.type&&t.path===`${this.Name}.${this.PCGNode.path}`&&(e.Node.getter=()=>new nt(this.PCGNode.type,`${this.Name}.${this.PCGNode.path}`,t.full))}})));let s=0,n=0;this.getCustomproperties().forEach(((e,t)=>{e.objectEntity=this,e.pinIndex=e.isInput()?s++:e.isOutput()?n++:t}));const r=this.ExportPath?.valueOf();if(r?.path.endsWith(this.Name?.valueOf())){const e=this.constructor.attributes.ExportPath,t=e.type,i=this.Name.valueOf().length;this.ExportPath=new e((()=>new t(r.type,r.path.substring(0,r.path.length-i)+this.Name,r.full)))}}static createGrammar(){return xe.seq(xe.reg(/Begin +Object/),xe.seq(xe.whitespace,xe.alt(this.createSubObjectGrammar(),this.customPropertyGrammar,Me.createAttributeGrammar(this,xe.reg(Me.Regex.MultipleWordsSymbols)),Me.createAttributeGrammar(this,Me.attributeNameQuoted,void 0,((e,t,i)=>{ae.objectSet(e,[...t,"quoted"],!0)})),this.inlinedArrayEntryGrammar)).map((([e,t])=>t)).many(),xe.reg(/\s+End +Object/)).map((([e,t,i])=>{const s={};return t.forEach((e=>e(s))),new this(s)})).label("ObjectEntity")}static createSubObjectGrammar(){return xe.lazy((()=>this.grammar)).map((e=>t=>{e.trailing=!1,t[re.subObjectAttributeNameFromEntity(e)]=e}))}#U;getClass(){if(!this.#U&&(this.#U=(this.Class?.path?this.Class.path:this.Class?.type)??this.ExportPath?.valueOf()?.type??"",this.#U&&!this.#U.startsWith("/"))){let e=Object.values(re.paths).find((e=>e.endsWith("."+this.#U)));e&&(this.#U=e)}return this.#U}getType(){let e=this.getClass();return this.MacroGraphReference?.MacroGraph?.path?this.MacroGraphReference.MacroGraph.path:this.MaterialExpression?this.MaterialExpression.type:e}getObjectName(e=!1){return e?this.getNameAndCounter()[0]:this.Name.toString()}getNameAndCounter(){const e=this.getObjectName().match(Ct.#j);return e?[e[1]??"",parseInt(e[2]??"0")]:["",0]}getCounter(){return this.getNameAndCounter()[1]}getNodeWidth(){return this.NodeWidth??this.isComment()?re.defaultCommentWidth:void 0}setNodeWidth(e){this.NodeWidth||(this.NodeWidth=new Fe),this.NodeWidth.value=e}getNodeHeight(){return this.NodeHeight??this.isComment()?re.defaultCommentHeight:void 0}setNodeHeight(e){this.NodeHeight||(this.NodeHeight=new Fe),this.NodeHeight.value=e}getNodePosX(){return this.NodePosX?.value??0}setNodePosX(e){this.NodePosX||(this.NodePosX=new Fe),this.NodePosX.value=Math.round(e)}getNodePosY(){return this.NodePosY?.value??0}setNodePosY(e){this.NodePosY||(this.NodePosY=new Fe),this.NodePosY.value=Math.round(e)}getCustomproperties(e=!1){return this.CustomProperties.values}getPinEntities(){return this.getCustomproperties().filter((e=>e.constructor===bt))}getSubobjects(){return Object.keys(this).filter((e=>e.startsWith(re.subObjectAttributeNamePrefix))).flatMap((e=>[this[e],...this[e].getSubobjects()]))}switchTarget(){const e=this.getClass().match(re.switchTargetPattern);if(e)return e[1]}isEvent(){switch(this.getClass()){case re.paths.actorBoundEvent:case re.paths.componentBoundEvent:case re.paths.customEvent:case re.paths.event:case re.paths.inputAxisKeyEvent:case re.paths.inputVectorAxisEvent:return!0}return!1}isComment(){switch(this.getClass()){case re.paths.comment:case re.paths.materialGraphNodeComment:return!0}return!1}isMaterial(){return this.getClass()===re.paths.materialGraphNode}getMaterialSubobject(){const e=this.MaterialExpression??this.MaterialExpressionComment;return e?this[re.subObjectAttributeNameFromReference(e,!0)]:null}isPcg(){return this.getClass()===re.paths.pcgEditorGraphNode||null!=this.getPcgSubobject()}isNiagara(){return this.Class&&(this.Class.type?this.Class.type:this.Class.path)?.startsWith("/Script/NiagaraEditor.")}getPcgSubobject(){const e=this.PCGNode;return e?this[re.subObjectAttributeNameFromReference(e,!0)]:null}getSettingsObject(){const e=this.SettingsInterface;return e?this[re.subObjectAttributeNameFromReference(e,!0)]:null}getSubgraphObject(){const e=this.SubgraphInstance;return e?this[re.subObjectAttributeNameFromName(e)]:null}isDevelopmentOnly(){const e=this.getClass();return"DevelopmentOnly"===this.EnabledState?.toString()||e.includes("Debug",Math.max(0,e.lastIndexOf(".")))}getHIDAttribute(){return this.InputKey??this.AxisKey??this.InputAxisKey}getDelegatePin(){return this.getCustomproperties().find((e=>"delegate"===e.PinType.PinCategory.toString()))}nodeColor(){return function(e){switch(e.getType()){case re.paths.materialExpressionConstant2Vector:case re.paths.materialExpressionConstant3Vector:case re.paths.materialExpressionConstant4Vector:return re.nodeColors.yellow;case re.paths.materialExpressionFunctionInput:case re.paths.materialExpressionTextureCoordinate:case re.paths.materialExpressionWorldPosition:case re.paths.pcgEditorGraphNodeInput:case re.paths.pcgEditorGraphNodeOutput:return re.nodeColors.red;case re.paths.makeStruct:return re.nodeColors.darkBlue;case re.paths.materialExpressionMaterialFunctionCall:return re.nodeColors.blue;case re.paths.materialExpressionTextureSample:return re.nodeColors.darkTurquoise}switch(e.getClass()){case re.paths.callFunction:return e.bIsPureFunc?.valueOf()?re.nodeColors.green:re.nodeColors.blue;case re.paths.niagaraNodeFunctionCall:return re.nodeColors.darkerBlue;case re.paths.dynamicCast:return re.nodeColors.turquoise;case re.paths.inputDebugKey:case re.paths.inputKey:return re.nodeColors.red;case re.paths.createDelegate:case re.paths.enumLiteral:case re.paths.makeArray:case re.paths.makeMap:case re.paths.materialGraphNode:case re.paths.select:return re.nodeColors.green;case re.paths.executionSequence:case re.paths.ifThenElse:case re.paths.macro:case re.paths.multiGate:return re.nodeColors.gray;case re.paths.functionEntry:case re.paths.functionResult:return re.nodeColors.violet;case re.paths.timeline:return re.nodeColors.yellow}if(e.switchTarget())return re.nodeColors.lime;if(e.isEvent())return re.nodeColors.red;if(e.isComment())return(e.CommentColor?e.CommentColor:Te.getWhite()).toDimmedColor().toCSSRGBValues();const t=e.getPcgSubobject();if(t){if(t.NodeTitleColor)return t.NodeTitleColor.toDimmedColor(.1).toCSSRGBValues();switch(e.PCGNode?.getName(!0)){case"Branch":case"Select":return re.nodeColors.intenseGreen}}return e.bIsPureFunc?.valueOf()?re.nodeColors.green:re.nodeColors.blue}(this)}nodeIcon(){return function(e){if(e.isMaterial()||e.isPcg()||e.isNiagara())return null;switch(e.getType()){case re.paths.addDelegate:case re.paths.asyncAction:case re.paths.callDelegate:case re.paths.clearDelegate:case re.paths.createDelegate:case re.paths.functionEntry:case re.paths.functionResult:case re.paths.removeDelegate:return le.node;case re.paths.customEvent:return le.event;case re.paths.doN:return le.doN;case re.paths.doOnce:return le.doOnce;case re.paths.dynamicCast:return le.cast;case re.paths.enumLiteral:return le.enum;case re.paths.event:return le.event;case re.paths.executionSequence:case re.paths.multiGate:return le.sequence;case re.paths.flipflop:return le.flipflop;case re.paths.forEachElementInEnum:case re.paths.forLoop:case re.paths.forLoopWithBreak:case re.paths.whileLoop:return le.loop;case re.paths.forEachLoop:case re.paths.forEachLoopWithBreak:return le.forEachLoop;case re.paths.ifThenElse:return le.branchNode;case re.paths.isValid:return le.questionMark;case re.paths.makeArray:return le.makeArray;case re.paths.makeMap:return le.makeMap;case re.paths.makeSet:return le.makeSet;case re.paths.makeStruct:return le.makeStruct;case re.paths.metasoundEditorGraphExternalNode:return le.metasoundFunction;case re.paths.select:return le.select;case re.paths.spawnActorFromClass:return le.spawnActor;case re.paths.timeline:return le.timer}if(e.switchTarget())return le.switch;if(Ve(e).startsWith("Break"))return le.breakStruct;if(e.getClass()===re.paths.macro)return le.macro;const t=e.getHIDAttribute()?.toString();return t?t.includes("Mouse")?le.mouse:t.includes("Gamepad_Special")?le.keyboard:t.includes("Gamepad")||t.includes("Steam")?le.gamepad:t.includes("Touch")?le.touchpad:le.keyboard:e.getDelegatePin()?le.event:e.ObjectRef?.type===re.paths.ambientSound?le.sound:le.functionSymbol}(this)}additionalPinInserter(){return function(e){let t,i,s,n,r;switch(e.getType()){case re.paths.commutativeAssociativeBinaryOperator:case re.paths.promotableOperator:switch(r=e.FunctionReference?.MemberName?.toString(),r){default:if(!(r?.startsWith("Add_")||r?.startsWith("Subtract_")||r?.startsWith("Multiply_")||r?.startsWith("Divide_")))break;case"And_Int64Int64":case"And_IntInt":case"BMax":case"BMin":case"BooleanAND":case"BooleanNAND":case"BooleanOR":case"Concat_StrStr":case"FMax":case"FMin":case"Max":case"MaxInt64":case"Min":case"MinInt64":case"Or_Int64Int64":case"Or_IntInt":t??=()=>e.getPinEntities().filter((e=>e.isInput())),i??=vt,s??=(i,s=-1,n=-1)=>{const r=String.fromCharCode(i>=0?i:n+"A".charCodeAt(0)+1);return e.NumAdditionalInputs=new je(t().length-1),r}}break;case re.paths.executionSequence:n??="Then";case re.paths.multiGate:n??="Out",t??=()=>e.getPinEntities().filter((e=>e.isOutput())),i??=e=>Number(e.PinName?.toString().match(new RegExp(String.raw`^\s*${n}[_\s]+(\d+)\s*$`,"i"))?.[1]),s??=(e,t=-1,i=-1,s)=>`${n} ${e>=0?e:t>0?`${n} 0`:i+1}`;break;case re.paths.switchInteger:t??=()=>e.getPinEntities().filter((e=>e.isOutput())),i??=e=>Number(e.PinName?.toString().match(/^\s*(\d+)\s*$/)?.[1]),s??=(e,t=-1,i=-1,s)=>(e<0?i+1:e).toString();break;case re.paths.switchGameplayTag:s??=(t,i=-1,s=-1,n)=>{const r=`Case_${t>=0?t:i>0?"0":s+1}`;return e.PinNames??=new Re,e.PinNames.valueOf().push(new qe(r)),delete e.PinTags.valueOf()[e.PinTags.length-1],e.PinTags.valueOf()[e.PinTags.length]=null,r};case re.paths.switchName:case re.paths.switchString:t??=()=>e.getPinEntities().filter((e=>e.isOutput())),i??=e=>Number(e.PinName.toString().match(/^\s*Case[_\s]+(\d+)\s*$/i)?.[1]),s??=(t,i=-1,s=-1,n)=>{const r=`Case_${t>=0?t:i>0?"0":s+1}`;return e.PinNames??=new Re,e.PinNames.valueOf().push(new qe(r)),r}}if(t)return()=>{let n=Number.MAX_SAFE_INTEGER,r=Number.MIN_SAFE_INTEGER,a=[];const o=t().reduce(((e,t)=>{const s=i(t);if(isNaN(s)){if(void 0===e)return t}else if(a.push(s),n=Math.min(s,n),s>r)return r=s,t;return e}),void 0);if(n!==Number.MAX_SAFE_INTEGER&&r!==Number.MIN_SAFE_INTEGER||(n=void 0,r=void 0),!o)return null;a.sort(((e,t)=>e{const t=e-l>1;return l=e,t}));const c=new bt(o);return c.PinId=new ze,c.PinName=new qe(s(u,n,r,c)),c.PinToolTip=void 0,c.DefaultValue&&(c.DefaultValue=new c.DefaultValue.constructor),e.getCustomproperties(!0).push(c),c}}(this)}showProperty(e){switch(e){case"Class":case"Name":case"Archetype":case"ExportPath":case"CustomProperties":return!1}return super.showProperty(e)}doSerialize(e=!1,t="",i=this.constructor,s=i.printKey,n=i.keySeparator,r=i.attributeSeparator,a=i.wrap){const o=t+re.indentation,l=this.trailing;this.trailing=!1;const u=super.doSerialize(e,o,i,s,n,r,a);return this.trailing=l,t+"Begin Object"+(this.Class?.type||this.Class?.path?` Class${n}${this.Class.serialize(e)}`:"")+(this.Name?` Name${n}${this.Name.serialize(e)}`:"")+(this.Archetype?` Archetype${n}${this.Archetype.serialize(e)}`:"")+(this.ExportPath?.valueOf()?.type||this.ExportPath?.valueOf()?.path?` ExportPath${n}${this.ExportPath.serialize(e)}`:"")+(u?r+u:"")+(!0!==i.attributes.CustomProperties.ignored&&!0!==this.CustomProperties.ignored?this.getCustomproperties().map((t=>r+o+s("CustomProperties ")+t.serialize(e))).join(""):"")+r+t+"End Object"+(this.trailing?r:"")}}class Nt extends Ct{constructor(e={},t=void 0){e.Class=new nt(re.paths.knot),e.Name=new Ct.attributes.Name("K2Node_Knot");const i=new bt({PinName:new bt.attributes.PinName("InputPin")}),s=new bt({PinName:new bt.attributes.PinName("OutputPin"),Direction:new bt.attributes.Direction("EGPD_Output")});t&&(i.copyTypeFrom(t),s.copyTypeFrom(t)),e.CustomProperties=new Ct.attributes.CustomProperties([i,s]),super(e)}}class xt{#Y;get target(){return this.#Y}#e;get blueprint(){return this.#e}consumeEvent;options;listenHandler=()=>this.listenEvents();unlistenHandler=()=>this.unlistenEvents();constructor(e,t,i={}){i.consumeEvent??=!1,i.listenOnFocus??=!1,i.unlistenOnTextEdit??=!1,this.#Y=e,this.#e=t,this.consumeEvent=i.consumeEvent,this.options=i}setup(){this.options.listenOnFocus&&(this.blueprint.addEventListener(re.focusEventName.begin,this.listenHandler),this.blueprint.addEventListener(re.focusEventName.end,this.unlistenHandler)),this.options.unlistenOnTextEdit&&(this.blueprint.addEventListener(re.editTextEventName.begin,this.unlistenHandler),this.blueprint.addEventListener(re.editTextEventName.end,this.listenHandler)),this.blueprint.focused&&this.listenEvents()}cleanup(){this.unlistenEvents(),this.blueprint.removeEventListener(re.focusEventName.begin,this.listenHandler),this.blueprint.removeEventListener(re.focusEventName.end,this.unlistenHandler),this.blueprint.removeEventListener(re.editTextEventName.begin,this.unlistenHandler),this.blueprint.removeEventListener(re.editTextEventName.end,this.listenHandler)}listenEvents(){}unlistenEvents(){}}class Pt extends Pe{static attributes={...super.attributes,ActionName:qe,bShift:ke,bCtrl:ke,bAlt:ke,bCmd:ke,Key:We};static grammar=this.createGrammar();constructor(e){super(e),this.ActionName,this.bShift,this.bCtrl,this.bAlt,this.bCmd,this.Key}static createGrammar(){return xe.alt(We.grammar.map((e=>new this({Key:e}))),Me.createEntityGrammar(this))}}class kt extends xt{static#K=e=>{};#X;pressedKey="";constructor(e,t,i={},s=kt.#K,n=kt.#K){i.activationKeys??=[],i.consumeEvent??=!0,i.listenOnFocus??=!0,i.unlistenOnTextEdit??=!0,i.activationKeys instanceof Array||(i.activationKeys=[i.activationKeys]),i.activationKeys=i.activationKeys.map((e=>{if(e instanceof Pt)return e;if(e.constructor===String){const t=Pt.grammar.run(e);if(t.status)return t.value}throw new Error("Unexpected key value")})),super(e,t,i),this.onKeyDown=s,this.onKeyUp=n,this.#X=this.options.activationKeys??[];let r=this;this.keyDownHandler=e=>{r.#X.some((t=>(e=>e.bShift?.valueOf()||"LeftShift"==e.Key.valueOf()||"RightShift"==e.Key.valueOf())(t)==e.shiftKey&&(e=>e.bCtrl?.valueOf()||"LeftControl"==e.Key.valueOf()||"RightControl"==e.Key.valueOf())(t)==e.ctrlKey&&(e=>e.bAlt?.valueOf()||"LeftAlt"==e.Key.valueOf()||"RightAlt"==e.Key.valueOf())(t)==e.altKey&&re.Keys[t.Key.value]==e.code))&&(this.consumeEvent&&(e.preventDefault(),e.stopImmediatePropagation()),this.pressedKey=e.code,r.fire(),document.removeEventListener("keydown",r.keyDownHandler),document.addEventListener("keyup",r.keyUpHandler))},this.keyUpHandler=e=>{r.#X.some((t=>t.bShift?.valueOf()&&"Shift"==e.key||t.bCtrl?.valueOf()&&"Control"==e.key||t.bAlt?.valueOf()&&"Alt"==e.key||t.bCmd?.valueOf()&&"Meta"==e.key||re.Keys[t.Key.value]==e.code))&&(this.consumeEvent&&e.stopImmediatePropagation(),r.unfire(),this.pressedKey="",document.removeEventListener("keyup",this.keyUpHandler),document.addEventListener("keydown",this.keyDownHandler))}}listenEvents(){document.addEventListener("keydown",this.keyDownHandler)}unlistenEvents(){document.removeEventListener("keydown",this.keyDownHandler)}fire(){this.onKeyDown(this)}unfire(){this.onKeyUp(this)}}class At extends xt{#q=[0,0];get location(){return this.#q}#Z;get enablerKey(){return this.#Z}#W=!0;get enablerActivated(){return this.#W}constructor(e,t,i={}){i.ignoreTranslateCompensate??=!1,i.ignoreScale??=!1,i.movementSpace??=t.getGridDOMElement()??document.documentElement,super(e,t,i),this.movementSpace=i.movementSpace,i.enablerKey&&(this.#Z=i.enablerKey,this.#Z.onKeyDown=()=>this.#W=!0,this.#Z.onKeyUp=()=>this.#W=!1,this.#Z.consumeEvent=!1,this.#Z.listenEvents(),this.#W=!1)}setLocationFromEvent(e){let t=ae.convertLocation([e.clientX,e.clientY],this.movementSpace,this.options.ignoreScale);return t=this.options.ignoreTranslateCompensate?t:this.blueprint.compensateTranslation(t[0],t[1]),this.#q=[...t],this.#q}}class Lt extends At{static#K=e=>{};#Q=e=>{if(this.blueprint.setFocused(!0),!this.enablerKey||this.enablerActivated)if(e.button===this.options.clickButton)this.options.strictTarget&&e.target!==e.currentTarget||(this.consumeEvent&&e.stopImmediatePropagation(),document.addEventListener("mouseup",this.#J),this.setLocationFromEvent(e),this.clickedPosition[0]=this.location[0],this.clickedPosition[1]=this.location[1],this.blueprint.mousePosition[0]=this.location[0],this.blueprint.mousePosition[1]=this.location[1],this.clicked(this.clickedPosition));else this.options.exitAnyButton||this.#J(e)};#J=e=>{this.options.exitAnyButton&&e.button!=this.options.clickButton||(this.consumeEvent&&e.stopImmediatePropagation(),document.removeEventListener("mouseup",this.#J),this.unclicked())};clickedPosition=[0,0];constructor(e,t,i={},s=Lt.#K,n=Lt.#K){i.clickButton??=re.mouseClickButton,i.consumeEvent??=!0,i.exitAnyButton??=!0,i.strictTarget??=!1,super(e,t,i),this.onClick=s,this.onUnclick=n,this.listenEvents()}listenEvents(){this.target.addEventListener("mousedown",this.#Q),this.options.clickButton===re.mouseRightClickButton&&this.target.addEventListener("contextmenu",(e=>e.preventDefault()))}unlistenEvents(){this.target.removeEventListener("mousedown",this.#Q)}clicked(e){this.onClick(this)}unclicked(e){this.onUnclick(this)}}class Mt extends At{static ignoreDbClick=e=>{};#ee=e=>{this.options.strictTarget&&e.target!==e.currentTarget||(this.consumeEvent&&e.stopImmediatePropagation(),this.clickedPosition=this.setLocationFromEvent(e),this.blueprint.mousePosition=[...this.clickedPosition],this.dbclicked(this.clickedPosition))};#te;get onDbClick(){return this.#te}set onDbClick(e){this.#te=e}clickedPosition=[0,0];constructor(e,t,i={},s=Mt.ignoreDbClick){i.consumeEvent??=!0,i.strictTarget??=!1,super(e,t,i),this.#te=s,this.listenEvents()}listenEvents(){this.target.addEventListener("dblclick",this.#ee)}unlistenEvents(){this.target.removeEventListener("dblclick",this.#ee)}dbclicked(e){this.onDbClick(e)}}class It{static deleteNodes="Delete";static duplicateNodes="(bCtrl=True,Key=D)";static enableLinkDelete="LeftAlt";static enableZoomIn=["LeftControl","RightControl"];static selectAllNodes="(bCtrl=True,Key=A)"}class Tt{element;get blueprint(){return this.element.blueprint}#ie=[];get inputObjects(){return this.#ie}initialize(e){this.element=e}createInputObjects(){return[]}setup(){this.#ie.forEach((e=>e.setup()))}cleanup(){this.#ie.forEach((e=>e.cleanup()))}willUpdate(e){}update(e){}render(){return G``}firstUpdated(e){}updated(e){}inputSetup(){this.#ie=this.createInputObjects()}}class Ot extends Tt{update(e){super.update(e);const[t,i,s,n]=[Math.round(this.element.fromX),Math.round(this.element.fromY),Math.round(this.element.toX),Math.round(this.element.toY)],[r,a,o,l]=[Math.min(t,s),Math.min(i,n),Math.abs(t-s),Math.abs(i-n)];(e.has("fromX")||e.has("toX"))&&(this.element.style.left=`${r}px`,this.element.style.width=`${o}px`),(e.has("fromY")||e.has("toY"))&&(this.element.style.top=`${a}px`,this.element.style.height=`${l}px`)}}class $t extends Ot{static sigmoidPositive(e,t=3.7,i=1.1){return 1-Math.exp(-((e/i)**t))}static decreasingValue(e,t){const i=-e*t[0]**2,s=t[1]-i/t[0];return e=>i/e+s}static clampedLine(e,t){if(e[0]>t[0]){const i=e;e=t,t=i}const i=(t[1]-e[1])/(t[0]-e[0]),s=e[1]-i*e[0];return n=>nt[0]?t[1]:i*n+s}static c1DecreasingValue=$t.decreasingValue(-.15,[100,15]);static c2DecreasingValue=$t.decreasingValue(-.05,[500,130]);static c2Clamped=$t.clampedLine([0,80],[200,40]);#se=`ueb-id-${Math.floor(1e12*Math.random())}`;#ne=e=>{const t=new Nt({},this.element.source.entity),i=Ae.getConstructor("ueb-node").newObject(t);i.setLocation(...this.blueprint.snapToGrid(...e));const s=i.template;this.blueprint.addGraphElement(i);const n=this.element.getInputPin(),r=this.element.getOutputPin();this.element.source=null,this.element.destination=null;const a=Ae.getConstructor("ueb-link").newObject(r,s.inputPin);this.blueprint.addGraphElement(a),this.element.source=s.outputPin,this.element.destination=n};createInputObjects(){const e=this.element.querySelector(".ueb-link-area");return[...super.createInputObjects(),new Mt(e,this.blueprint,void 0,(e=>{e[0]+=re.knotOffset[0],e[1]+=re.knotOffset[1],e=ae.snapToGrid(e[0],e[1],re.gridSize),this.#ne(e)})),new Lt(e,this.blueprint,{enablerKey:new kt(this.blueprint,this.blueprint,{activationKeys:It.enableLinkDelete})},(()=>this.blueprint.removeGraphElement(this.element)))]}willUpdate(e){super.willUpdate(e);const t=this.element.source,i=this.element.destination;if(e.has("fromX")||e.has("toX")){const e=this.element.fromX,s=this.element.toX,n=t?.nodeElement.getType()==re.paths.knot,r=i?.nodeElement.getType()==re.paths.knot;!n||i&&!r||(t?.isInput()&&s>e+re.distanceThreshold?this.element.source=t.nodeElement.template.outputPin:t?.isOutput()&&se+re.distanceThreshold&&(this.element.destination=i.nodeElement.template.inputPin))}const s=Math.max(Math.abs(this.element.fromX-this.element.toX),1),n=Math.max(Math.abs(this.element.fromY-this.element.toY),1),r=Math.max(s,re.linkMinWidth),a=s/r,o=this.element.originatesFromInput?this.element.fromXthis.element.toY?1:0)),this.element.style.setProperty("--ueb-start-percentage",`${Math.round(this.element.startPercentage)}%`),this.element.style.setProperty("--ueb-link-start",`${Math.round(this.element.startPixels)}`)}render(){return G` ${this.element.linkMessageIcon||this.element.linkMessageText?G`${this.element.linkMessageIcon!==V?G`${this.element.linkMessageIcon}`:V} ${this.element.linkMessageText!==V?G`${this.element.linkMessageText}`:V}`:V}`}}class Dt extends oe{static properties={...super.properties,fromX:{type:Number,attribute:!1},fromY:{type:Number,attribute:!1},toX:{type:Number,attribute:!1},toY:{type:Number,attribute:!1}};constructor(){super(),this.fromX=0,this.fromY=0,this.toX=0,this.toY=0}setBothLocations([e,t]){this.fromX=e,this.fromY=t,this.toX=e,this.toY=t}addSourceLocation(e,t){this.fromX+=e,this.fromY+=t}addDestinationLocation(e,t){this.toX+=e,this.toY+=t}}class Bt extends Dt{static properties={...super.properties,dragging:{type:Boolean,attribute:"data-dragging",converter:ke.booleanConverter,reflect:!0},originatesFromInput:{type:Boolean,attribute:!1},svgPathD:{type:String,attribute:!1},linkMessageIcon:{type:String,attribute:!1},linkMessageText:{type:String,attribute:!1}};#re;get source(){return this.#re}set source(e){this.#ae(e,!1)}#oe;get destination(){return this.#oe}set destination(e){this.#ae(e,!0)}#le=()=>this.remove();#ue=e=>this.addSourceLocation(...e.detail.value);#ce=e=>this.addDestinationLocation(...e.detail.value);#he=e=>this.setSourceLocation();#pe=e=>this.setDestinationLocation();linkMessageIcon=V;linkMessageText=V;pathElement;constructor(){super(),this.dragging=!1,this.originatesFromInput=!1,this.startPercentage=0,this.svgPathD="",this.startPixels=0}static newObject(e,t){const i=new Bt;return i.initialize(e,t),i}initialize(e,t){super.initialize({},new $t),e&&(this.source=e,t||(this.toX=this.fromX,this.toY=this.fromY)),t&&(this.destination=t,e||(this.fromX=this.toX,this.fromY=this.toY))}#ae(e,t){const i=()=>t?this.destination:this.source;if(i()!=e){if(i()){const e=i().getNodeElement();e.removeEventListener(re.removeEventName,this.#le),e.removeEventListener(re.nodeDragEventName,t?this.#ce:this.#ue),e.removeEventListener(re.nodeReflowEventName,t?this.#pe:this.#he),this.#de()}if(t?this.#oe=e:this.#re=e,i()){const e=i().getNodeElement();e.addEventListener(re.removeEventName,this.#le),e.addEventListener(re.nodeDragEventName,t?this.#ce:this.#ue),e.addEventListener(re.nodeReflowEventName,t?this.#pe:this.#he),t?this.setDestinationLocation():(this.setSourceLocation(),this.originatesFromInput=this.source.isInput()),this.#me()}}}#me(){this.source&&this.destination&&(this.source.linkTo(this.destination),this.destination.linkTo(this.source))}#de(){this.source&&this.destination&&(this.source.unlinkFrom(this.destination,!1),this.destination.unlinkFrom(this.source,!1))}cleanup(){super.cleanup(),this.#de(),this.source=null,this.destination=null}setSourceLocation(e=null,t=!0){if(null==e){const i=this;if(t&&(!this.hasUpdated||!this.source.hasUpdated))return void Promise.all([this.updateComplete,this.source.updateComplete]).then((()=>i.setSourceLocation(null,!1)));e=this.source.template.getLinkLocation()}const[i,s]=e;this.fromX=i,this.fromY=s}setDestinationLocation(e=null,t=!0){if(null==e){const i=this;if(t&&(!this.hasUpdated||!this.destination.hasUpdated))return void Promise.all([this.updateComplete,this.destination.updateComplete]).then((()=>i.setDestinationLocation(null,!1)));e=this.destination.template.getLinkLocation()}this.toX=e[0],this.toY=e[1]}getInputPin(e=!1){return this.source?.isInput()?this.source:this.destination?.isInput()?this.destination:e?this.source??this.destination:void 0}setInputPin(e){this.source?.isInput()&&(this.source=e),this.destination=e}getOutputPin(e=!1){return this.source?.isOutput()?this.source:this.destination?.isOutput()?this.destination:e?this.source??this.destination:void 0}setOutputPin(e){this.destination?.isOutput()&&(this.destination=e),this.source=e}startDragging(){this.dragging=!0}finishDragging(){this.dragging=!1}removeMessage(){this.linkMessageIcon=V,this.linkMessageText=V}setMessageConvertType(){this.linkMessageIcon=le.convert,this.linkMessageText=G`Convert ${this.source.pinType} to ${this.destination.pinType}.`}setMessageCorrect(){this.linkMessageIcon=le.correct,this.linkMessageText=V}setMessageReplace(){this.linkMessageIcon=le.correct,this.linkMessageText=V}setMessageDirectionsIncompatible(){this.linkMessageIcon=le.reject,this.linkMessageText=G`Directions are not compatbile.`}setMessagePlaceNode(){this.linkMessageIcon=V,this.linkMessageText=G`Place a new node.`}setMessageReplaceLink(){this.linkMessageIcon=le.correct,this.linkMessageText=G`Replace existing input connections.`}setMessageReplaceOutputLink(){this.linkMessageIcon=le.correct,this.linkMessageText=G`Replace existing output connections.`}setMessageSameNode(){this.linkMessageIcon=le.reject,this.linkMessageText=G`Both are on the same node.`}setMessageTypesIncompatible(e,t){this.linkMessageIcon=le.reject,this.linkMessageText=G`${ae.capitalFirstLetter(e.pinType)} is not compatible with ${ae.capitalFirstLetter(t.pinType)}.`}}class Gt extends oe{static properties={...super.properties,locationX:{type:Number,attribute:!1},locationY:{type:Number,attribute:!1},sizeX:{type:Number,attribute:!1},sizeY:{type:Number,attribute:!1}};static dragEventName=re.dragEventName;static dragGeneralEventName=re.dragGeneralEventName;constructor(){super(),this.locationX=0,this.locationY=0,this.sizeX=0,this.sizeY=0}computeSizes(){const e=this.getBoundingClientRect();this.sizeX=this.blueprint.scaleCorrect(e.width),this.sizeY=this.blueprint.scaleCorrect(e.height)}firstUpdated(e){super.firstUpdated(e),this.computeSizes()}setLocation(e,t,i=!0){const s=e-this.locationX,n=t-this.locationY;if(this.locationX=e,this.locationY=t,this.blueprint&&i){const e=new CustomEvent(this.constructor.dragEventName,{detail:{value:[s,n]},bubbles:!1,cancelable:!0});this.dispatchEvent(e)}}addLocation(e,t,i=!0){this.setLocation(this.locationX+e,this.locationY+t,i)}acknowledgeDrag(e){const t=new CustomEvent(this.constructor.dragGeneralEventName,{detail:{value:e},bubbles:!0,cancelable:!0});this.dispatchEvent(t)}snapToGrid(){const e=ae.snapToGrid(this.locationX,this.locationY,re.gridSize);this.locationX==e[0]&&this.locationY==e[1]||this.setLocation(e[0],e[1])}topBoundary(e=!1){return this.template.topBoundary(e)}rightBoundary(e=!1){return this.template.rightBoundary(e)}bottomBoundary(e=!1){return this.template.bottomBoundary(e)}leftBoundary(e=!1){return this.template.leftBoundary(e)}}class Ht extends At{#Q=e=>{if(this.blueprint.setFocused(!0),e.button===this.options.clickButton)this.options.strictTarget&&e.target!=e.currentTarget||(this.consumeEvent&&e.stopImmediatePropagation(),this.#ge.addEventListener("mousemove",this.#be),document.addEventListener("mouseup",this.#J),this.setLocationFromEvent(e),this.clickedPosition[0]=this.location[0],this.clickedPosition[1]=this.location[1],this.blueprint.mousePosition[0]=this.location[0],this.blueprint.mousePosition[1]=this.location[1],this.target instanceof Gt&&(this.clickedOffset=[this.clickedPosition[0]-this.target.locationX,this.clickedPosition[1]-this.target.locationY]),this.clicked(this.clickedPosition));else this.options.exitAnyButton||this.#J(e)};#be=e=>{this.consumeEvent&&e.stopImmediatePropagation(),this.#ge.removeEventListener("mousemove",this.#be),this.#ge.addEventListener("mousemove",this.#ve);const t=this.getEvent(re.trackingMouseEventName.begin);this.#fe=0==this.target.dispatchEvent(t),this.setLocationFromEvent(e),this.lastLocation=ae.snapToGrid(this.clickedPosition[0],this.clickedPosition[1],this.stepSize),this.startDrag(this.location),this.started=!0,this.#ve(e)};#ve=e=>{this.consumeEvent&&e.stopImmediatePropagation();const t=this.setLocationFromEvent(e),i=[e.movementX,e.movementY];if(this.dragTo(t,i),this.#fe&&(this.blueprint.mousePosition=t),this.options.scrollGraphEdge){const e=Math.sqrt(i[0]*i[0]+i[1]*i[1]),s=this.blueprint.scaleCorrect(re.edgeScrollThreshold),n=this.blueprint.template.gridLeftVisibilityBoundary()+s,r=this.blueprint.template.gridRightVisibilityBoundary()-s;let a=0;t[0]r&&(a=t[0]-r);const o=this.blueprint.template.gridTopVisibilityBoundary()+s,l=this.blueprint.template.gridBottomVisibilityBoundary()-s;let u=0;t[1]l&&(u=t[1]-l),a=ae.clamp(this.blueprint.scaleCorrectReverse(a)**3*e*.6,-20,20),u=ae.clamp(this.blueprint.scaleCorrectReverse(u)**3*e*.6,-20,20),this.blueprint.scrollDelta(a,u)}};#J=e=>{if(!this.options.exitAnyButton||e.button==this.options.clickButton){if(this.consumeEvent&&e.stopImmediatePropagation(),this.#ge.removeEventListener("mousemove",this.#be),this.#ge.removeEventListener("mousemove",this.#ve),document.removeEventListener("mouseup",this.#J),this.started&&this.endDrag(),this.unclicked(),this.#fe){const e=this.getEvent(re.trackingMouseEventName.end);this.target.dispatchEvent(e),this.#fe=!1}this.started=!1}};#fe=!1;#ge;#ye;get draggableElement(){return this.#ye}clickedOffset=[0,0];clickedPosition=[0,0];lastLocation=[0,0];started=!1;stepSize=1;constructor(e,t,i={}){i.clickButton??=re.mouseClickButton,i.consumeEvent??=!0,i.draggableElement??=e,i.exitAnyButton??=!0,i.moveEverywhere??=!1,i.movementSpace??=t?.getGridDOMElement(),i.repositionOnClick??=!1,i.scrollGraphEdge??=!1,i.strictTarget??=!1,super(e,t,i),this.stepSize=Number(i.stepSize??re.gridSize),this.#ge=this.options.moveEverywhere?document.documentElement:this.movementSpace,this.#ye=this.options.draggableElement,this.listenEvents()}listenEvents(){super.listenEvents(),this.#ye.addEventListener("mousedown",this.#Q),this.options.clickButton===re.mouseRightClickButton&&this.#ye.addEventListener("contextmenu",(e=>e.preventDefault()))}unlistenEvents(){super.unlistenEvents(),this.#ye.removeEventListener("mousedown",this.#Q)}getEvent(e){return new CustomEvent(e,{detail:{tracker:this},bubbles:!0,cancelable:!0})}clicked(e){}startDrag(e){}dragTo(e,t){}endDrag(){}unclicked(e){}}class Vt extends Ht{clicked(e){this.options.repositionOnClick&&(this.target.setLocation(...this.stepSize>1?ae.snapToGrid(e[0],e[1],this.stepSize):e),this.clickedOffset=[0,0])}dragTo(e,t){const i=[this.target.locationX??this.lastLocation[0],this.target.locationY??this.lastLocation[1]],[s,n]=this.stepSize>1?[ae.snapToGrid(e[0],e[1],this.stepSize),ae.snapToGrid(i[0],i[1],this.stepSize)]:[e,i];0==(t=[s[0]-this.lastLocation[0],s[1]-this.lastLocation[1]])[0]&&0==t[1]||(t[0]+=n[0]-i[0],t[1]+=n[1]-i[1],this.dragAction(s,t),this.lastLocation=s)}dragAction(e,t){this.target.setLocation(e[0]-this.clickedOffset[0],e[1]-this.clickedOffset[1])}}class Rt extends Vt{#we;#Se;#Ee;#Ce;constructor(e,t,i={}){super(e,t,i),i.onClicked&&(this.#we=i.onClicked),i.onStartDrag&&(this.#Se=i.onStartDrag),i.onDrag&&(this.#Ee=i.onDrag),i.onEndDrag&&(this.#Ce=i.onEndDrag)}clicked(e){super.clicked(e),this.#we?.()}startDrag(){super.startDrag(),this.#Se?.()}dragAction(e,t){this.#Ee?.(e,t)}endDrag(){super.endDrag(),this.#Ce?.()}}class _t extends Vt{constructor(e,t,i={}){super(e,t,i),this.draggableElement.classList.add("ueb-draggable")}startDrag(){this.target.selected||(this.blueprint.unselectAll(),this.target.setSelected(!0))}dragAction(e,t){this.target.acknowledgeDrag(t)}unclicked(){this.started?(this.blueprint.getNodes(!0).forEach((e=>e.boundComments.filter((t=>!e.isInsideComment(t))).forEach((t=>e.unbindFromComment(t))))),this.blueprint.getCommentNodes().forEach((e=>e.template.manageNodesBind()))):(this.blueprint.unselectAll(),this.target.setSelected(!0))}}class zt extends Tt{getDraggableElement(){return this.element}createDraggableObject(){const e=this.getDraggableElement();return new Vt(this.element,this.blueprint,{draggableElement:e})}createInputObjects(){return[...super.createInputObjects(),this.createDraggableObject(),new kt(this.element,this.blueprint,{activationKeys:[re.Keys.ArrowUp,re.Keys.ArrowRight,re.Keys.ArrowDown,re.Keys.ArrowLeft]},(e=>e.target.acknowledgeDrag([e.pressedKey===re.Keys.ArrowLeft?-re.gridSize:e.pressedKey===re.Keys.ArrowRight?re.gridSize:0,e.pressedKey===re.Keys.ArrowUp?-re.gridSize:e.pressedKey===re.Keys.ArrowDown?re.gridSize:0])))]}topBoundary(e=!1){return this.element.locationY}rightBoundary(e=!1){return this.element.locationX+this.element.sizeX}bottomBoundary(e=!1){return this.element.locationY+this.element.sizeY}leftBoundary(e=!1){return this.element.locationX}centerInViewport(){const e=Math.min(this.blueprint.template.viewportSize[0]/10,this.blueprint.template.viewportSize[1]/10),t=this.leftBoundary()-this.blueprint.template.gridLeftVisibilityBoundary(),i=this.blueprint.template.gridRightVisibilityBoundary()-this.rightBoundary();let s=Math.max((t+i)/2,e);const n=this.topBoundary()-this.blueprint.template.gridTopVisibilityBoundary(),r=this.blueprint.template.gridBottomVisibilityBoundary()-this.bottomBoundary();let a=Math.max((n+r)/2,e);this.blueprint.scrollDelta(t-s,n-a,!0)}}class Ft extends zt{update(e){super.update(e),e.has("locationX")&&(this.element.style.left=`${this.element.locationX}px`),e.has("locationY")&&(this.element.style.top=`${this.element.locationY}px`)}}class jt extends Ft{getDraggableElement(){return this.element}createDraggableObject(){return new _t(this.element,this.blueprint,{draggableElement:this.getDraggableElement(),scrollGraphEdge:!0})}firstUpdated(e){super.firstUpdated(e),this.element.selected&&!this.element.listeningDrag&&this.element.setSelected(!0)}}class Ut extends jt{static nodeStyleClasses=["ueb-node-style-default"];#Ne;pinInserter;inputContainer;outputContainer;pinElement;addPinHandler=()=>{const e=this.pinInserter?.();e&&(this.defaultPin&&this.defaultPin.isInput()===e.isInput()?this.defaultPin.before(this.createPinElement(e)):(e.isInput()?this.inputContainer:this.outputContainer).appendChild(this.createPinElement(e)),this.element.acknowledgeReflow())};toggleAdvancedDisplayHandler=()=>{this.element.toggleShowAdvancedPinDisplay(),this.element.requestUpdate(),this.element.updateComplete.then((()=>this.element.acknowledgeReflow()))};createPinElement(e){const t=Ae.getConstructor("ueb-pin").newObject(e,void 0,this.element);return this.pinInserter&&!this.defaultPin&&"Default"===t.getPinName()&&(this.defaultPin=t,this.defaultPin.classList.add("ueb-node-variadic-default")),t}initialize(e){super.initialize(e),this.#Ne=function(e){switch(e.getType()){case re.paths.addDelegate:case re.paths.clearDelegate:case re.paths.removeDelegate:return null}const t=e.getPinEntities().find((e=>"self"===e.PinName?.toString()&&"Target"===Ke(e)));if(t){const i=e.FunctionReference?.MemberParent?.getName()??t.PinType?.PinSubCategoryObject?.getName()??"Untitled";return i.length>0?`Target is ${ae.formatStringName(i)}`:null}return null}(e.entity),this.element.classList.add(...this.constructor.nodeStyleClasses),this.element.style.setProperty("--ueb-node-color",this.getColor().cssText),this.pinInserter=this.element.entity.additionalPinInserter(),this.pinInserter&&this.element.classList.add("ueb-node-is-variadic")}getColor(){return this.element.entity.nodeColor()}render(){return G`${this.renderTop()}${this.pinInserter?G`Add pin ${le.plusCircle}`:V} ${this.element.entity.isDevelopmentOnly()?G`Development Only`:V} ${this.element.advancedPinDisplay?G`${le.expandIcon}`:V}`}renderNodeIcon(){return this.element.entity.nodeIcon()}renderNodeName(){return this.element.nodeDisplayName}renderTop(){const e=this.renderNodeIcon(),t=this.renderNodeName();return G`${e?G`${e}`:V} ${t?G`${t} ${this.#Ne?G`${this.#Ne}`:V}`:V}`}firstUpdated(e){super.firstUpdated(e),this.inputContainer=this.element.querySelector(".ueb-node-inputs"),this.outputContainer=this.element.querySelector(".ueb-node-outputs"),this.setupPins(),this.element.updateComplete.then((()=>this.element.acknowledgeReflow()))}setupPins(){this.element.nodeNameElement=this.element.querySelector(".ueb-node-name-text");let e=!1,t=!1;for(const i of this.getPinElements())i!==this.defaultPin&&(i.isInput()?(this.inputContainer.appendChild(i),e=!0):i.isOutput()&&(this.outputContainer.appendChild(i),t=!0));this.defaultPin&&(this.defaultPin.isInput()?this.inputContainer:this.outputContainer).appendChild(this.defaultPin),e&&this.element.classList.add("ueb-node-has-inputs"),t&&this.element.classList.add("ueb-node-has-outputs")}getPinElements(){return this.element.getPinElements()}createPinElements(){return this.element.getPinEntities().filter((e=>!e.isHidden())).map((e=>this.createPinElement(e)))}linksChanged(){}}class Yt extends Ut{#xe=document.createElement("div");#Pe=document.createElement("div");#ke=document.createElement("div");#Ae=document.createElement("div");#Le=document.createElement("div");#Me=document.createElement("div");#Ie=document.createElement("div");#Te=document.createElement("div");initialize(e){super.initialize(e),this.element.classList.add("ueb-resizeable"),this.#xe.classList.add("ueb-resizeable-top"),this.#Pe.classList.add("ueb-resizeable-right"),this.#ke.classList.add("ueb-resizeable-bottom"),this.#Ae.classList.add("ueb-resizeable-left"),this.#Le.classList.add("ueb-resizeable-top-right"),this.#Me.classList.add("ueb-resizeable-bottom-right"),this.#Ie.classList.add("ueb-resizeable-bottom-left"),this.#Te.classList.add("ueb-resizeable-top-left")}update(e){super.update(e),this.element.sizeX>=0&&e.has("sizeX")&&(this.element.style.width=`${this.element.sizeX}px`),this.element.sizeY>=0&&e.has("sizeY")&&(this.element.style.height=`${this.element.sizeY}px`)}firstUpdated(e){super.firstUpdated(e),this.element.append(this.#xe,this.#Pe,this.#ke,this.#Ae,this.#Le,this.#Me,this.#Ie,this.#Te)}createInputObjects(){return[...super.createInputObjects(),new Rt(this.#xe,this.blueprint,{onDrag:(e,t)=>{t[1]=e[1]-this.element.topBoundary(),this.setSizeY(this.element.sizeY-t[1])&&this.element.addLocation(0,t[1],!1)},onEndDrag:()=>this.endResize()}),new Rt(this.#Pe,this.blueprint,{onDrag:(e,t)=>{t[0]=e[0]-this.element.rightBoundary(),this.setSizeX(this.element.sizeX+t[0])},onEndDrag:()=>this.endResize()}),new Rt(this.#ke,this.blueprint,{onDrag:(e,t)=>{t[1]=e[1]-this.element.bottomBoundary(),this.setSizeY(this.element.sizeY+t[1])},onEndDrag:()=>this.endResize()}),new Rt(this.#Ae,this.blueprint,{onDrag:(e,t)=>{t[0]=e[0]-this.element.leftBoundary(),this.setSizeX(this.element.sizeX-t[0])&&this.element.addLocation(t[0],0,!1)},onEndDrag:()=>this.endResize()}),new Rt(this.#Le,this.blueprint,{onDrag:(e,t)=>{t[0]=e[0]-this.element.rightBoundary(),t[1]=e[1]-this.element.topBoundary(),this.setSizeX(this.element.sizeX+t[0]),this.setSizeY(this.element.sizeY-t[1])&&this.element.addLocation(0,t[1],!1)},onEndDrag:()=>this.endResize()}),new Rt(this.#Me,this.blueprint,{onDrag:(e,t)=>{t[0]=e[0]-this.element.rightBoundary(),t[1]=e[1]-this.element.bottomBoundary(),this.setSizeX(this.element.sizeX+t[0]),this.setSizeY(this.element.sizeY+t[1])},onEndDrag:()=>this.endResize()}),new Rt(this.#Ie,this.blueprint,{onDrag:(e,t)=>{t[0]=e[0]-this.element.leftBoundary(),t[1]=e[1]-this.element.bottomBoundary(),this.setSizeX(this.element.sizeX-t[0])&&this.element.addLocation(t[0],0,!1),this.setSizeY(this.element.sizeY+t[1])},onEndDrag:()=>this.endResize()}),new Rt(this.#Te,this.blueprint,{onDrag:(e,t)=>{t[0]=e[0]-this.element.leftBoundary(),t[1]=e[1]-this.element.topBoundary(),this.setSizeX(this.element.sizeX-t[0])&&this.element.addLocation(t[0],0,!1),this.setSizeY(this.element.sizeY-t[1])&&this.element.addLocation(0,t[1],!1)},onEndDrag:()=>this.endResize()})]}setSizeX(e){return this.element.setNodeWidth(e),!0}setSizeY(e){return this.element.setNodeHeight(e),!0}endResize(){}}class Kt extends Yt{#Oe=0;initialize(e){super.initialize(e),e.classList.add("ueb-node-style-comment","ueb-node-resizeable"),e.sizeX=25*re.gridSize,e.sizeY=6*re.gridSize,super.initialize(e)}getDraggableElement(){return this.element.querySelector(".ueb-node-top")}render(){return G``}firstUpdated(e){super.firstUpdated(e);const t=this.getDraggableElement().getBoundingClientRect();this.#Oe=t.height}manageNodesBind(){let e=this.blueprint.getNodes();for(let t of e)t.topBoundary()>=this.element.topBoundary()&&t.rightBoundary()<=this.element.rightBoundary()&&t.bottomBoundary()<=this.element.bottomBoundary()&&t.leftBoundary()>=this.element.leftBoundary()?t.bindToComment(this.element):t.unbindFromComment(this.element)}setSizeX(e){return(e=Math.round(e))>=2*re.gridSize&&(this.element.setNodeWidth(e),!0)}setSizeY(e){return(e=Math.round(e))>=2*re.gridSize&&(this.element.setNodeHeight(e),!0)}endResize(){this.manageNodesBind()}topBoundary(e=!1){return this.element.locationY}rightBoundary(e=!1){return this.element.locationX+this.element.sizeX}bottomBoundary(e=!1){return e?this.element.locationY+this.#Oe:super.bottomBoundary()}leftBoundary(e=!1){return this.element.locationX}}class Xt extends Ht{#$e;#De=null;#Be=e=>{if(!this.enteredPin){this.linkValid=!1,this.enteredPin=e.target;const t=this.link.source??this.target,i=this.enteredPin,s=t.isOutput()?t:i;t.nodeElement.getType()===re.paths.knot||i.nodeElement.getType()===re.paths.knot?(this.link.setMessageCorrect(),this.linkValid=!0):t.getNodeElement()===i.getNodeElement()?this.link.setMessageSameNode():t.isOutput()===i.isOutput()?this.link.setMessageDirectionsIncompatible():this.blueprint.getLinks(t,i).length?(this.link.setMessageReplaceLink(),this.linkValid=!0):"exec"===s.entity.getType()&&s.isLinked?(this.link.setMessageReplaceOutputLink(),this.linkValid=!0):"object"==t.entity.PinType.PinCategory.valueOf()&&"object"==i.entity.PinType.PinCategory.valueOf()||t.pinType==i.pinType?(this.link.setMessageCorrect(),this.linkValid=!0):(this.link.setMessageTypesIncompatible(t,i),this.linkValid=!1)}};#Ge=e=>{this.enteredPin==e.target&&(this.enteredPin=null,this.linkValid=!1,this.link?.setMessagePlaceNode())};link;enteredPin;linkValid=!1;constructor(e,t,i={}){i.scrollGraphEdge??=!0,super(e,t,i)}startDrag(e){this.target.nodeElement.getType()==re.paths.knot&&(this.#De=this.target),this.link=Ae.getConstructor("ueb-link").newObject(this.target,null),this.blueprint.template.linksContainerElement.prepend(this.link),this.link.setMessagePlaceNode(),this.#$e=this.blueprint.querySelectorAll("ueb-pin"),this.#$e.forEach((e=>{e!=this.target&&(e.addEventListener("mouseenter",this.#Be),e.addEventListener("mouseleave",this.#Ge))})),this.link.startDragging(),this.link.setDestinationLocation(e)}dragTo(e,t){this.link.setDestinationLocation(e)}endDrag(){if(this.#$e.forEach((e=>{e.removeEventListener("mouseenter",this.#Be),e.removeEventListener("mouseleave",this.#Ge)})),this.#$e=null,this.enteredPin&&this.linkValid){if(this.#De){const e=this.#De!==this.link.source?this.link.source:this.enteredPin;if(this.#De.isInput()&&e.isInput()||this.#De.isOutput()&&e.isOutput()){const e=this.#De.template.getOppositePin();this.#De===this.link.source?this.link.source=e:this.enteredPin=e}}else this.enteredPin.nodeElement.getType()===re.paths.knot&&(this.#De=this.enteredPin,this.link.source.isOutput()&&(this.enteredPin=this.enteredPin.template.getOppositePin()));this.link.source.getLinks().find((e=>e.equals(this.enteredPin.createPinReference())))?this.link.remove():(this.blueprint.addGraphElement(this.link),this.link.destination=this.enteredPin)}else this.link.remove();this.enteredPin=null,this.link.removeMessage(),this.link.finishDragging(),this.link=null}}class qt extends Ut{#He=!1;#Ve=!1;displayName="";static nodeStyleClasses=["ueb-node-style-glass"];initialize(e){super.initialize(e),this.displayName=this.element.nodeDisplayName}render(){return G`${this.displayName?G`${this.displayName}`:V} ${this.#He?G``:V} ${this.#Ve?G``:V} ${this.pinInserter?G`Add pin ${le.plusCircle}`:V}`}createPinElements(){return this.element.getPinEntities().filter((e=>!e.isHidden())).map((e=>{this.#He||=e.isInput(),this.#Ve||=e.isOutput();return Ae.getConstructor("ueb-pin").newObject(e,void 0,this.element)}))}}class Zt extends qt{static nodeStyleClasses=["ueb-node-style-metasound","ueb-node-style-operation"]}class Wt extends qt{static nodeStyleClasses=[...super.nodeStyleClasses,"ueb-node-style-conversion"]}class Qt extends qt{static nodeStyleClasses=[...super.nodeStyleClasses,"ueb-node-style-operation"]}class Jt extends Tt{static canWrapInput=!0;#Re;get iconElement(){return this.#Re}#_e;get wrapperElement(){return this.#_e}isNameRendered=!0;initialize(e){if(super.initialize(e),this.element.nodeElement){const e=this.element.nodeElement.template;this.isNameRendered=!(e instanceof Wt||e instanceof Qt||e instanceof Zt)}}setup(){super.setup(),this.element.nodeElement=this.element.closest("ueb-node");const e=this.element.nodeElement.template;(e instanceof Wt||e instanceof Qt)&&(this.isNameRendered=!1,this.element.requestUpdate())}createInputObjects(){return[new Xt(this.element,this.blueprint,{moveEverywhere:!0,draggableElement:this.getClickableElement()})]}render(){const e=G`${this.renderIcon()}`,t=G`${this.isNameRendered?this.renderName():V} ${this.isInputRendered()?this.renderInput():G``}`;return G`${this.element.isInput()?G`${e}${t}`:G`${t}${e}`}`}renderIcon(){if(this.element.nodeElement.entity.isPcg())switch(this.element.entity.getType()){case"Any":return le.pcgPin;case"Param":case"Param[]":return le.pcgParamPin;case"Spatial":case"Spatial[]":return le.pcgSpatialPin;case"Any[]":case"Point[]":case"Surface[]":case"Volume[]":if(this.element.isOutput())return le.pcgPin;case"Point":case"Surface":case"Volume":return le.pcgStackPin}switch(this.element.entity.PinType.ContainerType?.toString()){case"Array":return le.arrayPin;case"Set":return le.setPin;case"Map":return le.mapPin}return"delegate"===this.element.entity.PinType.PinCategory?.toString().toLocaleLowerCase()?le.delegate:this.element.nodeElement?.template instanceof Qt?le.operationPin:le.genericPin}renderName(){let e=this.element.getPinDisplayName();const t=this.element.nodeElement,i=this.element.getPinName();return t.getType()==re.paths.makeStruct&&i==t.entity.StructType.getName()&&(e=i),G`${e}`}isInputRendered(){return this.element.isInput()&&!this.element.entity.bDefaultValueIsIgnored?.valueOf()&&!this.element.entity.PinType.bIsReference?.valueOf()}renderInput(){return G``}updated(e){if(super.updated(e),this.element.isInput()&&e.has("isLinked")){const e=this.element.nodeElement;this.element.requestUpdate(),this.element.updateComplete.then((()=>e.acknowledgeReflow()))}}firstUpdated(e){super.firstUpdated(e),this.element.style.setProperty("--ueb-pin-color-rgb",this.element.entity.pinColor().cssText),this.#Re=this.element.querySelector(".ueb-pin-icon svg")??this.element,this.#_e=this.element.querySelector(".ueb-pin-wrapper")}getLinkLocation(){const e=this.iconElement.getBoundingClientRect(),t=[this.element.isInput()?e.left:e.right+1,(e.top+e.bottom)/2],i=ae.convertLocation(t,this.blueprint.template.gridElement);return this.blueprint.compensateTranslation(i[0],i[1])}getClickableElement(){return this.#_e??this.element}}class ei extends Jt{render(){return G`${this.renderIcon()}`}}class ti extends Ut{static nodeStyleClasses=[...super.nodeStyleClasses,"ueb-node-style-event"];#ze;firstUpdated(e){super.firstUpdated(e),this.element.querySelector(".ueb-node-top").appendChild(this.createDelegatePinElement())}renderTop(){const e=this.renderNodeIcon(),t=this.renderNodeName(),i=this.element.getType()===re.paths.customEvent&&(this.element.entity.CustomFunctionName||this.element.entity.FunctionReference.MemberParent);return G`${e?G`${e}`:V} ${t?G`${t} ${i?G`Custom Event`:V}`:V}`}getPinElements(){return this.element.getPinElements().filter((e=>"delegate"!==e.entity.PinType.PinCategory?.toString()))}createDelegatePinElement(){return this.#ze||(this.#ze=Ae.getConstructor("ueb-pin").newObject(this.element.getPinEntities().find((e=>!e.isHidden()&&"delegate"===e.PinType.PinCategory?.toString())),new ei,this.element),this.#ze.template.isNameRendered=!1),this.#ze}createPinElements(){return[this.createDelegatePinElement(),...this.element.getPinEntities().filter((e=>!e.isHidden()&&"delegate"!==e.PinType.PinCategory?.toString())).map((e=>Ae.getConstructor("ueb-pin").newObject(e,void 0,this.element)))]}}class ii extends ei{render(){return this.element.isOutput()?super.render():G``}getOppositePin(){const e=this.element.nodeElement.template;return this.element.isOutput()?e.inputPin:e.outputPin}getLinkLocation(){const e=(this.element.isInput()?this.element.nodeElement.template.outputPin.template:this).iconElement.getBoundingClientRect(),t=[this.element.isInput()?e.left:e.right+1,(e.top+e.bottom)/2],i=ae.convertLocation(t,this.blueprint.template.gridElement);return this.blueprint.compensateTranslation(i[0],i[1])}}class si extends Ut{static#Fe=new Set;#je=null;#Ue;get inputPin(){return this.#Ue}#Ye;get outputPin(){return this.#Ye}initialize(e){super.initialize(e),this.element.classList.add("ueb-node-style-minimal")}findDirectionaPin(e){if(e.nodeElement.getType()!==re.paths.knot||si.#Fe.has(e))return si.#Fe.clear(),!0;si.#Fe.add(e);for(let t of e.getLinks().map((e=>this.blueprint.getPin(e))))if(this.findDirectionaPin(t))return!0;return!1}render(){return G``}setupPins(){for(const e of this.getPinElements())this.element.querySelector(".ueb-node-border").appendChild(e)}createPinElements(){const e=this.element.getPinEntities().filter((e=>!e.isHidden())),t=e[e[0].isInput()?0:1],i=e[e[0].isOutput()?0:1],s=Ae.getConstructor("ueb-pin");return[this.#Ue=s.newObject(t,new ii,this.element),this.#Ye=s.newObject(i,new ii,this.element)]}linksChanged(){}}class ni extends Ut{static nodeStyleClasses=["ueb-node-style-metasound"]}class ri extends qt{initialize(e){super.initialize(e);const t=e.getType();t===re.paths.variableGet||t===re.paths.self?(this.element.classList.add("ueb-node-style-getter"),this.displayName=""):t===re.paths.variableSet&&this.element.classList.add("ueb-node-style-setter")}setupPins(){super.setupPins();let e=this.element.getPinElements().find((e=>!e.entity.isHidden()&&!e.entity.isExecution()));this.element.style.setProperty("--ueb-node-color",e.getColor().cssText)}}function ai(e){if(e.getClass()===re.paths.callFunction||e.getClass()===re.paths.commutativeAssociativeBinaryOperator||e.getClass()===re.paths.callArrayFunction){const t=e.FunctionReference?.MemberParent?.path??"",i=e.FunctionReference?.MemberName?.toString();if(i&&(t===re.paths.kismetMathLibrary||t===re.paths.kismetArrayLibrary)){if(i.startsWith("Conv_"))return Wt;if(i.startsWith("Add_")||i.startsWith("And_")||i.startsWith("Boolean")||i.startsWith("Cross_")||i.startsWith("Dot_")||i.startsWith("Not_")||i.startsWith("Or_")||i.startsWith("Percent_")||i.startsWith("Xor_"))return Qt;switch(i){case"Abs":case"Array_Add":case"Array_AddUnique":case"Array_Identical":case"BMax":case"BMin":case"CrossProduct2D":case"DotProduct2D":case"Exp":case"FMax":case"FMin":case"GetPI":case"Max":case"MaxInt64":case"Min":case"MinInt64":case"Sqrt":case"Square":case"Vector4_CrossProduct3":case"Vector4_DotProduct":case"Vector4_DotProduct3":case"Acos":case"Asin":case"Cos":case"DegAcos":case"DegCos":case"DegSin":case"DegTan":case"Sin":case"Tan":return Qt}}if(t===re.paths.blueprintSetLibrary)return Qt;if(t===re.paths.blueprintMapLibrary)return Qt}switch(e.getClass()){case re.paths.comment:case re.paths.materialGraphNodeComment:return Kt;case re.paths.createDelegate:return Ut;case re.paths.metasoundEditorGraphExternalNode:return"Add"==e.ClassName?.Name?Zt:ni;case re.paths.niagaraNodeOp:if(["Boolean::LogicEq","Boolean::LogicNEq","Numeric::Abs","Numeric::Add","Numeric::Mul"].includes(e.OpName?.toString()))return Qt;break;case re.paths.promotableOperator:return Qt;case re.paths.knot:return si;case re.paths.literal:case re.paths.self:case re.paths.variableGet:case re.paths.variableSet:return ri}return e.isEvent()?ti:Ut}class oi extends Gt{static properties={...super.properties,selected:{type:Boolean,attribute:"data-selected",reflect:!0,converter:ke.booleanConverter}};dragHandler=e=>this.addLocation(...e.detail.value);constructor(){super(),this.selected=!1,this.listeningDrag=!1}setup(){super.setup(),this.setSelected(this.selected)}cleanup(){super.cleanup(),this.blueprint.removeEventListener(re.nodeDragGeneralEventName,this.dragHandler)}setSelected(e=!0){this.selected=e,this.blueprint&&(this.selected?(this.listeningDrag=!0,this.blueprint.addEventListener(re.nodeDragGeneralEventName,this.dragHandler)):(this.blueprint.removeEventListener(re.nodeDragGeneralEventName,this.dragHandler),this.listeningDrag=!1))}}class li extends oi{static properties={...oi.properties,typePath:{type:String,attribute:"data-type",reflect:!0},nodeTitle:{type:String,attribute:"data-title",reflect:!0},advancedPinDisplay:{type:String,attribute:"data-advanced-display",converter:We.attributeConverter,reflect:!0},enabledState:{type:String,attribute:"data-enabled-state",reflect:!0},nodeDisplayName:{type:String,attribute:!1},pureFunction:{type:Boolean,converter:ke.booleanConverter,attribute:"data-pure-function",reflect:!0}};static dragEventName=re.nodeDragEventName;static dragGeneralEventName=re.nodeDragGeneralEventName;get blueprint(){return super.blueprint}set blueprint(e){super.blueprint=e,this.#Ke.forEach((t=>t.blueprint=e))}#Xe;get nodeNameElement(){return this.#Xe}set nodeNameElement(e){this.#Xe=e}#Ke=[];boundComments=[];#qe=!1;#Ze=e=>{this.selected||this.#qe||(this.#qe=!0,this.requestUpdate(),this.updateComplete.then((()=>this.#qe=!1)),this.addLocation(...e.detail.value))};static fromSerializedObject(e){e=e.trim();let t=Ct.grammar.parse(e);return li.newObject(t)}static newObject(e=new Ct,t=new(ai(e))){const i=new li;return i.initialize(e,t),i}#We(e){for(let t of this.getPinElements())for(let i of t.getLinks())this.blueprint.getPin(i).redirectLink(t,new rt(new We(e),t.entity.PinId))}initialize(e=new Ct,t=new(ai(e))){this.typePath=e.getType(),this.nodeTitle=e.getObjectName(),this.advancedPinDisplay=e.AdvancedPinDisplay?.toString(),this.enabledState=e.EnabledState,this.nodeDisplayName=Ve(e),this.pureFunction=e.bIsPureFunc?.valueOf(),this.dragLinkObjects=[],super.initialize(e,t),this.#Ke=this.template.createPinElements(),super.setLocation(this.entity.getNodePosX(),this.entity.getNodePosY()),this.entity.NodeWidth&&this.entity.NodeHeight?(this.sizeX=this.entity.NodeWidth.value,this.sizeY=this.entity.NodeHeight.value):this.updateComplete.then((()=>this.computeSizes())),e.listenAttribute("Name",(t=>{this.#We(t.value),this.nodeTitle=t.value,this.nodeDisplayName=Ve(e)}))}async getUpdateComplete(){let e=await super.getUpdateComplete();for(const t of this.getPinElements())e&&=await t.updateComplete;return e}bindToComment(e){e==this||this.boundComments.includes(e)||(e.addEventListener(re.nodeDragEventName,this.#Ze),this.boundComments.push(e))}unbindFromComment(e){const t=this.boundComments.indexOf(e);t>=0&&(e.removeEventListener(re.nodeDragEventName,this.#Ze),this.boundComments[t]=this.boundComments[this.boundComments.length-1],this.boundComments.pop())}isInsideComment(e){return this.topBoundary()>=e.topBoundary()&&this.rightBoundary()<=e.rightBoundary()&&this.bottomBoundary()<=e.bottomBoundary()&&this.leftBoundary()>=e.leftBoundary()}getType(){return this.entity.getType()}getNodeName(){return this.entity.getObjectName()}computeNodeDisplayName(){this.nodeDisplayName=Ve(this.entity)}setNodeWidth(e){this.entity.setNodeWidth(e),this.sizeX=e,this.acknowledgeReflow()}setNodeHeight(e){this.entity.setNodeHeight(e),this.sizeY=e,this.acknowledgeReflow()}sanitizeLinks(e=[]){this.getPinElements().forEach((t=>t.sanitizeLinks(e)))}getPinElements(){return this.#Ke}getPinEntities(){return this.entity.getPinEntities()}setLocation(e=0,t=0,i=!0){this.entity.setNodePosX(e),this.entity.setNodePosY(t),super.setLocation(e,t,i)}acknowledgeReflow(){this.requestUpdate(),this.updateComplete.then((()=>this.computeSizes()));let e=new CustomEvent(re.nodeReflowEventName);this.dispatchEvent(e)}setShowAdvancedPinDisplay(e){this.entity.AdvancedPinDisplay=new We(e?"Shown":"Hidden"),this.advancedPinDisplay=this.entity.AdvancedPinDisplay}toggleShowAdvancedPinDisplay(){this.setShowAdvancedPinDisplay("Shown"!=this.entity.AdvancedPinDisplay?.toString())}}class ui extends Ct{#Qe=new Map;#Je=[];get objectEntities(){return this.#Je}getHomonymObjectEntity(e){const t=e.getObjectName();return this.#Je.find((e=>e.getObjectName()==t))}takeFreeName(e){e=e.replace(/_\d+$/,"");const t=(this.#Qe.get(e)??-1)+1;return this.#Qe.set(e,t),re.nodeTitle(e,t)}addObjectEntity(e){if(!this.#Je.includes(e)){this.#Je.push(e);const[t,i]=e.getNameAndCounter();return this.#Qe.set(t,Math.max(this.#Qe.get(t)??0,i)),!0}return!1}removeObjectEntity(e){const t=this.#Je.indexOf(e);if(t>=0){const e=this.#Je.pop();return te.OriginalChangeId.value==t.OriginalChangeId.value));if(t.length===this.ScriptVariables.length)return this;const i=t.concat(t).map(((i,s)=>{const n=re.subObjectAttributeNameFromReference(i.ScriptVariable,s>=t.length);return[n,this[n]??e[n]]}));return i.push(...Object.entries(this).filter((([e,t])=>!e.startsWith(re.subObjectAttributeNamePrefix)&&"ExportedNodes"!==e))),new ui(Object.fromEntries(i))}}class ci extends Ct{constructor(e,t){const i=re.paths.niagaraClipboardContent,s=e.takeFreeName("NiagaraClipboardContent"),n=`/Engine/Transient.${s}`;let r="";for(const e of t)e.exported&&(r+=e.serialize());t.filter((e=>!e.exported)).map((e=>e.serialize())),super({Class:new nt(i),Name:new qe(s),ExportPath:new nt(i,n),ExportedNodes:new qe(btoa(r))})}}class hi extends xt{#et;constructor(e,t,i={}){i.listenOnFocus??=!0,i.unlistenOnTextEdit??=!0,super(e,t,i);let s=this;this.#et=()=>s.copied()}listenEvents(){window.addEventListener("copy",this.#et)}unlistenEvents(){window.removeEventListener("copy",this.#et)}getSerializedText(){const e=this.blueprint.getNodes(!0).map((e=>e.entity));let t=!1,i=e.filter((e=>(t||=e.exported,!e.exported))).reduce(((e,t)=>e+t.serialize()),"");if(t){i=new ci(this.blueprint.entity,e).serialize()+i}return i}copied(){const e=this.getSerializedText();return navigator.clipboard.writeText(e),e}}class pi extends xt{#tt;constructor(e,t,i={}){i.listenOnFocus??=!0,i.unlistenOnTextEdit??=!0,super(e,t,i);let s=this;this.#tt=()=>s.cut()}listenEvents(){window.addEventListener("cut",this.#tt)}unlistenEvents(){window.removeEventListener("cut",this.#tt)}getSerializedText(){return this.blueprint.getNodes(!0).map((e=>e.entity.serialize())).join("")}cut(){this.blueprint.template.getCopyInputObject().copied(),this.blueprint.removeGraphElement(...this.blueprint.getNodes(!0))}}class di extends xt{#it;constructor(e,t,i={}){i.listenOnFocus??=!0,i.unlistenOnTextEdit??=!0,super(e,t,i);let s=this;this.#it=e=>s.pasted(e.clipboardData.getData("Text"))}listenEvents(){window.addEventListener("paste",this.#it)}unlistenEvents(){window.removeEventListener("paste",this.#it)}pasted(e){let t=0,i=0,s=0,n=Ct.grammarMultipleObjects.parse(e).map((e=>{let n=Ae.getConstructor("ueb-node").newObject(e);return t+=n.locationY,i+=n.locationX,++s,n}));t/=s,i/=s,n.length>0&&this.blueprint.unselectAll();let r=this.blueprint.mousePosition;for(const e of n)e.addLocation(r[0]-i,r[1]-t),e.snapToGrid(),e.setSelected(!0);return this.blueprint.addGraphElement(...n),n}}class mi extends At{static#K=e=>{};#st=0;get variation(){return this.#st}#nt=e=>{this.enablerKey&&!this.enablerActivated||(e.preventDefault(),this.#st=e.deltaY,this.setLocationFromEvent(e),this.wheel())};#rt=e=>e.preventDefault();constructor(e,t,i={},s=mi.#K){i.listenOnFocus=!0,i.strictTarget??=!1,super(e,t,i),this.strictTarget=i.strictTarget,this.onWheel=s}listenEvents(){this.movementSpace.addEventListener("wheel",this.#nt,!1),this.movementSpace.parentElement?.addEventListener("wheel",this.#rt)}unlistenEvents(){this.movementSpace.removeEventListener("wheel",this.#nt,!1),this.movementSpace.parentElement?.removeEventListener("wheel",this.#rt)}wheel(){this.onWheel(this)}}class gi extends mi{#at=0;#ot=!1;get enableZoonIn(){return this.#ot}set enableZoonIn(e){e!=this.#ot&&(this.#ot=e)}wheel(){if(this.#at+=-this.variation,Math.abs(this.#at)0||(e+=Math.sign(this.#at),this.blueprint.setZoom(e,this.location),this.#at=0)}}class bi extends kt{#lt;constructor(e,t,i={}){i.activationKeys=It.enableZoomIn,super(e,t,i)}fire(){this.#lt=this.blueprint.template.getZoomInputObject(),this.#lt.enableZoonIn=!0}unfire(){this.#lt.enableZoonIn=!1}}class vi extends Ht{startDrag(){this.blueprint.scrolling=!0}dragTo(e,t){this.blueprint.scrollDelta(-t[0],-t[1])}endDrag(){this.blueprint.scrolling=!1}}class fi extends At{#ut=null;#ct=e=>{e.preventDefault(),this.setLocationFromEvent(e),this.blueprint.mousePosition=[...this.location]};#ht=e=>{this.#ut||(e.preventDefault(),this.#ut=e.detail.tracker,this.unlistenMouseMove())};#pt=e=>{this.#ut==e.detail.tracker&&(e.preventDefault(),this.#ut=null,this.listenMouseMove())};constructor(e,t,i={}){i.listenOnFocus=!0,super(e,t,i)}listenMouseMove(){this.target.addEventListener("mousemove",this.#ct)}unlistenMouseMove(){this.target.removeEventListener("mousemove",this.#ct)}listenEvents(){this.listenMouseMove(),this.blueprint.addEventListener(re.trackingMouseEventName.begin,this.#ht),this.blueprint.addEventListener(re.trackingMouseEventName.end,this.#pt)}unlistenEvents(){this.unlistenMouseMove(),this.blueprint.removeEventListener(re.trackingMouseEventName.begin,this.#ht),this.blueprint.removeEventListener(re.trackingMouseEventName.end,this.#pt)}}class yi extends Ht{constructor(e,t,i={}){i.scrollGraphEdge??=!0,super(e,t,i),this.selectorElement=this.blueprint.template.selectorElement}startDrag(){this.selectorElement.beginSelect(this.clickedPosition)}dragTo(e,t){this.selectorElement.selectTo(e)}endDrag(){this.started&&this.selectorElement.endSelect()}unclicked(){this.started||this.blueprint.unselectAll()}}class wi extends xt{#dt=e=>this.clickedSomewhere(e.target);constructor(e,t,i={}){i.listenOnFocus=!0,super(e,t,i),this.blueprint.focus&&document.addEventListener("click",this.#dt)}clickedSomewhere(e){e.closest("ueb-blueprint")||this.blueprint.setFocused(!1)}listenEvents(){document.addEventListener("click",this.#dt)}unlistenEvents(){document.removeEventListener("click",this.#dt)}}class Si extends Tt{static styleVariables={"--ueb-font-size":`${re.fontSize}`,"--ueb-grid-axis-line-color":`${re.gridAxisLineColor}`,"--ueb-grid-expand":`${re.expandGridSize}px`,"--ueb-grid-line-color":`${re.gridLineColor}`,"--ueb-grid-line-width":`${re.gridLineWidth}px`,"--ueb-grid-set-line-color":`${re.gridSetLineColor}`,"--ueb-grid-set":`${re.gridSet}`,"--ueb-grid-size":`${re.gridSize}px`,"--ueb-link-min-width":`${re.linkMinWidth}`,"--ueb-node-radius":`${re.nodeRadius}px`};#mt=new ResizeObserver((e=>{const t=e.find((e=>e.target===this.viewportElement))?.devicePixelContentBoxSize?.[0];t&&(this.viewportSize[0]=t.inlineSize,this.viewportSize[1]=t.blockSize)}));#gt;#bt;#lt;headerElement;overlayElement;viewportElement;selectorElement;gridElement;linksContainerElement;nodesContainerElement;viewportSize=[0,0];initialize(e){super.initialize(e),this.element.style.cssText=Object.entries(Si.styleVariables).map((([e,t])=>`${e}:${t};`)).join("");const t=this.element.querySelector(":scope > template")?.content.textContent;t&&(this.element.requestUpdate(),this.element.updateComplete.then((()=>{this.blueprint.mousePosition=[Math.round(this.viewportSize[0]/2),Math.round(this.viewportSize[1]/2)],this.getPasteInputObject().pasted(t),this.blueprint.unselectAll()})))}setup(){super.setup(),this.#mt.observe(this.viewportElement,{box:"device-pixel-content-box"});const e=this.viewportElement.getBoundingClientRect();this.viewportSize[0]=e.width,this.viewportSize[1]=e.height,this.blueprint.nodes.length>0&&(this.blueprint.requestUpdate(),this.blueprint.updateComplete.then((()=>this.centerContentInViewport())))}cleanup(){super.cleanup(),this.#mt.unobserve(this.viewportElement)}createInputObjects(){const e=this.element.getGridDOMElement();return this.#gt=new hi(e,this.blueprint),this.#bt=new di(e,this.blueprint),this.#lt=new gi(e,this.blueprint),[...super.createInputObjects(),this.#gt,this.#bt,this.#lt,new pi(e,this.blueprint),new kt(e,this.blueprint,{activationKeys:It.duplicateNodes},(()=>this.blueprint.template.getPasteInputObject().pasted(this.blueprint.template.getCopyInputObject().copied()))),new kt(e,this.blueprint,{activationKeys:It.deleteNodes},(()=>this.blueprint.removeGraphElement(...this.blueprint.getNodes(!0)))),new kt(e,this.blueprint,{activationKeys:It.selectAllNodes},(()=>this.blueprint.selectAll())),new yi(e,this.blueprint,{clickButton:re.mouseClickButton,exitAnyButton:!0,moveEverywhere:!0}),new vi(e,this.blueprint,{clickButton:re.mouseRightClickButton,exitAnyButton:!1,moveEverywhere:!0}),new wi(e,this.blueprint),new fi(e,this.blueprint),new bi(e,this.blueprint)]}render(){return G`Zoom ${0==this.blueprint.zoom?"1:1":(this.blueprint.zoom>0?"+":"")+this.blueprint.zoom}`}firstUpdated(e){super.firstUpdated(e),this.headerElement=this.blueprint.querySelector(".ueb-viewport-header"),this.overlayElement=this.blueprint.querySelector(".ueb-viewport-overlay"),this.viewportElement=this.blueprint.querySelector(".ueb-viewport-body"),this.selectorElement=this.blueprint.querySelector("ueb-selector"),this.gridElement=this.viewportElement.querySelector(".ueb-grid"),this.linksContainerElement=this.blueprint.querySelector("[data-links]"),this.linksContainerElement.append(...this.blueprint.getLinks()),this.nodesContainerElement=this.blueprint.querySelector("[data-nodes]"),this.nodesContainerElement.append(...this.blueprint.getNodes()),this.viewportElement.scroll(re.expandGridSize,re.expandGridSize)}willUpdate(e){super.willUpdate(e),this.headerElement&&e.has("zoom")&&(this.headerElement.classList.add("ueb-zoom-changed"),this.headerElement.addEventListener("animationend",(()=>this.headerElement.classList.remove("ueb-zoom-changed"))))}updated(e){if(super.updated(e),(e.has("scrollX")||e.has("scrollY"))&&this.viewportElement.scroll(this.blueprint.scrollX,this.blueprint.scrollY),e.has("zoom")){this.blueprint.style.setProperty("--ueb-scale",this.blueprint.getScale());const t=e.get("zoom"),i=Math.min(t,this.blueprint.zoom),s=Math.max(t,this.blueprint.zoom),n=ae.range(i,s),r=e=>`ueb-zoom-${e}`;te<0)).map(r)),this.blueprint.classList.add(...n.filter((e=>e>0)).map(r))):(this.blueprint.classList.remove(...n.filter((e=>e>0)).map(r)),this.blueprint.classList.add(...n.filter((e=>e<0)).map(r)))}}getCommentNodes(e=!1){return this.blueprint.querySelectorAll(`ueb-node[data-type="${re.paths.comment}"]${e?'[data-selected="true"]':""}, ueb-node[data-type="${re.paths.materialGraphNodeComment}"]${e?'[data-selected="true"]':""}`)}getPin(e){return this.blueprint.querySelector(`ueb-node[data-title="${e.objectName}"] ueb-pin[data-id="${e.pinGuid}"]`)}getCopyInputObject(){return this.#gt}getPasteInputObject(){return this.#bt}getZoomInputObject(){return this.#lt}isPointVisible(e,t){return!1}gridTopVisibilityBoundary(){return this.blueprint.scaleCorrect(this.blueprint.scrollY)-this.blueprint.translateY}gridRightVisibilityBoundary(){return this.gridLeftVisibilityBoundary()+this.blueprint.scaleCorrect(this.viewportSize[0])}gridBottomVisibilityBoundary(){return this.gridTopVisibilityBoundary()+this.blueprint.scaleCorrect(this.viewportSize[1])}gridLeftVisibilityBoundary(){return this.blueprint.scaleCorrect(this.blueprint.scrollX)-this.blueprint.translateX}centerViewport(e=0,t=0,i=!0){const s=this.gridLeftVisibilityBoundary()+this.blueprint.scaleCorrect(this.viewportSize[0]/2),n=this.gridTopVisibilityBoundary()+this.blueprint.scaleCorrect(this.viewportSize[1]/2);this.blueprint.scrollDelta(this.blueprint.scaleCorrectReverse(e-s),this.blueprint.scaleCorrectReverse(t-n),i)}centerContentInViewport(e=!0){let t=0,i=0,s=Number.MAX_SAFE_INTEGER,n=Number.MIN_SAFE_INTEGER,r=Number.MAX_SAFE_INTEGER,a=Number.MIN_SAFE_INTEGER;const o=this.blueprint.getNodes();for(const e of o)t+=e.leftBoundary()+e.rightBoundary(),i+=e.topBoundary()+e.bottomBoundary(),s=Math.min(s,e.leftBoundary()),n=Math.max(n,e.rightBoundary()),r=Math.min(r,e.topBoundary()),a=Math.max(a,e.bottomBoundary());t=Math.round(n-s<=this.viewportSize[0]?(n+s)/2:t/(2*o.length)),i=Math.round(a-r<=this.viewportSize[1]?(a+r)/2:i/(2*o.length)),this.centerViewport(t,i,e)}}class Ei extends oe{static properties={selecting:{type:Boolean,attribute:"data-selecting",reflect:!0,converter:ke.booleanConverter},scrolling:{type:Boolean,attribute:"data-scrolling",reflect:!0,converter:ke.booleanConverter},focused:{type:Boolean,attribute:"data-focused",reflect:!0,converter:ke.booleanConverter},zoom:{type:Number,attribute:"data-zoom",reflect:!0},scrollX:{type:Number,attribute:!1},scrollY:{type:Number,attribute:!1},additionalX:{type:Number,attribute:!1},additionalY:{type:Number,attribute:!1},translateX:{type:Number,attribute:!1},translateY:{type:Number,attribute:!1}};static nodeBoundariesSupplier=e=>({primaryInf:e.leftBoundary(!0),primarySup:e.rightBoundary(!0),secondaryInf:e.topBoundary(!0),secondarySup:e.bottomBoundary(!0)});static nodeSelectToggleFunction=(e,t)=>{e.setSelected(t)};#vt=0;#ft=0;nodes=[];links=[];nodesNames=new Map;mousePosition=[0,0];waitingExpandUpdate=!1;constructor(){super(),this.selecting=!1,this.scrolling=!1,this.focused=!1,this.zoom=0,this.scrollX=re.expandGridSize,this.scrollY=re.expandGridSize,this.translateX=re.expandGridSize,this.translateY=re.expandGridSize,super.initialize(new ui,new Si)}initialize(){}getGridDOMElement(){return this.template.gridElement}getScroll(){return[this.scrollX,this.scrollY]}setScroll(e,t){this.scrollX=e,this.scrollY=t}scrollDelta(e=0,t=0,i=!1,s=re.smoothScrollTime){if(i){let i=[0,0];this.#vt&&cancelAnimationFrame(this.#vt),this.#ft&&cancelAnimationFrame(this.#ft),ae.animate(0,e,s,(e=>{this.scrollDelta(e-i[0],0,!1),i[0]=e}),(e=>this.#vt=e)),ae.animate(0,t,s,(e=>{this.scrollDelta(0,e-i[1],!1),i[1]=e}),(e=>this.#ft=e))}else{const i=[2*re.expandGridSize,2*re.expandGridSize];let s=this.getScroll(),n=[s[0]+e,s[1]+t],r=[0,0];for(let e=0;e<2;++e)n[e]i[e]-re.gridExpandThreshold*re.expandGridSize&&(r[e]=1);0==r[0]&&0==r[1]||this.seamlessExpand(r[0],r[1]),s=this.getScroll(),n=[s[0]+e,s[1]+t],this.setScroll(n[0],n[1])}}scrollCenter(e=!1){const t=this.getScroll(),i=[this.translateX-t[0],this.translateY-t[1]],s=this.getViewportSize().map((e=>e/2)),n=[i[0]-s[0],i[1]-s[1]];this.scrollDelta(n[0],n[1],e)}getViewportSize(){return[this.template.viewportElement.clientWidth,this.template.viewportElement.clientHeight]}getScrollMax(){return[this.template.viewportElement.scrollWidth-this.template.viewportElement.clientWidth,this.template.viewportElement.scrollHeight-this.template.viewportElement.clientHeight]}snapToGrid(e,t){return ae.snapToGrid(e,t,re.gridSize)}seamlessExpand(e,t){e=Math.round(e),t=Math.round(t);let i=this.getScale();[e,t]=[-e*re.expandGridSize,-t*re.expandGridSize],0!=e&&(this.scrollX+=e,e/=i),0!=t&&(this.scrollY+=t,t/=i),this.translateX+=e,this.translateY+=t}progressiveSnapToGrid(e){return re.expandGridSize*Math.round(e/re.expandGridSize+.5*Math.sign(e))}getZoom(){return this.zoom}setZoom(e,t){if((e=ae.clamp(e,re.minZoom,re.maxZoom))==this.zoom)return;let i=this.getScale();if(this.zoom=e,t){t[0]+=this.translateX,t[1]+=this.translateY;let e=this.getScale()/i,s=[e*t[0],e*t[1]];this.scrollDelta((s[0]-t[0])*i,(s[1]-t[1])*i)}}getScale(){return re.scale[this.getZoom()]}scaleCorrect(e){return e/this.getScale()}scaleCorrectReverse(e){return e*this.getScale()}compensateTranslation(e,t){return[e-=this.translateX,t-=this.translateY]}getNodes(e=!1,[t,i,s,n]=[Number.MIN_SAFE_INTEGER,Number.MAX_SAFE_INTEGER,Number.MAX_SAFE_INTEGER,Number.MIN_SAFE_INTEGER]){let r=this.nodes;return e&&(r=r.filter((e=>e.selected))),(t>Number.MIN_SAFE_INTEGER||iNumber.MIN_SAFE_INTEGER)&&(r=r.filter((e=>e.topBoundary()>=t&&e.rightBoundary()<=i&&e.bottomBoundary()<=s&&e.leftBoundary()>=n))),r}getCommentNodes(e=!1){let t=[...this.template.getCommentNodes(e)];return 0===t.length&&(t=this.nodes.filter((t=>t.getType()===re.paths.comment&&(!e||t.selected)))),t}getPin(e){let t=this.template.getPin(e);return t&&t.nodeElement.getNodeName()==e.objectName.toString()||(t=[...this.nodes.find((t=>e.objectName.toString()==t.getNodeName()))?.getPinElements()??[]].find((t=>e.pinGuid.toString()==t.getPinId().toString()))),t}getLinks(e=null,t=null){if(null==e!=(null==t)){const i=e??t;return this.links.filter((e=>e.source==i||e.destination==i))}return null!=e&&null!=t?this.links.filter((i=>i.source==e&&i.destination==t||i.source==t&&i.destination==e)):this.links}getLink(e,t,i=!1){return this.links.find((s=>s.source==e&&s.destination==t||!i&&s.source==t&&s.destination==e))}selectAll(){this.getNodes().forEach((e=>Ei.nodeSelectToggleFunction(e,!0)))}unselectAll(){this.getNodes().forEach((e=>Ei.nodeSelectToggleFunction(e,!1)))}addGraphElement(...e){const t=e=>{const i=e.currentTarget;i.removeEventListener(re.removeEventName,t);const[s,n]=i instanceof li?[this.nodes,i.entity]:i instanceof Bt?[this.links]:null,r=s?.indexOf(i);if(r>=0){const e=s.pop();re.entity.exported=!0));continue}const e=i.entity.getObjectName(),s=this.entity.getHomonymObjectEntity(i.entity);if(s){const t=this.entity.takeFreeName(e);s.Name=new s.Name.constructor(t)}this.nodes.push(i),this.entity.addObjectEntity(i.entity),i.addEventListener(re.removeEventName,t),this.template.nodesContainerElement?.appendChild(i)}else i instanceof Bt&&!this.links.includes(i)&&(this.links.push(i),i.addEventListener(re.removeEventName,t),this.template.linksContainerElement&&!this.template.linksContainerElement.contains(i)&&this.template.linksContainerElement.appendChild(i));e.filter((e=>e instanceof li)).forEach((t=>t.sanitizeLinks(e))),e.filter((e=>e instanceof li&&e.getType()==re.paths.comment)).forEach((e=>e.updateComplete.then((()=>e.template.manageNodesBind()))))}removeGraphElement(...e){for(let t of e){if(t.closest("ueb-blueprint")!==this)return;t.remove()}}setFocused(e=!0){if(this.focused==e)return;let t=new CustomEvent(e?re.focusEventName.begin:re.focusEventName.end);this.focused=e,this.focused||this.unselectAll(),this.dispatchEvent(t)}acknowledgeEditText(e){const t=new CustomEvent(e?re.editTextEventName.begin:re.editTextEventName.end);this.dispatchEvent(t)}}customElements.define("ueb-blueprint",Ei);class Ci extends zt{#yt;get locationChangeCallback(){return this.#yt}set locationChangeCallback(e){this.#yt=e}movementSpace;movementSpaceSize=[0,0];firstUpdated(e){super.firstUpdated(e),this.movementSpace=this.element.parentElement}setup(){super.setup();const e=this.movementSpace.getBoundingClientRect();this.movementSpaceSize=[e.width,e.height]}createDraggableObject(){return new Vt(this.element,this.blueprint,{draggableElement:this.movementSpace,ignoreTranslateCompensate:!0,moveEverywhere:!0,movementSpace:this.movementSpace,repositionOnClick:!0,stepSize:1})}adjustLocation(e,t){return this.locationChangeCallback?.(e,t),[e,t]}}class Ni extends Ci{adjustLocation(e,t){const i=Math.round(this.movementSpaceSize[0]/2);e-=i,t=-(t-i);let[s,n]=ae.getPolarCoordinates(e,t);return s=Math.min(s,i),[e,t]=ae.getCartesianCoordinates(s,n),this.locationChangeCallback?.(e/i,t/i),[e=Math.round(e+i),t=Math.round(-t+i)]}}class xi extends Gt{windowElement;setup(){super.setup(),this.windowElement=this.closest("ueb-window")}setLocation(e,t){super.setLocation(...this.template.adjustLocation(e,t))}}class Pi extends xi{constructor(){super(),super.initialize({},new Ni)}static newObject(){return new Pi}initialize(){}}class ki extends Ci{adjustLocation(e,t){return e=ae.clamp(e,0,this.movementSpaceSize[0]),t=ae.clamp(t,0,this.movementSpaceSize[1]),this.locationChangeCallback?.(e/this.movementSpaceSize[0],1-t/this.movementSpaceSize[1]),[e,t]}}class Ai extends xi{constructor(){super(),super.initialize({},new ki)}static newObject(){return new Ai}initialize(){}}class Li extends Ht{constructor(e,t,i={}){i.consumeEvent=!0,super(e,t,i)}}class Mi extends Tt{#wt;#St;#Et=e=>this.element.selectedOption=e.target.selectedOptions[0].value;render(){return G`${this.element.options.map((([e,t])=>G`${t}`))} ${this.element.selectedOption}`}firstUpdated(e){super.firstUpdated(e),this.#wt=this.element.querySelector("select:first-child"),this.#St=this.element.querySelector("select:last-child");const t=new Event("input",{bubbles:!0});this.#wt.dispatchEvent(t)}updated(e){super.updated(e);const t=this.#St.getBoundingClientRect();this.element.style.setProperty("--ueb-dropdown-width",t.width+"px")}createInputObjects(){return[...super.createInputObjects(),new Li(this.element,this.blueprint)]}setSelectedValue(e){this.element.querySelector(`option[value="${e}"]`).defaultSelected=!0}getSelectedValue(){return this.#wt.value}}class Ii extends oe{static properties={...super.properties,options:{type:Object},selectedOption:{type:String}};constructor(){super(),super.initialize({},new Mi),this.options=[],this.selectedOption=""}static newObject(e){return new Ii}initialize(){}getValue(){return this.template.getSelectedValue()}}class Ti extends Tt{#Ct=()=>{this.blueprint.acknowledgeEditText(!0),this.element.selectOnFocus&&getSelection().selectAllChildren(this.element)};#Nt=()=>{this.blueprint.acknowledgeEditText(!1),getSelection().removeAllRanges()};#xt=e=>e.target.querySelectorAll("br").forEach((e=>e.remove()));#Pt=e=>{"Enter"!=e.code||e.shiftKey||e.target.blur()};initialize(e){super.initialize(e),this.element.classList.add("ueb-pin-input-content"),this.element.setAttribute("role","textbox"),this.element.contentEditable="true"}firstUpdated(e){super.firstUpdated(e);const t=new Event("input",{bubbles:!0});this.element.dispatchEvent(t)}createInputObjects(){return[...super.createInputObjects(),new Li(this.element,this.blueprint)]}setup(){super.setup(),this.element.addEventListener("focus",this.#Ct),this.element.addEventListener("focusout",this.#Nt),this.element.singleLine&&this.element.addEventListener("input",this.#xt),this.element.blurOnEnter&&this.element.addEventListener("keydown",this.#Pt)}cleanup(){super.cleanup(),this.element.removeEventListener("focus",this.#Ct),this.element.removeEventListener("focusout",this.#Nt),this.element.removeEventListener("input",this.#xt),this.element.removeEventListener("keydown",this.#Pt)}}class Oi extends oe{static properties={...super.properties,singleLine:{type:Boolean,attribute:"data-single-line",converter:ke.booleanConverter,reflect:!0},selectOnFocus:{type:Boolean,attribute:"data-select-focus",converter:ke.booleanConverter,reflect:!0},blurOnEnter:{type:Boolean,attribute:"data-blur-enter",converter:ke.booleanConverter,reflect:!0}};constructor(){super(),this.singleLine=!1,this.selectOnFocus=!0,this.blurOnEnter=!0,super.initialize({},new Ti)}static newObject(){return new Oi}initialize(){}}class $i extends Jt{#kt;#At=()=>{const e=this.element.getDefaultValue(!0);e.value=this.#kt.checked,this.element.setDefaultValue(e)};firstUpdated(e){super.firstUpdated(e),this.#kt=this.element.querySelector(".ueb-pin-input")}setup(){super.setup(),this.#kt?.addEventListener("change",this.#At)}cleanup(){super.cleanup(),this.#kt?.removeEventListener("change",this.#At)}createInputObjects(){return[...super.createInputObjects(),new Li(this.#kt,this.blueprint)]}renderInput(){return G``}}class Di extends Jt{static singleLineInput=!1;static selectOnFocus=!0;static saveEachInputChange=!1;#Lt;get inputWrapper(){return this.#Lt}#Mt;static stringFromInputToUE(e){return e.replace(/(?=\n\s*)\n$/,"")}static stringFromUEToInput(e){return e.replaceAll(/(?:\r|(?<=(?:^|[^\\])(?:\\\\)*)\\r)(?=\n)/g,"").replace(/(?<=\n\s*)$/,"\n")}#It=()=>this.setInputs(this.getInputs(),!0);#Tt=e=>this.#Ot(e.target);#Ot(e){if(this.element.querySelector(".ueb-pin-name")?.getBoundingClientRect().width<20)return;const t=this.blueprint.scaleCorrect(this.#Lt.getBoundingClientRect().width)+this.nameWidth,i=this.element.classList.contains("ueb-pin-input-wrap");!i&&t>re.pinInputWrapWidth?this.element.classList.add("ueb-pin-input-wrap"):i&&t<=re.pinInputWrapWidth&&this.element.classList.remove("ueb-pin-input-wrap")}firstUpdated(e){super.firstUpdated(e);this.constructor.canWrapInput&&this.isInputRendered()&&(this.element.addEventListener("input",this.#Tt),this.nameWidth=this.blueprint.scaleCorrect(this.element.querySelector(".ueb-pin-name")?.getBoundingClientRect().width??0)),this.#Lt=this.element.querySelector(".ueb-pin-input-wrapper"),this.#Mt=[...this.element.querySelectorAll("ueb-input")]}setup(){super.setup();const e=this.constructor;e.saveEachInputChange?this.element.addEventListener("input",this.#It):this.element.addEventListener("focusout",this.#It),e.canWrapInput&&this.isInputRendered()&&(this.element.addEventListener("input",this.#Tt),this.element.nodeElement.addEventListener(re.nodeReflowEventName,this.#Tt))}cleanup(){super.cleanup(),this.element.nodeElement.removeEventListener(re.nodeReflowEventName,this.#Tt),this.element.removeEventListener("input",this.#Tt),this.element.removeEventListener("input",this.#It),this.element.removeEventListener("focusout",this.#It)}getInput(){return this.getInputs().reduce(((e,t)=>e+t),"")}getInputs(){return this.#Mt.map((e=>ae.clearHTMLWhitespace(e.innerHTML)))}setInputs(e=[],t=!0){this.#Mt.forEach(this.constructor.singleLineInput?(t,i)=>t.innerText=e[i]:(t,i)=>t.innerText=e[i].replaceAll("\n","")),t&&this.setDefaultValue(e.map((e=>Di.stringFromInputToUE(e))),e),this.element.requestUpdate(),this.element.nodeElement.acknowledgeReflow()}setDefaultValue(e=[],t=e){this.element.setDefaultValue(e.join(""))}renderInput(){const e=this.constructor,t=e.singleLineInput,i=e.selectOnFocus;return G``}}class Bi extends Jt{renderIcon(){return le.execPin}renderName(){let e=this.element.entity.PinName?.toString();if(this.element.entity.PinFriendlyName)e=this.element.entity.PinFriendlyName.toString();else if("execute"===e||"then"===e)return G``;return G`${this.element.getPinDisplayName()}`}}class Gi extends Di{static singleLineInput=!0;setInputs(e=[],t=!1){if(e&&0!=e.length||(e=[this.getInput()]),super.setInputs(e,!1),t){let i=[];for(const s of e){let e=parseFloat(s);isNaN(e)&&(e=0,t=!1),i.push(e)}this.setDefaultValue(i,e)}}setDefaultValue(e=[],t){const i=this.element.getDefaultValue();i.value=e[0],this.element.setDefaultValue(i),this.element.requestUpdate()}}class Hi extends Gi{renderInput(){return G``}} /** * @license * Copyright 2017 Google LLC * SPDX-License-Identifier: BSD-3-Clause - */const Hi = 1; class Vi { constructor(e) { } get _$AU() { return this._$AM._$AU } _$AT(e, t, i) { this._$Ct = e, this._$AM = t, this._$Ci = i } _$AS(e, t) { return this.update(e, t) } update(e, t) { return this.render(...t) } } + */const Vi=1;class Ri{constructor(e){}get _$AU(){return this._$AM._$AU}_$AT(e,t,i){this._$Ct=e,this._$AM=t,this._$Ci=i}_$AS(e,t){return this.update(e,t)}update(e,t){return this.render(...t)}} /** * @license * Copyright 2018 Google LLC * SPDX-License-Identifier: BSD-3-Clause - */const Ri = "important", _i = " !" + Ri, zi = (e => (...t) => ({ _$litDirective$: e, values: t }))(class extends Vi { constructor(e) { var t; if (super(e), e.type !== Hi || "style" !== e.name || (null === (t = e.strings) || void 0 === t ? void 0 : t.length) > 2) throw Error("The `styleMap` directive must be used in the `style` attribute and must be the only part in the attribute.") } render(e) { return Object.keys(e).reduce(((t, i) => { const s = e[i]; return null == s ? t : t + `${i = i.includes("-") ? i : i.replace(/(?:^(webkit|moz|ms|o)|)(?=[A-Z])/g, "-$&").toLowerCase()}:${s};` }), "") } update(e, [t]) { const { style: i } = e.element; if (void 0 === this.ht) { this.ht = new Set; for (const e in t) this.ht.add(e); return this.render(t) } this.ht.forEach((e => { null == t[e] && (this.ht.delete(e), e.includes("-") ? i.removeProperty(e) : i[e] = "") })); for (const e in t) { const s = t[e]; if (null != s) { this.ht.add(e); const t = "string" == typeof s && s.endsWith(_i); e.includes("-") || t ? i.setProperty(e, t ? s.slice(0, -11) : s, t ? Ri : "") : i[e] = s } } return H } }); class Fi extends Ft { toggleAdvancedDisplayHandler; getDraggableElement() { return this.element.querySelector(".ueb-window-top") } createDraggableObject() { return new Vt(this.element, this.blueprint, { draggableElement: this.getDraggableElement(), ignoreScale: !0, ignoreTranslateCompensate: !1, movementSpace: this.blueprint, stepSize: 1 }) } setup() { const e = this.blueprint.template.gridLeftVisibilityBoundary(), t = this.blueprint.template.gridTopVisibilityBoundary(); this.element.locationX = this.blueprint.scaleCorrectReverse(this.blueprint.mousePosition[0] - e), this.element.locationY = this.blueprint.scaleCorrectReverse(this.blueprint.mousePosition[1] - t), this.element.updateComplete.then((() => { const e = this.blueprint.getBoundingClientRect(); this.element.locationX + this.element.sizeX > e.width && (this.element.locationX = e.width - this.element.sizeX), this.element.locationX = Math.max(0, this.element.locationX), this.element.locationY + this.element.sizeY > e.height && (this.element.locationY = e.height - this.element.sizeY), this.element.locationY = Math.max(0, this.element.locationY) })) } render() { return G`${this.renderWindowName()} this.element.remove()}">${le.close}${this.renderContent()}` } renderWindowName() { return G`Window` } renderContent() { return G`` } apply() { this.element.dispatchEvent(new CustomEvent(re.windowApplyEventName)), this.element.remove() } cancel() { this.element.dispatchEvent(new CustomEvent(re.windowCancelEventName)), this.element.remove() } } class ji extends Fi { #$t; #Bt; #Gt; #Ht; #Vt; #Rt; #_t; #zt; #Ft; #jt; #Ut = e => { const t = ae.clearHTMLWhitespace(e.target.innerHTML), i = parseInt(t, 16); isNaN(i) || (this.color.setFromRGBANumber(i), this.element.requestUpdate()) }; #Yt = e => { const t = ae.clearHTMLWhitespace(e.target.innerHTML), i = parseInt(t, 16); isNaN(i) || (this.color.setFromSRGBANumber(i), this.element.requestUpdate()) }; #Kt = e => t => { "Enter" == t.code && (t.preventDefault(), e(t)) }; #Xt = new Ie; get color() { return this.#Xt } set color(e) { e.toNumber() != this.color?.toNumber() && (this.element.requestUpdate("color", this.#Xt), this.#Xt = e) } #qt = new Ie; get fullColor() { return this.#qt } #Zt; get initialColor() { return this.#Zt } #Wt = new Ie; #Qt(e, t, i = !1) { const s = this.color.toRGBAString(), n = `${s.substring(0, 2 * e)}${t}${s.substring(2 + 2 * e)}`; return i ? `${n.substring(0, 6)}FF` : n } initialize(e) { super.initialize(e), this.#Zt = this.element.windowOptions.getPinColor(), this.color.setFromHSVA(this.initialColor.H.value, this.initialColor.S.value, this.initialColor.V.value, this.initialColor.A.value), this.fullColor.setFromHSVA(this.color.H.value, 1, 1, 1) } firstUpdated(e) { this.#$t = this.element.querySelector(".ueb-color-picker-wheel ueb-color-handler"), this.#Bt = this.element.querySelector(".ueb-color-picker-saturation ueb-ui-slider"), this.#Gt = this.element.querySelector(".ueb-color-picker-value ueb-ui-slider"), this.#Ht = this.element.querySelector(".ueb-color-picker-r ueb-ui-slider"), this.#Vt = this.element.querySelector(".ueb-color-picker-g ueb-ui-slider"), this.#Rt = this.element.querySelector(".ueb-color-picker-b ueb-ui-slider"), this.#_t = this.element.querySelector(".ueb-color-picker-a ueb-ui-slider"), this.#zt = this.element.querySelector(".ueb-color-picker-h ueb-ui-slider"), this.#Ft = this.element.querySelector(".ueb-color-picker-s ueb-ui-slider"), this.#jt = this.element.querySelector(".ueb-color-picker-v ueb-ui-slider"), this.#$t.template.locationChangeCallback = (e, t) => { this.color.setFromWheelLocation(e, t, this.color.V.value, this.color.A.value), this.fullColor.setFromHSVA(this.color.H.value, 1, 1, 1), this.element.requestUpdate() }, this.#Bt.template.locationChangeCallback = (e, t) => { this.color.setFromHSVA(this.color.H.value, t, this.color.V.value, this.color.A.value), this.element.requestUpdate() }, this.#Gt.template.locationChangeCallback = (e, t) => { this.color.setFromHSVA(this.color.H.value, this.color.S.value, t, this.color.A.value), this.element.requestUpdate() }, this.#Ht.template.locationChangeCallback = (e, t) => { this.color.setFromRGBA(e, this.color.G.value, this.color.B.value, this.color.A.value), this.element.requestUpdate() }, this.#Vt.template.locationChangeCallback = (e, t) => { this.color.setFromRGBA(this.color.R.value, e, this.color.B.value, this.color.A.value), this.element.requestUpdate() }, this.#Rt.template.locationChangeCallback = (e, t) => { this.color.setFromRGBA(this.color.R.value, this.color.G.value, e, this.color.A.value), this.element.requestUpdate() }, this.#_t.template.locationChangeCallback = (e, t) => { this.color.setFromRGBA(this.color.R.value, this.color.G.value, this.color.B.value, e), this.element.requestUpdate() }, this.#zt.template.locationChangeCallback = (e, t) => { this.color.setFromHSVA(e, this.color.S.value, this.color.V.value, this.color.A.value), this.element.requestUpdate() }, this.#Ft.template.locationChangeCallback = (e, t) => { this.color.setFromHSVA(this.color.H.value, e, this.color.V.value, this.color.A.value), this.element.requestUpdate() }, this.#jt.template.locationChangeCallback = (e, t) => { this.color.setFromHSVA(this.color.H.value, this.color.S.value, e, this.color.A.value), this.element.requestUpdate() } } renderSlider(e) { let t = "", i = 0, s = ""; const n = e => `linear-gradient(to right, #${this.#Qt(e, "00", !0)}, #${this.#Qt(e, "ff", !0)})`; switch (e) { case 0: t = "r", i = this.color.R.value, s = n(e); break; case 1: t = "g", i = this.color.G.value, s = n(e); break; case 2: t = "b", i = this.color.B.value, s = n(e); break; case 3: t = "a", i = this.color.A.value, s = `${re.alphaPattern}, ${n(e)}`; break; case 4: t = "h", i = 360 * this.color.H.value, s = "linear-gradient(to right, #f00 0%, #ff0 16.666%, #0f0 33.333%, #0ff 50%, #00f 66.666%, #f0f 83.333%, #f00 100%)"; break; case 5: t = "s", i = this.color.S.value, s = `linear-gradient(to right,#${this.#Wt.setFromHSVA(this.color.H.value, 0, this.color.V.value, 1), this.#Wt.toRGBAString()},#${this.#Wt.setFromHSVA(this.color.H.value, 1, this.color.V.value, 1), this.#Wt.toRGBAString()})`; break; case 6: t = "v", i = this.color.V.value, s = `linear-gradient(to right, #000, #${this.fullColor.toRGBAString()})` }return s = `background: ${s};`, G`${t.toUpperCase()}` } renderContent() { const e = 2 * this.color.H.value * Math.PI, t = { "--ueb-color-r": this.color.R.toString(), "--ueb-color-g": this.color.G.toString(), "--ueb-color-b": this.color.B.toString(), "--ueb-color-a": this.color.A.toString(), "--ueb-color-h": this.color.H.toString(), "--ueb-color-s": this.color.S.toString(), "--ueb-color-v": this.color.V.toString(), "--ueb-color-wheel-x": 100 * (this.color.S.value * Math.cos(e) * .5 + .5) + "%", "--ueb-color-wheel-y": 100 * (this.color.S.value * Math.sin(e) * .5 + .5) + "%" }, i = this.color.toRGBAString(), s = this.color.toSRGBAString(), n = this.fullColor.toRGBAString(); return G`OldNewAdvanced${this.renderSlider(0)} ${this.renderSlider(1)} ${this.renderSlider(2)} ${this.renderSlider(3)}${this.renderSlider(4)} ${this.renderSlider(5)} ${this.renderSlider(6)}Hex LinearHex sRGB this.apply()}">${re.windowApplyButtonText} this.cancel()}">${re.windowCancelButtonText}` } renderWindowName() { return G`${re.colorWindowName}` } } class Ui extends Bi { #Jt() { return De.printNumber(this.element.getDefaultValue()?.X.valueOf() ?? 0) } #ei() { return De.printNumber(this.element.getDefaultValue()?.Y.valueOf() ?? 0) } setDefaultValue(e, t) { const i = this.element.getDefaultValue(!0); i.X.value = e[0], i.Y.value = e[1], this.element.setDefaultValue(i) } renderInput() { return G`XY` } } class Yi extends Bi { #Jt() { return De.printNumber(this.element.getDefaultValue()?.X.valueOf() ?? 0) } #ei() { return De.printNumber(this.element.getDefaultValue()?.Y.valueOf() ?? 0) } #ti() { return De.printNumber(this.element.getDefaultValue()?.Z.valueOf() ?? 0) } setDefaultValue(e, t) { const i = this.element.getDefaultValue(!0); if (!(i instanceof $e)) throw new TypeError("Expected DefaultValue to be a VectorEntity"); i.X.value = e[0], i.Y.value = e[1], i.Z.value = e[2], this.element.requestUpdate("DefaultValue", i) } renderInput() { return G`XYZ` } } const Ki = { bool: Oi, byte: Gi, enum: class extends Di { static saveEachInputChange = !0; #ii; #si = []; setup() { super.setup(); const e = this.element.nodeElement.entity.EnumEntries?.valueOf(); this.#si = e?.map((e => ("" === e.valueOf() && (e = new qe("None")), [e, this.element.nodeElement.getPinEntities().find((t => e === t.PinName))?.PinFriendlyName.toString() ?? e]))) ?? re.CommonEnums[this.element.entity.getSubCategory()]?.map((e => e instanceof Array ? e : [e, ae.formatStringName(e)])) ?? []; const t = this.element.getDefaultValue().toString(); this.#si.find((([e, i]) => e === t)) || this.#si.push([t, ae.formatStringName(t)]), this.element.requestUpdate() } renderInput() { return G`` } firstUpdated(e) { super.firstUpdated(e), this.#ii = this.element.querySelector("ueb-dropdown") } getInputs() { return [this.#ii.getValue()] } setDefaultValue(e = [], t) { const i = this.element.getDefaultValue(); i.value = e[0], this.element.setDefaultValue(i), this.element.requestUpdate() } }, int: Gi, int64: class extends Bi { setDefaultValue(e = [], t) { const i = this.element.getDefaultValue(); i.value = BigInt(e[0]), this.element.setDefaultValue(i), this.element.requestUpdate() } renderInput() { return G`` } }, MUTABLE_REFERENCE: class extends Jt { renderIcon() { return le.referencePin } }, name: class extends Di { static singleLineInput = !0 }, real: class extends Bi { renderInput() { return G`` } }, rg: Ui, string: class extends Di { }, [re.paths.linearColor]: class extends Jt { #ni; #ri = e => { e.preventDefault(), this.blueprint.setFocused(!0), this.#ni = Ae.getConstructor("ueb-window").newObject({ type: new ji, windowOptions: { getPinColor: () => this.element.defaultValue, setPinColor: e => this.element.setDefaultValue(e) } }), this.blueprint.append(this.#ni); const t = () => { this.element.setDefaultValue(this.#ni.template.color) }, i = () => { this.#ni.removeEventListener(re.windowApplyEventName, t), this.#ni.removeEventListener(re.windowCloseEventName, i), this.#ni = null }; this.#ni.addEventListener(re.windowApplyEventName, t), this.#ni.addEventListener(re.windowCloseEventName, i) }; renderInput() { return G`` } }, [re.paths.niagaraBool]: Oi, [re.paths.niagaraPosition]: Yi, [re.paths.rotator]: class extends Bi { #ai() { return De.printNumber(this.element.getDefaultValue()?.R.valueOf() ?? 0) } #oi() { return De.printNumber(this.element.getDefaultValue()?.P.valueOf() ?? 0) } #ei() { return De.printNumber(this.element.getDefaultValue()?.Y.valueOf() ?? 0) } setDefaultValue(e = [], t = e) { const i = this.element.getDefaultValue(!0); if (!(i instanceof ct)) throw new TypeError("Expected DefaultValue to be a RotatorEntity"); i.R.value = e[0], i.P.value = e[1], i.Y.value = e[2], this.element.requestUpdate("DefaultValue", i) } renderInput() { return G`XYZ` } }, [re.paths.vector]: Yi, [re.paths.vector2D]: Ui, [re.paths.vector3f]: Yi, [re.paths.vector4f]: class extends Bi { #Jt() { return De.printNumber(this.element.getDefaultValue()?.X.valueOf() ?? 0) } #ei() { return De.printNumber(this.element.getDefaultValue()?.Y.valueOf() ?? 0) } #ti() { return De.printNumber(this.element.getDefaultValue()?.Z.valueOf() ?? 0) } #li() { return De.printNumber(this.element.getDefaultValue()?.W.valueOf() ?? 0) } setDefaultValue(e, t) { const i = this.element.getDefaultValue(!0); if (!(i instanceof dt)) throw new TypeError("Expected DefaultValue to be a Vector4DEntity"); i.X.value = e[0], i.Y.value = e[1], i.Z.value = e[2], i.W.value = e[3], this.element.requestUpdate("DefaultValue", i) } renderInput() { return G`XYZW` } } }; function Xi(e) { if ("Array" === e.PinType.ContainerType?.toString()) return Jt; if (e.PinType.bIsReference?.valueOf() && !e.PinType.bIsConst?.valueOf()) return Ki.MUTABLE_REFERENCE; const t = e.getType(); return "exec" === t ? $i : (e.isInput() ? Ki[t] : Jt) ?? Jt } class qi extends oe { static properties = { pinId: { type: ze, converter: { fromAttribute: (e, t) => e ? ze.grammar.parse(e) : null, toAttribute: (e, t) => e?.toString() }, attribute: "data-id", reflect: !0 }, pinType: { type: String, attribute: "data-type", reflect: !0 }, advancedView: { type: String, attribute: "data-advanced-view", reflect: !0 }, color: { type: Ie, converter: { fromAttribute: (e, t) => e ? Ie.getLinearColorFromAnyFormat().parse(e) : null, toAttribute: (e, t) => e ? Ie.printLinearColor(e) : null }, attribute: "data-color", reflect: !0 }, defaultValue: { type: String, attribute: !1 }, isLinked: { type: Boolean, converter: ke.booleanConverter, attribute: "data-linked", reflect: !0 }, pinDirection: { type: String, attribute: "data-direction", reflect: !0 }, connectable: { type: Boolean, converter: ke.booleanConverter, attribute: "data-connectable", reflect: !0 } }; nodeElement; static newObject(e = new bt, t = new (Xi(e)), i = void 0) { const s = new qi; return s.initialize(e, t, i), s } initialize(e = new bt, t = new (Xi(e)), i = void 0) { this.nodeElement = i, this.advancedView = e.bAdvancedView?.valueOf(), this.isLinked = !1, this.connectable = !e.bNotConnectable?.valueOf(), super.initialize(e, t), this.pinId = this.entity.PinId, this.pinType = this.entity.getType(), this.defaultValue = this.entity.getDefaultValue(), this.color = qi.properties.color.converter.fromAttribute(this.getColor().toString()), this.pinDirection = e.isInput() ? "input" : e.isOutput() ? "output" : "hidden" } setup() { super.setup(), this.nodeElement = this.closest("ueb-node") } createPinReference() { return new rt(new We(this.nodeElement.getNodeName()), this.getPinId()) } getPinId() { return this.entity.PinId } getPinName() { return this.entity.PinName?.toString() ?? "" } getPinDisplayName() { return this.entity.pinTitle() } getColor() { return this.entity.pinColor() } isInput() { return this.entity.isInput() } isOutput() { return this.entity.isOutput() } getLinkLocation() { return this.template.getLinkLocation() } getNodeElement() { return this.nodeElement } getLinks() { return this.entity.LinkedTo?.valueOf() ?? [] } getDefaultValue(e = !1) { return this.defaultValue = this.entity.getDefaultValue(e) } setDefaultValue(e) { this.entity.DefaultValue = e, this.defaultValue = e, this.entity.recomputesNodeTitleOnChange && this.nodeElement?.computeNodeDisplayName() } sanitizeLinks(e = []) { this.entity.LinkedTo = new bt.attributes.LinkedTo(this.entity.LinkedTo?.valueOf().filter((t => { let i = this.blueprint.getPin(t); if (i) { if (e.length && !e.includes(i.nodeElement)) return !1; let t = this.blueprint.getLink(this, i); t || (t = Ae.getConstructor("ueb-link").newObject(this, i), this.blueprint.addGraphElement(t)) } return i }))), this.isLinked = this.entity.isLinked() } linkTo(e) { const t = this.createPinReference(); !this.isLinked || !this.isOutput() || "exec" !== this.pinType && "exec" !== e.pinType || this.getLinks().some((e => t.equals(e))) || this.unlinkFromAll(), this.entity.linkTo(e.getNodeElement().getNodeName(), e.entity) && (this.isLinked = this.entity.isLinked(), this.nodeElement?.template.linksChanged(), this.entity.recomputesNodeTitleOnChange && this.nodeElement?.computeNodeDisplayName()) } unlinkFrom(e, t = !0) { this.entity.unlinkFrom(e.getNodeElement().getNodeName(), e.entity) && (this.isLinked = this.entity.isLinked(), this.nodeElement?.template.linksChanged(), t && this.blueprint.getLink(this, e)?.remove(), this.entity.recomputesNodeTitleOnChange && this.nodeElement?.computeNodeDisplayName()) } unlinkFromAll() { const e = this.getLinks().length; this.getLinks().map((e => this.blueprint.getPin(e))).forEach((e => this.unlinkFrom(e))), e && this.nodeElement?.template.linksChanged() } redirectLink(e, t) { const i = this.getLinks().findIndex((t => t.objectName.toString() == e.getNodeElement().getNodeName() && t.pinGuid.toString() == e.entity.PinId.toString())); return i >= 0 && (this.entity.LinkedTo.valueOf()[i] = t, !0) } } class Zi { constructor(e = e => e, t = null) { this.array = new Uint32Array(t), this.comparisonValueSupplier = e, this.length = 0, this.currentPosition = 0 } get(e) { return e >= 0 && e < this.length ? this.array[e] : null } getArray() { return this.array } getPosition(e) { let t = 0, i = this.length; for (; t < i;) { let s = Math.floor((t + i) / 2); this.comparisonValueSupplier(this.array[s]) < e ? t = s + 1 : i = s } return t } reserve(e) { if (this.array.length < e) { let t = new Uint32Array(e); t.set(this.array), this.array = t } } insert(e, t = null) { let i = this.getPosition(this.comparisonValueSupplier(e)); return (i < this.currentPosition || null != t && i == this.currentPosition && this.comparisonValueSupplier(e) < t) && ++this.currentPosition, this.shiftRight(i), this.array[i] = e, ++this.length, i } remove(e) { let t = this.getPosition(this.comparisonValueSupplier(e)); this.array[t] == e && this.removeAt(t) } removeAt(e) { return e < this.currentPosition && --this.currentPosition, this.shiftLeft(e), --this.length, e } getNext() { return this.currentPosition >= 0 && this.currentPosition < this.length ? this.get(this.currentPosition) : null } getNextValue() { return this.currentPosition >= 0 && this.currentPosition < this.length ? this.comparisonValueSupplier(this.get(this.currentPosition)) : Number.MAX_SAFE_INTEGER } getPrev() { return this.currentPosition > 0 ? this.get(this.currentPosition - 1) : null } getPrevValue() { return this.currentPosition > 0 ? this.comparisonValueSupplier(this.get(this.currentPosition - 1)) : Number.MIN_SAFE_INTEGER } shiftLeft(e, t = 1) { this.array.set(this.array.subarray(e + t), e) } shiftRight(e, t = 1) { this.array.set(this.array.subarray(e, -t), e + t) } } class Wi { constructor(e, t, i, s) { this.initialPosition = e, this.finalPosition = e, this.metadata = new Array(t.length), this.primaryOrder = new Zi((e => this.metadata[e].primaryBoundary)), this.secondaryOrder = new Zi((e => this.metadata[e].secondaryBoundary)), this.selectFunc = s, this.rectangles = t, this.primaryOrder.reserve(this.rectangles.length), this.secondaryOrder.reserve(this.rectangles.length), t.forEach(((e, t) => { let n = { primaryBoundary: this.initialPosition[0], secondaryBoundary: this.initialPosition[1], rectangle: t, onSecondaryAxis: !1 }; this.metadata[t] = n, s(e, !1); const r = i(e); this.initialPosition[1] < r.secondaryInf ? n.secondaryBoundary = r.secondaryInf : r.secondarySup < this.initialPosition[1] ? n.secondaryBoundary = r.secondarySup : n.onSecondaryAxis = !0, this.initialPosition[0] < r.primaryInf ? (n.primaryBoundary = r.primaryInf, this.primaryOrder.insert(t)) : r.primarySup < this.initialPosition[0] ? (n.primaryBoundary = r.primarySup, this.primaryOrder.insert(t)) : r.secondarySup < this.initialPosition[1] || this.initialPosition[1] < r.secondaryInf ? this.secondaryOrder.insert(t) : s(e, !0) })), this.primaryOrder.currentPosition = this.primaryOrder.getPosition(this.initialPosition[0]), this.secondaryOrder.currentPosition = this.secondaryOrder.getPosition(this.initialPosition[1]), this.computeBoundaries() } computeBoundaries() { this.boundaries = { primaryN: { v: this.primaryOrder.getPrevValue(), i: this.primaryOrder.getPrev() }, primaryP: { v: this.primaryOrder.getNextValue(), i: this.primaryOrder.getNext() }, secondaryN: { v: this.secondaryOrder.getPrevValue(), i: this.secondaryOrder.getPrev() }, secondaryP: { v: this.secondaryOrder.getNextValue(), i: this.secondaryOrder.getNext() } } } selectTo(e) { const t = [Math.sign(e[0] - this.initialPosition[0]), Math.sign(e[1] - this.initialPosition[1])], i = (i, s) => { if (this.metadata[i].onSecondaryAxis) this.selectFunc(this.rectangles[i], s); else if (s) { this.secondaryOrder.insert(i, e[1]); const s = this.metadata[i].secondaryBoundary; Math.sign(e[1] - s) == t[1] && Math.sign(s - this.initialPosition[1]) == t[1] && this.selectFunc(this.rectangles[i], !0) } else this.selectFunc(this.rectangles[i], !1), this.secondaryOrder.remove(i); this.computeBoundaries(), this.selectTo(e) }; e[0] < this.boundaries.primaryN.v ? (--this.primaryOrder.currentPosition, i(this.boundaries.primaryN.i, this.initialPosition[0] > this.boundaries.primaryN.v && e[0] < this.initialPosition[0])) : e[0] > this.boundaries.primaryP.v && (++this.primaryOrder.currentPosition, i(this.boundaries.primaryP.i, this.initialPosition[0] < this.boundaries.primaryP.v && this.initialPosition[0] < e[0])); const s = (t, i) => { this.selectFunc(this.rectangles[t], i), this.computeBoundaries(), this.selectTo(e) }; e[1] < this.boundaries.secondaryN.v ? (--this.secondaryOrder.currentPosition, s(this.boundaries.secondaryN.i, this.initialPosition[1] > this.boundaries.secondaryN.v && e[1] < this.initialPosition[1])) : e[1] > this.boundaries.secondaryP.v && (++this.secondaryOrder.currentPosition, s(this.boundaries.secondaryP.i, this.initialPosition[1] < this.boundaries.secondaryP.v && this.initialPosition[1] < e[1])), this.finalPosition = e } } class Qi extends Ot { } class Ji extends $t { selectionModel = null; constructor() { super(), super.initialize({}, new Qi) } static newObject() { return new Ji } initialize() { } beginSelect(e) { const t = this.blueprint.constructor; this.blueprint.selecting = !0, this.setBothLocations(e), this.selectionModel = new Wi(e, this.blueprint.getNodes(), t.nodeBoundariesSupplier, t.nodeSelectToggleFunction) } selectTo(e) { this.selectionModel.selectTo(e), this.toX = e[0], this.toY = e[1] } endSelect() { this.blueprint.selecting = !1, this.selectionModel = null, this.fromX = 0, this.fromY = 0, this.toX = 0, this.toY = 0 } } class es extends Gt { static #ui = { window: Fi, "color-picker": ji }; static properties = { ...Gt.properties, type: { type: Fi, attribute: "data-type", reflect: !0, converter: { fromAttribute: (e, t) => es.#ui[e], toAttribute: (e, t) => Object.entries(es.#ui).find((([t, i]) => e.constructor === i))?.[0] } } }; static newObject(e = {}, t = e.type ?? new Fi) { const i = new es; return i.initialize(e, t), i } initialize(e = {}, t = e.type ?? new Fi) { e.windowOptions ??= {}, this.type = e.type, this.windowOptions = e.windowOptions, super.initialize(e, t) } computeSizes() { const e = this.getBoundingClientRect(); this.sizeX = e.width, this.sizeY = e.height } cleanup() { super.cleanup(), this.acknowledgeClose() } acknowledgeClose() { let e = new CustomEvent(re.windowCloseEventName); this.dispatchEvent(e) } } class ts extends Pe { static grammar = this.createGrammar(); static { Pe.unknownEntity = this } static createGrammar() { return xe.seq(xe.reg(new RegExp(`(${Me.Regex.Path.source}|${Me.Regex.Symbol.source}\\s*)?\\(\\s*`), 1), xe.seq(Me.attributeName, Me.equalSeparation).map((([e, t]) => e)).chain((e => this.unknownEntityGrammar.map((t => i => i[e] = t)))).sepBy(Me.commaSeparation), xe.reg(/\s*(?:,\s*)?\)/)).map((([e, t, i]) => { e ??= ""; let s = {}; return e.length && (s.lookbehind = e), t.forEach((e => e(s))), new this(s) })).label("UnknownKeysEntity") } } Pe.unknownEntityGrammar = xe.alt(ke.grammar, ze.grammar, xe.str("None").map((() => nt.createNoneInstance())), yt.grammar, De.grammar, xe.alt(nt.fullReferenceGrammar, xe.regArray(new RegExp(`"(${Me.Regex.Path.source})'(${Me.Regex.Path.source}|${Me.symbol.getParser().regexp.source})'"`)).map((([e, t, i]) => new nt(t, i, e)))), qe.grammar, tt.grammar, et.grammar, it.grammar, rt.grammar, dt.grammar, $e.grammar, lt.grammar, ct.grammar, Ie.grammar, ts.grammar, We.grammar, Re.of(rt).grammar, Re.of(Le.accepting(De, qe, We)).grammar, xe.lazy((() => Re.createGrammar(Pe.unknownEntityGrammar)))), function () { const e = (e, t) => { customElements.define(e, t), Ae.registerElement(e, t) }; e("ueb-color-handler", xi), e("ueb-dropdown", Mi), e("ueb-input", Ii), e("ueb-link", Bt), e("ueb-node", li), e("ueb-pin", qi), e("ueb-selector", Ji), e("ueb-ui-slider", ki), e("ueb-window", es) }(); export { Si as Blueprint, re as Configuration, Bt as LinkElement, li as NodeElement, ae as Utility } + */const _i="important",zi=" !"+_i,Fi=(e=>(...t)=>({_$litDirective$:e,values:t}))(class extends Ri{constructor(e){var t;if(super(e),e.type!==Vi||"style"!==e.name||(null===(t=e.strings)||void 0===t?void 0:t.length)>2)throw Error("The `styleMap` directive must be used in the `style` attribute and must be the only part in the attribute.")}render(e){return Object.keys(e).reduce(((t,i)=>{const s=e[i];return null==s?t:t+`${i=i.includes("-")?i:i.replace(/(?:^(webkit|moz|ms|o)|)(?=[A-Z])/g,"-$&").toLowerCase()}:${s};`}),"")}update(e,[t]){const{style:i}=e.element;if(void 0===this.ht){this.ht=new Set;for(const e in t)this.ht.add(e);return this.render(t)}this.ht.forEach((e=>{null==t[e]&&(this.ht.delete(e),e.includes("-")?i.removeProperty(e):i[e]="")}));for(const e in t){const s=t[e];if(null!=s){this.ht.add(e);const t="string"==typeof s&&s.endsWith(zi);e.includes("-")||t?i.setProperty(e,t?s.slice(0,-11):s,t?_i:""):i[e]=s}}return H}});class ji extends Ft{toggleAdvancedDisplayHandler;getDraggableElement(){return this.element.querySelector(".ueb-window-top")}createDraggableObject(){return new Vt(this.element,this.blueprint,{draggableElement:this.getDraggableElement(),ignoreScale:!0,ignoreTranslateCompensate:!1,movementSpace:this.blueprint,stepSize:1})}setup(){const e=this.blueprint.template.gridLeftVisibilityBoundary(),t=this.blueprint.template.gridTopVisibilityBoundary();this.element.locationX=this.blueprint.scaleCorrectReverse(this.blueprint.mousePosition[0]-e),this.element.locationY=this.blueprint.scaleCorrectReverse(this.blueprint.mousePosition[1]-t),this.element.updateComplete.then((()=>{const e=this.blueprint.getBoundingClientRect();this.element.locationX+this.element.sizeX>e.width&&(this.element.locationX=e.width-this.element.sizeX),this.element.locationX=Math.max(0,this.element.locationX),this.element.locationY+this.element.sizeY>e.height&&(this.element.locationY=e.height-this.element.sizeY),this.element.locationY=Math.max(0,this.element.locationY)}))}render(){return G`${this.renderWindowName()}this.element.remove()}">${le.close}${this.renderContent()}`}renderWindowName(){return G`Window`}renderContent(){return G``}apply(){this.element.dispatchEvent(new CustomEvent(re.windowApplyEventName)),this.element.remove()}cancel(){this.element.dispatchEvent(new CustomEvent(re.windowCancelEventName)),this.element.remove()}}class Ui extends ji{#$t;#Dt;#Bt;#Gt;#Ht;#Vt;#Rt;#_t;#zt;#Ft;#jt=e=>{const t=ae.clearHTMLWhitespace(e.target.innerHTML),i=parseInt(t,16);isNaN(i)||(this.color.setFromRGBANumber(i),this.element.requestUpdate())};#Ut=e=>{const t=ae.clearHTMLWhitespace(e.target.innerHTML),i=parseInt(t,16);isNaN(i)||(this.color.setFromSRGBANumber(i),this.element.requestUpdate())};#Yt=e=>t=>{"Enter"==t.code&&(t.preventDefault(),e(t))};#Kt=new Te;get color(){return this.#Kt}set color(e){e.toNumber()!=this.color?.toNumber()&&(this.element.requestUpdate("color",this.#Kt),this.#Kt=e)}#Xt=new Te;get fullColor(){return this.#Xt}#qt;get initialColor(){return this.#qt}#Zt=new Te;#Wt(e,t,i=!1){const s=this.color.toRGBAString(),n=`${s.substring(0,2*e)}${t}${s.substring(2+2*e)}`;return i?`${n.substring(0,6)}FF`:n}initialize(e){super.initialize(e),this.#qt=this.element.windowOptions.getPinColor(),this.color.setFromHSVA(this.initialColor.H.value,this.initialColor.S.value,this.initialColor.V.value,this.initialColor.A.value),this.fullColor.setFromHSVA(this.color.H.value,1,1,1)}firstUpdated(e){this.#$t=this.element.querySelector(".ueb-color-picker-wheel ueb-color-handler"),this.#Dt=this.element.querySelector(".ueb-color-picker-saturation ueb-ui-slider"),this.#Bt=this.element.querySelector(".ueb-color-picker-value ueb-ui-slider"),this.#Gt=this.element.querySelector(".ueb-color-picker-r ueb-ui-slider"),this.#Ht=this.element.querySelector(".ueb-color-picker-g ueb-ui-slider"),this.#Vt=this.element.querySelector(".ueb-color-picker-b ueb-ui-slider"),this.#Rt=this.element.querySelector(".ueb-color-picker-a ueb-ui-slider"),this.#_t=this.element.querySelector(".ueb-color-picker-h ueb-ui-slider"),this.#zt=this.element.querySelector(".ueb-color-picker-s ueb-ui-slider"),this.#Ft=this.element.querySelector(".ueb-color-picker-v ueb-ui-slider"),this.#$t.template.locationChangeCallback=(e,t)=>{this.color.setFromWheelLocation(e,t,this.color.V.value,this.color.A.value),this.fullColor.setFromHSVA(this.color.H.value,1,1,1),this.element.requestUpdate()},this.#Dt.template.locationChangeCallback=(e,t)=>{this.color.setFromHSVA(this.color.H.value,t,this.color.V.value,this.color.A.value),this.element.requestUpdate()},this.#Bt.template.locationChangeCallback=(e,t)=>{this.color.setFromHSVA(this.color.H.value,this.color.S.value,t,this.color.A.value),this.element.requestUpdate()},this.#Gt.template.locationChangeCallback=(e,t)=>{this.color.setFromRGBA(e,this.color.G.value,this.color.B.value,this.color.A.value),this.element.requestUpdate()},this.#Ht.template.locationChangeCallback=(e,t)=>{this.color.setFromRGBA(this.color.R.value,e,this.color.B.value,this.color.A.value),this.element.requestUpdate()},this.#Vt.template.locationChangeCallback=(e,t)=>{this.color.setFromRGBA(this.color.R.value,this.color.G.value,e,this.color.A.value),this.element.requestUpdate()},this.#Rt.template.locationChangeCallback=(e,t)=>{this.color.setFromRGBA(this.color.R.value,this.color.G.value,this.color.B.value,e),this.element.requestUpdate()},this.#_t.template.locationChangeCallback=(e,t)=>{this.color.setFromHSVA(e,this.color.S.value,this.color.V.value,this.color.A.value),this.element.requestUpdate()},this.#zt.template.locationChangeCallback=(e,t)=>{this.color.setFromHSVA(this.color.H.value,e,this.color.V.value,this.color.A.value),this.element.requestUpdate()},this.#Ft.template.locationChangeCallback=(e,t)=>{this.color.setFromHSVA(this.color.H.value,this.color.S.value,e,this.color.A.value),this.element.requestUpdate()}}renderSlider(e){let t="",i=0,s="";const n=e=>`linear-gradient(to right, #${this.#Wt(e,"00",!0)}, #${this.#Wt(e,"ff",!0)})`;switch(e){case 0:t="r",i=this.color.R.value,s=n(e);break;case 1:t="g",i=this.color.G.value,s=n(e);break;case 2:t="b",i=this.color.B.value,s=n(e);break;case 3:t="a",i=this.color.A.value,s=`${re.alphaPattern}, ${n(e)}`;break;case 4:t="h",i=360*this.color.H.value,s="linear-gradient(to right, #f00 0%, #ff0 16.666%, #0f0 33.333%, #0ff 50%, #00f 66.666%, #f0f 83.333%, #f00 100%)";break;case 5:t="s",i=this.color.S.value,s=`linear-gradient(to right,#${this.#Zt.setFromHSVA(this.color.H.value,0,this.color.V.value,1),this.#Zt.toRGBAString()},#${this.#Zt.setFromHSVA(this.color.H.value,1,this.color.V.value,1),this.#Zt.toRGBAString()})`;break;case 6:t="v",i=this.color.V.value,s=`linear-gradient(to right, #000, #${this.fullColor.toRGBAString()})`}return s=`background: ${s};`,G`${t.toUpperCase()}`}renderContent(){const e=2*this.color.H.value*Math.PI,t={"--ueb-color-r":this.color.R.toString(),"--ueb-color-g":this.color.G.toString(),"--ueb-color-b":this.color.B.toString(),"--ueb-color-a":this.color.A.toString(),"--ueb-color-h":this.color.H.toString(),"--ueb-color-s":this.color.S.toString(),"--ueb-color-v":this.color.V.toString(),"--ueb-color-wheel-x":100*(this.color.S.value*Math.cos(e)*.5+.5)+"%","--ueb-color-wheel-y":100*(this.color.S.value*Math.sin(e)*.5+.5)+"%"},i=this.color.toRGBAString(),s=this.color.toSRGBAString(),n=this.fullColor.toRGBAString();return G`OldNewAdvanced${this.renderSlider(0)} ${this.renderSlider(1)} ${this.renderSlider(2)} ${this.renderSlider(3)}${this.renderSlider(4)} ${this.renderSlider(5)} ${this.renderSlider(6)}Hex LinearHex sRGBthis.apply()}">${re.windowApplyButtonText}this.cancel()}">${re.windowCancelButtonText}`}renderWindowName(){return G`${re.colorWindowName}`}}class Yi extends Gi{#Qt(){return $e.printNumber(this.element.getDefaultValue()?.X.valueOf()??0)}#Jt(){return $e.printNumber(this.element.getDefaultValue()?.Y.valueOf()??0)}setDefaultValue(e,t){const i=this.element.getDefaultValue(!0);i.X.value=e[0],i.Y.value=e[1],this.element.setDefaultValue(i)}renderInput(){return G`XY`}}class Ki extends Gi{#Qt(){return $e.printNumber(this.element.getDefaultValue()?.X.valueOf()??0)}#Jt(){return $e.printNumber(this.element.getDefaultValue()?.Y.valueOf()??0)}#ei(){return $e.printNumber(this.element.getDefaultValue()?.Z.valueOf()??0)}setDefaultValue(e,t){const i=this.element.getDefaultValue(!0);if(!(i instanceof De))throw new TypeError("Expected DefaultValue to be a VectorEntity");i.X.value=e[0],i.Y.value=e[1],i.Z.value=e[2],this.element.requestUpdate("DefaultValue",i)}renderInput(){return G`XYZ`}}const Xi={bool:$i,byte:Hi,enum:class extends Di{static saveEachInputChange=!0;#ti;#ii=[];setup(){super.setup();const e=this.element.nodeElement.entity.EnumEntries?.valueOf();this.#ii=e?.map((e=>(""===e.valueOf()&&(e=new qe("None")),[e,this.element.nodeElement.getPinEntities().find((t=>e===t.PinName))?.PinFriendlyName.toString()??e])))??re.CommonEnums[this.element.entity.getSubCategory()]?.map((e=>e instanceof Array?e:[e,ae.formatStringName(e)]))??[];const t=this.element.getDefaultValue().toString();this.#ii.find((([e,i])=>e===t))||this.#ii.push([t,ae.formatStringName(t)]),this.element.requestUpdate()}renderInput(){return G``}firstUpdated(e){super.firstUpdated(e),this.#ti=this.element.querySelector("ueb-dropdown")}getInputs(){return[this.#ti.getValue()]}setDefaultValue(e=[],t){const i=this.element.getDefaultValue();i.value=e[0],this.element.setDefaultValue(i),this.element.requestUpdate()}},int:Hi,int64:class extends Gi{setDefaultValue(e=[],t){const i=this.element.getDefaultValue();i.value=BigInt(e[0]),this.element.setDefaultValue(i),this.element.requestUpdate()}renderInput(){return G``}},MUTABLE_REFERENCE:class extends Jt{renderIcon(){return le.referencePin}},name:class extends Di{static singleLineInput=!0},real:class extends Gi{renderInput(){return G``}},rg:Yi,string:class extends Di{},[re.paths.linearColor]:class extends Jt{#si;#ni=e=>{e.preventDefault(),this.blueprint.setFocused(!0),this.#si=Ae.getConstructor("ueb-window").newObject({type:new Ui,windowOptions:{getPinColor:()=>this.element.defaultValue,setPinColor:e=>this.element.setDefaultValue(e)}}),this.blueprint.append(this.#si);const t=()=>{this.element.setDefaultValue(this.#si.template.color)},i=()=>{this.#si.removeEventListener(re.windowApplyEventName,t),this.#si.removeEventListener(re.windowCloseEventName,i),this.#si=null};this.#si.addEventListener(re.windowApplyEventName,t),this.#si.addEventListener(re.windowCloseEventName,i)};renderInput(){return G``}},[re.paths.niagaraBool]:$i,[re.paths.NiagaraInt32]:Hi,[re.paths.niagaraPosition]:Ki,[re.paths.rotator]:class extends Gi{#ri(){return $e.printNumber(this.element.getDefaultValue()?.R.valueOf()??0)}#ai(){return $e.printNumber(this.element.getDefaultValue()?.P.valueOf()??0)}#Jt(){return $e.printNumber(this.element.getDefaultValue()?.Y.valueOf()??0)}setDefaultValue(e=[],t=e){const i=this.element.getDefaultValue(!0);if(!(i instanceof ct))throw new TypeError("Expected DefaultValue to be a RotatorEntity");i.R.value=e[0],i.P.value=e[1],i.Y.value=e[2],this.element.requestUpdate("DefaultValue",i)}renderInput(){return G`XYZ`}},[re.paths.vector]:Ki,[re.paths.vector2D]:Yi,[re.paths.vector3f]:Ki,[re.paths.vector4f]:class extends Gi{#Qt(){return $e.printNumber(this.element.getDefaultValue()?.X.valueOf()??0)}#Jt(){return $e.printNumber(this.element.getDefaultValue()?.Y.valueOf()??0)}#ei(){return $e.printNumber(this.element.getDefaultValue()?.Z.valueOf()??0)}#oi(){return $e.printNumber(this.element.getDefaultValue()?.W.valueOf()??0)}setDefaultValue(e,t){const i=this.element.getDefaultValue(!0);if(!(i instanceof dt))throw new TypeError("Expected DefaultValue to be a Vector4DEntity");i.X.value=e[0],i.Y.value=e[1],i.Z.value=e[2],i.W.value=e[3],this.element.requestUpdate("DefaultValue",i)}renderInput(){return G`XYZW`}}};function qi(e){if("Array"===e.PinType.ContainerType?.toString())return Jt;if(e.PinType.bIsReference?.valueOf()&&!e.PinType.bIsConst?.valueOf())return Xi.MUTABLE_REFERENCE;const t=e.getType();return"exec"===t?Bi:(e.isInput()?Xi[t]:Jt)??Jt}class Zi extends oe{static properties={pinId:{type:ze,converter:{fromAttribute:(e,t)=>e?ze.grammar.parse(e):null,toAttribute:(e,t)=>e?.toString()},attribute:"data-id",reflect:!0},pinType:{type:String,attribute:"data-type",reflect:!0},advancedView:{type:String,attribute:"data-advanced-view",reflect:!0},color:{type:Te,converter:{fromAttribute:(e,t)=>e?Te.getLinearColorFromAnyFormat().parse(e):null,toAttribute:(e,t)=>e?Te.printLinearColor(e):null},attribute:"data-color",reflect:!0},defaultValue:{type:String,attribute:!1},isLinked:{type:Boolean,converter:ke.booleanConverter,attribute:"data-linked",reflect:!0},pinDirection:{type:String,attribute:"data-direction",reflect:!0},connectable:{type:Boolean,converter:ke.booleanConverter,attribute:"data-connectable",reflect:!0}};nodeElement;static newObject(e=new bt,t=new(qi(e)),i=void 0){const s=new Zi;return s.initialize(e,t,i),s}initialize(e=new bt,t=new(qi(e)),i=void 0){this.nodeElement=i,this.advancedView=e.bAdvancedView?.valueOf(),this.isLinked=!1,this.connectable=!e.bNotConnectable?.valueOf(),super.initialize(e,t),this.pinId=this.entity.PinId,this.pinType=this.entity.getType(),this.defaultValue=this.entity.getDefaultValue(),this.color=Zi.properties.color.converter.fromAttribute(this.getColor().toString()),this.pinDirection=e.isInput()?"input":e.isOutput()?"output":"hidden"}setup(){super.setup(),this.nodeElement=this.closest("ueb-node")}createPinReference(){return new rt(new We(this.nodeElement.getNodeName()),this.getPinId())}getPinId(){return this.entity.PinId}getPinName(){return this.entity.PinName?.toString()??""}getPinDisplayName(){return this.entity.pinTitle()}getColor(){return this.entity.pinColor()}isInput(){return this.entity.isInput()}isOutput(){return this.entity.isOutput()}getLinkLocation(){return this.template.getLinkLocation()}getNodeElement(){return this.nodeElement}getLinks(){return this.entity.LinkedTo?.valueOf()??[]}getDefaultValue(e=!1){return this.defaultValue=this.entity.getDefaultValue(e)}setDefaultValue(e){this.entity.DefaultValue=e,this.defaultValue=e,this.entity.recomputesNodeTitleOnChange&&this.nodeElement?.computeNodeDisplayName()}sanitizeLinks(e=[]){this.entity.LinkedTo=new bt.attributes.LinkedTo(this.entity.LinkedTo?.valueOf().filter((t=>{let i=this.blueprint.getPin(t);if(i){if(e.length&&!e.includes(i.nodeElement))return!1;let t=this.blueprint.getLink(this,i);t||(t=Ae.getConstructor("ueb-link").newObject(this,i),this.blueprint.addGraphElement(t))}return i}))),this.isLinked=this.entity.isLinked()}linkTo(e){const t=this.createPinReference();!this.isLinked||!this.isOutput()||"exec"!==this.pinType&&"exec"!==e.pinType||this.getLinks().some((e=>t.equals(e)))||this.unlinkFromAll(),this.entity.linkTo(e.getNodeElement().getNodeName(),e.entity)&&(this.isLinked=this.entity.isLinked(),this.nodeElement?.template.linksChanged(),this.entity.recomputesNodeTitleOnChange&&this.nodeElement?.computeNodeDisplayName())}unlinkFrom(e,t=!0){this.entity.unlinkFrom(e.getNodeElement().getNodeName(),e.entity)&&(this.isLinked=this.entity.isLinked(),this.nodeElement?.template.linksChanged(),t&&this.blueprint.getLink(this,e)?.remove(),this.entity.recomputesNodeTitleOnChange&&this.nodeElement?.computeNodeDisplayName())}unlinkFromAll(){const e=this.getLinks().length;this.getLinks().map((e=>this.blueprint.getPin(e))).forEach((e=>this.unlinkFrom(e))),e&&this.nodeElement?.template.linksChanged()}redirectLink(e,t){const i=this.getLinks().findIndex((t=>t.objectName.toString()==e.getNodeElement().getNodeName()&&t.pinGuid.toString()==e.entity.PinId.toString()));return i>=0&&(this.entity.LinkedTo.valueOf()[i]=t,!0)}}class Wi{constructor(e=e=>e,t=null){this.array=new Uint32Array(t),this.comparisonValueSupplier=e,this.length=0,this.currentPosition=0}get(e){return e>=0&&e=0&&this.currentPosition=0&&this.currentPosition0?this.get(this.currentPosition-1):null}getPrevValue(){return this.currentPosition>0?this.comparisonValueSupplier(this.get(this.currentPosition-1)):Number.MIN_SAFE_INTEGER}shiftLeft(e,t=1){this.array.set(this.array.subarray(e+t),e)}shiftRight(e,t=1){this.array.set(this.array.subarray(e,-t),e+t)}}class Qi{constructor(e,t,i,s){this.initialPosition=e,this.finalPosition=e,this.metadata=new Array(t.length),this.primaryOrder=new Wi((e=>this.metadata[e].primaryBoundary)),this.secondaryOrder=new Wi((e=>this.metadata[e].secondaryBoundary)),this.selectFunc=s,this.rectangles=t,this.primaryOrder.reserve(this.rectangles.length),this.secondaryOrder.reserve(this.rectangles.length),t.forEach(((e,t)=>{let n={primaryBoundary:this.initialPosition[0],secondaryBoundary:this.initialPosition[1],rectangle:t,onSecondaryAxis:!1};this.metadata[t]=n,s(e,!1);const r=i(e);this.initialPosition[1]{if(this.metadata[i].onSecondaryAxis)this.selectFunc(this.rectangles[i],s);else if(s){this.secondaryOrder.insert(i,e[1]);const s=this.metadata[i].secondaryBoundary;Math.sign(e[1]-s)==t[1]&&Math.sign(s-this.initialPosition[1])==t[1]&&this.selectFunc(this.rectangles[i],!0)}else this.selectFunc(this.rectangles[i],!1),this.secondaryOrder.remove(i);this.computeBoundaries(),this.selectTo(e)};e[0]this.boundaries.primaryN.v&&e[0]this.boundaries.primaryP.v&&(++this.primaryOrder.currentPosition,i(this.boundaries.primaryP.i,this.initialPosition[0]{this.selectFunc(this.rectangles[t],i),this.computeBoundaries(),this.selectTo(e)};e[1]this.boundaries.secondaryN.v&&e[1]this.boundaries.secondaryP.v&&(++this.secondaryOrder.currentPosition,s(this.boundaries.secondaryP.i,this.initialPosition[1]ts.#li[e],toAttribute:(e,t)=>Object.entries(ts.#li).find((([t,i])=>e.constructor===i))?.[0]}}};static newObject(e={},t=e.type??new ji){const i=new ts;return i.initialize(e,t),i}initialize(e={},t=e.type??new ji){e.windowOptions??={},this.type=e.type,this.windowOptions=e.windowOptions,super.initialize(e,t)}computeSizes(){const e=this.getBoundingClientRect();this.sizeX=e.width,this.sizeY=e.height}cleanup(){super.cleanup(),this.acknowledgeClose()}acknowledgeClose(){let e=new CustomEvent(re.windowCloseEventName);this.dispatchEvent(e)}}class is extends Pe{static grammar=this.createGrammar();static{Pe.unknownEntity=this}static createGrammar(){return xe.seq(xe.reg(new RegExp(`(${Me.Regex.Path.source}|${Me.Regex.Symbol.source}\\s*)?\\(\\s*`),1),xe.seq(Me.attributeName,Me.equalSeparation).map((([e,t])=>e)).chain((e=>this.unknownEntityGrammar.map((t=>i=>i[e]=t)))).sepBy(Me.commaSeparation),xe.reg(/\s*(?:,\s*)?\)/)).map((([e,t,i])=>{e??="";let s={};return e.length&&(s.lookbehind=e),t.forEach((e=>e(s))),new this(s)})).label("UnknownKeysEntity")}}Pe.unknownEntityGrammar=xe.alt(ke.grammar,ze.grammar,xe.str("None").map((()=>nt.createNoneInstance())),yt.grammar,$e.grammar,xe.alt(nt.fullReferenceGrammar,xe.regArray(new RegExp(`"(${Me.Regex.Path.source})'(${Me.Regex.Path.source}|${Me.symbol.getParser().regexp.source})'"`)).map((([e,t,i])=>new nt(t,i,((e,t)=>`"${e}'${t}'"`))))),qe.grammar,tt.grammar,et.grammar,it.grammar,rt.grammar,dt.grammar,De.grammar,lt.grammar,ct.grammar,Te.grammar,is.grammar,We.grammar,Re.of(rt).grammar,Re.of(Le.accepting($e,qe,We)).grammar,xe.lazy((()=>Re.createGrammar(Pe.unknownEntityGrammar)))),function(){const e=(e,t)=>{customElements.define(e,t),Ae.registerElement(e,t)};e("ueb-color-handler",Pi),e("ueb-dropdown",Ii),e("ueb-input",Oi),e("ueb-link",Bt),e("ueb-node",li),e("ueb-pin",Zi),e("ueb-selector",es),e("ueb-ui-slider",Ai),e("ueb-window",ts)}();export{Ei as Blueprint,re as Configuration,Bt as LinkElement,li as NodeElement,ae as Utility}; diff --git a/js/decoding/nodeTitle.js b/js/decoding/nodeTitle.js index d904252..02fdb95 100644 --- a/js/decoding/nodeTitle.js +++ b/js/decoding/nodeTitle.js @@ -446,19 +446,18 @@ export default function nodeTitle(entity) { } return Utility.formatStringName(entity.OpName.toString()).replaceAll("::", " ") } - let prefix - if ( - className.startsWith(prefix = "/Script/NiagaraEditor.NiagaraNodeParameter") - || className.startsWith(prefix = "/Script/NiagaraEditor.NiagaraNode" - - )) { - return Utility.formatStringName(className.substring(prefix.length)) - } if (entity.FunctionDisplayName) { return Utility.formatStringName(entity.FunctionDisplayName.toString()) } if (entity.ObjectRef) { return entity.ObjectRef.getName() } + let prefix + if ( + className.startsWith(prefix = "/Script/NiagaraEditor.NiagaraNodeParameter") + || className.startsWith(prefix = "/Script/NiagaraEditor.NiagaraNode") + ) { + return Utility.formatStringName(className.substring(prefix.length)) + } return Utility.formatStringName(entity.getNameAndCounter()[0]) } diff --git a/tests/fixtures/test.js b/tests/fixtures/test.js index f4ea5bd..20aed48 100644 --- a/tests/fixtures/test.js +++ b/tests/fixtures/test.js @@ -1,6 +1,26 @@ import base from "@playwright/test" +import Configuration from "../../js/Configuration.js" +import Utility from "../../js/Utility.js" import BlueprintFixture from "./BlueprintFixture.js" +/** + * @typedef {{ + * name: String, + * title?: String, + * subtitle?: String, + * value: String, + * size?: Number[], + * color?: CSSResult, + * icon?: TemplateResult, + * pins?: Number, + * pinNames?: String[], + * delegate: Boolean, + * development: Boolean, + * variadic?: Boolean, + * additionalTest?: (node: Locator, pins: Locator[], blueprintPage: BlueprintFixture) => void, + * }} TestData + */ + export const test = /** @type {typeof base.extend<{}, { sharedContext: import("@playwright/test").BrowserContext, @@ -24,3 +44,159 @@ export const test = /** export const expect = base.expect export * from "@playwright/test" + +/** @param {TestData} testData */ +export function testNode(testData) { + test.describe(testData.name, () => { + + test.beforeAll(async ({ blueprintPage }) => { + await blueprintPage.removeNodes() + await blueprintPage.paste(testData.value) + }) + + testData.title ??= testData.name + + if (testData.color) { + test( + `${testData.name}: Has correct color`, + async ({ blueprintPage }) => { + expect( + await blueprintPage.node.evaluate(node => node.entity.nodeColor().toString()) + ).toBe(testData.color.toString()) + } + ) + } + + test( + `${testData.name}: Has correct delegate`, + async ({ blueprintPage }) => { + const delegate = blueprintPage.blueprintLocator.locator( + 'ueb-node .ueb-node-top ueb-pin[data-type="delegate"]' + ) + if (testData.delegate) { + await expect(delegate).toBeVisible() + } else { + await expect(delegate).toBeHidden() + } + } + ) + + test( + `${testData.name}: Has title ${testData.title}`, + async ({ blueprintPage }) => expect( + await blueprintPage.node.evaluate(node => node.nodeDisplayName) + ).toBe(testData.title) + ) + + if (testData.subtitle) { + test( + `${testData.name}: Has expected subtitle ${testData.subtitle}`, + async ({ blueprintPage }) => await expect(blueprintPage.node.locator(".ueb-node-subtitle-text")) + .toHaveText(testData.subtitle, { useInnerText: true }) + ) + } + + if (testData.size) { + test( + `${testData.name}: Has approximately the expected size`, + async ({ blueprintPage }) => { + const expectedSize = await blueprintPage.node.evaluate( + (node, gridSize) => { + const bounding = node.getBoundingClientRect() + const expectedSize = [bounding.width / gridSize, bounding.height / gridSize] + return expectedSize + }, + Configuration.gridSize + ) + expect(Math.abs(testData.size[0] - expectedSize[0])).toBeLessThanOrEqual(1.5) + expect(Math.abs(testData.size[1] - expectedSize[1])).toBeLessThanOrEqual(1.5) + if ( + Math.abs(testData.size[0] - expectedSize[0]) > 0.6 + || Math.abs(testData.size[1] - expectedSize[1]) > 0.6 + ) { + console.error(`Node "${testData.name}" size does not match`) + } + } + ) + } + + if (testData.icon !== undefined) { + test( + `${testData.name}: Has the correct icon`, + async ({ blueprintPage }) => expect( + await blueprintPage.node.evaluate( + node => node.entity.nodeIcon()?.strings.join("") + ) + ).toBe(testData.icon?.strings.join("")) + ) + } + + if (testData.pins !== undefined) { + test( + `${testData.name}: Has ${testData.pins} pins`, + async ({ blueprintPage }) => expect( + await blueprintPage.node.evaluate( + node => node.querySelectorAll("ueb-pin").length + ) + ).toBe(testData.pins) + ) + } + + if (testData.pinNames) { + test( + `${testData.name}: Has correct pin names`, + async ({ blueprintPage }) => { + const innerTexts = await blueprintPage.node.locator(".ueb-pin-content .ueb-pin-name").allInnerTexts() + const pinNames = innerTexts.map(v => v.trim()).filter(v => v.length > 0) + expect(pinNames).toStrictEqual(testData.pinNames) + } + ) + } + + test( + `${testData.name}: Expected development`, + async ({ blueprintPage }) => expect( + await blueprintPage.node.evaluate(node => node.entity.isDevelopmentOnly()) + ).toBe(testData.development) + ) + + test( + `${testData.name}: Maintains the order of attributes`, + async ({ blueprintPage }) => { + const actualSerialization = await blueprintPage.getSerializedNodes() + const expectedWords = testData.value + .split("\n") + .map(row => row.match(/\s*("?\w+(\s+\w+)*).+/)?.[1]) + .filter(v => v?.length > 0) + expect(actualSerialization).toMatch(Utility.getFirstWordOrder(expectedWords)) + } + ) + + if (testData.variadic) { + test( + `${testData.name}: Can add new pins`, + async ({ blueprintPage }) => { + const variadic = blueprintPage.node.getByText("Add pin") + await expect(variadic).toBeVisible() + await variadic.hover() + await variadic.click() + expect(await blueprintPage.node.locator("ueb-pin").all()).toHaveLength(testData.pins + 1) + await variadic.blur() + } + ) + } + + if (testData.additionalTest) { + test( + `${testData.name}: Additional tests`, + async ({ blueprintPage }) => + testData.additionalTest( + blueprintPage.node, + await blueprintPage.node.locator("ueb-pin").all(), + blueprintPage, + ) + ) + } + }) + +} diff --git a/tests/node0.spec.js b/tests/node0.spec.js new file mode 100644 index 0000000..19048c3 --- /dev/null +++ b/tests/node0.spec.js @@ -0,0 +1,25 @@ +import Configuration from "../js/Configuration.js" +import SVGIcon from "../js/SVGIcon.js" +import { testNode } from "./fixtures/test.js" + +testNode({ + name: "0", + value: String.raw` + Begin Object Class=/Script/BlueprintGraph.K2Node_InputKey Name="K2Node_InputKey_1" + InputKey=Zero + NodePosX=-304 + NodePosY=176 + NodeGuid=41FC4194F1E4436BB46EC8C1D83D0701 + CustomProperties Pin (PinId=D4A5428B422F4D5085CF41DEAF73523E,PinName="Pressed",Direction="EGPD_Output",PinType.PinCategory="exec",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=B1A390663D2B404AAFF90D10273C78E1,PinName="Released",Direction="EGPD_Output",PinType.PinCategory="exec",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=0C9FF69AFEEE488F868AB3292050FCB0,PinName="Key",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/InputCore.Key"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="None",AutogeneratedDefaultValue="None",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + End Object + `, + size: [6, 8], + color: Configuration.nodeColors.red, + icon: SVGIcon.keyboard, + pins: 3, + pinNames: ["Pressed", "Released", "Key"], + delegate: false, + development: false, +}) diff --git a/tests/node1.spec.js b/tests/node1.spec.js new file mode 100644 index 0000000..192399b --- /dev/null +++ b/tests/node1.spec.js @@ -0,0 +1,25 @@ +import Configuration from "../js/Configuration.js" +import SVGIcon from "../js/SVGIcon.js" +import { testNode } from "./fixtures/test.js" + +testNode({ + name: "1", + value: String.raw` + Begin Object Class=/Script/BlueprintGraph.K2Node_InputKey Name="K2Node_InputKey_0" + InputKey=One + NodePosX=-368 + NodePosY=48 + NodeGuid=92EF207924B8456FA773E70D4CB508B1 + CustomProperties Pin (PinId=B97DD5E035664CC89443E493174A8643,PinName="Pressed",Direction="EGPD_Output",PinType.PinCategory="exec",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=B120EF5252EB4F029D420AD0B029AA57,PinName="Released",Direction="EGPD_Output",PinType.PinCategory="exec",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=51B6448364CD491B95C79EEDB5947F62,PinName="Key",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/InputCore.Key"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="None",AutogeneratedDefaultValue="None",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + End Object + `, + size: [6, 8], + color: Configuration.nodeColors.red, + icon: SVGIcon.keyboard, + pins: 3, + pinNames: ["Pressed", "Released", "Key"], + delegate: false, + development: false, +}) diff --git a/tests/node2.spec.js b/tests/node2.spec.js new file mode 100644 index 0000000..bc42515 --- /dev/null +++ b/tests/node2.spec.js @@ -0,0 +1,25 @@ +import Configuration from "../js/Configuration.js" +import SVGIcon from "../js/SVGIcon.js" +import { testNode } from "./fixtures/test.js" + +testNode({ + name: "2", + value: String.raw` + Begin Object Class=/Script/BlueprintGraph.K2Node_InputKey Name="K2Node_InputKey_1" + InputKey=Two + NodePosX=-432 + NodePosY=240 + NodeGuid=E0E67B91FE9748C7BA46FD5A5875E1ED + CustomProperties Pin (PinId=C7064464390D411ABFE9427758A4DC81,PinName="Pressed",Direction="EGPD_Output",PinType.PinCategory="exec",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=7CC65DFE0C134968A856304AAE6B800D,PinName="Released",Direction="EGPD_Output",PinType.PinCategory="exec",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=D79D1BBE0C944B618E16600BAD151493,PinName="Key",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/InputCore.Key"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="None",AutogeneratedDefaultValue="None",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + End Object + `, + size: [6, 8], + color: Configuration.nodeColors.red, + icon: SVGIcon.keyboard, + pins: 3, + pinNames: ["Pressed", "Released", "Key"], + delegate: false, + development: false, +}) diff --git a/tests/node3.spec.js b/tests/node3.spec.js new file mode 100644 index 0000000..f154992 --- /dev/null +++ b/tests/node3.spec.js @@ -0,0 +1,25 @@ +import Configuration from "../js/Configuration.js" +import SVGIcon from "../js/SVGIcon.js" +import { testNode } from "./fixtures/test.js" + +testNode({ + name: "3", + value: String.raw` + Begin Object Class=/Script/BlueprintGraph.K2Node_InputKey Name="K2Node_InputKey_2" + InputKey=Three + NodePosX=-288 + NodePosY=240 + NodeGuid=86A598DB8EA1471C854A3233595FDD72 + CustomProperties Pin (PinId=14495EF676334DE08F813AE8B458849A,PinName="Pressed",Direction="EGPD_Output",PinType.PinCategory="exec",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=0B11504E947F4FF184AC6371CB59D825,PinName="Released",Direction="EGPD_Output",PinType.PinCategory="exec",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=7493F1215705457980E294950C651ED7,PinName="Key",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/InputCore.Key"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="None",AutogeneratedDefaultValue="None",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + End Object + `, + size: [6, 8], + color: Configuration.nodeColors.red, + icon: SVGIcon.keyboard, + pins: 3, + pinNames: ["Pressed", "Released", "Key"], + delegate: false, + development: false, +}) diff --git a/tests/node4.spec.js b/tests/node4.spec.js new file mode 100644 index 0000000..bc8f994 --- /dev/null +++ b/tests/node4.spec.js @@ -0,0 +1,25 @@ +import Configuration from "../js/Configuration.js" +import SVGIcon from "../js/SVGIcon.js" +import { testNode } from "./fixtures/test.js" + +testNode({ + name: "4", + value: String.raw` + Begin Object Class=/Script/BlueprintGraph.K2Node_InputKey Name="K2Node_InputKey_4" + InputKey=Four + NodePosX=416 + NodePosY=16 + NodeGuid=C0E7B79B3B85408C9FFAFE71B71FD21F + CustomProperties Pin (PinId=28E3A745210949D0864CC441BB0F529C,PinName="Pressed",Direction="EGPD_Output",PinType.PinCategory="exec",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=F8A89129B85C44CABFC5082369EEDA65,PinName="Released",Direction="EGPD_Output",PinType.PinCategory="exec",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=00DE1A9A2AE249E681808177A2107D5A,PinName="Key",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/InputCore.Key"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="None",AutogeneratedDefaultValue="None",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + End Object + `, + size: [6, 8], + color: Configuration.nodeColors.red, + icon: SVGIcon.keyboard, + pins: 3, + pinNames: ["Pressed", "Released", "Key"], + delegate: false, + development: false, +}) diff --git a/tests/node5.spec.js b/tests/node5.spec.js new file mode 100644 index 0000000..318d852 --- /dev/null +++ b/tests/node5.spec.js @@ -0,0 +1,25 @@ +import Configuration from "../js/Configuration.js" +import SVGIcon from "../js/SVGIcon.js" +import { testNode } from "./fixtures/test.js" + +testNode({ + name: "5", + value: String.raw` + Begin Object Class=/Script/BlueprintGraph.K2Node_InputKey Name="K2Node_InputKey_3" + InputKey=Five + NodePosX=-416 + NodePosY=48 + NodeGuid=1DC9EFC5D6B34E06839050946BAD178D + CustomProperties Pin (PinId=9D70C05D5C5941CAAC239B23BC11E648,PinName="Pressed",Direction="EGPD_Output",PinType.PinCategory="exec",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=790882DB7B64424CBB215644AED9EBBE,PinName="Released",Direction="EGPD_Output",PinType.PinCategory="exec",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=9A76A94DEB7E40E08EBD880DFADB212F,PinName="Key",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/InputCore.Key"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="None",AutogeneratedDefaultValue="None",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + End Object + `, + size: [6, 8], + color: Configuration.nodeColors.red, + icon: SVGIcon.keyboard, + pins: 3, + pinNames: ["Pressed", "Released", "Key"], + delegate: false, + development: false, +}) diff --git a/tests/node6.spec.js b/tests/node6.spec.js new file mode 100644 index 0000000..8fff661 --- /dev/null +++ b/tests/node6.spec.js @@ -0,0 +1,25 @@ +import Configuration from "../js/Configuration.js" +import SVGIcon from "../js/SVGIcon.js" +import { testNode } from "./fixtures/test.js" + +testNode({ + name: "6", + value: String.raw` + Begin Object Class=/Script/BlueprintGraph.K2Node_InputKey Name="K2Node_InputKey_5" + InputKey=Six + NodePosX=-192 + NodePosY=112 + NodeGuid=82C5BBFF6AAB4078931656A56DFC214F + CustomProperties Pin (PinId=A4F9728C256C4D0FB053E545EBB0FDE3,PinName="Pressed",Direction="EGPD_Output",PinType.PinCategory="exec",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=DF03428EF028466C948E0F2539C1AA2C,PinName="Released",Direction="EGPD_Output",PinType.PinCategory="exec",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=509DA3B4BFD84B2FB796CEFE709E3401,PinName="Key",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/InputCore.Key"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="None",AutogeneratedDefaultValue="None",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + End Object + `, + size: [6, 8], + color: Configuration.nodeColors.red, + icon: SVGIcon.keyboard, + pins: 3, + pinNames: ["Pressed", "Released", "Key"], + delegate: false, + development: false, +}) diff --git a/tests/node7.spec.js b/tests/node7.spec.js new file mode 100644 index 0000000..0dfe4cf --- /dev/null +++ b/tests/node7.spec.js @@ -0,0 +1,25 @@ +import Configuration from "../js/Configuration.js" +import SVGIcon from "../js/SVGIcon.js" +import { testNode } from "./fixtures/test.js" + +testNode({ + name: "7", + value: String.raw` + Begin Object Class=/Script/BlueprintGraph.K2Node_InputKey Name="K2Node_InputKey_6" + InputKey=Seven + NodePosX=-352 + NodePosY=352 + NodeGuid=C32CC49616194AAC923D2C59FB938447 + CustomProperties Pin (PinId=6F69CCDA3E8042AD94D2CED0A400D23C,PinName="Pressed",Direction="EGPD_Output",PinType.PinCategory="exec",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=A34A7F4DA2F645F288C0F57A5E24DB8E,PinName="Released",Direction="EGPD_Output",PinType.PinCategory="exec",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=3E195C0ABA83425F813A4AB20817BBDE,PinName="Key",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/InputCore.Key"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="None",AutogeneratedDefaultValue="None",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + End Object + `, + size: [6, 8], + color: Configuration.nodeColors.red, + icon: SVGIcon.keyboard, + pins: 3, + pinNames: ["Pressed", "Released", "Key"], + delegate: false, + development: false, +}) diff --git a/tests/node8.spec.js b/tests/node8.spec.js new file mode 100644 index 0000000..9a64de1 --- /dev/null +++ b/tests/node8.spec.js @@ -0,0 +1,25 @@ +import Configuration from "../js/Configuration.js" +import SVGIcon from "../js/SVGIcon.js" +import { testNode } from "./fixtures/test.js" + +testNode({ + name: "8", + value: String.raw` + Begin Object Class=/Script/BlueprintGraph.K2Node_InputKey Name="K2Node_InputKey_7" + InputKey=Eight + NodePosX=-384 + NodePosY=256 + NodeGuid=6AF0BCA97BBD467C84CD606C09F1BBAA + CustomProperties Pin (PinId=4020BE13AED349549BA94622B8EEF80E,PinName="Pressed",Direction="EGPD_Output",PinType.PinCategory="exec",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=8C4F484474D1432CBD77333B04D315F8,PinName="Released",Direction="EGPD_Output",PinType.PinCategory="exec",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=3C0D2A3E5E844466B752EDD6E2160271,PinName="Key",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/InputCore.Key"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="None",AutogeneratedDefaultValue="None",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + End Object + `, + size: [6, 8], + color: Configuration.nodeColors.red, + icon: SVGIcon.keyboard, + pins: 3, + pinNames: ["Pressed", "Released", "Key"], + delegate: false, + development: false, +}) diff --git a/tests/node9.spec.js b/tests/node9.spec.js new file mode 100644 index 0000000..2ce7bd7 --- /dev/null +++ b/tests/node9.spec.js @@ -0,0 +1,25 @@ +import Configuration from "../js/Configuration.js" +import SVGIcon from "../js/SVGIcon.js" +import { testNode } from "./fixtures/test.js" + +testNode({ + name: "9", + value: String.raw` + Begin Object Class=/Script/BlueprintGraph.K2Node_InputKey Name="K2Node_InputKey_8" + InputKey=Nine + NodePosX=-160 + NodePosY=288 + NodeGuid=02A84586D4F842AB87578A8F6DECDFE1 + CustomProperties Pin (PinId=F3EC3CC1CF984B15B391F75CD1B4ECC8,PinName="Pressed",Direction="EGPD_Output",PinType.PinCategory="exec",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=2A1785736115425489B80816B0D1AC82,PinName="Released",Direction="EGPD_Output",PinType.PinCategory="exec",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=6C6769AC5FFF4CDF98004FEE47E9A3FC,PinName="Key",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/InputCore.Key"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="None",AutogeneratedDefaultValue="None",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + End Object + `, + size: [6, 8], + color: Configuration.nodeColors.red, + icon: SVGIcon.keyboard, + pins: 3, + pinNames: ["Pressed", "Released", "Key"], + delegate: false, + development: false, +}) diff --git a/tests/nodeA.spec.js b/tests/nodeA.spec.js new file mode 100644 index 0000000..4aa0419 --- /dev/null +++ b/tests/nodeA.spec.js @@ -0,0 +1,25 @@ +import Configuration from "../js/Configuration.js" +import SVGIcon from "../js/SVGIcon.js" +import { testNode } from "./fixtures/test.js" + +testNode({ + name: "A", + value: String.raw` + Begin Object Class=/Script/BlueprintGraph.K2Node_InputKey Name="K2Node_InputKey_21" + InputKey=A + NodePosX=-304 + NodePosY=96 + NodeGuid=6259F5F555434903AC5C3C666F979944 + CustomProperties Pin (PinId=CB98C983F3F1464DB10FB786E52E0722,PinName="Pressed",Direction="EGPD_Output",PinType.PinCategory="exec",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=D306257F70BF42C19140148BE5998EA3,PinName="Released",Direction="EGPD_Output",PinType.PinCategory="exec",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=2977AECB23E44F76A1F92E4DCE1EEE8C,PinName="Key",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/InputCore.Key"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="None",AutogeneratedDefaultValue="None",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + End Object + `, + size: [6, 8], + color: Configuration.nodeColors.red, + icon: SVGIcon.keyboard, + pins: 3, + pinNames: ["Pressed", "Released", "Key"], + delegate: false, + development: false, +}) diff --git a/tests/nodeAGrave.spec.js b/tests/nodeAGrave.spec.js new file mode 100644 index 0000000..0817489 --- /dev/null +++ b/tests/nodeAGrave.spec.js @@ -0,0 +1,25 @@ +import Configuration from "../js/Configuration.js" +import SVGIcon from "../js/SVGIcon.js" +import { testNode } from "./fixtures/test.js" + +testNode({ + name: "à", + value: String.raw` + Begin Object Class=/Script/BlueprintGraph.K2Node_InputKey Name="K2Node_InputKey_22" + InputKey=A_AccentGrave + NodePosX=-16 + NodePosY=208 + NodeGuid=D3DB357D428F46BBB529721239DD16DF + CustomProperties Pin (PinId=DB7FA89F149E4CE3B2A1F5F103A2C074,PinName="Pressed",Direction="EGPD_Output",PinType.PinCategory="exec",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=75FF129EE9094AD3867206DEB7E9D907,PinName="Released",Direction="EGPD_Output",PinType.PinCategory="exec",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=E6898EC029904C069C75CFBA94BED0D5,PinName="Key",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/InputCore.Key"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="None",AutogeneratedDefaultValue="None",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + End Object + `, + size: [6, 8], + color: Configuration.nodeColors.red, + icon: SVGIcon.keyboard, + pins: 3, + pinNames: ["Pressed", "Released", "Key"], + delegate: false, + development: false, +}) diff --git a/tests/nodeAddDoubleDouble.spec.js b/tests/nodeAddDoubleDouble.spec.js new file mode 100644 index 0000000..01fdb7a --- /dev/null +++ b/tests/nodeAddDoubleDouble.spec.js @@ -0,0 +1,39 @@ +import SVGIcon from "../js/SVGIcon.js" +import { expect, testNode } from "./fixtures/test.js" + +testNode({ + name: "Add double double", + title: "+", + value: String.raw` + Begin Object Class=/Script/BlueprintGraph.K2Node_CommutativeAssociativeBinaryOperator Name="K2Node_CommutativeAssociativeBinaryOperator_1" ExportPath="/Script/BlueprintGraph.K2Node_CommutativeAssociativeBinaryOperator'/Game/Map.Map:PersistentLevel.Map.EventGraph.K2Node_CommutativeAssociativeBinaryOperator_1'" + NumAdditionalInputs=3 + bIsPureFunc=True + FunctionReference=(MemberParent="/Script/CoreUObject.Class'/Script/Engine.KismetMathLibrary'",MemberName="Add_DoubleDouble") + NodePosX=1920 + NodePosY=-1424 + NodeGuid=898B12095E2149EB85F3D66ABF812C8D + CustomProperties Pin (PinId=7E49A86445F1A83779096DA2653ED2F9,PinName="self",PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target"),PinToolTip="Target\nKismet Math Library Object Reference",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.Class'/Script/Engine.KismetMathLibrary'",PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultObject="/Script/Engine.Default__KismetMathLibrary",PersistentGuid=00000000000000000000000000000000,bHidden=True,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=42E8757A4F34479027E6F3AC60B85161,PinName="A",PinToolTip="A\nFloat (double-precision)",PinType.PinCategory="real",PinType.PinSubCategory="double",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,DefaultValue="123.000000",AutogeneratedDefaultValue="0.0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=4631AA9648980812910BB6A44F8DB926,PinName="B",PinToolTip="B\nFloat (double-precision)",PinType.PinCategory="real",PinType.PinSubCategory="double",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,DefaultValue="234.000000",AutogeneratedDefaultValue="1.000000",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=46E01E834DC9C4ADC2A371BA3E6750FD,PinName="ReturnValue",PinToolTip="Return Value\nFloat (double-precision)\n\nAddition (A + B)",Direction="EGPD_Output",PinType.PinCategory="real",PinType.PinSubCategory="double",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,DefaultValue="0.0",AutogeneratedDefaultValue="0.0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=EA79B248A6876A3D535FD66AF32AD617,PinName="C",PinToolTip="C\nFloat (double-precision)",PinType.PinCategory="real",PinType.PinSubCategory="double",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,DefaultValue="345.000000",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=A1A5D31E765DD0B28389412697654E59,PinName="D",PinToolTip="D\nFloat (double-precision)",PinType.PinCategory="real",PinType.PinSubCategory="double",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,DefaultValue="456.000000",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=F622CBB2B1AD29C2A0F225F8D5275852,PinName="E",PinToolTip="E\nFloat (double-precision)",PinType.PinCategory="real",PinType.PinSubCategory="double",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,DefaultValue="567.000000",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + End Object + `, + size: [10.5, 11], + pins: 6, + delegate: false, + development: false, + variadic: true, + additionalTest: async (node, pins) => { + const values = ["123.0", "234.0", "345.0", "456.0", "567.0"] + for (let i = 0; i < pins.length; ++i) { + expect(await pins[i].evaluate(pin => pin.template.renderIcon().strings.join(""))) + .toStrictEqual(SVGIcon.operationPin.strings.join("")) + if (i < values.length) { + await expect(pins[i].locator("ueb-input")).toContainText(values[i]) + } + } + } +}) diff --git a/tests/nodeAddLocalNavigationGridForBox.spec.js b/tests/nodeAddLocalNavigationGridForBox.spec.js new file mode 100644 index 0000000..a42fade --- /dev/null +++ b/tests/nodeAddLocalNavigationGridForBox.spec.js @@ -0,0 +1,82 @@ +import Configuration from "../js/Configuration.js" +import SVGIcon from "../js/SVGIcon.js" +import { expect, testNode } from "./fixtures/test.js" + +testNode({ + name: "Add Local Navigation Grid For Box", + value: String.raw` + Begin Object Class=/Script/BlueprintGraph.K2Node_CallFunction Name="K2Node_CallFunction_0" ExportPath="/Script/BlueprintGraph.K2Node_CallFunction'/Temp/Untitled_1.Untitled_1:PersistentLevel.Untitled.EventGraph.K2Node_CallFunction_0'" + FunctionReference=(MemberParent="/Script/CoreUObject.Class'/Script/AIModule.NavLocalGridManager'",MemberName="AddLocalNavigationGridForBox") + NodePosX=304 + NodePosY=-496 + NodeGuid=C15FC9905D6D4BF5AF19CB81BAB598DE + CustomProperties Pin (PinId=4A315083206E46F38782139225D1CBDB,PinName="execute",PinToolTip="\nExec",PinType.PinCategory="exec",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=0E0D6F8DD32C430D9F727D4B16A6CA85,PinName="then",PinToolTip="\nExec",Direction="EGPD_Output",PinType.PinCategory="exec",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=3A0F065EA4444A6BBD9DB667859A2139,PinName="self",PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target"),PinToolTip="Target\nNav Local Grid Manager Object Reference",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.Class'/Script/AIModule.NavLocalGridManager'",PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultObject="/Script/AIModule.Default__NavLocalGridManager",PersistentGuid=00000000000000000000000000000000,bHidden=True,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=3FBC998EDAF84DC48EF01354ED460934,PinName="WorldContextObject",PinToolTip="World Context Object\nObject Reference",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.Class'/Script/CoreUObject.Object'",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,) + CustomProperties Pin (PinId=44559846BCBA449395FE1552F1ECE478,PinName="Location",PinToolTip="Location\nVector (by ref)",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.ScriptStruct'/Script/CoreUObject.Vector'",PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=True,PinType.bIsConst=True,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="0, 0, 0",AutogeneratedDefaultValue="0, 0, 0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=True,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=C5C95F7DF3A74AF990B3093D85D70478,PinName="Extent",PinToolTip="Extent\nVector",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.ScriptStruct'/Script/CoreUObject.Vector'",PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="15.000000,30.000000,45.000000",AutogeneratedDefaultValue="1.000000,1.000000,1.000000",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=EE0E7856A7B54B5CBE67E4F589E82B4C,PinName="Rotation",PinToolTip="Rotation\nRotator",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.ScriptStruct'/Script/CoreUObject.Rotator'",PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="20.000000,30.000000,10.000000",AutogeneratedDefaultValue="0, 0, 0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=960A2A37701047D5B28353189B7199A5,PinName="Radius2D",PinToolTip="Radius 2D\nInteger",PinType.PinCategory="int",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=True,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="8",AutogeneratedDefaultValue="5",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=DE5301DC038D43969F9DB9F41949AFD0,PinName="Height",PinToolTip="Height\nFloat (single-precision)",PinType.PinCategory="real",PinType.PinSubCategory="float",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=True,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="200.500000",AutogeneratedDefaultValue="100.000000",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=5E42C9BD542E413E9CEF9D5A98A4C5EB,PinName="bRebuildGrids",PinToolTip="Rebuild Grids\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,DefaultValue="false",AutogeneratedDefaultValue="true",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=5A398222D44740A98F9742B5BDDB3580,PinName="ReturnValue",PinToolTip="Return Value\nInteger\n\nAdd Local Navigation Grid for Box",Direction="EGPD_Output",PinType.PinCategory="int",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,DefaultValue="0",AutogeneratedDefaultValue="0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + End Object + `, + size: [20.5, 19], + color: Configuration.nodeColors.blue, + icon: SVGIcon.functionSymbol, + pins: 9, + pinNames: [ + "Location", + "Extent", + "Rotation", + "Radius 2D", + "Height", + "Rebuild Grids", + "Return Value", + ], + delegate: false, + development: false, + additionalTest: async (node, pins, blueprintPage) => { + await expect(pins[2].locator("ueb-input")).toHaveText(["15.0", "30.0", "45.0"]) + await expect(pins[3].locator("ueb-input")).toHaveText(["10.0", "20.0", "30.0"]) + await expect(pins[4].locator("ueb-input")).toHaveText(["8"]) + await expect(pins[5].locator("ueb-input")).toHaveText(["200.5"]) + await expect(pins[6].locator("input")).toBeChecked({ checked: false }) + let inputs = await pins[2].locator("ueb-input").all() + await inputs[0].fill("-11.11") + await inputs[1].fill("-22.22") + await inputs[2].fill("-33.33") + await blueprintPage.blur() + expect(await pins[2].evaluate(pin => pin.entity.DefaultValue.constructor.className())) + .toBe("SimpleSerializationVectorEntity") + await expect(pins[2].locator("ueb-input")).toHaveText(["-11.11", "-22.22", "-33.33"]) + inputs = await pins[3].locator("ueb-input").all() + await inputs[0].fill("88") + await inputs[1].fill("77") + await inputs[2].fill("66") + await blueprintPage.blur() + expect(await pins[3].evaluate(pin => pin.entity.DefaultValue.constructor.className())) + .toBe("SimpleSerializationRotatorEntity") + await expect(pins[3].locator("ueb-input")).toHaveText(["88.0", "77.0", "66.0"]) + await pins[4].locator("ueb-input").fill("35.814") + await blueprintPage.blur() + expect(await pins[4].evaluate(pin => pin.entity.DefaultValue.constructor.className())) + .toBe("IntegerEntity") + await expect(pins[4].locator("ueb-input")).toHaveText("35") + await pins[6].locator("input").check() + await expect(pins[6].locator("input")).toBeChecked() + expect(await pins[6].evaluate(pin => pin.entity.DefaultValue.constructor.className())) + .toBe("BooleanEntity") + const serialization = await blueprintPage.getSerializedNodes() + await blueprintPage.removeNodes() + await blueprintPage.paste(serialization) + pins = await blueprintPage.blueprintLocator.locator("ueb-pin").all() + await expect(pins[2].locator("ueb-input")).toHaveText(["-11.11", "-22.22", "-33.33"]) + await expect(pins[3].locator("ueb-input")).toHaveText(["88.0", "77.0", "66.0"]) + await expect(pins[4].locator("ueb-input")).toHaveText(["35"]) + await expect(pins[5].locator("ueb-input")).toHaveText(["200.5"]) + await expect(pins[6].locator("input")).toBeChecked() + } +}) diff --git a/tests/nodeAlignQuaternions.spec.js b/tests/nodeAlignQuaternions.spec.js new file mode 100644 index 0000000..8ff79c1 --- /dev/null +++ b/tests/nodeAlignQuaternions.spec.js @@ -0,0 +1,34 @@ +import { css } from "lit" +import Configuration from "../js/Configuration.js" +import { expect, testNode } from "./fixtures/test.js" + +testNode({ + name: "Align Quaternions", + value: String.raw` + Begin Object Class=/Script/NiagaraEditor.NiagaraNodeFunctionCall Name="NiagaraNodeFunctionCall_125" ExportPath="/Script/NiagaraEditor.NiagaraNodeFunctionCall'/Engine/Transient.NewNiagaraScript:NiagaraScriptSource_0.NiagaraGraph_0.NiagaraNodeFunctionCall_125'" + FunctionScript="/Script/Niagara.NiagaraScript'/Niagara/Functions/Rotation/AlignQuaternions.AlignQuaternions'" + CachedChangeId=46822C6B48B121BA33580E809890283B + FunctionDisplayName="AlignQuaternions" + ChangeId=1773D73F6A644287931126B8B2F67371 + NodePosX=-512 + NodePosY=128 + NodeGuid=DF5F941A4DE7430989CE74C42E9F0E6F + CustomProperties Pin (PinId=AE6D0569136F4208B97DD62D9FB2EFF6,PinName="BaselineRotation",PinType.PinCategory="Type",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.ScriptStruct'/Script/CoreUObject.Quat4f'",PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="0.000,0.000,0.000,1.000",AutogeneratedDefaultValue="0.000,0.000,0.000,1.000",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=32A04106CE014CF3B7A74E4CE3B7064B,PinName="NewRotation",PinType.PinCategory="Type",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.ScriptStruct'/Script/CoreUObject.Quat4f'",PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="0.000,0.000,0.000,1.000",AutogeneratedDefaultValue="0.000,0.000,0.000,1.000",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=5F121C4330074978A1F9792824AE3B5A,PinName="NewOutput",Direction="EGPD_Output",PinType.PinCategory="Type",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.ScriptStruct'/Script/CoreUObject.Quat4f'",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=True,bAdvancedView=False,bOrphanedPin=False,) + End Object + `, + size: [16, 5.5], + icon: null, + color: Configuration.nodeColors.darkerBlue, + pins: 3, + delegate: false, + development: false, + additionalTest: async (node, pins) => { + expect(await node.evaluate(node => node.classList.contains("ueb-node-style-glass"))).toBeFalsy() + expect(await node.evaluate(node => node.classList.contains("ueb-node-style-default"))).toBeTruthy() + expect(await pins[0].evaluate(p => p.entity.pinColor().cssText)).toBe(css`0, 88, 200`.cssText) + expect(await pins[1].evaluate(p => p.entity.pinColor().cssText)).toBe(css`0, 88, 200`.cssText) + expect(await pins[2].evaluate(p => p.entity.pinColor().cssText)).toBe(css`0, 88, 200`.cssText) + }, +}) diff --git a/tests/nodeAnd.spec.js b/tests/nodeAnd.spec.js new file mode 100644 index 0000000..29b53e9 --- /dev/null +++ b/tests/nodeAnd.spec.js @@ -0,0 +1,43 @@ +import SVGIcon from "../js/SVGIcon.js" +import { expect, testNode } from "./fixtures/test.js" + +testNode({ + name: "AND", + value: String.raw` + Begin Object Class=/Script/BlueprintGraph.K2Node_CommutativeAssociativeBinaryOperator Name="K2Node_CommutativeAssociativeBinaryOperator_0" ExportPath=/Script/BlueprintGraph.K2Node_CommutativeAssociativeBinaryOperator'"/Temp/Untitled_1.Untitled_1:PersistentLevel.Untitled.EventGraph.K2Node_CommutativeAssociativeBinaryOperator_0"' + bIsPureFunc=True + FunctionReference=(MemberParent=/Script/CoreUObject.Class'"/Script/Engine.KismetMathLibrary"',MemberName="BooleanAND") + NodePosX=-128 + NodePosY=240 + NodeGuid=9E1635738D62423D9FD5F68526C4C6BF + CustomProperties Pin (PinId=DDE978511D404B33BC2B8FE6546ED348,PinName="self",PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target"),PinToolTip="Target\nKismet Math Library Object Reference",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/Engine.KismetMathLibrary"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultObject="/Script/Engine.Default__KismetMathLibrary",PersistentGuid=00000000000000000000000000000000,bHidden=True,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=651536110BC540B8902A00F40231EC0E,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,DefaultValue="false",AutogeneratedDefaultValue="false",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=AD6A19CF20A24DAB9D04A29222CFC7A4,PinName="B",PinToolTip="B\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,DefaultValue="false",AutogeneratedDefaultValue="false",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=6CB3B4F8E6B245FDAC6C8EBB4C7255CA,PinName="ReturnValue",PinToolTip="Return Value\nBoolean\n\nReturns the logical AND of two values (A AND 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,DefaultValue="false",AutogeneratedDefaultValue="false",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + End Object + `, + size: [12, 5], + pins: 3, + delegate: false, + development: false, + variadic: true, + additionalTest: async (node, pins, blueprintPage) => { + for (const pin of pins) { + expect(await pin.evaluate(pin => pin.template.renderIcon().strings.join(""))) + .toStrictEqual(SVGIcon.operationPin.strings.join("")) + } + let inputs = await node.locator(".ueb-pin-input").all() + for (const input of inputs) { + expect(await input.isChecked()).toBeFalsy() + } + await inputs[inputs.length - 1].check() + expect(await inputs[inputs.length - 1].isChecked()).toBeTruthy() + const variadic = blueprintPage.node.getByText("Add pin") + await variadic.click() + inputs = await node.locator(".ueb-pin-input").all() + await inputs[inputs.length - 2].uncheck() + for (const input of inputs) { + expect(await input.isChecked()).toBeFalsy() + } + } +}) diff --git a/tests/nodeAppendMany.spec.js b/tests/nodeAppendMany.spec.js new file mode 100644 index 0000000..617df20 --- /dev/null +++ b/tests/nodeAppendMany.spec.js @@ -0,0 +1,54 @@ +import Configuration from "../js/Configuration.js" +import { testNode } from "./fixtures/test.js" + +testNode({ + name: "AppendMany", + value: String.raw` + Begin Object Class=/Script/UnrealEd.MaterialGraphNode Name="MaterialGraphNode_3" ExportPath="/Script/UnrealEd.MaterialGraphNode'/Engine/Transient.Material_0:MaterialGraph_0.MaterialGraphNode_3'" + Begin Object Class=/Script/Engine.MaterialExpressionMaterialFunctionCall Name="MaterialExpressionMaterialFunctionCall_0" ExportPath="/Script/Engine.MaterialExpressionMaterialFunctionCall'/Engine/Transient.Material_0:MaterialGraph_0.MaterialGraphNode_3.MaterialExpressionMaterialFunctionCall_0'" + End Object + Begin Object Name="MaterialExpressionMaterialFunctionCall_0" ExportPath="/Script/Engine.MaterialExpressionMaterialFunctionCall'/Engine/Transient.Material_0:MaterialGraph_0.MaterialGraphNode_3.MaterialExpressionMaterialFunctionCall_0'" + MaterialFunction="/Script/Engine.MaterialFunction'/Engine/Functions/Engine_MaterialFunctions02/Utility/AppendMany.AppendMany'" + FunctionInputs(0)=(ExpressionInputId=885D0D3941709A0021D522BB0D350E84,Input=(OutputIndex=-1,InputName="R")) + FunctionInputs(1)=(ExpressionInputId=66655BEF4DEEE4FBB682D1B2533B646B,Input=(OutputIndex=-1,InputName="G")) + FunctionInputs(2)=(ExpressionInputId=7971790B4C1CF3D12A6BD5849BF51222,Input=(OutputIndex=-1,InputName="B")) + FunctionInputs(3)=(ExpressionInputId=E0358D7C4B4022F69AB64786F99318D6,Input=(OutputIndex=-1,InputName="A")) + FunctionOutputs(0)=(ExpressionOutputId=FA6B13694608C010AF452E92B3981900,Output=(OutputName="RG")) + FunctionOutputs(1)=(ExpressionOutputId=C48A5AA9468A429E4D9984AD43B50CE5,Output=(OutputName="RGB")) + FunctionOutputs(2)=(ExpressionOutputId=B55BAD0C44C4D883F0D33CB57D00AB3C,Output=(OutputName="RGBA")) + MaterialExpressionEditorX=384 + MaterialExpressionEditorY=768 + MaterialExpressionGuid=971FA65449F74582B4418B816DDCBCCF + Material="/Script/Engine.Material'/Engine/Transient.Material_0'" + Outputs(0)=(OutputName="RG") + Outputs(1)=(OutputName="RGB") + Outputs(2)=(OutputName="RGBA") + End Object + MaterialExpression="/Script/Engine.MaterialExpressionMaterialFunctionCall'MaterialExpressionMaterialFunctionCall_0'" + NodePosX=384 + NodePosY=768 + NodeGuid=7CBF0C7DDBF848FE8D7E9A85D56C3772 + CustomProperties Pin (PinId=36EB45FD36FA4918947D2811918524EF,PinName="R (S)",PinType.PinCategory="optional",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=3D2F2B761F6646E298BC96093285F44E,PinName="G (S)",PinType.PinCategory="optional",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=4194B7FE10FC4AEEB2B9B620437618C3,PinName="B (S)",PinType.PinCategory="optional",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=A29788A42F2E43E9B5F8959DF5478E8F,PinName="A (S)",PinType.PinCategory="optional",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=7C55A39ECC2E4A78B0A2918AF200EED4,PinName="RG",Direction="EGPD_Output",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=A21DE80A4A454574AF9B1E0F8CD7E9F1,PinName="RGB",Direction="EGPD_Output",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=E5937F981A604CF1AF885868325FC83E,PinName="RGBA",Direction="EGPD_Output",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,) + End Object + `, + color: Configuration.nodeColors.blue, + icon: null, + pins: 7, + pinNames: [ + "R (S)", + "G (S)", + "B (S)", + "A (S)", + "RG", + "RGB", + "RGBA", + ], + delegate: false, + development: false, +}) diff --git a/tests/nodeAsyncChangeBundleStateForMatchingPrimaryAssets.spec.js b/tests/nodeAsyncChangeBundleStateForMatchingPrimaryAssets.spec.js new file mode 100644 index 0000000..b80af57 --- /dev/null +++ b/tests/nodeAsyncChangeBundleStateForMatchingPrimaryAssets.spec.js @@ -0,0 +1,30 @@ +import Configuration from "../js/Configuration.js" +import SVGIcon from "../js/SVGIcon.js" +import { testNode } from "./fixtures/test.js" + +testNode({ + name: "Async Change Bundle State For Matching Primary Assets", + value: String.raw` + Begin Object Class=/Script/BlueprintGraph.K2Node_AsyncAction Name="K2Node_AsyncAction_0" ExportPath=/Script/BlueprintGraph.K2Node_AsyncAction'"/Temp/Untitled_1.Untitled_1:PersistentLevel.Untitled.EventGraph.K2Node_AsyncAction_0"' + ProxyFactoryFunctionName="AsyncChangeBundleStateForMatchingPrimaryAssets" + ProxyFactoryClass=/Script/CoreUObject.Class'"/Script/Engine.AsyncActionChangePrimaryAssetBundles"' + ProxyClass=/Script/CoreUObject.Class'"/Script/Engine.AsyncActionChangePrimaryAssetBundles"' + NodePosX=-384 + NodePosY=-1152 + NodeGuid=BE2398EE906341DFBF4027C551933479 + CustomProperties Pin (PinId=0ADB80D7303A4B70A271609DEF026A74,PinName="execute",PinToolTip="\nExec",PinType.PinCategory="exec",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=982E6A6405014809B46CA263AA26EBE3,PinName="then",Direction="EGPD_Output",PinType.PinCategory="exec",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=58B7B76B29454FAD99B90931BD676CAB,PinName="Completed",PinFriendlyName=NSLOCTEXT("UObjectDisplayNames", "AsyncActionChangePrimaryAssetBundles:Completed", "Completed"),Direction="EGPD_Output",PinType.PinCategory="exec",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=FD58E0E4210D4714AFB0A5D049BF57D0,PinName="WorldContextObject",PinToolTip="World Context Object\nObject Reference",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/CoreUObject.Object"',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,) + CustomProperties Pin (PinId=C97FE20A5B2D450CA45CE0313CF86D19,PinName="NewBundles",PinToolTip="New Bundles\nArray of Names",PinType.PinCategory="name",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=Array,PinType.bIsReference=True,PinType.bIsConst=True,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=True,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=94C2A7BB42E8416B8F275FC59D536272,PinName="OldBundles",PinToolTip="Old Bundles\nArray of Names",PinType.PinCategory="name",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=Array,PinType.bIsReference=True,PinType.bIsConst=True,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=True,bAdvancedView=False,bOrphanedPin=False,) + End Object + `, + size: [24.5, 7.5], + color: Configuration.nodeColors.blue, + icon: SVGIcon.node, + pins: 5, + pinNames: ["New Bundles", "Old Bundles", "Completed"], + delegate: false, + development: false, +}) diff --git a/tests/nodeBindEventtoModifiedEventDynamic.spec.js b/tests/nodeBindEventtoModifiedEventDynamic.spec.js new file mode 100644 index 0000000..d0ca1ce --- /dev/null +++ b/tests/nodeBindEventtoModifiedEventDynamic.spec.js @@ -0,0 +1,26 @@ +import Configuration from "../js/Configuration.js" +import SVGIcon from "../js/SVGIcon.js" +import { testNode } from "./fixtures/test.js" + +testNode({ + name: "Bind Event to Modified Event Dynamic", + value: String.raw` + Begin Object Class=/Script/BlueprintGraph.K2Node_AddDelegate Name="K2Node_AddDelegate_1" ExportPath="/Script/BlueprintGraph.K2Node_AddDelegate'/Engine/Maps/Templates/NewWorld.NewWorld:PersistentLevel.NewWorld.EventGraph.K2Node_AddDelegate_1'" + DelegateReference=(MemberParent="/Script/CoreUObject.Class'/Script/Engine.AnimDataModel'",MemberName="ModifiedEventDynamic") + NodePosX=1920 + NodePosY=-384 + NodeGuid=9F798056B9CB474A9EE2FE88063D4D20 + CustomProperties Pin (PinId=4D2AF198B99A445C925AA2A8380C533E,PinName="execute",PinType.PinCategory="exec",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=46363EE0231F4EA186E029977F586416,PinName="then",Direction="EGPD_Output",PinType.PinCategory="exec",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=D3AD4B9A6EA745BD8EC70EE4B33FDB44,PinName="self",PinFriendlyName=NSLOCTEXT("K2Node", "BaseMCDelegateSelfPinName", "Target"),PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.Class'/Script/Engine.AnimDataModel'",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=48F1FF2C45A147C7B390B9D1A35FC3A2,PinName="Delegate",PinFriendlyName=NSLOCTEXT("K2Node", "PinFriendlyDelegatetName", "Event"),PinType.PinCategory="delegate",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(MemberParent="/Script/CoreUObject.Package'/Script/Engine'",MemberName="AnimDataModelModifiedDynamicEvent__DelegateSignature"),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=True,PinType.bIsConst=True,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: [18, 8], + color: Configuration.nodeColors.blue, + icon: SVGIcon.node, + pins: 4, + pinNames: ["Target", "Event"], + delegate: false, + development: false, +}) diff --git a/tests/nodeBindEventtoOnActorHit.spec.js b/tests/nodeBindEventtoOnActorHit.spec.js new file mode 100644 index 0000000..7bd6300 --- /dev/null +++ b/tests/nodeBindEventtoOnActorHit.spec.js @@ -0,0 +1,26 @@ +import Configuration from "../js/Configuration.js" +import SVGIcon from "../js/SVGIcon.js" +import { testNode } from "./fixtures/test.js" + +testNode({ + name: "Bind Event to On Actor Hit", + value: String.raw` + Begin Object Class=/Script/BlueprintGraph.K2Node_AddDelegate Name="K2Node_AddDelegate_0" ExportPath="/Script/BlueprintGraph.K2Node_AddDelegate'/Game/Examples/MazeSolver/Blueprints/MazeSolverTrainer.MazeSolverTrainer:EventGraph.K2Node_AddDelegate_0'" + DelegateReference=(MemberParent="/Script/CoreUObject.Class'/Script/Engine.Actor'",MemberName="OnActorHit") + NodePosX=256 + NodePosY=-48 + NodeGuid=A94C879148610E75EBAC94807E94F5DD + CustomProperties Pin (PinId=252C72EA45F1370E8B00FFB6D5C87B3A,PinName="execute",PinType.PinCategory="exec",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_Event_0 F135CD17D40347269BBBD101437B6AF0,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=66AE85F346F350F62B127B97DFC49563,PinName="then",Direction="EGPD_Output",PinType.PinCategory="exec",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=D7358C004BE0EF6651DE69A7346E77D4,PinName="self",PinFriendlyName=NSLOCTEXT("K2Node", "BaseMCDelegateSelfPinName", "Target"),PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.Class'/Script/Engine.Actor'",PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_CallFunction_0 EDE2516A4F187C93CBF2D7AE88066240,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=180DE95D4FD5AF2404F1CB80F0FBD29E,PinName="Delegate",PinFriendlyName=NSLOCTEXT("K2Node", "PinFriendlyDelegatetName", "Event"),PinType.PinCategory="Delegate",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(MemberParent="/Script/CoreUObject.Package'/Script/Engine'",MemberName="ActorHitSignature__DelegateSignature"),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=True,PinType.bIsConst=True,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: [13.5, 8], + color: Configuration.nodeColors.blue, + icon: SVGIcon.node, + pins: 4, + pinNames: ["Target", "Event"], + delegate: false, + development: false, +}) diff --git a/tests/nodeBindEventtoOnPreInitialize.spec.js b/tests/nodeBindEventtoOnPreInitialize.spec.js new file mode 100644 index 0000000..9111eca --- /dev/null +++ b/tests/nodeBindEventtoOnPreInitialize.spec.js @@ -0,0 +1,26 @@ +import Configuration from "../js/Configuration.js" +import SVGIcon from "../js/SVGIcon.js" +import { testNode } from "./fixtures/test.js" + +testNode({ + name: "Bind Event to On Pre Initialize", + value: String.raw` + Begin Object Class=/Script/BlueprintGraph.K2Node_AddDelegate Name="K2Node_AddDelegate_4" ExportPath="/Script/BlueprintGraph.K2Node_AddDelegate'/Engine/Maps/Templates/NewWorld.NewWorld:PersistentLevel.NewWorld.EventGraph.K2Node_AddDelegate_4'" + DelegateReference=(MemberParent="/Script/CoreUObject.Class'/Script/ControlRig.ControlRigComponent'",MemberName="OnPreInitializeDelegate") + NodePosX=1760 + NodePosY=-688 + NodeGuid=12A5D8F5736842F7B70C88C26D36B422 + CustomProperties Pin (PinId=CF6740C1F0A4487E91E6C33CA32F78B7,PinName="execute",PinType.PinCategory="exec",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=AD533F241A0B44A68FCDFDFE2F698A95,PinName="then",Direction="EGPD_Output",PinType.PinCategory="exec",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=6E432C9EE60143F4890F0BDC6BCF4637,PinName="self",PinFriendlyName=NSLOCTEXT("K2Node", "BaseMCDelegateSelfPinName", "Target"),PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.Class'/Script/ControlRig.ControlRigComponent'",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=8C762AAFD03F4B89A4150D17A3C20598,PinName="Delegate",PinFriendlyName=NSLOCTEXT("K2Node", "PinFriendlyDelegatetName", "Event"),PinType.PinCategory="delegate",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(MemberParent="/Script/CoreUObject.Package'/Script/ControlRig'",MemberName="ControlRigComponentDelegate__DelegateSignature"),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=True,PinType.bIsConst=True,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: [15, 8], + color: Configuration.nodeColors.blue, + icon: SVGIcon.node, + pins: 4, + pinNames: ["Target", "Event"], + delegate: false, + development: false, +}) diff --git a/tests/nodeBitwiseAndInt.spec.js b/tests/nodeBitwiseAndInt.spec.js new file mode 100644 index 0000000..2771edc --- /dev/null +++ b/tests/nodeBitwiseAndInt.spec.js @@ -0,0 +1,31 @@ +import SVGIcon from "../js/SVGIcon.js" +import { expect, testNode } from "./fixtures/test.js" + +testNode({ + name: "Bitwise AND int", + title: "&", + value: String.raw` + Begin Object Class=/Script/BlueprintGraph.K2Node_CommutativeAssociativeBinaryOperator Name="K2Node_CommutativeAssociativeBinaryOperator_7" ExportPath=/Script/BlueprintGraph.K2Node_CommutativeAssociativeBinaryOperator'"/Temp/Untitled_1.Untitled_1:PersistentLevel.Untitled.EventGraph.K2Node_CommutativeAssociativeBinaryOperator_7"' + bIsPureFunc=True + FunctionReference=(MemberParent=/Script/CoreUObject.Class'"/Script/Engine.KismetMathLibrary"',MemberName="And_IntInt") + NodePosX=-128 + NodePosY=-128 + NodeGuid=31C7173497E64F959674B9541C5E5E6A + CustomProperties Pin (PinId=D5A01DF5C9D84769BB13CAC3B62612C6,PinName="self",PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target"),PinToolTip="Target\nKismet Math Library Object Reference",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/Engine.KismetMathLibrary"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultObject="/Script/Engine.Default__KismetMathLibrary",PersistentGuid=00000000000000000000000000000000,bHidden=True,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=EF6F926F005143BB8C751D2ED71FD820,PinName="A",PinToolTip="A\nInteger",PinType.PinCategory="int",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,DefaultValue="0",AutogeneratedDefaultValue="0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=4DFFC112D90C4E59B1D8B4A8278E6BE5,PinName="B",PinToolTip="B\nInteger",PinType.PinCategory="int",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,DefaultValue="0",AutogeneratedDefaultValue="0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=4B661B544EA44016B03B498A7606DA99,PinName="ReturnValue",PinToolTip="Return Value\nInteger\n\nBitwise AND (A & B)",Direction="EGPD_Output",PinType.PinCategory="int",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,DefaultValue="0",AutogeneratedDefaultValue="0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + End Object + `, + size: [9, 5], + pins: 3, + delegate: false, + development: false, + variadic: true, + additionalTest: async (node, pins) => { + for (const pin of pins) { + expect(await pin.evaluate(pin => pin.template.renderIcon().strings.join(""))) + .toStrictEqual(SVGIcon.operationPin.strings.join("")) + } + } +}) diff --git a/tests/nodeBitwiseAndInt64.spec.js b/tests/nodeBitwiseAndInt64.spec.js new file mode 100644 index 0000000..81c0f76 --- /dev/null +++ b/tests/nodeBitwiseAndInt64.spec.js @@ -0,0 +1,41 @@ +import SVGIcon from "../js/SVGIcon.js" +import { expect, testNode } from "./fixtures/test.js" + +testNode({ + name: "Bitwise AND int64", + title: "&", + value: String.raw` + Begin Object Class=/Script/BlueprintGraph.K2Node_CommutativeAssociativeBinaryOperator Name="K2Node_CommutativeAssociativeBinaryOperator_8" ExportPath=/Script/BlueprintGraph.K2Node_CommutativeAssociativeBinaryOperator'"/Temp/Untitled_1.Untitled_1:PersistentLevel.Untitled.EventGraph.K2Node_CommutativeAssociativeBinaryOperator_8"' + bIsPureFunc=True + FunctionReference=(MemberParent=/Script/CoreUObject.Class'"/Script/Engine.KismetMathLibrary"',MemberName="And_Int64Int64") + NodePosX=128 + NodePosY=-128 + NodeGuid=48CCB97A110B4A6F8D54A95E138ABCE3 + CustomProperties Pin (PinId=A9992AAF8CFA4349A77A5BAE866884D3,PinName="self",PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target"),PinToolTip="Target\nKismet Math Library Object Reference",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/Engine.KismetMathLibrary"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultObject="/Script/Engine.Default__KismetMathLibrary",PersistentGuid=00000000000000000000000000000000,bHidden=True,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=7433EDE1E9CE4293BC3C8D73BC9D9E65,PinName="A",PinToolTip="A\nInteger64",PinType.PinCategory="int64",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,DefaultValue="0",AutogeneratedDefaultValue="0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=C5CCE51FCE554859A66EDCA66875B382,PinName="B",PinToolTip="B\nInteger64",PinType.PinCategory="int64",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,DefaultValue="0",AutogeneratedDefaultValue="0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=A4753BC402474CDFB5A2513A2D7FC8A5,PinName="ReturnValue",PinToolTip="Return Value\nInteger64\n\nBitwise AND (A & B)",Direction="EGPD_Output",PinType.PinCategory="int64",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,DefaultValue="0",AutogeneratedDefaultValue="0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + End Object + `, + size: [9, 5], + pins: 3, + delegate: false, + development: false, + variadic: true, + additionalTest: async (node, pins, blueprintPage) => { + for (const pin of pins) { + expect(await pin.evaluate(pin => pin.template.renderIcon().strings.join(""))) + .toStrictEqual(SVGIcon.operationPin.strings.join("")) + } + expect(await pins[0].evaluate(pin => pin.entity.DefaultValue.constructor.serialized)).toBeTruthy() + expect(await pins[1].evaluate(pin => pin.entity.DefaultValue.constructor.serialized)).toBeTruthy() + await pins[0].locator("ueb-input").fill("54") + await blueprintPage.blur() + expect(await pins[0].evaluate(pin => pin.entity.DefaultValue.constructor.serialized)).toBeTruthy() + expect(await pins[0].evaluate(pin => pin.entity.DefaultValue.serialize())).toEqual('"54"') + await pins[1].locator("ueb-input").fill("771") + await blueprintPage.blur() + expect(await pins[1].evaluate(pin => pin.entity.DefaultValue.constructor.serialized)).toBeTruthy() + expect(await pins[1].evaluate(pin => pin.entity.DefaultValue.serialize())).toEqual('"771"') + } +}) diff --git a/tests/nodeBitwiseNotInt.spec.js b/tests/nodeBitwiseNotInt.spec.js new file mode 100644 index 0000000..9dcec7f --- /dev/null +++ b/tests/nodeBitwiseNotInt.spec.js @@ -0,0 +1,30 @@ +import SVGIcon from "../js/SVGIcon.js" +import { expect, testNode } from "./fixtures/test.js" + +testNode({ + name: "Bitwise NOT int", + title: "~", + value: String.raw` + Begin Object Class=/Script/BlueprintGraph.K2Node_CallFunction Name="K2Node_CallFunction_10" ExportPath=/Script/BlueprintGraph.K2Node_CallFunction'"/Temp/Untitled_1.Untitled_1:PersistentLevel.Untitled.EventGraph.K2Node_CallFunction_10"' + bIsPureFunc=True + FunctionReference=(MemberParent=/Script/CoreUObject.Class'"/Script/Engine.KismetMathLibrary"',MemberName="Not_Int") + NodePosX=-128 + NodePosY=-128 + NodeGuid=8EFCE5FB3D8847FC9B7A157358B52801 + CustomProperties Pin (PinId=C52BB542DF824EA7A7F89CE345326ACD,PinName="self",PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target"),PinToolTip="Target\nKismet Math Library Object Reference",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/Engine.KismetMathLibrary"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultObject="/Script/Engine.Default__KismetMathLibrary",PersistentGuid=00000000000000000000000000000000,bHidden=True,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=46BB4962971443EB8B7FB532FADAB165,PinName="A",PinToolTip="A\nInteger",PinType.PinCategory="int",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,DefaultValue="0",AutogeneratedDefaultValue="0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=64C43A0B4D1641688CB90B1706F3CE1F,PinName="ReturnValue",PinToolTip="Return Value\nInteger\n\nBitwise NOT (~A)",Direction="EGPD_Output",PinType.PinCategory="int",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,DefaultValue="0",AutogeneratedDefaultValue="0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + End Object + `, + size: [9, 3], + pins: 2, + delegate: false, + development: false, + variadic: false, + additionalTest: async (node, pins) => { + for (const pin of pins) { + expect(await pin.evaluate(pin => pin.template.renderIcon().strings.join(""))) + .toStrictEqual(SVGIcon.operationPin.strings.join("")) + } + } +}) diff --git a/tests/nodeBitwiseNotInt64.spec.js b/tests/nodeBitwiseNotInt64.spec.js new file mode 100644 index 0000000..af75265 --- /dev/null +++ b/tests/nodeBitwiseNotInt64.spec.js @@ -0,0 +1,30 @@ +import SVGIcon from "../js/SVGIcon.js" +import { expect, testNode } from "./fixtures/test.js" + +testNode({ + name: "Bitwise NOT int64", + title: "~", + value: String.raw` + Begin Object Class=/Script/BlueprintGraph.K2Node_CallFunction Name="K2Node_CallFunction_11" ExportPath=/Script/BlueprintGraph.K2Node_CallFunction'"/Temp/Untitled_1.Untitled_1:PersistentLevel.Untitled.EventGraph.K2Node_CallFunction_11"' + bIsPureFunc=True + FunctionReference=(MemberParent=/Script/CoreUObject.Class'"/Script/Engine.KismetMathLibrary"',MemberName="Not_Int64") + NodePosX=112 + NodePosY=-128 + NodeGuid=F3857767A96A4FD9A8E4FE678DA89BC7 + CustomProperties Pin (PinId=AB8568CF0A4B4E88A88E988A3B45EA37,PinName="self",PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target"),PinToolTip="Target\nKismet Math Library Object Reference",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/Engine.KismetMathLibrary"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultObject="/Script/Engine.Default__KismetMathLibrary",PersistentGuid=00000000000000000000000000000000,bHidden=True,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=FFD7B2F660CA480C835AB2EB846EC468,PinName="A",PinToolTip="A\nInteger64",PinType.PinCategory="int64",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,DefaultValue="0",AutogeneratedDefaultValue="0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=52C04C277D1348A6A507F01E8D31DE96,PinName="ReturnValue",PinToolTip="Return Value\nInteger64\n\nBitwise NOT (~A)",Direction="EGPD_Output",PinType.PinCategory="int64",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,DefaultValue="0",AutogeneratedDefaultValue="0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + End Object + `, + size: [9, 3], + pins: 2, + delegate: false, + development: false, + variadic: false, + additionalTest: async (node, pins) => { + for (const pin of pins) { + expect(await pin.evaluate(pin => pin.template.renderIcon().strings.join(""))) + .toStrictEqual(SVGIcon.operationPin.strings.join("")) + } + } +}) diff --git a/tests/nodeBitwiseOrInt.spec.js b/tests/nodeBitwiseOrInt.spec.js new file mode 100644 index 0000000..ace96b9 --- /dev/null +++ b/tests/nodeBitwiseOrInt.spec.js @@ -0,0 +1,35 @@ +import SVGIcon from "../js/SVGIcon.js" +import { expect, testNode } from "./fixtures/test.js" + +testNode({ + name: "Bitwise OR int", + title: "|", + value: String.raw` + Begin Object Class=/Script/BlueprintGraph.K2Node_CommutativeAssociativeBinaryOperator Name="K2Node_CommutativeAssociativeBinaryOperator_9" ExportPath=/Script/BlueprintGraph.K2Node_CommutativeAssociativeBinaryOperator'"/Temp/Untitled_1.Untitled_1:PersistentLevel.Untitled.EventGraph.K2Node_CommutativeAssociativeBinaryOperator_9"' + NumAdditionalInputs=3 + bIsPureFunc=True + FunctionReference=(MemberParent=/Script/CoreUObject.Class'"/Script/Engine.KismetMathLibrary"',MemberName="Or_IntInt") + NodePosX=-128 + NodePosY=16 + NodeGuid=06CD76925AB9409989EA7D87CE23D6F5 + CustomProperties Pin (PinId=F8954C94C4174CDD84E8B12E07AF3C8E,PinName="self",PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target"),PinToolTip="Target\nKismet Math Library Object Reference",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/Engine.KismetMathLibrary"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultObject="/Script/Engine.Default__KismetMathLibrary",PersistentGuid=00000000000000000000000000000000,bHidden=True,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=13660D801D69401399CD1A1F5A35433B,PinName="A",PinToolTip="A\nInteger",PinType.PinCategory="int",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,DefaultValue="0",AutogeneratedDefaultValue="0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=D3721D48AE4545B59E01352B68C5D5AE,PinName="B",PinToolTip="B\nInteger",PinType.PinCategory="int",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,DefaultValue="0",AutogeneratedDefaultValue="0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=D6418AD11A2E4FD4A3E691DCDD9ED5C2,PinName="ReturnValue",PinToolTip="Return Value\nInteger\n\nBitwise OR (A | B)",Direction="EGPD_Output",PinType.PinCategory="int",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,DefaultValue="0",AutogeneratedDefaultValue="0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=54F9F4C9334341C6B393DDD94521C7F0,PinName="C",PinType.PinCategory="int",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=428ED3DA8C334D96B16D2660499AAD64,PinName="D",PinType.PinCategory="int",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=2B26090C03C7442CB4706D0757901B53,PinName="E",PinType.PinCategory="int",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, 11], + pins: 6, + delegate: false, + development: false, + variadic: true, + additionalTest: async (node, pins) => { + for (const pin of pins) { + expect(await pin.evaluate(pin => pin.template.renderIcon().strings.join(""))) + .toStrictEqual(SVGIcon.operationPin.strings.join("")) + } + } +}) diff --git a/tests/nodeBitwiseOrInt64.spec.js b/tests/nodeBitwiseOrInt64.spec.js new file mode 100644 index 0000000..c745c70 --- /dev/null +++ b/tests/nodeBitwiseOrInt64.spec.js @@ -0,0 +1,33 @@ +import SVGIcon from "../js/SVGIcon.js" +import { expect, testNode } from "./fixtures/test.js" + +testNode({ + name: "Bitwise OR int64", + title: "|", + value: String.raw` + Begin Object Class=/Script/BlueprintGraph.K2Node_CommutativeAssociativeBinaryOperator Name="K2Node_CommutativeAssociativeBinaryOperator_10" ExportPath=/Script/BlueprintGraph.K2Node_CommutativeAssociativeBinaryOperator'"/Temp/Untitled_1.Untitled_1:PersistentLevel.Untitled.EventGraph.K2Node_CommutativeAssociativeBinaryOperator_10"' + NumAdditionalInputs=1 + bIsPureFunc=True + FunctionReference=(MemberParent=/Script/CoreUObject.Class'"/Script/Engine.KismetMathLibrary"',MemberName="Or_Int64Int64") + NodePosX=128 + NodePosY=64 + NodeGuid=490A54B477EA44128BA4024490F503F3 + CustomProperties Pin (PinId=EE1E4196F1554E14A0288F9F68BF25D9,PinName="self",PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target"),PinToolTip="Target\nKismet Math Library Object Reference",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/Engine.KismetMathLibrary"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultObject="/Script/Engine.Default__KismetMathLibrary",PersistentGuid=00000000000000000000000000000000,bHidden=True,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=64AB191561114DA58FA423353A7EAA14,PinName="A",PinToolTip="A\nInteger64",PinType.PinCategory="int64",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,DefaultValue="0",AutogeneratedDefaultValue="0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=4B572FB2A58647ED8869D587215EF6D2,PinName="B",PinToolTip="B\nInteger64",PinType.PinCategory="int64",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,DefaultValue="0",AutogeneratedDefaultValue="0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=BBC01569CA1C4C378917FF3FC42EA6DA,PinName="ReturnValue",PinToolTip="Return Value\nInteger64\n\nBitwise OR (A | B)",Direction="EGPD_Output",PinType.PinCategory="int64",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,DefaultValue="0",AutogeneratedDefaultValue="0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=C00EE5428FE0454B970846CBEEFD5B73,PinName="C",PinType.PinCategory="int64",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, 7], + pins: 4, + delegate: false, + development: false, + variadic: true, + additionalTest: async (node, pins) => { + for (const pin of pins) { + expect(await pin.evaluate(pin => pin.template.renderIcon().strings.join(""))) + .toStrictEqual(SVGIcon.operationPin.strings.join("")) + } + } +}) diff --git a/tests/nodeBitwiseXorInt.spec.js b/tests/nodeBitwiseXorInt.spec.js new file mode 100644 index 0000000..de9cb79 --- /dev/null +++ b/tests/nodeBitwiseXorInt.spec.js @@ -0,0 +1,32 @@ +import SVGIcon from "../js/SVGIcon.js" +import { expect, testNode } from "./fixtures/test.js" + +testNode({ + name: "Bitwise XOR int", + title: "^", + value: String.raw` + Begin Object Class=/Script/BlueprintGraph.K2Node_CallFunction Name="K2Node_CallFunction_12" ExportPath=/Script/BlueprintGraph.K2Node_CallFunction'"/Temp/Untitled_1.Untitled_1:PersistentLevel.Untitled.EventGraph.K2Node_CallFunction_12"' + bIsPureFunc=True + FunctionReference=(MemberParent=/Script/CoreUObject.Class'"/Script/Engine.KismetMathLibrary"',MemberName="Xor_IntInt") + NodePosX=-128 + NodePosY=32 + NodeGuid=81529F08A6E045D6BD6C8BF368729C14 + CustomProperties Pin (PinId=1C2B19C61AC54A92835DDA0AD0750F2E,PinName="self",PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target"),PinToolTip="Target\nKismet Math Library Object Reference",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/Engine.KismetMathLibrary"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultObject="/Script/Engine.Default__KismetMathLibrary",PersistentGuid=00000000000000000000000000000000,bHidden=True,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=153EAE01EAD44FBC9A23A088F3F2BCDD,PinName="A",PinToolTip="A\nInteger",PinType.PinCategory="int",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,DefaultValue="0",AutogeneratedDefaultValue="0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=59E8178A4C394862BEF24B2D3DF9D919,PinName="B",PinToolTip="B\nInteger",PinType.PinCategory="int",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,DefaultValue="0",AutogeneratedDefaultValue="0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=63037115949747768EF0E3164D7C52AD,PinName="ReturnValue",PinToolTip="Return Value\nInteger\n\nBitwise XOR (A ^ B)",Direction="EGPD_Output",PinType.PinCategory="int",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,DefaultValue="0",AutogeneratedDefaultValue="0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + End Object + + `, + size: [9, 5], + pins: 3, + delegate: false, + development: false, + variadic: false, + additionalTest: async (node, pins) => { + for (const pin of pins) { + expect(await pin.evaluate(pin => pin.template.renderIcon().strings.join(""))) + .toStrictEqual(SVGIcon.operationPin.strings.join("")) + } + } +}) diff --git a/tests/nodeBitwiseXorInt64.spec.js b/tests/nodeBitwiseXorInt64.spec.js new file mode 100644 index 0000000..e4def86 --- /dev/null +++ b/tests/nodeBitwiseXorInt64.spec.js @@ -0,0 +1,31 @@ +import SVGIcon from "../js/SVGIcon.js" +import { expect, testNode } from "./fixtures/test.js" + +testNode({ + name: "Bitwise XOR int64", + title: "^", + value: String.raw` + Begin Object Class=/Script/BlueprintGraph.K2Node_CallFunction Name="K2Node_CallFunction_13" ExportPath=/Script/BlueprintGraph.K2Node_CallFunction'"/Temp/Untitled_1.Untitled_1:PersistentLevel.Untitled.EventGraph.K2Node_CallFunction_13"' + bIsPureFunc=True + FunctionReference=(MemberParent=/Script/CoreUObject.Class'"/Script/Engine.KismetMathLibrary"',MemberName="Xor_Int64Int64") + NodePosX=128 + NodePosY=256 + NodeGuid=A95FABA8132C4BC0B4E35D2CAB877B7D + CustomProperties Pin (PinId=93AD25D5F9E846CFA01F5684AA015EFA,PinName="self",PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target"),PinToolTip="Target\nKismet Math Library Object Reference",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/Engine.KismetMathLibrary"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultObject="/Script/Engine.Default__KismetMathLibrary",PersistentGuid=00000000000000000000000000000000,bHidden=True,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=06FE8043E6454053B2F89474C4C028B5,PinName="A",PinToolTip="A\nInteger64",PinType.PinCategory="int64",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,DefaultValue="0",AutogeneratedDefaultValue="0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=E025E8CC7D21449A8FF29F755BC2180B,PinName="B",PinToolTip="B\nInteger64",PinType.PinCategory="int64",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,DefaultValue="0",AutogeneratedDefaultValue="0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=F43AEAD2428E400BB22DEAD9F4D05BCF,PinName="ReturnValue",PinToolTip="Return Value\nInteger64\n\nBitwise XOR (A ^ B)",Direction="EGPD_Output",PinType.PinCategory="int64",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,DefaultValue="0",AutogeneratedDefaultValue="0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + End Object + `, + size: [9, 5], + pins: 3, + delegate: false, + development: false, + variadic: false, + additionalTest: async (node, pins) => { + for (const pin of pins) { + expect(await pin.evaluate(pin => pin.template.renderIcon().strings.join(""))) + .toStrictEqual(SVGIcon.operationPin.strings.join("")) + } + } +}) diff --git a/tests/nodeBranch.spec.js b/tests/nodeBranch.spec.js new file mode 100644 index 0000000..106d40c --- /dev/null +++ b/tests/nodeBranch.spec.js @@ -0,0 +1,25 @@ +import Configuration from "../js/Configuration.js" +import SVGIcon from "../js/SVGIcon.js" +import { testNode } from "./fixtures/test.js" + +testNode({ + name: "Branch", + value: String.raw` + Begin Object Class=/Script/BlueprintGraph.K2Node_IfThenElse Name="K2Node_IfThenElse_3" + NodePosX=-864 + NodePosY=-112 + NodeGuid=394F6A9DE87E4DAF8815B0BC582F67F4 + CustomProperties Pin (PinId=370DE2594FC6D3DF81672491D09FA4F2,PinName="execute",PinType.PinCategory="exec",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_ComponentBoundEvent_2 CA668D354E07DD5D3FDF828A8DCB31E2,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=CC13602F47301B384984DD90F31BBF44,PinName="Condition",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,DefaultValue="true",AutogeneratedDefaultValue="true",LinkedTo=(K2Node_VariableGet_6 67589E5F4FC4B9ADA6B13EA1FE75D4BD,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=5144C992425351C9738579B61BF10CFB,PinName="then",PinFriendlyName=NSLOCTEXT("K2Node", "true", "true"),Direction="EGPD_Output",PinType.PinCategory="exec",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=79F953C54BDCD44353369F803937AC7C,PinName="else",PinFriendlyName=NSLOCTEXT("K2Node", "false", "false"),Direction="EGPD_Output",PinType.PinCategory="exec",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_IfThenElse_22 2937CFDB4A1C853A34A3B9A67E534029,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + End Object + `, + size: [12.5, 6], + color: Configuration.nodeColors.gray, + icon: SVGIcon.branchNode, + pins: 4, + pinNames: ["Condition", "True", "False"], + delegate: false, + development: false, +}) diff --git a/tests/nodeCalculateAVolumeTexturesDistanceFieldGradient.spec.js b/tests/nodeCalculateAVolumeTexturesDistanceFieldGradient.spec.js new file mode 100644 index 0000000..b2d75e0 --- /dev/null +++ b/tests/nodeCalculateAVolumeTexturesDistanceFieldGradient.spec.js @@ -0,0 +1,63 @@ +import { css } from "lit" +import Configuration from "../js/Configuration.js" +import { expect, testNode } from "./fixtures/test.js" + +testNode({ + name: "Calculate A Volume Textures Distance Field Gradient", + value: String.raw` + Begin Object Class=/Script/NiagaraEditor.NiagaraNodeFunctionCall Name="NiagaraNodeFunctionCall_118" ExportPath="/Script/NiagaraEditor.NiagaraNodeFunctionCall'/Engine/Transient.NewNiagaraScript:NiagaraScriptSource_0.NiagaraGraph_0.NiagaraNodeFunctionCall_118'" + FunctionScript="/Script/Niagara.NiagaraScript'/Niagara/Functions/Textures/CalculateA_VolumeTexturesDistanceFieldGradient.CalculateA_VolumeTexturesDistanceFieldGradient'" + SelectedScriptVersion=FE54E5B243F724F59CBE18B14F541840 + CachedChangeId=DC7328824039207713ADFF82DEAF3A32 + FunctionDisplayName="CalculateA_VolumeTexturesDistanceFieldGradient" + ChangeId=5A8AF63A07AB47CCBF806D83FFB9020F + NodePosX=-512 + NodePosY=-512 + NodeGuid=3803C1B7F13C4D818D7AF71764B9957B + CustomProperties Pin (PinId=1C49656E46D540D0AC5961597B947D85,PinName="Sample Position",PinType.PinCategory="Type",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.ScriptStruct'/Script/Niagara.NiagaraPosition'",PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="0.000,0.000,0.000",AutogeneratedDefaultValue="0.000,0.000,0.000",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=1FF0DD84BE324BEE94AC35A5D83896E1,PinName="Scale Factor",PinType.PinCategory="Type",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.ScriptStruct'/Script/Niagara.NiagaraFloat'",PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="1.000000",AutogeneratedDefaultValue="1.000000",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=A2030D2728C34982A599AC7EAE2FDDE0,PinName="Volume Texture",PinType.PinCategory="Class",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.Class'/Script/Niagara.NiagaraDataInterfaceVolumeTexture'",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=True,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=FCCC0AC1CCD54A099E450D4A4FA6A23C,PinName="Volume Center Location",PinType.PinCategory="Type",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.ScriptStruct'/Script/Niagara.NiagaraPosition'",PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="0.000,0.000,0.000",AutogeneratedDefaultValue="0.000,0.000,0.000",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=F1BA4EFE91554666A80389736EB5005B,PinName="Volume Extents",PinType.PinCategory="Type",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.ScriptStruct'/Script/CoreUObject.Vector3f'",PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="0.000,0.000,0.000",AutogeneratedDefaultValue="0.000,0.000,0.000",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=40512C3E4F5C4B85BAC287179458EDEF,PinName="Distance Field Texture Channel",PinType.PinCategory="Enum",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/Engine.UserDefinedEnum'/Niagara/Enums/ENiagara_Float4Channel.ENiagara_Float4Channel'",PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="NewEnumerator0",AutogeneratedDefaultValue="NewEnumerator0",PersistentGuid=CC547F87ED03FB8EEA661F18ABDF8C16,bHidden=False,bNotConnectable=True,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=A5FEC96B447C42EB9CA7BE93AB04F93E,PinName="Vector To Surface",Direction="EGPD_Output",PinType.PinCategory="Type",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.ScriptStruct'/Script/CoreUObject.Vector3f'",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=True,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=6D55F00292734872B750828E15779CD5,PinName="Distance To Surface",Direction="EGPD_Output",PinType.PinCategory="Type",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.ScriptStruct'/Script/Niagara.NiagaraFloat'",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=True,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=CC5826BFCC784BECA71B5B09C145DCF7,PinName="Sampled Color",Direction="EGPD_Output",PinType.PinCategory="Type",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.ScriptStruct'/Script/CoreUObject.Vector4f'",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=True,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=A22662833F8446309AF4E72E09B2A6C5,PinName="Field Gradient",Direction="EGPD_Output",PinType.PinCategory="Type",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.ScriptStruct'/Script/CoreUObject.Vector3f'",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=True,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=59A2DB801C7D4E9180793F5F1F597B4F,PinName="IsoSurface Position",Direction="EGPD_Output",PinType.PinCategory="Type",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.ScriptStruct'/Script/Niagara.NiagaraPosition'",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=True,bAdvancedView=False,bOrphanedPin=False,) + End Object + `, + size: [25, 18], + icon: null, + color: Configuration.nodeColors.darkerBlue, + pins: 11, + pinNames: [ + "Sample Position", + "Scale Factor", + "Volume Texture", + "Volume Center Location", + "Volume Extents", + "Distance Field Texture Channel", + "Vector To Surface", + "Distance To Surface", + "Sampled Color", + "Field Gradient", + "Iso Surface Position", + ], + delegate: false, + development: false, + additionalTest: async (node, pins) => { + expect(await node.evaluate(node => node.classList.contains("ueb-node-style-glass"))).toBeFalsy() + expect(await node.evaluate(node => node.classList.contains("ueb-node-style-default"))).toBeTruthy() + expect(await pins[0].evaluate(p => p.entity.pinColor().cssText)).toBe(css`251, 146, 251`.cssText) + expect(await pins[1].evaluate(p => p.entity.pinColor().cssText)).toBe(css`160, 250, 68`.cssText) + expect(await pins[2].evaluate(p => p.entity.pinColor().cssText)).toBe(css`0, 168, 242`.cssText) + expect(await pins[3].evaluate(p => p.entity.pinColor().cssText)).toBe(css`251, 146, 251`.cssText) + expect(await pins[4].evaluate(p => p.entity.pinColor().cssText)).toBe(css`250, 200, 36`.cssText) + expect(await pins[6].evaluate(p => p.entity.pinColor().cssText)).toBe(css`250, 200, 36`.cssText) + expect(await pins[7].evaluate(p => p.entity.pinColor().cssText)).toBe(css`160, 250, 68`.cssText) + expect(await pins[8].evaluate(p => p.entity.pinColor().cssText)).toBe(css`0, 88, 200`.cssText) + expect(await pins[9].evaluate(p => p.entity.pinColor().cssText)).toBe(css`250, 200, 36`.cssText) + expect(await pins[10].evaluate(p => p.entity.pinColor().cssText)).toBe(css`251, 146, 251`.cssText) + }, +}) diff --git a/tests/nodeCallWeirdName.spec.js b/tests/nodeCallWeirdName.spec.js new file mode 100644 index 0000000..9bf8753 --- /dev/null +++ b/tests/nodeCallWeirdName.spec.js @@ -0,0 +1,24 @@ +import Configuration from "../js/Configuration.js" +import SVGIcon from "../js/SVGIcon.js" +import { testNode } from "./fixtures/test.js" + +testNode({ + name: "Call AS!%sasdAdsadDD", + value: String.raw` + Begin Object Class=/Script/BlueprintGraph.K2Node_CallDelegate Name="K2Node_CallDelegate_0" ExportPath=/Script/BlueprintGraph.K2Node_CallDelegate'"/PCG/BP_Elements/PCGAsset.PCGAsset:EventGraph.K2Node_CallDelegate_0"' + "DelegateReference"=(MemberName="AS!%sasdAdsadDD",MemberGuid=FB6F7CD342716A4FA22AA6AD6E6B7ED9,bSelfContext=True) + "NodePosX"=-176 + "NodePosY"=368 + "NodeGuid"=DE76D7A748D78DF77131B0AE166442A6 + CustomProperties Pin (PinId=C329158B42D4E4DA1CAEF7A04ED77100,PinName="execute",PinType.PinCategory="exec",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=8D92F70C46C94C389AAC3E87191AB46A,PinName="then",Direction="EGPD_Output",PinType.PinCategory="exec",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=88182FCB4DE7B6D80AD1B79906069691,PinName="self",PinFriendlyName=NSLOCTEXT("K2Node", "BaseMCDelegateSelfPinName", "Target"),PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/Engine.BlueprintGeneratedClass'"/PCG/BP_Elements/PCGAsset.PCGAsset_C"',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 + `, + color: Configuration.nodeColors.blue, + icon: SVGIcon.node, + pins: 3, + pinNames: ["Target"], + delegate: false, + development: false, +}) diff --git a/tests/nodeCanJump.spec.js b/tests/nodeCanJump.spec.js new file mode 100644 index 0000000..3d0ae94 --- /dev/null +++ b/tests/nodeCanJump.spec.js @@ -0,0 +1,26 @@ +import Configuration from "../js/Configuration.js" +import SVGIcon from "../js/SVGIcon.js" +import { testNode } from "./fixtures/test.js" + +testNode({ + name: "Can Jump", + subtitle: "Target is Character", + value: String.raw` + Begin Object Class=/Script/BlueprintGraph.K2Node_CallFunction Name="K2Node_CallFunction_8" + bIsPureFunc=True + bIsConstFunc=True + FunctionReference=(MemberParent=/Script/CoreUObject.Class'"/Script/Engine.Character"',MemberName="CanJump") + NodePosX=-672 + NodePosY=192 + NodeGuid=B02C8FE6AC8446D0841E7AC6539684A9 + CustomProperties Pin (PinId=B561A480CA65436A864A12201A469A6A,PinName="self",PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target"),PinToolTip="Target\nCharacter Object Reference",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/Engine.Character"',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=446739D0F2FB4ADD99427D3361351BFF,PinName="ReturnValue",PinToolTip="Return Value\nBoolean\n\nWhether the character can jump in the current state.",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,DefaultValue="false",AutogeneratedDefaultValue="false",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + End Object + `, + color: Configuration.nodeColors.green, + icon: SVGIcon.functionSymbol, + pins: 2, + pinNames: ["Target", "Return Value"], + delegate: false, + development: false, +}) diff --git a/tests/nodeComment.spec.js b/tests/nodeComment.spec.js new file mode 100644 index 0000000..4326822 --- /dev/null +++ b/tests/nodeComment.spec.js @@ -0,0 +1,31 @@ +import { testNode } from "./fixtures/test.js" + +testNode({ + name: "Comment", + value: String.raw` + Begin Object Class=/Script/UnrealEd.MaterialGraphNode_Comment Name="MaterialGraphNode_Comment_0" ExportPath=/Script/UnrealEd.MaterialGraphNode_Comment'"/Engine/Transient.M_CobbleStone_Smooth:MaterialGraph_0.MaterialGraphNode_Comment_0"' + Begin Object Class=/Script/Engine.MaterialExpressionComment Name="MaterialExpressionComment_0" ExportPath=/Script/Engine.MaterialExpressionComment'"/Engine/Transient.M_CobbleStone_Smooth:MaterialGraph_0.MaterialGraphNode_Comment_0.MaterialExpressionComment_0"' + End Object + Begin Object Name="MaterialExpressionComment_0" ExportPath=/Script/Engine.MaterialExpressionComment'"/Engine/Transient.M_CobbleStone_Smooth:MaterialGraph_0.MaterialGraphNode_Comment_0.MaterialExpressionComment_0"' + SizeX=249 + SizeY=165 + Text="Comment" + MaterialExpressionEditorX=-5920 + MaterialExpressionEditorY=-704 + MaterialExpressionGuid=E21961B2B09144CF8607171C9D1E3489 + End Object + MaterialExpressionComment=/Script/Engine.MaterialExpressionComment'"MaterialExpressionComment_0"' + bCommentBubbleVisible_InDetailsPanel=False + NodePosX=-5920 + NodePosY=-704 + NodeWidth=249 + NodeHeight=165 + bCommentBubblePinned=False + bCommentBubbleVisible=False + NodeComment="Comment" + NodeGuid=A04CE0EEECF047A4918AC9B13818854E + End Object + `, + delegate: false, + development: false, +}) diff --git a/tests/nodeConstant.spec.js b/tests/nodeConstant.spec.js new file mode 100644 index 0000000..051db1d --- /dev/null +++ b/tests/nodeConstant.spec.js @@ -0,0 +1,41 @@ +import Configuration from "../js/Configuration.js" +import NumberEntity from "../js/entity/NumberEntity.js" +import { expect, testNode } from "./fixtures/test.js" + +testNode({ + name: "Constant", + title: "1e+04", + value: String.raw` + Begin Object Class=/Script/UnrealEd.MaterialGraphNode Name="MaterialGraphNode_41" ExportPath=/Script/UnrealEd.MaterialGraphNode'"/Engine/Transient.M_Brick_Cut_Stone:MaterialGraph_0.MaterialGraphNode_41"' + Begin Object Class=/Script/Engine.MaterialExpressionConstant Name="MaterialExpressionConstant_0" ExportPath=/Script/Engine.MaterialExpressionConstant'"/Engine/Transient.M_Brick_Cut_Stone:MaterialGraph_0.MaterialGraphNode_41.MaterialExpressionConstant_0"' + End Object + Begin Object Name="MaterialExpressionConstant_0" ExportPath=/Script/Engine.MaterialExpressionConstant'"/Engine/Transient.M_Brick_Cut_Stone:MaterialGraph_0.MaterialGraphNode_41.MaterialExpressionConstant_0"' + R=10000.000000 + MaterialExpressionEditorX=-1328 + MaterialExpressionEditorY=-880 + MaterialExpressionGuid=1149D6828E794743B8343514F4B5E579 + Material=/Script/UnrealEd.PreviewMaterial'"/Engine/Transient.M_Brick_Cut_Stone"' + bCollapsed=False + End Object + MaterialExpression=/Script/Engine.MaterialExpressionConstant'"MaterialExpressionConstant_0"' + NodePosX=-1328 + NodePosY=-880 + NodeGuid=087DAB628E1148BE89BB1DBC720109F1 + CustomProperties Pin (PinId=A4EA20596A6C410598615F5328D298C4,PinName="Value",PinType.PinCategory="optional",PinType.PinSubCategory="red",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,DefaultValue="10000.0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=True,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=99BE24A176124E02830C5F17A7DEF554,PinName="Output",PinFriendlyName=NSLOCTEXT("MaterialGraphNode", "Space", " "),Direction="EGPD_Output",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,) + End Object + `, + color: Configuration.nodeColors.green, + icon: null, + pins: 2, + pinNames: ["Value"], + delegate: false, + development: false, + additionalTest: async node => { + const value = 10000.0 + /** @type {Locator>} */ + const pin = node.locator("ueb-pin").first() + expect(await pin.evaluate(pin => pin.getDefaultValue().valueOf())).toBeCloseTo(value) + await expect(node.locator("ueb-input")).toHaveText([NumberEntity.printNumber(value)]) + } +}) diff --git a/tests/nodeConstant2Vector.spec.js b/tests/nodeConstant2Vector.spec.js new file mode 100644 index 0000000..a1c2118 --- /dev/null +++ b/tests/nodeConstant2Vector.spec.js @@ -0,0 +1,48 @@ +import Configuration from "../js/Configuration.js" +import NumberEntity from "../js/entity/NumberEntity.js" +import { expect, testNode } from "./fixtures/test.js" + +testNode({ + name: "Constant2Vector", + title: "0.1,23.9", + value: String.raw` + Begin Object Class=/Script/UnrealEd.MaterialGraphNode Name="MaterialGraphNode_42" ExportPath=/Script/UnrealEd.MaterialGraphNode'"/Engine/Transient.M_Brick_Cut_Stone:MaterialGraph_0.MaterialGraphNode_42"' + Begin Object Class=/Script/Engine.MaterialExpressionConstant2Vector Name="MaterialExpressionConstant2Vector_1" ExportPath=/Script/Engine.MaterialExpressionConstant2Vector'"/Engine/Transient.M_Brick_Cut_Stone:MaterialGraph_0.MaterialGraphNode_42.MaterialExpressionConstant2Vector_1"' + End Object + Begin Object Name="MaterialExpressionConstant2Vector_1" ExportPath=/Script/Engine.MaterialExpressionConstant2Vector'"/Engine/Transient.M_Brick_Cut_Stone:MaterialGraph_0.MaterialGraphNode_42.MaterialExpressionConstant2Vector_1"' + R=0.100000 + G=23.888880 + MaterialExpressionEditorX=-1312 + MaterialExpressionEditorY=-1312 + MaterialExpressionGuid=E1302404B22A4D66BB39F9C2652EA0A5 + Material=/Script/UnrealEd.PreviewMaterial'"/Engine/Transient.M_Brick_Cut_Stone"' + End Object + MaterialExpression=/Script/Engine.MaterialExpressionConstant2Vector'"MaterialExpressionConstant2Vector_1"' + NodePosX=-1312 + NodePosY=-1312 + NodeGuid=50998E65A4E54B04A39EADA323DEEEE0 + CustomProperties Pin (PinId=F0B9EDE0763E414096FA82A0C1D3B3D3,PinName="X",PinType.PinCategory="optional",PinType.PinSubCategory="red",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,DefaultValue="0.1",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=True,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=A5A2FCBE348D4075A3F7FCAD9299C9CB,PinName="Y",PinType.PinCategory="optional",PinType.PinSubCategory="red",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,DefaultValue="23.88888",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=True,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=FF6B0DF61B3849DEA00B539430E73C90,PinName="Output",PinFriendlyName=NSLOCTEXT("MaterialGraphNode", "Space", " "),Direction="EGPD_Output",PinType.PinCategory="mask",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=68FF49DB3534433CB8A7486036E434B7,PinName="Output2",PinFriendlyName=NSLOCTEXT("MaterialGraphNode", "Space", " "),Direction="EGPD_Output",PinType.PinCategory="mask",PinType.PinSubCategory="red",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=A98F7CB8EB5D467D8E2217BF4A1AFA71,PinName="Output3",PinFriendlyName=NSLOCTEXT("MaterialGraphNode", "Space", " "),Direction="EGPD_Output",PinType.PinCategory="mask",PinType.PinSubCategory="green",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 + `, + color: Configuration.nodeColors.yellow, + icon: null, + pins: 5, + pinNames: ["X", "Y"], + delegate: false, + development: false, + additionalTest: async node => { + const x = 0.1 + const y = 23.88888 + /** @type {Locator>} */ + const xPin = node.locator("ueb-pin").nth(0) + /** @type {Locator>} */ + const yPin = node.locator("ueb-pin").nth(1) + expect(await xPin.evaluate(pin => pin.getDefaultValue().valueOf())).toBeCloseTo(x) + expect(await yPin.evaluate(pin => pin.getDefaultValue().valueOf())).toBeCloseTo(y) + await expect(node.locator("ueb-input")).toHaveText([NumberEntity.printNumber(x), NumberEntity.printNumber(y)]) + } +}) diff --git a/tests/nodeConstant3Vector.spec.js b/tests/nodeConstant3Vector.spec.js new file mode 100644 index 0000000..27445c1 --- /dev/null +++ b/tests/nodeConstant3Vector.spec.js @@ -0,0 +1,44 @@ +import Configuration from "../js/Configuration.js" +import NumberEntity from "../js/entity/NumberEntity.js" +import { expect, testNode } from "./fixtures/test.js" + +testNode({ + name: "Constant3Vector", + title: "0.00432,123,7.66e+09", + value: String.raw` + Begin Object Class=/Script/UnrealEd.MaterialGraphNode Name="MaterialGraphNode_40" ExportPath=/Script/UnrealEd.MaterialGraphNode'"/Engine/Transient.M_Brick_Cut_Stone:MaterialGraph_0.MaterialGraphNode_40"' + Begin Object Class=/Script/Engine.MaterialExpressionConstant3Vector Name="MaterialExpressionConstant3Vector_1" ExportPath=/Script/Engine.MaterialExpressionConstant3Vector'"/Engine/Transient.M_Brick_Cut_Stone:MaterialGraph_0.MaterialGraphNode_40.MaterialExpressionConstant3Vector_1"' + End Object + Begin Object Name="MaterialExpressionConstant3Vector_1" ExportPath=/Script/Engine.MaterialExpressionConstant3Vector'"/Engine/Transient.M_Brick_Cut_Stone:MaterialGraph_0.MaterialGraphNode_40.MaterialExpressionConstant3Vector_1"' + Constant=(R=0.004320,G=123.199997,B=7657650176.000000,A=0.000000) + MaterialExpressionEditorX=-2592 + MaterialExpressionEditorY=-688 + MaterialExpressionGuid=6854D92803B449F79902FC5BE6D244F9 + Material=/Script/UnrealEd.PreviewMaterial'"/Engine/Transient.M_Brick_Cut_Stone"' + End Object + MaterialExpression=/Script/Engine.MaterialExpressionConstant3Vector'"MaterialExpressionConstant3Vector_1"' + NodePosX=-2592 + NodePosY=-688 + NodeGuid=A166C6EF5D5D4C298F8549BFCD353E30 + CustomProperties Pin (PinId=8CFCA073717A4E7795F803C9A3F3ADA6,PinName="Constant",PinType.PinCategory="optional",PinType.PinSubCategory="rgb",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,DefaultValue="0.00432,123.199997,7657650176.0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=True,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=CD2387366A1745BA9A1F861F7698480A,PinName="Output",PinFriendlyName=NSLOCTEXT("MaterialGraphNode", "Space", " "),Direction="EGPD_Output",PinType.PinCategory="mask",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=F1B3B937A4074949AA46A2D9743D51A1,PinName="Output2",PinFriendlyName=NSLOCTEXT("MaterialGraphNode", "Space", " "),Direction="EGPD_Output",PinType.PinCategory="mask",PinType.PinSubCategory="red",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=2EE41C91F9B841ADA834AA42D10ADE20,PinName="Output3",PinFriendlyName=NSLOCTEXT("MaterialGraphNode", "Space", " "),Direction="EGPD_Output",PinType.PinCategory="mask",PinType.PinSubCategory="green",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=A4B265999B284DB0A5175E969C471A17,PinName="Output4",PinFriendlyName=NSLOCTEXT("MaterialGraphNode", "Space", " "),Direction="EGPD_Output",PinType.PinCategory="mask",PinType.PinSubCategory="blue",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 + `, + color: Configuration.nodeColors.yellow, + icon: null, + pins: 5, + pinNames: ["Constant"], + delegate: false, + development: false, + additionalTest: async node => { + /** @type {Locator>} */ + const input = node.locator("ueb-pin").first() + const values = await input.evaluate(pin => pin.getDefaultValue().toArray()) + const expected = [0.00432, 123.199997, 7657650176.0] + expected.forEach((v, i) => expect(v).toBeCloseTo(values[i])) + await expect(input.locator("ueb-input")).toHaveText(expected.map(v => NumberEntity.printNumber(v))) + } +}) diff --git a/tests/nodeConstant4Vector.spec.js b/tests/nodeConstant4Vector.spec.js new file mode 100644 index 0000000..ba70a12 --- /dev/null +++ b/tests/nodeConstant4Vector.spec.js @@ -0,0 +1,49 @@ +import Configuration from "../js/Configuration.js" +import { expect, testNode } from "./fixtures/test.js" + +testNode({ + name: "Constant4Vector", + title: "4,10.5,2.5e+03,0.33", + value: String.raw` + Begin Object Class=/Script/UnrealEd.MaterialGraphNode Name="MaterialGraphNode_45" ExportPath=/Script/UnrealEd.MaterialGraphNode'"/Engine/Transient.M_Brick_Cut_Stone:MaterialGraph_0.MaterialGraphNode_45"' + Begin Object Class=/Script/Engine.MaterialExpressionConstant4Vector Name="MaterialExpressionConstant4Vector_1" ExportPath=/Script/Engine.MaterialExpressionConstant4Vector'"/Engine/Transient.M_Brick_Cut_Stone:MaterialGraph_0.MaterialGraphNode_45.MaterialExpressionConstant4Vector_1"' + End Object + Begin Object Name="MaterialExpressionConstant4Vector_1" ExportPath=/Script/Engine.MaterialExpressionConstant4Vector'"/Engine/Transient.M_Brick_Cut_Stone:MaterialGraph_0.MaterialGraphNode_45.MaterialExpressionConstant4Vector_1"' + Constant=(R=4.000000,G=10.500000,B=2500.669922,A=0.330000) + MaterialExpressionEditorX=-2864 + MaterialExpressionEditorY=-1600 + MaterialExpressionGuid=FA680399FB1F40299DCCD649976E2007 + Material=/Script/UnrealEd.PreviewMaterial'"/Engine/Transient.M_Brick_Cut_Stone"' + End Object + MaterialExpression=/Script/Engine.MaterialExpressionConstant4Vector'"MaterialExpressionConstant4Vector_1"' + NodePosX=-2864 + NodePosY=-1600 + NodeGuid=E48583AF6A9443409451AADB2BB950D8 + CustomProperties Pin (PinId=053AE05C1AE341DA9DF315E7AD1C181C,PinName="Constant",PinType.PinCategory="optional",PinType.PinSubCategory="rgba",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,DefaultValue="(R=4.000000,G=10.500000,B=2500.669922,A=0.330000)",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=True,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=DE4B35BE73EA4746848199EF88522E9F,PinName="Output",PinFriendlyName=NSLOCTEXT("MaterialGraphNode", "Space", " "),Direction="EGPD_Output",PinType.PinCategory="mask",PinType.PinSubCategory="rgba",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=68ECEB1DC6FD474285DCD24084C6791D,PinName="Output2",PinFriendlyName=NSLOCTEXT("MaterialGraphNode", "Space", " "),Direction="EGPD_Output",PinType.PinCategory="mask",PinType.PinSubCategory="red",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=4781E87620764899BAFA52A198FBD3CD,PinName="Output3",PinFriendlyName=NSLOCTEXT("MaterialGraphNode", "Space", " "),Direction="EGPD_Output",PinType.PinCategory="mask",PinType.PinSubCategory="green",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=447371DFAD4C468993232380A3E37707,PinName="Output4",PinFriendlyName=NSLOCTEXT("MaterialGraphNode", "Space", " "),Direction="EGPD_Output",PinType.PinCategory="mask",PinType.PinSubCategory="blue",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=AFCF5ADE766948A2889F0FAC51FDA44D,PinName="Output5",PinFriendlyName=NSLOCTEXT("MaterialGraphNode", "Space", " "),Direction="EGPD_Output",PinType.PinCategory="mask",PinType.PinSubCategory="alpha",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 + `, + color: Configuration.nodeColors.yellow, + icon: null, + pins: 6, + pinNames: ["Constant"], + delegate: false, + development: false, + additionalTest: async (node, pins) => { + const r = 4.0 + const g = 10.5 + const b = 2500.669922 + const a = 0.33 + /** @type {Locator>} */ + const pin = pins[0] + const rgba = await pin.evaluate(node => node.getDefaultValue().toArray()) + expect(rgba[0]).toBeCloseTo(r) + expect(rgba[1]).toBeCloseTo(g) + expect(rgba[2]).toBeCloseTo(b) + expect(rgba[3]).toBeCloseTo(a) + } +}) diff --git a/tests/nodeConstructionScript.spec.js b/tests/nodeConstructionScript.spec.js new file mode 100644 index 0000000..8af136d --- /dev/null +++ b/tests/nodeConstructionScript.spec.js @@ -0,0 +1,22 @@ +import Configuration from "../js/Configuration.js" +import SVGIcon from "../js/SVGIcon.js" +import { expect, testNode } from "./fixtures/test.js" + +testNode({ + name: "Construction Script", + value: String.raw` + Begin Object Class=/Script/BlueprintGraph.K2Node_FunctionEntry Name="K2Node_FunctionEntry_11" + bEnforceConstCorrectness=False + FunctionReference=(MemberParent=/Script/CoreUObject.Class'"/Script/Engine.Actor"',MemberName="UserConstructionScript") + NodePosX=16 + NodePosY=-32 + NodeGuid=521B69F742A30F8EA5B92B8CC131AB54 + CustomProperties Pin (PinId=DE073CBD9EE44F4AA43C9BE239BBCB33,PinName="then",Direction="EGPD_Output",PinType.PinCategory="exec",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_CallFunction_4248 064F1F38F42D43ADA53BC41AFC6FBE9F,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + End Object + `, + color: Configuration.nodeColors.violet, + icon: SVGIcon.node, + pins: 1, + delegate: false, + development: false, +}) diff --git a/tests/nodeCreateEvent.spec.js b/tests/nodeCreateEvent.spec.js new file mode 100644 index 0000000..1460b24 --- /dev/null +++ b/tests/nodeCreateEvent.spec.js @@ -0,0 +1,22 @@ +import Configuration from "../js/Configuration.js" +import SVGIcon from "../js/SVGIcon.js" +import { testNode } from "./fixtures/test.js" + +testNode({ + name: "Create Event", + value: String.raw` + Begin Object Class=/Script/BlueprintGraph.K2Node_CreateDelegate Name="K2Node_CreateDelegate_1" + NodePosX=368 + NodePosY=-224 + NodeGuid=0FA4EE58928C4CF285441256561E250A + CustomProperties Pin (PinId=4735A6AC4F9F7A3AFD64B2801F623052,PinName="self",PinFriendlyName=NSLOCTEXT("K2Node", "CreateDelegate_ObjectInputName", "Object"),PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/CoreUObject.Object"',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=0A66F49740A5DDD42C1AECA040844EBF,PinName="OutputDelegate",PinFriendlyName=NSLOCTEXT("K2Node", "CreateDelegate_DelegateOutName", "Event"),Direction="EGPD_Output",PinType.PinCategory="delegate",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 + `, + color: Configuration.nodeColors.green, + icon: SVGIcon.node, + pins: 2, + pinNames: ["Object", "Event"], + delegate: false, + development: false, +}) diff --git a/tests/nodeDebugKey0.spec.js b/tests/nodeDebugKey0.spec.js new file mode 100644 index 0000000..519d574 --- /dev/null +++ b/tests/nodeDebugKey0.spec.js @@ -0,0 +1,26 @@ +import Configuration from "../js/Configuration.js" +import SVGIcon from "../js/SVGIcon.js" +import { testNode } from "./fixtures/test.js" + +testNode({ + name: "Debug Key 0", + value: String.raw` + Begin Object Class=/Script/InputBlueprintNodes.K2Node_InputDebugKey Name="K2Node_InputDebugKey_1" + InputKey=Zero + NodePosX=-304 + NodePosY=192 + NodeGuid=C07BBFC668144C4FB437B3F6B355E184 + CustomProperties Pin (PinId=9F869036E3A744A8A43AA43A7620F55F,PinName="Pressed",Direction="EGPD_Output",PinType.PinCategory="exec",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=6E45643AF86B4A62A751A9B63A57862A,PinName="Released",Direction="EGPD_Output",PinType.PinCategory="exec",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=EC8FCA3A4A034EA59784E3A145C8DDCF,PinName="Key",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/InputCore.Key"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="None",AutogeneratedDefaultValue="None",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=1F6919C3378A48EBBDEE77BD7F1F4E6A,PinName="ActionValue",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/EnhancedInput.InputActionValue"',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: [8.5, 11], + color: Configuration.nodeColors.red, + icon: SVGIcon.keyboard, + pins: 4, + pinNames: ["Pressed", "Released", "Key", "Action Value"], + delegate: false, + development: true, +}) diff --git a/tests/nodeDebugKey4.spec.js b/tests/nodeDebugKey4.spec.js new file mode 100644 index 0000000..3ff0c54 --- /dev/null +++ b/tests/nodeDebugKey4.spec.js @@ -0,0 +1,26 @@ +import Configuration from "../js/Configuration.js" +import SVGIcon from "../js/SVGIcon.js" +import { testNode } from "./fixtures/test.js" + +testNode({ + name: "Debug Key 4", + value: String.raw` + Begin Object Class=/Script/InputBlueprintNodes.K2Node_InputDebugKey Name="K2Node_InputDebugKey_2" + InputKey=Four + NodePosX=32 + NodePosY=160 + NodeGuid=10A6E414241D451ABCCDD93A5DC731EC + CustomProperties Pin (PinId=2F11C0CFA4334DC69E85B9E319A4535D,PinName="Pressed",Direction="EGPD_Output",PinType.PinCategory="exec",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=19A17B1886904EE7872288EA7750E0A0,PinName="Released",Direction="EGPD_Output",PinType.PinCategory="exec",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=C3166A5D6C914ACE9A897A8F95F832A3,PinName="Key",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/InputCore.Key"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="None",AutogeneratedDefaultValue="None",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=411B9A362C694A60A29B2FA623CF1CD4,PinName="ActionValue",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/EnhancedInput.InputActionValue"',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: [8.5, 11], + color: Configuration.nodeColors.red, + icon: SVGIcon.keyboard, + pins: 4, + pinNames: ["Pressed", "Released", "Key", "Action Value"], + delegate: false, + development: true, +}) diff --git a/tests/nodeDebugKeyNum5.spec.js b/tests/nodeDebugKeyNum5.spec.js new file mode 100644 index 0000000..cf1f6b4 --- /dev/null +++ b/tests/nodeDebugKeyNum5.spec.js @@ -0,0 +1,26 @@ +import Configuration from "../js/Configuration.js" +import SVGIcon from "../js/SVGIcon.js" +import { testNode } from "./fixtures/test.js" + +testNode({ + name: "Debug Key Num 5", + value: String.raw` + Begin Object Class=/Script/InputBlueprintNodes.K2Node_InputDebugKey Name="K2Node_InputDebugKey_3" + InputKey=NumPadFive + NodePosX=16 + NodePosY=-48 + NodeGuid=FB21225080DF48DFB7A662369E470AA1 + CustomProperties Pin (PinId=8540A18FD95D477C93035CDB3D2AE2B0,PinName="Pressed",Direction="EGPD_Output",PinType.PinCategory="exec",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=B8E224DBCEB1454B81EC9462A6DB5F06,PinName="Released",Direction="EGPD_Output",PinType.PinCategory="exec",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=D7B687EA384A4E81B45C9CFB0996989F,PinName="Key",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/InputCore.Key"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="None",AutogeneratedDefaultValue="None",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=EC6AE35C9D9343E6965884DE97A9555A,PinName="ActionValue",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/EnhancedInput.InputActionValue"',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.5, 11], + color: Configuration.nodeColors.red, + icon: SVGIcon.keyboard, + pins: 4, + pinNames: ["Pressed", "Released", "Key", "Action Value"], + delegate: false, + development: true, +}) diff --git a/tests/nodeDebugKeyNumMul.spec.js b/tests/nodeDebugKeyNumMul.spec.js new file mode 100644 index 0000000..3b17994 --- /dev/null +++ b/tests/nodeDebugKeyNumMul.spec.js @@ -0,0 +1,26 @@ +import Configuration from "../js/Configuration.js" +import SVGIcon from "../js/SVGIcon.js" +import { testNode } from "./fixtures/test.js" + +testNode({ + name: "Debug Key Num *", + value: String.raw` + Begin Object Class=/Script/InputBlueprintNodes.K2Node_InputDebugKey Name="K2Node_InputDebugKey_6" + InputKey=Multiply + NodePosX=-128 + NodePosY=144 + NodeGuid=997A0FD2D9774330AF08F15369C56285 + CustomProperties Pin (PinId=26A30BF9FBC446E6BEED77ACFC4ECF11,PinName="Pressed",Direction="EGPD_Output",PinType.PinCategory="exec",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=833512F46F464761ACC78C2555D654E5,PinName="Released",Direction="EGPD_Output",PinType.PinCategory="exec",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=ACACF4785ED34276B22969BA174904F2,PinName="Key",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/InputCore.Key"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="None",AutogeneratedDefaultValue="None",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=AC8DDD237434456DA1802FD4C07EE2F5,PinName="ActionValue",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/EnhancedInput.InputActionValue"',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.5, 11], + color: Configuration.nodeColors.red, + icon: SVGIcon.keyboard, + pins: 4, + pinNames: ["Pressed", "Released", "Key", "Action Value"], + delegate: false, + development: true, +}) diff --git a/tests/nodeDebugKeyThumbMouseButton.spec.js b/tests/nodeDebugKeyThumbMouseButton.spec.js new file mode 100644 index 0000000..e6213cb --- /dev/null +++ b/tests/nodeDebugKeyThumbMouseButton.spec.js @@ -0,0 +1,26 @@ +import Configuration from "../js/Configuration.js" +import SVGIcon from "../js/SVGIcon.js" +import { testNode } from "./fixtures/test.js" + +testNode({ + name: "Debug Key Thumb Mouse Button", + value: String.raw` + Begin Object Class=/Script/InputBlueprintNodes.K2Node_InputDebugKey Name="K2Node_InputDebugKey_7" + InputKey=ThumbMouseButton + NodePosX=-384 + NodePosY=288 + NodeGuid=A399E6224ADE4FCA957A949B4660E1C1 + CustomProperties Pin (PinId=A4BEA026C1B741DDB6C690AD79683F0F,PinName="Pressed",Direction="EGPD_Output",PinType.PinCategory="exec",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=A0CEF5BCEAD14E868B4227481755F5C5,PinName="Released",Direction="EGPD_Output",PinType.PinCategory="exec",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=E977C11019F74CD8A15C467CA0B1C005,PinName="Key",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/InputCore.Key"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="None",AutogeneratedDefaultValue="None",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=ED934B47B72E4A94834897DCD89BABB3,PinName="ActionValue",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/EnhancedInput.InputActionValue"',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: [16, 11], + color: Configuration.nodeColors.red, + icon: SVGIcon.mouse, + pins: 4, + pinNames: ["Pressed", "Released", "Key", "Action Value"], + delegate: false, + development: true, +}) diff --git a/tests/nodeDebugKeyTouch10.spec.js b/tests/nodeDebugKeyTouch10.spec.js new file mode 100644 index 0000000..5e93aa9 --- /dev/null +++ b/tests/nodeDebugKeyTouch10.spec.js @@ -0,0 +1,26 @@ +import Configuration from "../js/Configuration.js" +import SVGIcon from "../js/SVGIcon.js" +import { testNode } from "./fixtures/test.js" + +testNode({ + name: "Debug Key Touch 10", + value: String.raw` + Begin Object Class=/Script/InputBlueprintNodes.K2Node_InputDebugKey Name="K2Node_InputDebugKey_10" + InputKey=Touch10 + NodePosX=192 + NodePosY=-304 + NodeGuid=85DC056DAA9A4DB78F7883B8F67DCF59 + CustomProperties Pin (PinId=267ABB8DF21844FB8F6E0CFA990C4E5E,PinName="Pressed",Direction="EGPD_Output",PinType.PinCategory="exec",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=3FF391B8B11F4F26828B55863EFB48FD,PinName="Released",Direction="EGPD_Output",PinType.PinCategory="exec",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=41C4C9D9831148E087E7D7D86B6CCB2D,PinName="Key",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/InputCore.Key"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="None",AutogeneratedDefaultValue="None",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=F0EC9017F23F4F73AF3E98AE46008C75,PinName="ActionValue",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/EnhancedInput.InputActionValue"',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: [11, 11], + color: Configuration.nodeColors.red, + icon: SVGIcon.touchpad, + pins: 4, + pinNames: ["Pressed", "Released", "Key", "Action Value"], + delegate: false, + development: true, +}) diff --git a/tests/nodeDelay.spec.js b/tests/nodeDelay.spec.js new file mode 100644 index 0000000..85bf7f3 --- /dev/null +++ b/tests/nodeDelay.spec.js @@ -0,0 +1,27 @@ +import Configuration from "../js/Configuration.js" +import SVGIcon from "../js/SVGIcon.js" +import { testNode } from "./fixtures/test.js" + +testNode({ + name: "Delay", + value: String.raw` + Begin Object Class=/Script/BlueprintGraph.K2Node_CallFunction Name="K2Node_CallFunction_17" + FunctionReference=(MemberParent=/Script/CoreUObject.Class'"/Script/Engine.KismetSystemLibrary"',MemberName="Delay") + NodePosX=-224 + NodePosY=-336 + NodeGuid=8CDD81286D894EBA8414B5DEBA780D9E + CustomProperties Pin (PinId=B2476CF3411C6290BC6D97B714E207D4,PinName="execute",PinToolTip="\nExec",PinType.PinCategory="exec",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_CallFunction_19 9C174E82466ECE8521C95FBF22ED4A68,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=69F8184E4070B5FBDEF06A94677454D5,PinName="then",PinFriendlyName="Completed",PinToolTip="Completed\nExec",Direction="EGPD_Output",PinType.PinCategory="exec",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_CallFunction_18 1F53F0D240A7547201D59D8C9A37290B,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=BA6B7D3B429FDD4C250237BD54D75099,PinName="self",PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target"),PinToolTip="Target\nKismet System Library Object Reference",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/Engine.KismetSystemLibrary"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultObject="/Script/Engine.Default__KismetSystemLibrary",PersistentGuid=00000000000000000000000000000000,bHidden=True,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=A2E27ABE4A7EE373C1983487B550FCA1,PinName="WorldContextObject",PinToolTip="World Context Object\nObject Reference",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/CoreUObject.Object"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=True,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=True,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=AEB97A71428D31E899D38F9E30243F68,PinName="Duration",PinToolTip="Duration\nFloat (single-precision)\n\nlength of delay (in seconds).",PinType.PinCategory="real",PinType.PinSubCategory="float",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,DefaultValue="0.2",AutogeneratedDefaultValue="0.2",LinkedTo=(K2Node_VariableGet_8 7F1D5C3A40DB0725BEC01192B06FE830,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=D95C20784C876E9AFC7E4BB3C3CCE773,PinName="LatentInfo",PinToolTip="Latent Info\nLatent Action Info Structure\n\nThe latent action.",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/Engine.LatentActionInfo"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="(Linkage=-1,UUID=-1,ExecutionFunction=\"\",CallbackTarget=None)",AutogeneratedDefaultValue="LatentInfo",PersistentGuid=00000000000000000000000000000000,bHidden=True,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + End Object + `, + color: Configuration.nodeColors.blue, + icon: SVGIcon.functionSymbol, + pins: 3, + pinNames: ["Duration", "Completed"], + delegate: false, + development: false, +}) diff --git a/tests/nodeDistance.spec.js b/tests/nodeDistance.spec.js new file mode 100644 index 0000000..3ac6b59 --- /dev/null +++ b/tests/nodeDistance.spec.js @@ -0,0 +1,26 @@ +import { expect, testNode } from "./fixtures/test.js" + +testNode({ + name: "Distance", + value: String.raw` + Begin Object Class=/Script/NiagaraEditor.NiagaraNodeOp Name="NiagaraNodeOp_59" ExportPath="/Script/NiagaraEditor.NiagaraNodeOp'/Engine/Transient.NewNiagaraScript:NiagaraScriptSource_0.NiagaraGraph_0.NiagaraNodeOp_59'" + OpName="Numeric::DistancePos" + ChangeId=4EE3F52A93A84F89AA06ED1D00DBB194 + NodePosX=-128 + NodePosY=384 + NodeGuid=C1DF3F04B05344D4A8BA11F5D9B7022C + CustomProperties Pin (PinId=EBEA639B227A45AEAF9D988854C0B00F,PinName="A",PinToolTip="A",PinType.PinCategory="Type",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.ScriptStruct'/Script/Niagara.NiagaraPosition'",PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="1.0",AutogeneratedDefaultValue="1.0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=D33EAF7D8B0042438A9985EF503D663D,PinName="B",PinToolTip="B",PinType.PinCategory="Type",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.ScriptStruct'/Script/Niagara.NiagaraPosition'",PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="1.0",AutogeneratedDefaultValue="1.0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=4BAEA4BD06C445908F7F5750358768D5,PinName="Result",PinToolTip="Result",Direction="EGPD_Output",PinType.PinCategory="Type",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.ScriptStruct'/Script/Niagara.NiagaraFloat'",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: [17.5, 7], + pins: 3, + pinNames: ["A", "B", "Result"], + delegate: false, + development: false, + additionalTest: async node => { + expect(await node.evaluate(node => node.classList.contains("ueb-node-style-glass"))).toBeFalsy() + expect(await node.evaluate(node => node.classList.contains("ueb-node-style-default"))).toBeTruthy() + }, +}) diff --git a/tests/nodeDoOnce.spec.js b/tests/nodeDoOnce.spec.js new file mode 100644 index 0000000..b4ec353 --- /dev/null +++ b/tests/nodeDoOnce.spec.js @@ -0,0 +1,26 @@ +import Configuration from "../js/Configuration.js" +import SVGIcon from "../js/SVGIcon.js" +import { testNode } from "./fixtures/test.js" + +testNode({ + name: "Do Once", + value: String.raw` + Begin Object Class=/Script/BlueprintGraph.K2Node_MacroInstance Name="K2Node_MacroInstance_1" + MacroGraphReference=(MacroGraph=/Script/Engine.EdGraph'"/Engine/EditorBlueprintResources/StandardMacros.StandardMacros:DoOnce"',GraphBlueprint=/Script/Engine.Blueprint'"/Engine/EditorBlueprintResources/StandardMacros.StandardMacros"',GraphGuid=1281F54248A2ECB5B8B2C5B24AE6FDF4) + NodePosX=-416 + NodePosY=-112 + NodeGuid=A1831A1B85EF4E568E766FE3A3BCC5CD + CustomProperties Pin (PinId=5C24D82D7B084DFB841D17E5DF1CD8CF,PinName="execute",PinType.PinCategory="exec",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=27242FC0B565448396C6A2DCD6BEDBD1,PinName="Reset",PinType.PinCategory="exec",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=A8C0EB54974741248EA0B7B97FAC44DE,PinName="Start Closed",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,DefaultValue="true",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=3DE1FC03BFCD4ACF9AC7B99B89CEF465,PinName="Completed",Direction="EGPD_Output",PinType.PinCategory="exec",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_MultiGate_2 92FADDC1B07C45AC8BEF2FE42E13A638,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + End Object + `, + size: [15, 8], + color: Configuration.nodeColors.gray, + icon: SVGIcon.doOnce, + pins: 4, + pinNames: ["Reset", "Start Closed", "Completed"], + delegate: false, + development: false, +}) diff --git a/tests/nodeEGrave.spec.js b/tests/nodeEGrave.spec.js new file mode 100644 index 0000000..bae9c02 --- /dev/null +++ b/tests/nodeEGrave.spec.js @@ -0,0 +1,25 @@ +import Configuration from "../js/Configuration.js" +import SVGIcon from "../js/SVGIcon.js" +import { testNode } from "./fixtures/test.js" + +testNode({ + name: "è", + value: String.raw` + Begin Object Class=/Script/BlueprintGraph.K2Node_InputKey Name="K2Node_InputKey_23" + InputKey=E_AccentGrave + NodePosX=208 + NodePosY=160 + NodeGuid=63A85924985A4AA49975B74C27EB01D6 + CustomProperties Pin (PinId=BE32B517D2734017AF0A84D6C359CD96,PinName="Pressed",Direction="EGPD_Output",PinType.PinCategory="exec",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=B448C54D91014BF29C40B66B20EFE35A,PinName="Released",Direction="EGPD_Output",PinType.PinCategory="exec",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=507B66F736234E55A68C49235B936DF6,PinName="Key",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/InputCore.Key"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="None",AutogeneratedDefaultValue="None",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + End Object + `, + size: [6, 8], + color: Configuration.nodeColors.red, + icon: SVGIcon.keyboard, + pins: 3, + pinNames: ["Pressed", "Released", "Key"], + delegate: false, + development: false, +}) diff --git a/tests/nodeEqualByte.spec.js b/tests/nodeEqualByte.spec.js new file mode 100644 index 0000000..0e963d4 --- /dev/null +++ b/tests/nodeEqualByte.spec.js @@ -0,0 +1,31 @@ +import SVGIcon from "../js/SVGIcon.js" +import { expect, testNode } from "./fixtures/test.js" + +testNode({ + name: "Equal byte", + 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: async (node, pins) => { + for (const pin of pins) { + expect(await pin.evaluate(pin => pin.template.renderIcon().strings.join(""))) + .toStrictEqual(SVGIcon.operationPin.strings.join("")) + } + } +}) diff --git a/tests/nodeEqualSlateBrush.spec.js b/tests/nodeEqualSlateBrush.spec.js new file mode 100644 index 0000000..e82e9dc --- /dev/null +++ b/tests/nodeEqualSlateBrush.spec.js @@ -0,0 +1,29 @@ +import SVGIcon from "../js/SVGIcon.js" +import { expect, testNode } from "./fixtures/test.js" + +testNode({ + name: "Equal slate brush", + title: "==", + value: String.raw` + Begin Object Class=/Script/BlueprintGraph.K2Node_PromotableOperator Name="K2Node_PromotableOperator_0" + bIsPureFunc=True + FunctionReference=(MemberParent=/Script/CoreUObject.Class'"/Script/UMG.SlateBlueprintLibrary"',MemberName="EqualEqual_SlateBrush") + NodePosX=704 + NodePosY=-320 + NodeGuid=F0C20233151743A3A37807274CF6DF61 + CustomProperties Pin (PinId=4E90C9A1D4034AE68B26FF54DEDF4764,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=1E4802AFBB51467083225499C8967FA5,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=F34B818F900A4222BCC1DE111C2C7816,PinName="ReturnValue",PinToolTip="Return Value\nBoolean\n\nReturns whether brushes A and B are identical.",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, + additionalTest: async (node, pins) => { + for (const pin of pins) { + expect(await pin.evaluate(pin => pin.template.renderIcon().strings.join(""))) + .toStrictEqual(SVGIcon.operationPin.strings.join("")) + } + } +}) diff --git a/tests/nodeExecuteBlueprint.spec.js b/tests/nodeExecuteBlueprint.spec.js new file mode 100644 index 0000000..f6c80fc --- /dev/null +++ b/tests/nodeExecuteBlueprint.spec.js @@ -0,0 +1,89 @@ +import SVGIcon from "../js/SVGIcon.js" +import { expect, testNode } from "./fixtures/test.js" + +testNode({ + 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], + pins: 4, + pinNames: ["In", "Overrides", "Seed", "Out"], + delegate: false, + development: false, + additionalTest: async node => { + /** @type {Locator} */ + const inPin = node.locator('ueb-pin:has-text("In")') + /** @type {Locator} */ + const overridesPin = node.locator('ueb-pin:has-text("Overrides")') + /** @type {Locator} */ + const seedPin = node.locator('ueb-pin:has-text("Seed")') + /** @type {Locator} */ + const outPin = node.locator('ueb-pin:has-text("Out")') + await expect(inPin).toBeVisible() + await expect(overridesPin).toBeVisible() + await expect(seedPin).toBeVisible() + await expect(outPin).toBeVisible() + expect(await inPin.evaluate(pin => pin.template.renderIcon().strings.join(""))) + .toEqual(SVGIcon.pcgStackPin.strings.join("")) + expect(await overridesPin.evaluate(pin => pin.template.renderIcon().strings.join(""))) + .toEqual(SVGIcon.pcgParamPin.strings.join("")) + expect(await seedPin.evaluate(pin => pin.template.renderIcon().strings.join(""))) + .toEqual(SVGIcon.pcgParamPin.strings.join("")) + expect(await outPin.evaluate(pin => pin.template.renderIcon().strings.join(""))) + .toEqual(SVGIcon.pcgSpatialPin.strings.join("")) + } +}) diff --git a/tests/nodeF1.spec.js b/tests/nodeF1.spec.js new file mode 100644 index 0000000..4be7a38 --- /dev/null +++ b/tests/nodeF1.spec.js @@ -0,0 +1,25 @@ +import Configuration from "../js/Configuration.js" +import SVGIcon from "../js/SVGIcon.js" +import { testNode } from "./fixtures/test.js" + +testNode({ + name: "F1", + value: String.raw` + Begin Object Class=/Script/BlueprintGraph.K2Node_InputKey Name="K2Node_InputKey_25" + InputKey=F1 + NodePosX=-432 + NodePosY=-128 + NodeGuid=2A1E4A0B00644BFABB41E79B9EEBA51F + CustomProperties Pin (PinId=34EA0464C8C0463782205148426AFB9D,PinName="Pressed",Direction="EGPD_Output",PinType.PinCategory="exec",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=196E5BC3CF0145EBB6501C56C58D0694,PinName="Released",Direction="EGPD_Output",PinType.PinCategory="exec",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=70E9187FED444AC392AE4AA4FD4A8F06,PinName="Key",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/InputCore.Key"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="None",AutogeneratedDefaultValue="None",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + End Object + `, + size: [6, 8], + color: Configuration.nodeColors.red, + icon: SVGIcon.keyboard, + pins: 3, + pinNames: ["Pressed", "Released", "Key"], + delegate: false, + development: false, +}) diff --git a/tests/nodeFlipFlop.spec.js b/tests/nodeFlipFlop.spec.js new file mode 100644 index 0000000..4ed0c23 --- /dev/null +++ b/tests/nodeFlipFlop.spec.js @@ -0,0 +1,26 @@ +import Configuration from "../js/Configuration.js" +import SVGIcon from "../js/SVGIcon.js" +import { testNode } from "./fixtures/test.js" + +testNode({ + name: "Flip Flop", + value: String.raw` + Begin Object Class=/Script/BlueprintGraph.K2Node_MacroInstance Name="K2Node_MacroInstance_5" + MacroGraphReference=(MacroGraph=/Script/Engine.EdGraph'"/Engine/EditorBlueprintResources/StandardMacros.StandardMacros:FlipFlop"',GraphBlueprint=/Script/Engine.Blueprint'"/Engine/EditorBlueprintResources/StandardMacros.StandardMacros"',GraphGuid=BFFFAAE4434E166F549665AD1AA89B60) + NodePosX=-48 + NodePosY=48 + NodeGuid=267CBD7BDA9243E0916C518E03EA7F8E + CustomProperties Pin (PinId=CF77C07A39514336BF1F33B71FA6F31A,PinType.PinCategory="exec",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=ABD456E3A9E541FCA849DBC7460338A0,PinName="A",Direction="EGPD_Output",PinType.PinCategory="exec",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=1E4BC9A55AA247CA8B9B2BA0F4159D07,PinName="B",Direction="EGPD_Output",PinType.PinCategory="exec",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=0A09A61366D142C8A0564EC3C173DB79,PinName="IsA",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, 8], + color: Configuration.nodeColors.gray, + icon: SVGIcon.flipflop, + pins: 4, + pinNames: ["A", "B", "Is A"], + delegate: false, + development: false, +}) diff --git a/tests/nodeFlipFlopLegacy.spec.js b/tests/nodeFlipFlopLegacy.spec.js new file mode 100644 index 0000000..95a1b59 --- /dev/null +++ b/tests/nodeFlipFlopLegacy.spec.js @@ -0,0 +1,57 @@ +import Configuration from "../js/Configuration.js" +import SVGIcon from "../js/SVGIcon.js" +import { testNode } from "./fixtures/test.js" + +testNode({ + name: "Flip Flop legacy", + title: "Flip Flop", + value: String.raw` + Begin Object Class=K2Node_MacroInstance Name="K2Node_MacroInstance_1262" + NodePosX=3984 + NodePosY=-960 + NodeGuid=968059974A02AF6B67D2879EC909179A + Begin Object Class=EdGraphPin Name="EdGraphPin_59688" + End Object + Begin Object Class=EdGraphPin Name="EdGraphPin_59689" + End Object + Begin Object Class=EdGraphPin Name="EdGraphPin_59690" + End Object + Begin Object Class=EdGraphPin Name="EdGraphPin_59691" + End Object + MacroGraphReference=(MacroGraph=EdGraph'/Engine/EditorBlueprintResources/StandardMacros.StandardMacros:FlipFlop',GraphBlueprint=Blueprint'/Engine/EditorBlueprintResources/StandardMacros.StandardMacros',GraphGuid=BFFFAAE4434E166F549665AD1AA89B60) + Pins(0)=EdGraphPin'EdGraphPin_59688' + Pins(1)=EdGraphPin'EdGraphPin_59689' + Pins(2)=EdGraphPin'EdGraphPin_59690' + Pins(3)=EdGraphPin'EdGraphPin_59691' + Begin Object Name="EdGraphPin_59688" + PinType=(PinCategory="exec") + LinkedTo(0)=EdGraphPin'K2Node_InputKey_1185.EdGraphPin_42090' + LinkedTo(1)=EdGraphPin'K2Node_InputKey_14487.EdGraphPin_45417' + End Object + Begin Object Name="EdGraphPin_59689" + PinName="A" + Direction=EGPD_Output + PinType=(PinCategory="exec") + LinkedTo(0)=EdGraphPin'K2Node_CallFunction_7370.EdGraphPin_43320' + End Object + Begin Object Name="EdGraphPin_59690" + PinName="B" + Direction=EGPD_Output + PinType=(PinCategory="exec") + LinkedTo(0)=EdGraphPin'K2Node_CallFunction_44249.EdGraphPin_43272' + End Object + Begin Object Name="EdGraphPin_59691" + PinName="IsA" + Direction=EGPD_Output + PinType=(PinCategory="bool") + End Object + End Object + `, + size: [7.5, 8], + color: Configuration.nodeColors.gray, + icon: SVGIcon.flipflop, + pins: 4, + pinNames: ["A", "B", "Is A"], + delegate: false, + development: false, +}) diff --git a/tests/nodeForEachEAudioComponentPlayState.spec.js b/tests/nodeForEachEAudioComponentPlayState.spec.js new file mode 100644 index 0000000..723855f --- /dev/null +++ b/tests/nodeForEachEAudioComponentPlayState.spec.js @@ -0,0 +1,28 @@ +import Configuration from "../js/Configuration.js" +import SVGIcon from "../js/SVGIcon.js" +import { testNode } from "./fixtures/test.js" + +testNode({ + name: "For Each EAudioComponentPlayState", + value: String.raw` + Begin Object Class=/Script/BlueprintGraph.K2Node_ForEachElementInEnum Name="K2Node_ForEachElementInEnum_0" + Enum=/Script/CoreUObject.Enum'"/Script/Engine.EAudioComponentPlayState"' + NodePosX=-992 + NodePosY=320 + AdvancedPinDisplay=Shown + NodeGuid=706F82B7815D4137AE662D70A97A62C3 + CustomProperties Pin (PinId=6F89188317294812A79E72CFB15C3DDF,PinName="execute",PinType.PinCategory="exec",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=B9078293CD49417AAD1145A636C63C2E,PinName="SkipHidden",PinToolTip="Skip Hidden\nBoolean\n\nControls whether or not the loop will skip over hidden enumeration values.",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,DefaultValue="true",AutogeneratedDefaultValue="true",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=True,bOrphanedPin=False,) + CustomProperties Pin (PinId=5545D12AE949466C98B743E1C736812C,PinName="LoopBody",Direction="EGPD_Output",PinType.PinCategory="exec",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=1D66C9B98B8E4C6FBFD39B33C10380EA,PinName="EnumValue",Direction="EGPD_Output",PinType.PinCategory="byte",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Enum'"/Script/Engine.EAudioComponentPlayState"',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=D255092C0E544047BB60DD4A8F5333D9,PinName="then",PinFriendlyName=NSLOCTEXT("K2Node", "Completed", "Completed"),Direction="EGPD_Output",PinType.PinCategory="exec",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: [17.5, 9], + color: Configuration.nodeColors.blue, + icon: SVGIcon.loop, + pins: 5, + pinNames: ["Skip Hidden", "Loop Body", "Enum Value", "Completed"], + delegate: false, + development: false, +}) diff --git a/tests/nodeForEachLoop.spec.js b/tests/nodeForEachLoop.spec.js new file mode 100644 index 0000000..bf3af08 --- /dev/null +++ b/tests/nodeForEachLoop.spec.js @@ -0,0 +1,28 @@ +import Configuration from "../js/Configuration.js" +import SVGIcon from "../js/SVGIcon.js" +import { testNode } from "./fixtures/test.js" + +testNode({ + name: "For Each Loop", + value: String.raw` + Begin Object Class=/Script/BlueprintGraph.K2Node_MacroInstance Name="K2Node_MacroInstance_1" + MacroGraphReference=(MacroGraph=/Script/Engine.EdGraph'"/Engine/EditorBlueprintResources/StandardMacros.StandardMacros:ForEachLoop"',GraphBlueprint=/Script/Engine.Blueprint'"/Engine/EditorBlueprintResources/StandardMacros.StandardMacros"',GraphGuid=99DBFD5540A796041F72A5A9DA655026) + NodePosX=-1216 + NodePosY=96 + NodeGuid=DC35C020857E45708D1A7ED3695C0275 + CustomProperties Pin (PinId=98E5694575854D738E59826A4192E63A,PinName="Exec",PinType.PinCategory="exec",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=4586F50C416540779AEF16C701119F59,PinName="Array",PinType.PinCategory="wildcard",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=Array,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=612E0159522948FE9702A36B283523D1,PinName="LoopBody",Direction="EGPD_Output",PinType.PinCategory="exec",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=2E365C79D539495FB537CABA9D37F15F,PinName="Array Element",Direction="EGPD_Output",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=5797F5E5CBCA47E1B9A39DA8A3893D3D,PinName="Array Index",Direction="EGPD_Output",PinType.PinCategory="int",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=6B0EBB7A7BD547E6A3C22BC7F782E742,PinName="Completed",Direction="EGPD_Output",PinType.PinCategory="exec",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: [12, 10], + color: Configuration.nodeColors.gray, + icon: SVGIcon.forEachLoop, + pins: 6, + pinNames: ["Exec", "Array", "Loop Body", "Array Element", "Array Index", "Completed"], + delegate: false, + development: false, +}) diff --git a/tests/nodeForEachLoopwithBreak.spec.js b/tests/nodeForEachLoopwithBreak.spec.js new file mode 100644 index 0000000..7d41ad4 --- /dev/null +++ b/tests/nodeForEachLoopwithBreak.spec.js @@ -0,0 +1,29 @@ +import Configuration from "../js/Configuration.js" +import SVGIcon from "../js/SVGIcon.js" +import { testNode } from "./fixtures/test.js" + +testNode({ + name: "For Each Loop with Break", + value: String.raw` + Begin Object Class=/Script/BlueprintGraph.K2Node_MacroInstance Name="K2Node_MacroInstance_2" + MacroGraphReference=(MacroGraph=/Script/Engine.EdGraph'"/Engine/EditorBlueprintResources/StandardMacros.StandardMacros:ForEachLoopWithBreak"',GraphBlueprint=/Script/Engine.Blueprint'"/Engine/EditorBlueprintResources/StandardMacros.StandardMacros"',GraphGuid=F07560274C5742E391E84B8F394CFB36) + NodePosX=-1136 + NodePosY=-272 + NodeGuid=008F14B9BBA5487F8AE49CD1C8630069 + CustomProperties Pin (PinId=4456C17B27D54BE786BF4FF61C25DE9D,PinName="Exec",PinType.PinCategory="exec",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=B6A7B986B2DC4BC0ADB9961E2741EA9D,PinName="Array",PinType.PinCategory="wildcard",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=Array,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=FB6676D0482D418E9E02F303438FC999,PinName="Break",PinType.PinCategory="exec",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=DF7D57F4846F49D19DBBA1EF1555B8E3,PinName="LoopBody",Direction="EGPD_Output",PinType.PinCategory="exec",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=8938553CAE344B4B9FE849C020278383,PinName="Array Element",Direction="EGPD_Output",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=3870EB0F61D842F789DA17E4DC1D66FC,PinName="Array Index",Direction="EGPD_Output",PinType.PinCategory="int",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=ABDAB2F741CF47A4A2E49D0F37A22901,PinName="Completed",Direction="EGPD_Output",PinType.PinCategory="exec",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: [13, 10], + color: Configuration.nodeColors.gray, + icon: SVGIcon.forEachLoop, + pins: 7, + pinNames: ["Exec", "Array", "Break", "Loop Body", "Array Element", "Array Index", "Completed"], + delegate: false, + development: false, +}) diff --git a/tests/nodeGetMouseWheelAxis.spec.js b/tests/nodeGetMouseWheelAxis.spec.js new file mode 100644 index 0000000..ab9add2 --- /dev/null +++ b/tests/nodeGetMouseWheelAxis.spec.js @@ -0,0 +1,28 @@ +import Configuration from "../js/Configuration.js" +import SVGIcon from "../js/SVGIcon.js" +import { testNode } from "./fixtures/test.js" + +testNode({ + name: "Get Mouse Wheel Axis", + value: String.raw` + Begin Object Class=/Script/BlueprintGraph.K2Node_GetInputAxisKeyValue Name="K2Node_GetInputAxisKeyValue_0" + InputAxisKey=MouseWheelAxis + bIsPureFunc=True + bIsConstFunc=True + FunctionReference=(MemberName="GetInputAxisKeyValue",bSelfContext=True) + NodePosX=-384 + NodePosY=16 + NodeGuid=2B1117A5318D40A7AF0DFDA50FEF1591 + CustomProperties Pin (PinId=BFD2DE55F3DB4856ACFC0FE876450E0B,PinName="self",PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target"),PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/Engine.Actor"',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=True,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=5842E327DE3B4521B9B695133F2D5A8D,PinName="InputAxisKey",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/InputCore.Key"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=True,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="MouseWheelAxis",PersistentGuid=00000000000000000000000000000000,bHidden=True,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=D277AF2C806C4B92857827918CA55B91,PinName="ReturnValue",Direction="EGPD_Output",PinType.PinCategory="real",PinType.PinSubCategory="float",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,DefaultValue="0.0",AutogeneratedDefaultValue="0.0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + End Object + `, + size: [12, 4], + color: Configuration.nodeColors.green, + icon: SVGIcon.mouse, + pins: 1, + pinNames: ["Return Value"], + delegate: false, + development: false, +}) diff --git a/tests/nodeGetMouseY.spec.js b/tests/nodeGetMouseY.spec.js new file mode 100644 index 0000000..6b7e1ed --- /dev/null +++ b/tests/nodeGetMouseY.spec.js @@ -0,0 +1,28 @@ +import Configuration from "../js/Configuration.js" +import SVGIcon from "../js/SVGIcon.js" +import { testNode } from "./fixtures/test.js" + +testNode({ + name: "Get Mouse Y", + value: String.raw` + Begin Object Class=/Script/BlueprintGraph.K2Node_GetInputAxisKeyValue Name="K2Node_GetInputAxisKeyValue_2" + InputAxisKey=MouseY + bIsPureFunc=True + bIsConstFunc=True + FunctionReference=(MemberName="GetInputAxisKeyValue",bSelfContext=True) + NodePosX=-336 + NodePosY=176 + NodeGuid=03F17E5E722044968C2604B5C7DB96DF + CustomProperties Pin (PinId=BAC6585AD74E46FB99497B33417089E8,PinName="self",PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target"),PinToolTip="Target\nActor Object Reference",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/Engine.Actor"',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=True,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=EBD21E94C73B4648A6E42EEDAAECC25C,PinName="InputAxisKey",PinToolTip="Input Axis Key\nKey Structure",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/InputCore.Key"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=True,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="MouseY",PersistentGuid=00000000000000000000000000000000,bHidden=True,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=FBB13F62789849748C804E02B8E147AD,PinName="ReturnValue",PinToolTip="Return Value\nFloat (single-precision)\n\nGets the value of the input axis key if input is enabled for this actor.",Direction="EGPD_Output",PinType.PinCategory="real",PinType.PinSubCategory="float",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,DefaultValue="0.0",AutogeneratedDefaultValue="0.0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + End Object + `, + size: [8.5, 4], + color: Configuration.nodeColors.green, + icon: SVGIcon.mouse, + pins: 1, + pinNames: ["Return Value"], + delegate: false, + development: false, +}) diff --git a/tests/nodeGetTouchpadButtonXAxis.spec.js b/tests/nodeGetTouchpadButtonXAxis.spec.js new file mode 100644 index 0000000..4007518 --- /dev/null +++ b/tests/nodeGetTouchpadButtonXAxis.spec.js @@ -0,0 +1,28 @@ +import Configuration from "../js/Configuration.js" +import SVGIcon from "../js/SVGIcon.js" +import { testNode } from "./fixtures/test.js" + +testNode({ + name: "Get Touchpad Button X Axis", + value: String.raw` + Begin Object Class=/Script/BlueprintGraph.K2Node_GetInputAxisKeyValue Name="K2Node_GetInputAxisKeyValue_7" + InputAxisKey=Gamepad_Special_Left_X + bIsPureFunc=True + bIsConstFunc=True + FunctionReference=(MemberName="GetInputAxisKeyValue",bSelfContext=True) + NodePosX=-224 + NodePosY=48 + NodeGuid=3385984750554D07BCADFFD48CA3EC9F + CustomProperties Pin (PinId=C04D7513E97B4FB19ECEC736842C4B9C,PinName="self",PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target"),PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/Engine.Actor"',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=True,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=4787139D40A543D7AA60CB927DFFA93C,PinName="InputAxisKey",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/InputCore.Key"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=True,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="Gamepad_Special_Left_X",PersistentGuid=00000000000000000000000000000000,bHidden=True,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=ADD1CDAF5AB542C186B3054E28A3FB85,PinName="ReturnValue",Direction="EGPD_Output",PinType.PinCategory="real",PinType.PinSubCategory="float",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,DefaultValue="0.0",AutogeneratedDefaultValue="0.0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + End Object + `, + size: [14, 4], + color: Configuration.nodeColors.green, + icon: SVGIcon.keyboard, + pins: 1, + pinNames: ["Return Value"], + delegate: false, + development: false, +}) diff --git a/tests/nodeGreaterEqualByteByte.spec.js b/tests/nodeGreaterEqualByteByte.spec.js new file mode 100644 index 0000000..6931644 --- /dev/null +++ b/tests/nodeGreaterEqualByteByte.spec.js @@ -0,0 +1,30 @@ +import SVGIcon from "../js/SVGIcon.js" +import { expect, testNode } from "./fixtures/test.js" + +testNode({ + name: "Greater equal byte byte", + 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"' + bIsPureFunc=True + FunctionReference=(MemberParent=/Script/CoreUObject.Class'"/Script/Engine.KismetMathLibrary"',MemberName="GreaterEqual_ByteByte") + NodePosX=-128 + NodePosY=128 + NodeGuid=97ABB121B7F6446CA7C5A0D2BB35D9CB + CustomProperties Pin (PinId=9DC86E2C7B5E4D499EDD11C26E0CE2F0,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=C4C29B972BCE479681067C79A8B45C55,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=BC0F5E45AED74808A59F5E7ACF749DA7,PinName="ReturnValue",PinToolTip="Return Value\nBoolean\n\nReturns true if A is greater than or 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=D231C63140CC4A37946C69DA21245F1C,PinName="ErrorTolerance",PinToolTip="Error Tolerance\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=True,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + End Object + `, + size: [9, 4], + pins: 3, + delegate: false, + development: false, + additionalTest: async (node, pins) => { + for (const pin of pins) { + expect(await pin.evaluate(pin => pin.template.renderIcon().strings.join(""))) + .toStrictEqual(SVGIcon.operationPin.strings.join("")) + } + } +}) diff --git a/tests/nodeGreaterTimespanTimespan.spec.js b/tests/nodeGreaterTimespanTimespan.spec.js new file mode 100644 index 0000000..193d4d2 --- /dev/null +++ b/tests/nodeGreaterTimespanTimespan.spec.js @@ -0,0 +1,29 @@ +import SVGIcon from "../js/SVGIcon.js" +import { expect, testNode } from "./fixtures/test.js" + +testNode({ + name: "Greater timespan timespan", + title: ">", + value: String.raw` + 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 + "NodePosY"=256 + "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: async (node, pins) => { + for (const pin of pins) { + expect(await pin.evaluate(pin => pin.template.renderIcon().strings.join(""))) + .toStrictEqual(SVGIcon.operationPin.strings.join("")) + } + } +}) diff --git a/tests/nodeHasMatchingGameplayTag.spec.js b/tests/nodeHasMatchingGameplayTag.spec.js new file mode 100644 index 0000000..5b9461c --- /dev/null +++ b/tests/nodeHasMatchingGameplayTag.spec.js @@ -0,0 +1,30 @@ +import Configuration from "../js/Configuration.js" +import SVGIcon from "../js/SVGIcon.js" +import { testNode } from "./fixtures/test.js" + +testNode({ + name: "Has Matching Gameplay Tag", + subtitle: "Target is Gameplay Tag Asset Interface", + value: String.raw` + Begin Object Class=/Script/BlueprintGraph.K2Node_Message Name="K2Node_Message_0" + bIsPureFunc=True + bIsConstFunc=True + bIsInterfaceCall=True + FunctionReference=(MemberParent=/Script/CoreUObject.Class'"/Script/GameplayTags.GameplayTagAssetInterface"',MemberName="HasMatchingGameplayTag") + NodePosX=-848 + NodePosY=-16 + NodeGuid=1A6F45D8B6C5452A87596976F23B84E6 + CustomProperties Pin (PinId=0BE7D0A19E49412380B3DC930CFAB511,PinName="execute",PinToolTip="\nExec",PinType.PinCategory="exec",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=1F51344A80C541309418234B6CD92251,PinName="then",PinToolTip="\nExec",Direction="EGPD_Output",PinType.PinCategory="exec",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=ADA8C6785AA94026882EEBBE42AA0B02,PinName="self",PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target"),PinToolTip="Target\nObject Reference",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/CoreUObject.Object"',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=True,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=7EDFDB02E67941018F24BBBEE5702B45,PinName="TagToCheck",PinToolTip="Tag to Check\nGameplay Tag Structure\n\nTag to check for a match",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/GameplayTags.GameplayTag"',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=55131057064742A6860304B1D06BEFAC,PinName="ReturnValue",PinToolTip="Return Value\nBoolean\n\nTrue if the asset has a gameplay tag that matches, false if not",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,DefaultValue="false",AutogeneratedDefaultValue="false",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + End Object + `, + color: Configuration.nodeColors.green, + icon: SVGIcon.functionSymbol, + pins: 5, + pinNames: ["Target", "Tag to Check", "Return Value"], + delegate: false, + development: false, +}) diff --git a/tests/nodeInputIn(Vector3).spec.js b/tests/nodeInputIn(Vector3).spec.js new file mode 100644 index 0000000..0ccb490 --- /dev/null +++ b/tests/nodeInputIn(Vector3).spec.js @@ -0,0 +1,31 @@ +import Configuration from "../js/Configuration.js" +import { expect, testNode } from "./fixtures/test.js" + +testNode({ + name: "Input In (Vector3)", + value: String.raw` + Begin Object Class=/Script/UnrealEd.MaterialGraphNode Name="MaterialGraphNode_17" ExportPath="/Script/UnrealEd.MaterialGraphNode'/Engine/Transient.Material_1:MaterialGraph_0.MaterialGraphNode_17'" + Begin Object Class=/Script/Engine.MaterialExpressionFunctionInput Name="MaterialExpressionFunctionInput_7" ExportPath="/Script/Engine.MaterialExpressionFunctionInput'/Engine/Transient.Material_1:MaterialGraph_0.MaterialGraphNode_17.MaterialExpressionFunctionInput_7'" + End Object + Begin Object Name="MaterialExpressionFunctionInput_7" ExportPath="/Script/Engine.MaterialExpressionFunctionInput'/Engine/Transient.Material_1:MaterialGraph_0.MaterialGraphNode_17.MaterialExpressionFunctionInput_7'" + Id=2590318028564D9BAF90BEA43FBD3F1F + MaterialExpressionEditorX=512 + MaterialExpressionEditorY=224 + MaterialExpressionGuid=B0F1358EACAF46E5A277253263F0ECFC + Material="/Script/Engine.Material'/Engine/Transient.Material_1'" + End Object + MaterialExpression="/Script/Engine.MaterialExpressionFunctionInput'MaterialExpressionFunctionInput_7'" + NodePosX=512 + NodePosY=224 + NodeGuid=7F222623B44A4774BCA3C2F32DD16E98 + CustomProperties Pin (PinId=DD534EE002554330B23E7F4B984A52F5,PinName="Preview",PinType.PinCategory="optional",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=22FB979A3F314CBA9B2ABE11214E9827,PinName="Output",PinFriendlyName=NSLOCTEXT("MaterialGraphNode", "Space", " "),Direction="EGPD_Output",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,) + End Object + `, + color: Configuration.nodeColors.red, + icon: null, + pins: 2, + pinNames: ["Preview"], + delegate: false, + development: false, +}) diff --git a/tests/nodeInputX_1(Scalar).spec.js b/tests/nodeInputX_1(Scalar).spec.js new file mode 100644 index 0000000..fb8c6b1 --- /dev/null +++ b/tests/nodeInputX_1(Scalar).spec.js @@ -0,0 +1,36 @@ +import Configuration from "../js/Configuration.js" +import { testNode } from "./fixtures/test.js" + +testNode({ + name: "Input X_1 (Scalar)", + value: String.raw` + Begin Object Class=/Script/UnrealEd.MaterialGraphNode Name="MaterialGraphNode_14" ExportPath="/Script/UnrealEd.MaterialGraphNode'/Engine/Transient.Material_1:MaterialGraph_0.MaterialGraphNode_14'" + Begin Object Class=/Script/Engine.MaterialExpressionFunctionInput Name="MaterialExpressionFunctionInput_4" ExportPath="/Script/Engine.MaterialExpressionFunctionInput'/Engine/Transient.Material_1:MaterialGraph_0.MaterialGraphNode_14.MaterialExpressionFunctionInput_4'" + End Object + Begin Object Name="MaterialExpressionFunctionInput_4" ExportPath="/Script/Engine.MaterialExpressionFunctionInput'/Engine/Transient.Material_1:MaterialGraph_0.MaterialGraphNode_14.MaterialExpressionFunctionInput_4'" + InputName="X_1" + Id=220B12C48A1B4FD2A2F1964A3670D092 + InputType=FunctionInput_Scalar + bUsePreviewValueAsDefault=True + SortPriority=2 + MaterialExpressionEditorX=-64 + MaterialExpressionEditorY=208 + MaterialExpressionGuid=5B9F03CCBBD54567A9B6EAD08AAA08F0 + Material="/Script/Engine.Material'/Engine/Transient.Material_1'" + Function="/Script/Engine.MaterialFunction'/Engine/Transient.AppendMany'" + End Object + MaterialExpression="/Script/Engine.MaterialExpressionFunctionInput'MaterialExpressionFunctionInput_4'" + NodePosX=-64 + NodePosY=208 + NodeGuid=9379668BD62A45458DC56BE5B3F80A73 + CustomProperties Pin (PinId=1021DF0F4ABC4FE3BF1CF97F6FD78496,PinName="Preview",PinType.PinCategory="optional",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=C875FB5EEFDC4CE6BD98B872403F7C29,PinName="Output",PinFriendlyName=NSLOCTEXT("MaterialGraphNode", "Space", " "),Direction="EGPD_Output",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,) + End Object + `, + color: Configuration.nodeColors.red, + icon: null, + pins: 2, + pinNames: ["Preview"], + delegate: false, + development: false, +}) diff --git a/tests/nodeInterpolateOverTimeQuaternion.spec.js b/tests/nodeInterpolateOverTimeQuaternion.spec.js new file mode 100644 index 0000000..81de08a --- /dev/null +++ b/tests/nodeInterpolateOverTimeQuaternion.spec.js @@ -0,0 +1,53 @@ +import { css } from "lit" +import Configuration from "../js/Configuration.js" +import { expect, testNode } from "./fixtures/test.js" + +testNode({ + name: "Interpolate Over Time Quaternion", + value: String.raw` + Begin Object Class=/Script/NiagaraEditor.NiagaraNodeFunctionCall Name="NiagaraNodeFunctionCall_160" ExportPath="/Script/NiagaraEditor.NiagaraNodeFunctionCall'/Engine/Transient.NewNiagaraScript:NiagaraScriptSource_0.NiagaraGraph_0.NiagaraNodeFunctionCall_160'" + FunctionScript="/Script/Niagara.NiagaraScript'/Niagara/Functions/Math/InterpolateOverTime_Quaternion.InterpolateOverTime_Quaternion'" + SelectedScriptVersion=5A6359E649629A32B6B4CA9D6A4CF08B + CachedChangeId=BD6C65FF48EE55BD0354208C6E7CFC5E + FunctionDisplayName="InterpolateOverTime_Quaternion" + ChangeId=AFBFC05C8AFD4E3D9256AB1181E12D82 + NodePosX=544 + NodePosY=-384 + NodeGuid=12612978C2CC4F0BB84C22D4B4EEC3E1 + CustomProperties Pin (PinId=A123640517EC4387958B42AE6AAAF9FA,PinName="Map",PinType.PinCategory="Type",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.ScriptStruct'/Script/Niagara.NiagaraParameterMap'",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=167B2B0C6E354603A988999007C19BA1,PinName="Rate Of Change",PinType.PinCategory="Type",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.ScriptStruct'/Script/Niagara.NiagaraFloat'",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=True,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=E6184BA334B24985A45FC5F9E73F81D2,PinName="FirstFrame",PinType.PinCategory="Type",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.ScriptStruct'/Script/Niagara.NiagaraBool'",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=True,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=1BDC577CF32A4990A7EEEB9AC3BBDAA2,PinName="Delta Time",PinType.PinCategory="Type",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.ScriptStruct'/Script/Niagara.NiagaraFloat'",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=True,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=7C1356D8BDD74EBBA569EB9E1905EA0D,PinName="Target Value",PinType.PinCategory="Type",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.ScriptStruct'/Script/CoreUObject.Quat4f'",PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="0.000,0.000,0.000,1.000",AutogeneratedDefaultValue="0.000,0.000,0.000,1.000",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=A57085A8B43144C1BCD7D67A81E09054,PinName="Initial Value",PinType.PinCategory="Type",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.ScriptStruct'/Script/CoreUObject.Quat4f'",PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="0.000,0.000,0.000,1.000",AutogeneratedDefaultValue="0.000,0.000,0.000,1.000",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=0A10BAB1865F442EA0BFE5F320469DE3,PinName="Map",Direction="EGPD_Output",PinType.PinCategory="Type",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.ScriptStruct'/Script/Niagara.NiagaraParameterMap'",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=True,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=3CF7483A34D64238BE6A3E9C20CE5111,PinName="Moving Average",Direction="EGPD_Output",PinType.PinCategory="Type",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.ScriptStruct'/Script/CoreUObject.Quat4f'",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=True,bAdvancedView=False,bOrphanedPin=False,) + End Object + `, + size: [17, 13], + icon: null, + color: Configuration.nodeColors.darkerBlue, + pins: 8, + pinNames: [ + "Map", + "Rate Of Change", + "First Frame", + "Delta Time", + "Target Value", + "Initial Value", + "Map", + "Moving Average", + ], + delegate: false, + development: false, + additionalTest: async (node, pins) => { + expect(await node.evaluate(node => node.classList.contains("ueb-node-style-glass"))).toBeFalsy() + expect(await node.evaluate(node => node.classList.contains("ueb-node-style-default"))).toBeTruthy() + expect(await pins[1].evaluate(p => p.entity.pinColor().cssText)).toBe(css`160, 250, 68`.cssText) + expect(await pins[2].evaluate(p => p.entity.pinColor().cssText)).toBe(css`146, 0, 0`.cssText) + expect(await pins[3].evaluate(p => p.entity.pinColor().cssText)).toBe(css`160, 250, 68`.cssText) + expect(await pins[4].evaluate(p => p.entity.pinColor().cssText)).toBe(css`0, 88, 200`.cssText) + expect(await pins[5].evaluate(p => p.entity.pinColor().cssText)).toBe(css`0, 88, 200`.cssText) + expect(await pins[7].evaluate(p => p.entity.pinColor().cssText)).toBe(css`0, 88, 200`.cssText) + }, +}) diff --git a/tests/nodeIsValid.spec.js b/tests/nodeIsValid.spec.js new file mode 100644 index 0000000..49fa66d --- /dev/null +++ b/tests/nodeIsValid.spec.js @@ -0,0 +1,26 @@ +import Configuration from "../js/Configuration.js" +import SVGIcon from "../js/SVGIcon.js" +import { testNode } from "./fixtures/test.js" + +testNode({ + name: "Is Valid", + value: String.raw` + Begin Object Class=/Script/BlueprintGraph.K2Node_MacroInstance Name="K2Node_MacroInstance_0" + MacroGraphReference=(MacroGraph=/Script/Engine.EdGraph'"/Engine/EditorBlueprintResources/StandardMacros.StandardMacros:IsValid"',GraphBlueprint=/Script/Engine.Blueprint'"/Engine/EditorBlueprintResources/StandardMacros.StandardMacros"',GraphGuid=64422BCD430703FF5CAEA8B79A32AA65) + NodePosX=-656 + NodePosY=304 + NodeGuid=4CE17DC3398743D3A0DF641B28BA82FE + CustomProperties Pin (PinId=8E6B4EA9EF3D418A9017555312A36415,PinName="exec",PinType.PinCategory="exec",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=18F0CDCFCDFC49FC92EABDFD77FB2649,PinName="InputObject",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/CoreUObject.Object"',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=B4E31AA12E8D448C8A19F523C10F8527,PinName="Is Valid",Direction="EGPD_Output",PinType.PinCategory="exec",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=49E3CCDD6EBB46AE9B6FDFBC951E092C,PinName="Is Not Valid",Direction="EGPD_Output",PinType.PinCategory="exec",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: [18, 9], + color: Configuration.nodeColors.gray, + icon: SVGIcon.questionMark, + pins: 4, + pinNames: ["Exec", "Input Object", "Is Valid", "Is Not Valid"], + delegate: false, + development: false, +}) diff --git a/tests/nodeIssue18.spec.js b/tests/nodeIssue18.spec.js new file mode 100644 index 0000000..1bd8eab --- /dev/null +++ b/tests/nodeIssue18.spec.js @@ -0,0 +1,93 @@ +import Configuration from "../js/Configuration.js" +import Utility from "../js/Utility.js" +import { expect, testNode } from "./fixtures/test.js" + +testNode({ + name: "Issue 18", + title: "Mask ( R )", + value: String.raw` + Begin Object Class=/Script/UnrealEd.MaterialGraphNode Name="MaterialGraphNode_37" ExportPath="/Script/UnrealEd.MaterialGraphNode'/Engine/Transient.NewMaterial:MaterialGraph_0.MaterialGraphNode_37'" + Begin Object Class=/Script/Engine.MaterialExpressionComponentMask Name="MaterialExpressionComponentMask_0" ExportPath="/Script/Engine.MaterialExpressionComponentMask'/Engine/Transient.NewMaterial:MaterialGraph_0.MaterialGraphNode_37.MaterialExpressionComponentMask_0'" + End Object + Begin Object Name="MaterialExpressionComponentMask_0" ExportPath="/Script/Engine.MaterialExpressionComponentMask'/Engine/Transient.NewMaterial:MaterialGraph_0.MaterialGraphNode_37.MaterialExpressionComponentMask_0'" + R=True + MaterialExpressionEditorX=-544 + MaterialExpressionEditorY=32 + MaterialExpressionGuid=8EFA535CAE3A4DAF9DAE27B200E06EDC + Material="/Script/UnrealEd.PreviewMaterial'/Engine/Transient.NewMaterial'" + End Object + MaterialExpression="/Script/Engine.MaterialExpressionComponentMask'MaterialExpressionComponentMask_0'" + NodePosX=-544 + NodePosY=32 + AdvancedPinDisplay=Shown + NodeGuid=54A40610EEC646A0954F310727D1B888 + CustomProperties Pin (PinId=DC3859AB4C8C12645EEA1AA4E500A637,PinName="Input",PinFriendlyName=NSLOCTEXT("MaterialGraphNode", "Space", " "),PinType.PinCategory="required",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=D5C8F4DF4AFE5EEB605ED382CD5744DE,PinName="R",PinType.PinCategory="optional",PinType.PinSubCategory="bool",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,DefaultValue="true",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=True,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=True,bOrphanedPin=False,) + CustomProperties Pin (PinId=7E43455B4D2232C4E99BB098631CAFCE,PinName="G",PinType.PinCategory="optional",PinType.PinSubCategory="bool",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,DefaultValue="false",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=True,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=True,bOrphanedPin=False,) + CustomProperties Pin (PinId=46CEC6754365CB39F9FC39944B40D5C6,PinName="B",PinType.PinCategory="optional",PinType.PinSubCategory="bool",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,DefaultValue="false",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=True,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=True,bOrphanedPin=False,) + CustomProperties Pin (PinId=F658E76C400B0AF242DFE292C92702C8,PinName="A",PinType.PinCategory="optional",PinType.PinSubCategory="bool",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,DefaultValue="false",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=True,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=True,bOrphanedPin=False,) + CustomProperties Pin (PinId=2EC8C8234D570AB2A03DB59A1FF65987,PinName="Output",PinFriendlyName=NSLOCTEXT("MaterialGraphNode", "Space", " "),Direction="EGPD_Output",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,) + End Object + `, + size: [7, 14.5], + color: Configuration.nodeColors.green, + icon: null, + pins: 6, + pinNames: Configuration.rgba, + delegate: false, + development: false, + additionalTest: async (node, pins, blueprintPage) => { + const relevantPins = [] + for (const pin of pins) { + const innerText = await pin.innerText() + if (Configuration.rgba.includes(innerText)) { + relevantPins.push(pin) + } + } + for (const pin of relevantPins) { + const pinName = await pin.innerText() + // Only pin R is checked + await expect(pin.locator('input[type="checkbox"]')).toBeChecked({ checked: pinName === "R" }) + } + await relevantPins[0].locator('input[type="checkbox"]').uncheck() // Uncheck "R" + await relevantPins[2].locator('input[type="checkbox"]').check() // Check "B" + await relevantPins[3].locator('input[type="checkbox"]').check() // Check "A" + await relevantPins[2].locator('input[type="checkbox"]').uncheck() // Uncheck "B" + await relevantPins[2].locator('input[type="checkbox"]').check() // Check "B" + await expect(node.locator(".ueb-node-name")).toHaveText("Mask ( B A )") + const resultSerialization = await blueprintPage.blueprintLocator.evaluate(blueprint => { + blueprint.selectAll() + return blueprint.template.getCopyInputObject().getSerializedText() + }) + const expectedSerialization = String.raw` + Begin Object Class=/Script/UnrealEd.MaterialGraphNode Name="MaterialGraphNode_37" ExportPath="/Script/UnrealEd.MaterialGraphNode'/Engine/Transient.NewMaterial:MaterialGraph_0.MaterialGraphNode_37'" + Begin Object Class=/Script/Engine.MaterialExpressionComponentMask Name="MaterialExpressionComponentMask_0" ExportPath="/Script/Engine.MaterialExpressionComponentMask'/Engine/Transient.NewMaterial:MaterialGraph_0.MaterialGraphNode_37.MaterialExpressionComponentMask_0'" + End Object + Begin Object Name="MaterialExpressionComponentMask_0" ExportPath="/Script/Engine.MaterialExpressionComponentMask'/Engine/Transient.NewMaterial:MaterialGraph_0.MaterialGraphNode_37.MaterialExpressionComponentMask_0'" + B=True + A=True + MaterialExpressionEditorX=-544 + MaterialExpressionEditorY=32 + MaterialExpressionGuid=8EFA535CAE3A4DAF9DAE27B200E06EDC + Material="/Script/UnrealEd.PreviewMaterial'/Engine/Transient.NewMaterial'" + End Object + MaterialExpression="/Script/Engine.MaterialExpressionComponentMask'MaterialExpressionComponentMask_0'" + NodePosX=-544 + NodePosY=32 + AdvancedPinDisplay=Shown + NodeGuid=54A40610EEC646A0954F310727D1B888 + CustomProperties Pin (PinId=DC3859AB4C8C12645EEA1AA4E500A637,PinName="Input",PinFriendlyName=NSLOCTEXT("MaterialGraphNode", "Space", " "),PinType.PinCategory="required",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=D5C8F4DF4AFE5EEB605ED382CD5744DE,PinName="R",PinType.PinCategory="optional",PinType.PinSubCategory="bool",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,DefaultValue="false",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=True,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=True,bOrphanedPin=False,) + CustomProperties Pin (PinId=7E43455B4D2232C4E99BB098631CAFCE,PinName="G",PinType.PinCategory="optional",PinType.PinSubCategory="bool",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,DefaultValue="false",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=True,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=True,bOrphanedPin=False,) + CustomProperties Pin (PinId=46CEC6754365CB39F9FC39944B40D5C6,PinName="B",PinType.PinCategory="optional",PinType.PinSubCategory="bool",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,DefaultValue="true",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=True,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=True,bOrphanedPin=False,) + CustomProperties Pin (PinId=F658E76C400B0AF242DFE292C92702C8,PinName="A",PinType.PinCategory="optional",PinType.PinSubCategory="bool",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,DefaultValue="true",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=True,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=True,bOrphanedPin=False,) + CustomProperties Pin (PinId=2EC8C8234D570AB2A03DB59A1FF65987,PinName="Output",PinFriendlyName=NSLOCTEXT("MaterialGraphNode", "Space", " "),Direction="EGPD_Output",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,) + End Object + ` + const words = expectedSerialization + .split("\n") + .map(row => row.match(/\s*("?\w+(\s+\w+)*).+/)?.[1]) + .filter(v => v?.length > 0) + expect(resultSerialization).toMatch(Utility.getFirstWordOrder(words)) + } +}) diff --git a/tests/nodeIssue21.spec.js b/tests/nodeIssue21.spec.js new file mode 100644 index 0000000..ed680b3 --- /dev/null +++ b/tests/nodeIssue21.spec.js @@ -0,0 +1,46 @@ +import Configuration from "../js/Configuration.js" +import { expect, testNode } from "./fixtures/test.js" + +testNode({ + name: "Issue 21", + title: "Subtract(1,1)", + value: String.raw` + Begin Object Class=/Script/UnrealEd.MaterialGraphNode Name="MaterialGraphNode_202" ExportPath=/Script/UnrealEd.MaterialGraphNode'/Engine/Transient.卡通:MaterialGraph_0.MaterialGraphNode_202' + Begin Object Class=/Script/Engine.MaterialExpressionSubtract Name="MaterialExpressionSubtract_10" ExportPath=/Script/Engine.MaterialExpressionSubtract'/Engine/Transient.卡通:MaterialGraph_0.MaterialGraphNode_202.MaterialExpressionSubtract_10' + End Object + Begin Object Name="MaterialExpressionSubtract_10" ExportPath=/Script/Engine.MaterialExpressionSubtract'/Engine/Transient.卡通:MaterialGraph_0.MaterialGraphNode_202.MaterialExpressionSubtract_10' + A=(Expression="/Script/Engine.MaterialExpressionSaturate'MaterialGraphNode_237.MaterialExpressionSaturate_3'") + B=(Expression="/Script/Engine.MaterialExpressionSaturate'MaterialGraphNode_201.MaterialExpressionSaturate_7'") + MaterialExpressionEditorX=0 + MaterialExpressionEditorY=0 + MaterialExpressionGuid=7202C13642DA1225C118CF867599387C + Material="/Script/UnrealEd.PreviewMaterial'/Engine/Transient.卡通'" + End Object + MaterialExpression=/Script/Engine.MaterialExpressionSubtract'MaterialExpressionSubtract_10' + NodePosX=0 + NodePosY=0 + NodeGuid=7008F5AC49E8F5BFD4C707819A58C021 + CustomProperties Pin (PinId=86D4DE5E48C71A576ED0519B982907B3,PinName="A",PinType.PinCategory="optional",PinType.PinSubCategory="red",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,DefaultValue="1",LinkedTo=(),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=5C75E1374E1E7436C72B9FA072875C04,PinName="B",PinType.PinCategory="optional",PinType.PinSubCategory="red",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,DefaultValue="1",LinkedTo=(),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=528D346A49976B0854764CA755AF2F93,PinName="Output",PinFriendlyName=NSLOCTEXT("MaterialGraphNode", "Space", " "),Direction="EGPD_Output",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,LinkedTo=(),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + End Object + `, + size: [8, 6], + color: Configuration.nodeColors.green, + icon: null, + pins: 3, + pinNames: ["A", "B"], + delegate: false, + development: false, + additionalTest: async (node, pins, blueprintPage) => { + await expect(pins[0].locator("ueb-input")).toHaveText("1.0") + await expect(pins[1].locator("ueb-input")).toHaveText("1.0") + let inputs = await node.locator("ueb-input").all() + await inputs[0].fill("-8") + await blueprintPage.blur() + expect(await node.evaluate(n => n.nodeDisplayName)).toEqual("Subtract(-8,1)") + await inputs[1].fill("9.2") + await blueprintPage.blur() + expect(await node.evaluate(n => n.nodeDisplayName)).toEqual("Subtract(-8,9.2)") + } +}) diff --git a/tests/nodeLeftMouseButton.spec.js b/tests/nodeLeftMouseButton.spec.js new file mode 100644 index 0000000..8447f06 --- /dev/null +++ b/tests/nodeLeftMouseButton.spec.js @@ -0,0 +1,25 @@ +import Configuration from "../js/Configuration.js" +import SVGIcon from "../js/SVGIcon.js" +import { testNode } from "./fixtures/test.js" + +testNode({ + name: "Left Mouse Button", + value: String.raw` + Begin Object Class=/Script/BlueprintGraph.K2Node_InputKey Name="K2Node_InputKey_16" + InputKey=LeftMouseButton + NodePosX=-224 + NodePosY=128 + NodeGuid=41CB459BE2E842F8981D1263CBCF48CB + CustomProperties Pin (PinId=6F2EDC0B46FE4B53B031B674417B2F68,PinName="Pressed",Direction="EGPD_Output",PinType.PinCategory="exec",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=DE99E9C67C1B4C70B9486BE43DE94813,PinName="Released",Direction="EGPD_Output",PinType.PinCategory="exec",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=3078091B73C9484F920A32ABEC7F70E2,PinName="Key",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/InputCore.Key"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="None",AutogeneratedDefaultValue="None",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + End Object + `, + size: [11, 8], + color: Configuration.nodeColors.red, + icon: SVGIcon.mouse, + pins: 3, + pinNames: ["Pressed", "Released", "Key"], + delegate: false, + development: false, +}) diff --git a/tests/nodeLessEqualDoubleDouble.spec.js b/tests/nodeLessEqualDoubleDouble.spec.js new file mode 100644 index 0000000..820fb00 --- /dev/null +++ b/tests/nodeLessEqualDoubleDouble.spec.js @@ -0,0 +1,30 @@ +import SVGIcon from "../js/SVGIcon.js" +import { expect, testNode } from "./fixtures/test.js" + +testNode({ + name: "Less equal double double", + 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"' + bIsPureFunc=True + FunctionReference=(MemberParent=/Script/CoreUObject.Class'"/Script/Engine.KismetMathLibrary"',MemberName="LessEqual_DoubleDouble") + NodePosX=-128 + NodePosY=-128 + NodeGuid=BE4FB00052224A8AA7695069C0A4A6C0 + CustomProperties Pin (PinId=B83E6D436D73468087242654C1E71F11,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=25C2CC62A0834A07B81E770F3BD41493,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=3E135915A0FE467CBC499FDCAAB3906A,PinName="ReturnValue",PinToolTip="Return Value\nBoolean\n\nReturns true if A is Less than or 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=708C4E7324034655B5677DAAE057220D,PinName="ErrorTolerance",PinToolTip="Error Tolerance\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=True,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + End Object + `, + size: [9, 4], + pins: 3, + delegate: false, + development: false, + additionalTest: async (node, pins) => { + for (const pin of pins) { + expect(await pin.evaluate(pin => pin.template.renderIcon().strings.join(""))) + .toStrictEqual(SVGIcon.operationPin.strings.join("")) + } + } +}) diff --git a/tests/nodeLessTimespanTimespan.spec.js b/tests/nodeLessTimespanTimespan.spec.js new file mode 100644 index 0000000..bcd10c5 --- /dev/null +++ b/tests/nodeLessTimespanTimespan.spec.js @@ -0,0 +1,29 @@ +import SVGIcon from "../js/SVGIcon.js" +import { expect, testNode } from "./fixtures/test.js" + +testNode({ + name: "Less timespan timespan", + 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/Engine.KismetMathLibrary"',MemberName="Less_TimespanTimespan") + NodePosX=-192 + NodePosY=256 + NodeGuid=2CF3423BF9604C71957BE3EFDFD9DAFF + CustomProperties Pin (PinId=84732B8AE02247EB898E6FB149457E6A,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=8218DDBA01704149AD5FE655CE9FAD07,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=680CD9CFA7924525AFE30B703BD20BD6,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: async (node, pins) => { + for (const pin of pins) { + expect(await pin.evaluate(pin => pin.template.renderIcon().strings.join(""))) + .toStrictEqual(SVGIcon.operationPin.strings.join("")) + } + } +}) diff --git a/tests/nodeLineTraceByChannel.spec.js b/tests/nodeLineTraceByChannel.spec.js new file mode 100644 index 0000000..55b06cd --- /dev/null +++ b/tests/nodeLineTraceByChannel.spec.js @@ -0,0 +1,38 @@ +import Configuration from "../js/Configuration.js" +import SVGIcon from "../js/SVGIcon.js" +import { testNode } from "./fixtures/test.js" + +testNode({ + name: "Line Trace By Channel", + value: String.raw` + Begin Object Class=/Script/BlueprintGraph.K2Node_CallFunction Name="K2Node_CallFunction_0" + FunctionReference=(MemberParent=/Script/CoreUObject.Class'"/Script/Engine.KismetSystemLibrary"',MemberName="LineTraceSingle") + NodePosX=-480 + NodePosY=-144 + AdvancedPinDisplay=Shown + NodeGuid=F842A7449F24455B8B1198B11345DB9C + CustomProperties Pin (PinId=BFABF69DBB914DE38D163751AAB70E4B,PinName="execute",PinToolTip="\nExec",PinType.PinCategory="exec",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=EDFC912BE807488599E27B717CAD40AD,PinName="then",PinToolTip="\nExec",Direction="EGPD_Output",PinType.PinCategory="exec",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=B3716E637CD048418CE6D5D8D0C2A799,PinName="self",PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target"),PinToolTip="Target\nKismet System Library Object Reference",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/Engine.KismetSystemLibrary"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultObject="/Script/Engine.Default__KismetSystemLibrary",PersistentGuid=00000000000000000000000000000000,bHidden=True,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=9DA3C37CCD4A417A9F2DCE2A71232D6F,PinName="WorldContextObject",PinToolTip="World Context Object\nObject Reference",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/CoreUObject.Object"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=True,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=True,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=A3053BF0111F468789C77E9EADCB1331,PinName="Start",PinToolTip="Start\nVector\n\nStart of line segment.",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/CoreUObject.Vector"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=True,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="0, 0, 0",AutogeneratedDefaultValue="0, 0, 0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=9D71C42C3FA94EE68623F50EDF0A3ED7,PinName="End",PinToolTip="End\nVector\n\nEnd of line segment.",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/CoreUObject.Vector"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=True,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="0, 0, 0",AutogeneratedDefaultValue="0, 0, 0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=93DD1DFD330C48E785CC19B0ED37F0B8,PinName="TraceChannel",PinToolTip="Trace Channel\nETraceTypeQuery Enum",PinType.PinCategory="byte",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Enum'"/Script/Engine.ETraceTypeQuery"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="TraceTypeQuery1",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=DCF9ABA98358461099ED15E9DBD71D16,PinName="bTraceComplex",PinToolTip="Trace Complex\nBoolean\n\nTrue to test against complex collision, false to test against simplified collision.",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,DefaultValue="false",AutogeneratedDefaultValue="false",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=C8F98AFBD7D24416A6EBC9E5F99D71C0,PinName="ActorsToIgnore",PinToolTip="Actors to Ignore\nArray of Actor Object References",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/Engine.Actor"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=Array,PinType.bIsReference=True,PinType.bIsConst=True,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=True,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=BA6811254B84450382EA2A6113BB0805,PinName="DrawDebugType",PinToolTip="Draw Debug Type\nEDrawDebugTrace Enum",PinType.PinCategory="byte",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Enum'"/Script/Engine.EDrawDebugTrace"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="None",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=899C9DB84C70423285DE65B2CA053FCB,PinName="OutHit",PinToolTip="Out Hit\nHit Result Structure\n\nProperties of the trace hit.",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/Engine.HitResult"',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=8D886907D6AD42C3B6EEBF4C843E2007,PinName="bIgnoreSelf",PinToolTip="Ignore Self\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,DefaultValue="true",AutogeneratedDefaultValue="true",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=A8976968AE0046C493C612AF2B433D39,PinName="TraceColor",PinToolTip="Trace Color\nLinear Color Structure",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/CoreUObject.LinearColor"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="(R=1.000000,G=0.000000,B=0.000000,A=1.000000)",AutogeneratedDefaultValue="(R=1.000000,G=0.000000,B=0.000000,A=1.000000)",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=True,bOrphanedPin=False,) + CustomProperties Pin (PinId=1AE4B506C8174ACE9CD51E2638B16661,PinName="TraceHitColor",PinToolTip="Trace Hit Color\nLinear Color Structure",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/CoreUObject.LinearColor"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="(R=0.000000,G=1.000000,B=0.000000,A=1.000000)",AutogeneratedDefaultValue="(R=0.000000,G=1.000000,B=0.000000,A=1.000000)",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=True,bOrphanedPin=False,) + CustomProperties Pin (PinId=B7E84F13C2E44C0F9D5C967D0C2200A2,PinName="DrawTime",PinToolTip="Draw Time\nFloat (single-precision)",PinType.PinCategory="real",PinType.PinSubCategory="float",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,DefaultValue="5.000000",AutogeneratedDefaultValue="5.000000",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=True,bOrphanedPin=False,) + CustomProperties Pin (PinId=87EB3263DE5C4297AAFBAB07A960C352,PinName="ReturnValue",PinToolTip="Return Value\nBoolean\n\nTrue if there was a hit, false otherwise.",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,DefaultValue="false",AutogeneratedDefaultValue="false",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + End Object + `, + color: Configuration.nodeColors.blue, + icon: SVGIcon.functionSymbol, + pins: 14, + pinNames: ["Start", "End", "Trace Channel", "Trace Complex", "Actors to Ignore", "Draw Debug Type", "Ignore Self", "Trace Color", "Trace Hit Color", "Draw Time", "Out Hit", "Return Value"], + delegate: false, + development: false, +}) diff --git a/tests/nodeLineTraceByProfile.spec.js b/tests/nodeLineTraceByProfile.spec.js new file mode 100644 index 0000000..607c483 --- /dev/null +++ b/tests/nodeLineTraceByProfile.spec.js @@ -0,0 +1,38 @@ +import Configuration from "../js/Configuration.js" +import SVGIcon from "../js/SVGIcon.js" +import { testNode } from "./fixtures/test.js" + +testNode({ + name: "Line Trace By Profile", + value: String.raw` + Begin Object Class=/Script/BlueprintGraph.K2Node_CallFunction Name="K2Node_CallFunction_21" + FunctionReference=(MemberParent=/Script/CoreUObject.Class'"/Script/Engine.KismetSystemLibrary"',MemberName="LineTraceSingleByProfile") + NodePosX=-672 + NodePosY=-1600 + AdvancedPinDisplay=Hidden + NodeGuid=D8472647289146CCBC7857EF1A9AE666 + CustomProperties Pin (PinId=9BDB78D31C0743B09A5CFFC6330A952C,PinName="execute",PinToolTip="\nExec",PinType.PinCategory="exec",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=048F5710FF65448EBB67C4E0E6FB3CF6,PinName="then",PinToolTip="\nExec",Direction="EGPD_Output",PinType.PinCategory="exec",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=221C53FC10AF40EA9F03C2E240F62F26,PinName="self",PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target"),PinToolTip="Target\nKismet System Library Object Reference",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/Engine.KismetSystemLibrary"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultObject="/Script/Engine.Default__KismetSystemLibrary",PersistentGuid=00000000000000000000000000000000,bHidden=True,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=209531A0061F4F6DBC094F90D19FCEB1,PinName="WorldContextObject",PinToolTip="World Context Object\nObject Reference",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/CoreUObject.Object"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=True,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=True,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=AE9C2442EBBC433D84165E0D424C7228,PinName="Start",PinToolTip="Start\nVector\n\nStart of line segment.",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/CoreUObject.Vector"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=True,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="0, 0, 0",AutogeneratedDefaultValue="0, 0, 0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=10A25344350C48D9A0AEFA65BB528F26,PinName="End",PinToolTip="End\nVector\n\nEnd of line segment.",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/CoreUObject.Vector"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=True,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="0, 0, 0",AutogeneratedDefaultValue="0, 0, 0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=B0CC397419234E8EB505CC49655B4AF9,PinName="ProfileName",PinToolTip="Profile Name\nName\n\nThe \'profile\' used to determine which components to hit",PinType.PinCategory="name",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,DefaultValue="None",AutogeneratedDefaultValue="None",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=36237D5C776B4C8EA106EF6C4AD9FCE5,PinName="bTraceComplex",PinToolTip="Trace Complex\nBoolean\n\nTrue to test against complex collision, false to test against simplified collision.",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,DefaultValue="false",AutogeneratedDefaultValue="false",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=952F86C97CDC4D198448C5964FFB8C6A,PinName="ActorsToIgnore",PinToolTip="Actors to Ignore\nArray of Actor Object References",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/Engine.Actor"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=Array,PinType.bIsReference=True,PinType.bIsConst=True,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=True,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=9E783D0881F54373A454F020BB737545,PinName="DrawDebugType",PinToolTip="Draw Debug Type\nEDrawDebugTrace Enum",PinType.PinCategory="byte",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Enum'"/Script/Engine.EDrawDebugTrace"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="None",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=9380611C5EC6421EAE830F811AE4CA9B,PinName="OutHit",PinToolTip="Out Hit\nHit Result Structure\n\nProperties of the trace hit.",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/Engine.HitResult"',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=F50E8E483801451EA367DEE291EDB9C0,PinName="bIgnoreSelf",PinToolTip="Ignore Self\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,DefaultValue="true",AutogeneratedDefaultValue="true",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=C34949E571254F43840B72ADAA5EB1C1,PinName="TraceColor",PinToolTip="Trace Color\nLinear Color Structure",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/CoreUObject.LinearColor"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="(R=1.000000,G=0.000000,B=0.000000,A=1.000000)",AutogeneratedDefaultValue="(R=1.000000,G=0.000000,B=0.000000,A=1.000000)",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=True,bOrphanedPin=False,) + CustomProperties Pin (PinId=9AADB2287BF1491984DB8C5BEFA60B91,PinName="TraceHitColor",PinToolTip="Trace Hit Color\nLinear Color Structure",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/CoreUObject.LinearColor"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="(R=0.000000,G=1.000000,B=0.000000,A=1.000000)",AutogeneratedDefaultValue="(R=0.000000,G=1.000000,B=0.000000,A=1.000000)",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=True,bOrphanedPin=False,) + CustomProperties Pin (PinId=28D9F3ADA25044D08C614D119047BAB6,PinName="DrawTime",PinToolTip="Draw Time\nFloat (single-precision)",PinType.PinCategory="real",PinType.PinSubCategory="float",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,DefaultValue="5.000000",AutogeneratedDefaultValue="5.000000",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=True,bOrphanedPin=False,) + CustomProperties Pin (PinId=3720AA15FE9045F2A7A6D99A87C90A77,PinName="ReturnValue",PinToolTip="Return Value\nBoolean\n\nTrue if there was a hit, false otherwise.",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,DefaultValue="false",AutogeneratedDefaultValue="false",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + End Object + `, + color: Configuration.nodeColors.blue, + icon: SVGIcon.functionSymbol, + pins: 14, + pinNames: ["Start", "End", "Profile Name", "Trace Complex", "Actors to Ignore", "Draw Debug Type", "Ignore Self", "Trace Color", "Trace Hit Color", "Draw Time", "Out Hit", "Return Value"], + delegate: false, + development: false, +}) diff --git a/tests/nodeLineTraceComponent.spec.js b/tests/nodeLineTraceComponent.spec.js new file mode 100644 index 0000000..9c32211 --- /dev/null +++ b/tests/nodeLineTraceComponent.spec.js @@ -0,0 +1,35 @@ +import Configuration from "../js/Configuration.js" +import SVGIcon from "../js/SVGIcon.js" +import { testNode } from "./fixtures/test.js" + +testNode({ + name: "Line Trace Component", + subtitle: "Target is Primitive Component", + value: String.raw` + Begin Object Class=/Script/BlueprintGraph.K2Node_CallFunction Name="K2Node_CallFunction_2" + FunctionReference=(MemberParent=/Script/CoreUObject.Class'"/Script/Engine.PrimitiveComponent"',MemberName="K2_LineTraceComponent") + NodePosX=-480 + NodePosY=-96 + NodeGuid=AD1BECF7AEFB48418C321FACE1F6FEE6 + CustomProperties Pin (PinId=71E725C8BA2C4CDC9AD4A7666F88BC95,PinName="execute",PinToolTip="\nExec",PinType.PinCategory="exec",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=02915C65578D498983A1236076974343,PinName="then",PinToolTip="\nExec",Direction="EGPD_Output",PinType.PinCategory="exec",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=01035373F7D74828B1AF9F3A2D55BD1D,PinName="self",PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target"),PinToolTip="Target\nPrimitive Component Object Reference",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/Engine.PrimitiveComponent"',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=AC73F75AC0F444458C8F245E2434ADB7,PinName="TraceStart",PinToolTip="Trace Start\nVector\n\nThe start of the trace in world-space",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/CoreUObject.Vector"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="0, 0, 0",AutogeneratedDefaultValue="0, 0, 0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=FB1F08A845BD487C94E7D77544D6DFAD,PinName="TraceEnd",PinToolTip="Trace End\nVector\n\nThe end of the trace in world-space",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/CoreUObject.Vector"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="0, 0, 0",AutogeneratedDefaultValue="0, 0, 0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=789D51671D014297856F0396DD3E4BC3,PinName="bTraceComplex",PinToolTip="Trace Complex\nBoolean\n\nWhether or not to trace the complex physics representation or just the simple representation",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,DefaultValue="true",AutogeneratedDefaultValue="true",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=0CBD953C86A544FE98C066F4FEB320EC,PinName="bShowTrace",PinToolTip="Show Trace\nBoolean\n\nWhether or not to draw the trace in the world (for debugging)",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,DefaultValue="false",AutogeneratedDefaultValue="false",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=782378B513EC4329A7E00BBBCA9190CC,PinName="bPersistentShowTrace",PinToolTip="Persistent Show Trace\nBoolean\n\nWhether or not to make the debugging draw stay in the world permanently",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,DefaultValue="false",AutogeneratedDefaultValue="false",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=F077B022655742FF891ACDF37D15F1BA,PinName="HitLocation",PinToolTip="Hit Location\nVector",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/CoreUObject.Vector"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="0, 0, 0",AutogeneratedDefaultValue="0, 0, 0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=6D8B46698B1547D187E949DB90482C78,PinName="HitNormal",PinToolTip="Hit Normal\nVector",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/CoreUObject.Vector"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="0, 0, 0",AutogeneratedDefaultValue="0, 0, 0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=158EB11340C84CA5958FE7B4F296076B,PinName="BoneName",PinToolTip="Bone Name\nName",Direction="EGPD_Output",PinType.PinCategory="name",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,DefaultValue="None",AutogeneratedDefaultValue="None",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=13AD4AE0297E43639A30413D3F65407D,PinName="OutHit",PinToolTip="Out Hit\nHit Result Structure",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/Engine.HitResult"',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=963914D01EDF49EDA30FBB91F2CF493C,PinName="ReturnValue",PinToolTip="Return Value\nBoolean",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,DefaultValue="false",AutogeneratedDefaultValue="false",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + End Object + `, + color: Configuration.nodeColors.blue, + icon: SVGIcon.functionSymbol, + pins: 13, + pinNames: ["Target", "Trace Start", "Trace End", "Trace Complex", "Show Trace", "Persistent Show Trace", "Hit Location", "Hit Normal", "Bone Name", "Out Hit", "Return Value"], + delegate: false, + development: false, +}) diff --git a/tests/nodeLineTraceForObjects.spec.js b/tests/nodeLineTraceForObjects.spec.js new file mode 100644 index 0000000..1abebc2 --- /dev/null +++ b/tests/nodeLineTraceForObjects.spec.js @@ -0,0 +1,87 @@ +import Configuration from "../js/Configuration.js" +import SVGIcon from "../js/SVGIcon.js" +import { testNode } from "./fixtures/test.js" + +testNode({ + name: "Line Trace For Objects", + value: String.raw` + Begin Object Class=/Script/BlueprintGraph.K2Node_CallFunction Name="K2Node_CallFunction_8" + FunctionReference=(MemberParent=/Script/CoreUObject.Class'"/Script/Engine.KismetSystemLibrary"',MemberName="LineTraceSingleForObjects") + NodePosX=-208 + NodePosY=-352 + AdvancedPinDisplay=Shown + ErrorType=1 + NodeGuid=3EE71DDB1BD944DE961519875B895319 + CustomProperties Pin (PinId=96A094494D762C998E774ABB929EB41C,PinName="execute",PinToolTip="\nExec",PinType.PinCategory="exec",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=718E43E94384B5B10074D6BD04E74488,PinName="then",PinToolTip="\nExec",Direction="EGPD_Output",PinType.PinCategory="exec",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=0DB3EEE24A4161EE635A9A9D33EC9512,PinName="self",PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target"),PinToolTip="Target\nKismet System Library Object Reference",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/Engine.KismetSystemLibrary"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultObject="/Script/Engine.Default__KismetSystemLibrary",PersistentGuid=00000000000000000000000000000000,bHidden=True,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=124D88C54AF09D670C3A42A2576E8454,PinName="WorldContextObject",PinToolTip="World Context Object\nObject Reference",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/CoreUObject.Object"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=True,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=True,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=9884A8D5423FB15AE0A4ECA2C08F258E,PinName="Start",PinToolTip="Start\nVector\n\nStart of line segment.",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/CoreUObject.Vector"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=True,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="0, 0, 0",AutogeneratedDefaultValue="0, 0, 0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=A4C186FF494EFAF15578EF9A0453DB39,PinName="End",PinToolTip="End\nVector\n\nEnd of line segment.",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/CoreUObject.Vector"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=True,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="0, 0, 0",AutogeneratedDefaultValue="0, 0, 0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=4BED576E40A832A6F31237AEFBACBB71,PinName="ObjectTypes",PinToolTip="Object Types\nArray of EObjectTypeQuery Enums\n\nArray of Object Types to trace",PinType.PinCategory="byte",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Enum'"/Script/Engine.EObjectTypeQuery"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=Array,PinType.bIsReference=True,PinType.bIsConst=True,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="ObjectTypeQuery1",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=True,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=A8296F984AFE64743DAB3E897CC3DF47,PinName="bTraceComplex",PinToolTip="Trace Complex\nBoolean\n\nTrue to test against complex collision, false to test against simplified collision.",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,DefaultValue="false",AutogeneratedDefaultValue="false",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=A19DB65F47B607A3AAF50EA382815B7D,PinName="ActorsToIgnore",PinToolTip="Actors to Ignore\nArray of Actor Object References",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/Engine.Actor"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=Array,PinType.bIsReference=True,PinType.bIsConst=True,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=True,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=A3E482A7474A05E0E58F6AAA6E4734CD,PinName="DrawDebugType",PinToolTip="Draw Debug Type\nEDrawDebugTrace Enum",PinType.PinCategory="byte",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Enum'"/Script/Engine.EDrawDebugTrace"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="ForOneFrame",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=FE2B25154C824BB9EAF9E9A2ADA5943E,PinName="OutHit",PinToolTip="Out Hit\nHit Result Structure\n\nProperties of the trace hit.",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/Engine.HitResult"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,SubPins=(K2Node_CallFunction_8 D06FD3BB41F114BBF8C89DB38EAC0761,K2Node_CallFunction_8 B45FC53E42E98D2933D7A6A33722F4D8,K2Node_CallFunction_8 4DB0E6CC46E5A3C80AC6C1A5FA3E5129,K2Node_CallFunction_8 3A3C030840A593D2D379B2B716F271AB,K2Node_CallFunction_8 4466B24F480077A3458BF49C92FC9BAA,K2Node_CallFunction_8 F25B18164D6964B12DFEABADDB74919E,K2Node_CallFunction_8 71CB4433415AB77E32B1709BBD6573C4,K2Node_CallFunction_8 7AA02A024FF3C7D1429BE89272EB95A9,K2Node_CallFunction_8 4520C8C14542EBD0F7E6F49B25374A3A,K2Node_CallFunction_8 0D36352148C729A423CAD69546B499D3,K2Node_CallFunction_8 70B373F6489AD4ACF61A95BA7D172DA8,K2Node_CallFunction_8 70B601B342FDB51653A3069BE9ED80C1,K2Node_CallFunction_8 B0B9765C4B5539AC163A42B1C71EB743,K2Node_CallFunction_8 64F90D394DB9CA34EB4EA09AFF22C35B,K2Node_CallFunction_8 421966B241843C5AC06C179E9FDCBF59,K2Node_CallFunction_8 F2AC86054C34D620A396B48266CE6555,K2Node_CallFunction_8 C6128AA849ED10F1A91BB78A480187B4,K2Node_CallFunction_8 0624877E4E2FE8DEFAD2BB848F637811,),PersistentGuid=00000000000000000000000000000000,bHidden=True,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=D06FD3BB41F114BBF8C89DB38EAC0761,PinName="OutHit_bBlockingHit",PinFriendlyName=LOCGEN_FORMAT_NAMED(NSLOCTEXT("KismetSchema", "SplitPinFriendlyNameFormat", "{PinDisplayName} {ProtoPinDisplayName}"), "PinDisplayName", "Out Hit", "ProtoPinDisplayName", "Blocking Hit"),PinToolTip="Out Hit Blocking Hit\nBoolean",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,DefaultValue="false",AutogeneratedDefaultValue="false",ParentPin=K2Node_CallFunction_8 FE2B25154C824BB9EAF9E9A2ADA5943E,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=B45FC53E42E98D2933D7A6A33722F4D8,PinName="OutHit_bInitialOverlap",PinFriendlyName=LOCGEN_FORMAT_NAMED(NSLOCTEXT("KismetSchema", "SplitPinFriendlyNameFormat", "{PinDisplayName} {ProtoPinDisplayName}"), "PinDisplayName", "Out Hit", "ProtoPinDisplayName", "Initial Overlap"),PinToolTip="Out Hit Initial Overlap\nBoolean",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,DefaultValue="false",AutogeneratedDefaultValue="false",ParentPin=K2Node_CallFunction_8 FE2B25154C824BB9EAF9E9A2ADA5943E,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=4DB0E6CC46E5A3C80AC6C1A5FA3E5129,PinName="OutHit_Time",PinFriendlyName=LOCGEN_FORMAT_NAMED(NSLOCTEXT("KismetSchema", "SplitPinFriendlyNameFormat", "{PinDisplayName} {ProtoPinDisplayName}"), "PinDisplayName", "Out Hit", "ProtoPinDisplayName", "Time"),PinToolTip="Out Hit Time\nFloat (single-precision)",Direction="EGPD_Output",PinType.PinCategory="real",PinType.PinSubCategory="float",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,DefaultValue="0.0",AutogeneratedDefaultValue="0.0",ParentPin=K2Node_CallFunction_8 FE2B25154C824BB9EAF9E9A2ADA5943E,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=3A3C030840A593D2D379B2B716F271AB,PinName="OutHit_Distance",PinFriendlyName=LOCGEN_FORMAT_NAMED(NSLOCTEXT("KismetSchema", "SplitPinFriendlyNameFormat", "{PinDisplayName} {ProtoPinDisplayName}"), "PinDisplayName", "Out Hit", "ProtoPinDisplayName", "Distance"),PinToolTip="Out Hit Distance\nFloat (single-precision)",Direction="EGPD_Output",PinType.PinCategory="real",PinType.PinSubCategory="float",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,DefaultValue="0.0",AutogeneratedDefaultValue="0.0",ParentPin=K2Node_CallFunction_8 FE2B25154C824BB9EAF9E9A2ADA5943E,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=4466B24F480077A3458BF49C92FC9BAA,PinName="OutHit_Location",PinFriendlyName=LOCGEN_FORMAT_NAMED(NSLOCTEXT("KismetSchema", "SplitPinFriendlyNameFormat", "{PinDisplayName} {ProtoPinDisplayName}"), "PinDisplayName", "Out Hit", "ProtoPinDisplayName", "Location"),PinToolTip="Out Hit Location\nVector",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/CoreUObject.Vector"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="0, 0, 0",AutogeneratedDefaultValue="0, 0, 0",ParentPin=K2Node_CallFunction_8 FE2B25154C824BB9EAF9E9A2ADA5943E,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=F25B18164D6964B12DFEABADDB74919E,PinName="OutHit_ImpactPoint",PinFriendlyName=LOCGEN_FORMAT_NAMED(NSLOCTEXT("KismetSchema", "SplitPinFriendlyNameFormat", "{PinDisplayName} {ProtoPinDisplayName}"), "PinDisplayName", "Out Hit", "ProtoPinDisplayName", "Impact Point"),PinToolTip="Out Hit Impact Point\nVector",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/CoreUObject.Vector"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="0, 0, 0",AutogeneratedDefaultValue="0, 0, 0",ParentPin=K2Node_CallFunction_8 FE2B25154C824BB9EAF9E9A2ADA5943E,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=71CB4433415AB77E32B1709BBD6573C4,PinName="OutHit_Normal",PinFriendlyName=LOCGEN_FORMAT_NAMED(NSLOCTEXT("KismetSchema", "SplitPinFriendlyNameFormat", "{PinDisplayName} {ProtoPinDisplayName}"), "PinDisplayName", "Out Hit", "ProtoPinDisplayName", "Normal"),PinToolTip="Out Hit Normal\nVector",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/CoreUObject.Vector"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="0, 0, 0",AutogeneratedDefaultValue="0, 0, 0",ParentPin=K2Node_CallFunction_8 FE2B25154C824BB9EAF9E9A2ADA5943E,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=7AA02A024FF3C7D1429BE89272EB95A9,PinName="OutHit_ImpactNormal",PinFriendlyName=LOCGEN_FORMAT_NAMED(NSLOCTEXT("KismetSchema", "SplitPinFriendlyNameFormat", "{PinDisplayName} {ProtoPinDisplayName}"), "PinDisplayName", "Out Hit", "ProtoPinDisplayName", "Impact Normal"),PinToolTip="Out Hit Impact Normal\nVector",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/CoreUObject.Vector"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="0, 0, 0",AutogeneratedDefaultValue="0, 0, 0",ParentPin=K2Node_CallFunction_8 FE2B25154C824BB9EAF9E9A2ADA5943E,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=4520C8C14542EBD0F7E6F49B25374A3A,PinName="OutHit_PhysMat",PinFriendlyName=LOCGEN_FORMAT_NAMED(NSLOCTEXT("KismetSchema", "SplitPinFriendlyNameFormat", "{PinDisplayName} {ProtoPinDisplayName}"), "PinDisplayName", "Out Hit", "ProtoPinDisplayName", "Phys Mat"),PinToolTip="Out Hit Phys Mat\nPhysical Material Object Reference",Direction="EGPD_Output",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/PhysicsCore.PhysicalMaterial"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,ParentPin=K2Node_CallFunction_8 FE2B25154C824BB9EAF9E9A2ADA5943E,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=0D36352148C729A423CAD69546B499D3,PinName="OutHit_HitActor",PinFriendlyName=LOCGEN_FORMAT_NAMED(NSLOCTEXT("KismetSchema", "SplitPinFriendlyNameFormat", "{PinDisplayName} {ProtoPinDisplayName}"), "PinDisplayName", "Out Hit", "ProtoPinDisplayName", "Hit Actor"),PinToolTip="Out Hit Hit Actor\nActor Object Reference",Direction="EGPD_Output",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/Engine.Actor"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,ParentPin=K2Node_CallFunction_8 FE2B25154C824BB9EAF9E9A2ADA5943E,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=70B373F6489AD4ACF61A95BA7D172DA8,PinName="OutHit_HitComponent",PinFriendlyName=LOCGEN_FORMAT_NAMED(NSLOCTEXT("KismetSchema", "SplitPinFriendlyNameFormat", "{PinDisplayName} {ProtoPinDisplayName}"), "PinDisplayName", "Out Hit", "ProtoPinDisplayName", "Hit Component"),PinToolTip="Out Hit Hit Component\nPrimitive Component Object Reference",Direction="EGPD_Output",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/Engine.PrimitiveComponent"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,ParentPin=K2Node_CallFunction_8 FE2B25154C824BB9EAF9E9A2ADA5943E,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=70B601B342FDB51653A3069BE9ED80C1,PinName="OutHit_HitBoneName",PinFriendlyName=LOCGEN_FORMAT_NAMED(NSLOCTEXT("KismetSchema", "SplitPinFriendlyNameFormat", "{PinDisplayName} {ProtoPinDisplayName}"), "PinDisplayName", "Out Hit", "ProtoPinDisplayName", "Hit Bone Name"),PinToolTip="Out Hit Hit Bone Name\nName",Direction="EGPD_Output",PinType.PinCategory="name",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,DefaultValue="None",AutogeneratedDefaultValue="None",ParentPin=K2Node_CallFunction_8 FE2B25154C824BB9EAF9E9A2ADA5943E,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=B0B9765C4B5539AC163A42B1C71EB743,PinName="OutHit_BoneName",PinFriendlyName=LOCGEN_FORMAT_NAMED(NSLOCTEXT("KismetSchema", "SplitPinFriendlyNameFormat", "{PinDisplayName} {ProtoPinDisplayName}"), "PinDisplayName", "Out Hit", "ProtoPinDisplayName", "Bone Name"),PinToolTip="Out Hit Bone Name\nName",Direction="EGPD_Output",PinType.PinCategory="name",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,DefaultValue="None",AutogeneratedDefaultValue="None",ParentPin=K2Node_CallFunction_8 FE2B25154C824BB9EAF9E9A2ADA5943E,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=64F90D394DB9CA34EB4EA09AFF22C35B,PinName="OutHit_HitItem",PinFriendlyName=LOCGEN_FORMAT_NAMED(NSLOCTEXT("KismetSchema", "SplitPinFriendlyNameFormat", "{PinDisplayName} {ProtoPinDisplayName}"), "PinDisplayName", "Out Hit", "ProtoPinDisplayName", "Hit Item"),PinToolTip="Out Hit Hit Item\nInteger",Direction="EGPD_Output",PinType.PinCategory="int",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,DefaultValue="0",AutogeneratedDefaultValue="0",ParentPin=K2Node_CallFunction_8 FE2B25154C824BB9EAF9E9A2ADA5943E,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=421966B241843C5AC06C179E9FDCBF59,PinName="OutHit_ElementIndex",PinFriendlyName=LOCGEN_FORMAT_NAMED(NSLOCTEXT("KismetSchema", "SplitPinFriendlyNameFormat", "{PinDisplayName} {ProtoPinDisplayName}"), "PinDisplayName", "Out Hit", "ProtoPinDisplayName", "Element Index"),PinToolTip="Out Hit Element Index\nInteger",Direction="EGPD_Output",PinType.PinCategory="int",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,DefaultValue="0",AutogeneratedDefaultValue="0",ParentPin=K2Node_CallFunction_8 FE2B25154C824BB9EAF9E9A2ADA5943E,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=F2AC86054C34D620A396B48266CE6555,PinName="OutHit_FaceIndex",PinFriendlyName=LOCGEN_FORMAT_NAMED(NSLOCTEXT("KismetSchema", "SplitPinFriendlyNameFormat", "{PinDisplayName} {ProtoPinDisplayName}"), "PinDisplayName", "Out Hit", "ProtoPinDisplayName", "Face Index"),PinToolTip="Out Hit Face Index\nInteger",Direction="EGPD_Output",PinType.PinCategory="int",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,DefaultValue="0",AutogeneratedDefaultValue="0",ParentPin=K2Node_CallFunction_8 FE2B25154C824BB9EAF9E9A2ADA5943E,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=C6128AA849ED10F1A91BB78A480187B4,PinName="OutHit_TraceStart",PinFriendlyName=LOCGEN_FORMAT_NAMED(NSLOCTEXT("KismetSchema", "SplitPinFriendlyNameFormat", "{PinDisplayName} {ProtoPinDisplayName}"), "PinDisplayName", "Out Hit", "ProtoPinDisplayName", "Trace Start"),PinToolTip="Out Hit Trace Start\nVector",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/CoreUObject.Vector"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="0, 0, 0",AutogeneratedDefaultValue="0, 0, 0",ParentPin=K2Node_CallFunction_8 FE2B25154C824BB9EAF9E9A2ADA5943E,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=0624877E4E2FE8DEFAD2BB848F637811,PinName="OutHit_TraceEnd",PinFriendlyName=LOCGEN_FORMAT_NAMED(NSLOCTEXT("KismetSchema", "SplitPinFriendlyNameFormat", "{PinDisplayName} {ProtoPinDisplayName}"), "PinDisplayName", "Out Hit", "ProtoPinDisplayName", "Trace End"),PinToolTip="Out Hit Trace End\nVector",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/CoreUObject.Vector"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="0, 0, 0",AutogeneratedDefaultValue="0, 0, 0",ParentPin=K2Node_CallFunction_8 FE2B25154C824BB9EAF9E9A2ADA5943E,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=297204E248B1AE9336367F9F0A184BC8,PinName="bIgnoreSelf",PinToolTip="Ignore Self\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,DefaultValue="true",AutogeneratedDefaultValue="true",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=DAB5394745AA51AAE6033EB7CCF1C095,PinName="TraceColor",PinToolTip="Trace Color\nLinear Color Structure",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/CoreUObject.LinearColor"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="(R=1.000000,G=0.000000,B=0.000000,A=1.000000)",AutogeneratedDefaultValue="(R=1.000000,G=0.000000,B=0.000000,A=1.000000)",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=True,bOrphanedPin=False,) + CustomProperties Pin (PinId=8CD5CC5E4F927E9CBBFF58B0872C0546,PinName="TraceHitColor",PinToolTip="Trace Hit Color\nLinear Color Structure",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/CoreUObject.LinearColor"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="(R=0.000000,G=1.000000,B=0.000000,A=1.000000)",AutogeneratedDefaultValue="(R=0.000000,G=1.000000,B=0.000000,A=1.000000)",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=True,bOrphanedPin=False,) + CustomProperties Pin (PinId=FB76ED6F40844C82A75DA4A4A5A73820,PinName="DrawTime",PinToolTip="Draw Time\nFloat (single-precision)",PinType.PinCategory="real",PinType.PinSubCategory="float",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,DefaultValue="5.000000",AutogeneratedDefaultValue="5.000000",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=True,bOrphanedPin=False,) + CustomProperties Pin (PinId=54F6EF174A02D88C99CAFFBCF1E05B6E,PinName="ReturnValue",PinToolTip="Return Value\nBoolean\n\nTrue if there was a hit, false otherwise.",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,DefaultValue="false",AutogeneratedDefaultValue="false",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + End Object + `, + color: Configuration.nodeColors.blue, + icon: SVGIcon.functionSymbol, + pins: 31, + pinNames: [ + "Start", + "End", + "Object Types", + "Trace Complex", + "Actors to Ignore", + "Draw Debug Type", + "Ignore Self", + "Trace Color", + "Trace Hit Color", + "Draw Time", + "Out Hit Blocking Hit", + "Out Hit Initial Overlap", + "Out Hit Time", + "Out Hit Distance", + "Out Hit Location", + "Out Hit Impact Point", + "Out Hit Normal", + "Out Hit Impact Normal", + "Out Hit Phys Mat", + "Out Hit Hit Actor", + "Out Hit Hit Component", + "Out Hit Hit Bone Name", + "Out Hit Bone Name", + "Out Hit Hit Item", + "Out Hit Element Index", + "Out Hit Face Index", + "Out Hit Trace Start", + "Out Hit Trace End", + "Return Value", + ], + delegate: false, + development: false, +}) diff --git a/tests/nodeLiteralEnumEARLineTraceChannels.spec.js b/tests/nodeLiteralEnumEARLineTraceChannels.spec.js new file mode 100644 index 0000000..a4427b5 --- /dev/null +++ b/tests/nodeLiteralEnumEARLineTraceChannels.spec.js @@ -0,0 +1,23 @@ +import Configuration from "../js/Configuration.js" +import SVGIcon from "../js/SVGIcon.js" +import { testNode } from "./fixtures/test.js" + +testNode({ + name: "Literal enum EARLineTraceChannels", + value: String.raw` + Begin Object Class=/Script/BlueprintGraph.K2Node_EnumLiteral Name="K2Node_EnumLiteral_0" + Enum=/Script/CoreUObject.Enum'"/Script/AugmentedReality.EARLineTraceChannels"' + NodePosX=-864 + NodePosY=-1856 + NodeGuid=50A89C411ADB4A4388E2CDE22CBEF9B0 + CustomProperties Pin (PinId=BEEA33BA22304D868E6E7C78C7E4BE6A,PinName="Enum",PinType.PinCategory="byte",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Enum'"/Script/AugmentedReality.EARLineTraceChannels"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="None",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=B682278698A545E79A232FCCA7C1EB4D,PinName="ReturnValue",Direction="EGPD_Output",PinType.PinCategory="byte",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Enum'"/Script/AugmentedReality.EARLineTraceChannels"',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 + `, + color: Configuration.nodeColors.green, + icon: SVGIcon.enum, + pins: 2, + pinNames: ["Enum", "Return Value"], + delegate: false, + development: false, +}) diff --git a/tests/nodeLn.spec.js b/tests/nodeLn.spec.js new file mode 100644 index 0000000..87e9c7f --- /dev/null +++ b/tests/nodeLn.spec.js @@ -0,0 +1,30 @@ +import Configuration from "../js/Configuration.js" +import { testNode } from "./fixtures/test.js" + +testNode({ + name: "Ln", + value: String.raw` + Begin Object Class=/Script/UnrealEd.MaterialGraphNode Name="MaterialGraphNode_27" ExportPath=/Script/UnrealEd.MaterialGraphNode'"/Engine/Transient.M_CobbleStone_Pebble:MaterialGraph_0.MaterialGraphNode_27"' + Begin Object Class=/Script/InterchangeImport.MaterialExpressionLogarithm Name="MaterialExpressionLogarithm_0" ExportPath=/Script/InterchangeImport.MaterialExpressionLogarithm'"/Engine/Transient.M_CobbleStone_Pebble:MaterialGraph_0.MaterialGraphNode_27.MaterialExpressionLogarithm_0"' + End Object + Begin Object Name="MaterialExpressionLogarithm_0" ExportPath=/Script/InterchangeImport.MaterialExpressionLogarithm'"/Engine/Transient.M_CobbleStone_Pebble:MaterialGraph_0.MaterialGraphNode_27.MaterialExpressionLogarithm_0"' + MaterialExpressionEditorX=-1808 + MaterialExpressionEditorY=-384 + MaterialExpressionGuid=A88BE2DBB50544539F7C340F1C521570 + Material=/Script/UnrealEd.PreviewMaterial'"/Engine/Transient.M_CobbleStone_Pebble"' + End Object + MaterialExpression=/Script/InterchangeImport.MaterialExpressionLogarithm'"MaterialExpressionLogarithm_0"' + NodePosX=-1808 + NodePosY=-384 + NodeGuid=7BC7C5E93F8F47BAB3C0086F9C2AE036 + CustomProperties Pin (PinId=DCCD2C267163472C98FFD44B5AC004DD,PinName="Input",PinFriendlyName=NSLOCTEXT("MaterialGraphNode", "Space", " "),PinType.PinCategory="required",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=D0ACD287FE494F0D8CB682DC7EABDD07,PinName="Output",PinFriendlyName=NSLOCTEXT("MaterialGraphNode", "Space", " "),Direction="EGPD_Output",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,) + End Object + `, + color: Configuration.nodeColors.green, + icon: null, + pins: 2, + pinNames: [], + delegate: false, + development: false, +}) diff --git a/tests/nodeLog10.spec.js b/tests/nodeLog10.spec.js new file mode 100644 index 0000000..0ef072a --- /dev/null +++ b/tests/nodeLog10.spec.js @@ -0,0 +1,30 @@ +import Configuration from "../js/Configuration.js" +import { testNode } from "./fixtures/test.js" + +testNode({ + name: "Log10", + value: String.raw` + Begin Object Class=/Script/UnrealEd.MaterialGraphNode Name="MaterialGraphNode_26" ExportPath=/Script/UnrealEd.MaterialGraphNode'"/Engine/Transient.M_CobbleStone_Pebble:MaterialGraph_0.MaterialGraphNode_26"' + Begin Object Class=/Script/Engine.MaterialExpressionLogarithm10 Name="MaterialExpressionLogarithm10_0" ExportPath=/Script/Engine.MaterialExpressionLogarithm10'"/Engine/Transient.M_CobbleStone_Pebble:MaterialGraph_0.MaterialGraphNode_26.MaterialExpressionLogarithm10_0"' + End Object + Begin Object Name="MaterialExpressionLogarithm10_0" ExportPath=/Script/Engine.MaterialExpressionLogarithm10'"/Engine/Transient.M_CobbleStone_Pebble:MaterialGraph_0.MaterialGraphNode_26.MaterialExpressionLogarithm10_0"' + MaterialExpressionEditorX=-1699 + MaterialExpressionEditorY=-366 + MaterialExpressionGuid=D6C0D0C0B1C241C7BC5CAE85C32A967E + Material=/Script/UnrealEd.PreviewMaterial'"/Engine/Transient.M_CobbleStone_Pebble"' + End Object + MaterialExpression=/Script/Engine.MaterialExpressionLogarithm10'"MaterialExpressionLogarithm10_0"' + NodePosX=-1699 + NodePosY=-366 + NodeGuid=7432C0BB32F74D54B23EB5FFEB9D7255 + CustomProperties Pin (PinId=C3E922C93B644E5781F1C76FD70CA87D,PinName="X",PinType.PinCategory="required",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=48EB102C92F74A7E817286C32A8D217A,PinName="Output",PinFriendlyName=NSLOCTEXT("MaterialGraphNode", "Space", " "),Direction="EGPD_Output",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,) + End Object + `, + color: Configuration.nodeColors.green, + icon: null, + pins: 2, + pinNames: ["X"], + delegate: false, + development: false, +}) diff --git a/tests/nodeLog2.spec.js b/tests/nodeLog2.spec.js new file mode 100644 index 0000000..94c8fce --- /dev/null +++ b/tests/nodeLog2.spec.js @@ -0,0 +1,30 @@ +import Configuration from "../js/Configuration.js" +import { testNode } from "./fixtures/test.js" + +testNode({ + name: "Log2", + value: String.raw` + Begin Object Class=/Script/UnrealEd.MaterialGraphNode Name="MaterialGraphNode_25" ExportPath=/Script/UnrealEd.MaterialGraphNode'"/Engine/Transient.M_CobbleStone_Pebble:MaterialGraph_0.MaterialGraphNode_25"' + Begin Object Class=/Script/Engine.MaterialExpressionLogarithm2 Name="MaterialExpressionLogarithm2_0" ExportPath=/Script/Engine.MaterialExpressionLogarithm2'"/Engine/Transient.M_CobbleStone_Pebble:MaterialGraph_0.MaterialGraphNode_25.MaterialExpressionLogarithm2_0"' + End Object + Begin Object Name="MaterialExpressionLogarithm2_0" ExportPath=/Script/Engine.MaterialExpressionLogarithm2'"/Engine/Transient.M_CobbleStone_Pebble:MaterialGraph_0.MaterialGraphNode_25.MaterialExpressionLogarithm2_0"' + MaterialExpressionEditorX=-1343 + MaterialExpressionEditorY=-380 + MaterialExpressionGuid=DFB490DA67CD4FED91729623FA6F76F9 + Material=/Script/UnrealEd.PreviewMaterial'"/Engine/Transient.M_CobbleStone_Pebble"' + End Object + MaterialExpression=/Script/Engine.MaterialExpressionLogarithm2'"MaterialExpressionLogarithm2_0"' + NodePosX=-1343 + NodePosY=-380 + NodeGuid=C413E5EDE2484269AB5BB8E6E14FD5DC + CustomProperties Pin (PinId=AA0DC6E48E864B2483F3F5239FDBC26D,PinName="X",PinType.PinCategory="required",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=7E2CEF20073B4A8DBCA5AEAFBEA3BE0B,PinName="Output",PinFriendlyName=NSLOCTEXT("MaterialGraphNode", "Space", " "),Direction="EGPD_Output",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,) + End Object + `, + color: Configuration.nodeColors.green, + icon: null, + pins: 2, + pinNames: ["X"], + delegate: false, + development: false, +}) diff --git a/tests/nodeLogicEq.spec.js b/tests/nodeLogicEq.spec.js new file mode 100644 index 0000000..3c1c108 --- /dev/null +++ b/tests/nodeLogicEq.spec.js @@ -0,0 +1,30 @@ +import { css } from "lit" +import { expect, testNode } from "./fixtures/test.js" + +testNode({ + name: "LogicEq", + title: "==", + value: String.raw` + Begin Object Class=/Script/NiagaraEditor.NiagaraNodeOp Name="NiagaraNodeOp_84" ExportPath="/Script/NiagaraEditor.NiagaraNodeOp'/Engine/Transient.NewNiagaraScript:NiagaraScriptSource_0.NiagaraGraph_0.NiagaraNodeOp_84'" + OpName="Boolean::LogicEq" + ChangeId=E8F9B2BA0D564EB9B931C93DD152FB69 + NodePosX=208 + NodePosY=144 + NodeGuid=E810B307E310413697CB9914DBC2A4B4 + CustomProperties Pin (PinId=BFC2067F95B7478B938D12EC5808D554,PinName="A",PinToolTip="A",PinType.PinCategory="Type",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.ScriptStruct'/Script/Niagara.NiagaraBool'",PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="false",AutogeneratedDefaultValue="false",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=653D4C4C85D349DEA2B79066FB615AD6,PinName="B",PinToolTip="B",PinType.PinCategory="Type",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.ScriptStruct'/Script/Niagara.NiagaraBool'",PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="true",AutogeneratedDefaultValue="true",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=4E45D3F396CE40C69D3F3949D18F1832,PinName="Result",PinToolTip="Result",Direction="EGPD_Output",PinType.PinCategory="Type",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.ScriptStruct'/Script/Niagara.NiagaraBool'",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.5, 5], + pins: 3, + delegate: false, + development: false, + additionalTest: async (node, pins) => { + expect(await node.evaluate(node => node.classList.contains("ueb-node-style-glass"))).toBeTruthy() + for (const pin of pins) { + expect(await pin.evaluate(element => element.entity.pinColor().cssText)) + .toBe(css`146, 0, 0`.cssText) + } + }, +}) diff --git a/tests/nodeLogicNEq.spec.js b/tests/nodeLogicNEq.spec.js new file mode 100644 index 0000000..5d75c78 --- /dev/null +++ b/tests/nodeLogicNEq.spec.js @@ -0,0 +1,30 @@ +import { css } from "lit" +import { expect, testNode } from "./fixtures/test.js" + +testNode({ + name: "LogicNEq", + title: "!=", + value: String.raw` + Begin Object Class=/Script/NiagaraEditor.NiagaraNodeOp Name="NiagaraNodeOp_85" ExportPath="/Script/NiagaraEditor.NiagaraNodeOp'/Engine/Transient.NewNiagaraScript:NiagaraScriptSource_0.NiagaraGraph_0.NiagaraNodeOp_85'" + OpName="Boolean::LogicNEq" + ChangeId=3526C49A19484FCAA258F5F1399E5199 + NodePosX=-80 + NodePosY=128 + NodeGuid=591862B832B847AE8F2194837B5C9A68 + CustomProperties Pin (PinId=0E889E7597AD478C9D4E65D8593F9192,PinName="A",PinToolTip="A",PinType.PinCategory="Type",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.ScriptStruct'/Script/Niagara.NiagaraBool'",PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="false",AutogeneratedDefaultValue="false",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=A6BF9D71327E4000BD8D29B52CE0C168,PinName="B",PinToolTip="B",PinType.PinCategory="Type",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.ScriptStruct'/Script/Niagara.NiagaraBool'",PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="true",AutogeneratedDefaultValue="true",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=36E21F9BAA3D45BEB74DD7D06C763524,PinName="Result",PinToolTip="Result",Direction="EGPD_Output",PinType.PinCategory="Type",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.ScriptStruct'/Script/Niagara.NiagaraBool'",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, 5], + pins: 3, + delegate: false, + development: false, + additionalTest: async (node, pins) => { + expect(await node.evaluate(node => node.classList.contains("ueb-node-style-glass"))).toBeTruthy() + for (const pin of pins) { + expect(await pin.evaluate(element => element.entity.pinColor().cssText)) + .toBe(css`146, 0, 0`.cssText) + } + }, +}) diff --git a/tests/nodeMakeWeirdNameStruct.spec.js b/tests/nodeMakeWeirdNameStruct.spec.js new file mode 100644 index 0000000..8270f3b --- /dev/null +++ b/tests/nodeMakeWeirdNameStruct.spec.js @@ -0,0 +1,28 @@ +import Configuration from "../js/Configuration.js" +import SVGIcon from "../js/SVGIcon.js" +import { testNode } from "./fixtures/test.js" + +testNode({ + name: "Make Some_§-AStruct", + value: String.raw` + Begin Object Class=/Script/BlueprintGraph.K2Node_MakeStruct Name="K2Node_MakeStruct_1" ExportPath=/Script/BlueprintGraph.K2Node_MakeStruct'"/Temp/Untitled_1.Untitled_1:PersistentLevel.Untitled.EventGraph.K2Node_MakeStruct_1"' + "bMadeAfterOverridePinRemoval"=True + "ShowPinForProperties"(0)=(PropertyName="FirstVariable_1_13DD7A0E491E619509C7408F7D8C4071",PropertyFriendlyName="First.Variable",bShowPin=True,bCanToggleVisibility=True) + "ShowPinForProperties"(1)=(PropertyName="Second-Variable_5_B897B051478F270D20FF29B3BC3B5A8C",PropertyFriendlyName="Second-Variable",bShowPin=True,bCanToggleVisibility=True) + "StructType"=/Script/Engine.UserDefinedStruct'"/Game/StarterContent/Blueprints/Some_§-AStruct.Some_§-AStruct"' + "NodePosX"=384 + "NodePosY"=144 + "NodeGuid"=118962B441E9282349A21EA43ADEE816 + CustomProperties Pin (PinId=3DD8E64049B1CD7AF21517B9C9C0E52E,PinName="Some_§-AStruct",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/Engine.UserDefinedStruct'"/Game/StarterContent/Blueprints/Some_§-AStruct.Some_§-AStruct"',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=97BAE50C41A8924F13A6E9B6EB9F83C8,PinName="FirstVariable_1_13DD7A0E491E619509C7408F7D8C4071",PinFriendlyName="First.Variable",PinToolTip="First. Variable\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,DefaultValue="False",AutogeneratedDefaultValue="False",PersistentGuid=13DD7A0E491E619509C7408F7D8C4071,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=94B8DE014A527EBDC91E48A6E95D8D2E,PinName="Second-Variable_5_B897B051478F270D20FF29B3BC3B5A8C",PinFriendlyName="Second-Variable",PinToolTip="Second- Variable\nArray of Transforms",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/CoreUObject.Transform"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=Array,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=B897B051478F270D20FF29B3BC3B5A8C,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=True,bAdvancedView=False,bOrphanedPin=False,) + End Object + `, + size: [17.5, 6], + color: Configuration.nodeColors.darkBlue, + icon: SVGIcon.makeStruct, + pins: 3, + pinNames: ["First.Variable", "Second-Variable", "Some_§-AStruct"], + delegate: false, + development: false, +}) diff --git a/tests/nodeMatrixTransformPosition.spec.js b/tests/nodeMatrixTransformPosition.spec.js new file mode 100644 index 0000000..3e6fa09 --- /dev/null +++ b/tests/nodeMatrixTransformPosition.spec.js @@ -0,0 +1,26 @@ +import { expect, testNode } from "./fixtures/test.js" + +testNode({ + name: "Matrix Transform Position", + value: String.raw` + Begin Object Class=/Script/NiagaraEditor.NiagaraNodeOp Name="NiagaraNodeOp_93" ExportPath="/Script/NiagaraEditor.NiagaraNodeOp'/Engine/Transient.NewNiagaraScript:NiagaraScriptSource_0.NiagaraGraph_0.NiagaraNodeOp_93'" + OpName="Matrix::TransformPosition" + ChangeId=B50CCE545D064D12991CD1407DF14437 + NodePosX=800 + NodePosY=352 + NodeGuid=C8731F92EF32437D949081E06D044FC5 + CustomProperties Pin (PinId=B92730CFC09540B7A8B7C89EBC2A9526,PinName="M",PinToolTip="M",PinType.PinCategory="Type",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.ScriptStruct'/Script/Niagara.NiagaraMatrix'",PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="1.0,0.0,0.0,0.0,\\t\\t0.0,1.0,0.0,0.0,\\t\\t0.0,0.0,1.0,0.0,\\t\\t0.0,0.0,0.0,1.0",AutogeneratedDefaultValue="1.0,0.0,0.0,0.0,\\t\\t0.0,1.0,0.0,0.0,\\t\\t0.0,0.0,1.0,0.0,\\t\\t0.0,0.0,0.0,1.0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=D970C7D4FA4949918AD657EF0D55462B,PinName="V",PinToolTip="V",PinType.PinCategory="Type",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.ScriptStruct'/Script/Niagara.NiagaraPosition'",PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="1.0,1.0,1.0",AutogeneratedDefaultValue="1.0,1.0,1.0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=356EC3AE7343453EB6554019FC162416,PinName="Result",PinToolTip="Result",Direction="EGPD_Output",PinType.PinCategory="Type",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.ScriptStruct'/Script/Niagara.NiagaraPosition'",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: [17.5, 6], + pins: 3, + pinNames: ["M", "V", "Result"], + delegate: false, + development: false, + additionalTest: async node => { + expect(await node.evaluate(node => node.classList.contains("ueb-node-style-glass"))).toBeFalsy() + expect(await node.evaluate(node => node.classList.contains("ueb-node-style-default"))).toBeTruthy() + }, +}) diff --git a/tests/nodeMiddleMouseButton.spec.js b/tests/nodeMiddleMouseButton.spec.js new file mode 100644 index 0000000..2a895e7 --- /dev/null +++ b/tests/nodeMiddleMouseButton.spec.js @@ -0,0 +1,25 @@ +import Configuration from "../js/Configuration.js" +import SVGIcon from "../js/SVGIcon.js" +import { testNode } from "./fixtures/test.js" + +testNode({ + name: "Middle Mouse Button", + value: String.raw` + Begin Object Class=/Script/BlueprintGraph.K2Node_InputKey Name="K2Node_InputKey_17" + InputKey=MiddleMouseButton + NodePosX=144 + NodePosY=64 + NodeGuid=A9ED686DBFC54789A021351B379B76F2 + CustomProperties Pin (PinId=7C3A115375134DE0BD811E52F246F7BF,PinName="Pressed",Direction="EGPD_Output",PinType.PinCategory="exec",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=D28DC408DD34403292368A421E3F9011,PinName="Released",Direction="EGPD_Output",PinType.PinCategory="exec",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=7B5F9C141CC34087B646A3360513B7CA,PinName="Key",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/InputCore.Key"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="None",AutogeneratedDefaultValue="None",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + End Object + `, + size: [12, 8], + color: Configuration.nodeColors.red, + icon: SVGIcon.mouse, + pins: 3, + pinNames: ["Pressed", "Released", "Key"], + delegate: false, + development: false, +}) diff --git a/tests/nodeMouseWheelAxis.spec.js b/tests/nodeMouseWheelAxis.spec.js new file mode 100644 index 0000000..dce2b47 --- /dev/null +++ b/tests/nodeMouseWheelAxis.spec.js @@ -0,0 +1,27 @@ +import Configuration from "../js/Configuration.js" +import SVGIcon from "../js/SVGIcon.js" +import { testNode } from "./fixtures/test.js" + +testNode({ + name: "Mouse Wheel Axis", + value: String.raw` + Begin Object Class=/Script/BlueprintGraph.K2Node_InputAxisKeyEvent Name="K2Node_InputAxisKeyEvent_2" + AxisKey=MouseWheelAxis + EventReference=(MemberParent=/Script/CoreUObject.Package'"/Script/Engine"') + CustomFunctionName="InpAxisKeyEvt_MouseWheelAxis_K2Node_InputAxisKeyEvent_2" + NodePosX=240 + NodePosY=-192 + NodeGuid=E3FF073E85B34FC4B188CD7BD68D6B9B + CustomProperties Pin (PinId=5770618DFA054880BF33DD39844DE3F8,PinName="OutputDelegate",Direction="EGPD_Output",PinType.PinCategory="delegate",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(MemberParent=/Script/Engine.BlueprintGeneratedClass'"/Temp/Untitled_1.Untitled_C"',MemberName="InpAxisKeyEvt_MouseWheelAxis_K2Node_InputAxisKeyEvent_2"),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=AEC4EBC2FF5744538B93F21321891828,PinName="then",Direction="EGPD_Output",PinType.PinCategory="exec",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=8490344E6BD94ED49267BC0C82317109,PinName="AxisValue",PinToolTip="Axis Value\nFloat (single-precision)",Direction="EGPD_Output",PinType.PinCategory="real",PinType.PinSubCategory="float",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,DefaultValue="0.0",AutogeneratedDefaultValue="0.0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + End Object + `, + size: [10.5, 6], + color: Configuration.nodeColors.red, + icon: SVGIcon.mouse, + pins: 3, + pinNames: ["Axis Value"], + delegate: true, + development: false, +}) diff --git a/tests/nodeMouseX.spec.js b/tests/nodeMouseX.spec.js new file mode 100644 index 0000000..955387a --- /dev/null +++ b/tests/nodeMouseX.spec.js @@ -0,0 +1,27 @@ +import Configuration from "../js/Configuration.js" +import SVGIcon from "../js/SVGIcon.js" +import { testNode } from "./fixtures/test.js" + +testNode({ + name: "Mouse X", + value: String.raw` + Begin Object Class=/Script/BlueprintGraph.K2Node_InputAxisKeyEvent Name="K2Node_InputAxisKeyEvent_2" + AxisKey=MouseX + EventReference=(MemberParent=/Script/CoreUObject.Package'"/Script/Engine"') + CustomFunctionName="InpAxisKeyEvt_MouseX_K2Node_InputAxisKeyEvent_2" + NodePosX=16 + NodePosY=384 + NodeGuid=F7AA7D36A681494A9F28239D0FA8FB2D + CustomProperties Pin (PinId=8525745F49DB46C9BBDA7549AB9CD8B5,PinName="OutputDelegate",Direction="EGPD_Output",PinType.PinCategory="delegate",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(MemberParent=/Script/Engine.BlueprintGeneratedClass'"/Temp/Untitled_1.Untitled_C"',MemberName="InpAxisKeyEvt_MouseX_K2Node_InputAxisKeyEvent_2"),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=6273D30435714B84BD2139DB4FAFE72F,PinName="then",Direction="EGPD_Output",PinType.PinCategory="exec",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=E43D43763CD64E2CB1B030ECCEED6115,PinName="AxisValue",PinToolTip="Axis Value\nFloat (single-precision)",Direction="EGPD_Output",PinType.PinCategory="real",PinType.PinSubCategory="float",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,DefaultValue="0.0",AutogeneratedDefaultValue="0.0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + End Object + `, + size: [7, 6], + color: Configuration.nodeColors.red, + icon: SVGIcon.mouse, + pins: 3, + pinNames: ["Axis Value"], + delegate: true, + development: false, +}) diff --git a/tests/nodeMouseXY2D-Axis.spec.js b/tests/nodeMouseXY2D-Axis.spec.js new file mode 100644 index 0000000..5542052 --- /dev/null +++ b/tests/nodeMouseXY2D-Axis.spec.js @@ -0,0 +1,27 @@ +import Configuration from "../js/Configuration.js" +import SVGIcon from "../js/SVGIcon.js" +import { testNode } from "./fixtures/test.js" + +testNode({ + name: "Mouse XY 2D-Axis", + value: String.raw` + Begin Object Class=/Script/BlueprintGraph.K2Node_InputVectorAxisEvent Name="K2Node_InputVectorAxisEvent_0" + AxisKey=Mouse2D + EventReference=(MemberParent=/Script/CoreUObject.Package'"/Script/Engine"') + CustomFunctionName="InpAxisKeyEvt_Mouse2D_K2Node_InputVectorAxisEvent_0" + NodePosX=-448 + NodePosY=48 + NodeGuid=A6723248596F42A4B997C50F78246F2C + CustomProperties Pin (PinId=56F310FF3B4243D2B0AE09D8949AF505,PinName="OutputDelegate",Direction="EGPD_Output",PinType.PinCategory="delegate",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(MemberParent=/Script/Engine.BlueprintGeneratedClass'"/Temp/Untitled_1.Untitled_C"',MemberName="InpAxisKeyEvt_Mouse2D_K2Node_InputVectorAxisEvent_0"),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=9C23986C914C4B11AD7321BBBAB1D538,PinName="then",Direction="EGPD_Output",PinType.PinCategory="exec",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=F04B32CC40954BBAB9872EAE26DE2879,PinName="AxisValue",PinToolTip="Axis Value\nVector",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/CoreUObject.Vector"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="0, 0, 0",AutogeneratedDefaultValue="0, 0, 0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + End Object + `, + size: [11, 6], + color: Configuration.nodeColors.red, + icon: SVGIcon.mouse, + pins: 3, + pinNames: ["Axis Value"], + delegate: true, + development: false, +}) diff --git a/tests/nodeMouseY.spec.js b/tests/nodeMouseY.spec.js new file mode 100644 index 0000000..24c90d6 --- /dev/null +++ b/tests/nodeMouseY.spec.js @@ -0,0 +1,27 @@ +import Configuration from "../js/Configuration.js" +import SVGIcon from "../js/SVGIcon.js" +import { testNode } from "./fixtures/test.js" + +testNode({ + name: "Mouse Y", + value: String.raw` + Begin Object Class=/Script/BlueprintGraph.K2Node_InputAxisKeyEvent Name="K2Node_InputAxisKeyEvent_1" + AxisKey=MouseY + EventReference=(MemberParent=/Script/CoreUObject.Package'"/Script/Engine"') + CustomFunctionName="InpAxisKeyEvt_MouseY_K2Node_InputAxisKeyEvent_1" + NodePosX=-16 + NodePosY=144 + NodeGuid=FECB056F1DB940BAB4CA5D0BACCCC810 + CustomProperties Pin (PinId=357A92FB93554066815AF1D9FFEE8849,PinName="OutputDelegate",Direction="EGPD_Output",PinType.PinCategory="delegate",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(MemberParent=/Script/Engine.BlueprintGeneratedClass'"/Temp/Untitled_1.Untitled_C"',MemberName="InpAxisKeyEvt_MouseY_K2Node_InputAxisKeyEvent_1"),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=902EB1EFB0F44F8CBFD05C00589EB93B,PinName="then",Direction="EGPD_Output",PinType.PinCategory="exec",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=ECD6C7AC46BD47C88180B7198E2AF86B,PinName="AxisValue",PinToolTip="Axis Value\nFloat (single-precision)",Direction="EGPD_Output",PinType.PinCategory="real",PinType.PinSubCategory="float",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,DefaultValue="0.0",AutogeneratedDefaultValue="0.0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + End Object + `, + size: [7, 6], + color: Configuration.nodeColors.red, + icon: SVGIcon.mouse, + pins: 3, + pinNames: ["Axis Value"], + delegate: true, + development: false, +}) diff --git a/tests/nodeMoveCharacterRandomLocation.spec.js b/tests/nodeMoveCharacterRandomLocation.spec.js new file mode 100644 index 0000000..6d5d78e --- /dev/null +++ b/tests/nodeMoveCharacterRandomLocation.spec.js @@ -0,0 +1,24 @@ +import Configuration from "../js/Configuration.js" +import SVGIcon from "../js/SVGIcon.js" +import { testNode } from "./fixtures/test.js" + +testNode({ + name: "MoveCharacterRandomLocation", + subtitle: "Custom Event", + value: String.raw` + Begin Object Class=/Script/BlueprintGraph.K2Node_CustomEvent Name="K2Node_CustomEvent_4" + CustomFunctionName="MoveCharacterRandomLocation" + NodePosX=-368 + NodePosY=64 + NodeGuid=9C3BF2E5A27C4B45825C025A224639EA + CustomProperties Pin (PinId=B563D2CC4FC67B5F348BE18F59F694A4,PinName="OutputDelegate",Direction="EGPD_Output",PinType.PinCategory="delegate",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(MemberParent=/Script/Engine.BlueprintGeneratedClass'"/Temp/Untitled_1.Untitled_C"',MemberName="MoveCharacterRandomLocation",MemberGuid=9C3BF2E5A27C4B45825C025A224639EA),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=0DE0B9A2469DB01A69BD5C8BB17D15BB,PinName="then",Direction="EGPD_Output",PinType.PinCategory="exec",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_Knot_8 C5BBC59C45ACF577B59616A9D79986B3,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + End Object + `, + size: [16, 5], + color: Configuration.nodeColors.red, + icon: SVGIcon.event, + pins: 2, + delegate: true, + development: false, +}) diff --git a/tests/nodeMultiGate.spec.js b/tests/nodeMultiGate.spec.js new file mode 100644 index 0000000..d647a78 --- /dev/null +++ b/tests/nodeMultiGate.spec.js @@ -0,0 +1,29 @@ +import Configuration from "../js/Configuration.js" +import SVGIcon from "../js/SVGIcon.js" +import { testNode } from "./fixtures/test.js" + +testNode({ + name: "Multi Gate", + value: String.raw` + Begin Object Class=/Script/BlueprintGraph.K2Node_MultiGate Name="K2Node_MultiGate_2" + NodePosX=-96 + NodePosY=-160 + NodeGuid=8D5767632F6C462B928E7F9A47E84AF3 + CustomProperties Pin (PinId=61334592A1B647A7888EDF804247FF70,PinName="execute",PinType.PinCategory="exec",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=39200141C5D0415B825C28E3EC01A3F1,PinName="Out 0",Direction="EGPD_Output",PinType.PinCategory="exec",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=EF36C23B68A44578B518B963E636D33C,PinName="Out 1",Direction="EGPD_Output",PinType.PinCategory="exec",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=92FADDC1B07C45AC8BEF2FE42E13A638,PinName="Reset",PinType.PinCategory="exec",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=363311761BC8401B8B26AD4B2D255749,PinName="IsRandom",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=6F24605AD128461BB5652884D40E61E3,PinName="Loop",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=E547C9E4961A43AD944E6877C2FF44D6,PinName="StartIndex",PinType.PinCategory="int",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,DefaultValue="-1",AutogeneratedDefaultValue="-1",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + End Object + `, + size: [13.5, 12.5], + color: Configuration.nodeColors.gray, + icon: SVGIcon.sequence, + pins: 7, + pinNames: ["Reset", "Is Random", "Loop", "Start Index", "Out 0", "Out 1"], + delegate: false, + development: false, + variadic: true, +}) diff --git a/tests/nodeMultiply(MatrixMulVector4).spec.js b/tests/nodeMultiply(MatrixMulVector4).spec.js new file mode 100644 index 0000000..82fffa8 --- /dev/null +++ b/tests/nodeMultiply(MatrixMulVector4).spec.js @@ -0,0 +1,60 @@ +import Utility from "../js/Utility.js" +import { expect, testNode } from "./fixtures/test.js" + +testNode({ + name: "Multiply (Matrix * Vector4)", + value: String.raw` + Begin Object Class=/Script/NiagaraEditor.NiagaraNodeOp Name="NiagaraNodeOp_92" ExportPath="/Script/NiagaraEditor.NiagaraNodeOp'/Engine/Transient.NewNiagaraScript:NiagaraScriptSource_0.NiagaraGraph_0.NiagaraNodeOp_92'" + OpName="Matrix::MatrixVectorMultiply" + ChangeId=27BF0290BEB64ADA8B924165BC1B4638 + NodePosX=512 + NodePosY=480 + NodeGuid=597CA99BCD6540339C6EDD3F779DD5E2 + CustomProperties Pin (PinId=B18A8E214AA24427AD350D7548E67682,PinName="M",PinToolTip="M",PinType.PinCategory="Type",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.ScriptStruct'/Script/Niagara.NiagaraMatrix'",PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="1.0,0.0,0.0,0.0,\t\t0.0,1.0,0.0,0.0,\t\t0.0,0.0,1.0,0.0,\t\t0.0,0.0,0.0,1.0",AutogeneratedDefaultValue="1.0,0.0,0.0,0.0,\t\t0.0,1.0,0.0,0.0,\t\t0.0,0.0,1.0,0.0,\t\t0.0,0.0,0.0,1.0",LinkedTo=(NiagaraNodeParameterMapGet_2 77AD8CE312C44F3996A0AF04607A4DD6,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=28E62E1F14204AD1857565EF6C7A63F3,PinName="V",PinToolTip="V",PinType.PinCategory="Type",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.ScriptStruct'/Script/CoreUObject.Vector4f'",PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="22.000000,33.000000,44.000000,55.000000",AutogeneratedDefaultValue="1.0,1.0,1.0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=9A2423D0FFC945DA85DA823BD71D6BA0,PinName="Result",PinToolTip="Result",Direction="EGPD_Output",PinType.PinCategory="Type",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.ScriptStruct'/Script/CoreUObject.Vector4f'",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: [22.5, 7], + pins: 3, + pinNames: ["M", "V", "Result"], + delegate: false, + development: false, + additionalTest: async (node, pins, blueprintPage) => { + expect(await node.evaluate(node => node.classList.contains("ueb-node-style-glass"))).toBeFalsy() + expect(await node.evaluate(node => node.classList.contains("ueb-node-style-default"))).toBeTruthy() + expect(await pins[1].evaluate(/** @param {PinElement} pin */pin => pin.entity.DefaultValue.toArray())) + .toStrictEqual([22, 33, 44, 55]) + let inputs = await pins[1].locator("ueb-input").all() + await inputs[0].fill("-1") + await inputs[1].fill("-2") + await inputs[2].fill("-3") + await inputs[3].fill("-4") + await blueprintPage.blur() + await expect(inputs[0]).toContainText("-1.0") + await expect(inputs[1]).toContainText("-2.0") + await expect(inputs[2]).toContainText("-3.0") + await expect(inputs[3]).toContainText("-4.0") + const resultSerialization = await blueprintPage.blueprintLocator.evaluate(blueprint => { + blueprint.selectAll() + return blueprint.template.getCopyInputObject().getSerializedText() + }) + const expectedSerialization = String.raw` + Begin Object Class=/Script/NiagaraEditor.NiagaraNodeOp Name="NiagaraNodeOp_92" ExportPath="/Script/NiagaraEditor.NiagaraNodeOp'/Engine/Transient.NewNiagaraScript:NiagaraScriptSource_0.NiagaraGraph_0.NiagaraNodeOp_92'" + OpName="Matrix::MatrixVectorMultiply" + ChangeId=27BF0290BEB64ADA8B924165BC1B4638 + NodePosX=512 + NodePosY=480 + NodeGuid=597CA99BCD6540339C6EDD3F779DD5E2 + CustomProperties Pin (PinId=B18A8E214AA24427AD350D7548E67682,PinName="M",PinToolTip="M",PinType.PinCategory="Type",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.ScriptStruct'/Script/Niagara.NiagaraMatrix'",PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="1.0,0.0,0.0,0.0,\t\t0.0,1.0,0.0,0.0,\t\t0.0,0.0,1.0,0.0,\t\t0.0,0.0,0.0,1.0",AutogeneratedDefaultValue="1.0,0.0,0.0,0.0,\t\t0.0,1.0,0.0,0.0,\t\t0.0,0.0,1.0,0.0,\t\t0.0,0.0,0.0,1.0",LinkedTo=(NiagaraNodeParameterMapGet_2 77AD8CE312C44F3996A0AF04607A4DD6,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=28E62E1F14204AD1857565EF6C7A63F3,PinName="V",PinToolTip="V",PinType.PinCategory="Type",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.ScriptStruct'/Script/CoreUObject.Vector4f'",PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="-1.000000,-2.000000,-3.000000,-4.000000",AutogeneratedDefaultValue="1.0,1.0,1.0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=9A2423D0FFC945DA85DA823BD71D6BA0,PinName="Result",PinToolTip="Result",Direction="EGPD_Output",PinType.PinCategory="Type",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.ScriptStruct'/Script/CoreUObject.Vector4f'",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 + ` + const words = expectedSerialization + .split("\n") + .map(row => row.match(/\s*("?\w+(\s+\w+)*).+/)?.[1]) + .filter(v => v?.length > 0) + expect(resultSerialization).toMatch(Utility.getFirstWordOrder(words)) + }, +}) diff --git a/tests/nodeNand.spec.js b/tests/nodeNand.spec.js new file mode 100644 index 0000000..b9e540b --- /dev/null +++ b/tests/nodeNand.spec.js @@ -0,0 +1,30 @@ +import SVGIcon from "../js/SVGIcon.js" +import { expect, testNode } from "./fixtures/test.js" + +testNode({ + name: "NAND", + value: String.raw` + Begin Object Class=/Script/BlueprintGraph.K2Node_CommutativeAssociativeBinaryOperator Name="K2Node_CommutativeAssociativeBinaryOperator_1" ExportPath=/Script/BlueprintGraph.K2Node_CommutativeAssociativeBinaryOperator'"/Temp/Untitled_1.Untitled_1:PersistentLevel.Untitled.EventGraph.K2Node_CommutativeAssociativeBinaryOperator_1"' + bIsPureFunc=True + FunctionReference=(MemberParent=/Script/CoreUObject.Class'"/Script/Engine.KismetMathLibrary"',MemberName="BooleanNAND") + NodePosX=128 + NodePosY=256 + NodeGuid=04151C35334346F485A72260148E3683 + CustomProperties Pin (PinId=DA6F57B8405A454CB732191CC8E1DA8C,PinName="self",PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target"),PinToolTip="Target\nKismet Math Library Object Reference",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/Engine.KismetMathLibrary"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultObject="/Script/Engine.Default__KismetMathLibrary",PersistentGuid=00000000000000000000000000000000,bHidden=True,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=FE1504B885304718AFBB1F25A267B0E5,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,DefaultValue="false",AutogeneratedDefaultValue="false",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=C86F9F7461DF492F90491C54C15531AC,PinName="B",PinToolTip="B\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,DefaultValue="false",AutogeneratedDefaultValue="false",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=61F2A8E28586405D8CFF9713B457A9DC,PinName="ReturnValue",PinToolTip="Return Value\nBoolean\n\nReturns the logical NAND of two values (A AND 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,DefaultValue="false",AutogeneratedDefaultValue="false",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + End Object + `, + size: [13, 5], + pins: 3, + delegate: false, + development: false, + variadic: true, + additionalTest: async (node, pins) => { + for (const pin of pins) { + expect(await pin.evaluate(pin => pin.template.renderIcon().strings.join(""))) + .toStrictEqual(SVGIcon.operationPin.strings.join("")) + } + } +}) diff --git a/tests/nodeNiagaraAbs.spec.js b/tests/nodeNiagaraAbs.spec.js new file mode 100644 index 0000000..1b8d42e --- /dev/null +++ b/tests/nodeNiagaraAbs.spec.js @@ -0,0 +1,29 @@ +import { css } from "lit" +import { expect, testNode } from "./fixtures/test.js" + +testNode({ + name: "Niagara Abs", + title: "Abs", + value: String.raw` + Begin Object Class=/Script/NiagaraEditor.NiagaraNodeOp Name="NiagaraNodeOp_12" ExportPath="/Script/NiagaraEditor.NiagaraNodeOp'/Engine/Transient.NewNiagaraScript:NiagaraScriptSource_0.NiagaraGraph_0.NiagaraNodeOp_12'" + OpName="Numeric::Abs" + ChangeId=29B8C1201A5A453DAF589029C8FF3C71 + NodePosX=224 + NodePosY=336 + NodeGuid=F18211DAA458447E912DC2409D2257FA + CustomProperties Pin (PinId=946C3D0E755A4B75A23E5B462C1A7B82,PinName="A",PinToolTip="A",PinType.PinCategory="Type",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.ScriptStruct'/Script/Niagara.NiagaraNumeric'",PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="1.0",AutogeneratedDefaultValue="1.0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=9CD6DB4E94234A179733ED462921D416,PinName="Result",PinToolTip="Result",Direction="EGPD_Output",PinType.PinCategory="Type",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.ScriptStruct'/Script/Niagara.NiagaraNumeric'",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, 2.5], + icon: null, + pins: 2, + delegate: false, + development: false, + additionalTest: async (node, pins) => { + expect(await node.evaluate(node => node.classList.contains("ueb-node-style-glass"))).toBeTruthy() + expect(await node.evaluate(node => node.classList.contains("ueb-node-style-default"))).toBeFalsy() + expect(await pins[0].evaluate(p => p.entity.pinColor().cssText)).toBe(css`0, 88, 200`.cssText) + expect(await pins[1].evaluate(p => p.entity.pinColor().cssText)).toBe(css`0, 88, 200`.cssText) + }, +}) diff --git a/tests/nodeNiagaraAdd.spec.js b/tests/nodeNiagaraAdd.spec.js new file mode 100644 index 0000000..a3e2490 --- /dev/null +++ b/tests/nodeNiagaraAdd.spec.js @@ -0,0 +1,32 @@ +import { css } from "lit" +import { expect, testNode } from "./fixtures/test.js" + +testNode({ + name: "Niagara Add", + title: "+", + value: String.raw` + Begin Object Class=/Script/NiagaraEditor.NiagaraNodeOp Name="NiagaraNodeOp_0" ExportPath="/Script/NiagaraEditor.NiagaraNodeOp'/Engine/Transient.NewNiagaraScript:NiagaraScriptSource_0.NiagaraGraph_0.NiagaraNodeOp_0'" + OpName="Numeric::Add" + ChangeId=264B3D2C683F4201966C715DBA00A590 + NodePosX=800 + NodePosY=272 + NodeGuid=E62FD339348E42159E41F661B803F129 + CustomProperties Pin (PinId=553D489D7489472EA81C9C009029186B,PinName="A",PinToolTip="A",PinType.PinCategory="Type",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.ScriptStruct'/Script/Niagara.NiagaraNumeric'",PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="0.0",AutogeneratedDefaultValue="0.0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=9905D9F666734D179C8DA03CAE65FCD2,PinName="B",PinToolTip="B",PinType.PinCategory="Type",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.ScriptStruct'/Script/Niagara.NiagaraNumeric'",PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="0.0",AutogeneratedDefaultValue="0.0",LinkedTo=(NiagaraNodeFunctionCall_179 73E46ACCCD224AE6958C0DB9D300767E,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=B1DDBB31FCF24C5FBD99B7205274CF48,PinName="Result",PinToolTip="Result",Direction="EGPD_Output",PinType.PinCategory="Type",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.ScriptStruct'/Script/Niagara.NiagaraNumeric'",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=481ADC022BBF4D37BD5D5CE91D03C9C3,PinName="Add",PinType.PinCategory="Misc",PinType.PinSubCategory="DynamicAddPin",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.5, 6], + icon: null, + pins: 4, + delegate: false, + development: false, + additionalTest: async (node, pins) => { + expect(await node.evaluate(node => node.classList.contains("ueb-node-style-glass"))).toBeTruthy() + expect(await node.evaluate(node => node.classList.contains("ueb-node-style-default"))).toBeFalsy() + expect(await pins[0].evaluate(p => p.entity.pinColor().cssText)).toBe(css`0, 88, 200`.cssText) + expect(await pins[1].evaluate(p => p.entity.pinColor().cssText)).toBe(css`0, 88, 200`.cssText) + expect(await pins[3].evaluate(p => p.entity.pinColor().cssText)).toBe(css`0, 88, 200`.cssText) + }, +}) diff --git a/tests/nodeNiagaraLogicAND.spec.js b/tests/nodeNiagaraLogicAND.spec.js new file mode 100644 index 0000000..f90f7c5 --- /dev/null +++ b/tests/nodeNiagaraLogicAND.spec.js @@ -0,0 +1,35 @@ +import { css } from "lit" +import { expect, testNode } from "./fixtures/test.js" + +testNode({ + name: "Niagara Logic AND", + title: "Logic AND", + value: String.raw` + Begin Object Class=/Script/NiagaraEditor.NiagaraNodeOp Name="NiagaraNodeOp_81" ExportPath="/Script/NiagaraEditor.NiagaraNodeOp'/Engine/Transient.NewNiagaraScript:NiagaraScriptSource_0.NiagaraGraph_0.NiagaraNodeOp_81'" + OpName="Boolean::LogicAnd" + ChangeId=43E42097BB3043EA8402318509E52B6C + NodePosX=-256 + NodePosY=128 + NodeGuid=A78CF37F79A2480DB705D21E5EF84B07 + CustomProperties Pin (PinId=62F6392991E14BB1A7F0E26AB98DB6DA,PinName="A",PinToolTip="A",PinType.PinCategory="Type",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.ScriptStruct'/Script/Niagara.NiagaraBool'",PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="false",AutogeneratedDefaultValue="false",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=F4F10FA3AC084A1AB2A6ABC3323B83EA,PinName="B",PinToolTip="B",PinType.PinCategory="Type",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.ScriptStruct'/Script/Niagara.NiagaraBool'",PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="true",AutogeneratedDefaultValue="true",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=022AFAE2280C4C8AB3D57EB3F1FECCE9,PinName="Result",PinToolTip="Result",Direction="EGPD_Output",PinType.PinCategory="Type",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.ScriptStruct'/Script/Niagara.NiagaraBool'",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=A2A828255F8D460C8044F32D6A5E9FCA,PinName="Add",PinType.PinCategory="Misc",PinType.PinSubCategory="DynamicAddPin",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, 8], + pins: 4, + pinNames: ["A", "B", "Add", "Result"], + delegate: false, + development: false, + additionalTest: async (node, pins) => { + expect(await node.evaluate(node => node.classList.contains("ueb-node-style-glass"))).toBeFalsy() + expect(await node.evaluate(node => node.classList.contains("ueb-node-style-default"))).toBeTruthy() + expect(await pins[0].evaluate(element => element.entity.pinColor().cssText)) + .toBe(css`146, 0, 0`.cssText) + expect(await pins[1].evaluate(element => element.entity.pinColor().cssText)) + .toBe(css`146, 0, 0`.cssText) + expect(await pins[3].evaluate(element => element.entity.pinColor().cssText)) + .toBe(css`146, 0, 0`.cssText) + }, +}) diff --git a/tests/nodeNiagaraLogicNOT.spec.js b/tests/nodeNiagaraLogicNOT.spec.js new file mode 100644 index 0000000..bbf3d65 --- /dev/null +++ b/tests/nodeNiagaraLogicNOT.spec.js @@ -0,0 +1,31 @@ +import { css } from "lit" +import { expect, testNode } from "./fixtures/test.js" + +testNode({ + name: "Niagara Logic NOT", + title: "Logic NOT", + value: String.raw` + Begin Object Class=/Script/NiagaraEditor.NiagaraNodeOp Name="NiagaraNodeOp_83" ExportPath="/Script/NiagaraEditor.NiagaraNodeOp'/Engine/Transient.NewNiagaraScript:NiagaraScriptSource_0.NiagaraGraph_0.NiagaraNodeOp_83'" + OpName="Boolean::LogicNot" + ChangeId=850211C079724647B479BFA82D533C76 + NodePosX=128 + NodePosY=128 + NodeGuid=1F3DA06DD27E488A9B6766E8CD203F81 + CustomProperties Pin (PinId=1396C29ABE9F4330B91B88E4788956D0,PinName="A",PinToolTip="A",PinType.PinCategory="Type",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.ScriptStruct'/Script/Niagara.NiagaraBool'",PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="true",AutogeneratedDefaultValue="true",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=F4FABE23D34A4B0C915D6B7117C11B57,PinName="Result",PinToolTip="Result",Direction="EGPD_Output",PinType.PinCategory="Type",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.ScriptStruct'/Script/Niagara.NiagaraBool'",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, 4], + pins: 2, + pinNames: ["A", "Result"], + delegate: false, + development: false, + additionalTest: async (node, pins) => { + expect(await node.evaluate(node => node.classList.contains("ueb-node-style-glass"))).toBeFalsy() + expect(await node.evaluate(node => node.classList.contains("ueb-node-style-default"))).toBeTruthy() + for (const pin of pins) { + expect(await pin.evaluate(element => element.entity.pinColor().cssText)) + .toBe(css`146, 0, 0`.cssText) + } + }, +}) diff --git a/tests/nodeNiagaraLogicOR.spec.js b/tests/nodeNiagaraLogicOR.spec.js new file mode 100644 index 0000000..7af13bc --- /dev/null +++ b/tests/nodeNiagaraLogicOR.spec.js @@ -0,0 +1,35 @@ +import { css } from "lit" +import { expect, testNode } from "./fixtures/test.js" + +testNode({ + name: "Niagara Logic OR", + title: "Logic OR", + value: String.raw` + Begin Object Class=/Script/NiagaraEditor.NiagaraNodeOp Name="NiagaraNodeOp_82" ExportPath="/Script/NiagaraEditor.NiagaraNodeOp'/Engine/Transient.NewNiagaraScript:NiagaraScriptSource_0.NiagaraGraph_0.NiagaraNodeOp_82'" + OpName="Boolean::LogicOr" + ChangeId=EB6169ADF12F4DB4AFB4F6E735519E61 + NodePosX=384 + NodePosY=128 + NodeGuid=5E46FFF127D24923A96DB2280941D891 + CustomProperties Pin (PinId=1A8E536F5DB04FCEB0DD5C28120B55F4,PinName="A",PinToolTip="A",PinType.PinCategory="Type",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.ScriptStruct'/Script/Niagara.NiagaraBool'",PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="false",AutogeneratedDefaultValue="false",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=1ABD86FA4F894D4C850E10C0BDFFE9BB,PinName="B",PinToolTip="B",PinType.PinCategory="Type",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.ScriptStruct'/Script/Niagara.NiagaraBool'",PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="true",AutogeneratedDefaultValue="true",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=A46C02BB383F42D796497153C25F81CE,PinName="Result",PinToolTip="Result",Direction="EGPD_Output",PinType.PinCategory="Type",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.ScriptStruct'/Script/Niagara.NiagaraBool'",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=22A699B9331C4E21911CF5D79481C74E,PinName="Add",PinType.PinCategory="Misc",PinType.PinSubCategory="DynamicAddPin",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.5, 8], + pins: 4, + pinNames: ["A", "B", "Add", "Result"], + delegate: false, + development: false, + additionalTest: async (node, pins) => { + expect(await node.evaluate(node => node.classList.contains("ueb-node-style-glass"))).toBeFalsy() + expect(await node.evaluate(node => node.classList.contains("ueb-node-style-default"))).toBeTruthy() + expect(await pins[0].evaluate(element => element.entity.pinColor().cssText)) + .toBe(css`146, 0, 0`.cssText) + expect(await pins[1].evaluate(element => element.entity.pinColor().cssText)) + .toBe(css`146, 0, 0`.cssText) + expect(await pins[3].evaluate(element => element.entity.pinColor().cssText)) + .toBe(css`146, 0, 0`.cssText) + }, +}) diff --git a/tests/nodeNiagaraMul.spec.js b/tests/nodeNiagaraMul.spec.js new file mode 100644 index 0000000..5fae50b --- /dev/null +++ b/tests/nodeNiagaraMul.spec.js @@ -0,0 +1,26 @@ +import { expect, testNode } from "./fixtures/test.js" + +testNode({ + name: "Niagara Mul", + title: String.fromCharCode(0x2a2f), + value: String.raw` + Begin Object Class=/Script/NiagaraEditor.NiagaraNodeOp Name="NiagaraNodeOp_2" ExportPath="/Script/NiagaraEditor.NiagaraNodeOp'/Engine/Transient.NewNiagaraScript:NiagaraScriptSource_0.NiagaraGraph_0.NiagaraNodeOp_2'" + OpName="Numeric::Mul" + ChangeId=D255C58006D942A3B9EA40A7D0A9A26C + NodePosX=-432 + NodePosY=432 + NodeGuid=6C57BD28235446B286204A350C20824E + CustomProperties Pin (PinId=2CA19EFC7B8943C59D997AE9E20EDD9D,PinName="A",PinToolTip="A",PinType.PinCategory="Type",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.ScriptStruct'/Script/Niagara.NiagaraNumeric'",PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="1.0",AutogeneratedDefaultValue="1.0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=A6992BD09EBC4303B4B30A86BCF295A9,PinName="B",PinToolTip="B",PinType.PinCategory="Type",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.ScriptStruct'/Script/Niagara.NiagaraNumeric'",PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="1.0",AutogeneratedDefaultValue="1.0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=8539D0F6BC1F4A85A708B488C37C6FD9,PinName="Result",PinToolTip="Result",Direction="EGPD_Output",PinType.PinCategory="Type",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.ScriptStruct'/Script/Niagara.NiagaraNumeric'",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=C484E4BEEE6E41779EFFB696880FCAF0,PinName="Add",PinType.PinCategory="Misc",PinType.PinSubCategory="DynamicAddPin",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.5, 6], + pins: 4, + delegate: false, + development: false, + additionalTest: async node => { + expect(await node.evaluate(node => node.classList.contains("ueb-node-style-glass"))).toBeTruthy() + }, +}) diff --git a/tests/nodeNotEqualGameplayTag.spec.js b/tests/nodeNotEqualGameplayTag.spec.js new file mode 100644 index 0000000..b535691 --- /dev/null +++ b/tests/nodeNotEqualGameplayTag.spec.js @@ -0,0 +1,30 @@ +import SVGIcon from "../js/SVGIcon.js" +import { expect, testNode } from "./fixtures/test.js" + +testNode({ + name: "Not equal gameplay tag", + 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 + "NodePosY"=128 + "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: async (node, pins) => { + for (const pin of pins) { + expect(await pin.evaluate(pin => pin.template.renderIcon().strings.join(""))) + .toStrictEqual(SVGIcon.operationPin.strings.join("")) + } + } +}) diff --git a/tests/nodeNum1.spec.js b/tests/nodeNum1.spec.js new file mode 100644 index 0000000..e32ece7 --- /dev/null +++ b/tests/nodeNum1.spec.js @@ -0,0 +1,25 @@ +import Configuration from "../js/Configuration.js" +import SVGIcon from "../js/SVGIcon.js" +import { testNode } from "./fixtures/test.js" + +testNode({ + name: "Num 1", + value: String.raw` + Begin Object Class=/Script/BlueprintGraph.K2Node_InputKey Name="K2Node_InputKey_9" + InputKey=NumPadOne + NodePosX=-240 + NodePosY=64 + NodeGuid=1B61D1A914354095A8A8420B68656463 + CustomProperties Pin (PinId=2F18160D6E56431D8A81ACD578E0131C,PinName="Pressed",Direction="EGPD_Output",PinType.PinCategory="exec",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=0957F9CBAC034E2EBD87B15904B75FF1,PinName="Released",Direction="EGPD_Output",PinType.PinCategory="exec",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=45805673C5CF4C80BB198F99EF1FEB24,PinName="Key",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/InputCore.Key"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="None",AutogeneratedDefaultValue="None",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + End Object + `, + size: [6.5, 8], + color: Configuration.nodeColors.red, + icon: SVGIcon.keyboard, + pins: 3, + pinNames: ["Pressed", "Released", "Key"], + delegate: false, + development: false, +}) diff --git a/tests/nodeNum6.spec.js b/tests/nodeNum6.spec.js new file mode 100644 index 0000000..aabf982 --- /dev/null +++ b/tests/nodeNum6.spec.js @@ -0,0 +1,25 @@ +import Configuration from "../js/Configuration.js" +import SVGIcon from "../js/SVGIcon.js" +import { testNode } from "./fixtures/test.js" + +testNode({ + name: "Num 6", + value: String.raw` + Begin Object Class=/Script/BlueprintGraph.K2Node_InputKey Name="K2Node_InputKey_10" + InputKey=NumPadSix + NodePosX=256 + NodePosY=-32 + NodeGuid=26F046FCA2394E5A975801CA389D6E18 + CustomProperties Pin (PinId=450CA89B6E3348D8819EBA1315618F01,PinName="Pressed",Direction="EGPD_Output",PinType.PinCategory="exec",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=4F3B98C52357433E9436C29F86844F94,PinName="Released",Direction="EGPD_Output",PinType.PinCategory="exec",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=A5BFA728BEA7452B99D3A67DFB2E800E,PinName="Key",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/InputCore.Key"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="None",AutogeneratedDefaultValue="None",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + End Object + `, + size: [6.5, 8], + color: Configuration.nodeColors.red, + icon: SVGIcon.keyboard, + pins: 3, + pinNames: ["Pressed", "Released", "Key"], + delegate: false, + development: false, +}) diff --git a/tests/nodeNumDiv.spec.js b/tests/nodeNumDiv.spec.js new file mode 100644 index 0000000..4f9db78 --- /dev/null +++ b/tests/nodeNumDiv.spec.js @@ -0,0 +1,25 @@ +import Configuration from "../js/Configuration.js" +import SVGIcon from "../js/SVGIcon.js" +import { testNode } from "./fixtures/test.js" + +testNode({ + name: "Num /", + value: String.raw` + Begin Object Class=/Script/BlueprintGraph.K2Node_InputKey Name="K2Node_InputKey_14" + InputKey=Divide + NodePosX=-16 + NodePosY=320 + NodeGuid=3614847DFA5F4E029DDAEA817DF34A92 + CustomProperties Pin (PinId=7A1E3D92081743D58198DFBC7F2B8A6E,PinName="Pressed",Direction="EGPD_Output",PinType.PinCategory="exec",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=6B03709D315C42229EF60E1CB72EC05F,PinName="Released",Direction="EGPD_Output",PinType.PinCategory="exec",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=49C225DB9A9A4054A3710C2C1A36B908,PinName="Key",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/InputCore.Key"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="None",AutogeneratedDefaultValue="None",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + End Object + `, + size: [6, 8], + color: Configuration.nodeColors.red, + icon: SVGIcon.keyboard, + pins: 3, + pinNames: ["Pressed", "Released", "Key"], + delegate: false, + development: false, +}) diff --git a/tests/nodeNumDot.spec.js b/tests/nodeNumDot.spec.js new file mode 100644 index 0000000..cc9c801 --- /dev/null +++ b/tests/nodeNumDot.spec.js @@ -0,0 +1,25 @@ +import Configuration from "../js/Configuration.js" +import SVGIcon from "../js/SVGIcon.js" +import { testNode } from "./fixtures/test.js" + +testNode({ + name: "Num .", + value: String.raw` + Begin Object Class=/Script/BlueprintGraph.K2Node_InputKey Name="K2Node_InputKey_15" + InputKey=Decimal + NodePosX=352 + NodePosY=-96 + NodeGuid=572FFD40DB4541D497414E86EC4CC310 + CustomProperties Pin (PinId=8A053F5C10A942F88E96C966ABD2CDFF,PinName="Pressed",Direction="EGPD_Output",PinType.PinCategory="exec",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=2E39E39C2F3D4F8F8DDBD0B04A30A23E,PinName="Released",Direction="EGPD_Output",PinType.PinCategory="exec",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=BE6CA5BA91FF4AB29D695D881E42EC8C,PinName="Key",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/InputCore.Key"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="None",AutogeneratedDefaultValue="None",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + End Object + `, + size: [6, 8], + color: Configuration.nodeColors.red, + icon: SVGIcon.keyboard, + pins: 3, + pinNames: ["Pressed", "Released", "Key"], + delegate: false, + development: false, +}) diff --git a/tests/nodeNumMinus.spec.js b/tests/nodeNumMinus.spec.js new file mode 100644 index 0000000..4e600e8 --- /dev/null +++ b/tests/nodeNumMinus.spec.js @@ -0,0 +1,25 @@ +import Configuration from "../js/Configuration.js" +import SVGIcon from "../js/SVGIcon.js" +import { testNode } from "./fixtures/test.js" + +testNode({ + name: "Num -", + value: String.raw` + Begin Object Class=/Script/BlueprintGraph.K2Node_InputKey Name="K2Node_InputKey_12" + InputKey=Subtract + NodePosX=-480 + NodePosY=128 + NodeGuid=5DC438BC02904EC7B7252EC3A9E63E7E + CustomProperties Pin (PinId=EEF5174C8F8B4BBF999E26222C9F0003,PinName="Pressed",Direction="EGPD_Output",PinType.PinCategory="exec",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=C005CB1322CF4A39832A878229F790A4,PinName="Released",Direction="EGPD_Output",PinType.PinCategory="exec",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=58DC51053EC343BFA7033F833D7AEC4A,PinName="Key",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/InputCore.Key"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="None",AutogeneratedDefaultValue="None",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + End Object + `, + size: [6, 8], + color: Configuration.nodeColors.red, + icon: SVGIcon.keyboard, + pins: 3, + pinNames: ["Pressed", "Released", "Key"], + delegate: false, + development: false, +}) diff --git a/tests/nodeNumMul.spec.js b/tests/nodeNumMul.spec.js new file mode 100644 index 0000000..76b27e7 --- /dev/null +++ b/tests/nodeNumMul.spec.js @@ -0,0 +1,25 @@ +import Configuration from "../js/Configuration.js" +import SVGIcon from "../js/SVGIcon.js" +import { testNode } from "./fixtures/test.js" + +testNode({ + name: "Num *", + value: String.raw` + Begin Object Class=/Script/BlueprintGraph.K2Node_InputKey Name="K2Node_InputKey_13" + InputKey=Multiply + NodePosX=-304 + NodePosY=368 + NodeGuid=7B9AEEA6FD3D43BE9703A49FC653B3EE + CustomProperties Pin (PinId=13493EE95CF9461D82EBC6312E5FB99B,PinName="Pressed",Direction="EGPD_Output",PinType.PinCategory="exec",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=10E9155D52D340E59522D3004C684C58,PinName="Released",Direction="EGPD_Output",PinType.PinCategory="exec",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=BFC37A52F314418AAB75DFC22ACFC823,PinName="Key",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/InputCore.Key"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="None",AutogeneratedDefaultValue="None",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + End Object + `, + size: [6, 8], + color: Configuration.nodeColors.red, + icon: SVGIcon.keyboard, + pins: 3, + pinNames: ["Pressed", "Released", "Key"], + delegate: false, + development: false, +}) diff --git a/tests/nodeNumPlus.spec.js b/tests/nodeNumPlus.spec.js new file mode 100644 index 0000000..9b83ceb --- /dev/null +++ b/tests/nodeNumPlus.spec.js @@ -0,0 +1,25 @@ +import Configuration from "../js/Configuration.js" +import SVGIcon from "../js/SVGIcon.js" +import { testNode } from "./fixtures/test.js" + +testNode({ + name: "Num +", + value: String.raw` + Begin Object Class=/Script/BlueprintGraph.K2Node_InputKey Name="K2Node_InputKey_11" + InputKey=Add + NodePosX=-176 + NodePosY=-128 + NodeGuid=5D4F157F72EC42B69CDB89CB6EEC507C + CustomProperties Pin (PinId=9EFDA67BE6D341B8BC6248F6AEFC75DB,PinName="Pressed",Direction="EGPD_Output",PinType.PinCategory="exec",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=35304E478D344F05B081FCA9C3271C52,PinName="Released",Direction="EGPD_Output",PinType.PinCategory="exec",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=22180FA7E6054064922D73E6BF50E23A,PinName="Key",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/InputCore.Key"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="None",AutogeneratedDefaultValue="None",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + End Object + `, + size: [6, 8], + color: Configuration.nodeColors.red, + icon: SVGIcon.keyboard, + pins: 3, + pinNames: ["Pressed", "Released", "Key"], + delegate: false, + development: false, +}) diff --git a/tests/nodeOnComponentBeginOverlap_Event.spec.js b/tests/nodeOnComponentBeginOverlap_Event.spec.js new file mode 100644 index 0000000..5f2e666 --- /dev/null +++ b/tests/nodeOnComponentBeginOverlap_Event.spec.js @@ -0,0 +1,44 @@ +import Configuration from "../js/Configuration.js" +import SVGIcon from "../js/SVGIcon.js" +import { testNode } from "./fixtures/test.js" + +testNode({ + name: "OnComponentBeginOverlap_Event", + subtitle: "Custom Event", + value: String.raw` + Begin Object Class=/Script/BlueprintGraph.K2Node_CustomEvent Name="K2Node_CustomEvent_0" + CustomFunctionName="OnComponentBeginOverlap_Event" + NodePosX=-96 + NodePosY=608 + NodeGuid=6BB0872D81764DAD9270E32E66A4E01C + CustomProperties Pin (PinId=DB4E85FC86FD4EC784FFC45C77BB895C,PinName="OutputDelegate",Direction="EGPD_Output",PinType.PinCategory="delegate",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(MemberParent=/Script/Engine.BlueprintGeneratedClass'"/Temp/Untitled_1.Untitled_C"',MemberName="OnComponentBeginOverlap_Event",MemberGuid=6BB0872D81764DAD9270E32E66A4E01C),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_AssignDelegate_0 D1C3E8BFC4A54F62B5A566D72FAF5363,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=FE89EFE7B4AF4461B4969FF6AA4E46FC,PinName="then",Direction="EGPD_Output",PinType.PinCategory="exec",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=0253993B7559437ABDA8A4FFE6EC2CA6,PinName="OverlappedComponent",Direction="EGPD_Output",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/Engine.PrimitiveComponent"',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=E1538C05015F49D3A3927FFCB700ACB4,PinName="OtherActor",Direction="EGPD_Output",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/Engine.Actor"',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=DA531C332C9041CCBBE58A42C94A0BA3,PinName="OtherComp",Direction="EGPD_Output",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/Engine.PrimitiveComponent"',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=C957CCBA488341E787645E4C886DE2F2,PinName="OtherBodyIndex",Direction="EGPD_Output",PinType.PinCategory="int",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=03154C6B4A784B3E82393A3A66803DEF,PinName="bFromSweep",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=FC68A0EBC0FC4A27BECAB79E49D860BD,PinName="SweepResult",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/Engine.HitResult"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=True,PinType.bIsConst=True,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties UserDefinedPin (PinName="OverlappedComponent",PinType=(PinCategory="object",PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/Engine.PrimitiveComponent"'),DesiredPinDirection=EGPD_Output) + CustomProperties UserDefinedPin (PinName="OtherActor",PinType=(PinCategory="object",PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/Engine.Actor"'),DesiredPinDirection=EGPD_Output) + CustomProperties UserDefinedPin (PinName="OtherComp",PinType=(PinCategory="object",PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/Engine.PrimitiveComponent"'),DesiredPinDirection=EGPD_Output) + CustomProperties UserDefinedPin (PinName="OtherBodyIndex",PinType=(PinCategory="int"),DesiredPinDirection=EGPD_Output) + CustomProperties UserDefinedPin (PinName="bFromSweep",PinType=(PinCategory="bool"),DesiredPinDirection=EGPD_Output) + CustomProperties UserDefinedPin (PinName="SweepResult",PinType=(PinCategory="struct",PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/Engine.HitResult"',bIsReference=True,bIsConst=True),DesiredPinDirection=EGPD_Output) + End Object + `, + size: [16.5, 16], + color: Configuration.nodeColors.red, + icon: SVGIcon.event, + pins: 8, + pinNames: [ + "Overlapped Component", + "Other Actor", + "Other Comp", + "Other Body Index", + "From Sweep", + "Sweep Result", + ], + delegate: true, + development: false, +}) diff --git a/tests/nodePCGBranch.spec.js b/tests/nodePCGBranch.spec.js new file mode 100644 index 0000000..b1de9e9 --- /dev/null +++ b/tests/nodePCGBranch.spec.js @@ -0,0 +1,92 @@ +import Configuration from "../js/Configuration.js" +import SVGIcon from "../js/SVGIcon.js" +import { expect, testNode } from "./fixtures/test.js" + +testNode({ + name: "PCG Branch", + title: "Branch", + value: String.raw` + Begin Object Class=/Script/PCGEditor.PCGEditorGraphNode Name="PCGEditorGraphNode_2" ExportPath="/Script/PCGEditor.PCGEditorGraphNode'/Game/NewPCGGraph.NewPCGGraph:PCGEditorGraph_0.PCGEditorGraphNode_2'" + Begin Object Class=/Script/PCG.PCGNode Name="Branch_2" ExportPath="/Script/PCG.PCGNode'/Game/NewPCGGraph.NewPCGGraph:PCGEditorGraph_0.PCGEditorGraphNode_2.Branch_2'" + Begin Object Class=/Script/PCG.PCGPin Name="PCGPin_4" ExportPath="/Script/PCG.PCGPin'/Game/NewPCGGraph.NewPCGGraph:PCGEditorGraph_0.PCGEditorGraphNode_2.Branch_2.PCGPin_4'" + End Object + Begin Object Class=/Script/PCG.PCGPin Name="PCGPin_3" ExportPath="/Script/PCG.PCGPin'/Game/NewPCGGraph.NewPCGGraph:PCGEditorGraph_0.PCGEditorGraphNode_2.Branch_2.PCGPin_3'" + End Object + Begin Object Class=/Script/PCG.PCGPin Name="PCGPin_2" ExportPath="/Script/PCG.PCGPin'/Game/NewPCGGraph.NewPCGGraph:PCGEditorGraph_0.PCGEditorGraphNode_2.Branch_2.PCGPin_2'" + End Object + Begin Object Class=/Script/PCG.PCGPin Name="PCGPin_1" ExportPath="/Script/PCG.PCGPin'/Game/NewPCGGraph.NewPCGGraph:PCGEditorGraph_0.PCGEditorGraphNode_2.Branch_2.PCGPin_1'" + End Object + Begin Object Class=/Script/PCG.PCGPin Name="PCGPin_0" ExportPath="/Script/PCG.PCGPin'/Game/NewPCGGraph.NewPCGGraph:PCGEditorGraph_0.PCGEditorGraphNode_2.Branch_2.PCGPin_0'" + End Object + Begin Object Class=/Script/PCG.PCGBranchSettings Name="PCGBranchSettings_0" ExportPath="/Script/PCG.PCGBranchSettings'/Game/NewPCGGraph.NewPCGGraph:PCGEditorGraph_0.PCGEditorGraphNode_2.Branch_2.PCGBranchSettings_0'" + End Object + End Object + Begin Object Name="Branch_2" ExportPath="/Script/PCG.PCGNode'/Game/NewPCGGraph.NewPCGGraph:PCGEditorGraph_0.PCGEditorGraphNode_2.Branch_2'" + Begin Object Name="PCGPin_4" ExportPath="/Script/PCG.PCGPin'/Game/NewPCGGraph.NewPCGGraph:PCGEditorGraph_0.PCGEditorGraphNode_2.Branch_2.PCGPin_4'" + Node="/Script/PCG.PCGNode'PCGEditorGraphNode_2.Branch_2'" + Properties=(Label="Output B",Tooltip=NSLOCTEXT("FPCGBranchElement", "OutputPinTooltipB", "Will only route input if \'Output To B\' (overridable) is true")) + End Object + Begin Object Name="PCGPin_3" ExportPath="/Script/PCG.PCGPin'/Game/NewPCGGraph.NewPCGGraph:PCGEditorGraph_0.PCGEditorGraphNode_2.Branch_2.PCGPin_3'" + Node="/Script/PCG.PCGNode'PCGEditorGraphNode_2.Branch_2'" + Properties=(Label="Output A",Tooltip=NSLOCTEXT("FPCGBranchElement", "OutputPinTooltipA", "Will only route input if \'Output To B\' (overridable) is false")) + End Object + Begin Object Name="PCGPin_2" ExportPath="/Script/PCG.PCGPin'/Game/NewPCGGraph.NewPCGGraph:PCGEditorGraph_0.PCGEditorGraphNode_2.Branch_2.PCGPin_2'" + Node="/Script/PCG.PCGNode'PCGEditorGraphNode_2.Branch_2'" + Properties=(Label="Output to B",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}\""), "", "bool", "bOutputToB")) + End Object + Begin Object Name="PCGPin_1" ExportPath="/Script/PCG.PCGPin'/Game/NewPCGGraph.NewPCGGraph:PCGEditorGraph_0.PCGEditorGraphNode_2.Branch_2.PCGPin_1'" + Node="/Script/PCG.PCGNode'PCGEditorGraphNode_2.Branch_2'" + 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_0" ExportPath="/Script/PCG.PCGPin'/Game/NewPCGGraph.NewPCGGraph:PCGEditorGraph_0.PCGEditorGraphNode_2.Branch_2.PCGPin_0'" + Node="/Script/PCG.PCGNode'PCGEditorGraphNode_2.Branch_2'" + Properties=(Label="In") + End Object + Begin Object Name="PCGBranchSettings_0" ExportPath="/Script/PCG.PCGBranchSettings'/Game/NewPCGGraph.NewPCGGraph:PCGEditorGraph_0.PCGEditorGraphNode_2.Branch_2.PCGBranchSettings_0'" + Seed=-420875123 + CachedOverridableParams(0)=(Label="Output to B",PropertiesNames=("bOutputToB"),PropertyClass="/Script/CoreUObject.Class'/Script/PCG.PCGBranchSettings'") + End Object + PositionX=384 + PositionY=128 + SettingsInterface="/Script/PCG.PCGBranchSettings'PCGBranchSettings_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'" + OutputPins(1)="/Script/PCG.PCGPin'PCGPin_4'" + End Object + PCGNode="/Script/PCG.PCGNode'Branch_2'" + NodePosX=384 + NodePosY=128 + AdvancedPinDisplay=Shown + bUserSetEnabledState=True + NodeGuid=BCEBB6C85A8844F2B06322DF95805CB5 + CustomProperties Pin (PinId=4CBC2755317F47F7BA23B7E928C7A436,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=390B992FE20D4AAAB63EC14DE8732AD2,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=15D942E8E7C640719B71544BBEA5365D,PinName="Output to B",PinFriendlyName="Output To B",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=9397BA7C5D694D9FB070B353BB26BA57,PinName="Output A",PinFriendlyName="Output A",Direction="EGPD_Output",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=32167D5DBA9A4498B162B90B0F16A191,PinName="Output B",PinFriendlyName="Output B",Direction="EGPD_Output",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,) + End Object + `, + size: [13, 9], + color: Configuration.nodeColors.intenseGreen, + pins: 5, + pinNames: ["In", "Overrides", "Output To B", "Output A", "Output B"], + delegate: false, + development: false, + additionalTest: async (node, pins) => { + expect(await pins[0].evaluate(pin => pin.template.renderIcon().strings.join(""))) + .toEqual(SVGIcon.pcgStackPin.strings.join("")) + expect(await pins[0].evaluate(pin => pin.entity.pinColor().cssText)).toEqual("132, 132, 132") + expect(await pins[1].evaluate(pin => pin.template.renderIcon().strings.join(""))) + .toEqual(SVGIcon.pcgParamPin.strings.join("")) + expect(await pins[2].evaluate(pin => pin.template.renderIcon().strings.join(""))) + .toEqual(SVGIcon.pcgParamPin.strings.join("")) + expect(await pins[3].evaluate(pin => pin.template.renderIcon().strings.join(""))) + .toEqual(SVGIcon.pcgPin.strings.join("")) + expect(await pins[3].evaluate(pin => pin.entity.pinColor().cssText)).toEqual("132, 132, 132") + expect(await pins[4].evaluate(pin => pin.template.renderIcon().strings.join(""))) + .toEqual(SVGIcon.pcgPin.strings.join("")) + expect(await pins[4].evaluate(pin => pin.entity.pinColor().cssText)).toEqual("132, 132, 132") + } +}) diff --git a/tests/nodePCGSelect.spec.js b/tests/nodePCGSelect.spec.js new file mode 100644 index 0000000..458c7ea --- /dev/null +++ b/tests/nodePCGSelect.spec.js @@ -0,0 +1,87 @@ +import { css } from "lit" +import Configuration from "../js/Configuration.js" +import { expect, testNode } from "./fixtures/test.js" + +testNode({ + name: "PCG Select", + title: "Select", + value: String.raw` + Begin Object Class=/Script/PCGEditor.PCGEditorGraphNode Name="PCGEditorGraphNode_0" ExportPath="/Script/PCGEditor.PCGEditorGraphNode'/Game/NewPCGGraph.NewPCGGraph:PCGEditorGraph_0.PCGEditorGraphNode_0'" + Begin Object Class=/Script/PCG.PCGNode Name="Select_1" ExportPath="/Script/PCG.PCGNode'/Game/NewPCGGraph.NewPCGGraph:PCGEditorGraph_0.PCGEditorGraphNode_0.Select_1'" + Begin Object Class=/Script/PCG.PCGBooleanSelectSettings Name="PCGBooleanSelectSettings_0" ExportPath="/Script/PCG.PCGBooleanSelectSettings'/Game/NewPCGGraph.NewPCGGraph:PCGEditorGraph_0.PCGEditorGraphNode_0.Select_1.PCGBooleanSelectSettings_0'" + End Object + Begin Object Class=/Script/PCG.PCGPin Name="PCGPin_0" ExportPath="/Script/PCG.PCGPin'/Game/NewPCGGraph.NewPCGGraph:PCGEditorGraph_0.PCGEditorGraphNode_0.Select_1.PCGPin_0'" + End Object + Begin Object Class=/Script/PCG.PCGPin Name="PCGPin_1" ExportPath="/Script/PCG.PCGPin'/Game/NewPCGGraph.NewPCGGraph:PCGEditorGraph_0.PCGEditorGraphNode_0.Select_1.PCGPin_1'" + End Object + Begin Object Class=/Script/PCG.PCGPin Name="PCGPin_2" ExportPath="/Script/PCG.PCGPin'/Game/NewPCGGraph.NewPCGGraph:PCGEditorGraph_0.PCGEditorGraphNode_0.Select_1.PCGPin_2'" + End Object + Begin Object Class=/Script/PCG.PCGPin Name="PCGPin_3" ExportPath="/Script/PCG.PCGPin'/Game/NewPCGGraph.NewPCGGraph:PCGEditorGraph_0.PCGEditorGraphNode_0.Select_1.PCGPin_3'" + End Object + Begin Object Class=/Script/PCG.PCGPin Name="PCGPin_4" ExportPath="/Script/PCG.PCGPin'/Game/NewPCGGraph.NewPCGGraph:PCGEditorGraph_0.PCGEditorGraphNode_0.Select_1.PCGPin_4'" + End Object + End Object + Begin Object Name="Select_1" ExportPath="/Script/PCG.PCGNode'/Game/NewPCGGraph.NewPCGGraph:PCGEditorGraph_0.PCGEditorGraphNode_0.Select_1'" + Begin Object Name="PCGBooleanSelectSettings_0" ExportPath="/Script/PCG.PCGBooleanSelectSettings'/Game/NewPCGGraph.NewPCGGraph:PCGEditorGraph_0.PCGEditorGraphNode_0.Select_1.PCGBooleanSelectSettings_0'" + Seed=-764420405 + CachedOverridableParams(0)=(Label="Use Input B",PropertiesNames=("bUseInputB"),PropertyClass="/Script/CoreUObject.Class'/Script/PCG.PCGBooleanSelectSettings'") + End Object + Begin Object Name="PCGPin_0" ExportPath="/Script/PCG.PCGPin'/Game/NewPCGGraph.NewPCGGraph:PCGEditorGraph_0.PCGEditorGraphNode_0.Select_1.PCGPin_0'" + Node="/Script/PCG.PCGNode'PCGEditorGraphNode_0.Select_1'" + Properties=(Label="Input A",Tooltip=NSLOCTEXT("FPCGBooleanSelectElement", "FirstInputPinTooltip", "Will only be used if \'Use Input B\' (overridable) is false")) + End Object + Begin Object Name="PCGPin_1" ExportPath="/Script/PCG.PCGPin'/Game/NewPCGGraph.NewPCGGraph:PCGEditorGraph_0.PCGEditorGraphNode_0.Select_1.PCGPin_1'" + Node="/Script/PCG.PCGNode'PCGEditorGraphNode_0.Select_1'" + Properties=(Label="Input B",Tooltip=NSLOCTEXT("FPCGBooleanSelectElement", "SecondInputPinTooltip", "Will only be used if \'Use Input B\' (overridable) is true")) + End Object + Begin Object Name="PCGPin_2" ExportPath="/Script/PCG.PCGPin'/Game/NewPCGGraph.NewPCGGraph:PCGEditorGraph_0.PCGEditorGraphNode_0.Select_1.PCGPin_2'" + Node="/Script/PCG.PCGNode'PCGEditorGraphNode_0.Select_1'" + 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_3" ExportPath="/Script/PCG.PCGPin'/Game/NewPCGGraph.NewPCGGraph:PCGEditorGraph_0.PCGEditorGraphNode_0.Select_1.PCGPin_3'" + Node="/Script/PCG.PCGNode'PCGEditorGraphNode_0.Select_1'" + Properties=(Label="Use Input B",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}\""), "", NSLOCTEXT("", "16C4E377C2E74CE5BA25165971FD45EF", "bool"), NSLOCTEXT("", "C2769CCD78C64949B3473D033EAF34BC", "bUseInputB"))) + End Object + Begin Object Name="PCGPin_4" ExportPath="/Script/PCG.PCGPin'/Game/NewPCGGraph.NewPCGGraph:PCGEditorGraph_0.PCGEditorGraphNode_0.Select_1.PCGPin_4'" + Node="/Script/PCG.PCGNode'PCGEditorGraphNode_0.Select_1'" + Properties=(Label="Out",Tooltip=NSLOCTEXT("FPCGBooleanSelectElement", "OutputPinTooltip", "All input will gathered into a single data collection")) + End Object + PositionX=896 + PositionY=256 + SettingsInterface="/Script/PCG.PCGBooleanSelectSettings'PCGBooleanSelectSettings_0'" + InputPins(0)="/Script/PCG.PCGPin'PCGPin_0'" + InputPins(1)="/Script/PCG.PCGPin'PCGPin_1'" + InputPins(2)="/Script/PCG.PCGPin'PCGPin_2'" + InputPins(3)="/Script/PCG.PCGPin'PCGPin_3'" + OutputPins(0)="/Script/PCG.PCGPin'PCGPin_4'" + End Object + PCGNode="/Script/PCG.PCGNode'Select_1'" + NodePosX=896 + NodePosY=256 + AdvancedPinDisplay=Shown + bUserSetEnabledState=True + NodeGuid=DC0AF7AFAE5643AEAA102848F6C250A1 + CustomProperties Pin (PinId=44103E0035144DDA9CBDF09DABD6FFBB,PinName="Input A",PinFriendlyName="Input A",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=DDAD3EAD7E13487AB8307520FEC50BFE,PinName="Input B",PinFriendlyName="Input B",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=3368F1F000994A78A1AE7445BE7A84F5,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=0EFB81FA173B41D294EB0795B08D8881,PinName="Use Input B",PinFriendlyName="Use Input B",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=49C207211518412D826C77C76B639411,PinName="Out",PinFriendlyName="Out",Direction="EGPD_Output",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,) + End Object + `, + size: [11, 11], + color: Configuration.nodeColors.intenseGreen, + icon: null, + pins: 5, + pinNames: ["Input A", "Input B", "Overrides", "Use Input B", "Out"], + delegate: false, + development: false, + additionalTest: async (node, pins) => { + expect(await node.evaluate(node => node.classList.contains("ueb-node-style-glass"))).toBeFalsy() + expect(await node.evaluate(node => node.classList.contains("ueb-node-style-default"))).toBeTruthy() + expect(await pins[0].evaluate(p => p.entity.pinColor().cssText)).toBe(css`132, 132, 132`.cssText) + expect(await pins[1].evaluate(p => p.entity.pinColor().cssText)).toBe(css`132, 132, 132`.cssText) + expect(await pins[2].evaluate(p => p.entity.pinColor().cssText)).toBe(css`255, 166, 40`.cssText) + expect(await pins[3].evaluate(p => p.entity.pinColor().cssText)).toBe(css`255, 166, 40`.cssText) + expect(await pins[4].evaluate(p => p.entity.pinColor().cssText)).toBe(css`132, 132, 132`.cssText) + }, +}) diff --git a/tests/nodeReverseForEachLoop.spec.js b/tests/nodeReverseForEachLoop.spec.js new file mode 100644 index 0000000..ddffbc5 --- /dev/null +++ b/tests/nodeReverseForEachLoop.spec.js @@ -0,0 +1,29 @@ +import Configuration from "../js/Configuration.js" +import SVGIcon from "../js/SVGIcon.js" +import { testNode } from "./fixtures/test.js" + +testNode({ + name: "Reverse For Each Loop", + value: String.raw` + Begin Object Class=/Script/BlueprintGraph.K2Node_MacroInstance Name="K2Node_MacroInstance_3" + MacroGraphReference=(MacroGraph=/Script/Engine.EdGraph'"/Engine/EditorBlueprintResources/StandardMacros.StandardMacros:ReverseForEachLoop"',GraphBlueprint=/Script/Engine.Blueprint'"/Engine/EditorBlueprintResources/StandardMacros.StandardMacros"',GraphGuid=6DB5FE084A27CDF3569C7980D75D7E14) + ResolvedWildcardType=(PinCategory="wildcard") + NodePosX=-560 + NodePosY=-256 + NodeGuid=695A57C9EA744959BD630B5A6843125C + CustomProperties Pin (PinId=82F4FB580F714AA8BC05E24CBEA36A39,PinName="Exec",PinType.PinCategory="exec",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=2FDD4BF2642849E0BD7B5912F90B4193,PinName="Array",PinType.PinCategory="wildcard",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=Array,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_MacroInstance_2 8938553CAE344B4B9FE849C020278383,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=68B4210D1454406988CE323FE8C1E694,PinName="LoopBody",Direction="EGPD_Output",PinType.PinCategory="exec",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=687A39ADBA1C40B58DB4D4A98C68BB30,PinName="ArrayIndex",Direction="EGPD_Output",PinType.PinCategory="int",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=5E11F11E5F9B4E0DA2924E7DB49F01F7,PinName="ArrayElement",Direction="EGPD_Output",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=BD41530556AD4731B63C13B1183CD844,PinName="Completed",Direction="EGPD_Output",PinType.PinCategory="exec",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: [12, 10], + color: Configuration.nodeColors.gray, + icon: SVGIcon.macro, + pins: 6, + pinNames: ["Exec", "Array", "Loop Body", "Array Index", "Array Element", "Completed"], + delegate: false, + development: false, +}) diff --git a/tests/nodeSection.spec.js b/tests/nodeSection.spec.js new file mode 100644 index 0000000..8fa2922 --- /dev/null +++ b/tests/nodeSection.spec.js @@ -0,0 +1,26 @@ +import Configuration from "../js/Configuration.js" +import SVGIcon from "../js/SVGIcon.js" +import { testNode } from "./fixtures/test.js" + +testNode({ + name: "Debug Key §", + value: String.raw` + Begin Object Class=/Script/InputBlueprintNodes.K2Node_InputDebugKey Name="K2Node_InputDebugKey_9" + InputKey=Section + NodePosX=-448 + NodePosY=192 + NodeGuid=F77393EEC6EE474EB275F21B79D7AFFA + CustomProperties Pin (PinId=07B3CB6FEBC84F289CFE595A533AC588,PinName="Pressed",Direction="EGPD_Output",PinType.PinCategory="exec",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=9B870DCF5BB942EC8B2879ADD3C1C8D7,PinName="Released",Direction="EGPD_Output",PinType.PinCategory="exec",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=E303DAA129D744CB895FAAD13AD2E481,PinName="Key",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/InputCore.Key"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="None",AutogeneratedDefaultValue="None",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=D7A0B7E8F10C42F0812EBD47E57C90A5,PinName="ActionValue",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/EnhancedInput.InputActionValue"',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: [8.5, 11], + color: Configuration.nodeColors.red, + icon: SVGIcon.keyboard, + pins: 4, + pinNames: ["Pressed", "Released", "Key", "Action Value"], + delegate: false, + development: true, +}) diff --git a/tests/nodeSelf.spec.js b/tests/nodeSelf.spec.js new file mode 100644 index 0000000..87ba535 --- /dev/null +++ b/tests/nodeSelf.spec.js @@ -0,0 +1,20 @@ +import { expect, testNode } from "./fixtures/test.js" + +testNode({ + name: "Self", + value: String.raw` + Begin Object Class=/Script/BlueprintGraph.K2Node_Self Name="K2Node_Self_0" ExportPath="/Script/BlueprintGraph.K2Node_Self'/Temp/Untitled_1.Untitled_1:PersistentLevel.Untitled.EventGraph.K2Node_Self_0'" + NodePosX=224 + NodePosY=848 + NodeGuid=70A71735B5F247699242DBC67A166772 + CustomProperties Pin (PinId=3B41006840BA3918576575AC4419E030,PinName="self",Direction="EGPD_Output",PinType.PinCategory="object",PinType.PinSubCategory="self",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_CallFunction_1 C3A04D2142AC39C30B0A62876AF7ECC8,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + End Object + `, + size: [8, 2.5], + pins: 1, + delegate: false, + development: false, + additionalTest: async node => { + expect(await (node.evaluate(n => n.classList.contains("ueb-node-style-getter")))).toBeTruthy() + } +}) diff --git a/tests/nodeSequence.spec.js b/tests/nodeSequence.spec.js new file mode 100644 index 0000000..30574a4 --- /dev/null +++ b/tests/nodeSequence.spec.js @@ -0,0 +1,30 @@ +import Configuration from "../js/Configuration.js" +import SVGIcon from "../js/SVGIcon.js" +import { testNode } from "./fixtures/test.js" + +testNode({ + name: "Sequence", + value: String.raw` + Begin Object Class=/Script/BlueprintGraph.K2Node_ExecutionSequence Name="K2Node_ExecutionSequence_4" ExportPath="/Script/BlueprintGraph.K2Node_ExecutionSequence'/Engine/Maps/Templates/NewWorld.NewWorld:PersistentLevel.NewWorld.EventGraph.K2Node_ExecutionSequence_4'" + NodePosX=496 + NodePosY=192 + NodeGuid=7E38FFEB6B474D4E80CDA4B4720C9E24 + CustomProperties Pin (PinId=2612016B4EAAC152FA9ABB9E23572EE1,PinName="execute",PinType.PinCategory="exec",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_CallFunction_26 2658362A4F2BA6A3BE7398A8604FAC6D,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=D665418E47B39BB80A8F02B3951BF0DB,PinName="then_0",Direction="EGPD_Output",PinType.PinCategory="exec",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_Timeline_1 ABA55A2B4F3689076D856F921255888F,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=A3D98FA145671788536EA1AD2CF5DA61,PinName="then_1",Direction="EGPD_Output",PinType.PinCategory="exec",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_Timeline_1 4069CE0043C4948BDE9D17A2FEE8DE0A,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=47D0C212ACF74C57873C7C16B66E0EC6,PinName="then_2",Direction="EGPD_Output",PinType.PinCategory="exec",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: [8.5, 10], + color: Configuration.nodeColors.gray, + icon: SVGIcon.sequence, + pins: 4, + pinNames: [ + "Then 0", + "Then 1", + "Then 2", + ], + delegate: false, + development: false, + variadic: true, +}) diff --git a/tests/nodeSetFinishOnMessage.spec.js b/tests/nodeSetFinishOnMessage.spec.js new file mode 100644 index 0000000..518950b --- /dev/null +++ b/tests/nodeSetFinishOnMessage.spec.js @@ -0,0 +1,26 @@ +import Configuration from "../js/Configuration.js" +import SVGIcon from "../js/SVGIcon.js" +import { testNode } from "./fixtures/test.js" + +testNode({ + name: "Set Finish On Message", + subtitle: "Target is BTTask Blueprint Base", + value: String.raw` + Begin Object Class=/Script/BlueprintGraph.K2Node_CallFunction Name="K2Node_CallFunction_9" + FunctionReference=(MemberParent=/Script/CoreUObject.Class'"/Script/AIModule.BTTask_BlueprintBase"',MemberName="SetFinishOnMessage") + NodePosX=-752 + NodePosY=32 + NodeGuid=152AE61522404C4FB8A984E22233BA90 + CustomProperties Pin (PinId=AA65F714245245BBABEAC9DB0D30A1B8,PinName="execute",PinToolTip="\nExec",PinType.PinCategory="exec",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=E65D6A14850B4C3099B184E2718A253D,PinName="then",PinToolTip="\nExec",Direction="EGPD_Output",PinType.PinCategory="exec",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=B28838C8FD994D8B9CF9F9F5D1C60BF2,PinName="self",PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target"),PinToolTip="Target\nBTTask Blueprint Base Object Reference",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/AIModule.BTTask_BlueprintBase"',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=E31CB815EF3E418A89CAED51C9798597,PinName="MessageName",PinToolTip="Message Name\nName",PinType.PinCategory="name",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,DefaultValue="None",AutogeneratedDefaultValue="None",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + End Object + `, + color: Configuration.nodeColors.blue, + icon: SVGIcon.functionSymbol, + pins: 4, + pinNames: ["Target", "Message Name"], + delegate: false, + development: false, +}) diff --git a/tests/nodeSetPointColor.spec.js b/tests/nodeSetPointColor.spec.js new file mode 100644 index 0000000..9f1c2b5 --- /dev/null +++ b/tests/nodeSetPointColor.spec.js @@ -0,0 +1,129 @@ +import SVGIcon from "../js/SVGIcon.js" +import { expect, testNode } from "./fixtures/test.js" + +testNode({ + name: "Set Point Color", + value: String.raw` + Begin Object Class=/Script/PCGEditor.PCGEditorGraphNode Name="PCGEditorGraphNode_1" ExportPath="/Script/PCGEditor.PCGEditorGraphNode'/Game/NewPCGGraph.NewPCGGraph:PCGEditorGraph_0.PCGEditorGraphNode_1'" + Begin Object Class=/Script/PCG.PCGNode Name="ExecuteBlueprint_1" ExportPath="/Script/PCG.PCGNode'/Game/NewPCGGraph.NewPCGGraph:PCGEditorGraph_0.PCGEditorGraphNode_1.ExecuteBlueprint_1'" + Begin Object Class=/Script/PCG.PCGBlueprintSettings Name="PCGBlueprintSettings_1" ExportPath="/Script/PCG.PCGBlueprintSettings'/Game/NewPCGGraph.NewPCGGraph:PCGEditorGraph_0.PCGEditorGraphNode_1.ExecuteBlueprint_1.PCGBlueprintSettings_1'" + Begin Object Class=/PCG/BP_Elements/SetPointColor.SetPointColor_C Name="SetPointColor_C_0" ExportPath="/PCG/BP_Elements/SetPointColor.SetPointColor_C'/Game/NewPCGGraph.NewPCGGraph:PCGEditorGraph_0.PCGEditorGraphNode_1.ExecuteBlueprint_1.PCGBlueprintSettings_1.SetPointColor_C_0'" + End Object + End Object + Begin Object Class=/Script/PCG.PCGPin Name="PCGPin_0" ExportPath="/Script/PCG.PCGPin'/Game/NewPCGGraph.NewPCGGraph:PCGEditorGraph_0.PCGEditorGraphNode_1.ExecuteBlueprint_1.PCGPin_0'" + End Object + Begin Object Class=/Script/PCG.PCGPin Name="PCGPin_1" ExportPath="/Script/PCG.PCGPin'/Game/NewPCGGraph.NewPCGGraph:PCGEditorGraph_0.PCGEditorGraphNode_1.ExecuteBlueprint_1.PCGPin_1'" + End Object + Begin Object Class=/Script/PCG.PCGPin Name="PCGPin_2" ExportPath="/Script/PCG.PCGPin'/Game/NewPCGGraph.NewPCGGraph:PCGEditorGraph_0.PCGEditorGraphNode_1.ExecuteBlueprint_1.PCGPin_2'" + End Object + Begin Object Class=/Script/PCG.PCGPin Name="PCGPin_3" ExportPath="/Script/PCG.PCGPin'/Game/NewPCGGraph.NewPCGGraph:PCGEditorGraph_0.PCGEditorGraphNode_1.ExecuteBlueprint_1.PCGPin_3'" + End Object + Begin Object Class=/Script/PCG.PCGPin Name="PCGPin_4" ExportPath="/Script/PCG.PCGPin'/Game/NewPCGGraph.NewPCGGraph:PCGEditorGraph_0.PCGEditorGraphNode_1.ExecuteBlueprint_1.PCGPin_4'" + End Object + Begin Object Class=/Script/PCG.PCGPin Name="PCGPin_5" ExportPath="/Script/PCG.PCGPin'/Game/NewPCGGraph.NewPCGGraph:PCGEditorGraph_0.PCGEditorGraphNode_1.ExecuteBlueprint_1.PCGPin_5'" + End Object + Begin Object Class=/Script/PCG.PCGPin Name="PCGPin_6" ExportPath="/Script/PCG.PCGPin'/Game/NewPCGGraph.NewPCGGraph:PCGEditorGraph_0.PCGEditorGraphNode_1.ExecuteBlueprint_1.PCGPin_6'" + End Object + Begin Object Class=/Script/PCG.PCGPin Name="PCGPin_7" ExportPath="/Script/PCG.PCGPin'/Game/NewPCGGraph.NewPCGGraph:PCGEditorGraph_0.PCGEditorGraphNode_1.ExecuteBlueprint_1.PCGPin_7'" + End Object + End Object + Begin Object Name="ExecuteBlueprint_1" ExportPath="/Script/PCG.PCGNode'/Game/NewPCGGraph.NewPCGGraph:PCGEditorGraph_0.PCGEditorGraphNode_1.ExecuteBlueprint_1'" + Begin Object Name="PCGBlueprintSettings_1" ExportPath="/Script/PCG.PCGBlueprintSettings'/Game/NewPCGGraph.NewPCGGraph:PCGEditorGraph_0.PCGEditorGraphNode_1.ExecuteBlueprint_1.PCGBlueprintSettings_1'" + Begin Object Name="SetPointColor_C_0" ExportPath="/PCG/BP_Elements/SetPointColor.SetPointColor_C'/Game/NewPCGGraph.NewPCGGraph:PCGEditorGraph_0.PCGEditorGraphNode_1.ExecuteBlueprint_1.PCGBlueprintSettings_1.SetPointColor_C_0'" + End Object + BlueprintElementType="/Script/Engine.BlueprintGeneratedClass'/PCG/BP_Elements/SetPointColor.SetPointColor_C'" + BlueprintElementInstance="/PCG/BP_Elements/SetPointColor.SetPointColor_C'SetPointColor_C_0'" + Seed=-1868785340 + bExposeToLibrary=False + CachedOverridableParams(0)=(Label="Seed",PropertiesNames=("Seed"),PropertyClass="/Script/CoreUObject.Class'/Script/PCG.PCGBlueprintSettings'") + CachedOverridableParams(1)=(Label="R",PropertiesNames=("Linear Color","R"),PropertyClass="/Script/Engine.BlueprintGeneratedClass'/PCG/BP_Elements/SetPointColor.SetPointColor_C'") + CachedOverridableParams(2)=(Label="G",PropertiesNames=("Linear Color","G"),PropertyClass="/Script/Engine.BlueprintGeneratedClass'/PCG/BP_Elements/SetPointColor.SetPointColor_C'") + CachedOverridableParams(3)=(Label="B",PropertiesNames=("Linear Color","B"),PropertyClass="/Script/Engine.BlueprintGeneratedClass'/PCG/BP_Elements/SetPointColor.SetPointColor_C'") + CachedOverridableParams(4)=(Label="A",PropertiesNames=("Linear Color","A"),PropertyClass="/Script/Engine.BlueprintGeneratedClass'/PCG/BP_Elements/SetPointColor.SetPointColor_C'") + End Object + Begin Object Name="PCGPin_0" ExportPath="/Script/PCG.PCGPin'/Game/NewPCGGraph.NewPCGGraph:PCGEditorGraph_0.PCGEditorGraphNode_1.ExecuteBlueprint_1.PCGPin_0'" + Node="/Script/PCG.PCGNode'PCGEditorGraphNode_1.ExecuteBlueprint_1'" + Properties=(Label="In",AllowedTypes=Point) + End Object + Begin Object Name="PCGPin_1" ExportPath="/Script/PCG.PCGPin'/Game/NewPCGGraph.NewPCGGraph:PCGEditorGraph_0.PCGEditorGraphNode_1.ExecuteBlueprint_1.PCGPin_1'" + Node="/Script/PCG.PCGNode'PCGEditorGraphNode_1.ExecuteBlueprint_1'" + 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_0.PCGEditorGraphNode_1.ExecuteBlueprint_1.PCGPin_2'" + Node="/Script/PCG.PCGNode'PCGEditorGraphNode_1.ExecuteBlueprint_1'" + 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_0.PCGEditorGraphNode_1.ExecuteBlueprint_1.PCGPin_3'" + Node="/Script/PCG.PCGNode'PCGEditorGraphNode_1.ExecuteBlueprint_1'" + Properties=(Label="Out",AllowedTypes=Point) + End Object + Begin Object Name="PCGPin_4" ExportPath="/Script/PCG.PCGPin'/Game/NewPCGGraph.NewPCGGraph:PCGEditorGraph_0.PCGEditorGraphNode_1.ExecuteBlueprint_1.PCGPin_4'" + Node="/Script/PCG.PCGNode'PCGEditorGraphNode_1.ExecuteBlueprint_1'" + Properties=(Label="R",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}\""), "", "float", "Linear Color/R")) + End Object + Begin Object Name="PCGPin_5" ExportPath="/Script/PCG.PCGPin'/Game/NewPCGGraph.NewPCGGraph:PCGEditorGraph_0.PCGEditorGraphNode_1.ExecuteBlueprint_1.PCGPin_5'" + Node="/Script/PCG.PCGNode'PCGEditorGraphNode_1.ExecuteBlueprint_1'" + Properties=(Label="G",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}\""), "", "float", "Linear Color/G")) + End Object + Begin Object Name="PCGPin_6" ExportPath="/Script/PCG.PCGPin'/Game/NewPCGGraph.NewPCGGraph:PCGEditorGraph_0.PCGEditorGraphNode_1.ExecuteBlueprint_1.PCGPin_6'" + Node="/Script/PCG.PCGNode'PCGEditorGraphNode_1.ExecuteBlueprint_1'" + Properties=(Label="B",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}\""), "", "float", "Linear Color/B")) + End Object + Begin Object Name="PCGPin_7" ExportPath="/Script/PCG.PCGPin'/Game/NewPCGGraph.NewPCGGraph:PCGEditorGraph_0.PCGEditorGraphNode_1.ExecuteBlueprint_1.PCGPin_7'" + Node="/Script/PCG.PCGNode'PCGEditorGraphNode_1.ExecuteBlueprint_1'" + Properties=(Label="A",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}\""), "", "float", "Linear Color/A")) + End Object + PositionX=512 + PositionY=256 + SettingsInterface="/Script/PCG.PCGBlueprintSettings'PCGBlueprintSettings_1'" + InputPins(0)="/Script/PCG.PCGPin'PCGPin_0'" + InputPins(1)="/Script/PCG.PCGPin'PCGPin_1'" + InputPins(2)="/Script/PCG.PCGPin'PCGPin_2'" + InputPins(3)="/Script/PCG.PCGPin'PCGPin_4'" + InputPins(4)="/Script/PCG.PCGPin'PCGPin_5'" + InputPins(5)="/Script/PCG.PCGPin'PCGPin_6'" + InputPins(6)="/Script/PCG.PCGPin'PCGPin_7'" + OutputPins(0)="/Script/PCG.PCGPin'PCGPin_3'" + End Object + PCGNode="/Script/PCG.PCGNode'ExecuteBlueprint_1'" + NodePosX=512 + NodePosY=256 + AdvancedPinDisplay=Shown + bUserSetEnabledState=True + NodeGuid=74E6A6E9EF084BF4A24B56E43712EC85 + CustomProperties Pin (PinId=53B558601FD94E0A81D59879F7C84EE4,PinName="In",PinFriendlyName="In",PinType.PinCategory="Concrete Data",PinType.PinSubCategory="Point Data",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=D2D1A26AF9524E569FCA2DD6B15C7667,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=3506C39048EA435D8E16028C6E481FFE,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=7FBFCE159BE5483F9C0AF8E8053BF3B9,PinName="R",PinFriendlyName="R",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=996EFC1D746C46D39BB50E0AF3A156D4,PinName="G",PinFriendlyName="G",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=4693B14DC236425097A5FA8B3DDD46A3,PinName="B",PinFriendlyName="B",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=831312342DB14283A98ECB2D331C1B3D,PinName="A",PinFriendlyName="A",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=6F13FFA544CF43BD94FA007B9D6FC25A,PinName="Out",PinFriendlyName="Out",Direction="EGPD_Output",PinType.PinCategory="Concrete Data",PinType.PinSubCategory="Point Data",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, 16], + pins: 8, + pinNames: ["In", "Overrides", "Seed", "R", "G", "B", "A", "Out"], + delegate: false, + development: false, + additionalTest: async (node, pins) => { + expect(await pins[0].evaluate(pin => pin.template.renderIcon().strings.join(""))) + .toEqual(SVGIcon.pcgStackPin.strings.join("")) + expect(await pins[0].evaluate(pin => pin.entity.pinColor().cssText)).toEqual("64, 137, 255") + expect(await pins[1].evaluate(pin => pin.template.renderIcon().strings.join(""))) + .toEqual(SVGIcon.pcgParamPin.strings.join("")) + expect(await pins[2].evaluate(pin => pin.template.renderIcon().strings.join(""))) + .toEqual(SVGIcon.pcgParamPin.strings.join("")) + expect(await pins[3].evaluate(pin => pin.template.renderIcon().strings.join(""))) + .toEqual(SVGIcon.pcgParamPin.strings.join("")) + expect(await pins[4].evaluate(pin => pin.template.renderIcon().strings.join(""))) + .toEqual(SVGIcon.pcgParamPin.strings.join("")) + expect(await pins[5].evaluate(pin => pin.template.renderIcon().strings.join(""))) + .toEqual(SVGIcon.pcgParamPin.strings.join("")) + expect(await pins[6].evaluate(pin => pin.template.renderIcon().strings.join(""))) + .toEqual(SVGIcon.pcgParamPin.strings.join("")) + expect(await pins[7].evaluate(pin => pin.template.renderIcon().strings.join(""))) + .toEqual(SVGIcon.pcgPin.strings.join("")) + expect(await pins[7].evaluate(pin => pin.entity.pinColor().cssText)).toEqual("64, 137, 255") + } +}) diff --git a/tests/nodeSetRelativeRotation.spec.js b/tests/nodeSetRelativeRotation.spec.js new file mode 100644 index 0000000..b401d38 --- /dev/null +++ b/tests/nodeSetRelativeRotation.spec.js @@ -0,0 +1,42 @@ +import Configuration from "../js/Configuration.js" +import SVGIcon from "../js/SVGIcon.js" +import { testNode } from "./fixtures/test.js" + +testNode({ + name: "Set Relative Rotation", + subtitle: "Target is Scene Component", + value: String.raw` + Begin Object Class=/Script/BlueprintGraph.K2Node_CallFunction Name="K2Node_CallFunction_5" ExportPath=/Script/BlueprintGraph.K2Node_CallFunction'"/Temp/Untitled_1.Untitled_1:PersistentLevel.Untitled.EventGraph.K2Node_CallFunction_5"' + FunctionReference=(MemberParent=/Script/CoreUObject.Class'"/Script/Engine.SceneComponent"',MemberName="K2_SetRelativeRotation") + NodePosX=512 + NodePosY=-48 + AdvancedPinDisplay=Hidden + NodeGuid=2140E0AA9D8F4C5FB89F5CA378A9B56D + CustomProperties Pin (PinId=C347AFEE7AFC4848A63B99FF6167F73F,PinName="execute",PinToolTip="\nExec",PinType.PinCategory="exec",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=F3E0EED07DD54370A2DA0FD76353286B,PinName="then",PinToolTip="\nExec",Direction="EGPD_Output",PinType.PinCategory="exec",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=7EB45B16ED954F929722FBCD91A187A8,PinName="self",PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target"),PinToolTip="Target\nScene Component Object Reference",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/Engine.SceneComponent"',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=AE73B4E46A094DD788D04725FD7C6DF9,PinName="NewRotation",PinToolTip="New Rotation\nRotator\n\nNew rotation of the component relative to its parent",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/CoreUObject.Rotator"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="0, 0, 0",AutogeneratedDefaultValue="0, 0, 0",SubPins=(K2Node_CallFunction_5 F82B6140AD50485E8955369B735BC627,K2Node_CallFunction_5 0A417B3EA3074164B7DC605B7F85AF05,K2Node_CallFunction_5 8539DDEA84C24BE48F9D84B629FEA410,),PersistentGuid=00000000000000000000000000000000,bHidden=True,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=F82B6140AD50485E8955369B735BC627,PinName="NewRotation_Roll",PinFriendlyName=LOCGEN_FORMAT_NAMED(NSLOCTEXT("KismetSchema", "SplitPinFriendlyNameFormat", "{PinDisplayName} {ProtoPinDisplayName}"), "PinDisplayName", NSLOCTEXT("", "8F133E70437642249A31E409DD1E3852", "New Rotation"), "ProtoPinDisplayName", NSLOCTEXT("", "751A9C34B79E4E7F94E2F02DB922AFCE", "X (Roll)")),PinType.PinCategory="real",PinType.PinSubCategory="float",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,DefaultValue="0.0",AutogeneratedDefaultValue="0.0",ParentPin=K2Node_CallFunction_5 AE73B4E46A094DD788D04725FD7C6DF9,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=0A417B3EA3074164B7DC605B7F85AF05,PinName="NewRotation_Pitch",PinFriendlyName=LOCGEN_FORMAT_NAMED(NSLOCTEXT("KismetSchema", "SplitPinFriendlyNameFormat", "{PinDisplayName} {ProtoPinDisplayName}"), "PinDisplayName", NSLOCTEXT("", "26BC4556F421494A8E68A42D38A23EF1", "New Rotation"), "ProtoPinDisplayName", NSLOCTEXT("", "105B6B68DAF74E6CAD83079F9E795ECF", "Y (Pitch)")),PinType.PinCategory="real",PinType.PinSubCategory="float",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,DefaultValue="0.0",AutogeneratedDefaultValue="0.0",ParentPin=K2Node_CallFunction_5 AE73B4E46A094DD788D04725FD7C6DF9,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=8539DDEA84C24BE48F9D84B629FEA410,PinName="NewRotation_Yaw",PinFriendlyName=LOCGEN_FORMAT_NAMED(NSLOCTEXT("KismetSchema", "SplitPinFriendlyNameFormat", "{PinDisplayName} {ProtoPinDisplayName}"), "PinDisplayName", NSLOCTEXT("", "DE7AB5AB52D84405922E28EE72ABBB26", "New Rotation"), "ProtoPinDisplayName", NSLOCTEXT("", "1462F96F7C0B4D68B082EBA02E99F1EC", "Z (Yaw)")),PinType.PinCategory="real",PinType.PinSubCategory="float",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,DefaultValue="0.0",AutogeneratedDefaultValue="0.0",ParentPin=K2Node_CallFunction_5 AE73B4E46A094DD788D04725FD7C6DF9,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=E9652915F52D465E993222AC59ABBEDF,PinName="bSweep",PinToolTip="Sweep\nBoolean\n\nWhether we sweep to the destination (currently not supported for rotation).",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,DefaultValue="false",AutogeneratedDefaultValue="false",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=True,bOrphanedPin=False,) + CustomProperties Pin (PinId=3EE87DFBA5AB473F93F003AC9F8A2DED,PinName="SweepHitResult",PinToolTip="Sweep Hit Result\nHit Result Structure\n\nHit result from any impact if sweep is true.",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/Engine.HitResult"',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=649255CFBCB9480E8DC1AA214F9FCE6B,PinName="bTeleport",PinToolTip="Teleport\nBoolean\n\nWhether we teleport the physics state (if physics collision is enabled for this object). If true, physics velocity for this object is unchanged (so ragdoll parts are not affected by change in location). If false, physics velocity is updated based on the change in position (affecting ragdoll parts).",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,DefaultValue="false",AutogeneratedDefaultValue="false",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=True,bOrphanedPin=False,) + End Object + `, + size: [15, 16.5], + color: Configuration.nodeColors.blue, + icon: SVGIcon.functionSymbol, + pins: 9, + pinNames: [ + "Target", + "New Rotation X (Roll)", + "New Rotation Y (Pitch)", + "New Rotation Z (Yaw)", + "Sweep", + "Teleport", + "Sweep Hit Result", + ], + delegate: false, + development: false, +}) diff --git a/tests/nodeSin.spec.js b/tests/nodeSin.spec.js new file mode 100644 index 0000000..7196d2e --- /dev/null +++ b/tests/nodeSin.spec.js @@ -0,0 +1,29 @@ +import SVGIcon from "../js/SVGIcon.js" +import { expect, testNode } from "./fixtures/test.js" + +testNode({ + name: "SIN", + value: String.raw` + Begin Object Class=/Script/BlueprintGraph.K2Node_CallFunction Name="K2Node_CallFunction_26" ExportPath=/Script/BlueprintGraph.K2Node_CallFunction'"/Temp/Untitled_1.Untitled_1:PersistentLevel.Untitled.EventGraph.K2Node_CallFunction_26"' + bIsPureFunc=True + FunctionReference=(MemberParent=/Script/CoreUObject.Class'"/Script/Engine.KismetMathLibrary"',MemberName="Sin") + NodePosX=-256 + NodePosY=-256 + NodeGuid=FE2CD3AF6DF14671A45FB273B5DDDF8E + CustomProperties Pin (PinId=E48C5BE04F244CCFA93C5DF17AA41727,PinName="self",PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target"),PinToolTip="Target\nKismet Math Library Object Reference",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/Engine.KismetMathLibrary"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultObject="/Script/Engine.Default__KismetMathLibrary",PersistentGuid=00000000000000000000000000000000,bHidden=True,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=ED71A80DC02B45518D8D016209E95FB6,PinName="A",PinToolTip="A\nFloat (double-precision)",PinType.PinCategory="real",PinType.PinSubCategory="double",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,DefaultValue="0.0",AutogeneratedDefaultValue="0.0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=B89EE79C0898454BB00D8335BE922ED3,PinName="ReturnValue",PinToolTip="Return Value\nFloat (double-precision)\n\nReturns the sine of A (expects Radians)",Direction="EGPD_Output",PinType.PinCategory="real",PinType.PinSubCategory="double",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,DefaultValue="0.0",AutogeneratedDefaultValue="0.0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + End Object + `, + size: [12, 3], + pins: 2, + delegate: false, + development: false, + variadic: false, + additionalTest: async (node, pins) => { + for (const pin of pins) { + expect(await pin.evaluate(pin => pin.template.renderIcon().strings.join(""))) + .toStrictEqual(SVGIcon.operationPin.strings.join("")) + } + } +}) diff --git a/tests/nodeSpawnActorNONE.spec.js b/tests/nodeSpawnActorNONE.spec.js new file mode 100644 index 0000000..9429fb9 --- /dev/null +++ b/tests/nodeSpawnActorNONE.spec.js @@ -0,0 +1,29 @@ +import Configuration from "../js/Configuration.js" +import SVGIcon from "../js/SVGIcon.js" +import { testNode } from "./fixtures/test.js" + +testNode({ + name: "SpawnActor NONE", + value: String.raw` + Begin Object Class=/Script/BlueprintGraph.K2Node_SpawnActorFromClass Name="K2Node_SpawnActorFromClass_1" ExportPath=/Script/BlueprintGraph.K2Node_SpawnActorFromClass'"/Temp/Untitled_1.Untitled_1:PersistentLevel.Untitled.EventGraph.K2Node_SpawnActorFromClass_1"' + NodePosX=-256 + NodePosY=-128 + AdvancedPinDisplay=Shown + NodeGuid=24B049D9DB0F44D882AFE6C80BCFD6D7 + CustomProperties Pin (PinId=DAD2D02C89FA40C2816217E9926FE015,PinName="execute",PinType.PinCategory="exec",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=16CEF4A26976499C8D28A51FC5D5FC06,PinName="then",Direction="EGPD_Output",PinType.PinCategory="exec",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=FCDCE4268C464334BEDFD7166183C92E,PinName="Class",PinToolTip="Actor Class Reference Class\nThe object class you want to construct",PinType.PinCategory="class",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/Engine.Actor"',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=431A4F3F9A9444FAB27C9A4FF1F5DF75,PinName="ReturnValue",PinToolTip="Actor Object Reference Return Value\nThe constructed object",Direction="EGPD_Output",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/Engine.Actor"',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=0A8BF8604B274EC6A2FC38665C78179C,PinName="SpawnTransform",PinToolTip="Spawn Transform\nTransform\n\nThe transform to spawn the Actor with",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/CoreUObject.Transform"',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=22A7ADCDABD041C78907E027D38A3972,PinName="CollisionHandlingOverride",PinToolTip="Collision Handling Override\nESpawnActorCollisionHandlingMethod Enum\n\nSpecifies how to handle collisions at the spawn point. If undefined, uses actor class settings.",PinType.PinCategory="byte",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Enum'"/Script/Engine.ESpawnActorCollisionHandlingMethod"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="Undefined",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=7C7F74180B6B464F946E79A8AF068F97,PinName="TransformScaleMethod",PinType.PinCategory="byte",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Enum'"/Script/Engine.ESpawnActorScaleMethod"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="MultiplyWithRoot",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=True,bOrphanedPin=False,) + CustomProperties Pin (PinId=A8322AFB4361415CB589F9F97A1AEAF7,PinName="Owner",PinToolTip="Owner\nActor Object Reference\n\nCan be left empty; primarily used for replication (bNetUseOwnerRelevancy and bOnlyRelevantToOwner), or visibility (PrimitiveComponent\'s bOwnerNoSee/bOnlyOwnerSee)",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/Engine.Actor"',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,) + End Object + `, + color: Configuration.nodeColors.blue, + icon: SVGIcon.spawnActor, + pins: 8, + pinNames: ["Class", "Spawn Transform", "Collision Handling Override", "Transform Scale Method", "Owner", "Return Value"], + delegate: false, + development: false, +}) diff --git a/tests/nodeSpawnActorPointLight.spec.js b/tests/nodeSpawnActorPointLight.spec.js new file mode 100644 index 0000000..ac38340 --- /dev/null +++ b/tests/nodeSpawnActorPointLight.spec.js @@ -0,0 +1,38 @@ +import Configuration from "../js/Configuration.js" +import SVGIcon from "../js/SVGIcon.js" +import { testNode } from "./fixtures/test.js" + +testNode({ + name: "SpawnActor Point Light", + value: String.raw` + Begin Object Class=/Script/BlueprintGraph.K2Node_SpawnActorFromClass Name="K2Node_SpawnActorFromClass_0" ExportPath=/Script/BlueprintGraph.K2Node_SpawnActorFromClass'"/Temp/Untitled_1.Untitled_1:PersistentLevel.Untitled.EventGraph.K2Node_SpawnActorFromClass_0"' + NodePosX=-560 + NodePosY=-96 + AdvancedPinDisplay=Shown + NodeGuid=339A61F4C503440C93AB7A8B8B464A42 + CustomProperties Pin (PinId=BEEE0AE5F4F24EE2A0CC153B52844919,PinName="execute",PinType.PinCategory="exec",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=CFA5506C331541C0B35739F95ACCC110,PinName="then",Direction="EGPD_Output",PinType.PinCategory="exec",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=C9088BD19473494B8426AAE584D5F5F6,PinName="Class",PinToolTip="Actor Class Reference Class\nThe object class you want to construct",PinType.PinCategory="class",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/Engine.Actor"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultObject="/Script/Engine.PointLight",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=8A9DB62EE64D4E9987578479E0E83C0B,PinName="ReturnValue",PinToolTip="Point Light Object Reference Return Value\nThe constructed object",Direction="EGPD_Output",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/Engine.PointLight"',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=9038EC19A2F74900AC57B4BD05146E2C,PinName="SpawnTransform",PinToolTip="Spawn Transform\nTransform\n\nThe transform to spawn the Actor with",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/CoreUObject.Transform"',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=DF50478D9FF04AA393E8D08D8EC8D6EF,PinName="CollisionHandlingOverride",PinToolTip="Collision Handling Override\nESpawnActorCollisionHandlingMethod Enum\n\nSpecifies how to handle collisions at the spawn point. If undefined, uses actor class settings.",PinType.PinCategory="byte",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Enum'"/Script/Engine.ESpawnActorCollisionHandlingMethod"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="AdjustIfPossibleButDontSpawnIfColliding",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=BBEB70384DE441AFB752C06D2484260A,PinName="TransformScaleMethod",PinType.PinCategory="byte",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Enum'"/Script/Engine.ESpawnActorScaleMethod"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="MultiplyWithRoot",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=True,bOrphanedPin=False,) + CustomProperties Pin (PinId=C6D5782B0BD64B5E89E2FC5ED3402871,PinName="Owner",PinToolTip="Owner\nActor Object Reference\n\nCan be left empty; primarily used for replication (bNetUseOwnerRelevancy and bOnlyRelevantToOwner), or visibility (PrimitiveComponent\'s bOwnerNoSee/bOnlyOwnerSee)",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/Engine.Actor"',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=C6F3F40366F54FCAB1071FC6838BA4BD,PinName="Instigator",PinToolTip="Instigator\nPawn Object Reference\n\nPawn responsible for damage and other gameplay events caused by this actor.",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/Engine.Pawn"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=True,PinType.bSerializeAsSinglePrecisionFloat=False,AutogeneratedDefaultValue="None",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + End Object + `, + color: Configuration.nodeColors.blue, + icon: SVGIcon.spawnActor, + pins: 9, + pinNames: [ + "Class", + "Spawn Transform", + "Collision Handling Override", + "Transform Scale Method", + "Owner", + "Instigator", + "Return Value" + ], + delegate: false, + development: false, +}) diff --git a/tests/nodeSqrt.spec.js b/tests/nodeSqrt.spec.js new file mode 100644 index 0000000..1d19815 --- /dev/null +++ b/tests/nodeSqrt.spec.js @@ -0,0 +1,31 @@ +import Configuration from "../js/Configuration.js" +import { testNode } from "./fixtures/test.js" + +testNode({ + name: "Sqrt", + value: String.raw` + Begin Object Class=/Script/UnrealEd.MaterialGraphNode Name="MaterialGraphNode_24" ExportPath=/Script/UnrealEd.MaterialGraphNode'"/Engine/Transient.M_CobbleStone_Pebble:MaterialGraph_0.MaterialGraphNode_24"' + Begin Object Class=/Script/Engine.MaterialExpressionSquareRoot Name="MaterialExpressionSquareRoot_0" ExportPath=/Script/Engine.MaterialExpressionSquareRoot'"/Engine/Transient.M_CobbleStone_Pebble:MaterialGraph_0.MaterialGraphNode_24.MaterialExpressionSquareRoot_0"' + End Object + Begin Object Name="MaterialExpressionSquareRoot_0" ExportPath=/Script/Engine.MaterialExpressionSquareRoot'"/Engine/Transient.M_CobbleStone_Pebble:MaterialGraph_0.MaterialGraphNode_24.MaterialExpressionSquareRoot_0"' + MaterialExpressionEditorX=-1552 + MaterialExpressionEditorY=-416 + MaterialExpressionGuid=3F37EEB301AE4B0192673A114358C546 + Material=/Script/UnrealEd.PreviewMaterial'"/Engine/Transient.M_CobbleStone_Pebble"' + bCollapsed=False + End Object + MaterialExpression=/Script/Engine.MaterialExpressionSquareRoot'"MaterialExpressionSquareRoot_0"' + NodePosX=-1552 + NodePosY=-416 + NodeGuid=5DB895BECADE486CB5F8A40B72C64637 + CustomProperties Pin (PinId=9BEA4A9DE7DE411EB9590041B6137505,PinName="Input",PinFriendlyName=NSLOCTEXT("MaterialGraphNode", "Space", " "),PinType.PinCategory="required",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=4F7BCB72BB064C5FA9EDFC004EEF3591,PinName="Output",PinFriendlyName=NSLOCTEXT("MaterialGraphNode", "Space", " "),Direction="EGPD_Output",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,) + End Object + `, + color: Configuration.nodeColors.green, + icon: null, + pins: 2, + pinNames: [], + delegate: false, + development: false, +}) diff --git a/tests/nodeSteamTouch1.spec.js b/tests/nodeSteamTouch1.spec.js new file mode 100644 index 0000000..2129ac0 --- /dev/null +++ b/tests/nodeSteamTouch1.spec.js @@ -0,0 +1,25 @@ +import Configuration from "../js/Configuration.js" +import SVGIcon from "../js/SVGIcon.js" +import { testNode } from "./fixtures/test.js" + +testNode({ + name: "Steam Touch 1", + value: String.raw` + Begin Object Class=/Script/BlueprintGraph.K2Node_InputKey Name="K2Node_InputKey_29" + InputKey=Steam_Touch_1 + NodePosX=80 + NodePosY=-160 + NodeGuid=E85D97EACB4F4B8B9F8A160A949BB9AD + CustomProperties Pin (PinId=D7E09AE1588B4E949F7C34798AED6758,PinName="Pressed",Direction="EGPD_Output",PinType.PinCategory="exec",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=CA4B72FE4D6F4F5DA503674A88F1872E,PinName="Released",Direction="EGPD_Output",PinType.PinCategory="exec",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=948BDBCF71EE4E36891EB8259D1C4E44,PinName="Key",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/InputCore.Key"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="None",AutogeneratedDefaultValue="None",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + End Object + `, + size: [9, 8], + color: Configuration.nodeColors.red, + icon: SVGIcon.gamepad, + pins: 3, + pinNames: ["Pressed", "Released", "Key"], + delegate: false, + development: false, +}) diff --git a/tests/nodeSwitchonEConstantQFFTSizeEnum.spec.js b/tests/nodeSwitchonEConstantQFFTSizeEnum.spec.js new file mode 100644 index 0000000..82b6478 --- /dev/null +++ b/tests/nodeSwitchonEConstantQFFTSizeEnum.spec.js @@ -0,0 +1,44 @@ +import Configuration from "../js/Configuration.js" +import SVGIcon from "../js/SVGIcon.js" +import { testNode } from "./fixtures/test.js" + +testNode({ + name: "Switch on EConstantQFFTSizeEnum", + value: String.raw` + Begin Object Class=/Script/BlueprintGraph.K2Node_SwitchEnum Name="K2Node_SwitchEnum_0" + Enum=/Script/CoreUObject.Enum'"/Script/AudioSynesthesia.EConstantQFFTSizeEnum"' + EnumEntries(0)="Min" + EnumEntries(1)="XXSmall" + EnumEntries(2)="XSmall" + EnumEntries(3)="Small" + EnumEntries(4)="Medium" + EnumEntries(5)="Large" + EnumEntries(6)="XLarge" + EnumEntries(7)="XXLarge" + EnumEntries(8)="Max" + NodePosX=16 + NodePosY=704 + AdvancedPinDisplay=Hidden + NodeGuid=9DCDC46C72FF47CE91F86A8045F0033E + CustomProperties Pin (PinId=1593030F27084BFD85F54D30CD32C5B8,PinName="execute",PinType.PinCategory="exec",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=17161A0F216A4F2FB64374200F51E83D,PinName="Selection",PinType.PinCategory="byte",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Enum'"/Script/AudioSynesthesia.EConstantQFFTSizeEnum"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="Min",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=B14C4298DE3249649D40116D72461E25,PinName="NotEqual_ByteByte",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/Engine.KismetMathLibrary"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultObject="/Script/Engine.Default__KismetMathLibrary",PersistentGuid=00000000000000000000000000000000,bHidden=True,bNotConnectable=True,bDefaultValueIsReadOnly=True,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=3B40821CA7C749BFAA558A8CF4402B55,PinName="Min",PinFriendlyName=NSLOCTEXT("UObjectDisplayNames", "EConstantQFFTSizeEnum.Min", "Min"),Direction="EGPD_Output",PinType.PinCategory="exec",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=B95FFACBCBD040B2AAB48011BC143625,PinName="XXSmall",PinFriendlyName=NSLOCTEXT("UObjectDisplayNames", "EConstantQFFTSizeEnum.XXSmall", "XXSmall"),Direction="EGPD_Output",PinType.PinCategory="exec",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=340171B1D59F422E96B45F9B1E11892A,PinName="XSmall",PinFriendlyName=NSLOCTEXT("UObjectDisplayNames", "EConstantQFFTSizeEnum.XSmall", "XSmall"),Direction="EGPD_Output",PinType.PinCategory="exec",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=BD0B6BF19D6C4BA487498C4A768FF500,PinName="Small",PinFriendlyName=NSLOCTEXT("UObjectDisplayNames", "EConstantQFFTSizeEnum.Small", "Small"),Direction="EGPD_Output",PinType.PinCategory="exec",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=58E2F332700044E88E8A591FFBE5DEDB,PinName="Medium",PinFriendlyName=NSLOCTEXT("UObjectDisplayNames", "EConstantQFFTSizeEnum.Medium", "Medium"),Direction="EGPD_Output",PinType.PinCategory="exec",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=94B36AB248454AE2884C39DDBBBE55E2,PinName="Large",PinFriendlyName=NSLOCTEXT("UObjectDisplayNames", "EConstantQFFTSizeEnum.Large", "Large"),Direction="EGPD_Output",PinType.PinCategory="exec",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=9F6110F3DE5D42B69DAEDD2BA1F83908,PinName="XLarge",PinFriendlyName=NSLOCTEXT("UObjectDisplayNames", "EConstantQFFTSizeEnum.XLarge", "XLarge"),Direction="EGPD_Output",PinType.PinCategory="exec",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=42A13039E2144897A11DC3A5B96CA8C4,PinName="XXLarge",PinFriendlyName=NSLOCTEXT("UObjectDisplayNames", "EConstantQFFTSizeEnum.XXLarge", "XXLarge"),Direction="EGPD_Output",PinType.PinCategory="exec",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=A064703325A4454EA72392A6C725CCC4,PinName="Max",PinFriendlyName=NSLOCTEXT("UObjectDisplayNames", "EConstantQFFTSizeEnum.Max", "Max"),Direction="EGPD_Output",PinType.PinCategory="exec",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,) + End Object + `, + size: [21, 9], + color: Configuration.nodeColors.lime, + icon: SVGIcon.switch, + pins: 11, + pinNames: ["Selection", "Min", "XXSmall", "XSmall", "Small", "Medium", "Large", "XLarge", "XXLarge", "Max"], + delegate: false, + development: false, +}) diff --git a/tests/nodeSwitchonENiagaraOrientationAxis.spec.js b/tests/nodeSwitchonENiagaraOrientationAxis.spec.js new file mode 100644 index 0000000..a656ec3 --- /dev/null +++ b/tests/nodeSwitchonENiagaraOrientationAxis.spec.js @@ -0,0 +1,31 @@ +import Configuration from "../js/Configuration.js" +import SVGIcon from "../js/SVGIcon.js" +import { testNode } from "./fixtures/test.js" + +testNode({ + name: "Switch on ENiagaraOrientationAxis", + value: String.raw` + Begin Object Class=/Script/BlueprintGraph.K2Node_SwitchEnum Name="K2Node_SwitchEnum_3" + Enum=/Script/Engine.UserDefinedEnum'"/Niagara/Enums/ENiagaraOrientationAxis.ENiagaraOrientationAxis"' + EnumEntries(0)="NewEnumerator0" + EnumEntries(1)="NewEnumerator1" + EnumEntries(2)="NewEnumerator2" + NodePosX=128 + NodePosY=272 + NodeGuid=27ECE312F8464337AAFD3E4710FD0108 + CustomProperties Pin (PinId=D9D55819354041FCA1749D111E98462F,PinName="execute",PinType.PinCategory="exec",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=A34A643489CB4A9A8AB8EF406E66E586,PinName="Selection",PinType.PinCategory="byte",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/Engine.UserDefinedEnum'"/Niagara/Enums/ENiagaraOrientationAxis.ENiagaraOrientationAxis"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="NewEnumerator0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=E28F973F53654172AA58FEB665826457,PinName="NotEqual_ByteByte",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/Engine.KismetMathLibrary"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultObject="/Script/Engine.Default__KismetMathLibrary",PersistentGuid=00000000000000000000000000000000,bHidden=True,bNotConnectable=True,bDefaultValueIsReadOnly=True,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=02E2659FDD834A9483316C112630A17C,PinName="NewEnumerator0",PinFriendlyName=NSLOCTEXT("[9C9868C74FCF3E7AFDEB778F8C9EA988]", "1CE439C14E8741B2E94E4896C5BB29BB", "X Axis"),Direction="EGPD_Output",PinType.PinCategory="exec",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=36E317D2BD3C48A7BED78FFE25AD1451,PinName="NewEnumerator1",PinFriendlyName=NSLOCTEXT("[9C9868C74FCF3E7AFDEB778F8C9EA988]", "4807FD384418AD133AF56D9DD063A9D8", "Y Axis"),Direction="EGPD_Output",PinType.PinCategory="exec",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=2020E66C887C446DB4B69B0CA9652A6A,PinName="NewEnumerator2",PinFriendlyName=NSLOCTEXT("[9C9868C74FCF3E7AFDEB778F8C9EA988]", "0D8EE448409B4A8CD1F47FAB0AC122CF", "Z Axis"),Direction="EGPD_Output",PinType.PinCategory="exec",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: [20, 8], + color: Configuration.nodeColors.lime, + icon: SVGIcon.switch, + pins: 5, + pinNames: ["Selection", "X Axis", "Y Axis", "Z Axis"], + delegate: false, + development: false, +}) diff --git a/tests/nodeSwitchonFTransformChannelEnum.spec.js b/tests/nodeSwitchonFTransformChannelEnum.spec.js new file mode 100644 index 0000000..96b9239 --- /dev/null +++ b/tests/nodeSwitchonFTransformChannelEnum.spec.js @@ -0,0 +1,55 @@ +import Configuration from "../js/Configuration.js" +import SVGIcon from "../js/SVGIcon.js" +import { testNode } from "./fixtures/test.js" + +testNode({ + name: "Switch on FTransformChannelEnum", + value: String.raw` + Begin Object Class=/Script/BlueprintGraph.K2Node_SwitchEnum Name="K2Node_SwitchEnum_4" + Enum=/Script/CoreUObject.Enum'"/Script/MovieSceneTools.FTransformChannelEnum"' + EnumEntries(0)="TranslateX" + EnumEntries(1)="TranslateY" + EnumEntries(2)="TranslateZ" + EnumEntries(3)="RotateX" + EnumEntries(4)="RotateY" + EnumEntries(5)="RotateZ" + EnumEntries(6)="ScaleX" + EnumEntries(7)="ScaleY" + EnumEntries(8)="ScaleZ" + NodePosX=-48 + NodePosY=448 + AdvancedPinDisplay=Shown + NodeGuid=27936712DE844DD68577CF8D703E315B + CustomProperties Pin (PinId=AF3B9C33C7E84817A720F393F7307A46,PinName="execute",PinType.PinCategory="exec",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=045AC753EEF74356BE997C19BB00B82B,PinName="Selection",PinType.PinCategory="byte",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Enum'"/Script/MovieSceneTools.FTransformChannelEnum"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="ScaleX",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=759822D08F654AF7ACDFA6F0590404B8,PinName="NotEqual_ByteByte",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/Engine.KismetMathLibrary"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultObject="/Script/Engine.Default__KismetMathLibrary",PersistentGuid=00000000000000000000000000000000,bHidden=True,bNotConnectable=True,bDefaultValueIsReadOnly=True,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=D91E0E2866954BC887234AA8883DCB83,PinName="TranslateX",PinFriendlyName=NSLOCTEXT("UObjectDisplayNames", "FTransformChannelEnum.TranslateX", "Translate X"),Direction="EGPD_Output",PinType.PinCategory="exec",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=697FB3903E294ADF821BFBD574CB2976,PinName="TranslateY",PinFriendlyName=NSLOCTEXT("UObjectDisplayNames", "FTransformChannelEnum.TranslateY", "Translate Y"),Direction="EGPD_Output",PinType.PinCategory="exec",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=F76AB334C5E24919815C2AAAEACCD14B,PinName="TranslateZ",PinFriendlyName=NSLOCTEXT("UObjectDisplayNames", "FTransformChannelEnum.TranslateZ", "Translate Z"),Direction="EGPD_Output",PinType.PinCategory="exec",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=1C6C49D0E8A94F2F99A1DF9AF1574D16,PinName="RotateX",PinFriendlyName=NSLOCTEXT("UObjectDisplayNames", "FTransformChannelEnum.RotateX", "Rotate X"),Direction="EGPD_Output",PinType.PinCategory="exec",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=0D35BB4401504A20B45D152BCA0B9BD0,PinName="RotateY",PinFriendlyName=NSLOCTEXT("UObjectDisplayNames", "FTransformChannelEnum.RotateY", "Rotate Y"),Direction="EGPD_Output",PinType.PinCategory="exec",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=2024CA11E8E840F1A1D7C087145476AC,PinName="RotateZ",PinFriendlyName=NSLOCTEXT("UObjectDisplayNames", "FTransformChannelEnum.RotateZ", "Rotate Z"),Direction="EGPD_Output",PinType.PinCategory="exec",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=E9F47D5F991E43318D29DD40089114D4,PinName="ScaleX",PinFriendlyName=NSLOCTEXT("UObjectDisplayNames", "FTransformChannelEnum.ScaleX", "Scale X"),Direction="EGPD_Output",PinType.PinCategory="exec",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=D41C6BF492AD4AB09AE11DFEF442E256,PinName="ScaleY",PinFriendlyName=NSLOCTEXT("UObjectDisplayNames", "FTransformChannelEnum.ScaleY", "Scale Y"),Direction="EGPD_Output",PinType.PinCategory="exec",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=A7460C8034394A20863B4AB8A38249D9,PinName="ScaleZ",PinFriendlyName=NSLOCTEXT("UObjectDisplayNames", "FTransformChannelEnum.ScaleZ", "Scale Z"),Direction="EGPD_Output",PinType.PinCategory="exec",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,) + End Object + `, + size: [22, 21], + color: Configuration.nodeColors.lime, + icon: SVGIcon.switch, + pins: 11, + pinNames: [ + "Selection", + "Translate X", + "Translate Y", + "Translate Z", + "Rotate X", + "Rotate Y", + "Rotate Z", + "Scale X", + "Scale Y", + "Scale Z", + ], + delegate: false, + development: false, +}) diff --git a/tests/nodeSwitchonGameplayTag.spec.js b/tests/nodeSwitchonGameplayTag.spec.js new file mode 100644 index 0000000..25ed1c8 --- /dev/null +++ b/tests/nodeSwitchonGameplayTag.spec.js @@ -0,0 +1,74 @@ +import Configuration from "../js/Configuration.js" +import SVGIcon from "../js/SVGIcon.js" +import { testNode } from "./fixtures/test.js" + +testNode({ + name: "Switch on Gameplay Tag", + value: String.raw` + Begin Object Class=/Script/GameplayTagsEditor.GameplayTagsK2Node_SwitchGameplayTag Name="GameplayTagsK2Node_SwitchGameplayTag_0" + PinTags(14)=() + PinNames(0)="Case_0" + PinNames(1)="Case_1" + PinNames(2)="Case_2" + PinNames(3)="Case_3" + PinNames(4)="Case_4" + PinNames(5)="Case_5" + PinNames(6)="Case_6" + PinNames(7)="Case_7" + PinNames(8)="Case_8" + PinNames(9)="Case_9" + PinNames(10)="Case_10" + PinNames(11)="Case_11" + PinNames(12)="Case_12" + PinNames(13)="Case_13" + PinNames(14)="Case_14" + NodePosX=-512 + NodePosY=-384 + NodeGuid=ED658BB7B62F438C9C4C8241FE7333E0 + CustomProperties Pin (PinId=6272078D163F42A0972D3D5DE4267F93,PinName="Default",Direction="EGPD_Output",PinType.PinCategory="exec",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=3C1FB3CA71024EC183146491615C75D6,PinName="execute",PinType.PinCategory="exec",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=6A936EB599F144DEB209E7062D494522,PinName="Selection",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/GameplayTags.GameplayTag"',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=5DCD6681C7D94F0FBD7FC06ECD41B733,PinName="NotEqual_TagTag",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/GameplayTags.BlueprintGameplayTagLibrary"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultObject="/Script/GameplayTags.Default__BlueprintGameplayTagLibrary",PersistentGuid=00000000000000000000000000000000,bHidden=True,bNotConnectable=True,bDefaultValueIsReadOnly=True,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=761B2B809F974008BDC8F9D5AAC1DA2A,PinName="Case_0",Direction="EGPD_Output",PinType.PinCategory="exec",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=B5E8DC43F8504407B038C8FC2A1E98FA,PinName="Case_1",Direction="EGPD_Output",PinType.PinCategory="exec",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=AD14BC4F66DC488584D4EE9CBF2EB80F,PinName="Case_2",Direction="EGPD_Output",PinType.PinCategory="exec",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=1612FF4C75E2470D96B7496492ECB40D,PinName="Case_3",Direction="EGPD_Output",PinType.PinCategory="exec",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=71DB09F379DA4F6AAC316170276217EA,PinName="Case_4",Direction="EGPD_Output",PinType.PinCategory="exec",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=7FB99DAC1E1A45DEA7543A0CCE7ED8CC,PinName="Case_5",Direction="EGPD_Output",PinType.PinCategory="exec",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=923B58C73D384BACAC49664AD1CE9F16,PinName="Case_6",Direction="EGPD_Output",PinType.PinCategory="exec",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=B80CF21281234D3E9F8CF90C6EECD6F5,PinName="Case_7",Direction="EGPD_Output",PinType.PinCategory="exec",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=110CC7DBBB3B4840B00335AD1C3FB531,PinName="Case_8",Direction="EGPD_Output",PinType.PinCategory="exec",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=E5166419AD504A99A59651413DB1EBAE,PinName="Case_9",Direction="EGPD_Output",PinType.PinCategory="exec",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=5CB0EC686EB841E08C64D261EBE2CDFE,PinName="Case_10",Direction="EGPD_Output",PinType.PinCategory="exec",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=144D73A3F8FD4C8092F862D1863A5132,PinName="Case_11",Direction="EGPD_Output",PinType.PinCategory="exec",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=2515EACDE70541A191CA8F45E4346A0C,PinName="Case_12",Direction="EGPD_Output",PinType.PinCategory="exec",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=6F1F3687EA7F43DA8AC166E35B9AD3F3,PinName="Case_13",Direction="EGPD_Output",PinType.PinCategory="exec",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=62464A0DADE0407382DA61A0593EBE12,PinName="Case_14",Direction="EGPD_Output",PinType.PinCategory="exec",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: [15, 36], + color: Configuration.nodeColors.lime, + icon: SVGIcon.switch, + pins: 18, + pinNames: [ + "Selection", + "Case 0", + "Case 1", + "Case 2", + "Case 3", + "Case 4", + "Case 5", + "Case 6", + "Case 7", + "Case 8", + "Case 9", + "Case 10", + "Case 11", + "Case 12", + "Case 13", + "Case 14", + "Default" + ], + delegate: false, + development: false, +}) diff --git a/tests/nodeSwitchonInt.spec.js b/tests/nodeSwitchonInt.spec.js new file mode 100644 index 0000000..b0e80d8 --- /dev/null +++ b/tests/nodeSwitchonInt.spec.js @@ -0,0 +1,65 @@ +import Configuration from "../js/Configuration.js" +import SVGIcon from "../js/SVGIcon.js" +import { testNode } from "./fixtures/test.js" + +testNode({ + name: "Switch on Int", + value: String.raw` + Begin Object Class=/Script/BlueprintGraph.K2Node_SwitchInteger Name="K2Node_SwitchInteger_0" ExportPath=/Script/BlueprintGraph.K2Node_SwitchInteger'"/Temp/Untitled_1.Untitled_1:PersistentLevel.Untitled.EventGraph.K2Node_SwitchInteger_0"' + NodePosX=-976 + NodePosY=-208 + NodeGuid=7D1D44AEC61748948595579E4933DE01 + CustomProperties Pin (PinId=B7119DBD876E4E398D5463E9E8D25EFE,PinName="Default",Direction="EGPD_Output",PinType.PinCategory="exec",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=7EB587CEB10C4EBEBFCF3F6611CF9C01,PinName="execute",PinType.PinCategory="exec",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=7D90CED7751B46F7ADD3F9D15676441A,PinName="Selection",PinType.PinCategory="int",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,DefaultValue="0",AutogeneratedDefaultValue="0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=02817A0069B94F3A873C263E46A63B3E,PinName="NotEqual_IntInt",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/Engine.KismetMathLibrary"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultObject="/Script/Engine.Default__KismetMathLibrary",PersistentGuid=00000000000000000000000000000000,bHidden=True,bNotConnectable=True,bDefaultValueIsReadOnly=True,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=1C4A112E24004AC3A1960F3BF59E812B,PinName="0",Direction="EGPD_Output",PinType.PinCategory="exec",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=9E6A8E01BC714310841B8574240BA501,PinName="1",Direction="EGPD_Output",PinType.PinCategory="exec",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=978FFD75663A489895DC53A8B326CB5F,PinName="2",Direction="EGPD_Output",PinType.PinCategory="exec",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=349E7E6CDB62428EA386712CAC7EF798,PinName="3",Direction="EGPD_Output",PinType.PinCategory="exec",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=DEF18A0DAEF34E1FAC4FA0A5778C1A88,PinName="4",Direction="EGPD_Output",PinType.PinCategory="exec",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=9A642941C48546DDB9A882F3E394508C,PinName="5",Direction="EGPD_Output",PinType.PinCategory="exec",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=DC199B5D33804EAD80796CD80EFD7433,PinName="6",Direction="EGPD_Output",PinType.PinCategory="exec",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=AB4824D6FBFD40658A3C9140FE151DF3,PinName="7",Direction="EGPD_Output",PinType.PinCategory="exec",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=4FECE418AD1F407C9C2F9F0C13DCDB0D,PinName="8",Direction="EGPD_Output",PinType.PinCategory="exec",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=CF45C88AC0BD478991162D3382B5023D,PinName="9",Direction="EGPD_Output",PinType.PinCategory="exec",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=05C0A6F6CC7D45BDAA4BD32A0D57C4A1,PinName="10",Direction="EGPD_Output",PinType.PinCategory="exec",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=04ED677A3E3142C7BB5BC3E85E7623EA,PinName="11",Direction="EGPD_Output",PinType.PinCategory="exec",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=160F5EFF0F354543A639C2C59B7487E3,PinName="12",Direction="EGPD_Output",PinType.PinCategory="exec",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=BC1F119C3E33404787B7562401576DDA,PinName="13",Direction="EGPD_Output",PinType.PinCategory="exec",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=64A00EF9C0584A7FA3F9EE804DECCD26,PinName="14",Direction="EGPD_Output",PinType.PinCategory="exec",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=AFEB73E3A747474EB2034D7D59FC02D7,PinName="15",Direction="EGPD_Output",PinType.PinCategory="exec",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=E860933499D24ADF8FF9A1ECA2E4E94F,PinName="16",Direction="EGPD_Output",PinType.PinCategory="exec",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=7A918DA2394740A28C1250C1A7A061C9,PinName="17",Direction="EGPD_Output",PinType.PinCategory="exec",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: [13, 42], + color: Configuration.nodeColors.lime, + icon: SVGIcon.switch, + pins: 21, + pinNames: [ + "Selection", + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "14", + "15", + "16", + "17", + "Default" + ], + delegate: false, + development: false, + variadic: true, +}) diff --git a/tests/nodeSwitchonName.spec.js b/tests/nodeSwitchonName.spec.js new file mode 100644 index 0000000..270b4bb --- /dev/null +++ b/tests/nodeSwitchonName.spec.js @@ -0,0 +1,28 @@ +import Configuration from "../js/Configuration.js" +import SVGIcon from "../js/SVGIcon.js" +import { testNode } from "./fixtures/test.js" + +testNode({ + name: "Switch on Name", + value: String.raw` + Begin Object Class=/Script/BlueprintGraph.K2Node_SwitchName Name="K2Node_SwitchName_0" + PinNames(0)="Case_0" + NodePosX=-1872 + NodePosY=-192 + NodeGuid=0F6D37C81EA34BDBBB5BCF1B50640C58 + CustomProperties Pin (PinId=364302AC219347A49E8686050F7BEA5A,PinName="Default",Direction="EGPD_Output",PinType.PinCategory="exec",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=8831972A02E84D90B4F1A9E21727B68F,PinName="execute",PinType.PinCategory="exec",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=5306210FE1664181ADA50665ACB9EFCF,PinName="Selection",PinType.PinCategory="name",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,DefaultValue="None",AutogeneratedDefaultValue="None",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=7449D10CD02444BFAC164F750710688E,PinName="NotEqual_NameName",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/Engine.KismetMathLibrary"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultObject="/Script/Engine.Default__KismetMathLibrary",PersistentGuid=00000000000000000000000000000000,bHidden=True,bNotConnectable=True,bDefaultValueIsReadOnly=True,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=FA2ED9343F4648D7A2EC9E8DB23C87BE,PinName="Case_0",Direction="EGPD_Output",PinType.PinCategory="exec",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: [14.5, 8.5], + color: Configuration.nodeColors.lime, + icon: SVGIcon.switch, + pins: 4, + pinNames: ["Selection", "Case 0", "Default"], + delegate: false, + development: false, + variadic: true, +}) diff --git a/tests/nodeSwitchonString.spec.js b/tests/nodeSwitchonString.spec.js new file mode 100644 index 0000000..2724067 --- /dev/null +++ b/tests/nodeSwitchonString.spec.js @@ -0,0 +1,32 @@ +import Configuration from "../js/Configuration.js" +import SVGIcon from "../js/SVGIcon.js" +import { testNode } from "./fixtures/test.js" + +testNode({ + name: "Switch on String", + value: String.raw` + Begin Object Class=/Script/BlueprintGraph.K2Node_SwitchString Name="K2Node_SwitchString_0" + PinNames(0)="Case_0" + PinNames(1)="Case_1" + PinNames(2)="Case_2" + NodePosX=-2240 + NodePosY=-384 + NodeGuid=7375BC78BF274EFFA76D29F8C2ED121E + CustomProperties Pin (PinId=99643F5A360E4D88AAFCD821E256574F,PinName="Default",Direction="EGPD_Output",PinType.PinCategory="exec",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=ACA3449DD6494C67BD30E4FAEFF01C2F,PinName="execute",PinType.PinCategory="exec",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=A210E336701C487F8CB425FA599DC5DE,PinName="Selection",PinType.PinCategory="string",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=15F56FC350CD47D7A54E4E077818C933,PinName="NotEqual_StriStri",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/Engine.KismetStringLibrary"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultObject="/Script/Engine.Default__KismetStringLibrary",PersistentGuid=00000000000000000000000000000000,bHidden=True,bNotConnectable=True,bDefaultValueIsReadOnly=True,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=D8C63349C83E4236A207A7DA51002328,PinName="Case_0",Direction="EGPD_Output",PinType.PinCategory="exec",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=5DFD70BF7F0C476FA5159979821FF45F,PinName="Case_1",Direction="EGPD_Output",PinType.PinCategory="exec",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=C902D54233354133B40C1CC8696C339F,PinName="Case_2",Direction="EGPD_Output",PinType.PinCategory="exec",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: [13, 12], + color: Configuration.nodeColors.lime, + icon: SVGIcon.switch, + pins: 6, + pinNames: ["Selection", "Case 0", "Case 1", "Case 2", "Default"], + delegate: false, + development: false, + variadic: true, +}) diff --git a/tests/nodeTemporalSobol.spec.js b/tests/nodeTemporalSobol.spec.js new file mode 100644 index 0000000..0e6333a --- /dev/null +++ b/tests/nodeTemporalSobol.spec.js @@ -0,0 +1,45 @@ +import Configuration from "../js/Configuration.js" +import { expect, testNode } from "./fixtures/test.js" + +testNode({ + name: "Temporal Sobol", + value: String.raw` + Begin Object Class=/Script/UnrealEd.MaterialGraphNode Name="MaterialGraphNode_9" ExportPath=/Script/UnrealEd.MaterialGraphNode'"/Engine/Transient.NewMaterial:MaterialGraph_0.MaterialGraphNode_9"' + Begin Object Class=/Script/Engine.MaterialExpressionTemporalSobol Name="MaterialExpressionTemporalSobol_0" ExportPath=/Script/Engine.MaterialExpressionTemporalSobol'"/Engine/Transient.NewMaterial:MaterialGraph_0.MaterialGraphNode_9.MaterialExpressionTemporalSobol_0"' + End Object + Begin Object Name="MaterialExpressionTemporalSobol_0" ExportPath=/Script/Engine.MaterialExpressionTemporalSobol'"/Engine/Transient.NewMaterial:MaterialGraph_0.MaterialGraphNode_9.MaterialExpressionTemporalSobol_0"' + "ConstIndex"=4 + "ConstSeed"=(X=77.000000,Y=55.000000) + "MaterialExpressionEditorX"=-345 + "MaterialExpressionEditorY"=225 + "MaterialExpressionGuid"=D1A3B12340EE27538A3109B7B3D0E119 + "Material"=/Script/UnrealEd.PreviewMaterial'"/Engine/Transient.NewMaterial"' + End Object + "MaterialExpression"=/Script/Engine.MaterialExpressionTemporalSobol'"MaterialExpressionTemporalSobol_0"' + "NodePosX"=-345 + "NodePosY"=225 + "NodeGuid"=5BE5108B48EB26B6366D4DA6AF99285D + CustomProperties Pin (PinId=E9B08066434FD243EF8856B11A08588D,PinName="Index",PinType.PinCategory="optional",PinType.PinSubCategory="int",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,DefaultValue="4",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=4EB376FB4105AA0CFA52D990C82FE284,PinName="Seed",PinType.PinCategory="optional",PinType.PinSubCategory="rg",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,DefaultValue="X=77.000 Y=55.000",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=4A57DE0448EEA04661E83AA561BE2D94,PinName="Output",PinFriendlyName=NSLOCTEXT("MaterialGraphNode", "Space", " "),Direction="EGPD_Output",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,) + End Object + `, + color: Configuration.nodeColors.green, + icon: null, + pins: 3, + pinNames: [ + "Index", + "Seed" + ], + delegate: false, + development: false, + additionalTest: async node => { + /** @type {Locator>} */ + const indexPin = node.locator("ueb-pin").nth(0) + /** @type {Locator>} */ + const seedPin = node.locator("ueb-pin").nth(1) + expect(await indexPin.evaluate(pin => pin.getDefaultValue().value)).toBe(4) + const values = await seedPin.evaluate(pin => pin.getDefaultValue().toArray()) + expect(values).toStrictEqual([77, 55]) + } +}) diff --git a/tests/nodeTextureSample.spec.js b/tests/nodeTextureSample.spec.js new file mode 100644 index 0000000..62f2dd0 --- /dev/null +++ b/tests/nodeTextureSample.spec.js @@ -0,0 +1,56 @@ +import Configuration from "../js/Configuration.js" +import { testNode } from "./fixtures/test.js" + +testNode({ + name: "Texture Sample", + value: String.raw` + Begin Object Class=/Script/UnrealEd.MaterialGraphNode Name="MaterialGraphNode_11" ExportPath=/Script/UnrealEd.MaterialGraphNode'"/Engine/Transient.M_CobbleStone_Pebble:MaterialGraph_0.MaterialGraphNode_11"' + Begin Object Class=/Script/Engine.MaterialExpressionTextureSample Name="MaterialExpressionTextureSample_8" ExportPath=/Script/Engine.MaterialExpressionTextureSample'"/Engine/Transient.M_CobbleStone_Pebble:MaterialGraph_0.MaterialGraphNode_11.MaterialExpressionTextureSample_8"' + End Object + Begin Object Name="MaterialExpressionTextureSample_8" ExportPath=/Script/Engine.MaterialExpressionTextureSample'"/Engine/Transient.M_CobbleStone_Pebble:MaterialGraph_0.MaterialGraphNode_11.MaterialExpressionTextureSample_8"' + Coordinates=(Expression=/Script/Engine.MaterialExpressionMultiply'"MaterialExpressionMultiply_12"') + Texture=/Script/Engine.Texture2D'"/Game/StarterContent/Textures/T_MacroVariation.T_MacroVariation"' + MaterialExpressionEditorX=-1056 + MaterialExpressionEditorY=-1392 + MaterialExpressionGuid=8A9B66F54B20419B8A09B9A31EEE0326 + Material=/Script/UnrealEd.PreviewMaterial'"/Engine/Transient.M_CobbleStone_Pebble"' + End Object + MaterialExpression=/Script/Engine.MaterialExpressionTextureSample'"MaterialExpressionTextureSample_8"' + NodePosX=-1056 + NodePosY=-1392 + AdvancedPinDisplay=Shown + NodeGuid=ABB48A5BD2DD43FFA097F233839224B4 + CustomProperties Pin (PinId=57F9CF0C528346ACBF859D991A2977C8,PinName="UVs",PinType.PinCategory="optional",PinType.PinSubCategory="byte",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,DefaultValue="0",LinkedTo=(MaterialGraphNode_13 103847E51C494723BAC2A040FB53291F,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=04074338E0FB457FB39F2F8737202A9D,PinName="Tex",PinType.PinCategory="optional",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=B6216A82E662464E9547EAF8F7C9156B,PinName="Apply View MipBias",PinType.PinCategory="optional",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=86F88FBB9F4744ABAF530B1699FD5C45,PinName="MipValueMode",PinType.PinCategory="optional",PinType.PinSubCategory="byte",PinType.PinSubCategoryObject=/Script/CoreUObject.Enum'"/Script/Engine.ETextureMipValueMode"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="None (use computed mip level)",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=True,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=True,bOrphanedPin=False,) + CustomProperties Pin (PinId=F971048A6287441491B3F431F9204643,PinName="Sampler Source",PinType.PinCategory="optional",PinType.PinSubCategory="byte",PinType.PinSubCategoryObject=/Script/CoreUObject.Enum'"/Script/Engine.ESamplerSourceMode"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="From texture asset",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=True,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=True,bOrphanedPin=False,) + CustomProperties Pin (PinId=57AE297DD9B641D49F96DE01DE60352D,PinName="Sampler Type",PinType.PinCategory="optional",PinType.PinSubCategory="byte",PinType.PinSubCategoryObject=/Script/CoreUObject.Enum'"/Script/Engine.EMaterialSamplerType"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="Color",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=True,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=True,bOrphanedPin=False,) + CustomProperties Pin (PinId=5EB251794C274FE29D545A848C25061A,PinName="RGB",Direction="EGPD_Output",PinType.PinCategory="mask",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=22B624FB96F2457AB5199C9AC8D6FED7,PinName="R",Direction="EGPD_Output",PinType.PinCategory="mask",PinType.PinSubCategory="red",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=(MaterialGraphNode_14 F0018EB452FE4F1C8A7A713AB4FBB4BA,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=0193BCA3C4A04EA3B71604FC23D817AB,PinName="G",Direction="EGPD_Output",PinType.PinCategory="mask",PinType.PinSubCategory="green",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=3105CB21DB34441582786D8B5FCB9B5E,PinName="B",Direction="EGPD_Output",PinType.PinCategory="mask",PinType.PinSubCategory="blue",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=057FD07998624E67B613294C0E91FDB0,PinName="A",Direction="EGPD_Output",PinType.PinCategory="mask",PinType.PinSubCategory="alpha",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=168889DC9D5D4F22B2F581DB425812EA,PinName="RGBA",Direction="EGPD_Output",PinType.PinCategory="mask",PinType.PinSubCategory="rgba",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 + `, + color: Configuration.nodeColors.darkTurquoise, + icon: null, + pins: 12, + pinNames: [ + "UVs", + "Tex", + "Apply View Mip Bias", + "Mip Value Mode", + "Sampler Source", + "Sampler Type", + "RGB", + "R", + "G", + "B", + "A", + "RGBA" + ], + delegate: false, + development: false, +}) diff --git a/tests/nodeThumbMouseButton2.spec.js b/tests/nodeThumbMouseButton2.spec.js new file mode 100644 index 0000000..9d1ce43 --- /dev/null +++ b/tests/nodeThumbMouseButton2.spec.js @@ -0,0 +1,25 @@ +import Configuration from "../js/Configuration.js" +import SVGIcon from "../js/SVGIcon.js" +import { testNode } from "./fixtures/test.js" + +testNode({ + name: "Thumb Mouse Button 2", + value: String.raw` + Begin Object Class=/Script/BlueprintGraph.K2Node_InputKey Name="K2Node_InputKey_18" + InputKey=ThumbMouseButton2 + NodePosX=144 + NodePosY=288 + NodeGuid=031BA5DB71BA4F6ABC7F85DCFD34771D + CustomProperties Pin (PinId=DC46CB8B47E0429FB58797DD9FAA9F48,PinName="Pressed",Direction="EGPD_Output",PinType.PinCategory="exec",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=66F69216F2964D4C9ADD1997A46F9A76,PinName="Released",Direction="EGPD_Output",PinType.PinCategory="exec",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=C80119035CCB451BA90DB5CFD6F98029,PinName="Key",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/InputCore.Key"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="None",AutogeneratedDefaultValue="None",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + End Object + `, + size: [12, 8], + color: Configuration.nodeColors.red, + icon: SVGIcon.mouse, + pins: 3, + pinNames: ["Pressed", "Released", "Key"], + delegate: false, + development: false, +}) diff --git a/tests/nodeTilde.spec.js b/tests/nodeTilde.spec.js new file mode 100644 index 0000000..61ac57c --- /dev/null +++ b/tests/nodeTilde.spec.js @@ -0,0 +1,25 @@ +import Configuration from "../js/Configuration.js" +import SVGIcon from "../js/SVGIcon.js" +import { testNode } from "./fixtures/test.js" + +testNode({ + name: "`", + value: String.raw` + Begin Object Class=/Script/BlueprintGraph.K2Node_InputKey Name="K2Node_InputKey_24" + InputKey=Tilde + NodePosX=-16 + NodePosY=-176 + NodeGuid=CC2D4F6041DC494C96C08DFBD618AC3A + CustomProperties Pin (PinId=70F444059B5847989EC789B5239F6BE0,PinName="Pressed",Direction="EGPD_Output",PinType.PinCategory="exec",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=5EC9A95245F344EF838C08813AD7B1EB,PinName="Released",Direction="EGPD_Output",PinType.PinCategory="exec",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=0019D9A7CD8C4338BB75677A00C56CDA,PinName="Key",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/InputCore.Key"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="None",AutogeneratedDefaultValue="None",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + End Object + `, + size: [6, 8], + color: Configuration.nodeColors.red, + icon: SVGIcon.keyboard, + pins: 3, + pinNames: ["Pressed", "Released", "Key"], + delegate: false, + development: false, +}) diff --git a/tests/nodeTimeline.spec.js b/tests/nodeTimeline.spec.js new file mode 100644 index 0000000..6e93e80 --- /dev/null +++ b/tests/nodeTimeline.spec.js @@ -0,0 +1,44 @@ +import Configuration from "../js/Configuration.js" +import SVGIcon from "../js/SVGIcon.js" +import { testNode } from "./fixtures/test.js" + +testNode({ + name: "Timeline", + value: String.raw` + Begin Object Class=/Script/BlueprintGraph.K2Node_Timeline Name="K2Node_Timeline_0" + TimelineName="Timeline" + TimelineGuid=5A2932A3D7004616A4F233DB24D4E31F + NodePosX=-1136 + NodePosY=-464 + bCanRenameNode=True + NodeGuid=FAA474FEEE534CAB9F8E0828CDE95892 + CustomProperties Pin (PinId=73D6A2B467F9472C8069BAB3E3245EE0,PinName="Play",PinType.PinCategory="exec",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=A65D68F22BC7446998845F65C262B4AA,PinName="PlayFromStart",PinType.PinCategory="exec",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=D1CF97026F034CF3A79C6E6F90C348BA,PinName="Stop",PinType.PinCategory="exec",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=16A43012A9A14EB2B917962FD24731A7,PinName="Reverse",PinType.PinCategory="exec",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=74C2E50D186D4230B6ED2327D08FDA34,PinName="ReverseFromEnd",PinType.PinCategory="exec",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=434043688FB5451293945CA3C0E2D202,PinName="Update",Direction="EGPD_Output",PinType.PinCategory="exec",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_CallFunction_35 585A3CD5A0BA42569102B28820988070,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=296FA705872C4598BD613C68751387E3,PinName="Finished",Direction="EGPD_Output",PinType.PinCategory="exec",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=95467DD3FD76493FB981FCD2B8287EA7,PinName="SetNewTime",PinType.PinCategory="exec",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=48F9B48502CC484CA433FB1497A341E0,PinName="NewTime",PinType.PinCategory="real",PinType.PinSubCategory="float",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,DefaultValue="0.0",AutogeneratedDefaultValue="0.0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=5B2BC8D35A154CCE87AEA274C4CACED6,PinName="Direction",Direction="EGPD_Output",PinType.PinCategory="byte",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Enum'"/Script/Engine.ETimelineDirection"',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 + `, + color: Configuration.nodeColors.yellow, + icon: SVGIcon.timer, + pins: 10, + pinNames: [ + "Play", + "Play From Start", // No info in the graph that "from" is lower case + "Stop", + "Reverse", + "Reverse From End", // No info in the graph that "from" is lower case + "Set New Time", + "New Time", + "Update", + "Finished", + "Direction", + ], + delegate: false, + development: false, +}) diff --git a/tests/nodeTouch1.spec.js b/tests/nodeTouch1.spec.js new file mode 100644 index 0000000..c31fdce --- /dev/null +++ b/tests/nodeTouch1.spec.js @@ -0,0 +1,25 @@ +import Configuration from "../js/Configuration.js" +import SVGIcon from "../js/SVGIcon.js" +import { testNode } from "./fixtures/test.js" + +testNode({ + name: "Touch 1", + value: String.raw` + Begin Object Class=/Script/BlueprintGraph.K2Node_InputKey Name="K2Node_InputKey_28" + InputKey=Touch1 + NodePosX=-144 + NodePosY=-128 + NodeGuid=2AE125437F1B48B3A849925138CD51D1 + CustomProperties Pin (PinId=A6B5FC017A024EC3B258A048773DD301,PinName="Pressed",Direction="EGPD_Output",PinType.PinCategory="exec",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=576F12E928DF4FF48D4D1E1F05C9C661,PinName="Released",Direction="EGPD_Output",PinType.PinCategory="exec",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=7102CB8371BA4E8594ACECDAD1422A1C,PinName="Key",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/InputCore.Key"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="None",AutogeneratedDefaultValue="None",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + End Object + `, + size: [7, 8], + color: Configuration.nodeColors.red, + icon: SVGIcon.touchpad, + pins: 3, + pinNames: ["Pressed", "Released", "Key"], + delegate: false, + development: false, +}) diff --git a/tests/nodeUnbindEventfromOnPreInitialize.spec.js b/tests/nodeUnbindEventfromOnPreInitialize.spec.js new file mode 100644 index 0000000..a3163bf --- /dev/null +++ b/tests/nodeUnbindEventfromOnPreInitialize.spec.js @@ -0,0 +1,26 @@ +import Configuration from "../js/Configuration.js" +import SVGIcon from "../js/SVGIcon.js" +import { testNode } from "./fixtures/test.js" + +testNode({ + name: "Unbind Event from On Pre Initialize", + value: String.raw` + Begin Object Class=/Script/BlueprintGraph.K2Node_RemoveDelegate Name="K2Node_RemoveDelegate_0" ExportPath="/Script/BlueprintGraph.K2Node_RemoveDelegate'/Engine/Maps/Templates/NewWorld.NewWorld:PersistentLevel.NewWorld.EventGraph.K2Node_RemoveDelegate_0'" + DelegateReference=(MemberParent="/Script/CoreUObject.Class'/Script/ControlRig.ControlRigComponent'",MemberName="OnPreInitializeDelegate") + NodePosX=2688 + NodePosY=-512 + NodeGuid=68504A8520394A2F9B8AACFD2F457D9E + CustomProperties Pin (PinId=1D7D2FBFEB344721B4EE9D149F615BBD,PinName="execute",PinType.PinCategory="exec",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=2AB22AF068E943BEB99DAAE276EA0C9A,PinName="then",Direction="EGPD_Output",PinType.PinCategory="exec",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=42FC9475607C479097689D14713CCC43,PinName="self",PinFriendlyName=NSLOCTEXT("K2Node", "BaseMCDelegateSelfPinName", "Target"),PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.Class'/Script/ControlRig.ControlRigComponent'",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=7729342B171248D8A6EF908ED8E1D8B7,PinName="Delegate",PinFriendlyName=NSLOCTEXT("K2Node", "PinFriendlyDelegatetName", "Event"),PinType.PinCategory="delegate",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(MemberParent="/Script/CoreUObject.Package'/Script/ControlRig'",MemberName="ControlRigComponentDelegate__DelegateSignature"),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=True,PinType.bIsConst=True,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: [16.5, 8], + color: Configuration.nodeColors.blue, + icon: SVGIcon.node, + pins: 4, + pinNames: ["Target", "Event"], + delegate: false, + development: false, +}) diff --git a/tests/nodeUnbindallEventsfromOnScrollBarVisibilityChanged.spec.js b/tests/nodeUnbindallEventsfromOnScrollBarVisibilityChanged.spec.js new file mode 100644 index 0000000..6477e64 --- /dev/null +++ b/tests/nodeUnbindallEventsfromOnScrollBarVisibilityChanged.spec.js @@ -0,0 +1,25 @@ +import Configuration from "../js/Configuration.js" +import SVGIcon from "../js/SVGIcon.js" +import { testNode } from "./fixtures/test.js" + +testNode({ + name: "Unbind all Events from On Scroll Bar Visibility Changed", + value: String.raw` + Begin Object Class=/Script/BlueprintGraph.K2Node_ClearDelegate Name="K2Node_ClearDelegate_1" ExportPath="/Script/BlueprintGraph.K2Node_ClearDelegate'/Engine/Maps/Templates/NewWorld.NewWorld:PersistentLevel.NewWorld.EventGraph.K2Node_ClearDelegate_1'" + DelegateReference=(MemberParent="/Script/CoreUObject.Class'/Script/UMG.ScrollBox'",MemberName="OnScrollBarVisibilityChanged") + NodePosX=2688 + NodePosY=-640 + NodeGuid=48B5357C4A6344B685D58484C8CA6100 + CustomProperties Pin (PinId=0186059A7F58440D9CDE09CF2E4211BE,PinName="execute",PinType.PinCategory="exec",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=CB57C7A59EC4491EAC932C4AF3B43254,PinName="then",Direction="EGPD_Output",PinType.PinCategory="exec",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=C088A6049D2C4A238885632C5D33C490,PinName="self",PinFriendlyName=NSLOCTEXT("K2Node", "BaseMCDelegateSelfPinName", "Target"),PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.Class'/Script/UMG.ScrollBox'",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: [24, 6], + color: Configuration.nodeColors.blue, + icon: SVGIcon.node, + pins: 3, + pinNames: ["Target"], + delegate: false, + development: false, +}) diff --git a/tests/nodeWhileLoop.spec.js b/tests/nodeWhileLoop.spec.js new file mode 100644 index 0000000..aabf947 --- /dev/null +++ b/tests/nodeWhileLoop.spec.js @@ -0,0 +1,26 @@ +import Configuration from "../js/Configuration.js" +import SVGIcon from "../js/SVGIcon.js" +import { testNode } from "./fixtures/test.js" + +testNode({ + name: "While Loop", + value: String.raw` + Begin Object Class=/Script/BlueprintGraph.K2Node_MacroInstance Name="K2Node_MacroInstance_4" + MacroGraphReference=(MacroGraph=/Script/Engine.EdGraph'"/Engine/EditorBlueprintResources/StandardMacros.StandardMacros:WhileLoop"',GraphBlueprint=/Script/Engine.Blueprint'"/Engine/EditorBlueprintResources/StandardMacros.StandardMacros"',GraphGuid=FA93B260444755CD702C21A123E9A987) + NodePosX=-560 + NodePosY=304 + NodeGuid=3F7D9F61E00A4E5CA14FD89320152E4C + CustomProperties Pin (PinId=07FE7CEDC21341B7B4E0D40D5CF1E57B,PinName="execute",PinType.PinCategory="exec",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=836339BCD71F4D9FA0894B3447A5E8E1,PinName="Condition",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=6A7A1020DE2B4B33B9E82F975D24F144,PinName="LoopBody",Direction="EGPD_Output",PinType.PinCategory="exec",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=B5207FF901074E8CB5152721DB154529,PinName="Completed",Direction="EGPD_Output",PinType.PinCategory="exec",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: [14.5, 6], + color: Configuration.nodeColors.gray, + icon: SVGIcon.loop, + pins: 4, + pinNames: ["Condition", "Loop Body", "Completed"], + delegate: false, + development: false, +}) diff --git a/tests/nodes.spec.js b/tests/nodes.spec.js deleted file mode 100644 index 1f02567..0000000 --- a/tests/nodes.spec.js +++ /dev/null @@ -1,192 +0,0 @@ -import Utility from "../js/Utility.js" -import Configuration from "./../js/Configuration.js" -import { expect, test } from "./fixtures/test.js" -import EventNodes from "./resources/EventNodes.js" -import FlowControlNodes from "./resources/FlowControlNodes.js" -import InputNodes from "./resources/InputNodes.js" -import IssuesNodes1 from "./resources/IssuesNodes1.js" -import LegacyNodes from "./resources/LegacyNodes.js" -import MaterialNodes from "./resources/MaterialNodes.js" -import NiagaraNodes from "./resources/NiagaraNodes.js" -import OperationsNodes from "./resources/OperationsNodes.js" -import OtherNodes from "./resources/OtherNodes.js" -import PCGNodes from "./resources/PCGNodes.js" - -const nodeTests = [ - ...EventNodes.get(), - ...FlowControlNodes.get(), - ...InputNodes.get(), - ...IssuesNodes1.get(), - ...LegacyNodes.get(), - ...MaterialNodes.get(), - ...NiagaraNodes.get(), - ...OperationsNodes.get(), - ...OtherNodes.get(), - ...PCGNodes.get(), -] - -const batchSize = 16 - -let i = 0 -while (i < nodeTests.length) { - - test.describe("Batch " + Math.floor(i / batchSize), () => { - test.describe.configure({ mode: "parallel" }) - do { - const nodeTest = nodeTests[i] - test.describe(nodeTest.name, () => { - - test.describe.configure({ mode: "serial" }) - test.beforeAll(async ({ blueprintPage }) => { - await blueprintPage.removeNodes() - await blueprintPage.paste(nodeTest.value) - }) - - nodeTest.title ??= nodeTest.name - - if (nodeTest.color) { - test( - `${nodeTest.name}: Has correct color`, - async ({ blueprintPage }) => { - expect( - await blueprintPage.node.evaluate(node => node.entity.nodeColor().toString()) - ).toBe(nodeTest.color.toString()) - } - ) - } - - test( - `${nodeTest.name}: Has correct delegate`, - async ({ blueprintPage }) => { - const delegate = blueprintPage.blueprintLocator.locator( - 'ueb-node .ueb-node-top ueb-pin[data-type="delegate"]' - ) - if (nodeTest.delegate) { - await expect(delegate).toBeVisible() - } else { - await expect(delegate).toBeHidden() - } - } - ) - - test( - `${nodeTest.name}: Has title ${nodeTest.title}`, - async ({ blueprintPage }) => expect( - await blueprintPage.node.evaluate(node => node.nodeDisplayName) - ).toBe(nodeTest.title) - ) - - if (nodeTest.subtitle) { - test( - `${nodeTest.name}: Has expected subtitle ${nodeTest.subtitle}`, - async ({ blueprintPage }) => await expect(blueprintPage.node.locator(".ueb-node-subtitle-text")) - .toHaveText(nodeTest.subtitle, { useInnerText: true }) - ) - } - - if (nodeTest.size) { - test( - `${nodeTest.name}: Has approximately the expected size`, - async ({ blueprintPage }) => { - const expectedSize = await blueprintPage.node.evaluate( - (node, gridSize) => { - const bounding = node.getBoundingClientRect() - const expectedSize = [bounding.width / gridSize, bounding.height / gridSize] - return expectedSize - }, - Configuration.gridSize - ) - expect(Math.abs(nodeTest.size[0] - expectedSize[0])).toBeLessThanOrEqual(1.5) - expect(Math.abs(nodeTest.size[1] - expectedSize[1])).toBeLessThanOrEqual(1.5) - if ( - Math.abs(nodeTest.size[0] - expectedSize[0]) > 0.6 - || Math.abs(nodeTest.size[1] - expectedSize[1]) > 0.6 - ) { - console.error(`Node "${nodeTest.name}" size does not match`) - } - } - ) - } - - if (nodeTest.icon !== undefined) { - test( - `${nodeTest.name}: Has the correct icon`, - async ({ blueprintPage }) => expect( - await blueprintPage.node.evaluate( - node => node.entity.nodeIcon()?.strings.join("") - ) - ).toBe(nodeTest.icon?.strings.join("")) - ) - } - - if (nodeTest.pins !== undefined) { - test( - `${nodeTest.name}: Has ${nodeTest.pins} pins`, - async ({ blueprintPage }) => expect( - await blueprintPage.node.evaluate( - node => node.querySelectorAll("ueb-pin").length - ) - ).toBe(nodeTest.pins) - ) - } - - if (nodeTest.pinNames) { - test( - `${nodeTest.name}: Has correct pin names`, - async ({ blueprintPage }) => { - const innerTexts = await blueprintPage.node.locator(".ueb-pin-content .ueb-pin-name").allInnerTexts() - const pinNames = innerTexts.map(v => v.trim()).filter(v => v.length > 0) - expect(pinNames).toStrictEqual(nodeTest.pinNames) - } - ) - } - - test( - `${nodeTest.name}: Expected development`, - async ({ blueprintPage }) => expect( - await blueprintPage.node.evaluate(node => node.entity.isDevelopmentOnly()) - ).toBe(nodeTest.development) - ) - - test( - `${nodeTest.name}: Maintains the order of attributes`, - async ({ blueprintPage }) => { - const actualSerialization = await blueprintPage.getSerializedNodes() - const expectedWords = nodeTest.value - .split("\n") - .map(row => row.match(/\s*("?\w+(\s+\w+)*).+/)?.[1]) - .filter(v => v?.length > 0) - expect(actualSerialization).toMatch(Utility.getFirstWordOrder(expectedWords)) - } - ) - - if (nodeTest.variadic) { - test( - `${nodeTest.name}: Can add new pins`, - async ({ blueprintPage }) => { - const variadic = blueprintPage.node.getByText("Add pin") - await expect(variadic).toBeVisible() - await variadic.hover() - await variadic.click() - expect(await blueprintPage.node.locator("ueb-pin").all()).toHaveLength(nodeTest.pins + 1) - await variadic.blur() - } - ) - } - - if (nodeTest.additionalTest) { - test( - `${nodeTest.name}: Additional tests`, - async ({ blueprintPage }) => - nodeTest.additionalTest( - blueprintPage.node, - await blueprintPage.node.locator("ueb-pin").all(), - blueprintPage, - ) - ) - } - }) - ++i - } while (i < nodeTests.length && i % batchSize !== 0) - }) -} diff --git a/tests/resources/EventNodes.js b/tests/resources/EventNodes.js deleted file mode 100644 index 867c252..0000000 --- a/tests/resources/EventNodes.js +++ /dev/null @@ -1,199 +0,0 @@ -import Configuration from "../../js/Configuration.js" -import SVGIcon from "../../js/SVGIcon.js" -import NodeTests from "./NodeTests.js" - -export default class EventNodes extends NodeTests { - static { - this.set([ - { - name: "MoveCharacterRandomLocation", - subtitle: "Custom Event", - value: String.raw` - Begin Object Class=/Script/BlueprintGraph.K2Node_CustomEvent Name="K2Node_CustomEvent_4" - CustomFunctionName="MoveCharacterRandomLocation" - NodePosX=-368 - NodePosY=64 - NodeGuid=9C3BF2E5A27C4B45825C025A224639EA - CustomProperties Pin (PinId=B563D2CC4FC67B5F348BE18F59F694A4,PinName="OutputDelegate",Direction="EGPD_Output",PinType.PinCategory="delegate",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(MemberParent=/Script/Engine.BlueprintGeneratedClass'"/Temp/Untitled_1.Untitled_C"',MemberName="MoveCharacterRandomLocation",MemberGuid=9C3BF2E5A27C4B45825C025A224639EA),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=0DE0B9A2469DB01A69BD5C8BB17D15BB,PinName="then",Direction="EGPD_Output",PinType.PinCategory="exec",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_Knot_8 C5BBC59C45ACF577B59616A9D79986B3,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - End Object - `, - size: [16, 5], - color: Configuration.nodeColors.red, - icon: SVGIcon.event, - pins: 2, - delegate: true, - development: false, - }, - { - name: "OnComponentBeginOverlap_Event", - subtitle: "Custom Event", - value: String.raw` - Begin Object Class=/Script/BlueprintGraph.K2Node_CustomEvent Name="K2Node_CustomEvent_0" - CustomFunctionName="OnComponentBeginOverlap_Event" - NodePosX=-96 - NodePosY=608 - NodeGuid=6BB0872D81764DAD9270E32E66A4E01C - CustomProperties Pin (PinId=DB4E85FC86FD4EC784FFC45C77BB895C,PinName="OutputDelegate",Direction="EGPD_Output",PinType.PinCategory="delegate",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(MemberParent=/Script/Engine.BlueprintGeneratedClass'"/Temp/Untitled_1.Untitled_C"',MemberName="OnComponentBeginOverlap_Event",MemberGuid=6BB0872D81764DAD9270E32E66A4E01C),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_AssignDelegate_0 D1C3E8BFC4A54F62B5A566D72FAF5363,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=FE89EFE7B4AF4461B4969FF6AA4E46FC,PinName="then",Direction="EGPD_Output",PinType.PinCategory="exec",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=0253993B7559437ABDA8A4FFE6EC2CA6,PinName="OverlappedComponent",Direction="EGPD_Output",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/Engine.PrimitiveComponent"',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=E1538C05015F49D3A3927FFCB700ACB4,PinName="OtherActor",Direction="EGPD_Output",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/Engine.Actor"',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=DA531C332C9041CCBBE58A42C94A0BA3,PinName="OtherComp",Direction="EGPD_Output",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/Engine.PrimitiveComponent"',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=C957CCBA488341E787645E4C886DE2F2,PinName="OtherBodyIndex",Direction="EGPD_Output",PinType.PinCategory="int",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=03154C6B4A784B3E82393A3A66803DEF,PinName="bFromSweep",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=FC68A0EBC0FC4A27BECAB79E49D860BD,PinName="SweepResult",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/Engine.HitResult"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=True,PinType.bIsConst=True,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties UserDefinedPin (PinName="OverlappedComponent",PinType=(PinCategory="object",PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/Engine.PrimitiveComponent"'),DesiredPinDirection=EGPD_Output) - CustomProperties UserDefinedPin (PinName="OtherActor",PinType=(PinCategory="object",PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/Engine.Actor"'),DesiredPinDirection=EGPD_Output) - CustomProperties UserDefinedPin (PinName="OtherComp",PinType=(PinCategory="object",PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/Engine.PrimitiveComponent"'),DesiredPinDirection=EGPD_Output) - CustomProperties UserDefinedPin (PinName="OtherBodyIndex",PinType=(PinCategory="int"),DesiredPinDirection=EGPD_Output) - CustomProperties UserDefinedPin (PinName="bFromSweep",PinType=(PinCategory="bool"),DesiredPinDirection=EGPD_Output) - CustomProperties UserDefinedPin (PinName="SweepResult",PinType=(PinCategory="struct",PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/Engine.HitResult"',bIsReference=True,bIsConst=True),DesiredPinDirection=EGPD_Output) - End Object - `, - size: [16.5, 16], - color: Configuration.nodeColors.red, - icon: SVGIcon.event, - pins: 8, - pinNames: [ - "Overlapped Component", - "Other Actor", - "Other Comp", - "Other Body Index", - "From Sweep", - "Sweep Result", - ], - delegate: true, - development: false, - }, - { - name: "Call AS!%sasdAdsadDD", - value: String.raw` - Begin Object Class=/Script/BlueprintGraph.K2Node_CallDelegate Name="K2Node_CallDelegate_0" ExportPath=/Script/BlueprintGraph.K2Node_CallDelegate'"/PCG/BP_Elements/PCGAsset.PCGAsset:EventGraph.K2Node_CallDelegate_0"' - "DelegateReference"=(MemberName="AS!%sasdAdsadDD",MemberGuid=FB6F7CD342716A4FA22AA6AD6E6B7ED9,bSelfContext=True) - "NodePosX"=-176 - "NodePosY"=368 - "NodeGuid"=DE76D7A748D78DF77131B0AE166442A6 - CustomProperties Pin (PinId=C329158B42D4E4DA1CAEF7A04ED77100,PinName="execute",PinType.PinCategory="exec",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=8D92F70C46C94C389AAC3E87191AB46A,PinName="then",Direction="EGPD_Output",PinType.PinCategory="exec",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=88182FCB4DE7B6D80AD1B79906069691,PinName="self",PinFriendlyName=NSLOCTEXT("K2Node", "BaseMCDelegateSelfPinName", "Target"),PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/Engine.BlueprintGeneratedClass'"/PCG/BP_Elements/PCGAsset.PCGAsset_C"',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 - `, - color: Configuration.nodeColors.blue, - icon: SVGIcon.node, - pins: 3, - pinNames: ["Target"], - delegate: false, - development: false, - }, - { - name: "Bind Event to On Actor Hit", - value: String.raw` - Begin Object Class=/Script/BlueprintGraph.K2Node_AddDelegate Name="K2Node_AddDelegate_0" ExportPath="/Script/BlueprintGraph.K2Node_AddDelegate'/Game/Examples/MazeSolver/Blueprints/MazeSolverTrainer.MazeSolverTrainer:EventGraph.K2Node_AddDelegate_0'" - DelegateReference=(MemberParent="/Script/CoreUObject.Class'/Script/Engine.Actor'",MemberName="OnActorHit") - NodePosX=256 - NodePosY=-48 - NodeGuid=A94C879148610E75EBAC94807E94F5DD - CustomProperties Pin (PinId=252C72EA45F1370E8B00FFB6D5C87B3A,PinName="execute",PinType.PinCategory="exec",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_Event_0 F135CD17D40347269BBBD101437B6AF0,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=66AE85F346F350F62B127B97DFC49563,PinName="then",Direction="EGPD_Output",PinType.PinCategory="exec",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=D7358C004BE0EF6651DE69A7346E77D4,PinName="self",PinFriendlyName=NSLOCTEXT("K2Node", "BaseMCDelegateSelfPinName", "Target"),PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.Class'/Script/Engine.Actor'",PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_CallFunction_0 EDE2516A4F187C93CBF2D7AE88066240,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=180DE95D4FD5AF2404F1CB80F0FBD29E,PinName="Delegate",PinFriendlyName=NSLOCTEXT("K2Node", "PinFriendlyDelegatetName", "Event"),PinType.PinCategory="Delegate",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(MemberParent="/Script/CoreUObject.Package'/Script/Engine'",MemberName="ActorHitSignature__DelegateSignature"),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=True,PinType.bIsConst=True,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: [13.5, 8], - color: Configuration.nodeColors.blue, - icon: SVGIcon.node, - pins: 4, - pinNames: ["Target", "Event"], - delegate: false, - development: false, - }, - { - name: "Bind Event to Modified Event Dynamic", - value: String.raw` - Begin Object Class=/Script/BlueprintGraph.K2Node_AddDelegate Name="K2Node_AddDelegate_1" ExportPath="/Script/BlueprintGraph.K2Node_AddDelegate'/Engine/Maps/Templates/NewWorld.NewWorld:PersistentLevel.NewWorld.EventGraph.K2Node_AddDelegate_1'" - DelegateReference=(MemberParent="/Script/CoreUObject.Class'/Script/Engine.AnimDataModel'",MemberName="ModifiedEventDynamic") - NodePosX=1920 - NodePosY=-384 - NodeGuid=9F798056B9CB474A9EE2FE88063D4D20 - CustomProperties Pin (PinId=4D2AF198B99A445C925AA2A8380C533E,PinName="execute",PinType.PinCategory="exec",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=46363EE0231F4EA186E029977F586416,PinName="then",Direction="EGPD_Output",PinType.PinCategory="exec",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=D3AD4B9A6EA745BD8EC70EE4B33FDB44,PinName="self",PinFriendlyName=NSLOCTEXT("K2Node", "BaseMCDelegateSelfPinName", "Target"),PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.Class'/Script/Engine.AnimDataModel'",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=48F1FF2C45A147C7B390B9D1A35FC3A2,PinName="Delegate",PinFriendlyName=NSLOCTEXT("K2Node", "PinFriendlyDelegatetName", "Event"),PinType.PinCategory="delegate",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(MemberParent="/Script/CoreUObject.Package'/Script/Engine'",MemberName="AnimDataModelModifiedDynamicEvent__DelegateSignature"),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=True,PinType.bIsConst=True,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: [18, 8], - color: Configuration.nodeColors.blue, - icon: SVGIcon.node, - pins: 4, - pinNames: ["Target", "Event"], - delegate: false, - development: false, - }, - { - name: "Unbind all Events from On Scroll Bar Visibility Changed", - value: String.raw` - Begin Object Class=/Script/BlueprintGraph.K2Node_ClearDelegate Name="K2Node_ClearDelegate_1" ExportPath="/Script/BlueprintGraph.K2Node_ClearDelegate'/Engine/Maps/Templates/NewWorld.NewWorld:PersistentLevel.NewWorld.EventGraph.K2Node_ClearDelegate_1'" - DelegateReference=(MemberParent="/Script/CoreUObject.Class'/Script/UMG.ScrollBox'",MemberName="OnScrollBarVisibilityChanged") - NodePosX=2688 - NodePosY=-640 - NodeGuid=48B5357C4A6344B685D58484C8CA6100 - CustomProperties Pin (PinId=0186059A7F58440D9CDE09CF2E4211BE,PinName="execute",PinType.PinCategory="exec",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=CB57C7A59EC4491EAC932C4AF3B43254,PinName="then",Direction="EGPD_Output",PinType.PinCategory="exec",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=C088A6049D2C4A238885632C5D33C490,PinName="self",PinFriendlyName=NSLOCTEXT("K2Node", "BaseMCDelegateSelfPinName", "Target"),PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.Class'/Script/UMG.ScrollBox'",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: [24, 6], - color: Configuration.nodeColors.blue, - icon: SVGIcon.node, - pins: 3, - pinNames: ["Target"], - delegate: false, - development: false, - }, - { - name: "Unbind Event from On Pre Initialize", - value: String.raw` - Begin Object Class=/Script/BlueprintGraph.K2Node_RemoveDelegate Name="K2Node_RemoveDelegate_0" ExportPath="/Script/BlueprintGraph.K2Node_RemoveDelegate'/Engine/Maps/Templates/NewWorld.NewWorld:PersistentLevel.NewWorld.EventGraph.K2Node_RemoveDelegate_0'" - DelegateReference=(MemberParent="/Script/CoreUObject.Class'/Script/ControlRig.ControlRigComponent'",MemberName="OnPreInitializeDelegate") - NodePosX=2688 - NodePosY=-512 - NodeGuid=68504A8520394A2F9B8AACFD2F457D9E - CustomProperties Pin (PinId=1D7D2FBFEB344721B4EE9D149F615BBD,PinName="execute",PinType.PinCategory="exec",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=2AB22AF068E943BEB99DAAE276EA0C9A,PinName="then",Direction="EGPD_Output",PinType.PinCategory="exec",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=42FC9475607C479097689D14713CCC43,PinName="self",PinFriendlyName=NSLOCTEXT("K2Node", "BaseMCDelegateSelfPinName", "Target"),PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.Class'/Script/ControlRig.ControlRigComponent'",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=7729342B171248D8A6EF908ED8E1D8B7,PinName="Delegate",PinFriendlyName=NSLOCTEXT("K2Node", "PinFriendlyDelegatetName", "Event"),PinType.PinCategory="delegate",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(MemberParent="/Script/CoreUObject.Package'/Script/ControlRig'",MemberName="ControlRigComponentDelegate__DelegateSignature"),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=True,PinType.bIsConst=True,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: [16.5, 8], - color: Configuration.nodeColors.blue, - icon: SVGIcon.node, - pins: 4, - pinNames: ["Target", "Event"], - delegate: false, - development: false, - }, - { - name: "Bind Event to On Pre Initialize", - value: String.raw` - Begin Object Class=/Script/BlueprintGraph.K2Node_AddDelegate Name="K2Node_AddDelegate_4" ExportPath="/Script/BlueprintGraph.K2Node_AddDelegate'/Engine/Maps/Templates/NewWorld.NewWorld:PersistentLevel.NewWorld.EventGraph.K2Node_AddDelegate_4'" - DelegateReference=(MemberParent="/Script/CoreUObject.Class'/Script/ControlRig.ControlRigComponent'",MemberName="OnPreInitializeDelegate") - NodePosX=1760 - NodePosY=-688 - NodeGuid=12A5D8F5736842F7B70C88C26D36B422 - CustomProperties Pin (PinId=CF6740C1F0A4487E91E6C33CA32F78B7,PinName="execute",PinType.PinCategory="exec",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=AD533F241A0B44A68FCDFDFE2F698A95,PinName="then",Direction="EGPD_Output",PinType.PinCategory="exec",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=6E432C9EE60143F4890F0BDC6BCF4637,PinName="self",PinFriendlyName=NSLOCTEXT("K2Node", "BaseMCDelegateSelfPinName", "Target"),PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.Class'/Script/ControlRig.ControlRigComponent'",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=8C762AAFD03F4B89A4150D17A3C20598,PinName="Delegate",PinFriendlyName=NSLOCTEXT("K2Node", "PinFriendlyDelegatetName", "Event"),PinType.PinCategory="delegate",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(MemberParent="/Script/CoreUObject.Package'/Script/ControlRig'",MemberName="ControlRigComponentDelegate__DelegateSignature"),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=True,PinType.bIsConst=True,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: [15, 8], - color: Configuration.nodeColors.blue, - icon: SVGIcon.node, - pins: 4, - pinNames: ["Target", "Event"], - delegate: false, - development: false, - }, - ]) - } -} diff --git a/tests/resources/FlowControlNodes.js b/tests/resources/FlowControlNodes.js deleted file mode 100644 index 8880559..0000000 --- a/tests/resources/FlowControlNodes.js +++ /dev/null @@ -1,569 +0,0 @@ -import Configuration from "../../js/Configuration.js" -import SVGIcon from "../../js/SVGIcon.js" -import NodeTests from "./NodeTests.js" - -export default class FlowControlNodes extends NodeTests { - static { - this.set([ - { - name: "Branch", - value: String.raw` - Begin Object Class=/Script/BlueprintGraph.K2Node_IfThenElse Name="K2Node_IfThenElse_3" - NodePosX=-864 - NodePosY=-112 - NodeGuid=394F6A9DE87E4DAF8815B0BC582F67F4 - CustomProperties Pin (PinId=370DE2594FC6D3DF81672491D09FA4F2,PinName="execute",PinType.PinCategory="exec",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_ComponentBoundEvent_2 CA668D354E07DD5D3FDF828A8DCB31E2,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=CC13602F47301B384984DD90F31BBF44,PinName="Condition",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,DefaultValue="true",AutogeneratedDefaultValue="true",LinkedTo=(K2Node_VariableGet_6 67589E5F4FC4B9ADA6B13EA1FE75D4BD,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=5144C992425351C9738579B61BF10CFB,PinName="then",PinFriendlyName=NSLOCTEXT("K2Node", "true", "true"),Direction="EGPD_Output",PinType.PinCategory="exec",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=79F953C54BDCD44353369F803937AC7C,PinName="else",PinFriendlyName=NSLOCTEXT("K2Node", "false", "false"),Direction="EGPD_Output",PinType.PinCategory="exec",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_IfThenElse_22 2937CFDB4A1C853A34A3B9A67E534029,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - End Object - `, - size: [12.5, 6], - color: Configuration.nodeColors.gray, - icon: SVGIcon.branchNode, - pins: 4, - pinNames: ["Condition", "True", "False"], - delegate: false, - development: false, - }, - { - name: "For Each Loop", - value: String.raw` - Begin Object Class=/Script/BlueprintGraph.K2Node_MacroInstance Name="K2Node_MacroInstance_1" - MacroGraphReference=(MacroGraph=/Script/Engine.EdGraph'"/Engine/EditorBlueprintResources/StandardMacros.StandardMacros:ForEachLoop"',GraphBlueprint=/Script/Engine.Blueprint'"/Engine/EditorBlueprintResources/StandardMacros.StandardMacros"',GraphGuid=99DBFD5540A796041F72A5A9DA655026) - NodePosX=-1216 - NodePosY=96 - NodeGuid=DC35C020857E45708D1A7ED3695C0275 - CustomProperties Pin (PinId=98E5694575854D738E59826A4192E63A,PinName="Exec",PinType.PinCategory="exec",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=4586F50C416540779AEF16C701119F59,PinName="Array",PinType.PinCategory="wildcard",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=Array,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=612E0159522948FE9702A36B283523D1,PinName="LoopBody",Direction="EGPD_Output",PinType.PinCategory="exec",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=2E365C79D539495FB537CABA9D37F15F,PinName="Array Element",Direction="EGPD_Output",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=5797F5E5CBCA47E1B9A39DA8A3893D3D,PinName="Array Index",Direction="EGPD_Output",PinType.PinCategory="int",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=6B0EBB7A7BD547E6A3C22BC7F782E742,PinName="Completed",Direction="EGPD_Output",PinType.PinCategory="exec",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: [12, 10], - color: Configuration.nodeColors.gray, - icon: SVGIcon.forEachLoop, - pins: 6, - pinNames: ["Exec", "Array", "Loop Body", "Array Element", "Array Index", "Completed"], - delegate: false, - development: false, - }, - { - name: "For Each Loop with Break", - value: String.raw` - Begin Object Class=/Script/BlueprintGraph.K2Node_MacroInstance Name="K2Node_MacroInstance_2" - MacroGraphReference=(MacroGraph=/Script/Engine.EdGraph'"/Engine/EditorBlueprintResources/StandardMacros.StandardMacros:ForEachLoopWithBreak"',GraphBlueprint=/Script/Engine.Blueprint'"/Engine/EditorBlueprintResources/StandardMacros.StandardMacros"',GraphGuid=F07560274C5742E391E84B8F394CFB36) - NodePosX=-1136 - NodePosY=-272 - NodeGuid=008F14B9BBA5487F8AE49CD1C8630069 - CustomProperties Pin (PinId=4456C17B27D54BE786BF4FF61C25DE9D,PinName="Exec",PinType.PinCategory="exec",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=B6A7B986B2DC4BC0ADB9961E2741EA9D,PinName="Array",PinType.PinCategory="wildcard",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=Array,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=FB6676D0482D418E9E02F303438FC999,PinName="Break",PinType.PinCategory="exec",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=DF7D57F4846F49D19DBBA1EF1555B8E3,PinName="LoopBody",Direction="EGPD_Output",PinType.PinCategory="exec",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=8938553CAE344B4B9FE849C020278383,PinName="Array Element",Direction="EGPD_Output",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=3870EB0F61D842F789DA17E4DC1D66FC,PinName="Array Index",Direction="EGPD_Output",PinType.PinCategory="int",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=ABDAB2F741CF47A4A2E49D0F37A22901,PinName="Completed",Direction="EGPD_Output",PinType.PinCategory="exec",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: [13, 10], - color: Configuration.nodeColors.gray, - icon: SVGIcon.forEachLoop, - pins: 7, - pinNames: ["Exec", "Array", "Break", "Loop Body", "Array Element", "Array Index", "Completed"], - delegate: false, - development: false, - }, - { - name: "Reverse For Each Loop", - value: String.raw` - Begin Object Class=/Script/BlueprintGraph.K2Node_MacroInstance Name="K2Node_MacroInstance_3" - MacroGraphReference=(MacroGraph=/Script/Engine.EdGraph'"/Engine/EditorBlueprintResources/StandardMacros.StandardMacros:ReverseForEachLoop"',GraphBlueprint=/Script/Engine.Blueprint'"/Engine/EditorBlueprintResources/StandardMacros.StandardMacros"',GraphGuid=6DB5FE084A27CDF3569C7980D75D7E14) - ResolvedWildcardType=(PinCategory="wildcard") - NodePosX=-560 - NodePosY=-256 - NodeGuid=695A57C9EA744959BD630B5A6843125C - CustomProperties Pin (PinId=82F4FB580F714AA8BC05E24CBEA36A39,PinName="Exec",PinType.PinCategory="exec",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=2FDD4BF2642849E0BD7B5912F90B4193,PinName="Array",PinType.PinCategory="wildcard",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=Array,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_MacroInstance_2 8938553CAE344B4B9FE849C020278383,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=68B4210D1454406988CE323FE8C1E694,PinName="LoopBody",Direction="EGPD_Output",PinType.PinCategory="exec",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=687A39ADBA1C40B58DB4D4A98C68BB30,PinName="ArrayIndex",Direction="EGPD_Output",PinType.PinCategory="int",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=5E11F11E5F9B4E0DA2924E7DB49F01F7,PinName="ArrayElement",Direction="EGPD_Output",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=BD41530556AD4731B63C13B1183CD844,PinName="Completed",Direction="EGPD_Output",PinType.PinCategory="exec",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: [12, 10], - color: Configuration.nodeColors.gray, - icon: SVGIcon.macro, - pins: 6, - pinNames: ["Exec", "Array", "Loop Body", "Array Index", "Array Element", "Completed"], - delegate: false, - development: false, - }, - { - name: "For Each EAudioComponentPlayState", - value: String.raw` - Begin Object Class=/Script/BlueprintGraph.K2Node_ForEachElementInEnum Name="K2Node_ForEachElementInEnum_0" - Enum=/Script/CoreUObject.Enum'"/Script/Engine.EAudioComponentPlayState"' - NodePosX=-992 - NodePosY=320 - AdvancedPinDisplay=Shown - NodeGuid=706F82B7815D4137AE662D70A97A62C3 - CustomProperties Pin (PinId=6F89188317294812A79E72CFB15C3DDF,PinName="execute",PinType.PinCategory="exec",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=B9078293CD49417AAD1145A636C63C2E,PinName="SkipHidden",PinToolTip="Skip Hidden\nBoolean\n\nControls whether or not the loop will skip over hidden enumeration values.",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,DefaultValue="true",AutogeneratedDefaultValue="true",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=True,bOrphanedPin=False,) - CustomProperties Pin (PinId=5545D12AE949466C98B743E1C736812C,PinName="LoopBody",Direction="EGPD_Output",PinType.PinCategory="exec",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=1D66C9B98B8E4C6FBFD39B33C10380EA,PinName="EnumValue",Direction="EGPD_Output",PinType.PinCategory="byte",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Enum'"/Script/Engine.EAudioComponentPlayState"',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=D255092C0E544047BB60DD4A8F5333D9,PinName="then",PinFriendlyName=NSLOCTEXT("K2Node", "Completed", "Completed"),Direction="EGPD_Output",PinType.PinCategory="exec",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: [17.5, 9], - color: Configuration.nodeColors.blue, - icon: SVGIcon.loop, - pins: 5, - pinNames: ["Skip Hidden", "Loop Body", "Enum Value", "Completed"], - delegate: false, - development: false, - }, - { - name: "While Loop", - value: String.raw` - Begin Object Class=/Script/BlueprintGraph.K2Node_MacroInstance Name="K2Node_MacroInstance_4" - MacroGraphReference=(MacroGraph=/Script/Engine.EdGraph'"/Engine/EditorBlueprintResources/StandardMacros.StandardMacros:WhileLoop"',GraphBlueprint=/Script/Engine.Blueprint'"/Engine/EditorBlueprintResources/StandardMacros.StandardMacros"',GraphGuid=FA93B260444755CD702C21A123E9A987) - NodePosX=-560 - NodePosY=304 - NodeGuid=3F7D9F61E00A4E5CA14FD89320152E4C - CustomProperties Pin (PinId=07FE7CEDC21341B7B4E0D40D5CF1E57B,PinName="execute",PinType.PinCategory="exec",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=836339BCD71F4D9FA0894B3447A5E8E1,PinName="Condition",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=6A7A1020DE2B4B33B9E82F975D24F144,PinName="LoopBody",Direction="EGPD_Output",PinType.PinCategory="exec",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=B5207FF901074E8CB5152721DB154529,PinName="Completed",Direction="EGPD_Output",PinType.PinCategory="exec",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: [14.5, 6], - color: Configuration.nodeColors.gray, - icon: SVGIcon.loop, - pins: 4, - pinNames: ["Condition", "Loop Body", "Completed"], - delegate: false, - development: false, - }, - { - name: "Is Valid", - value: String.raw` - Begin Object Class=/Script/BlueprintGraph.K2Node_MacroInstance Name="K2Node_MacroInstance_0" - MacroGraphReference=(MacroGraph=/Script/Engine.EdGraph'"/Engine/EditorBlueprintResources/StandardMacros.StandardMacros:IsValid"',GraphBlueprint=/Script/Engine.Blueprint'"/Engine/EditorBlueprintResources/StandardMacros.StandardMacros"',GraphGuid=64422BCD430703FF5CAEA8B79A32AA65) - NodePosX=-656 - NodePosY=304 - NodeGuid=4CE17DC3398743D3A0DF641B28BA82FE - CustomProperties Pin (PinId=8E6B4EA9EF3D418A9017555312A36415,PinName="exec",PinType.PinCategory="exec",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=18F0CDCFCDFC49FC92EABDFD77FB2649,PinName="InputObject",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/CoreUObject.Object"',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=B4E31AA12E8D448C8A19F523C10F8527,PinName="Is Valid",Direction="EGPD_Output",PinType.PinCategory="exec",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=49E3CCDD6EBB46AE9B6FDFBC951E092C,PinName="Is Not Valid",Direction="EGPD_Output",PinType.PinCategory="exec",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: [18, 9], - color: Configuration.nodeColors.gray, - icon: SVGIcon.questionMark, - pins: 4, - pinNames: ["Exec", "Input Object", "Is Valid", "Is Not Valid"], - delegate: false, - development: false, - }, - { - name: "Multi Gate", - value: String.raw` - Begin Object Class=/Script/BlueprintGraph.K2Node_MultiGate Name="K2Node_MultiGate_2" - NodePosX=-96 - NodePosY=-160 - NodeGuid=8D5767632F6C462B928E7F9A47E84AF3 - CustomProperties Pin (PinId=61334592A1B647A7888EDF804247FF70,PinName="execute",PinType.PinCategory="exec",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=39200141C5D0415B825C28E3EC01A3F1,PinName="Out 0",Direction="EGPD_Output",PinType.PinCategory="exec",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=EF36C23B68A44578B518B963E636D33C,PinName="Out 1",Direction="EGPD_Output",PinType.PinCategory="exec",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=92FADDC1B07C45AC8BEF2FE42E13A638,PinName="Reset",PinType.PinCategory="exec",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=363311761BC8401B8B26AD4B2D255749,PinName="IsRandom",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=6F24605AD128461BB5652884D40E61E3,PinName="Loop",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=E547C9E4961A43AD944E6877C2FF44D6,PinName="StartIndex",PinType.PinCategory="int",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,DefaultValue="-1",AutogeneratedDefaultValue="-1",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - End Object - `, - size: [13.5, 12.5], - color: Configuration.nodeColors.gray, - icon: SVGIcon.sequence, - pins: 7, - pinNames: ["Reset", "Is Random", "Loop", "Start Index", "Out 0", "Out 1"], - delegate: false, - development: false, - variadic: true, - }, - { - name: "Do Once", - value: String.raw` - Begin Object Class=/Script/BlueprintGraph.K2Node_MacroInstance Name="K2Node_MacroInstance_1" - MacroGraphReference=(MacroGraph=/Script/Engine.EdGraph'"/Engine/EditorBlueprintResources/StandardMacros.StandardMacros:DoOnce"',GraphBlueprint=/Script/Engine.Blueprint'"/Engine/EditorBlueprintResources/StandardMacros.StandardMacros"',GraphGuid=1281F54248A2ECB5B8B2C5B24AE6FDF4) - NodePosX=-416 - NodePosY=-112 - NodeGuid=A1831A1B85EF4E568E766FE3A3BCC5CD - CustomProperties Pin (PinId=5C24D82D7B084DFB841D17E5DF1CD8CF,PinName="execute",PinType.PinCategory="exec",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=27242FC0B565448396C6A2DCD6BEDBD1,PinName="Reset",PinType.PinCategory="exec",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=A8C0EB54974741248EA0B7B97FAC44DE,PinName="Start Closed",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,DefaultValue="true",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=3DE1FC03BFCD4ACF9AC7B99B89CEF465,PinName="Completed",Direction="EGPD_Output",PinType.PinCategory="exec",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_MultiGate_2 92FADDC1B07C45AC8BEF2FE42E13A638,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - End Object - `, - size: [15, 8], - color: Configuration.nodeColors.gray, - icon: SVGIcon.doOnce, - pins: 4, - pinNames: ["Reset", "Start Closed", "Completed"], - delegate: false, - development: false, - }, - { - name: "Switch on EConstantQFFTSizeEnum", - value: String.raw` - Begin Object Class=/Script/BlueprintGraph.K2Node_SwitchEnum Name="K2Node_SwitchEnum_0" - Enum=/Script/CoreUObject.Enum'"/Script/AudioSynesthesia.EConstantQFFTSizeEnum"' - EnumEntries(0)="Min" - EnumEntries(1)="XXSmall" - EnumEntries(2)="XSmall" - EnumEntries(3)="Small" - EnumEntries(4)="Medium" - EnumEntries(5)="Large" - EnumEntries(6)="XLarge" - EnumEntries(7)="XXLarge" - EnumEntries(8)="Max" - NodePosX=16 - NodePosY=704 - AdvancedPinDisplay=Hidden - NodeGuid=9DCDC46C72FF47CE91F86A8045F0033E - CustomProperties Pin (PinId=1593030F27084BFD85F54D30CD32C5B8,PinName="execute",PinType.PinCategory="exec",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=17161A0F216A4F2FB64374200F51E83D,PinName="Selection",PinType.PinCategory="byte",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Enum'"/Script/AudioSynesthesia.EConstantQFFTSizeEnum"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="Min",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=B14C4298DE3249649D40116D72461E25,PinName="NotEqual_ByteByte",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/Engine.KismetMathLibrary"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultObject="/Script/Engine.Default__KismetMathLibrary",PersistentGuid=00000000000000000000000000000000,bHidden=True,bNotConnectable=True,bDefaultValueIsReadOnly=True,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=3B40821CA7C749BFAA558A8CF4402B55,PinName="Min",PinFriendlyName=NSLOCTEXT("UObjectDisplayNames", "EConstantQFFTSizeEnum.Min", "Min"),Direction="EGPD_Output",PinType.PinCategory="exec",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=B95FFACBCBD040B2AAB48011BC143625,PinName="XXSmall",PinFriendlyName=NSLOCTEXT("UObjectDisplayNames", "EConstantQFFTSizeEnum.XXSmall", "XXSmall"),Direction="EGPD_Output",PinType.PinCategory="exec",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=340171B1D59F422E96B45F9B1E11892A,PinName="XSmall",PinFriendlyName=NSLOCTEXT("UObjectDisplayNames", "EConstantQFFTSizeEnum.XSmall", "XSmall"),Direction="EGPD_Output",PinType.PinCategory="exec",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=BD0B6BF19D6C4BA487498C4A768FF500,PinName="Small",PinFriendlyName=NSLOCTEXT("UObjectDisplayNames", "EConstantQFFTSizeEnum.Small", "Small"),Direction="EGPD_Output",PinType.PinCategory="exec",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=58E2F332700044E88E8A591FFBE5DEDB,PinName="Medium",PinFriendlyName=NSLOCTEXT("UObjectDisplayNames", "EConstantQFFTSizeEnum.Medium", "Medium"),Direction="EGPD_Output",PinType.PinCategory="exec",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=94B36AB248454AE2884C39DDBBBE55E2,PinName="Large",PinFriendlyName=NSLOCTEXT("UObjectDisplayNames", "EConstantQFFTSizeEnum.Large", "Large"),Direction="EGPD_Output",PinType.PinCategory="exec",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=9F6110F3DE5D42B69DAEDD2BA1F83908,PinName="XLarge",PinFriendlyName=NSLOCTEXT("UObjectDisplayNames", "EConstantQFFTSizeEnum.XLarge", "XLarge"),Direction="EGPD_Output",PinType.PinCategory="exec",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=42A13039E2144897A11DC3A5B96CA8C4,PinName="XXLarge",PinFriendlyName=NSLOCTEXT("UObjectDisplayNames", "EConstantQFFTSizeEnum.XXLarge", "XXLarge"),Direction="EGPD_Output",PinType.PinCategory="exec",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=A064703325A4454EA72392A6C725CCC4,PinName="Max",PinFriendlyName=NSLOCTEXT("UObjectDisplayNames", "EConstantQFFTSizeEnum.Max", "Max"),Direction="EGPD_Output",PinType.PinCategory="exec",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,) - End Object - `, - size: [21, 9], - color: Configuration.nodeColors.lime, - icon: SVGIcon.switch, - pins: 11, - pinNames: ["Selection", "Min", "XXSmall", "XSmall", "Small", "Medium", "Large", "XLarge", "XXLarge", "Max"], - delegate: false, - development: false, - }, - { - name: "Flip Flop", - value: String.raw` - Begin Object Class=/Script/BlueprintGraph.K2Node_MacroInstance Name="K2Node_MacroInstance_5" - MacroGraphReference=(MacroGraph=/Script/Engine.EdGraph'"/Engine/EditorBlueprintResources/StandardMacros.StandardMacros:FlipFlop"',GraphBlueprint=/Script/Engine.Blueprint'"/Engine/EditorBlueprintResources/StandardMacros.StandardMacros"',GraphGuid=BFFFAAE4434E166F549665AD1AA89B60) - NodePosX=-48 - NodePosY=48 - NodeGuid=267CBD7BDA9243E0916C518E03EA7F8E - CustomProperties Pin (PinId=CF77C07A39514336BF1F33B71FA6F31A,PinType.PinCategory="exec",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=ABD456E3A9E541FCA849DBC7460338A0,PinName="A",Direction="EGPD_Output",PinType.PinCategory="exec",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=1E4BC9A55AA247CA8B9B2BA0F4159D07,PinName="B",Direction="EGPD_Output",PinType.PinCategory="exec",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=0A09A61366D142C8A0564EC3C173DB79,PinName="IsA",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, 8], - color: Configuration.nodeColors.gray, - icon: SVGIcon.flipflop, - pins: 4, - pinNames: ["A", "B", "Is A"], - delegate: false, - development: false, - }, - { - name: "Switch on Int", - value: String.raw` - Begin Object Class=/Script/BlueprintGraph.K2Node_SwitchInteger Name="K2Node_SwitchInteger_0" ExportPath=/Script/BlueprintGraph.K2Node_SwitchInteger'"/Temp/Untitled_1.Untitled_1:PersistentLevel.Untitled.EventGraph.K2Node_SwitchInteger_0"' - NodePosX=-976 - NodePosY=-208 - NodeGuid=7D1D44AEC61748948595579E4933DE01 - CustomProperties Pin (PinId=B7119DBD876E4E398D5463E9E8D25EFE,PinName="Default",Direction="EGPD_Output",PinType.PinCategory="exec",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=7EB587CEB10C4EBEBFCF3F6611CF9C01,PinName="execute",PinType.PinCategory="exec",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=7D90CED7751B46F7ADD3F9D15676441A,PinName="Selection",PinType.PinCategory="int",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,DefaultValue="0",AutogeneratedDefaultValue="0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=02817A0069B94F3A873C263E46A63B3E,PinName="NotEqual_IntInt",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/Engine.KismetMathLibrary"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultObject="/Script/Engine.Default__KismetMathLibrary",PersistentGuid=00000000000000000000000000000000,bHidden=True,bNotConnectable=True,bDefaultValueIsReadOnly=True,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=1C4A112E24004AC3A1960F3BF59E812B,PinName="0",Direction="EGPD_Output",PinType.PinCategory="exec",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=9E6A8E01BC714310841B8574240BA501,PinName="1",Direction="EGPD_Output",PinType.PinCategory="exec",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=978FFD75663A489895DC53A8B326CB5F,PinName="2",Direction="EGPD_Output",PinType.PinCategory="exec",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=349E7E6CDB62428EA386712CAC7EF798,PinName="3",Direction="EGPD_Output",PinType.PinCategory="exec",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=DEF18A0DAEF34E1FAC4FA0A5778C1A88,PinName="4",Direction="EGPD_Output",PinType.PinCategory="exec",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=9A642941C48546DDB9A882F3E394508C,PinName="5",Direction="EGPD_Output",PinType.PinCategory="exec",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=DC199B5D33804EAD80796CD80EFD7433,PinName="6",Direction="EGPD_Output",PinType.PinCategory="exec",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=AB4824D6FBFD40658A3C9140FE151DF3,PinName="7",Direction="EGPD_Output",PinType.PinCategory="exec",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=4FECE418AD1F407C9C2F9F0C13DCDB0D,PinName="8",Direction="EGPD_Output",PinType.PinCategory="exec",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=CF45C88AC0BD478991162D3382B5023D,PinName="9",Direction="EGPD_Output",PinType.PinCategory="exec",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=05C0A6F6CC7D45BDAA4BD32A0D57C4A1,PinName="10",Direction="EGPD_Output",PinType.PinCategory="exec",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=04ED677A3E3142C7BB5BC3E85E7623EA,PinName="11",Direction="EGPD_Output",PinType.PinCategory="exec",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=160F5EFF0F354543A639C2C59B7487E3,PinName="12",Direction="EGPD_Output",PinType.PinCategory="exec",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=BC1F119C3E33404787B7562401576DDA,PinName="13",Direction="EGPD_Output",PinType.PinCategory="exec",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=64A00EF9C0584A7FA3F9EE804DECCD26,PinName="14",Direction="EGPD_Output",PinType.PinCategory="exec",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=AFEB73E3A747474EB2034D7D59FC02D7,PinName="15",Direction="EGPD_Output",PinType.PinCategory="exec",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=E860933499D24ADF8FF9A1ECA2E4E94F,PinName="16",Direction="EGPD_Output",PinType.PinCategory="exec",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=7A918DA2394740A28C1250C1A7A061C9,PinName="17",Direction="EGPD_Output",PinType.PinCategory="exec",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: [13, 42], - color: Configuration.nodeColors.lime, - icon: SVGIcon.switch, - pins: 21, - pinNames: [ - "Selection", - "0", - "1", - "2", - "3", - "4", - "5", - "6", - "7", - "8", - "9", - "10", - "11", - "12", - "13", - "14", - "15", - "16", - "17", - "Default" - ], - delegate: false, - development: false, - variadic: true, - }, - { - name: "Switch on String", - value: String.raw` - Begin Object Class=/Script/BlueprintGraph.K2Node_SwitchString Name="K2Node_SwitchString_0" - PinNames(0)="Case_0" - PinNames(1)="Case_1" - PinNames(2)="Case_2" - NodePosX=-2240 - NodePosY=-384 - NodeGuid=7375BC78BF274EFFA76D29F8C2ED121E - CustomProperties Pin (PinId=99643F5A360E4D88AAFCD821E256574F,PinName="Default",Direction="EGPD_Output",PinType.PinCategory="exec",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=ACA3449DD6494C67BD30E4FAEFF01C2F,PinName="execute",PinType.PinCategory="exec",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=A210E336701C487F8CB425FA599DC5DE,PinName="Selection",PinType.PinCategory="string",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=15F56FC350CD47D7A54E4E077818C933,PinName="NotEqual_StriStri",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/Engine.KismetStringLibrary"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultObject="/Script/Engine.Default__KismetStringLibrary",PersistentGuid=00000000000000000000000000000000,bHidden=True,bNotConnectable=True,bDefaultValueIsReadOnly=True,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=D8C63349C83E4236A207A7DA51002328,PinName="Case_0",Direction="EGPD_Output",PinType.PinCategory="exec",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=5DFD70BF7F0C476FA5159979821FF45F,PinName="Case_1",Direction="EGPD_Output",PinType.PinCategory="exec",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=C902D54233354133B40C1CC8696C339F,PinName="Case_2",Direction="EGPD_Output",PinType.PinCategory="exec",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: [13, 12], - color: Configuration.nodeColors.lime, - icon: SVGIcon.switch, - pins: 6, - pinNames: ["Selection", "Case 0", "Case 1", "Case 2", "Default"], - delegate: false, - development: false, - variadic: true, - }, - { - name: "Switch on Gameplay Tag", - value: String.raw` - Begin Object Class=/Script/GameplayTagsEditor.GameplayTagsK2Node_SwitchGameplayTag Name="GameplayTagsK2Node_SwitchGameplayTag_0" - PinTags(14)=() - PinNames(0)="Case_0" - PinNames(1)="Case_1" - PinNames(2)="Case_2" - PinNames(3)="Case_3" - PinNames(4)="Case_4" - PinNames(5)="Case_5" - PinNames(6)="Case_6" - PinNames(7)="Case_7" - PinNames(8)="Case_8" - PinNames(9)="Case_9" - PinNames(10)="Case_10" - PinNames(11)="Case_11" - PinNames(12)="Case_12" - PinNames(13)="Case_13" - PinNames(14)="Case_14" - NodePosX=-512 - NodePosY=-384 - NodeGuid=ED658BB7B62F438C9C4C8241FE7333E0 - CustomProperties Pin (PinId=6272078D163F42A0972D3D5DE4267F93,PinName="Default",Direction="EGPD_Output",PinType.PinCategory="exec",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=3C1FB3CA71024EC183146491615C75D6,PinName="execute",PinType.PinCategory="exec",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=6A936EB599F144DEB209E7062D494522,PinName="Selection",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/GameplayTags.GameplayTag"',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=5DCD6681C7D94F0FBD7FC06ECD41B733,PinName="NotEqual_TagTag",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/GameplayTags.BlueprintGameplayTagLibrary"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultObject="/Script/GameplayTags.Default__BlueprintGameplayTagLibrary",PersistentGuid=00000000000000000000000000000000,bHidden=True,bNotConnectable=True,bDefaultValueIsReadOnly=True,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=761B2B809F974008BDC8F9D5AAC1DA2A,PinName="Case_0",Direction="EGPD_Output",PinType.PinCategory="exec",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=B5E8DC43F8504407B038C8FC2A1E98FA,PinName="Case_1",Direction="EGPD_Output",PinType.PinCategory="exec",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=AD14BC4F66DC488584D4EE9CBF2EB80F,PinName="Case_2",Direction="EGPD_Output",PinType.PinCategory="exec",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=1612FF4C75E2470D96B7496492ECB40D,PinName="Case_3",Direction="EGPD_Output",PinType.PinCategory="exec",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=71DB09F379DA4F6AAC316170276217EA,PinName="Case_4",Direction="EGPD_Output",PinType.PinCategory="exec",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=7FB99DAC1E1A45DEA7543A0CCE7ED8CC,PinName="Case_5",Direction="EGPD_Output",PinType.PinCategory="exec",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=923B58C73D384BACAC49664AD1CE9F16,PinName="Case_6",Direction="EGPD_Output",PinType.PinCategory="exec",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=B80CF21281234D3E9F8CF90C6EECD6F5,PinName="Case_7",Direction="EGPD_Output",PinType.PinCategory="exec",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=110CC7DBBB3B4840B00335AD1C3FB531,PinName="Case_8",Direction="EGPD_Output",PinType.PinCategory="exec",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=E5166419AD504A99A59651413DB1EBAE,PinName="Case_9",Direction="EGPD_Output",PinType.PinCategory="exec",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=5CB0EC686EB841E08C64D261EBE2CDFE,PinName="Case_10",Direction="EGPD_Output",PinType.PinCategory="exec",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=144D73A3F8FD4C8092F862D1863A5132,PinName="Case_11",Direction="EGPD_Output",PinType.PinCategory="exec",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=2515EACDE70541A191CA8F45E4346A0C,PinName="Case_12",Direction="EGPD_Output",PinType.PinCategory="exec",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=6F1F3687EA7F43DA8AC166E35B9AD3F3,PinName="Case_13",Direction="EGPD_Output",PinType.PinCategory="exec",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=62464A0DADE0407382DA61A0593EBE12,PinName="Case_14",Direction="EGPD_Output",PinType.PinCategory="exec",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: [15, 36], - color: Configuration.nodeColors.lime, - icon: SVGIcon.switch, - pins: 18, - pinNames: [ - "Selection", - "Case 0", - "Case 1", - "Case 2", - "Case 3", - "Case 4", - "Case 5", - "Case 6", - "Case 7", - "Case 8", - "Case 9", - "Case 10", - "Case 11", - "Case 12", - "Case 13", - "Case 14", - "Default" - ], - delegate: false, - development: false, - }, - { - name: "Switch on Name", - value: String.raw` - Begin Object Class=/Script/BlueprintGraph.K2Node_SwitchName Name="K2Node_SwitchName_0" - PinNames(0)="Case_0" - NodePosX=-1872 - NodePosY=-192 - NodeGuid=0F6D37C81EA34BDBBB5BCF1B50640C58 - CustomProperties Pin (PinId=364302AC219347A49E8686050F7BEA5A,PinName="Default",Direction="EGPD_Output",PinType.PinCategory="exec",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=8831972A02E84D90B4F1A9E21727B68F,PinName="execute",PinType.PinCategory="exec",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=5306210FE1664181ADA50665ACB9EFCF,PinName="Selection",PinType.PinCategory="name",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,DefaultValue="None",AutogeneratedDefaultValue="None",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=7449D10CD02444BFAC164F750710688E,PinName="NotEqual_NameName",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/Engine.KismetMathLibrary"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultObject="/Script/Engine.Default__KismetMathLibrary",PersistentGuid=00000000000000000000000000000000,bHidden=True,bNotConnectable=True,bDefaultValueIsReadOnly=True,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=FA2ED9343F4648D7A2EC9E8DB23C87BE,PinName="Case_0",Direction="EGPD_Output",PinType.PinCategory="exec",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: [14.5, 8.5], - color: Configuration.nodeColors.lime, - icon: SVGIcon.switch, - pins: 4, - pinNames: ["Selection", "Case 0", "Default"], - delegate: false, - development: false, - variadic: true, - }, - { - name: "Switch on ENiagaraOrientationAxis", - value: String.raw` - Begin Object Class=/Script/BlueprintGraph.K2Node_SwitchEnum Name="K2Node_SwitchEnum_3" - Enum=/Script/Engine.UserDefinedEnum'"/Niagara/Enums/ENiagaraOrientationAxis.ENiagaraOrientationAxis"' - EnumEntries(0)="NewEnumerator0" - EnumEntries(1)="NewEnumerator1" - EnumEntries(2)="NewEnumerator2" - NodePosX=128 - NodePosY=272 - NodeGuid=27ECE312F8464337AAFD3E4710FD0108 - CustomProperties Pin (PinId=D9D55819354041FCA1749D111E98462F,PinName="execute",PinType.PinCategory="exec",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=A34A643489CB4A9A8AB8EF406E66E586,PinName="Selection",PinType.PinCategory="byte",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/Engine.UserDefinedEnum'"/Niagara/Enums/ENiagaraOrientationAxis.ENiagaraOrientationAxis"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="NewEnumerator0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=E28F973F53654172AA58FEB665826457,PinName="NotEqual_ByteByte",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/Engine.KismetMathLibrary"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultObject="/Script/Engine.Default__KismetMathLibrary",PersistentGuid=00000000000000000000000000000000,bHidden=True,bNotConnectable=True,bDefaultValueIsReadOnly=True,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=02E2659FDD834A9483316C112630A17C,PinName="NewEnumerator0",PinFriendlyName=NSLOCTEXT("[9C9868C74FCF3E7AFDEB778F8C9EA988]", "1CE439C14E8741B2E94E4896C5BB29BB", "X Axis"),Direction="EGPD_Output",PinType.PinCategory="exec",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=36E317D2BD3C48A7BED78FFE25AD1451,PinName="NewEnumerator1",PinFriendlyName=NSLOCTEXT("[9C9868C74FCF3E7AFDEB778F8C9EA988]", "4807FD384418AD133AF56D9DD063A9D8", "Y Axis"),Direction="EGPD_Output",PinType.PinCategory="exec",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=2020E66C887C446DB4B69B0CA9652A6A,PinName="NewEnumerator2",PinFriendlyName=NSLOCTEXT("[9C9868C74FCF3E7AFDEB778F8C9EA988]", "0D8EE448409B4A8CD1F47FAB0AC122CF", "Z Axis"),Direction="EGPD_Output",PinType.PinCategory="exec",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: [20, 8], - color: Configuration.nodeColors.lime, - icon: SVGIcon.switch, - pins: 5, - pinNames: ["Selection", "X Axis", "Y Axis", "Z Axis"], - delegate: false, - development: false, - }, - { - name: "Switch on FTransformChannelEnum", - value: String.raw` - Begin Object Class=/Script/BlueprintGraph.K2Node_SwitchEnum Name="K2Node_SwitchEnum_4" - Enum=/Script/CoreUObject.Enum'"/Script/MovieSceneTools.FTransformChannelEnum"' - EnumEntries(0)="TranslateX" - EnumEntries(1)="TranslateY" - EnumEntries(2)="TranslateZ" - EnumEntries(3)="RotateX" - EnumEntries(4)="RotateY" - EnumEntries(5)="RotateZ" - EnumEntries(6)="ScaleX" - EnumEntries(7)="ScaleY" - EnumEntries(8)="ScaleZ" - NodePosX=-48 - NodePosY=448 - AdvancedPinDisplay=Shown - NodeGuid=27936712DE844DD68577CF8D703E315B - CustomProperties Pin (PinId=AF3B9C33C7E84817A720F393F7307A46,PinName="execute",PinType.PinCategory="exec",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=045AC753EEF74356BE997C19BB00B82B,PinName="Selection",PinType.PinCategory="byte",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Enum'"/Script/MovieSceneTools.FTransformChannelEnum"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="ScaleX",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=759822D08F654AF7ACDFA6F0590404B8,PinName="NotEqual_ByteByte",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/Engine.KismetMathLibrary"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultObject="/Script/Engine.Default__KismetMathLibrary",PersistentGuid=00000000000000000000000000000000,bHidden=True,bNotConnectable=True,bDefaultValueIsReadOnly=True,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=D91E0E2866954BC887234AA8883DCB83,PinName="TranslateX",PinFriendlyName=NSLOCTEXT("UObjectDisplayNames", "FTransformChannelEnum.TranslateX", "Translate X"),Direction="EGPD_Output",PinType.PinCategory="exec",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=697FB3903E294ADF821BFBD574CB2976,PinName="TranslateY",PinFriendlyName=NSLOCTEXT("UObjectDisplayNames", "FTransformChannelEnum.TranslateY", "Translate Y"),Direction="EGPD_Output",PinType.PinCategory="exec",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=F76AB334C5E24919815C2AAAEACCD14B,PinName="TranslateZ",PinFriendlyName=NSLOCTEXT("UObjectDisplayNames", "FTransformChannelEnum.TranslateZ", "Translate Z"),Direction="EGPD_Output",PinType.PinCategory="exec",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=1C6C49D0E8A94F2F99A1DF9AF1574D16,PinName="RotateX",PinFriendlyName=NSLOCTEXT("UObjectDisplayNames", "FTransformChannelEnum.RotateX", "Rotate X"),Direction="EGPD_Output",PinType.PinCategory="exec",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=0D35BB4401504A20B45D152BCA0B9BD0,PinName="RotateY",PinFriendlyName=NSLOCTEXT("UObjectDisplayNames", "FTransformChannelEnum.RotateY", "Rotate Y"),Direction="EGPD_Output",PinType.PinCategory="exec",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=2024CA11E8E840F1A1D7C087145476AC,PinName="RotateZ",PinFriendlyName=NSLOCTEXT("UObjectDisplayNames", "FTransformChannelEnum.RotateZ", "Rotate Z"),Direction="EGPD_Output",PinType.PinCategory="exec",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=E9F47D5F991E43318D29DD40089114D4,PinName="ScaleX",PinFriendlyName=NSLOCTEXT("UObjectDisplayNames", "FTransformChannelEnum.ScaleX", "Scale X"),Direction="EGPD_Output",PinType.PinCategory="exec",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=D41C6BF492AD4AB09AE11DFEF442E256,PinName="ScaleY",PinFriendlyName=NSLOCTEXT("UObjectDisplayNames", "FTransformChannelEnum.ScaleY", "Scale Y"),Direction="EGPD_Output",PinType.PinCategory="exec",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=A7460C8034394A20863B4AB8A38249D9,PinName="ScaleZ",PinFriendlyName=NSLOCTEXT("UObjectDisplayNames", "FTransformChannelEnum.ScaleZ", "Scale Z"),Direction="EGPD_Output",PinType.PinCategory="exec",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,) - End Object - `, - size: [22, 21], - color: Configuration.nodeColors.lime, - icon: SVGIcon.switch, - pins: 11, - pinNames: [ - "Selection", - "Translate X", - "Translate Y", - "Translate Z", - "Rotate X", - "Rotate Y", - "Rotate Z", - "Scale X", - "Scale Y", - "Scale Z", - ], - delegate: false, - development: false, - }, - { - name: "Sequence", - value: String.raw` - Begin Object Class=/Script/BlueprintGraph.K2Node_ExecutionSequence Name="K2Node_ExecutionSequence_4" ExportPath="/Script/BlueprintGraph.K2Node_ExecutionSequence'/Engine/Maps/Templates/NewWorld.NewWorld:PersistentLevel.NewWorld.EventGraph.K2Node_ExecutionSequence_4'" - NodePosX=496 - NodePosY=192 - NodeGuid=7E38FFEB6B474D4E80CDA4B4720C9E24 - CustomProperties Pin (PinId=2612016B4EAAC152FA9ABB9E23572EE1,PinName="execute",PinType.PinCategory="exec",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_CallFunction_26 2658362A4F2BA6A3BE7398A8604FAC6D,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=D665418E47B39BB80A8F02B3951BF0DB,PinName="then_0",Direction="EGPD_Output",PinType.PinCategory="exec",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_Timeline_1 ABA55A2B4F3689076D856F921255888F,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=A3D98FA145671788536EA1AD2CF5DA61,PinName="then_1",Direction="EGPD_Output",PinType.PinCategory="exec",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_Timeline_1 4069CE0043C4948BDE9D17A2FEE8DE0A,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=47D0C212ACF74C57873C7C16B66E0EC6,PinName="then_2",Direction="EGPD_Output",PinType.PinCategory="exec",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: [8.5, 10], - color: Configuration.nodeColors.gray, - icon: SVGIcon.sequence, - pins: 4, - pinNames: [ - "Then 0", - "Then 1", - "Then 2", - ], - delegate: false, - development: false, - variadic: true, - }, - ]) - } -} diff --git a/tests/resources/InputNodes.js b/tests/resources/InputNodes.js deleted file mode 100644 index 6f8a362..0000000 --- a/tests/resources/InputNodes.js +++ /dev/null @@ -1,895 +0,0 @@ -import Configuration from "../../js/Configuration.js" -import SVGIcon from "../../js/SVGIcon.js" -import NodeTests from "./NodeTests.js" - -export default class InputNodes extends NodeTests { - static { - this.set([ - { - name: "A", - value: String.raw` - Begin Object Class=/Script/BlueprintGraph.K2Node_InputKey Name="K2Node_InputKey_21" - InputKey=A - NodePosX=-304 - NodePosY=96 - NodeGuid=6259F5F555434903AC5C3C666F979944 - CustomProperties Pin (PinId=CB98C983F3F1464DB10FB786E52E0722,PinName="Pressed",Direction="EGPD_Output",PinType.PinCategory="exec",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=D306257F70BF42C19140148BE5998EA3,PinName="Released",Direction="EGPD_Output",PinType.PinCategory="exec",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=2977AECB23E44F76A1F92E4DCE1EEE8C,PinName="Key",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/InputCore.Key"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="None",AutogeneratedDefaultValue="None",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - End Object - `, - size: [6, 8], - color: Configuration.nodeColors.red, - icon: SVGIcon.keyboard, - pins: 3, - pinNames: ["Pressed", "Released", "Key"], - delegate: false, - development: false, - }, - { - name: "à", - value: String.raw` - Begin Object Class=/Script/BlueprintGraph.K2Node_InputKey Name="K2Node_InputKey_22" - InputKey=A_AccentGrave - NodePosX=-16 - NodePosY=208 - NodeGuid=D3DB357D428F46BBB529721239DD16DF - CustomProperties Pin (PinId=DB7FA89F149E4CE3B2A1F5F103A2C074,PinName="Pressed",Direction="EGPD_Output",PinType.PinCategory="exec",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=75FF129EE9094AD3867206DEB7E9D907,PinName="Released",Direction="EGPD_Output",PinType.PinCategory="exec",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=E6898EC029904C069C75CFBA94BED0D5,PinName="Key",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/InputCore.Key"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="None",AutogeneratedDefaultValue="None",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - End Object - `, - size: [6, 8], - color: Configuration.nodeColors.red, - icon: SVGIcon.keyboard, - pins: 3, - pinNames: ["Pressed", "Released", "Key"], - delegate: false, - development: false, - }, - { - name: "è", - value: String.raw` - Begin Object Class=/Script/BlueprintGraph.K2Node_InputKey Name="K2Node_InputKey_23" - InputKey=E_AccentGrave - NodePosX=208 - NodePosY=160 - NodeGuid=63A85924985A4AA49975B74C27EB01D6 - CustomProperties Pin (PinId=BE32B517D2734017AF0A84D6C359CD96,PinName="Pressed",Direction="EGPD_Output",PinType.PinCategory="exec",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=B448C54D91014BF29C40B66B20EFE35A,PinName="Released",Direction="EGPD_Output",PinType.PinCategory="exec",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=507B66F736234E55A68C49235B936DF6,PinName="Key",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/InputCore.Key"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="None",AutogeneratedDefaultValue="None",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - End Object - `, - size: [6, 8], - color: Configuration.nodeColors.red, - icon: SVGIcon.keyboard, - pins: 3, - pinNames: ["Pressed", "Released", "Key"], - delegate: false, - development: false, - }, - { - name: "`", - value: String.raw` - Begin Object Class=/Script/BlueprintGraph.K2Node_InputKey Name="K2Node_InputKey_24" - InputKey=Tilde - NodePosX=-16 - NodePosY=-176 - NodeGuid=CC2D4F6041DC494C96C08DFBD618AC3A - CustomProperties Pin (PinId=70F444059B5847989EC789B5239F6BE0,PinName="Pressed",Direction="EGPD_Output",PinType.PinCategory="exec",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=5EC9A95245F344EF838C08813AD7B1EB,PinName="Released",Direction="EGPD_Output",PinType.PinCategory="exec",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=0019D9A7CD8C4338BB75677A00C56CDA,PinName="Key",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/InputCore.Key"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="None",AutogeneratedDefaultValue="None",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - End Object - `, - size: [6, 8], - color: Configuration.nodeColors.red, - icon: SVGIcon.keyboard, - pins: 3, - pinNames: ["Pressed", "Released", "Key"], - delegate: false, - development: false, - }, - { - name: "F1", - value: String.raw` - Begin Object Class=/Script/BlueprintGraph.K2Node_InputKey Name="K2Node_InputKey_25" - InputKey=F1 - NodePosX=-432 - NodePosY=-128 - NodeGuid=2A1E4A0B00644BFABB41E79B9EEBA51F - CustomProperties Pin (PinId=34EA0464C8C0463782205148426AFB9D,PinName="Pressed",Direction="EGPD_Output",PinType.PinCategory="exec",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=196E5BC3CF0145EBB6501C56C58D0694,PinName="Released",Direction="EGPD_Output",PinType.PinCategory="exec",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=70E9187FED444AC392AE4AA4FD4A8F06,PinName="Key",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/InputCore.Key"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="None",AutogeneratedDefaultValue="None",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - End Object - `, - size: [6, 8], - color: Configuration.nodeColors.red, - icon: SVGIcon.keyboard, - pins: 3, - pinNames: ["Pressed", "Released", "Key"], - delegate: false, - development: false, - }, - { - name: "Debug Key §", - value: String.raw` - Begin Object Class=/Script/InputBlueprintNodes.K2Node_InputDebugKey Name="K2Node_InputDebugKey_9" - InputKey=Section - NodePosX=-448 - NodePosY=192 - NodeGuid=F77393EEC6EE474EB275F21B79D7AFFA - CustomProperties Pin (PinId=07B3CB6FEBC84F289CFE595A533AC588,PinName="Pressed",Direction="EGPD_Output",PinType.PinCategory="exec",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=9B870DCF5BB942EC8B2879ADD3C1C8D7,PinName="Released",Direction="EGPD_Output",PinType.PinCategory="exec",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=E303DAA129D744CB895FAAD13AD2E481,PinName="Key",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/InputCore.Key"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="None",AutogeneratedDefaultValue="None",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=D7A0B7E8F10C42F0812EBD47E57C90A5,PinName="ActionValue",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/EnhancedInput.InputActionValue"',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: [8.5, 11], - color: Configuration.nodeColors.red, - icon: SVGIcon.keyboard, - pins: 4, - pinNames: ["Pressed", "Released", "Key", "Action Value"], - delegate: false, - development: true, - }, - { - name: "Get Touchpad Button X Axis", - value: String.raw` - Begin Object Class=/Script/BlueprintGraph.K2Node_GetInputAxisKeyValue Name="K2Node_GetInputAxisKeyValue_7" - InputAxisKey=Gamepad_Special_Left_X - bIsPureFunc=True - bIsConstFunc=True - FunctionReference=(MemberName="GetInputAxisKeyValue",bSelfContext=True) - NodePosX=-224 - NodePosY=48 - NodeGuid=3385984750554D07BCADFFD48CA3EC9F - CustomProperties Pin (PinId=C04D7513E97B4FB19ECEC736842C4B9C,PinName="self",PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target"),PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/Engine.Actor"',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=True,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=4787139D40A543D7AA60CB927DFFA93C,PinName="InputAxisKey",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/InputCore.Key"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=True,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="Gamepad_Special_Left_X",PersistentGuid=00000000000000000000000000000000,bHidden=True,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=ADD1CDAF5AB542C186B3054E28A3FB85,PinName="ReturnValue",Direction="EGPD_Output",PinType.PinCategory="real",PinType.PinSubCategory="float",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,DefaultValue="0.0",AutogeneratedDefaultValue="0.0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - End Object - `, - size: [14, 4], - color: Configuration.nodeColors.green, - icon: SVGIcon.keyboard, - pins: 1, - pinNames: ["Return Value"], - delegate: false, - development: false, - }, - { - name: "Touch 1", - value: String.raw` - Begin Object Class=/Script/BlueprintGraph.K2Node_InputKey Name="K2Node_InputKey_28" - InputKey=Touch1 - NodePosX=-144 - NodePosY=-128 - NodeGuid=2AE125437F1B48B3A849925138CD51D1 - CustomProperties Pin (PinId=A6B5FC017A024EC3B258A048773DD301,PinName="Pressed",Direction="EGPD_Output",PinType.PinCategory="exec",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=576F12E928DF4FF48D4D1E1F05C9C661,PinName="Released",Direction="EGPD_Output",PinType.PinCategory="exec",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=7102CB8371BA4E8594ACECDAD1422A1C,PinName="Key",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/InputCore.Key"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="None",AutogeneratedDefaultValue="None",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - End Object - `, - size: [7, 8], - color: Configuration.nodeColors.red, - icon: SVGIcon.touchpad, - pins: 3, - pinNames: ["Pressed", "Released", "Key"], - delegate: false, - development: false, - }, - { - name: "Debug Key Touch 10", - value: String.raw` - Begin Object Class=/Script/InputBlueprintNodes.K2Node_InputDebugKey Name="K2Node_InputDebugKey_10" - InputKey=Touch10 - NodePosX=192 - NodePosY=-304 - NodeGuid=85DC056DAA9A4DB78F7883B8F67DCF59 - CustomProperties Pin (PinId=267ABB8DF21844FB8F6E0CFA990C4E5E,PinName="Pressed",Direction="EGPD_Output",PinType.PinCategory="exec",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=3FF391B8B11F4F26828B55863EFB48FD,PinName="Released",Direction="EGPD_Output",PinType.PinCategory="exec",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=41C4C9D9831148E087E7D7D86B6CCB2D,PinName="Key",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/InputCore.Key"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="None",AutogeneratedDefaultValue="None",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=F0EC9017F23F4F73AF3E98AE46008C75,PinName="ActionValue",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/EnhancedInput.InputActionValue"',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: [11, 11], - color: Configuration.nodeColors.red, - icon: SVGIcon.touchpad, - pins: 4, - pinNames: ["Pressed", "Released", "Key", "Action Value"], - delegate: false, - development: true, - }, - { - name: "Steam Touch 1", - value: String.raw` - Begin Object Class=/Script/BlueprintGraph.K2Node_InputKey Name="K2Node_InputKey_29" - InputKey=Steam_Touch_1 - NodePosX=80 - NodePosY=-160 - NodeGuid=E85D97EACB4F4B8B9F8A160A949BB9AD - CustomProperties Pin (PinId=D7E09AE1588B4E949F7C34798AED6758,PinName="Pressed",Direction="EGPD_Output",PinType.PinCategory="exec",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=CA4B72FE4D6F4F5DA503674A88F1872E,PinName="Released",Direction="EGPD_Output",PinType.PinCategory="exec",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=948BDBCF71EE4E36891EB8259D1C4E44,PinName="Key",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/InputCore.Key"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="None",AutogeneratedDefaultValue="None",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - End Object - `, - size: [9, 8], - color: Configuration.nodeColors.red, - icon: SVGIcon.gamepad, - pins: 3, - pinNames: ["Pressed", "Released", "Key"], - delegate: false, - development: false, - }, - { - name: "Mouse X", - value: String.raw` - Begin Object Class=/Script/BlueprintGraph.K2Node_InputAxisKeyEvent Name="K2Node_InputAxisKeyEvent_2" - AxisKey=MouseX - EventReference=(MemberParent=/Script/CoreUObject.Package'"/Script/Engine"') - CustomFunctionName="InpAxisKeyEvt_MouseX_K2Node_InputAxisKeyEvent_2" - NodePosX=16 - NodePosY=384 - NodeGuid=F7AA7D36A681494A9F28239D0FA8FB2D - CustomProperties Pin (PinId=8525745F49DB46C9BBDA7549AB9CD8B5,PinName="OutputDelegate",Direction="EGPD_Output",PinType.PinCategory="delegate",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(MemberParent=/Script/Engine.BlueprintGeneratedClass'"/Temp/Untitled_1.Untitled_C"',MemberName="InpAxisKeyEvt_MouseX_K2Node_InputAxisKeyEvent_2"),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=6273D30435714B84BD2139DB4FAFE72F,PinName="then",Direction="EGPD_Output",PinType.PinCategory="exec",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=E43D43763CD64E2CB1B030ECCEED6115,PinName="AxisValue",PinToolTip="Axis Value\nFloat (single-precision)",Direction="EGPD_Output",PinType.PinCategory="real",PinType.PinSubCategory="float",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,DefaultValue="0.0",AutogeneratedDefaultValue="0.0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - End Object - `, - size: [7, 6], - color: Configuration.nodeColors.red, - icon: SVGIcon.mouse, - pins: 3, - pinNames: ["Axis Value"], - delegate: true, - development: false, - }, - { - name: "Mouse Y", - value: String.raw` - Begin Object Class=/Script/BlueprintGraph.K2Node_InputAxisKeyEvent Name="K2Node_InputAxisKeyEvent_1" - AxisKey=MouseY - EventReference=(MemberParent=/Script/CoreUObject.Package'"/Script/Engine"') - CustomFunctionName="InpAxisKeyEvt_MouseY_K2Node_InputAxisKeyEvent_1" - NodePosX=-16 - NodePosY=144 - NodeGuid=FECB056F1DB940BAB4CA5D0BACCCC810 - CustomProperties Pin (PinId=357A92FB93554066815AF1D9FFEE8849,PinName="OutputDelegate",Direction="EGPD_Output",PinType.PinCategory="delegate",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(MemberParent=/Script/Engine.BlueprintGeneratedClass'"/Temp/Untitled_1.Untitled_C"',MemberName="InpAxisKeyEvt_MouseY_K2Node_InputAxisKeyEvent_1"),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=902EB1EFB0F44F8CBFD05C00589EB93B,PinName="then",Direction="EGPD_Output",PinType.PinCategory="exec",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=ECD6C7AC46BD47C88180B7198E2AF86B,PinName="AxisValue",PinToolTip="Axis Value\nFloat (single-precision)",Direction="EGPD_Output",PinType.PinCategory="real",PinType.PinSubCategory="float",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,DefaultValue="0.0",AutogeneratedDefaultValue="0.0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - End Object - `, - size: [7, 6], - color: Configuration.nodeColors.red, - icon: SVGIcon.mouse, - pins: 3, - pinNames: ["Axis Value"], - delegate: true, - development: false, - }, - { - name: "Mouse XY 2D-Axis", - value: String.raw` - Begin Object Class=/Script/BlueprintGraph.K2Node_InputVectorAxisEvent Name="K2Node_InputVectorAxisEvent_0" - AxisKey=Mouse2D - EventReference=(MemberParent=/Script/CoreUObject.Package'"/Script/Engine"') - CustomFunctionName="InpAxisKeyEvt_Mouse2D_K2Node_InputVectorAxisEvent_0" - NodePosX=-448 - NodePosY=48 - NodeGuid=A6723248596F42A4B997C50F78246F2C - CustomProperties Pin (PinId=56F310FF3B4243D2B0AE09D8949AF505,PinName="OutputDelegate",Direction="EGPD_Output",PinType.PinCategory="delegate",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(MemberParent=/Script/Engine.BlueprintGeneratedClass'"/Temp/Untitled_1.Untitled_C"',MemberName="InpAxisKeyEvt_Mouse2D_K2Node_InputVectorAxisEvent_0"),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=9C23986C914C4B11AD7321BBBAB1D538,PinName="then",Direction="EGPD_Output",PinType.PinCategory="exec",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=F04B32CC40954BBAB9872EAE26DE2879,PinName="AxisValue",PinToolTip="Axis Value\nVector",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/CoreUObject.Vector"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="0, 0, 0",AutogeneratedDefaultValue="0, 0, 0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - End Object - `, - size: [11, 6], - color: Configuration.nodeColors.red, - icon: SVGIcon.mouse, - pins: 3, - pinNames: ["Axis Value"], - delegate: true, - development: false, - }, - { - name: "Mouse Wheel Axis", - value: String.raw` - Begin Object Class=/Script/BlueprintGraph.K2Node_InputAxisKeyEvent Name="K2Node_InputAxisKeyEvent_2" - AxisKey=MouseWheelAxis - EventReference=(MemberParent=/Script/CoreUObject.Package'"/Script/Engine"') - CustomFunctionName="InpAxisKeyEvt_MouseWheelAxis_K2Node_InputAxisKeyEvent_2" - NodePosX=240 - NodePosY=-192 - NodeGuid=E3FF073E85B34FC4B188CD7BD68D6B9B - CustomProperties Pin (PinId=5770618DFA054880BF33DD39844DE3F8,PinName="OutputDelegate",Direction="EGPD_Output",PinType.PinCategory="delegate",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(MemberParent=/Script/Engine.BlueprintGeneratedClass'"/Temp/Untitled_1.Untitled_C"',MemberName="InpAxisKeyEvt_MouseWheelAxis_K2Node_InputAxisKeyEvent_2"),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=AEC4EBC2FF5744538B93F21321891828,PinName="then",Direction="EGPD_Output",PinType.PinCategory="exec",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=8490344E6BD94ED49267BC0C82317109,PinName="AxisValue",PinToolTip="Axis Value\nFloat (single-precision)",Direction="EGPD_Output",PinType.PinCategory="real",PinType.PinSubCategory="float",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,DefaultValue="0.0",AutogeneratedDefaultValue="0.0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - End Object - `, - size: [10.5, 6], - color: Configuration.nodeColors.red, - icon: SVGIcon.mouse, - pins: 3, - pinNames: ["Axis Value"], - delegate: true, - development: false, - }, - { - name: "Left Mouse Button", - value: String.raw` - Begin Object Class=/Script/BlueprintGraph.K2Node_InputKey Name="K2Node_InputKey_16" - InputKey=LeftMouseButton - NodePosX=-224 - NodePosY=128 - NodeGuid=41CB459BE2E842F8981D1263CBCF48CB - CustomProperties Pin (PinId=6F2EDC0B46FE4B53B031B674417B2F68,PinName="Pressed",Direction="EGPD_Output",PinType.PinCategory="exec",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=DE99E9C67C1B4C70B9486BE43DE94813,PinName="Released",Direction="EGPD_Output",PinType.PinCategory="exec",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=3078091B73C9484F920A32ABEC7F70E2,PinName="Key",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/InputCore.Key"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="None",AutogeneratedDefaultValue="None",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - End Object - `, - size: [11, 8], - color: Configuration.nodeColors.red, - icon: SVGIcon.mouse, - pins: 3, - pinNames: ["Pressed", "Released", "Key"], - delegate: false, - development: false, - }, - { - name: "Middle Mouse Button", - value: String.raw` - Begin Object Class=/Script/BlueprintGraph.K2Node_InputKey Name="K2Node_InputKey_17" - InputKey=MiddleMouseButton - NodePosX=144 - NodePosY=64 - NodeGuid=A9ED686DBFC54789A021351B379B76F2 - CustomProperties Pin (PinId=7C3A115375134DE0BD811E52F246F7BF,PinName="Pressed",Direction="EGPD_Output",PinType.PinCategory="exec",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=D28DC408DD34403292368A421E3F9011,PinName="Released",Direction="EGPD_Output",PinType.PinCategory="exec",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=7B5F9C141CC34087B646A3360513B7CA,PinName="Key",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/InputCore.Key"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="None",AutogeneratedDefaultValue="None",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - End Object - `, - size: [12, 8], - color: Configuration.nodeColors.red, - icon: SVGIcon.mouse, - pins: 3, - pinNames: ["Pressed", "Released", "Key"], - delegate: false, - development: false, - }, - { - name: "Thumb Mouse Button 2", - value: String.raw` - Begin Object Class=/Script/BlueprintGraph.K2Node_InputKey Name="K2Node_InputKey_18" - InputKey=ThumbMouseButton2 - NodePosX=144 - NodePosY=288 - NodeGuid=031BA5DB71BA4F6ABC7F85DCFD34771D - CustomProperties Pin (PinId=DC46CB8B47E0429FB58797DD9FAA9F48,PinName="Pressed",Direction="EGPD_Output",PinType.PinCategory="exec",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=66F69216F2964D4C9ADD1997A46F9A76,PinName="Released",Direction="EGPD_Output",PinType.PinCategory="exec",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=C80119035CCB451BA90DB5CFD6F98029,PinName="Key",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/InputCore.Key"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="None",AutogeneratedDefaultValue="None",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - End Object - `, - size: [12, 8], - color: Configuration.nodeColors.red, - icon: SVGIcon.mouse, - pins: 3, - pinNames: ["Pressed", "Released", "Key"], - delegate: false, - development: false, - }, - { - name: "Debug Key Thumb Mouse Button", - value: String.raw` - Begin Object Class=/Script/InputBlueprintNodes.K2Node_InputDebugKey Name="K2Node_InputDebugKey_7" - InputKey=ThumbMouseButton - NodePosX=-384 - NodePosY=288 - NodeGuid=A399E6224ADE4FCA957A949B4660E1C1 - CustomProperties Pin (PinId=A4BEA026C1B741DDB6C690AD79683F0F,PinName="Pressed",Direction="EGPD_Output",PinType.PinCategory="exec",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=A0CEF5BCEAD14E868B4227481755F5C5,PinName="Released",Direction="EGPD_Output",PinType.PinCategory="exec",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=E977C11019F74CD8A15C467CA0B1C005,PinName="Key",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/InputCore.Key"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="None",AutogeneratedDefaultValue="None",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=ED934B47B72E4A94834897DCD89BABB3,PinName="ActionValue",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/EnhancedInput.InputActionValue"',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: [16, 11], - color: Configuration.nodeColors.red, - icon: SVGIcon.mouse, - pins: 4, - pinNames: ["Pressed", "Released", "Key", "Action Value"], - delegate: false, - development: true, - }, - { - name: "Get Mouse Y", - value: String.raw` - Begin Object Class=/Script/BlueprintGraph.K2Node_GetInputAxisKeyValue Name="K2Node_GetInputAxisKeyValue_2" - InputAxisKey=MouseY - bIsPureFunc=True - bIsConstFunc=True - FunctionReference=(MemberName="GetInputAxisKeyValue",bSelfContext=True) - NodePosX=-336 - NodePosY=176 - NodeGuid=03F17E5E722044968C2604B5C7DB96DF - CustomProperties Pin (PinId=BAC6585AD74E46FB99497B33417089E8,PinName="self",PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target"),PinToolTip="Target\nActor Object Reference",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/Engine.Actor"',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=True,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=EBD21E94C73B4648A6E42EEDAAECC25C,PinName="InputAxisKey",PinToolTip="Input Axis Key\nKey Structure",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/InputCore.Key"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=True,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="MouseY",PersistentGuid=00000000000000000000000000000000,bHidden=True,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=FBB13F62789849748C804E02B8E147AD,PinName="ReturnValue",PinToolTip="Return Value\nFloat (single-precision)\n\nGets the value of the input axis key if input is enabled for this actor.",Direction="EGPD_Output",PinType.PinCategory="real",PinType.PinSubCategory="float",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,DefaultValue="0.0",AutogeneratedDefaultValue="0.0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - End Object - `, - size: [8.5, 4], - color: Configuration.nodeColors.green, - icon: SVGIcon.mouse, - pins: 1, - pinNames: ["Return Value"], - delegate: false, - development: false, - }, - { - name: "Get Mouse Wheel Axis", - value: String.raw` - Begin Object Class=/Script/BlueprintGraph.K2Node_GetInputAxisKeyValue Name="K2Node_GetInputAxisKeyValue_0" - InputAxisKey=MouseWheelAxis - bIsPureFunc=True - bIsConstFunc=True - FunctionReference=(MemberName="GetInputAxisKeyValue",bSelfContext=True) - NodePosX=-384 - NodePosY=16 - NodeGuid=2B1117A5318D40A7AF0DFDA50FEF1591 - CustomProperties Pin (PinId=BFD2DE55F3DB4856ACFC0FE876450E0B,PinName="self",PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target"),PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/Engine.Actor"',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=True,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=5842E327DE3B4521B9B695133F2D5A8D,PinName="InputAxisKey",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/InputCore.Key"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=True,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="MouseWheelAxis",PersistentGuid=00000000000000000000000000000000,bHidden=True,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=D277AF2C806C4B92857827918CA55B91,PinName="ReturnValue",Direction="EGPD_Output",PinType.PinCategory="real",PinType.PinSubCategory="float",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,DefaultValue="0.0",AutogeneratedDefaultValue="0.0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - End Object - `, - size: [12, 4], - color: Configuration.nodeColors.green, - icon: SVGIcon.mouse, - pins: 1, - pinNames: ["Return Value"], - delegate: false, - development: false, - }, - { - name: "0", - value: String.raw` - Begin Object Class=/Script/BlueprintGraph.K2Node_InputKey Name="K2Node_InputKey_1" - InputKey=Zero - NodePosX=-304 - NodePosY=176 - NodeGuid=41FC4194F1E4436BB46EC8C1D83D0701 - CustomProperties Pin (PinId=D4A5428B422F4D5085CF41DEAF73523E,PinName="Pressed",Direction="EGPD_Output",PinType.PinCategory="exec",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=B1A390663D2B404AAFF90D10273C78E1,PinName="Released",Direction="EGPD_Output",PinType.PinCategory="exec",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=0C9FF69AFEEE488F868AB3292050FCB0,PinName="Key",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/InputCore.Key"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="None",AutogeneratedDefaultValue="None",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - End Object - `, - size: [6, 8], - color: Configuration.nodeColors.red, - icon: SVGIcon.keyboard, - pins: 3, - pinNames: ["Pressed", "Released", "Key"], - delegate: false, - development: false, - }, - { - name: "1", - value: String.raw` - Begin Object Class=/Script/BlueprintGraph.K2Node_InputKey Name="K2Node_InputKey_0" - InputKey=One - NodePosX=-368 - NodePosY=48 - NodeGuid=92EF207924B8456FA773E70D4CB508B1 - CustomProperties Pin (PinId=B97DD5E035664CC89443E493174A8643,PinName="Pressed",Direction="EGPD_Output",PinType.PinCategory="exec",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=B120EF5252EB4F029D420AD0B029AA57,PinName="Released",Direction="EGPD_Output",PinType.PinCategory="exec",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=51B6448364CD491B95C79EEDB5947F62,PinName="Key",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/InputCore.Key"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="None",AutogeneratedDefaultValue="None",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - End Object - `, - size: [6, 8], - color: Configuration.nodeColors.red, - icon: SVGIcon.keyboard, - pins: 3, - pinNames: ["Pressed", "Released", "Key"], - delegate: false, - development: false, - }, - { - name: "2", - value: String.raw` - Begin Object Class=/Script/BlueprintGraph.K2Node_InputKey Name="K2Node_InputKey_1" - InputKey=Two - NodePosX=-432 - NodePosY=240 - NodeGuid=E0E67B91FE9748C7BA46FD5A5875E1ED - CustomProperties Pin (PinId=C7064464390D411ABFE9427758A4DC81,PinName="Pressed",Direction="EGPD_Output",PinType.PinCategory="exec",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=7CC65DFE0C134968A856304AAE6B800D,PinName="Released",Direction="EGPD_Output",PinType.PinCategory="exec",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=D79D1BBE0C944B618E16600BAD151493,PinName="Key",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/InputCore.Key"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="None",AutogeneratedDefaultValue="None",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - End Object - `, - size: [6, 8], - color: Configuration.nodeColors.red, - icon: SVGIcon.keyboard, - pins: 3, - pinNames: ["Pressed", "Released", "Key"], - delegate: false, - development: false, - }, - { - name: "3", - value: String.raw` - Begin Object Class=/Script/BlueprintGraph.K2Node_InputKey Name="K2Node_InputKey_2" - InputKey=Three - NodePosX=-288 - NodePosY=240 - NodeGuid=86A598DB8EA1471C854A3233595FDD72 - CustomProperties Pin (PinId=14495EF676334DE08F813AE8B458849A,PinName="Pressed",Direction="EGPD_Output",PinType.PinCategory="exec",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=0B11504E947F4FF184AC6371CB59D825,PinName="Released",Direction="EGPD_Output",PinType.PinCategory="exec",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=7493F1215705457980E294950C651ED7,PinName="Key",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/InputCore.Key"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="None",AutogeneratedDefaultValue="None",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - End Object - `, - size: [6, 8], - color: Configuration.nodeColors.red, - icon: SVGIcon.keyboard, - pins: 3, - pinNames: ["Pressed", "Released", "Key"], - delegate: false, - development: false, - }, - { - name: "4", - value: String.raw` - Begin Object Class=/Script/BlueprintGraph.K2Node_InputKey Name="K2Node_InputKey_4" - InputKey=Four - NodePosX=416 - NodePosY=16 - NodeGuid=C0E7B79B3B85408C9FFAFE71B71FD21F - CustomProperties Pin (PinId=28E3A745210949D0864CC441BB0F529C,PinName="Pressed",Direction="EGPD_Output",PinType.PinCategory="exec",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=F8A89129B85C44CABFC5082369EEDA65,PinName="Released",Direction="EGPD_Output",PinType.PinCategory="exec",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=00DE1A9A2AE249E681808177A2107D5A,PinName="Key",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/InputCore.Key"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="None",AutogeneratedDefaultValue="None",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - End Object - `, - size: [6, 8], - color: Configuration.nodeColors.red, - icon: SVGIcon.keyboard, - pins: 3, - pinNames: ["Pressed", "Released", "Key"], - delegate: false, - development: false, - }, - { - name: "5", - value: String.raw` - Begin Object Class=/Script/BlueprintGraph.K2Node_InputKey Name="K2Node_InputKey_3" - InputKey=Five - NodePosX=-416 - NodePosY=48 - NodeGuid=1DC9EFC5D6B34E06839050946BAD178D - CustomProperties Pin (PinId=9D70C05D5C5941CAAC239B23BC11E648,PinName="Pressed",Direction="EGPD_Output",PinType.PinCategory="exec",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=790882DB7B64424CBB215644AED9EBBE,PinName="Released",Direction="EGPD_Output",PinType.PinCategory="exec",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=9A76A94DEB7E40E08EBD880DFADB212F,PinName="Key",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/InputCore.Key"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="None",AutogeneratedDefaultValue="None",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - End Object - `, - size: [6, 8], - color: Configuration.nodeColors.red, - icon: SVGIcon.keyboard, - pins: 3, - pinNames: ["Pressed", "Released", "Key"], - delegate: false, - development: false, - }, - { - name: "6", - value: String.raw` - Begin Object Class=/Script/BlueprintGraph.K2Node_InputKey Name="K2Node_InputKey_5" - InputKey=Six - NodePosX=-192 - NodePosY=112 - NodeGuid=82C5BBFF6AAB4078931656A56DFC214F - CustomProperties Pin (PinId=A4F9728C256C4D0FB053E545EBB0FDE3,PinName="Pressed",Direction="EGPD_Output",PinType.PinCategory="exec",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=DF03428EF028466C948E0F2539C1AA2C,PinName="Released",Direction="EGPD_Output",PinType.PinCategory="exec",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=509DA3B4BFD84B2FB796CEFE709E3401,PinName="Key",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/InputCore.Key"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="None",AutogeneratedDefaultValue="None",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - End Object - `, - size: [6, 8], - color: Configuration.nodeColors.red, - icon: SVGIcon.keyboard, - pins: 3, - pinNames: ["Pressed", "Released", "Key"], - delegate: false, - development: false, - }, - { - name: "7", - value: String.raw` - Begin Object Class=/Script/BlueprintGraph.K2Node_InputKey Name="K2Node_InputKey_6" - InputKey=Seven - NodePosX=-352 - NodePosY=352 - NodeGuid=C32CC49616194AAC923D2C59FB938447 - CustomProperties Pin (PinId=6F69CCDA3E8042AD94D2CED0A400D23C,PinName="Pressed",Direction="EGPD_Output",PinType.PinCategory="exec",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=A34A7F4DA2F645F288C0F57A5E24DB8E,PinName="Released",Direction="EGPD_Output",PinType.PinCategory="exec",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=3E195C0ABA83425F813A4AB20817BBDE,PinName="Key",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/InputCore.Key"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="None",AutogeneratedDefaultValue="None",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - End Object - `, - size: [6, 8], - color: Configuration.nodeColors.red, - icon: SVGIcon.keyboard, - pins: 3, - pinNames: ["Pressed", "Released", "Key"], - delegate: false, - development: false, - }, - { - name: "8", - value: String.raw` - Begin Object Class=/Script/BlueprintGraph.K2Node_InputKey Name="K2Node_InputKey_7" - InputKey=Eight - NodePosX=-384 - NodePosY=256 - NodeGuid=6AF0BCA97BBD467C84CD606C09F1BBAA - CustomProperties Pin (PinId=4020BE13AED349549BA94622B8EEF80E,PinName="Pressed",Direction="EGPD_Output",PinType.PinCategory="exec",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=8C4F484474D1432CBD77333B04D315F8,PinName="Released",Direction="EGPD_Output",PinType.PinCategory="exec",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=3C0D2A3E5E844466B752EDD6E2160271,PinName="Key",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/InputCore.Key"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="None",AutogeneratedDefaultValue="None",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - End Object - `, - size: [6, 8], - color: Configuration.nodeColors.red, - icon: SVGIcon.keyboard, - pins: 3, - pinNames: ["Pressed", "Released", "Key"], - delegate: false, - development: false, - }, - { - name: "9", - value: String.raw` - Begin Object Class=/Script/BlueprintGraph.K2Node_InputKey Name="K2Node_InputKey_8" - InputKey=Nine - NodePosX=-160 - NodePosY=288 - NodeGuid=02A84586D4F842AB87578A8F6DECDFE1 - CustomProperties Pin (PinId=F3EC3CC1CF984B15B391F75CD1B4ECC8,PinName="Pressed",Direction="EGPD_Output",PinType.PinCategory="exec",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=2A1785736115425489B80816B0D1AC82,PinName="Released",Direction="EGPD_Output",PinType.PinCategory="exec",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=6C6769AC5FFF4CDF98004FEE47E9A3FC,PinName="Key",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/InputCore.Key"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="None",AutogeneratedDefaultValue="None",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - End Object - `, - size: [6, 8], - color: Configuration.nodeColors.red, - icon: SVGIcon.keyboard, - pins: 3, - pinNames: ["Pressed", "Released", "Key"], - delegate: false, - development: false, - }, - { - name: "Debug Key 0", - value: String.raw` - Begin Object Class=/Script/InputBlueprintNodes.K2Node_InputDebugKey Name="K2Node_InputDebugKey_1" - InputKey=Zero - NodePosX=-304 - NodePosY=192 - NodeGuid=C07BBFC668144C4FB437B3F6B355E184 - CustomProperties Pin (PinId=9F869036E3A744A8A43AA43A7620F55F,PinName="Pressed",Direction="EGPD_Output",PinType.PinCategory="exec",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=6E45643AF86B4A62A751A9B63A57862A,PinName="Released",Direction="EGPD_Output",PinType.PinCategory="exec",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=EC8FCA3A4A034EA59784E3A145C8DDCF,PinName="Key",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/InputCore.Key"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="None",AutogeneratedDefaultValue="None",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=1F6919C3378A48EBBDEE77BD7F1F4E6A,PinName="ActionValue",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/EnhancedInput.InputActionValue"',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: [8.5, 11], - color: Configuration.nodeColors.red, - icon: SVGIcon.keyboard, - pins: 4, - pinNames: ["Pressed", "Released", "Key", "Action Value"], - delegate: false, - development: true, - }, - { - name: "Debug Key 4", - value: String.raw` - Begin Object Class=/Script/InputBlueprintNodes.K2Node_InputDebugKey Name="K2Node_InputDebugKey_2" - InputKey=Four - NodePosX=32 - NodePosY=160 - NodeGuid=10A6E414241D451ABCCDD93A5DC731EC - CustomProperties Pin (PinId=2F11C0CFA4334DC69E85B9E319A4535D,PinName="Pressed",Direction="EGPD_Output",PinType.PinCategory="exec",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=19A17B1886904EE7872288EA7750E0A0,PinName="Released",Direction="EGPD_Output",PinType.PinCategory="exec",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=C3166A5D6C914ACE9A897A8F95F832A3,PinName="Key",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/InputCore.Key"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="None",AutogeneratedDefaultValue="None",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=411B9A362C694A60A29B2FA623CF1CD4,PinName="ActionValue",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/EnhancedInput.InputActionValue"',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: [8.5, 11], - color: Configuration.nodeColors.red, - icon: SVGIcon.keyboard, - pins: 4, - pinNames: ["Pressed", "Released", "Key", "Action Value"], - delegate: false, - development: true, - }, - { - name: "Num 1", - value: String.raw` - Begin Object Class=/Script/BlueprintGraph.K2Node_InputKey Name="K2Node_InputKey_9" - InputKey=NumPadOne - NodePosX=-240 - NodePosY=64 - NodeGuid=1B61D1A914354095A8A8420B68656463 - CustomProperties Pin (PinId=2F18160D6E56431D8A81ACD578E0131C,PinName="Pressed",Direction="EGPD_Output",PinType.PinCategory="exec",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=0957F9CBAC034E2EBD87B15904B75FF1,PinName="Released",Direction="EGPD_Output",PinType.PinCategory="exec",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=45805673C5CF4C80BB198F99EF1FEB24,PinName="Key",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/InputCore.Key"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="None",AutogeneratedDefaultValue="None",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - End Object - `, - size: [6.5, 8], - color: Configuration.nodeColors.red, - icon: SVGIcon.keyboard, - pins: 3, - pinNames: ["Pressed", "Released", "Key"], - delegate: false, - development: false, - }, - { - name: "Num 6", - value: String.raw` - Begin Object Class=/Script/BlueprintGraph.K2Node_InputKey Name="K2Node_InputKey_10" - InputKey=NumPadSix - NodePosX=256 - NodePosY=-32 - NodeGuid=26F046FCA2394E5A975801CA389D6E18 - CustomProperties Pin (PinId=450CA89B6E3348D8819EBA1315618F01,PinName="Pressed",Direction="EGPD_Output",PinType.PinCategory="exec",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=4F3B98C52357433E9436C29F86844F94,PinName="Released",Direction="EGPD_Output",PinType.PinCategory="exec",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=A5BFA728BEA7452B99D3A67DFB2E800E,PinName="Key",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/InputCore.Key"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="None",AutogeneratedDefaultValue="None",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - End Object - `, - size: [6.5, 8], - color: Configuration.nodeColors.red, - icon: SVGIcon.keyboard, - pins: 3, - pinNames: ["Pressed", "Released", "Key"], - delegate: false, - development: false, - }, - { - name: "Debug Key Num 5", - value: String.raw` - Begin Object Class=/Script/InputBlueprintNodes.K2Node_InputDebugKey Name="K2Node_InputDebugKey_3" - InputKey=NumPadFive - NodePosX=16 - NodePosY=-48 - NodeGuid=FB21225080DF48DFB7A662369E470AA1 - CustomProperties Pin (PinId=8540A18FD95D477C93035CDB3D2AE2B0,PinName="Pressed",Direction="EGPD_Output",PinType.PinCategory="exec",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=B8E224DBCEB1454B81EC9462A6DB5F06,PinName="Released",Direction="EGPD_Output",PinType.PinCategory="exec",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=D7B687EA384A4E81B45C9CFB0996989F,PinName="Key",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/InputCore.Key"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="None",AutogeneratedDefaultValue="None",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=EC6AE35C9D9343E6965884DE97A9555A,PinName="ActionValue",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/EnhancedInput.InputActionValue"',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.5, 11], - color: Configuration.nodeColors.red, - icon: SVGIcon.keyboard, - pins: 4, - pinNames: ["Pressed", "Released", "Key", "Action Value"], - delegate: false, - development: true, - }, - { - name: "Num +", - value: String.raw` - Begin Object Class=/Script/BlueprintGraph.K2Node_InputKey Name="K2Node_InputKey_11" - InputKey=Add - NodePosX=-176 - NodePosY=-128 - NodeGuid=5D4F157F72EC42B69CDB89CB6EEC507C - CustomProperties Pin (PinId=9EFDA67BE6D341B8BC6248F6AEFC75DB,PinName="Pressed",Direction="EGPD_Output",PinType.PinCategory="exec",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=35304E478D344F05B081FCA9C3271C52,PinName="Released",Direction="EGPD_Output",PinType.PinCategory="exec",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=22180FA7E6054064922D73E6BF50E23A,PinName="Key",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/InputCore.Key"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="None",AutogeneratedDefaultValue="None",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - End Object - `, - size: [6, 8], - color: Configuration.nodeColors.red, - icon: SVGIcon.keyboard, - pins: 3, - pinNames: ["Pressed", "Released", "Key"], - delegate: false, - development: false, - }, - { - name: "Num -", - value: String.raw` - Begin Object Class=/Script/BlueprintGraph.K2Node_InputKey Name="K2Node_InputKey_12" - InputKey=Subtract - NodePosX=-480 - NodePosY=128 - NodeGuid=5DC438BC02904EC7B7252EC3A9E63E7E - CustomProperties Pin (PinId=EEF5174C8F8B4BBF999E26222C9F0003,PinName="Pressed",Direction="EGPD_Output",PinType.PinCategory="exec",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=C005CB1322CF4A39832A878229F790A4,PinName="Released",Direction="EGPD_Output",PinType.PinCategory="exec",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=58DC51053EC343BFA7033F833D7AEC4A,PinName="Key",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/InputCore.Key"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="None",AutogeneratedDefaultValue="None",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - End Object - `, - size: [6, 8], - color: Configuration.nodeColors.red, - icon: SVGIcon.keyboard, - pins: 3, - pinNames: ["Pressed", "Released", "Key"], - delegate: false, - development: false, - }, - { - name: "Num *", - value: String.raw` - Begin Object Class=/Script/BlueprintGraph.K2Node_InputKey Name="K2Node_InputKey_13" - InputKey=Multiply - NodePosX=-304 - NodePosY=368 - NodeGuid=7B9AEEA6FD3D43BE9703A49FC653B3EE - CustomProperties Pin (PinId=13493EE95CF9461D82EBC6312E5FB99B,PinName="Pressed",Direction="EGPD_Output",PinType.PinCategory="exec",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=10E9155D52D340E59522D3004C684C58,PinName="Released",Direction="EGPD_Output",PinType.PinCategory="exec",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=BFC37A52F314418AAB75DFC22ACFC823,PinName="Key",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/InputCore.Key"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="None",AutogeneratedDefaultValue="None",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - End Object - `, - size: [6, 8], - color: Configuration.nodeColors.red, - icon: SVGIcon.keyboard, - pins: 3, - pinNames: ["Pressed", "Released", "Key"], - delegate: false, - development: false, - }, - { - name: "Num /", - value: String.raw` - Begin Object Class=/Script/BlueprintGraph.K2Node_InputKey Name="K2Node_InputKey_14" - InputKey=Divide - NodePosX=-16 - NodePosY=320 - NodeGuid=3614847DFA5F4E029DDAEA817DF34A92 - CustomProperties Pin (PinId=7A1E3D92081743D58198DFBC7F2B8A6E,PinName="Pressed",Direction="EGPD_Output",PinType.PinCategory="exec",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=6B03709D315C42229EF60E1CB72EC05F,PinName="Released",Direction="EGPD_Output",PinType.PinCategory="exec",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=49C225DB9A9A4054A3710C2C1A36B908,PinName="Key",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/InputCore.Key"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="None",AutogeneratedDefaultValue="None",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - End Object - `, - size: [6, 8], - color: Configuration.nodeColors.red, - icon: SVGIcon.keyboard, - pins: 3, - pinNames: ["Pressed", "Released", "Key"], - delegate: false, - development: false, - }, - { - name: "Num .", - value: String.raw` - Begin Object Class=/Script/BlueprintGraph.K2Node_InputKey Name="K2Node_InputKey_15" - InputKey=Decimal - NodePosX=352 - NodePosY=-96 - NodeGuid=572FFD40DB4541D497414E86EC4CC310 - CustomProperties Pin (PinId=8A053F5C10A942F88E96C966ABD2CDFF,PinName="Pressed",Direction="EGPD_Output",PinType.PinCategory="exec",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=2E39E39C2F3D4F8F8DDBD0B04A30A23E,PinName="Released",Direction="EGPD_Output",PinType.PinCategory="exec",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=BE6CA5BA91FF4AB29D695D881E42EC8C,PinName="Key",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/InputCore.Key"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="None",AutogeneratedDefaultValue="None",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - End Object - `, - size: [6, 8], - color: Configuration.nodeColors.red, - icon: SVGIcon.keyboard, - pins: 3, - pinNames: ["Pressed", "Released", "Key"], - delegate: false, - development: false, - }, - { - name: "Debug Key Num *", - value: String.raw` - Begin Object Class=/Script/InputBlueprintNodes.K2Node_InputDebugKey Name="K2Node_InputDebugKey_6" - InputKey=Multiply - NodePosX=-128 - NodePosY=144 - NodeGuid=997A0FD2D9774330AF08F15369C56285 - CustomProperties Pin (PinId=26A30BF9FBC446E6BEED77ACFC4ECF11,PinName="Pressed",Direction="EGPD_Output",PinType.PinCategory="exec",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=833512F46F464761ACC78C2555D654E5,PinName="Released",Direction="EGPD_Output",PinType.PinCategory="exec",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=ACACF4785ED34276B22969BA174904F2,PinName="Key",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/InputCore.Key"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="None",AutogeneratedDefaultValue="None",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=AC8DDD237434456DA1802FD4C07EE2F5,PinName="ActionValue",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/EnhancedInput.InputActionValue"',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.5, 11], - color: Configuration.nodeColors.red, - icon: SVGIcon.keyboard, - pins: 4, - pinNames: ["Pressed", "Released", "Key", "Action Value"], - delegate: false, - development: true, - }, - ]) - } -} diff --git a/tests/resources/IssuesNodes1.js b/tests/resources/IssuesNodes1.js deleted file mode 100644 index 89d812b..0000000 --- a/tests/resources/IssuesNodes1.js +++ /dev/null @@ -1,143 +0,0 @@ -import Configuration from "../../js/Configuration.js" -import Utility from "../../js/Utility.js" -import { expect } from "../fixtures/test.js" -import NodeTests from "./NodeTests.js" - -export default class IssuesNodes1 extends NodeTests { - static { - this.set([ - { - name: "Issue 18", - title: "Mask ( R )", - value: String.raw` - Begin Object Class=/Script/UnrealEd.MaterialGraphNode Name="MaterialGraphNode_37" ExportPath="/Script/UnrealEd.MaterialGraphNode'/Engine/Transient.NewMaterial:MaterialGraph_0.MaterialGraphNode_37'" - Begin Object Class=/Script/Engine.MaterialExpressionComponentMask Name="MaterialExpressionComponentMask_0" ExportPath="/Script/Engine.MaterialExpressionComponentMask'/Engine/Transient.NewMaterial:MaterialGraph_0.MaterialGraphNode_37.MaterialExpressionComponentMask_0'" - End Object - Begin Object Name="MaterialExpressionComponentMask_0" ExportPath="/Script/Engine.MaterialExpressionComponentMask'/Engine/Transient.NewMaterial:MaterialGraph_0.MaterialGraphNode_37.MaterialExpressionComponentMask_0'" - R=True - MaterialExpressionEditorX=-544 - MaterialExpressionEditorY=32 - MaterialExpressionGuid=8EFA535CAE3A4DAF9DAE27B200E06EDC - Material="/Script/UnrealEd.PreviewMaterial'/Engine/Transient.NewMaterial'" - End Object - MaterialExpression="/Script/Engine.MaterialExpressionComponentMask'MaterialExpressionComponentMask_0'" - NodePosX=-544 - NodePosY=32 - AdvancedPinDisplay=Shown - NodeGuid=54A40610EEC646A0954F310727D1B888 - CustomProperties Pin (PinId=DC3859AB4C8C12645EEA1AA4E500A637,PinName="Input",PinFriendlyName=NSLOCTEXT("MaterialGraphNode", "Space", " "),PinType.PinCategory="required",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=D5C8F4DF4AFE5EEB605ED382CD5744DE,PinName="R",PinType.PinCategory="optional",PinType.PinSubCategory="bool",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,DefaultValue="true",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=True,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=True,bOrphanedPin=False,) - CustomProperties Pin (PinId=7E43455B4D2232C4E99BB098631CAFCE,PinName="G",PinType.PinCategory="optional",PinType.PinSubCategory="bool",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,DefaultValue="false",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=True,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=True,bOrphanedPin=False,) - CustomProperties Pin (PinId=46CEC6754365CB39F9FC39944B40D5C6,PinName="B",PinType.PinCategory="optional",PinType.PinSubCategory="bool",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,DefaultValue="false",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=True,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=True,bOrphanedPin=False,) - CustomProperties Pin (PinId=F658E76C400B0AF242DFE292C92702C8,PinName="A",PinType.PinCategory="optional",PinType.PinSubCategory="bool",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,DefaultValue="false",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=True,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=True,bOrphanedPin=False,) - CustomProperties Pin (PinId=2EC8C8234D570AB2A03DB59A1FF65987,PinName="Output",PinFriendlyName=NSLOCTEXT("MaterialGraphNode", "Space", " "),Direction="EGPD_Output",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,) - End Object - `, - size: [7, 14.5], - color: Configuration.nodeColors.green, - icon: null, - pins: 6, - pinNames: Configuration.rgba, - delegate: false, - development: false, - additionalTest: async (node, pins, blueprintPage) => { - const relevantPins = [] - for (const pin of pins) { - const innerText = await pin.innerText() - if (Configuration.rgba.includes(innerText)) { - relevantPins.push(pin) - } - } - for (const pin of relevantPins) { - const pinName = await pin.innerText() - // Only pin R is checked - await expect(pin.locator('input[type="checkbox"]')).toBeChecked({ checked: pinName === "R" }) - } - await relevantPins[0].locator('input[type="checkbox"]').uncheck() // Uncheck "R" - await relevantPins[2].locator('input[type="checkbox"]').check() // Check "B" - await relevantPins[3].locator('input[type="checkbox"]').check() // Check "A" - await relevantPins[2].locator('input[type="checkbox"]').uncheck() // Uncheck "B" - await relevantPins[2].locator('input[type="checkbox"]').check() // Check "B" - await expect(node.locator(".ueb-node-name")).toHaveText("Mask ( B A )") - const resultSerialization = await blueprintPage.blueprintLocator.evaluate(blueprint => { - blueprint.selectAll() - return blueprint.template.getCopyInputObject().getSerializedText() - }) - const expectedSerialization = String.raw` - Begin Object Class=/Script/UnrealEd.MaterialGraphNode Name="MaterialGraphNode_37" ExportPath="/Script/UnrealEd.MaterialGraphNode'/Engine/Transient.NewMaterial:MaterialGraph_0.MaterialGraphNode_37'" - Begin Object Class=/Script/Engine.MaterialExpressionComponentMask Name="MaterialExpressionComponentMask_0" ExportPath="/Script/Engine.MaterialExpressionComponentMask'/Engine/Transient.NewMaterial:MaterialGraph_0.MaterialGraphNode_37.MaterialExpressionComponentMask_0'" - End Object - Begin Object Name="MaterialExpressionComponentMask_0" ExportPath="/Script/Engine.MaterialExpressionComponentMask'/Engine/Transient.NewMaterial:MaterialGraph_0.MaterialGraphNode_37.MaterialExpressionComponentMask_0'" - B=True - A=True - MaterialExpressionEditorX=-544 - MaterialExpressionEditorY=32 - MaterialExpressionGuid=8EFA535CAE3A4DAF9DAE27B200E06EDC - Material="/Script/UnrealEd.PreviewMaterial'/Engine/Transient.NewMaterial'" - End Object - MaterialExpression="/Script/Engine.MaterialExpressionComponentMask'MaterialExpressionComponentMask_0'" - NodePosX=-544 - NodePosY=32 - AdvancedPinDisplay=Shown - NodeGuid=54A40610EEC646A0954F310727D1B888 - CustomProperties Pin (PinId=DC3859AB4C8C12645EEA1AA4E500A637,PinName="Input",PinFriendlyName=NSLOCTEXT("MaterialGraphNode", "Space", " "),PinType.PinCategory="required",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=D5C8F4DF4AFE5EEB605ED382CD5744DE,PinName="R",PinType.PinCategory="optional",PinType.PinSubCategory="bool",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,DefaultValue="false",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=True,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=True,bOrphanedPin=False,) - CustomProperties Pin (PinId=7E43455B4D2232C4E99BB098631CAFCE,PinName="G",PinType.PinCategory="optional",PinType.PinSubCategory="bool",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,DefaultValue="false",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=True,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=True,bOrphanedPin=False,) - CustomProperties Pin (PinId=46CEC6754365CB39F9FC39944B40D5C6,PinName="B",PinType.PinCategory="optional",PinType.PinSubCategory="bool",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,DefaultValue="true",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=True,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=True,bOrphanedPin=False,) - CustomProperties Pin (PinId=F658E76C400B0AF242DFE292C92702C8,PinName="A",PinType.PinCategory="optional",PinType.PinSubCategory="bool",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,DefaultValue="true",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=True,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=True,bOrphanedPin=False,) - CustomProperties Pin (PinId=2EC8C8234D570AB2A03DB59A1FF65987,PinName="Output",PinFriendlyName=NSLOCTEXT("MaterialGraphNode", "Space", " "),Direction="EGPD_Output",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,) - End Object - ` - const words = expectedSerialization - .split("\n") - .map(row => row.match(/\s*("?\w+(\s+\w+)*).+/)?.[1]) - .filter(v => v?.length > 0) - expect(resultSerialization).toMatch(Utility.getFirstWordOrder(words)) - } - }, - { - name: "Issue 21", - title: "Subtract(1,1)", - value: String.raw` - Begin Object Class=/Script/UnrealEd.MaterialGraphNode Name="MaterialGraphNode_202" ExportPath=/Script/UnrealEd.MaterialGraphNode'/Engine/Transient.卡通:MaterialGraph_0.MaterialGraphNode_202' - Begin Object Class=/Script/Engine.MaterialExpressionSubtract Name="MaterialExpressionSubtract_10" ExportPath=/Script/Engine.MaterialExpressionSubtract'/Engine/Transient.卡通:MaterialGraph_0.MaterialGraphNode_202.MaterialExpressionSubtract_10' - End Object - Begin Object Name="MaterialExpressionSubtract_10" ExportPath=/Script/Engine.MaterialExpressionSubtract'/Engine/Transient.卡通:MaterialGraph_0.MaterialGraphNode_202.MaterialExpressionSubtract_10' - A=(Expression="/Script/Engine.MaterialExpressionSaturate'MaterialGraphNode_237.MaterialExpressionSaturate_3'") - B=(Expression="/Script/Engine.MaterialExpressionSaturate'MaterialGraphNode_201.MaterialExpressionSaturate_7'") - MaterialExpressionEditorX=0 - MaterialExpressionEditorY=0 - MaterialExpressionGuid=7202C13642DA1225C118CF867599387C - Material="/Script/UnrealEd.PreviewMaterial'/Engine/Transient.卡通'" - End Object - MaterialExpression=/Script/Engine.MaterialExpressionSubtract'MaterialExpressionSubtract_10' - NodePosX=0 - NodePosY=0 - NodeGuid=7008F5AC49E8F5BFD4C707819A58C021 - CustomProperties Pin (PinId=86D4DE5E48C71A576ED0519B982907B3,PinName="A",PinType.PinCategory="optional",PinType.PinSubCategory="red",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,DefaultValue="1",LinkedTo=(),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=5C75E1374E1E7436C72B9FA072875C04,PinName="B",PinType.PinCategory="optional",PinType.PinSubCategory="red",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,DefaultValue="1",LinkedTo=(),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=528D346A49976B0854764CA755AF2F93,PinName="Output",PinFriendlyName=NSLOCTEXT("MaterialGraphNode", "Space", " "),Direction="EGPD_Output",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,LinkedTo=(),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - End Object - `, - size: [8, 6], - color: Configuration.nodeColors.green, - icon: null, - pins: 3, - pinNames: ["A", "B"], - delegate: false, - development: false, - additionalTest: async (node, pins, blueprintPage) => { - await expect(pins[0].locator("ueb-input")).toHaveText("1.0") - await expect(pins[1].locator("ueb-input")).toHaveText("1.0") - let inputs = await node.locator("ueb-input").all() - await inputs[0].fill("-8") - await blueprintPage.blur() - expect(await node.evaluate(n => n.nodeDisplayName)).toEqual("Subtract(-8,1)") - await inputs[1].fill("9.2") - await blueprintPage.blur() - expect(await node.evaluate(n => n.nodeDisplayName)).toEqual("Subtract(-8,9.2)") - } - }, - ]) - } -} diff --git a/tests/resources/LegacyNodes.js b/tests/resources/LegacyNodes.js deleted file mode 100644 index 38b436a..0000000 --- a/tests/resources/LegacyNodes.js +++ /dev/null @@ -1,63 +0,0 @@ -import Configuration from "../../js/Configuration.js" -import SVGIcon from "../../js/SVGIcon.js" -import NodeTests from "./NodeTests.js" - -export default class LegacyNodes extends NodeTests { - static { - this.set([ - { - name: "Flip Flop legacy", - title: "Flip Flop", - value: String.raw` - Begin Object Class=K2Node_MacroInstance Name="K2Node_MacroInstance_1262" - NodePosX=3984 - NodePosY=-960 - NodeGuid=968059974A02AF6B67D2879EC909179A - Begin Object Class=EdGraphPin Name="EdGraphPin_59688" - End Object - Begin Object Class=EdGraphPin Name="EdGraphPin_59689" - End Object - Begin Object Class=EdGraphPin Name="EdGraphPin_59690" - End Object - Begin Object Class=EdGraphPin Name="EdGraphPin_59691" - End Object - MacroGraphReference=(MacroGraph=EdGraph'/Engine/EditorBlueprintResources/StandardMacros.StandardMacros:FlipFlop',GraphBlueprint=Blueprint'/Engine/EditorBlueprintResources/StandardMacros.StandardMacros',GraphGuid=BFFFAAE4434E166F549665AD1AA89B60) - Pins(0)=EdGraphPin'EdGraphPin_59688' - Pins(1)=EdGraphPin'EdGraphPin_59689' - Pins(2)=EdGraphPin'EdGraphPin_59690' - Pins(3)=EdGraphPin'EdGraphPin_59691' - Begin Object Name="EdGraphPin_59688" - PinType=(PinCategory="exec") - LinkedTo(0)=EdGraphPin'K2Node_InputKey_1185.EdGraphPin_42090' - LinkedTo(1)=EdGraphPin'K2Node_InputKey_14487.EdGraphPin_45417' - End Object - Begin Object Name="EdGraphPin_59689" - PinName="A" - Direction=EGPD_Output - PinType=(PinCategory="exec") - LinkedTo(0)=EdGraphPin'K2Node_CallFunction_7370.EdGraphPin_43320' - End Object - Begin Object Name="EdGraphPin_59690" - PinName="B" - Direction=EGPD_Output - PinType=(PinCategory="exec") - LinkedTo(0)=EdGraphPin'K2Node_CallFunction_44249.EdGraphPin_43272' - End Object - Begin Object Name="EdGraphPin_59691" - PinName="IsA" - Direction=EGPD_Output - PinType=(PinCategory="bool") - End Object - End Object - `, - size: [7.5, 8], - color: Configuration.nodeColors.gray, - icon: SVGIcon.flipflop, - pins: 4, - pinNames: ["A", "B", "Is A"], - delegate: false, - development: false, - }, - ]) - } -} diff --git a/tests/resources/MaterialNodes.js b/tests/resources/MaterialNodes.js deleted file mode 100644 index 1cfa834..0000000 --- a/tests/resources/MaterialNodes.js +++ /dev/null @@ -1,527 +0,0 @@ -import Configuration from "../../js/Configuration.js" -import PinElement from "../../js/element/PinElement.js" -import IntegerEntity from "../../js/entity/IntegerEntity.js" -import NumberEntity from "../../js/entity/NumberEntity.js" -import RBSerializationVector2DEntity from "../../js/entity/RBSerializationVector2DEntity.js" -import VectorEntity from "../../js/entity/VectorEntity.js" -import { expect } from "../fixtures/test.js" -import NodeTests from "./NodeTests.js" - -export default class MaterialNodes extends NodeTests { - static { - this.set([ - { - name: "Comment", - value: String.raw` - Begin Object Class=/Script/UnrealEd.MaterialGraphNode_Comment Name="MaterialGraphNode_Comment_0" ExportPath=/Script/UnrealEd.MaterialGraphNode_Comment'"/Engine/Transient.M_CobbleStone_Smooth:MaterialGraph_0.MaterialGraphNode_Comment_0"' - Begin Object Class=/Script/Engine.MaterialExpressionComment Name="MaterialExpressionComment_0" ExportPath=/Script/Engine.MaterialExpressionComment'"/Engine/Transient.M_CobbleStone_Smooth:MaterialGraph_0.MaterialGraphNode_Comment_0.MaterialExpressionComment_0"' - End Object - Begin Object Name="MaterialExpressionComment_0" ExportPath=/Script/Engine.MaterialExpressionComment'"/Engine/Transient.M_CobbleStone_Smooth:MaterialGraph_0.MaterialGraphNode_Comment_0.MaterialExpressionComment_0"' - SizeX=249 - SizeY=165 - Text="Comment" - MaterialExpressionEditorX=-5920 - MaterialExpressionEditorY=-704 - MaterialExpressionGuid=E21961B2B09144CF8607171C9D1E3489 - End Object - MaterialExpressionComment=/Script/Engine.MaterialExpressionComment'"MaterialExpressionComment_0"' - bCommentBubbleVisible_InDetailsPanel=False - NodePosX=-5920 - NodePosY=-704 - NodeWidth=249 - NodeHeight=165 - bCommentBubblePinned=False - bCommentBubbleVisible=False - NodeComment="Comment" - NodeGuid=A04CE0EEECF047A4918AC9B13818854E - End Object - `, - delegate: false, - development: false, - }, - { - name: "Constant", - title: "1e+04", - value: String.raw` - Begin Object Class=/Script/UnrealEd.MaterialGraphNode Name="MaterialGraphNode_41" ExportPath=/Script/UnrealEd.MaterialGraphNode'"/Engine/Transient.M_Brick_Cut_Stone:MaterialGraph_0.MaterialGraphNode_41"' - Begin Object Class=/Script/Engine.MaterialExpressionConstant Name="MaterialExpressionConstant_0" ExportPath=/Script/Engine.MaterialExpressionConstant'"/Engine/Transient.M_Brick_Cut_Stone:MaterialGraph_0.MaterialGraphNode_41.MaterialExpressionConstant_0"' - End Object - Begin Object Name="MaterialExpressionConstant_0" ExportPath=/Script/Engine.MaterialExpressionConstant'"/Engine/Transient.M_Brick_Cut_Stone:MaterialGraph_0.MaterialGraphNode_41.MaterialExpressionConstant_0"' - R=10000.000000 - MaterialExpressionEditorX=-1328 - MaterialExpressionEditorY=-880 - MaterialExpressionGuid=1149D6828E794743B8343514F4B5E579 - Material=/Script/UnrealEd.PreviewMaterial'"/Engine/Transient.M_Brick_Cut_Stone"' - bCollapsed=False - End Object - MaterialExpression=/Script/Engine.MaterialExpressionConstant'"MaterialExpressionConstant_0"' - NodePosX=-1328 - NodePosY=-880 - NodeGuid=087DAB628E1148BE89BB1DBC720109F1 - CustomProperties Pin (PinId=A4EA20596A6C410598615F5328D298C4,PinName="Value",PinType.PinCategory="optional",PinType.PinSubCategory="red",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,DefaultValue="10000.0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=True,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=99BE24A176124E02830C5F17A7DEF554,PinName="Output",PinFriendlyName=NSLOCTEXT("MaterialGraphNode", "Space", " "),Direction="EGPD_Output",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,) - End Object - `, - color: Configuration.nodeColors.green, - icon: null, - pins: 2, - pinNames: ["Value"], - delegate: false, - development: false, - additionalTest: async node => { - const value = 10000.0 - /** @type {Locator>} */ - const pin = node.locator("ueb-pin").first() - expect(await pin.evaluate(pin => pin.getDefaultValue().valueOf())).toBeCloseTo(value) - await expect(node.locator("ueb-input")).toHaveText([NumberEntity.printNumber(value)]) - } - }, - { - name: "Constant2Vector", - title: "0.1,23.9", - value: String.raw` - Begin Object Class=/Script/UnrealEd.MaterialGraphNode Name="MaterialGraphNode_42" ExportPath=/Script/UnrealEd.MaterialGraphNode'"/Engine/Transient.M_Brick_Cut_Stone:MaterialGraph_0.MaterialGraphNode_42"' - Begin Object Class=/Script/Engine.MaterialExpressionConstant2Vector Name="MaterialExpressionConstant2Vector_1" ExportPath=/Script/Engine.MaterialExpressionConstant2Vector'"/Engine/Transient.M_Brick_Cut_Stone:MaterialGraph_0.MaterialGraphNode_42.MaterialExpressionConstant2Vector_1"' - End Object - Begin Object Name="MaterialExpressionConstant2Vector_1" ExportPath=/Script/Engine.MaterialExpressionConstant2Vector'"/Engine/Transient.M_Brick_Cut_Stone:MaterialGraph_0.MaterialGraphNode_42.MaterialExpressionConstant2Vector_1"' - R=0.100000 - G=23.888880 - MaterialExpressionEditorX=-1312 - MaterialExpressionEditorY=-1312 - MaterialExpressionGuid=E1302404B22A4D66BB39F9C2652EA0A5 - Material=/Script/UnrealEd.PreviewMaterial'"/Engine/Transient.M_Brick_Cut_Stone"' - End Object - MaterialExpression=/Script/Engine.MaterialExpressionConstant2Vector'"MaterialExpressionConstant2Vector_1"' - NodePosX=-1312 - NodePosY=-1312 - NodeGuid=50998E65A4E54B04A39EADA323DEEEE0 - CustomProperties Pin (PinId=F0B9EDE0763E414096FA82A0C1D3B3D3,PinName="X",PinType.PinCategory="optional",PinType.PinSubCategory="red",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,DefaultValue="0.1",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=True,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=A5A2FCBE348D4075A3F7FCAD9299C9CB,PinName="Y",PinType.PinCategory="optional",PinType.PinSubCategory="red",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,DefaultValue="23.88888",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=True,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=FF6B0DF61B3849DEA00B539430E73C90,PinName="Output",PinFriendlyName=NSLOCTEXT("MaterialGraphNode", "Space", " "),Direction="EGPD_Output",PinType.PinCategory="mask",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=68FF49DB3534433CB8A7486036E434B7,PinName="Output2",PinFriendlyName=NSLOCTEXT("MaterialGraphNode", "Space", " "),Direction="EGPD_Output",PinType.PinCategory="mask",PinType.PinSubCategory="red",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=A98F7CB8EB5D467D8E2217BF4A1AFA71,PinName="Output3",PinFriendlyName=NSLOCTEXT("MaterialGraphNode", "Space", " "),Direction="EGPD_Output",PinType.PinCategory="mask",PinType.PinSubCategory="green",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 - `, - color: Configuration.nodeColors.yellow, - icon: null, - pins: 5, - pinNames: ["X", "Y"], - delegate: false, - development: false, - additionalTest: async node => { - const x = 0.1 - const y = 23.88888 - /** @type {Locator>} */ - const xPin = node.locator("ueb-pin").nth(0) - /** @type {Locator>} */ - const yPin = node.locator("ueb-pin").nth(1) - expect(await xPin.evaluate(pin => pin.getDefaultValue().valueOf())).toBeCloseTo(x) - expect(await yPin.evaluate(pin => pin.getDefaultValue().valueOf())).toBeCloseTo(y) - await expect(node.locator("ueb-input")).toHaveText([NumberEntity.printNumber(x), NumberEntity.printNumber(y)]) - } - }, - { - name: "Constant3Vector", - title: "0.00432,123,7.66e+09", - value: String.raw` - Begin Object Class=/Script/UnrealEd.MaterialGraphNode Name="MaterialGraphNode_40" ExportPath=/Script/UnrealEd.MaterialGraphNode'"/Engine/Transient.M_Brick_Cut_Stone:MaterialGraph_0.MaterialGraphNode_40"' - Begin Object Class=/Script/Engine.MaterialExpressionConstant3Vector Name="MaterialExpressionConstant3Vector_1" ExportPath=/Script/Engine.MaterialExpressionConstant3Vector'"/Engine/Transient.M_Brick_Cut_Stone:MaterialGraph_0.MaterialGraphNode_40.MaterialExpressionConstant3Vector_1"' - End Object - Begin Object Name="MaterialExpressionConstant3Vector_1" ExportPath=/Script/Engine.MaterialExpressionConstant3Vector'"/Engine/Transient.M_Brick_Cut_Stone:MaterialGraph_0.MaterialGraphNode_40.MaterialExpressionConstant3Vector_1"' - Constant=(R=0.004320,G=123.199997,B=7657650176.000000,A=0.000000) - MaterialExpressionEditorX=-2592 - MaterialExpressionEditorY=-688 - MaterialExpressionGuid=6854D92803B449F79902FC5BE6D244F9 - Material=/Script/UnrealEd.PreviewMaterial'"/Engine/Transient.M_Brick_Cut_Stone"' - End Object - MaterialExpression=/Script/Engine.MaterialExpressionConstant3Vector'"MaterialExpressionConstant3Vector_1"' - NodePosX=-2592 - NodePosY=-688 - NodeGuid=A166C6EF5D5D4C298F8549BFCD353E30 - CustomProperties Pin (PinId=8CFCA073717A4E7795F803C9A3F3ADA6,PinName="Constant",PinType.PinCategory="optional",PinType.PinSubCategory="rgb",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,DefaultValue="0.00432,123.199997,7657650176.0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=True,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=CD2387366A1745BA9A1F861F7698480A,PinName="Output",PinFriendlyName=NSLOCTEXT("MaterialGraphNode", "Space", " "),Direction="EGPD_Output",PinType.PinCategory="mask",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=F1B3B937A4074949AA46A2D9743D51A1,PinName="Output2",PinFriendlyName=NSLOCTEXT("MaterialGraphNode", "Space", " "),Direction="EGPD_Output",PinType.PinCategory="mask",PinType.PinSubCategory="red",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=2EE41C91F9B841ADA834AA42D10ADE20,PinName="Output3",PinFriendlyName=NSLOCTEXT("MaterialGraphNode", "Space", " "),Direction="EGPD_Output",PinType.PinCategory="mask",PinType.PinSubCategory="green",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=A4B265999B284DB0A5175E969C471A17,PinName="Output4",PinFriendlyName=NSLOCTEXT("MaterialGraphNode", "Space", " "),Direction="EGPD_Output",PinType.PinCategory="mask",PinType.PinSubCategory="blue",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 - `, - color: Configuration.nodeColors.yellow, - icon: null, - pins: 5, - pinNames: ["Constant"], - delegate: false, - development: false, - additionalTest: async node => { - /** @type {Locator>} */ - const input = node.locator("ueb-pin").first() - const values = await input.evaluate(pin => pin.getDefaultValue().toArray()) - const expected = [0.00432, 123.199997, 7657650176.0] - expected.forEach((v, i) => expect(v).toBeCloseTo(values[i])) - await expect(input.locator("ueb-input")).toHaveText(expected.map(v => NumberEntity.printNumber(v))) - } - }, - { - name: "Constant4Vector", - title: "4,10.5,2.5e+03,0.33", - value: String.raw` - Begin Object Class=/Script/UnrealEd.MaterialGraphNode Name="MaterialGraphNode_45" ExportPath=/Script/UnrealEd.MaterialGraphNode'"/Engine/Transient.M_Brick_Cut_Stone:MaterialGraph_0.MaterialGraphNode_45"' - Begin Object Class=/Script/Engine.MaterialExpressionConstant4Vector Name="MaterialExpressionConstant4Vector_1" ExportPath=/Script/Engine.MaterialExpressionConstant4Vector'"/Engine/Transient.M_Brick_Cut_Stone:MaterialGraph_0.MaterialGraphNode_45.MaterialExpressionConstant4Vector_1"' - End Object - Begin Object Name="MaterialExpressionConstant4Vector_1" ExportPath=/Script/Engine.MaterialExpressionConstant4Vector'"/Engine/Transient.M_Brick_Cut_Stone:MaterialGraph_0.MaterialGraphNode_45.MaterialExpressionConstant4Vector_1"' - Constant=(R=4.000000,G=10.500000,B=2500.669922,A=0.330000) - MaterialExpressionEditorX=-2864 - MaterialExpressionEditorY=-1600 - MaterialExpressionGuid=FA680399FB1F40299DCCD649976E2007 - Material=/Script/UnrealEd.PreviewMaterial'"/Engine/Transient.M_Brick_Cut_Stone"' - End Object - MaterialExpression=/Script/Engine.MaterialExpressionConstant4Vector'"MaterialExpressionConstant4Vector_1"' - NodePosX=-2864 - NodePosY=-1600 - NodeGuid=E48583AF6A9443409451AADB2BB950D8 - CustomProperties Pin (PinId=053AE05C1AE341DA9DF315E7AD1C181C,PinName="Constant",PinType.PinCategory="optional",PinType.PinSubCategory="rgba",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,DefaultValue="(R=4.000000,G=10.500000,B=2500.669922,A=0.330000)",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=True,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=DE4B35BE73EA4746848199EF88522E9F,PinName="Output",PinFriendlyName=NSLOCTEXT("MaterialGraphNode", "Space", " "),Direction="EGPD_Output",PinType.PinCategory="mask",PinType.PinSubCategory="rgba",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=68ECEB1DC6FD474285DCD24084C6791D,PinName="Output2",PinFriendlyName=NSLOCTEXT("MaterialGraphNode", "Space", " "),Direction="EGPD_Output",PinType.PinCategory="mask",PinType.PinSubCategory="red",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=4781E87620764899BAFA52A198FBD3CD,PinName="Output3",PinFriendlyName=NSLOCTEXT("MaterialGraphNode", "Space", " "),Direction="EGPD_Output",PinType.PinCategory="mask",PinType.PinSubCategory="green",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=447371DFAD4C468993232380A3E37707,PinName="Output4",PinFriendlyName=NSLOCTEXT("MaterialGraphNode", "Space", " "),Direction="EGPD_Output",PinType.PinCategory="mask",PinType.PinSubCategory="blue",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=AFCF5ADE766948A2889F0FAC51FDA44D,PinName="Output5",PinFriendlyName=NSLOCTEXT("MaterialGraphNode", "Space", " "),Direction="EGPD_Output",PinType.PinCategory="mask",PinType.PinSubCategory="alpha",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 - `, - color: Configuration.nodeColors.yellow, - icon: null, - pins: 6, - pinNames: ["Constant"], - delegate: false, - development: false, - additionalTest: async (node, pins) => { - const r = 4.0 - const g = 10.5 - const b = 2500.669922 - const a = 0.33 - /** @type {Locator>} */ - const pin = pins[0] - const rgba = await pin.evaluate(node => node.getDefaultValue().toArray()) - expect(rgba[0]).toBeCloseTo(r) - expect(rgba[1]).toBeCloseTo(g) - expect(rgba[2]).toBeCloseTo(b) - expect(rgba[3]).toBeCloseTo(a) - } - }, - { - name: "Sqrt", - value: String.raw` - Begin Object Class=/Script/UnrealEd.MaterialGraphNode Name="MaterialGraphNode_24" ExportPath=/Script/UnrealEd.MaterialGraphNode'"/Engine/Transient.M_CobbleStone_Pebble:MaterialGraph_0.MaterialGraphNode_24"' - Begin Object Class=/Script/Engine.MaterialExpressionSquareRoot Name="MaterialExpressionSquareRoot_0" ExportPath=/Script/Engine.MaterialExpressionSquareRoot'"/Engine/Transient.M_CobbleStone_Pebble:MaterialGraph_0.MaterialGraphNode_24.MaterialExpressionSquareRoot_0"' - End Object - Begin Object Name="MaterialExpressionSquareRoot_0" ExportPath=/Script/Engine.MaterialExpressionSquareRoot'"/Engine/Transient.M_CobbleStone_Pebble:MaterialGraph_0.MaterialGraphNode_24.MaterialExpressionSquareRoot_0"' - MaterialExpressionEditorX=-1552 - MaterialExpressionEditorY=-416 - MaterialExpressionGuid=3F37EEB301AE4B0192673A114358C546 - Material=/Script/UnrealEd.PreviewMaterial'"/Engine/Transient.M_CobbleStone_Pebble"' - bCollapsed=False - End Object - MaterialExpression=/Script/Engine.MaterialExpressionSquareRoot'"MaterialExpressionSquareRoot_0"' - NodePosX=-1552 - NodePosY=-416 - NodeGuid=5DB895BECADE486CB5F8A40B72C64637 - CustomProperties Pin (PinId=9BEA4A9DE7DE411EB9590041B6137505,PinName="Input",PinFriendlyName=NSLOCTEXT("MaterialGraphNode", "Space", " "),PinType.PinCategory="required",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=4F7BCB72BB064C5FA9EDFC004EEF3591,PinName="Output",PinFriendlyName=NSLOCTEXT("MaterialGraphNode", "Space", " "),Direction="EGPD_Output",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,) - End Object - `, - color: Configuration.nodeColors.green, - icon: null, - pins: 2, - pinNames: [], - delegate: false, - development: false, - }, - { - name: "Log10", - value: String.raw` - Begin Object Class=/Script/UnrealEd.MaterialGraphNode Name="MaterialGraphNode_26" ExportPath=/Script/UnrealEd.MaterialGraphNode'"/Engine/Transient.M_CobbleStone_Pebble:MaterialGraph_0.MaterialGraphNode_26"' - Begin Object Class=/Script/Engine.MaterialExpressionLogarithm10 Name="MaterialExpressionLogarithm10_0" ExportPath=/Script/Engine.MaterialExpressionLogarithm10'"/Engine/Transient.M_CobbleStone_Pebble:MaterialGraph_0.MaterialGraphNode_26.MaterialExpressionLogarithm10_0"' - End Object - Begin Object Name="MaterialExpressionLogarithm10_0" ExportPath=/Script/Engine.MaterialExpressionLogarithm10'"/Engine/Transient.M_CobbleStone_Pebble:MaterialGraph_0.MaterialGraphNode_26.MaterialExpressionLogarithm10_0"' - MaterialExpressionEditorX=-1699 - MaterialExpressionEditorY=-366 - MaterialExpressionGuid=D6C0D0C0B1C241C7BC5CAE85C32A967E - Material=/Script/UnrealEd.PreviewMaterial'"/Engine/Transient.M_CobbleStone_Pebble"' - End Object - MaterialExpression=/Script/Engine.MaterialExpressionLogarithm10'"MaterialExpressionLogarithm10_0"' - NodePosX=-1699 - NodePosY=-366 - NodeGuid=7432C0BB32F74D54B23EB5FFEB9D7255 - CustomProperties Pin (PinId=C3E922C93B644E5781F1C76FD70CA87D,PinName="X",PinType.PinCategory="required",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=48EB102C92F74A7E817286C32A8D217A,PinName="Output",PinFriendlyName=NSLOCTEXT("MaterialGraphNode", "Space", " "),Direction="EGPD_Output",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,) - End Object - `, - color: Configuration.nodeColors.green, - icon: null, - pins: 2, - pinNames: ["X"], - delegate: false, - development: false, - }, - { - name: "Log2", - value: String.raw` - Begin Object Class=/Script/UnrealEd.MaterialGraphNode Name="MaterialGraphNode_25" ExportPath=/Script/UnrealEd.MaterialGraphNode'"/Engine/Transient.M_CobbleStone_Pebble:MaterialGraph_0.MaterialGraphNode_25"' - Begin Object Class=/Script/Engine.MaterialExpressionLogarithm2 Name="MaterialExpressionLogarithm2_0" ExportPath=/Script/Engine.MaterialExpressionLogarithm2'"/Engine/Transient.M_CobbleStone_Pebble:MaterialGraph_0.MaterialGraphNode_25.MaterialExpressionLogarithm2_0"' - End Object - Begin Object Name="MaterialExpressionLogarithm2_0" ExportPath=/Script/Engine.MaterialExpressionLogarithm2'"/Engine/Transient.M_CobbleStone_Pebble:MaterialGraph_0.MaterialGraphNode_25.MaterialExpressionLogarithm2_0"' - MaterialExpressionEditorX=-1343 - MaterialExpressionEditorY=-380 - MaterialExpressionGuid=DFB490DA67CD4FED91729623FA6F76F9 - Material=/Script/UnrealEd.PreviewMaterial'"/Engine/Transient.M_CobbleStone_Pebble"' - End Object - MaterialExpression=/Script/Engine.MaterialExpressionLogarithm2'"MaterialExpressionLogarithm2_0"' - NodePosX=-1343 - NodePosY=-380 - NodeGuid=C413E5EDE2484269AB5BB8E6E14FD5DC - CustomProperties Pin (PinId=AA0DC6E48E864B2483F3F5239FDBC26D,PinName="X",PinType.PinCategory="required",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=7E2CEF20073B4A8DBCA5AEAFBEA3BE0B,PinName="Output",PinFriendlyName=NSLOCTEXT("MaterialGraphNode", "Space", " "),Direction="EGPD_Output",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,) - End Object - `, - color: Configuration.nodeColors.green, - icon: null, - pins: 2, - pinNames: ["X"], - delegate: false, - development: false, - }, - { - name: "Ln", - value: String.raw` - Begin Object Class=/Script/UnrealEd.MaterialGraphNode Name="MaterialGraphNode_27" ExportPath=/Script/UnrealEd.MaterialGraphNode'"/Engine/Transient.M_CobbleStone_Pebble:MaterialGraph_0.MaterialGraphNode_27"' - Begin Object Class=/Script/InterchangeImport.MaterialExpressionLogarithm Name="MaterialExpressionLogarithm_0" ExportPath=/Script/InterchangeImport.MaterialExpressionLogarithm'"/Engine/Transient.M_CobbleStone_Pebble:MaterialGraph_0.MaterialGraphNode_27.MaterialExpressionLogarithm_0"' - End Object - Begin Object Name="MaterialExpressionLogarithm_0" ExportPath=/Script/InterchangeImport.MaterialExpressionLogarithm'"/Engine/Transient.M_CobbleStone_Pebble:MaterialGraph_0.MaterialGraphNode_27.MaterialExpressionLogarithm_0"' - MaterialExpressionEditorX=-1808 - MaterialExpressionEditorY=-384 - MaterialExpressionGuid=A88BE2DBB50544539F7C340F1C521570 - Material=/Script/UnrealEd.PreviewMaterial'"/Engine/Transient.M_CobbleStone_Pebble"' - End Object - MaterialExpression=/Script/InterchangeImport.MaterialExpressionLogarithm'"MaterialExpressionLogarithm_0"' - NodePosX=-1808 - NodePosY=-384 - NodeGuid=7BC7C5E93F8F47BAB3C0086F9C2AE036 - CustomProperties Pin (PinId=DCCD2C267163472C98FFD44B5AC004DD,PinName="Input",PinFriendlyName=NSLOCTEXT("MaterialGraphNode", "Space", " "),PinType.PinCategory="required",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=D0ACD287FE494F0D8CB682DC7EABDD07,PinName="Output",PinFriendlyName=NSLOCTEXT("MaterialGraphNode", "Space", " "),Direction="EGPD_Output",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,) - End Object - `, - color: Configuration.nodeColors.green, - icon: null, - pins: 2, - pinNames: [], - delegate: false, - development: false, - }, - { - name: "Texture Sample", - value: String.raw` - Begin Object Class=/Script/UnrealEd.MaterialGraphNode Name="MaterialGraphNode_11" ExportPath=/Script/UnrealEd.MaterialGraphNode'"/Engine/Transient.M_CobbleStone_Pebble:MaterialGraph_0.MaterialGraphNode_11"' - Begin Object Class=/Script/Engine.MaterialExpressionTextureSample Name="MaterialExpressionTextureSample_8" ExportPath=/Script/Engine.MaterialExpressionTextureSample'"/Engine/Transient.M_CobbleStone_Pebble:MaterialGraph_0.MaterialGraphNode_11.MaterialExpressionTextureSample_8"' - End Object - Begin Object Name="MaterialExpressionTextureSample_8" ExportPath=/Script/Engine.MaterialExpressionTextureSample'"/Engine/Transient.M_CobbleStone_Pebble:MaterialGraph_0.MaterialGraphNode_11.MaterialExpressionTextureSample_8"' - Coordinates=(Expression=/Script/Engine.MaterialExpressionMultiply'"MaterialExpressionMultiply_12"') - Texture=/Script/Engine.Texture2D'"/Game/StarterContent/Textures/T_MacroVariation.T_MacroVariation"' - MaterialExpressionEditorX=-1056 - MaterialExpressionEditorY=-1392 - MaterialExpressionGuid=8A9B66F54B20419B8A09B9A31EEE0326 - Material=/Script/UnrealEd.PreviewMaterial'"/Engine/Transient.M_CobbleStone_Pebble"' - End Object - MaterialExpression=/Script/Engine.MaterialExpressionTextureSample'"MaterialExpressionTextureSample_8"' - NodePosX=-1056 - NodePosY=-1392 - AdvancedPinDisplay=Shown - NodeGuid=ABB48A5BD2DD43FFA097F233839224B4 - CustomProperties Pin (PinId=57F9CF0C528346ACBF859D991A2977C8,PinName="UVs",PinType.PinCategory="optional",PinType.PinSubCategory="byte",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,DefaultValue="0",LinkedTo=(MaterialGraphNode_13 103847E51C494723BAC2A040FB53291F,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=04074338E0FB457FB39F2F8737202A9D,PinName="Tex",PinType.PinCategory="optional",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=B6216A82E662464E9547EAF8F7C9156B,PinName="Apply View MipBias",PinType.PinCategory="optional",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=86F88FBB9F4744ABAF530B1699FD5C45,PinName="MipValueMode",PinType.PinCategory="optional",PinType.PinSubCategory="byte",PinType.PinSubCategoryObject=/Script/CoreUObject.Enum'"/Script/Engine.ETextureMipValueMode"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="None (use computed mip level)",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=True,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=True,bOrphanedPin=False,) - CustomProperties Pin (PinId=F971048A6287441491B3F431F9204643,PinName="Sampler Source",PinType.PinCategory="optional",PinType.PinSubCategory="byte",PinType.PinSubCategoryObject=/Script/CoreUObject.Enum'"/Script/Engine.ESamplerSourceMode"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="From texture asset",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=True,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=True,bOrphanedPin=False,) - CustomProperties Pin (PinId=57AE297DD9B641D49F96DE01DE60352D,PinName="Sampler Type",PinType.PinCategory="optional",PinType.PinSubCategory="byte",PinType.PinSubCategoryObject=/Script/CoreUObject.Enum'"/Script/Engine.EMaterialSamplerType"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="Color",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=True,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=True,bOrphanedPin=False,) - CustomProperties Pin (PinId=5EB251794C274FE29D545A848C25061A,PinName="RGB",Direction="EGPD_Output",PinType.PinCategory="mask",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=22B624FB96F2457AB5199C9AC8D6FED7,PinName="R",Direction="EGPD_Output",PinType.PinCategory="mask",PinType.PinSubCategory="red",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=(MaterialGraphNode_14 F0018EB452FE4F1C8A7A713AB4FBB4BA,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=0193BCA3C4A04EA3B71604FC23D817AB,PinName="G",Direction="EGPD_Output",PinType.PinCategory="mask",PinType.PinSubCategory="green",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=3105CB21DB34441582786D8B5FCB9B5E,PinName="B",Direction="EGPD_Output",PinType.PinCategory="mask",PinType.PinSubCategory="blue",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=057FD07998624E67B613294C0E91FDB0,PinName="A",Direction="EGPD_Output",PinType.PinCategory="mask",PinType.PinSubCategory="alpha",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=168889DC9D5D4F22B2F581DB425812EA,PinName="RGBA",Direction="EGPD_Output",PinType.PinCategory="mask",PinType.PinSubCategory="rgba",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 - `, - color: Configuration.nodeColors.darkTurquoise, - icon: null, - pins: 12, - pinNames: [ - "UVs", - "Tex", - "Apply View Mip Bias", - "Mip Value Mode", - "Sampler Source", - "Sampler Type", - "RGB", - "R", - "G", - "B", - "A", - "RGBA" - ], - delegate: false, - development: false, - }, - { - name: "Temporal Sobol", - value: String.raw` - Begin Object Class=/Script/UnrealEd.MaterialGraphNode Name="MaterialGraphNode_9" ExportPath=/Script/UnrealEd.MaterialGraphNode'"/Engine/Transient.NewMaterial:MaterialGraph_0.MaterialGraphNode_9"' - Begin Object Class=/Script/Engine.MaterialExpressionTemporalSobol Name="MaterialExpressionTemporalSobol_0" ExportPath=/Script/Engine.MaterialExpressionTemporalSobol'"/Engine/Transient.NewMaterial:MaterialGraph_0.MaterialGraphNode_9.MaterialExpressionTemporalSobol_0"' - End Object - Begin Object Name="MaterialExpressionTemporalSobol_0" ExportPath=/Script/Engine.MaterialExpressionTemporalSobol'"/Engine/Transient.NewMaterial:MaterialGraph_0.MaterialGraphNode_9.MaterialExpressionTemporalSobol_0"' - "ConstIndex"=4 - "ConstSeed"=(X=77.000000,Y=55.000000) - "MaterialExpressionEditorX"=-345 - "MaterialExpressionEditorY"=225 - "MaterialExpressionGuid"=D1A3B12340EE27538A3109B7B3D0E119 - "Material"=/Script/UnrealEd.PreviewMaterial'"/Engine/Transient.NewMaterial"' - End Object - "MaterialExpression"=/Script/Engine.MaterialExpressionTemporalSobol'"MaterialExpressionTemporalSobol_0"' - "NodePosX"=-345 - "NodePosY"=225 - "NodeGuid"=5BE5108B48EB26B6366D4DA6AF99285D - CustomProperties Pin (PinId=E9B08066434FD243EF8856B11A08588D,PinName="Index",PinType.PinCategory="optional",PinType.PinSubCategory="int",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,DefaultValue="4",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=4EB376FB4105AA0CFA52D990C82FE284,PinName="Seed",PinType.PinCategory="optional",PinType.PinSubCategory="rg",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,DefaultValue="X=77.000 Y=55.000",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=4A57DE0448EEA04661E83AA561BE2D94,PinName="Output",PinFriendlyName=NSLOCTEXT("MaterialGraphNode", "Space", " "),Direction="EGPD_Output",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,) - End Object - `, - color: Configuration.nodeColors.green, - icon: null, - pins: 3, - pinNames: [ - "Index", - "Seed" - ], - delegate: false, - development: false, - additionalTest: async node => { - /** @type {Locator>} */ - const indexPin = node.locator("ueb-pin").nth(0) - /** @type {Locator>} */ - const seedPin = node.locator("ueb-pin").nth(1) - expect(await indexPin.evaluate(pin => pin.getDefaultValue().value)).toBe(4) - const values = await seedPin.evaluate(pin => pin.getDefaultValue().toArray()) - expect(values).toStrictEqual([77, 55]) - } - }, - { - name: "AppendMany", - value: String.raw` - Begin Object Class=/Script/UnrealEd.MaterialGraphNode Name="MaterialGraphNode_3" ExportPath="/Script/UnrealEd.MaterialGraphNode'/Engine/Transient.Material_0:MaterialGraph_0.MaterialGraphNode_3'" - Begin Object Class=/Script/Engine.MaterialExpressionMaterialFunctionCall Name="MaterialExpressionMaterialFunctionCall_0" ExportPath="/Script/Engine.MaterialExpressionMaterialFunctionCall'/Engine/Transient.Material_0:MaterialGraph_0.MaterialGraphNode_3.MaterialExpressionMaterialFunctionCall_0'" - End Object - Begin Object Name="MaterialExpressionMaterialFunctionCall_0" ExportPath="/Script/Engine.MaterialExpressionMaterialFunctionCall'/Engine/Transient.Material_0:MaterialGraph_0.MaterialGraphNode_3.MaterialExpressionMaterialFunctionCall_0'" - MaterialFunction="/Script/Engine.MaterialFunction'/Engine/Functions/Engine_MaterialFunctions02/Utility/AppendMany.AppendMany'" - FunctionInputs(0)=(ExpressionInputId=885D0D3941709A0021D522BB0D350E84,Input=(OutputIndex=-1,InputName="R")) - FunctionInputs(1)=(ExpressionInputId=66655BEF4DEEE4FBB682D1B2533B646B,Input=(OutputIndex=-1,InputName="G")) - FunctionInputs(2)=(ExpressionInputId=7971790B4C1CF3D12A6BD5849BF51222,Input=(OutputIndex=-1,InputName="B")) - FunctionInputs(3)=(ExpressionInputId=E0358D7C4B4022F69AB64786F99318D6,Input=(OutputIndex=-1,InputName="A")) - FunctionOutputs(0)=(ExpressionOutputId=FA6B13694608C010AF452E92B3981900,Output=(OutputName="RG")) - FunctionOutputs(1)=(ExpressionOutputId=C48A5AA9468A429E4D9984AD43B50CE5,Output=(OutputName="RGB")) - FunctionOutputs(2)=(ExpressionOutputId=B55BAD0C44C4D883F0D33CB57D00AB3C,Output=(OutputName="RGBA")) - MaterialExpressionEditorX=384 - MaterialExpressionEditorY=768 - MaterialExpressionGuid=971FA65449F74582B4418B816DDCBCCF - Material="/Script/Engine.Material'/Engine/Transient.Material_0'" - Outputs(0)=(OutputName="RG") - Outputs(1)=(OutputName="RGB") - Outputs(2)=(OutputName="RGBA") - End Object - MaterialExpression="/Script/Engine.MaterialExpressionMaterialFunctionCall'MaterialExpressionMaterialFunctionCall_0'" - NodePosX=384 - NodePosY=768 - NodeGuid=7CBF0C7DDBF848FE8D7E9A85D56C3772 - CustomProperties Pin (PinId=36EB45FD36FA4918947D2811918524EF,PinName="R (S)",PinType.PinCategory="optional",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=3D2F2B761F6646E298BC96093285F44E,PinName="G (S)",PinType.PinCategory="optional",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=4194B7FE10FC4AEEB2B9B620437618C3,PinName="B (S)",PinType.PinCategory="optional",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=A29788A42F2E43E9B5F8959DF5478E8F,PinName="A (S)",PinType.PinCategory="optional",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=7C55A39ECC2E4A78B0A2918AF200EED4,PinName="RG",Direction="EGPD_Output",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=A21DE80A4A454574AF9B1E0F8CD7E9F1,PinName="RGB",Direction="EGPD_Output",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=E5937F981A604CF1AF885868325FC83E,PinName="RGBA",Direction="EGPD_Output",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,) - End Object - `, - color: Configuration.nodeColors.blue, - icon: null, - pins: 7, - pinNames: [ - "R (S)", - "G (S)", - "B (S)", - "A (S)", - "RG", - "RGB", - "RGBA", - ], - delegate: false, - development: false, - }, - { - name: "Input X_1 (Scalar)", - value: String.raw` - Begin Object Class=/Script/UnrealEd.MaterialGraphNode Name="MaterialGraphNode_14" ExportPath="/Script/UnrealEd.MaterialGraphNode'/Engine/Transient.Material_1:MaterialGraph_0.MaterialGraphNode_14'" - Begin Object Class=/Script/Engine.MaterialExpressionFunctionInput Name="MaterialExpressionFunctionInput_4" ExportPath="/Script/Engine.MaterialExpressionFunctionInput'/Engine/Transient.Material_1:MaterialGraph_0.MaterialGraphNode_14.MaterialExpressionFunctionInput_4'" - End Object - Begin Object Name="MaterialExpressionFunctionInput_4" ExportPath="/Script/Engine.MaterialExpressionFunctionInput'/Engine/Transient.Material_1:MaterialGraph_0.MaterialGraphNode_14.MaterialExpressionFunctionInput_4'" - InputName="X_1" - Id=220B12C48A1B4FD2A2F1964A3670D092 - InputType=FunctionInput_Scalar - bUsePreviewValueAsDefault=True - SortPriority=2 - MaterialExpressionEditorX=-64 - MaterialExpressionEditorY=208 - MaterialExpressionGuid=5B9F03CCBBD54567A9B6EAD08AAA08F0 - Material="/Script/Engine.Material'/Engine/Transient.Material_1'" - Function="/Script/Engine.MaterialFunction'/Engine/Transient.AppendMany'" - End Object - MaterialExpression="/Script/Engine.MaterialExpressionFunctionInput'MaterialExpressionFunctionInput_4'" - NodePosX=-64 - NodePosY=208 - NodeGuid=9379668BD62A45458DC56BE5B3F80A73 - CustomProperties Pin (PinId=1021DF0F4ABC4FE3BF1CF97F6FD78496,PinName="Preview",PinType.PinCategory="optional",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=C875FB5EEFDC4CE6BD98B872403F7C29,PinName="Output",PinFriendlyName=NSLOCTEXT("MaterialGraphNode", "Space", " "),Direction="EGPD_Output",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,) - End Object - `, - color: Configuration.nodeColors.red, - icon: null, - pins: 2, - pinNames: ["Preview"], - delegate: false, - development: false, - }, - { - name: "Input In (Vector3)", - value: String.raw` - Begin Object Class=/Script/UnrealEd.MaterialGraphNode Name="MaterialGraphNode_17" ExportPath="/Script/UnrealEd.MaterialGraphNode'/Engine/Transient.Material_1:MaterialGraph_0.MaterialGraphNode_17'" - Begin Object Class=/Script/Engine.MaterialExpressionFunctionInput Name="MaterialExpressionFunctionInput_7" ExportPath="/Script/Engine.MaterialExpressionFunctionInput'/Engine/Transient.Material_1:MaterialGraph_0.MaterialGraphNode_17.MaterialExpressionFunctionInput_7'" - End Object - Begin Object Name="MaterialExpressionFunctionInput_7" ExportPath="/Script/Engine.MaterialExpressionFunctionInput'/Engine/Transient.Material_1:MaterialGraph_0.MaterialGraphNode_17.MaterialExpressionFunctionInput_7'" - Id=2590318028564D9BAF90BEA43FBD3F1F - MaterialExpressionEditorX=512 - MaterialExpressionEditorY=224 - MaterialExpressionGuid=B0F1358EACAF46E5A277253263F0ECFC - Material="/Script/Engine.Material'/Engine/Transient.Material_1'" - End Object - MaterialExpression="/Script/Engine.MaterialExpressionFunctionInput'MaterialExpressionFunctionInput_7'" - NodePosX=512 - NodePosY=224 - NodeGuid=7F222623B44A4774BCA3C2F32DD16E98 - CustomProperties Pin (PinId=DD534EE002554330B23E7F4B984A52F5,PinName="Preview",PinType.PinCategory="optional",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=22FB979A3F314CBA9B2ABE11214E9827,PinName="Output",PinFriendlyName=NSLOCTEXT("MaterialGraphNode", "Space", " "),Direction="EGPD_Output",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,) - End Object - `, - color: Configuration.nodeColors.red, - icon: null, - pins: 2, - pinNames: ["Preview"], - delegate: false, - development: false, - }, - ]) - } -} diff --git a/tests/resources/NiagaraNodes.js b/tests/resources/NiagaraNodes.js deleted file mode 100644 index 6bbf722..0000000 --- a/tests/resources/NiagaraNodes.js +++ /dev/null @@ -1,482 +0,0 @@ -import { css } from "lit" -import Configuration from "../../js/Configuration.js" -import Utility from "../../js/Utility.js" -import PinElement from "../../js/element/PinElement.js" -import Vector4DEntity from "../../js/entity/Vector4DEntity.js" -import { expect } from "../fixtures/test.js" -import NodeTests from "./NodeTests.js" - -export default class NiagaraNodes extends NodeTests { - static { - this.set([ - { - name: "LogicEq", - title: "==", - value: String.raw` - Begin Object Class=/Script/NiagaraEditor.NiagaraNodeOp Name="NiagaraNodeOp_84" ExportPath="/Script/NiagaraEditor.NiagaraNodeOp'/Engine/Transient.NewNiagaraScript:NiagaraScriptSource_0.NiagaraGraph_0.NiagaraNodeOp_84'" - OpName="Boolean::LogicEq" - ChangeId=E8F9B2BA0D564EB9B931C93DD152FB69 - NodePosX=208 - NodePosY=144 - NodeGuid=E810B307E310413697CB9914DBC2A4B4 - CustomProperties Pin (PinId=BFC2067F95B7478B938D12EC5808D554,PinName="A",PinToolTip="A",PinType.PinCategory="Type",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.ScriptStruct'/Script/Niagara.NiagaraBool'",PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="false",AutogeneratedDefaultValue="false",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=653D4C4C85D349DEA2B79066FB615AD6,PinName="B",PinToolTip="B",PinType.PinCategory="Type",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.ScriptStruct'/Script/Niagara.NiagaraBool'",PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="true",AutogeneratedDefaultValue="true",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=4E45D3F396CE40C69D3F3949D18F1832,PinName="Result",PinToolTip="Result",Direction="EGPD_Output",PinType.PinCategory="Type",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.ScriptStruct'/Script/Niagara.NiagaraBool'",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.5, 5], - pins: 3, - delegate: false, - development: false, - additionalTest: async (node, pins) => { - expect(await node.evaluate(node => node.classList.contains("ueb-node-style-glass"))).toBeTruthy() - for (const pin of pins) { - expect(await pin.evaluate(element => element.entity.pinColor().cssText)) - .toBe(css`146, 0, 0`.cssText) - } - }, - }, - { - name: "LogicNEq", - title: "!=", - value: String.raw` - Begin Object Class=/Script/NiagaraEditor.NiagaraNodeOp Name="NiagaraNodeOp_85" ExportPath="/Script/NiagaraEditor.NiagaraNodeOp'/Engine/Transient.NewNiagaraScript:NiagaraScriptSource_0.NiagaraGraph_0.NiagaraNodeOp_85'" - OpName="Boolean::LogicNEq" - ChangeId=3526C49A19484FCAA258F5F1399E5199 - NodePosX=-80 - NodePosY=128 - NodeGuid=591862B832B847AE8F2194837B5C9A68 - CustomProperties Pin (PinId=0E889E7597AD478C9D4E65D8593F9192,PinName="A",PinToolTip="A",PinType.PinCategory="Type",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.ScriptStruct'/Script/Niagara.NiagaraBool'",PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="false",AutogeneratedDefaultValue="false",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=A6BF9D71327E4000BD8D29B52CE0C168,PinName="B",PinToolTip="B",PinType.PinCategory="Type",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.ScriptStruct'/Script/Niagara.NiagaraBool'",PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="true",AutogeneratedDefaultValue="true",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=36E21F9BAA3D45BEB74DD7D06C763524,PinName="Result",PinToolTip="Result",Direction="EGPD_Output",PinType.PinCategory="Type",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.ScriptStruct'/Script/Niagara.NiagaraBool'",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, 5], - pins: 3, - delegate: false, - development: false, - additionalTest: async (node, pins) => { - expect(await node.evaluate(node => node.classList.contains("ueb-node-style-glass"))).toBeTruthy() - for (const pin of pins) { - expect(await pin.evaluate(element => element.entity.pinColor().cssText)) - .toBe(css`146, 0, 0`.cssText) - } - }, - }, - { - name: "Niagara Logic AND", - title: "Logic AND", - value: String.raw` - Begin Object Class=/Script/NiagaraEditor.NiagaraNodeOp Name="NiagaraNodeOp_81" ExportPath="/Script/NiagaraEditor.NiagaraNodeOp'/Engine/Transient.NewNiagaraScript:NiagaraScriptSource_0.NiagaraGraph_0.NiagaraNodeOp_81'" - OpName="Boolean::LogicAnd" - ChangeId=43E42097BB3043EA8402318509E52B6C - NodePosX=-256 - NodePosY=128 - NodeGuid=A78CF37F79A2480DB705D21E5EF84B07 - CustomProperties Pin (PinId=62F6392991E14BB1A7F0E26AB98DB6DA,PinName="A",PinToolTip="A",PinType.PinCategory="Type",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.ScriptStruct'/Script/Niagara.NiagaraBool'",PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="false",AutogeneratedDefaultValue="false",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=F4F10FA3AC084A1AB2A6ABC3323B83EA,PinName="B",PinToolTip="B",PinType.PinCategory="Type",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.ScriptStruct'/Script/Niagara.NiagaraBool'",PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="true",AutogeneratedDefaultValue="true",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=022AFAE2280C4C8AB3D57EB3F1FECCE9,PinName="Result",PinToolTip="Result",Direction="EGPD_Output",PinType.PinCategory="Type",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.ScriptStruct'/Script/Niagara.NiagaraBool'",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=A2A828255F8D460C8044F32D6A5E9FCA,PinName="Add",PinType.PinCategory="Misc",PinType.PinSubCategory="DynamicAddPin",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, 8], - pins: 4, - pinNames: ["A", "B", "Add", "Result"], - delegate: false, - development: false, - additionalTest: async (node, pins) => { - expect(await node.evaluate(node => node.classList.contains("ueb-node-style-glass"))).toBeFalsy() - expect(await node.evaluate(node => node.classList.contains("ueb-node-style-default"))).toBeTruthy() - expect(await pins[0].evaluate(element => element.entity.pinColor().cssText)) - .toBe(css`146, 0, 0`.cssText) - expect(await pins[1].evaluate(element => element.entity.pinColor().cssText)) - .toBe(css`146, 0, 0`.cssText) - expect(await pins[3].evaluate(element => element.entity.pinColor().cssText)) - .toBe(css`146, 0, 0`.cssText) - }, - }, - { - name: "Niagara Logic OR", - title: "Logic OR", - value: String.raw` - Begin Object Class=/Script/NiagaraEditor.NiagaraNodeOp Name="NiagaraNodeOp_82" ExportPath="/Script/NiagaraEditor.NiagaraNodeOp'/Engine/Transient.NewNiagaraScript:NiagaraScriptSource_0.NiagaraGraph_0.NiagaraNodeOp_82'" - OpName="Boolean::LogicOr" - ChangeId=EB6169ADF12F4DB4AFB4F6E735519E61 - NodePosX=384 - NodePosY=128 - NodeGuid=5E46FFF127D24923A96DB2280941D891 - CustomProperties Pin (PinId=1A8E536F5DB04FCEB0DD5C28120B55F4,PinName="A",PinToolTip="A",PinType.PinCategory="Type",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.ScriptStruct'/Script/Niagara.NiagaraBool'",PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="false",AutogeneratedDefaultValue="false",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=1ABD86FA4F894D4C850E10C0BDFFE9BB,PinName="B",PinToolTip="B",PinType.PinCategory="Type",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.ScriptStruct'/Script/Niagara.NiagaraBool'",PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="true",AutogeneratedDefaultValue="true",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=A46C02BB383F42D796497153C25F81CE,PinName="Result",PinToolTip="Result",Direction="EGPD_Output",PinType.PinCategory="Type",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.ScriptStruct'/Script/Niagara.NiagaraBool'",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=22A699B9331C4E21911CF5D79481C74E,PinName="Add",PinType.PinCategory="Misc",PinType.PinSubCategory="DynamicAddPin",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.5, 8], - pins: 4, - pinNames: ["A", "B", "Add", "Result"], - delegate: false, - development: false, - additionalTest: async (node, pins) => { - expect(await node.evaluate(node => node.classList.contains("ueb-node-style-glass"))).toBeFalsy() - expect(await node.evaluate(node => node.classList.contains("ueb-node-style-default"))).toBeTruthy() - expect(await pins[0].evaluate(element => element.entity.pinColor().cssText)) - .toBe(css`146, 0, 0`.cssText) - expect(await pins[1].evaluate(element => element.entity.pinColor().cssText)) - .toBe(css`146, 0, 0`.cssText) - expect(await pins[3].evaluate(element => element.entity.pinColor().cssText)) - .toBe(css`146, 0, 0`.cssText) - }, - }, - { - name: "Niagara Logic NOT", - title: "Logic NOT", - value: String.raw` - Begin Object Class=/Script/NiagaraEditor.NiagaraNodeOp Name="NiagaraNodeOp_83" ExportPath="/Script/NiagaraEditor.NiagaraNodeOp'/Engine/Transient.NewNiagaraScript:NiagaraScriptSource_0.NiagaraGraph_0.NiagaraNodeOp_83'" - OpName="Boolean::LogicNot" - ChangeId=850211C079724647B479BFA82D533C76 - NodePosX=128 - NodePosY=128 - NodeGuid=1F3DA06DD27E488A9B6766E8CD203F81 - CustomProperties Pin (PinId=1396C29ABE9F4330B91B88E4788956D0,PinName="A",PinToolTip="A",PinType.PinCategory="Type",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.ScriptStruct'/Script/Niagara.NiagaraBool'",PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="true",AutogeneratedDefaultValue="true",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=F4FABE23D34A4B0C915D6B7117C11B57,PinName="Result",PinToolTip="Result",Direction="EGPD_Output",PinType.PinCategory="Type",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.ScriptStruct'/Script/Niagara.NiagaraBool'",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, 4], - pins: 2, - pinNames: ["A", "Result"], - delegate: false, - development: false, - additionalTest: async (node, pins) => { - expect(await node.evaluate(node => node.classList.contains("ueb-node-style-glass"))).toBeFalsy() - expect(await node.evaluate(node => node.classList.contains("ueb-node-style-default"))).toBeTruthy() - for (const pin of pins) { - expect(await pin.evaluate(element => element.entity.pinColor().cssText)) - .toBe(css`146, 0, 0`.cssText) - } - }, - }, - { - name: "Niagara Mul", - title: String.fromCharCode(0x2a2f), - value: String.raw` - Begin Object Class=/Script/NiagaraEditor.NiagaraNodeOp Name="NiagaraNodeOp_2" ExportPath="/Script/NiagaraEditor.NiagaraNodeOp'/Engine/Transient.NewNiagaraScript:NiagaraScriptSource_0.NiagaraGraph_0.NiagaraNodeOp_2'" - OpName="Numeric::Mul" - ChangeId=D255C58006D942A3B9EA40A7D0A9A26C - NodePosX=-432 - NodePosY=432 - NodeGuid=6C57BD28235446B286204A350C20824E - CustomProperties Pin (PinId=2CA19EFC7B8943C59D997AE9E20EDD9D,PinName="A",PinToolTip="A",PinType.PinCategory="Type",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.ScriptStruct'/Script/Niagara.NiagaraNumeric'",PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="1.0",AutogeneratedDefaultValue="1.0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=A6992BD09EBC4303B4B30A86BCF295A9,PinName="B",PinToolTip="B",PinType.PinCategory="Type",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.ScriptStruct'/Script/Niagara.NiagaraNumeric'",PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="1.0",AutogeneratedDefaultValue="1.0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=8539D0F6BC1F4A85A708B488C37C6FD9,PinName="Result",PinToolTip="Result",Direction="EGPD_Output",PinType.PinCategory="Type",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.ScriptStruct'/Script/Niagara.NiagaraNumeric'",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=C484E4BEEE6E41779EFFB696880FCAF0,PinName="Add",PinType.PinCategory="Misc",PinType.PinSubCategory="DynamicAddPin",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.5, 6], - pins: 4, - delegate: false, - development: false, - additionalTest: async node => { - expect(await node.evaluate(node => node.classList.contains("ueb-node-style-glass"))).toBeTruthy() - }, - }, - { - name: "Matrix Transform Position", - value: String.raw` - Begin Object Class=/Script/NiagaraEditor.NiagaraNodeOp Name="NiagaraNodeOp_93" ExportPath="/Script/NiagaraEditor.NiagaraNodeOp'/Engine/Transient.NewNiagaraScript:NiagaraScriptSource_0.NiagaraGraph_0.NiagaraNodeOp_93'" - OpName="Matrix::TransformPosition" - ChangeId=B50CCE545D064D12991CD1407DF14437 - NodePosX=800 - NodePosY=352 - NodeGuid=C8731F92EF32437D949081E06D044FC5 - CustomProperties Pin (PinId=B92730CFC09540B7A8B7C89EBC2A9526,PinName="M",PinToolTip="M",PinType.PinCategory="Type",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.ScriptStruct'/Script/Niagara.NiagaraMatrix'",PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="1.0,0.0,0.0,0.0,\\t\\t0.0,1.0,0.0,0.0,\\t\\t0.0,0.0,1.0,0.0,\\t\\t0.0,0.0,0.0,1.0",AutogeneratedDefaultValue="1.0,0.0,0.0,0.0,\\t\\t0.0,1.0,0.0,0.0,\\t\\t0.0,0.0,1.0,0.0,\\t\\t0.0,0.0,0.0,1.0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=D970C7D4FA4949918AD657EF0D55462B,PinName="V",PinToolTip="V",PinType.PinCategory="Type",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.ScriptStruct'/Script/Niagara.NiagaraPosition'",PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="1.0,1.0,1.0",AutogeneratedDefaultValue="1.0,1.0,1.0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=356EC3AE7343453EB6554019FC162416,PinName="Result",PinToolTip="Result",Direction="EGPD_Output",PinType.PinCategory="Type",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.ScriptStruct'/Script/Niagara.NiagaraPosition'",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: [17.5, 6], - pins: 3, - pinNames: ["M", "V", "Result"], - delegate: false, - development: false, - additionalTest: async node => { - expect(await node.evaluate(node => node.classList.contains("ueb-node-style-glass"))).toBeFalsy() - expect(await node.evaluate(node => node.classList.contains("ueb-node-style-default"))).toBeTruthy() - }, - }, - { - name: "Distance", - value: String.raw` - Begin Object Class=/Script/NiagaraEditor.NiagaraNodeOp Name="NiagaraNodeOp_59" ExportPath="/Script/NiagaraEditor.NiagaraNodeOp'/Engine/Transient.NewNiagaraScript:NiagaraScriptSource_0.NiagaraGraph_0.NiagaraNodeOp_59'" - OpName="Numeric::DistancePos" - ChangeId=4EE3F52A93A84F89AA06ED1D00DBB194 - NodePosX=-128 - NodePosY=384 - NodeGuid=C1DF3F04B05344D4A8BA11F5D9B7022C - CustomProperties Pin (PinId=EBEA639B227A45AEAF9D988854C0B00F,PinName="A",PinToolTip="A",PinType.PinCategory="Type",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.ScriptStruct'/Script/Niagara.NiagaraPosition'",PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="1.0",AutogeneratedDefaultValue="1.0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=D33EAF7D8B0042438A9985EF503D663D,PinName="B",PinToolTip="B",PinType.PinCategory="Type",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.ScriptStruct'/Script/Niagara.NiagaraPosition'",PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="1.0",AutogeneratedDefaultValue="1.0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=4BAEA4BD06C445908F7F5750358768D5,PinName="Result",PinToolTip="Result",Direction="EGPD_Output",PinType.PinCategory="Type",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.ScriptStruct'/Script/Niagara.NiagaraFloat'",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: [17.5, 7], - pins: 3, - pinNames: ["A", "B", "Result"], - delegate: false, - development: false, - additionalTest: async node => { - expect(await node.evaluate(node => node.classList.contains("ueb-node-style-glass"))).toBeFalsy() - expect(await node.evaluate(node => node.classList.contains("ueb-node-style-default"))).toBeTruthy() - }, - }, - { - name: "Multiply (Matrix * Vector4)", - value: String.raw` - Begin Object Class=/Script/NiagaraEditor.NiagaraNodeOp Name="NiagaraNodeOp_92" ExportPath="/Script/NiagaraEditor.NiagaraNodeOp'/Engine/Transient.NewNiagaraScript:NiagaraScriptSource_0.NiagaraGraph_0.NiagaraNodeOp_92'" - OpName="Matrix::MatrixVectorMultiply" - ChangeId=27BF0290BEB64ADA8B924165BC1B4638 - NodePosX=512 - NodePosY=480 - NodeGuid=597CA99BCD6540339C6EDD3F779DD5E2 - CustomProperties Pin (PinId=B18A8E214AA24427AD350D7548E67682,PinName="M",PinToolTip="M",PinType.PinCategory="Type",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.ScriptStruct'/Script/Niagara.NiagaraMatrix'",PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="1.0,0.0,0.0,0.0,\t\t0.0,1.0,0.0,0.0,\t\t0.0,0.0,1.0,0.0,\t\t0.0,0.0,0.0,1.0",AutogeneratedDefaultValue="1.0,0.0,0.0,0.0,\t\t0.0,1.0,0.0,0.0,\t\t0.0,0.0,1.0,0.0,\t\t0.0,0.0,0.0,1.0",LinkedTo=(NiagaraNodeParameterMapGet_2 77AD8CE312C44F3996A0AF04607A4DD6,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=28E62E1F14204AD1857565EF6C7A63F3,PinName="V",PinToolTip="V",PinType.PinCategory="Type",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.ScriptStruct'/Script/CoreUObject.Vector4f'",PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="22.000000,33.000000,44.000000,55.000000",AutogeneratedDefaultValue="1.0,1.0,1.0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=9A2423D0FFC945DA85DA823BD71D6BA0,PinName="Result",PinToolTip="Result",Direction="EGPD_Output",PinType.PinCategory="Type",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.ScriptStruct'/Script/CoreUObject.Vector4f'",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: [22.5, 7], - pins: 3, - pinNames: ["M", "V", "Result"], - delegate: false, - development: false, - additionalTest: async (node, pins, blueprintPage) => { - expect(await node.evaluate(node => node.classList.contains("ueb-node-style-glass"))).toBeFalsy() - expect(await node.evaluate(node => node.classList.contains("ueb-node-style-default"))).toBeTruthy() - expect(await pins[1].evaluate(/** @param {PinElement} pin */pin => pin.entity.DefaultValue.toArray())) - .toStrictEqual([22, 33, 44, 55]) - let inputs = await pins[1].locator("ueb-input").all() - await inputs[0].fill("-1") - await inputs[1].fill("-2") - await inputs[2].fill("-3") - await inputs[3].fill("-4") - await blueprintPage.blur() - await expect(inputs[0]).toContainText("-1.0") - await expect(inputs[1]).toContainText("-2.0") - await expect(inputs[2]).toContainText("-3.0") - await expect(inputs[3]).toContainText("-4.0") - const resultSerialization = await blueprintPage.blueprintLocator.evaluate(blueprint => { - blueprint.selectAll() - return blueprint.template.getCopyInputObject().getSerializedText() - }) - const expectedSerialization = String.raw` - Begin Object Class=/Script/NiagaraEditor.NiagaraNodeOp Name="NiagaraNodeOp_92" ExportPath="/Script/NiagaraEditor.NiagaraNodeOp'/Engine/Transient.NewNiagaraScript:NiagaraScriptSource_0.NiagaraGraph_0.NiagaraNodeOp_92'" - OpName="Matrix::MatrixVectorMultiply" - ChangeId=27BF0290BEB64ADA8B924165BC1B4638 - NodePosX=512 - NodePosY=480 - NodeGuid=597CA99BCD6540339C6EDD3F779DD5E2 - CustomProperties Pin (PinId=B18A8E214AA24427AD350D7548E67682,PinName="M",PinToolTip="M",PinType.PinCategory="Type",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.ScriptStruct'/Script/Niagara.NiagaraMatrix'",PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="1.0,0.0,0.0,0.0,\t\t0.0,1.0,0.0,0.0,\t\t0.0,0.0,1.0,0.0,\t\t0.0,0.0,0.0,1.0",AutogeneratedDefaultValue="1.0,0.0,0.0,0.0,\t\t0.0,1.0,0.0,0.0,\t\t0.0,0.0,1.0,0.0,\t\t0.0,0.0,0.0,1.0",LinkedTo=(NiagaraNodeParameterMapGet_2 77AD8CE312C44F3996A0AF04607A4DD6,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=28E62E1F14204AD1857565EF6C7A63F3,PinName="V",PinToolTip="V",PinType.PinCategory="Type",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.ScriptStruct'/Script/CoreUObject.Vector4f'",PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="-1.000000,-2.000000,-3.000000,-4.000000",AutogeneratedDefaultValue="1.0,1.0,1.0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=9A2423D0FFC945DA85DA823BD71D6BA0,PinName="Result",PinToolTip="Result",Direction="EGPD_Output",PinType.PinCategory="Type",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.ScriptStruct'/Script/CoreUObject.Vector4f'",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 - ` - const words = expectedSerialization - .split("\n") - .map(row => row.match(/\s*("?\w+(\s+\w+)*).+/)?.[1]) - .filter(v => v?.length > 0) - expect(resultSerialization).toMatch(Utility.getFirstWordOrder(words)) - }, - }, - { - name: "Align Quaternions", - value: String.raw` - Begin Object Class=/Script/NiagaraEditor.NiagaraNodeFunctionCall Name="NiagaraNodeFunctionCall_125" ExportPath="/Script/NiagaraEditor.NiagaraNodeFunctionCall'/Engine/Transient.NewNiagaraScript:NiagaraScriptSource_0.NiagaraGraph_0.NiagaraNodeFunctionCall_125'" - FunctionScript="/Script/Niagara.NiagaraScript'/Niagara/Functions/Rotation/AlignQuaternions.AlignQuaternions'" - CachedChangeId=46822C6B48B121BA33580E809890283B - FunctionDisplayName="AlignQuaternions" - ChangeId=1773D73F6A644287931126B8B2F67371 - NodePosX=-512 - NodePosY=128 - NodeGuid=DF5F941A4DE7430989CE74C42E9F0E6F - CustomProperties Pin (PinId=AE6D0569136F4208B97DD62D9FB2EFF6,PinName="BaselineRotation",PinType.PinCategory="Type",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.ScriptStruct'/Script/CoreUObject.Quat4f'",PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="0.000,0.000,0.000,1.000",AutogeneratedDefaultValue="0.000,0.000,0.000,1.000",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=32A04106CE014CF3B7A74E4CE3B7064B,PinName="NewRotation",PinType.PinCategory="Type",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.ScriptStruct'/Script/CoreUObject.Quat4f'",PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="0.000,0.000,0.000,1.000",AutogeneratedDefaultValue="0.000,0.000,0.000,1.000",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=5F121C4330074978A1F9792824AE3B5A,PinName="NewOutput",Direction="EGPD_Output",PinType.PinCategory="Type",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.ScriptStruct'/Script/CoreUObject.Quat4f'",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=True,bAdvancedView=False,bOrphanedPin=False,) - End Object - `, - size: [16, 5.5], - icon: null, - color: Configuration.nodeColors.darkerBlue, - pins: 3, - delegate: false, - development: false, - additionalTest: async (node, pins) => { - expect(await node.evaluate(node => node.classList.contains("ueb-node-style-glass"))).toBeFalsy() - expect(await node.evaluate(node => node.classList.contains("ueb-node-style-default"))).toBeTruthy() - expect(await pins[0].evaluate(p => p.entity.pinColor().cssText)).toBe(css`0, 88, 200`.cssText) - expect(await pins[1].evaluate(p => p.entity.pinColor().cssText)).toBe(css`0, 88, 200`.cssText) - expect(await pins[2].evaluate(p => p.entity.pinColor().cssText)).toBe(css`0, 88, 200`.cssText) - }, - }, - { - name: "Calculate A Volume Textures Distance Field Gradient", - value: String.raw` - Begin Object Class=/Script/NiagaraEditor.NiagaraNodeFunctionCall Name="NiagaraNodeFunctionCall_118" ExportPath="/Script/NiagaraEditor.NiagaraNodeFunctionCall'/Engine/Transient.NewNiagaraScript:NiagaraScriptSource_0.NiagaraGraph_0.NiagaraNodeFunctionCall_118'" - FunctionScript="/Script/Niagara.NiagaraScript'/Niagara/Functions/Textures/CalculateA_VolumeTexturesDistanceFieldGradient.CalculateA_VolumeTexturesDistanceFieldGradient'" - SelectedScriptVersion=FE54E5B243F724F59CBE18B14F541840 - CachedChangeId=DC7328824039207713ADFF82DEAF3A32 - FunctionDisplayName="CalculateA_VolumeTexturesDistanceFieldGradient" - ChangeId=5A8AF63A07AB47CCBF806D83FFB9020F - NodePosX=-512 - NodePosY=-512 - NodeGuid=3803C1B7F13C4D818D7AF71764B9957B - CustomProperties Pin (PinId=1C49656E46D540D0AC5961597B947D85,PinName="Sample Position",PinType.PinCategory="Type",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.ScriptStruct'/Script/Niagara.NiagaraPosition'",PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="0.000,0.000,0.000",AutogeneratedDefaultValue="0.000,0.000,0.000",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=1FF0DD84BE324BEE94AC35A5D83896E1,PinName="Scale Factor",PinType.PinCategory="Type",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.ScriptStruct'/Script/Niagara.NiagaraFloat'",PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="1.000000",AutogeneratedDefaultValue="1.000000",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=A2030D2728C34982A599AC7EAE2FDDE0,PinName="Volume Texture",PinType.PinCategory="Class",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.Class'/Script/Niagara.NiagaraDataInterfaceVolumeTexture'",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=True,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=FCCC0AC1CCD54A099E450D4A4FA6A23C,PinName="Volume Center Location",PinType.PinCategory="Type",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.ScriptStruct'/Script/Niagara.NiagaraPosition'",PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="0.000,0.000,0.000",AutogeneratedDefaultValue="0.000,0.000,0.000",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=F1BA4EFE91554666A80389736EB5005B,PinName="Volume Extents",PinType.PinCategory="Type",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.ScriptStruct'/Script/CoreUObject.Vector3f'",PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="0.000,0.000,0.000",AutogeneratedDefaultValue="0.000,0.000,0.000",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=40512C3E4F5C4B85BAC287179458EDEF,PinName="Distance Field Texture Channel",PinType.PinCategory="Enum",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/Engine.UserDefinedEnum'/Niagara/Enums/ENiagara_Float4Channel.ENiagara_Float4Channel'",PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="NewEnumerator0",AutogeneratedDefaultValue="NewEnumerator0",PersistentGuid=CC547F87ED03FB8EEA661F18ABDF8C16,bHidden=False,bNotConnectable=True,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=A5FEC96B447C42EB9CA7BE93AB04F93E,PinName="Vector To Surface",Direction="EGPD_Output",PinType.PinCategory="Type",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.ScriptStruct'/Script/CoreUObject.Vector3f'",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=True,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=6D55F00292734872B750828E15779CD5,PinName="Distance To Surface",Direction="EGPD_Output",PinType.PinCategory="Type",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.ScriptStruct'/Script/Niagara.NiagaraFloat'",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=True,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=CC5826BFCC784BECA71B5B09C145DCF7,PinName="Sampled Color",Direction="EGPD_Output",PinType.PinCategory="Type",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.ScriptStruct'/Script/CoreUObject.Vector4f'",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=True,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=A22662833F8446309AF4E72E09B2A6C5,PinName="Field Gradient",Direction="EGPD_Output",PinType.PinCategory="Type",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.ScriptStruct'/Script/CoreUObject.Vector3f'",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=True,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=59A2DB801C7D4E9180793F5F1F597B4F,PinName="IsoSurface Position",Direction="EGPD_Output",PinType.PinCategory="Type",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.ScriptStruct'/Script/Niagara.NiagaraPosition'",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=True,bAdvancedView=False,bOrphanedPin=False,) - End Object - `, - size: [25, 18], - icon: null, - color: Configuration.nodeColors.darkerBlue, - pins: 11, - pinNames: [ - "Sample Position", - "Scale Factor", - "Volume Texture", - "Volume Center Location", - "Volume Extents", - "Distance Field Texture Channel", - "Vector To Surface", - "Distance To Surface", - "Sampled Color", - "Field Gradient", - "Iso Surface Position", - ], - delegate: false, - development: false, - additionalTest: async (node, pins) => { - expect(await node.evaluate(node => node.classList.contains("ueb-node-style-glass"))).toBeFalsy() - expect(await node.evaluate(node => node.classList.contains("ueb-node-style-default"))).toBeTruthy() - expect(await pins[0].evaluate(p => p.entity.pinColor().cssText)).toBe(css`251, 146, 251`.cssText) - expect(await pins[1].evaluate(p => p.entity.pinColor().cssText)).toBe(css`160, 250, 68`.cssText) - expect(await pins[2].evaluate(p => p.entity.pinColor().cssText)).toBe(css`0, 168, 242`.cssText) - expect(await pins[3].evaluate(p => p.entity.pinColor().cssText)).toBe(css`251, 146, 251`.cssText) - expect(await pins[4].evaluate(p => p.entity.pinColor().cssText)).toBe(css`250, 200, 36`.cssText) - expect(await pins[6].evaluate(p => p.entity.pinColor().cssText)).toBe(css`250, 200, 36`.cssText) - expect(await pins[7].evaluate(p => p.entity.pinColor().cssText)).toBe(css`160, 250, 68`.cssText) - expect(await pins[8].evaluate(p => p.entity.pinColor().cssText)).toBe(css`0, 88, 200`.cssText) - expect(await pins[9].evaluate(p => p.entity.pinColor().cssText)).toBe(css`250, 200, 36`.cssText) - expect(await pins[10].evaluate(p => p.entity.pinColor().cssText)).toBe(css`251, 146, 251`.cssText) - }, - }, - { - name: "Interpolate Over Time Quaternion", - value: String.raw` - Begin Object Class=/Script/NiagaraEditor.NiagaraNodeFunctionCall Name="NiagaraNodeFunctionCall_160" ExportPath="/Script/NiagaraEditor.NiagaraNodeFunctionCall'/Engine/Transient.NewNiagaraScript:NiagaraScriptSource_0.NiagaraGraph_0.NiagaraNodeFunctionCall_160'" - FunctionScript="/Script/Niagara.NiagaraScript'/Niagara/Functions/Math/InterpolateOverTime_Quaternion.InterpolateOverTime_Quaternion'" - SelectedScriptVersion=5A6359E649629A32B6B4CA9D6A4CF08B - CachedChangeId=BD6C65FF48EE55BD0354208C6E7CFC5E - FunctionDisplayName="InterpolateOverTime_Quaternion" - ChangeId=AFBFC05C8AFD4E3D9256AB1181E12D82 - NodePosX=544 - NodePosY=-384 - NodeGuid=12612978C2CC4F0BB84C22D4B4EEC3E1 - CustomProperties Pin (PinId=A123640517EC4387958B42AE6AAAF9FA,PinName="Map",PinType.PinCategory="Type",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.ScriptStruct'/Script/Niagara.NiagaraParameterMap'",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=167B2B0C6E354603A988999007C19BA1,PinName="Rate Of Change",PinType.PinCategory="Type",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.ScriptStruct'/Script/Niagara.NiagaraFloat'",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=True,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=E6184BA334B24985A45FC5F9E73F81D2,PinName="FirstFrame",PinType.PinCategory="Type",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.ScriptStruct'/Script/Niagara.NiagaraBool'",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=True,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=1BDC577CF32A4990A7EEEB9AC3BBDAA2,PinName="Delta Time",PinType.PinCategory="Type",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.ScriptStruct'/Script/Niagara.NiagaraFloat'",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=True,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=7C1356D8BDD74EBBA569EB9E1905EA0D,PinName="Target Value",PinType.PinCategory="Type",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.ScriptStruct'/Script/CoreUObject.Quat4f'",PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="0.000,0.000,0.000,1.000",AutogeneratedDefaultValue="0.000,0.000,0.000,1.000",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=A57085A8B43144C1BCD7D67A81E09054,PinName="Initial Value",PinType.PinCategory="Type",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.ScriptStruct'/Script/CoreUObject.Quat4f'",PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="0.000,0.000,0.000,1.000",AutogeneratedDefaultValue="0.000,0.000,0.000,1.000",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=0A10BAB1865F442EA0BFE5F320469DE3,PinName="Map",Direction="EGPD_Output",PinType.PinCategory="Type",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.ScriptStruct'/Script/Niagara.NiagaraParameterMap'",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=True,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=3CF7483A34D64238BE6A3E9C20CE5111,PinName="Moving Average",Direction="EGPD_Output",PinType.PinCategory="Type",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.ScriptStruct'/Script/CoreUObject.Quat4f'",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=True,bAdvancedView=False,bOrphanedPin=False,) - End Object - `, - size: [17, 13], - icon: null, - color: Configuration.nodeColors.darkerBlue, - pins: 8, - pinNames: [ - "Map", - "Rate Of Change", - "First Frame", - "Delta Time", - "Target Value", - "Initial Value", - "Map", - "Moving Average", - ], - delegate: false, - development: false, - additionalTest: async (node, pins) => { - expect(await node.evaluate(node => node.classList.contains("ueb-node-style-glass"))).toBeFalsy() - expect(await node.evaluate(node => node.classList.contains("ueb-node-style-default"))).toBeTruthy() - expect(await pins[1].evaluate(p => p.entity.pinColor().cssText)).toBe(css`160, 250, 68`.cssText) - expect(await pins[2].evaluate(p => p.entity.pinColor().cssText)).toBe(css`146, 0, 0`.cssText) - expect(await pins[3].evaluate(p => p.entity.pinColor().cssText)).toBe(css`160, 250, 68`.cssText) - expect(await pins[4].evaluate(p => p.entity.pinColor().cssText)).toBe(css`0, 88, 200`.cssText) - expect(await pins[5].evaluate(p => p.entity.pinColor().cssText)).toBe(css`0, 88, 200`.cssText) - expect(await pins[7].evaluate(p => p.entity.pinColor().cssText)).toBe(css`0, 88, 200`.cssText) - }, - }, - { - name: "Niagara Abs", - title: "Abs", - value: String.raw` - Begin Object Class=/Script/NiagaraEditor.NiagaraNodeOp Name="NiagaraNodeOp_12" ExportPath="/Script/NiagaraEditor.NiagaraNodeOp'/Engine/Transient.NewNiagaraScript:NiagaraScriptSource_0.NiagaraGraph_0.NiagaraNodeOp_12'" - OpName="Numeric::Abs" - ChangeId=29B8C1201A5A453DAF589029C8FF3C71 - NodePosX=224 - NodePosY=336 - NodeGuid=F18211DAA458447E912DC2409D2257FA - CustomProperties Pin (PinId=946C3D0E755A4B75A23E5B462C1A7B82,PinName="A",PinToolTip="A",PinType.PinCategory="Type",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.ScriptStruct'/Script/Niagara.NiagaraNumeric'",PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="1.0",AutogeneratedDefaultValue="1.0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=9CD6DB4E94234A179733ED462921D416,PinName="Result",PinToolTip="Result",Direction="EGPD_Output",PinType.PinCategory="Type",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.ScriptStruct'/Script/Niagara.NiagaraNumeric'",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, 2.5], - icon: null, - pins: 2, - delegate: false, - development: false, - additionalTest: async (node, pins) => { - expect(await node.evaluate(node => node.classList.contains("ueb-node-style-glass"))).toBeTruthy() - expect(await node.evaluate(node => node.classList.contains("ueb-node-style-default"))).toBeFalsy() - expect(await pins[0].evaluate(p => p.entity.pinColor().cssText)).toBe(css`0, 88, 200`.cssText) - expect(await pins[1].evaluate(p => p.entity.pinColor().cssText)).toBe(css`0, 88, 200`.cssText) - }, - }, - { - name: "Niagara Add", - title: "+", - value: String.raw` - Begin Object Class=/Script/NiagaraEditor.NiagaraNodeOp Name="NiagaraNodeOp_0" ExportPath="/Script/NiagaraEditor.NiagaraNodeOp'/Engine/Transient.NewNiagaraScript:NiagaraScriptSource_0.NiagaraGraph_0.NiagaraNodeOp_0'" - OpName="Numeric::Add" - ChangeId=264B3D2C683F4201966C715DBA00A590 - NodePosX=800 - NodePosY=272 - NodeGuid=E62FD339348E42159E41F661B803F129 - CustomProperties Pin (PinId=553D489D7489472EA81C9C009029186B,PinName="A",PinToolTip="A",PinType.PinCategory="Type",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.ScriptStruct'/Script/Niagara.NiagaraNumeric'",PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="0.0",AutogeneratedDefaultValue="0.0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=9905D9F666734D179C8DA03CAE65FCD2,PinName="B",PinToolTip="B",PinType.PinCategory="Type",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.ScriptStruct'/Script/Niagara.NiagaraNumeric'",PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="0.0",AutogeneratedDefaultValue="0.0",LinkedTo=(NiagaraNodeFunctionCall_179 73E46ACCCD224AE6958C0DB9D300767E,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=B1DDBB31FCF24C5FBD99B7205274CF48,PinName="Result",PinToolTip="Result",Direction="EGPD_Output",PinType.PinCategory="Type",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.ScriptStruct'/Script/Niagara.NiagaraNumeric'",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=481ADC022BBF4D37BD5D5CE91D03C9C3,PinName="Add",PinType.PinCategory="Misc",PinType.PinSubCategory="DynamicAddPin",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.5, 6], - icon: null, - pins: 4, - delegate: false, - development: false, - additionalTest: async (node, pins) => { - expect(await node.evaluate(node => node.classList.contains("ueb-node-style-glass"))).toBeTruthy() - expect(await node.evaluate(node => node.classList.contains("ueb-node-style-default"))).toBeFalsy() - expect(await pins[0].evaluate(p => p.entity.pinColor().cssText)).toBe(css`0, 88, 200`.cssText) - expect(await pins[1].evaluate(p => p.entity.pinColor().cssText)).toBe(css`0, 88, 200`.cssText) - expect(await pins[3].evaluate(p => p.entity.pinColor().cssText)).toBe(css`0, 88, 200`.cssText) - }, - }, - ]) - } -} diff --git a/tests/resources/OperationsNodes.js b/tests/resources/OperationsNodes.js deleted file mode 100644 index a7ebe85..0000000 --- a/tests/resources/OperationsNodes.js +++ /dev/null @@ -1,565 +0,0 @@ -import SVGIcon from "../../js/SVGIcon.js" -import { expect } from "../fixtures/test.js" -import NodeTests from "./NodeTests.js" - -export default class OperationsNodes extends NodeTests { - static { - this.set([ - { - name: "Add double double", - title: "+", - value: String.raw` - Begin Object Class=/Script/BlueprintGraph.K2Node_CommutativeAssociativeBinaryOperator Name="K2Node_CommutativeAssociativeBinaryOperator_1" ExportPath="/Script/BlueprintGraph.K2Node_CommutativeAssociativeBinaryOperator'/Game/Map.Map:PersistentLevel.Map.EventGraph.K2Node_CommutativeAssociativeBinaryOperator_1'" - NumAdditionalInputs=3 - bIsPureFunc=True - FunctionReference=(MemberParent="/Script/CoreUObject.Class'/Script/Engine.KismetMathLibrary'",MemberName="Add_DoubleDouble") - NodePosX=1920 - NodePosY=-1424 - NodeGuid=898B12095E2149EB85F3D66ABF812C8D - CustomProperties Pin (PinId=7E49A86445F1A83779096DA2653ED2F9,PinName="self",PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target"),PinToolTip="Target\nKismet Math Library Object Reference",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.Class'/Script/Engine.KismetMathLibrary'",PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultObject="/Script/Engine.Default__KismetMathLibrary",PersistentGuid=00000000000000000000000000000000,bHidden=True,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=42E8757A4F34479027E6F3AC60B85161,PinName="A",PinToolTip="A\nFloat (double-precision)",PinType.PinCategory="real",PinType.PinSubCategory="double",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,DefaultValue="123.000000",AutogeneratedDefaultValue="0.0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=4631AA9648980812910BB6A44F8DB926,PinName="B",PinToolTip="B\nFloat (double-precision)",PinType.PinCategory="real",PinType.PinSubCategory="double",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,DefaultValue="234.000000",AutogeneratedDefaultValue="1.000000",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=46E01E834DC9C4ADC2A371BA3E6750FD,PinName="ReturnValue",PinToolTip="Return Value\nFloat (double-precision)\n\nAddition (A + B)",Direction="EGPD_Output",PinType.PinCategory="real",PinType.PinSubCategory="double",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,DefaultValue="0.0",AutogeneratedDefaultValue="0.0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=EA79B248A6876A3D535FD66AF32AD617,PinName="C",PinToolTip="C\nFloat (double-precision)",PinType.PinCategory="real",PinType.PinSubCategory="double",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,DefaultValue="345.000000",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=A1A5D31E765DD0B28389412697654E59,PinName="D",PinToolTip="D\nFloat (double-precision)",PinType.PinCategory="real",PinType.PinSubCategory="double",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,DefaultValue="456.000000",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=F622CBB2B1AD29C2A0F225F8D5275852,PinName="E",PinToolTip="E\nFloat (double-precision)",PinType.PinCategory="real",PinType.PinSubCategory="double",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,DefaultValue="567.000000",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - End Object - `, - size: [10.5, 11], - pins: 6, - delegate: false, - development: false, - variadic: true, - additionalTest: async (node, pins) => { - const values = ["123.0", "234.0", "345.0", "456.0", "567.0"] - for (let i = 0; i < pins.length; ++i) { - expect(await pins[i].evaluate(pin => pin.template.renderIcon().strings.join(""))) - .toStrictEqual(SVGIcon.operationPin.strings.join("")) - if (i < values.length) { - await expect(pins[i].locator("ueb-input")).toContainText(values[i]) - } - } - } - }, - { - name: "Less timespan timespan", - 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/Engine.KismetMathLibrary"',MemberName="Less_TimespanTimespan") - NodePosX=-192 - NodePosY=256 - NodeGuid=2CF3423BF9604C71957BE3EFDFD9DAFF - CustomProperties Pin (PinId=84732B8AE02247EB898E6FB149457E6A,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=8218DDBA01704149AD5FE655CE9FAD07,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=680CD9CFA7924525AFE30B703BD20BD6,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: async (node, pins) => { - for (const pin of pins) { - expect(await pin.evaluate(pin => pin.template.renderIcon().strings.join(""))) - .toStrictEqual(SVGIcon.operationPin.strings.join("")) - } - } - }, - { - name: "Less equal double double", - 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"' - bIsPureFunc=True - FunctionReference=(MemberParent=/Script/CoreUObject.Class'"/Script/Engine.KismetMathLibrary"',MemberName="LessEqual_DoubleDouble") - NodePosX=-128 - NodePosY=-128 - NodeGuid=BE4FB00052224A8AA7695069C0A4A6C0 - CustomProperties Pin (PinId=B83E6D436D73468087242654C1E71F11,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=25C2CC62A0834A07B81E770F3BD41493,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=3E135915A0FE467CBC499FDCAAB3906A,PinName="ReturnValue",PinToolTip="Return Value\nBoolean\n\nReturns true if A is Less than or 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=708C4E7324034655B5677DAAE057220D,PinName="ErrorTolerance",PinToolTip="Error Tolerance\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=True,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - End Object - `, - size: [9, 4], - pins: 3, - delegate: false, - development: false, - additionalTest: async (node, pins) => { - for (const pin of pins) { - expect(await pin.evaluate(pin => pin.template.renderIcon().strings.join(""))) - .toStrictEqual(SVGIcon.operationPin.strings.join("")) - } - } - }, - { - name: "Equal slate brush", - title: "==", - value: String.raw` - Begin Object Class=/Script/BlueprintGraph.K2Node_PromotableOperator Name="K2Node_PromotableOperator_0" - bIsPureFunc=True - FunctionReference=(MemberParent=/Script/CoreUObject.Class'"/Script/UMG.SlateBlueprintLibrary"',MemberName="EqualEqual_SlateBrush") - NodePosX=704 - NodePosY=-320 - NodeGuid=F0C20233151743A3A37807274CF6DF61 - CustomProperties Pin (PinId=4E90C9A1D4034AE68B26FF54DEDF4764,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=1E4802AFBB51467083225499C8967FA5,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=F34B818F900A4222BCC1DE111C2C7816,PinName="ReturnValue",PinToolTip="Return Value\nBoolean\n\nReturns whether brushes A and B are identical.",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, - additionalTest: async (node, pins) => { - for (const pin of pins) { - expect(await pin.evaluate(pin => pin.template.renderIcon().strings.join(""))) - .toStrictEqual(SVGIcon.operationPin.strings.join("")) - } - } - }, - { - name: "Greater timespan timespan", - title: ">", - value: String.raw` - 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 - "NodePosY"=256 - "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: async (node, pins) => { - for (const pin of pins) { - expect(await pin.evaluate(pin => pin.template.renderIcon().strings.join(""))) - .toStrictEqual(SVGIcon.operationPin.strings.join("")) - } - } - }, - { - name: "Greater equal byte byte", - 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"' - bIsPureFunc=True - FunctionReference=(MemberParent=/Script/CoreUObject.Class'"/Script/Engine.KismetMathLibrary"',MemberName="GreaterEqual_ByteByte") - NodePosX=-128 - NodePosY=128 - NodeGuid=97ABB121B7F6446CA7C5A0D2BB35D9CB - CustomProperties Pin (PinId=9DC86E2C7B5E4D499EDD11C26E0CE2F0,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=C4C29B972BCE479681067C79A8B45C55,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=BC0F5E45AED74808A59F5E7ACF749DA7,PinName="ReturnValue",PinToolTip="Return Value\nBoolean\n\nReturns true if A is greater than or 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=D231C63140CC4A37946C69DA21245F1C,PinName="ErrorTolerance",PinToolTip="Error Tolerance\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=True,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - End Object - `, - size: [9, 4], - pins: 3, - delegate: false, - development: false, - additionalTest: async (node, pins) => { - for (const pin of pins) { - expect(await pin.evaluate(pin => pin.template.renderIcon().strings.join(""))) - .toStrictEqual(SVGIcon.operationPin.strings.join("")) - } - } - }, - { - name: "AND", - value: String.raw` - Begin Object Class=/Script/BlueprintGraph.K2Node_CommutativeAssociativeBinaryOperator Name="K2Node_CommutativeAssociativeBinaryOperator_0" ExportPath=/Script/BlueprintGraph.K2Node_CommutativeAssociativeBinaryOperator'"/Temp/Untitled_1.Untitled_1:PersistentLevel.Untitled.EventGraph.K2Node_CommutativeAssociativeBinaryOperator_0"' - bIsPureFunc=True - FunctionReference=(MemberParent=/Script/CoreUObject.Class'"/Script/Engine.KismetMathLibrary"',MemberName="BooleanAND") - NodePosX=-128 - NodePosY=240 - NodeGuid=9E1635738D62423D9FD5F68526C4C6BF - CustomProperties Pin (PinId=DDE978511D404B33BC2B8FE6546ED348,PinName="self",PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target"),PinToolTip="Target\nKismet Math Library Object Reference",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/Engine.KismetMathLibrary"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultObject="/Script/Engine.Default__KismetMathLibrary",PersistentGuid=00000000000000000000000000000000,bHidden=True,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=651536110BC540B8902A00F40231EC0E,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,DefaultValue="false",AutogeneratedDefaultValue="false",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=AD6A19CF20A24DAB9D04A29222CFC7A4,PinName="B",PinToolTip="B\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,DefaultValue="false",AutogeneratedDefaultValue="false",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=6CB3B4F8E6B245FDAC6C8EBB4C7255CA,PinName="ReturnValue",PinToolTip="Return Value\nBoolean\n\nReturns the logical AND of two values (A AND 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,DefaultValue="false",AutogeneratedDefaultValue="false",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - End Object - `, - size: [12, 5], - pins: 3, - delegate: false, - development: false, - variadic: true, - additionalTest: async (node, pins, blueprintPage) => { - for (const pin of pins) { - expect(await pin.evaluate(pin => pin.template.renderIcon().strings.join(""))) - .toStrictEqual(SVGIcon.operationPin.strings.join("")) - } - let inputs = await node.locator(".ueb-pin-input").all() - for (const input of inputs) { - expect(await input.isChecked()).toBeFalsy() - } - await inputs[inputs.length - 1].check() - expect(await inputs[inputs.length - 1].isChecked()).toBeTruthy() - const variadic = blueprintPage.node.getByText("Add pin") - await variadic.click() - inputs = await node.locator(".ueb-pin-input").all() - await inputs[inputs.length - 2].uncheck() - for (const input of inputs) { - expect(await input.isChecked()).toBeFalsy() - } - } - }, - { - name: "NAND", - value: String.raw` - Begin Object Class=/Script/BlueprintGraph.K2Node_CommutativeAssociativeBinaryOperator Name="K2Node_CommutativeAssociativeBinaryOperator_1" ExportPath=/Script/BlueprintGraph.K2Node_CommutativeAssociativeBinaryOperator'"/Temp/Untitled_1.Untitled_1:PersistentLevel.Untitled.EventGraph.K2Node_CommutativeAssociativeBinaryOperator_1"' - bIsPureFunc=True - FunctionReference=(MemberParent=/Script/CoreUObject.Class'"/Script/Engine.KismetMathLibrary"',MemberName="BooleanNAND") - NodePosX=128 - NodePosY=256 - NodeGuid=04151C35334346F485A72260148E3683 - CustomProperties Pin (PinId=DA6F57B8405A454CB732191CC8E1DA8C,PinName="self",PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target"),PinToolTip="Target\nKismet Math Library Object Reference",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/Engine.KismetMathLibrary"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultObject="/Script/Engine.Default__KismetMathLibrary",PersistentGuid=00000000000000000000000000000000,bHidden=True,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=FE1504B885304718AFBB1F25A267B0E5,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,DefaultValue="false",AutogeneratedDefaultValue="false",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=C86F9F7461DF492F90491C54C15531AC,PinName="B",PinToolTip="B\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,DefaultValue="false",AutogeneratedDefaultValue="false",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=61F2A8E28586405D8CFF9713B457A9DC,PinName="ReturnValue",PinToolTip="Return Value\nBoolean\n\nReturns the logical NAND of two values (A AND 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,DefaultValue="false",AutogeneratedDefaultValue="false",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - End Object - `, - size: [13, 5], - pins: 3, - delegate: false, - development: false, - variadic: true, - additionalTest: async (node, pins) => { - for (const pin of pins) { - expect(await pin.evaluate(pin => pin.template.renderIcon().strings.join(""))) - .toStrictEqual(SVGIcon.operationPin.strings.join("")) - } - } - }, - { - name: "Bitwise AND int", - title: "&", - value: String.raw` - Begin Object Class=/Script/BlueprintGraph.K2Node_CommutativeAssociativeBinaryOperator Name="K2Node_CommutativeAssociativeBinaryOperator_7" ExportPath=/Script/BlueprintGraph.K2Node_CommutativeAssociativeBinaryOperator'"/Temp/Untitled_1.Untitled_1:PersistentLevel.Untitled.EventGraph.K2Node_CommutativeAssociativeBinaryOperator_7"' - bIsPureFunc=True - FunctionReference=(MemberParent=/Script/CoreUObject.Class'"/Script/Engine.KismetMathLibrary"',MemberName="And_IntInt") - NodePosX=-128 - NodePosY=-128 - NodeGuid=31C7173497E64F959674B9541C5E5E6A - CustomProperties Pin (PinId=D5A01DF5C9D84769BB13CAC3B62612C6,PinName="self",PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target"),PinToolTip="Target\nKismet Math Library Object Reference",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/Engine.KismetMathLibrary"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultObject="/Script/Engine.Default__KismetMathLibrary",PersistentGuid=00000000000000000000000000000000,bHidden=True,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=EF6F926F005143BB8C751D2ED71FD820,PinName="A",PinToolTip="A\nInteger",PinType.PinCategory="int",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,DefaultValue="0",AutogeneratedDefaultValue="0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=4DFFC112D90C4E59B1D8B4A8278E6BE5,PinName="B",PinToolTip="B\nInteger",PinType.PinCategory="int",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,DefaultValue="0",AutogeneratedDefaultValue="0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=4B661B544EA44016B03B498A7606DA99,PinName="ReturnValue",PinToolTip="Return Value\nInteger\n\nBitwise AND (A & B)",Direction="EGPD_Output",PinType.PinCategory="int",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,DefaultValue="0",AutogeneratedDefaultValue="0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - End Object - `, - size: [9, 5], - pins: 3, - delegate: false, - development: false, - variadic: true, - additionalTest: async (node, pins) => { - for (const pin of pins) { - expect(await pin.evaluate(pin => pin.template.renderIcon().strings.join(""))) - .toStrictEqual(SVGIcon.operationPin.strings.join("")) - } - } - }, - { - name: "Bitwise AND int64", - title: "&", - value: String.raw` - Begin Object Class=/Script/BlueprintGraph.K2Node_CommutativeAssociativeBinaryOperator Name="K2Node_CommutativeAssociativeBinaryOperator_8" ExportPath=/Script/BlueprintGraph.K2Node_CommutativeAssociativeBinaryOperator'"/Temp/Untitled_1.Untitled_1:PersistentLevel.Untitled.EventGraph.K2Node_CommutativeAssociativeBinaryOperator_8"' - bIsPureFunc=True - FunctionReference=(MemberParent=/Script/CoreUObject.Class'"/Script/Engine.KismetMathLibrary"',MemberName="And_Int64Int64") - NodePosX=128 - NodePosY=-128 - NodeGuid=48CCB97A110B4A6F8D54A95E138ABCE3 - CustomProperties Pin (PinId=A9992AAF8CFA4349A77A5BAE866884D3,PinName="self",PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target"),PinToolTip="Target\nKismet Math Library Object Reference",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/Engine.KismetMathLibrary"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultObject="/Script/Engine.Default__KismetMathLibrary",PersistentGuid=00000000000000000000000000000000,bHidden=True,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=7433EDE1E9CE4293BC3C8D73BC9D9E65,PinName="A",PinToolTip="A\nInteger64",PinType.PinCategory="int64",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,DefaultValue="0",AutogeneratedDefaultValue="0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=C5CCE51FCE554859A66EDCA66875B382,PinName="B",PinToolTip="B\nInteger64",PinType.PinCategory="int64",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,DefaultValue="0",AutogeneratedDefaultValue="0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=A4753BC402474CDFB5A2513A2D7FC8A5,PinName="ReturnValue",PinToolTip="Return Value\nInteger64\n\nBitwise AND (A & B)",Direction="EGPD_Output",PinType.PinCategory="int64",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,DefaultValue="0",AutogeneratedDefaultValue="0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - End Object - `, - size: [9, 5], - pins: 3, - delegate: false, - development: false, - variadic: true, - additionalTest: async (node, pins, blueprintPage) => { - for (const pin of pins) { - expect(await pin.evaluate(pin => pin.template.renderIcon().strings.join(""))) - .toStrictEqual(SVGIcon.operationPin.strings.join("")) - } - expect(await pins[0].evaluate(pin => pin.entity.DefaultValue.constructor.serialized)).toBeTruthy() - expect(await pins[1].evaluate(pin => pin.entity.DefaultValue.constructor.serialized)).toBeTruthy() - await pins[0].locator("ueb-input").fill("54") - await blueprintPage.blur() - expect(await pins[0].evaluate(pin => pin.entity.DefaultValue.constructor.serialized)).toBeTruthy() - expect(await pins[0].evaluate(pin => pin.entity.DefaultValue.serialize())).toEqual('"54"') - await pins[1].locator("ueb-input").fill("771") - await blueprintPage.blur() - expect(await pins[1].evaluate(pin => pin.entity.DefaultValue.constructor.serialized)).toBeTruthy() - expect(await pins[1].evaluate(pin => pin.entity.DefaultValue.serialize())).toEqual('"771"') - } - }, - { - name: "Bitwise OR int", - title: "|", - value: String.raw` - Begin Object Class=/Script/BlueprintGraph.K2Node_CommutativeAssociativeBinaryOperator Name="K2Node_CommutativeAssociativeBinaryOperator_9" ExportPath=/Script/BlueprintGraph.K2Node_CommutativeAssociativeBinaryOperator'"/Temp/Untitled_1.Untitled_1:PersistentLevel.Untitled.EventGraph.K2Node_CommutativeAssociativeBinaryOperator_9"' - NumAdditionalInputs=3 - bIsPureFunc=True - FunctionReference=(MemberParent=/Script/CoreUObject.Class'"/Script/Engine.KismetMathLibrary"',MemberName="Or_IntInt") - NodePosX=-128 - NodePosY=16 - NodeGuid=06CD76925AB9409989EA7D87CE23D6F5 - CustomProperties Pin (PinId=F8954C94C4174CDD84E8B12E07AF3C8E,PinName="self",PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target"),PinToolTip="Target\nKismet Math Library Object Reference",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/Engine.KismetMathLibrary"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultObject="/Script/Engine.Default__KismetMathLibrary",PersistentGuid=00000000000000000000000000000000,bHidden=True,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=13660D801D69401399CD1A1F5A35433B,PinName="A",PinToolTip="A\nInteger",PinType.PinCategory="int",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,DefaultValue="0",AutogeneratedDefaultValue="0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=D3721D48AE4545B59E01352B68C5D5AE,PinName="B",PinToolTip="B\nInteger",PinType.PinCategory="int",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,DefaultValue="0",AutogeneratedDefaultValue="0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=D6418AD11A2E4FD4A3E691DCDD9ED5C2,PinName="ReturnValue",PinToolTip="Return Value\nInteger\n\nBitwise OR (A | B)",Direction="EGPD_Output",PinType.PinCategory="int",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,DefaultValue="0",AutogeneratedDefaultValue="0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=54F9F4C9334341C6B393DDD94521C7F0,PinName="C",PinType.PinCategory="int",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=428ED3DA8C334D96B16D2660499AAD64,PinName="D",PinType.PinCategory="int",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=2B26090C03C7442CB4706D0757901B53,PinName="E",PinType.PinCategory="int",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, 11], - pins: 6, - delegate: false, - development: false, - variadic: true, - additionalTest: async (node, pins) => { - for (const pin of pins) { - expect(await pin.evaluate(pin => pin.template.renderIcon().strings.join(""))) - .toStrictEqual(SVGIcon.operationPin.strings.join("")) - } - } - }, - { - name: "Bitwise OR int64", - title: "|", - value: String.raw` - Begin Object Class=/Script/BlueprintGraph.K2Node_CommutativeAssociativeBinaryOperator Name="K2Node_CommutativeAssociativeBinaryOperator_10" ExportPath=/Script/BlueprintGraph.K2Node_CommutativeAssociativeBinaryOperator'"/Temp/Untitled_1.Untitled_1:PersistentLevel.Untitled.EventGraph.K2Node_CommutativeAssociativeBinaryOperator_10"' - NumAdditionalInputs=1 - bIsPureFunc=True - FunctionReference=(MemberParent=/Script/CoreUObject.Class'"/Script/Engine.KismetMathLibrary"',MemberName="Or_Int64Int64") - NodePosX=128 - NodePosY=64 - NodeGuid=490A54B477EA44128BA4024490F503F3 - CustomProperties Pin (PinId=EE1E4196F1554E14A0288F9F68BF25D9,PinName="self",PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target"),PinToolTip="Target\nKismet Math Library Object Reference",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/Engine.KismetMathLibrary"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultObject="/Script/Engine.Default__KismetMathLibrary",PersistentGuid=00000000000000000000000000000000,bHidden=True,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=64AB191561114DA58FA423353A7EAA14,PinName="A",PinToolTip="A\nInteger64",PinType.PinCategory="int64",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,DefaultValue="0",AutogeneratedDefaultValue="0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=4B572FB2A58647ED8869D587215EF6D2,PinName="B",PinToolTip="B\nInteger64",PinType.PinCategory="int64",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,DefaultValue="0",AutogeneratedDefaultValue="0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=BBC01569CA1C4C378917FF3FC42EA6DA,PinName="ReturnValue",PinToolTip="Return Value\nInteger64\n\nBitwise OR (A | B)",Direction="EGPD_Output",PinType.PinCategory="int64",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,DefaultValue="0",AutogeneratedDefaultValue="0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=C00EE5428FE0454B970846CBEEFD5B73,PinName="C",PinType.PinCategory="int64",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, 7], - pins: 4, - delegate: false, - development: false, - variadic: true, - additionalTest: async (node, pins) => { - for (const pin of pins) { - expect(await pin.evaluate(pin => pin.template.renderIcon().strings.join(""))) - .toStrictEqual(SVGIcon.operationPin.strings.join("")) - } - } - }, - { - name: "Bitwise NOT int", - title: "~", - value: String.raw` - Begin Object Class=/Script/BlueprintGraph.K2Node_CallFunction Name="K2Node_CallFunction_10" ExportPath=/Script/BlueprintGraph.K2Node_CallFunction'"/Temp/Untitled_1.Untitled_1:PersistentLevel.Untitled.EventGraph.K2Node_CallFunction_10"' - bIsPureFunc=True - FunctionReference=(MemberParent=/Script/CoreUObject.Class'"/Script/Engine.KismetMathLibrary"',MemberName="Not_Int") - NodePosX=-128 - NodePosY=-128 - NodeGuid=8EFCE5FB3D8847FC9B7A157358B52801 - CustomProperties Pin (PinId=C52BB542DF824EA7A7F89CE345326ACD,PinName="self",PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target"),PinToolTip="Target\nKismet Math Library Object Reference",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/Engine.KismetMathLibrary"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultObject="/Script/Engine.Default__KismetMathLibrary",PersistentGuid=00000000000000000000000000000000,bHidden=True,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=46BB4962971443EB8B7FB532FADAB165,PinName="A",PinToolTip="A\nInteger",PinType.PinCategory="int",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,DefaultValue="0",AutogeneratedDefaultValue="0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=64C43A0B4D1641688CB90B1706F3CE1F,PinName="ReturnValue",PinToolTip="Return Value\nInteger\n\nBitwise NOT (~A)",Direction="EGPD_Output",PinType.PinCategory="int",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,DefaultValue="0",AutogeneratedDefaultValue="0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - End Object - `, - size: [9, 3], - pins: 2, - delegate: false, - development: false, - variadic: false, - additionalTest: async (node, pins) => { - for (const pin of pins) { - expect(await pin.evaluate(pin => pin.template.renderIcon().strings.join(""))) - .toStrictEqual(SVGIcon.operationPin.strings.join("")) - } - } - }, - { - name: "Bitwise NOT int64", - title: "~", - value: String.raw` - Begin Object Class=/Script/BlueprintGraph.K2Node_CallFunction Name="K2Node_CallFunction_11" ExportPath=/Script/BlueprintGraph.K2Node_CallFunction'"/Temp/Untitled_1.Untitled_1:PersistentLevel.Untitled.EventGraph.K2Node_CallFunction_11"' - bIsPureFunc=True - FunctionReference=(MemberParent=/Script/CoreUObject.Class'"/Script/Engine.KismetMathLibrary"',MemberName="Not_Int64") - NodePosX=112 - NodePosY=-128 - NodeGuid=F3857767A96A4FD9A8E4FE678DA89BC7 - CustomProperties Pin (PinId=AB8568CF0A4B4E88A88E988A3B45EA37,PinName="self",PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target"),PinToolTip="Target\nKismet Math Library Object Reference",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/Engine.KismetMathLibrary"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultObject="/Script/Engine.Default__KismetMathLibrary",PersistentGuid=00000000000000000000000000000000,bHidden=True,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=FFD7B2F660CA480C835AB2EB846EC468,PinName="A",PinToolTip="A\nInteger64",PinType.PinCategory="int64",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,DefaultValue="0",AutogeneratedDefaultValue="0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=52C04C277D1348A6A507F01E8D31DE96,PinName="ReturnValue",PinToolTip="Return Value\nInteger64\n\nBitwise NOT (~A)",Direction="EGPD_Output",PinType.PinCategory="int64",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,DefaultValue="0",AutogeneratedDefaultValue="0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - End Object - `, - size: [9, 3], - pins: 2, - delegate: false, - development: false, - variadic: false, - additionalTest: async (node, pins) => { - for (const pin of pins) { - expect(await pin.evaluate(pin => pin.template.renderIcon().strings.join(""))) - .toStrictEqual(SVGIcon.operationPin.strings.join("")) - } - } - }, - { - name: "Bitwise XOR int", - title: "^", - value: String.raw` - Begin Object Class=/Script/BlueprintGraph.K2Node_CallFunction Name="K2Node_CallFunction_12" ExportPath=/Script/BlueprintGraph.K2Node_CallFunction'"/Temp/Untitled_1.Untitled_1:PersistentLevel.Untitled.EventGraph.K2Node_CallFunction_12"' - bIsPureFunc=True - FunctionReference=(MemberParent=/Script/CoreUObject.Class'"/Script/Engine.KismetMathLibrary"',MemberName="Xor_IntInt") - NodePosX=-128 - NodePosY=32 - NodeGuid=81529F08A6E045D6BD6C8BF368729C14 - CustomProperties Pin (PinId=1C2B19C61AC54A92835DDA0AD0750F2E,PinName="self",PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target"),PinToolTip="Target\nKismet Math Library Object Reference",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/Engine.KismetMathLibrary"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultObject="/Script/Engine.Default__KismetMathLibrary",PersistentGuid=00000000000000000000000000000000,bHidden=True,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=153EAE01EAD44FBC9A23A088F3F2BCDD,PinName="A",PinToolTip="A\nInteger",PinType.PinCategory="int",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,DefaultValue="0",AutogeneratedDefaultValue="0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=59E8178A4C394862BEF24B2D3DF9D919,PinName="B",PinToolTip="B\nInteger",PinType.PinCategory="int",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,DefaultValue="0",AutogeneratedDefaultValue="0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=63037115949747768EF0E3164D7C52AD,PinName="ReturnValue",PinToolTip="Return Value\nInteger\n\nBitwise XOR (A ^ B)",Direction="EGPD_Output",PinType.PinCategory="int",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,DefaultValue="0",AutogeneratedDefaultValue="0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - End Object - - `, - size: [9, 5], - pins: 3, - delegate: false, - development: false, - variadic: false, - additionalTest: async (node, pins) => { - for (const pin of pins) { - expect(await pin.evaluate(pin => pin.template.renderIcon().strings.join(""))) - .toStrictEqual(SVGIcon.operationPin.strings.join("")) - } - } - }, - { - name: "Bitwise XOR int64", - title: "^", - value: String.raw` - Begin Object Class=/Script/BlueprintGraph.K2Node_CallFunction Name="K2Node_CallFunction_13" ExportPath=/Script/BlueprintGraph.K2Node_CallFunction'"/Temp/Untitled_1.Untitled_1:PersistentLevel.Untitled.EventGraph.K2Node_CallFunction_13"' - bIsPureFunc=True - FunctionReference=(MemberParent=/Script/CoreUObject.Class'"/Script/Engine.KismetMathLibrary"',MemberName="Xor_Int64Int64") - NodePosX=128 - NodePosY=256 - NodeGuid=A95FABA8132C4BC0B4E35D2CAB877B7D - CustomProperties Pin (PinId=93AD25D5F9E846CFA01F5684AA015EFA,PinName="self",PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target"),PinToolTip="Target\nKismet Math Library Object Reference",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/Engine.KismetMathLibrary"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultObject="/Script/Engine.Default__KismetMathLibrary",PersistentGuid=00000000000000000000000000000000,bHidden=True,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=06FE8043E6454053B2F89474C4C028B5,PinName="A",PinToolTip="A\nInteger64",PinType.PinCategory="int64",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,DefaultValue="0",AutogeneratedDefaultValue="0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=E025E8CC7D21449A8FF29F755BC2180B,PinName="B",PinToolTip="B\nInteger64",PinType.PinCategory="int64",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,DefaultValue="0",AutogeneratedDefaultValue="0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=F43AEAD2428E400BB22DEAD9F4D05BCF,PinName="ReturnValue",PinToolTip="Return Value\nInteger64\n\nBitwise XOR (A ^ B)",Direction="EGPD_Output",PinType.PinCategory="int64",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,DefaultValue="0",AutogeneratedDefaultValue="0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - End Object - `, - size: [9, 5], - pins: 3, - delegate: false, - development: false, - variadic: false, - additionalTest: async (node, pins) => { - for (const pin of pins) { - expect(await pin.evaluate(pin => pin.template.renderIcon().strings.join(""))) - .toStrictEqual(SVGIcon.operationPin.strings.join("")) - } - } - }, - { - name: "SIN", - value: String.raw` - Begin Object Class=/Script/BlueprintGraph.K2Node_CallFunction Name="K2Node_CallFunction_26" ExportPath=/Script/BlueprintGraph.K2Node_CallFunction'"/Temp/Untitled_1.Untitled_1:PersistentLevel.Untitled.EventGraph.K2Node_CallFunction_26"' - bIsPureFunc=True - FunctionReference=(MemberParent=/Script/CoreUObject.Class'"/Script/Engine.KismetMathLibrary"',MemberName="Sin") - NodePosX=-256 - NodePosY=-256 - NodeGuid=FE2CD3AF6DF14671A45FB273B5DDDF8E - CustomProperties Pin (PinId=E48C5BE04F244CCFA93C5DF17AA41727,PinName="self",PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target"),PinToolTip="Target\nKismet Math Library Object Reference",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/Engine.KismetMathLibrary"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultObject="/Script/Engine.Default__KismetMathLibrary",PersistentGuid=00000000000000000000000000000000,bHidden=True,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=ED71A80DC02B45518D8D016209E95FB6,PinName="A",PinToolTip="A\nFloat (double-precision)",PinType.PinCategory="real",PinType.PinSubCategory="double",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,DefaultValue="0.0",AutogeneratedDefaultValue="0.0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=B89EE79C0898454BB00D8335BE922ED3,PinName="ReturnValue",PinToolTip="Return Value\nFloat (double-precision)\n\nReturns the sine of A (expects Radians)",Direction="EGPD_Output",PinType.PinCategory="real",PinType.PinSubCategory="double",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,DefaultValue="0.0",AutogeneratedDefaultValue="0.0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - End Object - `, - size: [12, 3], - pins: 2, - delegate: false, - development: false, - variadic: false, - additionalTest: async (node, pins) => { - for (const pin of pins) { - expect(await pin.evaluate(pin => pin.template.renderIcon().strings.join(""))) - .toStrictEqual(SVGIcon.operationPin.strings.join("")) - } - } - }, - { - name: "Not equal gameplay tag", - 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 - "NodePosY"=128 - "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: async (node, pins) => { - for (const pin of pins) { - expect(await pin.evaluate(pin => pin.template.renderIcon().strings.join(""))) - .toStrictEqual(SVGIcon.operationPin.strings.join("")) - } - } - }, - { - name: "Equal byte", - 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: async (node, pins) => { - for (const pin of pins) { - expect(await pin.evaluate(pin => pin.template.renderIcon().strings.join(""))) - .toStrictEqual(SVGIcon.operationPin.strings.join("")) - } - } - }, - ]) - } -} diff --git a/tests/resources/OtherNodes.js b/tests/resources/OtherNodes.js deleted file mode 100644 index f9ad751..0000000 --- a/tests/resources/OtherNodes.js +++ /dev/null @@ -1,624 +0,0 @@ -import Configuration from "../../js/Configuration.js" -import SVGIcon from "../../js/SVGIcon.js" -import { expect } from "../fixtures/test.js" -import NodeTests from "./NodeTests.js" - -export default class OtherNodes extends NodeTests { - static { - this.set([ - { - name: "Has Matching Gameplay Tag", - subtitle: "Target is Gameplay Tag Asset Interface", - value: String.raw` - Begin Object Class=/Script/BlueprintGraph.K2Node_Message Name="K2Node_Message_0" - bIsPureFunc=True - bIsConstFunc=True - bIsInterfaceCall=True - FunctionReference=(MemberParent=/Script/CoreUObject.Class'"/Script/GameplayTags.GameplayTagAssetInterface"',MemberName="HasMatchingGameplayTag") - NodePosX=-848 - NodePosY=-16 - NodeGuid=1A6F45D8B6C5452A87596976F23B84E6 - CustomProperties Pin (PinId=0BE7D0A19E49412380B3DC930CFAB511,PinName="execute",PinToolTip="\nExec",PinType.PinCategory="exec",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=1F51344A80C541309418234B6CD92251,PinName="then",PinToolTip="\nExec",Direction="EGPD_Output",PinType.PinCategory="exec",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=ADA8C6785AA94026882EEBBE42AA0B02,PinName="self",PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target"),PinToolTip="Target\nObject Reference",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/CoreUObject.Object"',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=True,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=7EDFDB02E67941018F24BBBEE5702B45,PinName="TagToCheck",PinToolTip="Tag to Check\nGameplay Tag Structure\n\nTag to check for a match",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/GameplayTags.GameplayTag"',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=55131057064742A6860304B1D06BEFAC,PinName="ReturnValue",PinToolTip="Return Value\nBoolean\n\nTrue if the asset has a gameplay tag that matches, false if not",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,DefaultValue="false",AutogeneratedDefaultValue="false",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - End Object - `, - color: Configuration.nodeColors.green, - icon: SVGIcon.functionSymbol, - pins: 5, - pinNames: ["Target", "Tag to Check", "Return Value"], - delegate: false, - development: false, - }, - { - name: "Can Jump", - subtitle: "Target is Character", - value: String.raw` - Begin Object Class=/Script/BlueprintGraph.K2Node_CallFunction Name="K2Node_CallFunction_8" - bIsPureFunc=True - bIsConstFunc=True - FunctionReference=(MemberParent=/Script/CoreUObject.Class'"/Script/Engine.Character"',MemberName="CanJump") - NodePosX=-672 - NodePosY=192 - NodeGuid=B02C8FE6AC8446D0841E7AC6539684A9 - CustomProperties Pin (PinId=B561A480CA65436A864A12201A469A6A,PinName="self",PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target"),PinToolTip="Target\nCharacter Object Reference",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/Engine.Character"',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=446739D0F2FB4ADD99427D3361351BFF,PinName="ReturnValue",PinToolTip="Return Value\nBoolean\n\nWhether the character can jump in the current state.",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,DefaultValue="false",AutogeneratedDefaultValue="false",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - End Object - `, - color: Configuration.nodeColors.green, - icon: SVGIcon.functionSymbol, - pins: 2, - pinNames: ["Target", "Return Value"], - delegate: false, - development: false, - }, - { - name: "Set Finish On Message", - subtitle: "Target is BTTask Blueprint Base", - value: String.raw` - Begin Object Class=/Script/BlueprintGraph.K2Node_CallFunction Name="K2Node_CallFunction_9" - FunctionReference=(MemberParent=/Script/CoreUObject.Class'"/Script/AIModule.BTTask_BlueprintBase"',MemberName="SetFinishOnMessage") - NodePosX=-752 - NodePosY=32 - NodeGuid=152AE61522404C4FB8A984E22233BA90 - CustomProperties Pin (PinId=AA65F714245245BBABEAC9DB0D30A1B8,PinName="execute",PinToolTip="\nExec",PinType.PinCategory="exec",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=E65D6A14850B4C3099B184E2718A253D,PinName="then",PinToolTip="\nExec",Direction="EGPD_Output",PinType.PinCategory="exec",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=B28838C8FD994D8B9CF9F9F5D1C60BF2,PinName="self",PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target"),PinToolTip="Target\nBTTask Blueprint Base Object Reference",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/AIModule.BTTask_BlueprintBase"',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=E31CB815EF3E418A89CAED51C9798597,PinName="MessageName",PinToolTip="Message Name\nName",PinType.PinCategory="name",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,DefaultValue="None",AutogeneratedDefaultValue="None",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - End Object - `, - color: Configuration.nodeColors.blue, - icon: SVGIcon.functionSymbol, - pins: 4, - pinNames: ["Target", "Message Name"], - delegate: false, - development: false, - }, - { - name: "Line Trace By Channel", - value: String.raw` - Begin Object Class=/Script/BlueprintGraph.K2Node_CallFunction Name="K2Node_CallFunction_0" - FunctionReference=(MemberParent=/Script/CoreUObject.Class'"/Script/Engine.KismetSystemLibrary"',MemberName="LineTraceSingle") - NodePosX=-480 - NodePosY=-144 - AdvancedPinDisplay=Shown - NodeGuid=F842A7449F24455B8B1198B11345DB9C - CustomProperties Pin (PinId=BFABF69DBB914DE38D163751AAB70E4B,PinName="execute",PinToolTip="\nExec",PinType.PinCategory="exec",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=EDFC912BE807488599E27B717CAD40AD,PinName="then",PinToolTip="\nExec",Direction="EGPD_Output",PinType.PinCategory="exec",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=B3716E637CD048418CE6D5D8D0C2A799,PinName="self",PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target"),PinToolTip="Target\nKismet System Library Object Reference",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/Engine.KismetSystemLibrary"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultObject="/Script/Engine.Default__KismetSystemLibrary",PersistentGuid=00000000000000000000000000000000,bHidden=True,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=9DA3C37CCD4A417A9F2DCE2A71232D6F,PinName="WorldContextObject",PinToolTip="World Context Object\nObject Reference",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/CoreUObject.Object"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=True,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=True,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=A3053BF0111F468789C77E9EADCB1331,PinName="Start",PinToolTip="Start\nVector\n\nStart of line segment.",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/CoreUObject.Vector"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=True,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="0, 0, 0",AutogeneratedDefaultValue="0, 0, 0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=9D71C42C3FA94EE68623F50EDF0A3ED7,PinName="End",PinToolTip="End\nVector\n\nEnd of line segment.",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/CoreUObject.Vector"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=True,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="0, 0, 0",AutogeneratedDefaultValue="0, 0, 0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=93DD1DFD330C48E785CC19B0ED37F0B8,PinName="TraceChannel",PinToolTip="Trace Channel\nETraceTypeQuery Enum",PinType.PinCategory="byte",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Enum'"/Script/Engine.ETraceTypeQuery"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="TraceTypeQuery1",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=DCF9ABA98358461099ED15E9DBD71D16,PinName="bTraceComplex",PinToolTip="Trace Complex\nBoolean\n\nTrue to test against complex collision, false to test against simplified collision.",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,DefaultValue="false",AutogeneratedDefaultValue="false",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=C8F98AFBD7D24416A6EBC9E5F99D71C0,PinName="ActorsToIgnore",PinToolTip="Actors to Ignore\nArray of Actor Object References",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/Engine.Actor"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=Array,PinType.bIsReference=True,PinType.bIsConst=True,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=True,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=BA6811254B84450382EA2A6113BB0805,PinName="DrawDebugType",PinToolTip="Draw Debug Type\nEDrawDebugTrace Enum",PinType.PinCategory="byte",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Enum'"/Script/Engine.EDrawDebugTrace"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="None",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=899C9DB84C70423285DE65B2CA053FCB,PinName="OutHit",PinToolTip="Out Hit\nHit Result Structure\n\nProperties of the trace hit.",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/Engine.HitResult"',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=8D886907D6AD42C3B6EEBF4C843E2007,PinName="bIgnoreSelf",PinToolTip="Ignore Self\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,DefaultValue="true",AutogeneratedDefaultValue="true",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=A8976968AE0046C493C612AF2B433D39,PinName="TraceColor",PinToolTip="Trace Color\nLinear Color Structure",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/CoreUObject.LinearColor"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="(R=1.000000,G=0.000000,B=0.000000,A=1.000000)",AutogeneratedDefaultValue="(R=1.000000,G=0.000000,B=0.000000,A=1.000000)",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=True,bOrphanedPin=False,) - CustomProperties Pin (PinId=1AE4B506C8174ACE9CD51E2638B16661,PinName="TraceHitColor",PinToolTip="Trace Hit Color\nLinear Color Structure",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/CoreUObject.LinearColor"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="(R=0.000000,G=1.000000,B=0.000000,A=1.000000)",AutogeneratedDefaultValue="(R=0.000000,G=1.000000,B=0.000000,A=1.000000)",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=True,bOrphanedPin=False,) - CustomProperties Pin (PinId=B7E84F13C2E44C0F9D5C967D0C2200A2,PinName="DrawTime",PinToolTip="Draw Time\nFloat (single-precision)",PinType.PinCategory="real",PinType.PinSubCategory="float",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,DefaultValue="5.000000",AutogeneratedDefaultValue="5.000000",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=True,bOrphanedPin=False,) - CustomProperties Pin (PinId=87EB3263DE5C4297AAFBAB07A960C352,PinName="ReturnValue",PinToolTip="Return Value\nBoolean\n\nTrue if there was a hit, false otherwise.",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,DefaultValue="false",AutogeneratedDefaultValue="false",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - End Object - `, - color: Configuration.nodeColors.blue, - icon: SVGIcon.functionSymbol, - pins: 14, - pinNames: ["Start", "End", "Trace Channel", "Trace Complex", "Actors to Ignore", "Draw Debug Type", "Ignore Self", "Trace Color", "Trace Hit Color", "Draw Time", "Out Hit", "Return Value"], - delegate: false, - development: false, - }, - { - name: "Line Trace By Profile", - value: String.raw` - Begin Object Class=/Script/BlueprintGraph.K2Node_CallFunction Name="K2Node_CallFunction_21" - FunctionReference=(MemberParent=/Script/CoreUObject.Class'"/Script/Engine.KismetSystemLibrary"',MemberName="LineTraceSingleByProfile") - NodePosX=-672 - NodePosY=-1600 - AdvancedPinDisplay=Hidden - NodeGuid=D8472647289146CCBC7857EF1A9AE666 - CustomProperties Pin (PinId=9BDB78D31C0743B09A5CFFC6330A952C,PinName="execute",PinToolTip="\nExec",PinType.PinCategory="exec",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=048F5710FF65448EBB67C4E0E6FB3CF6,PinName="then",PinToolTip="\nExec",Direction="EGPD_Output",PinType.PinCategory="exec",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=221C53FC10AF40EA9F03C2E240F62F26,PinName="self",PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target"),PinToolTip="Target\nKismet System Library Object Reference",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/Engine.KismetSystemLibrary"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultObject="/Script/Engine.Default__KismetSystemLibrary",PersistentGuid=00000000000000000000000000000000,bHidden=True,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=209531A0061F4F6DBC094F90D19FCEB1,PinName="WorldContextObject",PinToolTip="World Context Object\nObject Reference",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/CoreUObject.Object"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=True,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=True,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=AE9C2442EBBC433D84165E0D424C7228,PinName="Start",PinToolTip="Start\nVector\n\nStart of line segment.",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/CoreUObject.Vector"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=True,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="0, 0, 0",AutogeneratedDefaultValue="0, 0, 0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=10A25344350C48D9A0AEFA65BB528F26,PinName="End",PinToolTip="End\nVector\n\nEnd of line segment.",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/CoreUObject.Vector"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=True,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="0, 0, 0",AutogeneratedDefaultValue="0, 0, 0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=B0CC397419234E8EB505CC49655B4AF9,PinName="ProfileName",PinToolTip="Profile Name\nName\n\nThe \'profile\' used to determine which components to hit",PinType.PinCategory="name",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,DefaultValue="None",AutogeneratedDefaultValue="None",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=36237D5C776B4C8EA106EF6C4AD9FCE5,PinName="bTraceComplex",PinToolTip="Trace Complex\nBoolean\n\nTrue to test against complex collision, false to test against simplified collision.",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,DefaultValue="false",AutogeneratedDefaultValue="false",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=952F86C97CDC4D198448C5964FFB8C6A,PinName="ActorsToIgnore",PinToolTip="Actors to Ignore\nArray of Actor Object References",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/Engine.Actor"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=Array,PinType.bIsReference=True,PinType.bIsConst=True,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=True,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=9E783D0881F54373A454F020BB737545,PinName="DrawDebugType",PinToolTip="Draw Debug Type\nEDrawDebugTrace Enum",PinType.PinCategory="byte",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Enum'"/Script/Engine.EDrawDebugTrace"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="None",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=9380611C5EC6421EAE830F811AE4CA9B,PinName="OutHit",PinToolTip="Out Hit\nHit Result Structure\n\nProperties of the trace hit.",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/Engine.HitResult"',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=F50E8E483801451EA367DEE291EDB9C0,PinName="bIgnoreSelf",PinToolTip="Ignore Self\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,DefaultValue="true",AutogeneratedDefaultValue="true",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=C34949E571254F43840B72ADAA5EB1C1,PinName="TraceColor",PinToolTip="Trace Color\nLinear Color Structure",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/CoreUObject.LinearColor"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="(R=1.000000,G=0.000000,B=0.000000,A=1.000000)",AutogeneratedDefaultValue="(R=1.000000,G=0.000000,B=0.000000,A=1.000000)",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=True,bOrphanedPin=False,) - CustomProperties Pin (PinId=9AADB2287BF1491984DB8C5BEFA60B91,PinName="TraceHitColor",PinToolTip="Trace Hit Color\nLinear Color Structure",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/CoreUObject.LinearColor"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="(R=0.000000,G=1.000000,B=0.000000,A=1.000000)",AutogeneratedDefaultValue="(R=0.000000,G=1.000000,B=0.000000,A=1.000000)",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=True,bOrphanedPin=False,) - CustomProperties Pin (PinId=28D9F3ADA25044D08C614D119047BAB6,PinName="DrawTime",PinToolTip="Draw Time\nFloat (single-precision)",PinType.PinCategory="real",PinType.PinSubCategory="float",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,DefaultValue="5.000000",AutogeneratedDefaultValue="5.000000",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=True,bOrphanedPin=False,) - CustomProperties Pin (PinId=3720AA15FE9045F2A7A6D99A87C90A77,PinName="ReturnValue",PinToolTip="Return Value\nBoolean\n\nTrue if there was a hit, false otherwise.",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,DefaultValue="false",AutogeneratedDefaultValue="false",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - End Object - `, - color: Configuration.nodeColors.blue, - icon: SVGIcon.functionSymbol, - pins: 14, - pinNames: ["Start", "End", "Profile Name", "Trace Complex", "Actors to Ignore", "Draw Debug Type", "Ignore Self", "Trace Color", "Trace Hit Color", "Draw Time", "Out Hit", "Return Value"], - delegate: false, - development: false, - }, - { - name: "Line Trace Component", - subtitle: "Target is Primitive Component", - value: String.raw` - Begin Object Class=/Script/BlueprintGraph.K2Node_CallFunction Name="K2Node_CallFunction_2" - FunctionReference=(MemberParent=/Script/CoreUObject.Class'"/Script/Engine.PrimitiveComponent"',MemberName="K2_LineTraceComponent") - NodePosX=-480 - NodePosY=-96 - NodeGuid=AD1BECF7AEFB48418C321FACE1F6FEE6 - CustomProperties Pin (PinId=71E725C8BA2C4CDC9AD4A7666F88BC95,PinName="execute",PinToolTip="\nExec",PinType.PinCategory="exec",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=02915C65578D498983A1236076974343,PinName="then",PinToolTip="\nExec",Direction="EGPD_Output",PinType.PinCategory="exec",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=01035373F7D74828B1AF9F3A2D55BD1D,PinName="self",PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target"),PinToolTip="Target\nPrimitive Component Object Reference",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/Engine.PrimitiveComponent"',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=AC73F75AC0F444458C8F245E2434ADB7,PinName="TraceStart",PinToolTip="Trace Start\nVector\n\nThe start of the trace in world-space",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/CoreUObject.Vector"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="0, 0, 0",AutogeneratedDefaultValue="0, 0, 0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=FB1F08A845BD487C94E7D77544D6DFAD,PinName="TraceEnd",PinToolTip="Trace End\nVector\n\nThe end of the trace in world-space",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/CoreUObject.Vector"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="0, 0, 0",AutogeneratedDefaultValue="0, 0, 0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=789D51671D014297856F0396DD3E4BC3,PinName="bTraceComplex",PinToolTip="Trace Complex\nBoolean\n\nWhether or not to trace the complex physics representation or just the simple representation",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,DefaultValue="true",AutogeneratedDefaultValue="true",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=0CBD953C86A544FE98C066F4FEB320EC,PinName="bShowTrace",PinToolTip="Show Trace\nBoolean\n\nWhether or not to draw the trace in the world (for debugging)",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,DefaultValue="false",AutogeneratedDefaultValue="false",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=782378B513EC4329A7E00BBBCA9190CC,PinName="bPersistentShowTrace",PinToolTip="Persistent Show Trace\nBoolean\n\nWhether or not to make the debugging draw stay in the world permanently",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,DefaultValue="false",AutogeneratedDefaultValue="false",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=F077B022655742FF891ACDF37D15F1BA,PinName="HitLocation",PinToolTip="Hit Location\nVector",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/CoreUObject.Vector"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="0, 0, 0",AutogeneratedDefaultValue="0, 0, 0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=6D8B46698B1547D187E949DB90482C78,PinName="HitNormal",PinToolTip="Hit Normal\nVector",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/CoreUObject.Vector"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="0, 0, 0",AutogeneratedDefaultValue="0, 0, 0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=158EB11340C84CA5958FE7B4F296076B,PinName="BoneName",PinToolTip="Bone Name\nName",Direction="EGPD_Output",PinType.PinCategory="name",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,DefaultValue="None",AutogeneratedDefaultValue="None",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=13AD4AE0297E43639A30413D3F65407D,PinName="OutHit",PinToolTip="Out Hit\nHit Result Structure",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/Engine.HitResult"',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=963914D01EDF49EDA30FBB91F2CF493C,PinName="ReturnValue",PinToolTip="Return Value\nBoolean",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,DefaultValue="false",AutogeneratedDefaultValue="false",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - End Object - `, - color: Configuration.nodeColors.blue, - icon: SVGIcon.functionSymbol, - pins: 13, - pinNames: ["Target", "Trace Start", "Trace End", "Trace Complex", "Show Trace", "Persistent Show Trace", "Hit Location", "Hit Normal", "Bone Name", "Out Hit", "Return Value"], - delegate: false, - development: false, - }, - { - name: "Delay", - value: String.raw` - Begin Object Class=/Script/BlueprintGraph.K2Node_CallFunction Name="K2Node_CallFunction_17" - FunctionReference=(MemberParent=/Script/CoreUObject.Class'"/Script/Engine.KismetSystemLibrary"',MemberName="Delay") - NodePosX=-224 - NodePosY=-336 - NodeGuid=8CDD81286D894EBA8414B5DEBA780D9E - CustomProperties Pin (PinId=B2476CF3411C6290BC6D97B714E207D4,PinName="execute",PinToolTip="\nExec",PinType.PinCategory="exec",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_CallFunction_19 9C174E82466ECE8521C95FBF22ED4A68,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=69F8184E4070B5FBDEF06A94677454D5,PinName="then",PinFriendlyName="Completed",PinToolTip="Completed\nExec",Direction="EGPD_Output",PinType.PinCategory="exec",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_CallFunction_18 1F53F0D240A7547201D59D8C9A37290B,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=BA6B7D3B429FDD4C250237BD54D75099,PinName="self",PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target"),PinToolTip="Target\nKismet System Library Object Reference",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/Engine.KismetSystemLibrary"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultObject="/Script/Engine.Default__KismetSystemLibrary",PersistentGuid=00000000000000000000000000000000,bHidden=True,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=A2E27ABE4A7EE373C1983487B550FCA1,PinName="WorldContextObject",PinToolTip="World Context Object\nObject Reference",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/CoreUObject.Object"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=True,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=True,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=AEB97A71428D31E899D38F9E30243F68,PinName="Duration",PinToolTip="Duration\nFloat (single-precision)\n\nlength of delay (in seconds).",PinType.PinCategory="real",PinType.PinSubCategory="float",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,DefaultValue="0.2",AutogeneratedDefaultValue="0.2",LinkedTo=(K2Node_VariableGet_8 7F1D5C3A40DB0725BEC01192B06FE830,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=D95C20784C876E9AFC7E4BB3C3CCE773,PinName="LatentInfo",PinToolTip="Latent Info\nLatent Action Info Structure\n\nThe latent action.",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/Engine.LatentActionInfo"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="(Linkage=-1,UUID=-1,ExecutionFunction=\"\",CallbackTarget=None)",AutogeneratedDefaultValue="LatentInfo",PersistentGuid=00000000000000000000000000000000,bHidden=True,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - End Object - `, - color: Configuration.nodeColors.blue, - icon: SVGIcon.functionSymbol, - pins: 3, - pinNames: ["Duration", "Completed"], - delegate: false, - development: false, - }, - { - name: "Literal enum EARLineTraceChannels", - value: String.raw` - Begin Object Class=/Script/BlueprintGraph.K2Node_EnumLiteral Name="K2Node_EnumLiteral_0" - Enum=/Script/CoreUObject.Enum'"/Script/AugmentedReality.EARLineTraceChannels"' - NodePosX=-864 - NodePosY=-1856 - NodeGuid=50A89C411ADB4A4388E2CDE22CBEF9B0 - CustomProperties Pin (PinId=BEEA33BA22304D868E6E7C78C7E4BE6A,PinName="Enum",PinType.PinCategory="byte",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Enum'"/Script/AugmentedReality.EARLineTraceChannels"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="None",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=B682278698A545E79A232FCCA7C1EB4D,PinName="ReturnValue",Direction="EGPD_Output",PinType.PinCategory="byte",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Enum'"/Script/AugmentedReality.EARLineTraceChannels"',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 - `, - color: Configuration.nodeColors.green, - icon: SVGIcon.enum, - pins: 2, - pinNames: ["Enum", "Return Value"], - delegate: false, - development: false, - }, - { - name: "Create Event", - value: String.raw` - Begin Object Class=/Script/BlueprintGraph.K2Node_CreateDelegate Name="K2Node_CreateDelegate_1" - NodePosX=368 - NodePosY=-224 - NodeGuid=0FA4EE58928C4CF285441256561E250A - CustomProperties Pin (PinId=4735A6AC4F9F7A3AFD64B2801F623052,PinName="self",PinFriendlyName=NSLOCTEXT("K2Node", "CreateDelegate_ObjectInputName", "Object"),PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/CoreUObject.Object"',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=0A66F49740A5DDD42C1AECA040844EBF,PinName="OutputDelegate",PinFriendlyName=NSLOCTEXT("K2Node", "CreateDelegate_DelegateOutName", "Event"),Direction="EGPD_Output",PinType.PinCategory="delegate",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 - `, - color: Configuration.nodeColors.green, - icon: SVGIcon.node, - pins: 2, - pinNames: ["Object", "Event"], - delegate: false, - development: false, - }, - { - name: "SpawnActor NONE", - value: String.raw` - Begin Object Class=/Script/BlueprintGraph.K2Node_SpawnActorFromClass Name="K2Node_SpawnActorFromClass_1" ExportPath=/Script/BlueprintGraph.K2Node_SpawnActorFromClass'"/Temp/Untitled_1.Untitled_1:PersistentLevel.Untitled.EventGraph.K2Node_SpawnActorFromClass_1"' - NodePosX=-256 - NodePosY=-128 - AdvancedPinDisplay=Shown - NodeGuid=24B049D9DB0F44D882AFE6C80BCFD6D7 - CustomProperties Pin (PinId=DAD2D02C89FA40C2816217E9926FE015,PinName="execute",PinType.PinCategory="exec",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=16CEF4A26976499C8D28A51FC5D5FC06,PinName="then",Direction="EGPD_Output",PinType.PinCategory="exec",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=FCDCE4268C464334BEDFD7166183C92E,PinName="Class",PinToolTip="Actor Class Reference Class\nThe object class you want to construct",PinType.PinCategory="class",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/Engine.Actor"',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=431A4F3F9A9444FAB27C9A4FF1F5DF75,PinName="ReturnValue",PinToolTip="Actor Object Reference Return Value\nThe constructed object",Direction="EGPD_Output",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/Engine.Actor"',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=0A8BF8604B274EC6A2FC38665C78179C,PinName="SpawnTransform",PinToolTip="Spawn Transform\nTransform\n\nThe transform to spawn the Actor with",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/CoreUObject.Transform"',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=22A7ADCDABD041C78907E027D38A3972,PinName="CollisionHandlingOverride",PinToolTip="Collision Handling Override\nESpawnActorCollisionHandlingMethod Enum\n\nSpecifies how to handle collisions at the spawn point. If undefined, uses actor class settings.",PinType.PinCategory="byte",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Enum'"/Script/Engine.ESpawnActorCollisionHandlingMethod"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="Undefined",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=7C7F74180B6B464F946E79A8AF068F97,PinName="TransformScaleMethod",PinType.PinCategory="byte",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Enum'"/Script/Engine.ESpawnActorScaleMethod"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="MultiplyWithRoot",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=True,bOrphanedPin=False,) - CustomProperties Pin (PinId=A8322AFB4361415CB589F9F97A1AEAF7,PinName="Owner",PinToolTip="Owner\nActor Object Reference\n\nCan be left empty; primarily used for replication (bNetUseOwnerRelevancy and bOnlyRelevantToOwner), or visibility (PrimitiveComponent\'s bOwnerNoSee/bOnlyOwnerSee)",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/Engine.Actor"',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,) - End Object - `, - color: Configuration.nodeColors.blue, - icon: SVGIcon.spawnActor, - pins: 8, - pinNames: ["Class", "Spawn Transform", "Collision Handling Override", "Transform Scale Method", "Owner", "Return Value"], - delegate: false, - development: false, - }, - { - name: "SpawnActor Point Light", - value: String.raw` - Begin Object Class=/Script/BlueprintGraph.K2Node_SpawnActorFromClass Name="K2Node_SpawnActorFromClass_0" ExportPath=/Script/BlueprintGraph.K2Node_SpawnActorFromClass'"/Temp/Untitled_1.Untitled_1:PersistentLevel.Untitled.EventGraph.K2Node_SpawnActorFromClass_0"' - NodePosX=-560 - NodePosY=-96 - AdvancedPinDisplay=Shown - NodeGuid=339A61F4C503440C93AB7A8B8B464A42 - CustomProperties Pin (PinId=BEEE0AE5F4F24EE2A0CC153B52844919,PinName="execute",PinType.PinCategory="exec",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=CFA5506C331541C0B35739F95ACCC110,PinName="then",Direction="EGPD_Output",PinType.PinCategory="exec",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=C9088BD19473494B8426AAE584D5F5F6,PinName="Class",PinToolTip="Actor Class Reference Class\nThe object class you want to construct",PinType.PinCategory="class",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/Engine.Actor"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultObject="/Script/Engine.PointLight",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=8A9DB62EE64D4E9987578479E0E83C0B,PinName="ReturnValue",PinToolTip="Point Light Object Reference Return Value\nThe constructed object",Direction="EGPD_Output",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/Engine.PointLight"',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=9038EC19A2F74900AC57B4BD05146E2C,PinName="SpawnTransform",PinToolTip="Spawn Transform\nTransform\n\nThe transform to spawn the Actor with",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/CoreUObject.Transform"',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=DF50478D9FF04AA393E8D08D8EC8D6EF,PinName="CollisionHandlingOverride",PinToolTip="Collision Handling Override\nESpawnActorCollisionHandlingMethod Enum\n\nSpecifies how to handle collisions at the spawn point. If undefined, uses actor class settings.",PinType.PinCategory="byte",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Enum'"/Script/Engine.ESpawnActorCollisionHandlingMethod"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="AdjustIfPossibleButDontSpawnIfColliding",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=BBEB70384DE441AFB752C06D2484260A,PinName="TransformScaleMethod",PinType.PinCategory="byte",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Enum'"/Script/Engine.ESpawnActorScaleMethod"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="MultiplyWithRoot",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=True,bOrphanedPin=False,) - CustomProperties Pin (PinId=C6D5782B0BD64B5E89E2FC5ED3402871,PinName="Owner",PinToolTip="Owner\nActor Object Reference\n\nCan be left empty; primarily used for replication (bNetUseOwnerRelevancy and bOnlyRelevantToOwner), or visibility (PrimitiveComponent\'s bOwnerNoSee/bOnlyOwnerSee)",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/Engine.Actor"',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=C6F3F40366F54FCAB1071FC6838BA4BD,PinName="Instigator",PinToolTip="Instigator\nPawn Object Reference\n\nPawn responsible for damage and other gameplay events caused by this actor.",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/Engine.Pawn"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=True,PinType.bSerializeAsSinglePrecisionFloat=False,AutogeneratedDefaultValue="None",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - End Object - `, - color: Configuration.nodeColors.blue, - icon: SVGIcon.spawnActor, - pins: 9, - pinNames: [ - "Class", - "Spawn Transform", - "Collision Handling Override", - "Transform Scale Method", - "Owner", - "Instigator", - "Return Value" - ], - delegate: false, - development: false, - }, - { - name: "Line Trace For Objects", - value: String.raw` - Begin Object Class=/Script/BlueprintGraph.K2Node_CallFunction Name="K2Node_CallFunction_8" - FunctionReference=(MemberParent=/Script/CoreUObject.Class'"/Script/Engine.KismetSystemLibrary"',MemberName="LineTraceSingleForObjects") - NodePosX=-208 - NodePosY=-352 - AdvancedPinDisplay=Shown - ErrorType=1 - NodeGuid=3EE71DDB1BD944DE961519875B895319 - CustomProperties Pin (PinId=96A094494D762C998E774ABB929EB41C,PinName="execute",PinToolTip="\nExec",PinType.PinCategory="exec",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=718E43E94384B5B10074D6BD04E74488,PinName="then",PinToolTip="\nExec",Direction="EGPD_Output",PinType.PinCategory="exec",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=0DB3EEE24A4161EE635A9A9D33EC9512,PinName="self",PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target"),PinToolTip="Target\nKismet System Library Object Reference",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/Engine.KismetSystemLibrary"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultObject="/Script/Engine.Default__KismetSystemLibrary",PersistentGuid=00000000000000000000000000000000,bHidden=True,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=124D88C54AF09D670C3A42A2576E8454,PinName="WorldContextObject",PinToolTip="World Context Object\nObject Reference",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/CoreUObject.Object"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=True,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=True,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=9884A8D5423FB15AE0A4ECA2C08F258E,PinName="Start",PinToolTip="Start\nVector\n\nStart of line segment.",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/CoreUObject.Vector"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=True,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="0, 0, 0",AutogeneratedDefaultValue="0, 0, 0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=A4C186FF494EFAF15578EF9A0453DB39,PinName="End",PinToolTip="End\nVector\n\nEnd of line segment.",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/CoreUObject.Vector"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=True,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="0, 0, 0",AutogeneratedDefaultValue="0, 0, 0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=4BED576E40A832A6F31237AEFBACBB71,PinName="ObjectTypes",PinToolTip="Object Types\nArray of EObjectTypeQuery Enums\n\nArray of Object Types to trace",PinType.PinCategory="byte",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Enum'"/Script/Engine.EObjectTypeQuery"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=Array,PinType.bIsReference=True,PinType.bIsConst=True,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="ObjectTypeQuery1",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=True,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=A8296F984AFE64743DAB3E897CC3DF47,PinName="bTraceComplex",PinToolTip="Trace Complex\nBoolean\n\nTrue to test against complex collision, false to test against simplified collision.",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,DefaultValue="false",AutogeneratedDefaultValue="false",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=A19DB65F47B607A3AAF50EA382815B7D,PinName="ActorsToIgnore",PinToolTip="Actors to Ignore\nArray of Actor Object References",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/Engine.Actor"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=Array,PinType.bIsReference=True,PinType.bIsConst=True,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=True,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=A3E482A7474A05E0E58F6AAA6E4734CD,PinName="DrawDebugType",PinToolTip="Draw Debug Type\nEDrawDebugTrace Enum",PinType.PinCategory="byte",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Enum'"/Script/Engine.EDrawDebugTrace"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="ForOneFrame",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=FE2B25154C824BB9EAF9E9A2ADA5943E,PinName="OutHit",PinToolTip="Out Hit\nHit Result Structure\n\nProperties of the trace hit.",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/Engine.HitResult"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,SubPins=(K2Node_CallFunction_8 D06FD3BB41F114BBF8C89DB38EAC0761,K2Node_CallFunction_8 B45FC53E42E98D2933D7A6A33722F4D8,K2Node_CallFunction_8 4DB0E6CC46E5A3C80AC6C1A5FA3E5129,K2Node_CallFunction_8 3A3C030840A593D2D379B2B716F271AB,K2Node_CallFunction_8 4466B24F480077A3458BF49C92FC9BAA,K2Node_CallFunction_8 F25B18164D6964B12DFEABADDB74919E,K2Node_CallFunction_8 71CB4433415AB77E32B1709BBD6573C4,K2Node_CallFunction_8 7AA02A024FF3C7D1429BE89272EB95A9,K2Node_CallFunction_8 4520C8C14542EBD0F7E6F49B25374A3A,K2Node_CallFunction_8 0D36352148C729A423CAD69546B499D3,K2Node_CallFunction_8 70B373F6489AD4ACF61A95BA7D172DA8,K2Node_CallFunction_8 70B601B342FDB51653A3069BE9ED80C1,K2Node_CallFunction_8 B0B9765C4B5539AC163A42B1C71EB743,K2Node_CallFunction_8 64F90D394DB9CA34EB4EA09AFF22C35B,K2Node_CallFunction_8 421966B241843C5AC06C179E9FDCBF59,K2Node_CallFunction_8 F2AC86054C34D620A396B48266CE6555,K2Node_CallFunction_8 C6128AA849ED10F1A91BB78A480187B4,K2Node_CallFunction_8 0624877E4E2FE8DEFAD2BB848F637811,),PersistentGuid=00000000000000000000000000000000,bHidden=True,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=D06FD3BB41F114BBF8C89DB38EAC0761,PinName="OutHit_bBlockingHit",PinFriendlyName=LOCGEN_FORMAT_NAMED(NSLOCTEXT("KismetSchema", "SplitPinFriendlyNameFormat", "{PinDisplayName} {ProtoPinDisplayName}"), "PinDisplayName", "Out Hit", "ProtoPinDisplayName", "Blocking Hit"),PinToolTip="Out Hit Blocking Hit\nBoolean",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,DefaultValue="false",AutogeneratedDefaultValue="false",ParentPin=K2Node_CallFunction_8 FE2B25154C824BB9EAF9E9A2ADA5943E,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=B45FC53E42E98D2933D7A6A33722F4D8,PinName="OutHit_bInitialOverlap",PinFriendlyName=LOCGEN_FORMAT_NAMED(NSLOCTEXT("KismetSchema", "SplitPinFriendlyNameFormat", "{PinDisplayName} {ProtoPinDisplayName}"), "PinDisplayName", "Out Hit", "ProtoPinDisplayName", "Initial Overlap"),PinToolTip="Out Hit Initial Overlap\nBoolean",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,DefaultValue="false",AutogeneratedDefaultValue="false",ParentPin=K2Node_CallFunction_8 FE2B25154C824BB9EAF9E9A2ADA5943E,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=4DB0E6CC46E5A3C80AC6C1A5FA3E5129,PinName="OutHit_Time",PinFriendlyName=LOCGEN_FORMAT_NAMED(NSLOCTEXT("KismetSchema", "SplitPinFriendlyNameFormat", "{PinDisplayName} {ProtoPinDisplayName}"), "PinDisplayName", "Out Hit", "ProtoPinDisplayName", "Time"),PinToolTip="Out Hit Time\nFloat (single-precision)",Direction="EGPD_Output",PinType.PinCategory="real",PinType.PinSubCategory="float",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,DefaultValue="0.0",AutogeneratedDefaultValue="0.0",ParentPin=K2Node_CallFunction_8 FE2B25154C824BB9EAF9E9A2ADA5943E,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=3A3C030840A593D2D379B2B716F271AB,PinName="OutHit_Distance",PinFriendlyName=LOCGEN_FORMAT_NAMED(NSLOCTEXT("KismetSchema", "SplitPinFriendlyNameFormat", "{PinDisplayName} {ProtoPinDisplayName}"), "PinDisplayName", "Out Hit", "ProtoPinDisplayName", "Distance"),PinToolTip="Out Hit Distance\nFloat (single-precision)",Direction="EGPD_Output",PinType.PinCategory="real",PinType.PinSubCategory="float",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,DefaultValue="0.0",AutogeneratedDefaultValue="0.0",ParentPin=K2Node_CallFunction_8 FE2B25154C824BB9EAF9E9A2ADA5943E,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=4466B24F480077A3458BF49C92FC9BAA,PinName="OutHit_Location",PinFriendlyName=LOCGEN_FORMAT_NAMED(NSLOCTEXT("KismetSchema", "SplitPinFriendlyNameFormat", "{PinDisplayName} {ProtoPinDisplayName}"), "PinDisplayName", "Out Hit", "ProtoPinDisplayName", "Location"),PinToolTip="Out Hit Location\nVector",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/CoreUObject.Vector"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="0, 0, 0",AutogeneratedDefaultValue="0, 0, 0",ParentPin=K2Node_CallFunction_8 FE2B25154C824BB9EAF9E9A2ADA5943E,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=F25B18164D6964B12DFEABADDB74919E,PinName="OutHit_ImpactPoint",PinFriendlyName=LOCGEN_FORMAT_NAMED(NSLOCTEXT("KismetSchema", "SplitPinFriendlyNameFormat", "{PinDisplayName} {ProtoPinDisplayName}"), "PinDisplayName", "Out Hit", "ProtoPinDisplayName", "Impact Point"),PinToolTip="Out Hit Impact Point\nVector",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/CoreUObject.Vector"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="0, 0, 0",AutogeneratedDefaultValue="0, 0, 0",ParentPin=K2Node_CallFunction_8 FE2B25154C824BB9EAF9E9A2ADA5943E,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=71CB4433415AB77E32B1709BBD6573C4,PinName="OutHit_Normal",PinFriendlyName=LOCGEN_FORMAT_NAMED(NSLOCTEXT("KismetSchema", "SplitPinFriendlyNameFormat", "{PinDisplayName} {ProtoPinDisplayName}"), "PinDisplayName", "Out Hit", "ProtoPinDisplayName", "Normal"),PinToolTip="Out Hit Normal\nVector",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/CoreUObject.Vector"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="0, 0, 0",AutogeneratedDefaultValue="0, 0, 0",ParentPin=K2Node_CallFunction_8 FE2B25154C824BB9EAF9E9A2ADA5943E,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=7AA02A024FF3C7D1429BE89272EB95A9,PinName="OutHit_ImpactNormal",PinFriendlyName=LOCGEN_FORMAT_NAMED(NSLOCTEXT("KismetSchema", "SplitPinFriendlyNameFormat", "{PinDisplayName} {ProtoPinDisplayName}"), "PinDisplayName", "Out Hit", "ProtoPinDisplayName", "Impact Normal"),PinToolTip="Out Hit Impact Normal\nVector",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/CoreUObject.Vector"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="0, 0, 0",AutogeneratedDefaultValue="0, 0, 0",ParentPin=K2Node_CallFunction_8 FE2B25154C824BB9EAF9E9A2ADA5943E,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=4520C8C14542EBD0F7E6F49B25374A3A,PinName="OutHit_PhysMat",PinFriendlyName=LOCGEN_FORMAT_NAMED(NSLOCTEXT("KismetSchema", "SplitPinFriendlyNameFormat", "{PinDisplayName} {ProtoPinDisplayName}"), "PinDisplayName", "Out Hit", "ProtoPinDisplayName", "Phys Mat"),PinToolTip="Out Hit Phys Mat\nPhysical Material Object Reference",Direction="EGPD_Output",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/PhysicsCore.PhysicalMaterial"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,ParentPin=K2Node_CallFunction_8 FE2B25154C824BB9EAF9E9A2ADA5943E,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=0D36352148C729A423CAD69546B499D3,PinName="OutHit_HitActor",PinFriendlyName=LOCGEN_FORMAT_NAMED(NSLOCTEXT("KismetSchema", "SplitPinFriendlyNameFormat", "{PinDisplayName} {ProtoPinDisplayName}"), "PinDisplayName", "Out Hit", "ProtoPinDisplayName", "Hit Actor"),PinToolTip="Out Hit Hit Actor\nActor Object Reference",Direction="EGPD_Output",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/Engine.Actor"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,ParentPin=K2Node_CallFunction_8 FE2B25154C824BB9EAF9E9A2ADA5943E,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=70B373F6489AD4ACF61A95BA7D172DA8,PinName="OutHit_HitComponent",PinFriendlyName=LOCGEN_FORMAT_NAMED(NSLOCTEXT("KismetSchema", "SplitPinFriendlyNameFormat", "{PinDisplayName} {ProtoPinDisplayName}"), "PinDisplayName", "Out Hit", "ProtoPinDisplayName", "Hit Component"),PinToolTip="Out Hit Hit Component\nPrimitive Component Object Reference",Direction="EGPD_Output",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/Engine.PrimitiveComponent"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,ParentPin=K2Node_CallFunction_8 FE2B25154C824BB9EAF9E9A2ADA5943E,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=70B601B342FDB51653A3069BE9ED80C1,PinName="OutHit_HitBoneName",PinFriendlyName=LOCGEN_FORMAT_NAMED(NSLOCTEXT("KismetSchema", "SplitPinFriendlyNameFormat", "{PinDisplayName} {ProtoPinDisplayName}"), "PinDisplayName", "Out Hit", "ProtoPinDisplayName", "Hit Bone Name"),PinToolTip="Out Hit Hit Bone Name\nName",Direction="EGPD_Output",PinType.PinCategory="name",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,DefaultValue="None",AutogeneratedDefaultValue="None",ParentPin=K2Node_CallFunction_8 FE2B25154C824BB9EAF9E9A2ADA5943E,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=B0B9765C4B5539AC163A42B1C71EB743,PinName="OutHit_BoneName",PinFriendlyName=LOCGEN_FORMAT_NAMED(NSLOCTEXT("KismetSchema", "SplitPinFriendlyNameFormat", "{PinDisplayName} {ProtoPinDisplayName}"), "PinDisplayName", "Out Hit", "ProtoPinDisplayName", "Bone Name"),PinToolTip="Out Hit Bone Name\nName",Direction="EGPD_Output",PinType.PinCategory="name",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,DefaultValue="None",AutogeneratedDefaultValue="None",ParentPin=K2Node_CallFunction_8 FE2B25154C824BB9EAF9E9A2ADA5943E,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=64F90D394DB9CA34EB4EA09AFF22C35B,PinName="OutHit_HitItem",PinFriendlyName=LOCGEN_FORMAT_NAMED(NSLOCTEXT("KismetSchema", "SplitPinFriendlyNameFormat", "{PinDisplayName} {ProtoPinDisplayName}"), "PinDisplayName", "Out Hit", "ProtoPinDisplayName", "Hit Item"),PinToolTip="Out Hit Hit Item\nInteger",Direction="EGPD_Output",PinType.PinCategory="int",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,DefaultValue="0",AutogeneratedDefaultValue="0",ParentPin=K2Node_CallFunction_8 FE2B25154C824BB9EAF9E9A2ADA5943E,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=421966B241843C5AC06C179E9FDCBF59,PinName="OutHit_ElementIndex",PinFriendlyName=LOCGEN_FORMAT_NAMED(NSLOCTEXT("KismetSchema", "SplitPinFriendlyNameFormat", "{PinDisplayName} {ProtoPinDisplayName}"), "PinDisplayName", "Out Hit", "ProtoPinDisplayName", "Element Index"),PinToolTip="Out Hit Element Index\nInteger",Direction="EGPD_Output",PinType.PinCategory="int",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,DefaultValue="0",AutogeneratedDefaultValue="0",ParentPin=K2Node_CallFunction_8 FE2B25154C824BB9EAF9E9A2ADA5943E,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=F2AC86054C34D620A396B48266CE6555,PinName="OutHit_FaceIndex",PinFriendlyName=LOCGEN_FORMAT_NAMED(NSLOCTEXT("KismetSchema", "SplitPinFriendlyNameFormat", "{PinDisplayName} {ProtoPinDisplayName}"), "PinDisplayName", "Out Hit", "ProtoPinDisplayName", "Face Index"),PinToolTip="Out Hit Face Index\nInteger",Direction="EGPD_Output",PinType.PinCategory="int",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,DefaultValue="0",AutogeneratedDefaultValue="0",ParentPin=K2Node_CallFunction_8 FE2B25154C824BB9EAF9E9A2ADA5943E,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=C6128AA849ED10F1A91BB78A480187B4,PinName="OutHit_TraceStart",PinFriendlyName=LOCGEN_FORMAT_NAMED(NSLOCTEXT("KismetSchema", "SplitPinFriendlyNameFormat", "{PinDisplayName} {ProtoPinDisplayName}"), "PinDisplayName", "Out Hit", "ProtoPinDisplayName", "Trace Start"),PinToolTip="Out Hit Trace Start\nVector",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/CoreUObject.Vector"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="0, 0, 0",AutogeneratedDefaultValue="0, 0, 0",ParentPin=K2Node_CallFunction_8 FE2B25154C824BB9EAF9E9A2ADA5943E,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=0624877E4E2FE8DEFAD2BB848F637811,PinName="OutHit_TraceEnd",PinFriendlyName=LOCGEN_FORMAT_NAMED(NSLOCTEXT("KismetSchema", "SplitPinFriendlyNameFormat", "{PinDisplayName} {ProtoPinDisplayName}"), "PinDisplayName", "Out Hit", "ProtoPinDisplayName", "Trace End"),PinToolTip="Out Hit Trace End\nVector",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/CoreUObject.Vector"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="0, 0, 0",AutogeneratedDefaultValue="0, 0, 0",ParentPin=K2Node_CallFunction_8 FE2B25154C824BB9EAF9E9A2ADA5943E,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=297204E248B1AE9336367F9F0A184BC8,PinName="bIgnoreSelf",PinToolTip="Ignore Self\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,DefaultValue="true",AutogeneratedDefaultValue="true",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=DAB5394745AA51AAE6033EB7CCF1C095,PinName="TraceColor",PinToolTip="Trace Color\nLinear Color Structure",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/CoreUObject.LinearColor"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="(R=1.000000,G=0.000000,B=0.000000,A=1.000000)",AutogeneratedDefaultValue="(R=1.000000,G=0.000000,B=0.000000,A=1.000000)",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=True,bOrphanedPin=False,) - CustomProperties Pin (PinId=8CD5CC5E4F927E9CBBFF58B0872C0546,PinName="TraceHitColor",PinToolTip="Trace Hit Color\nLinear Color Structure",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/CoreUObject.LinearColor"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="(R=0.000000,G=1.000000,B=0.000000,A=1.000000)",AutogeneratedDefaultValue="(R=0.000000,G=1.000000,B=0.000000,A=1.000000)",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=True,bOrphanedPin=False,) - CustomProperties Pin (PinId=FB76ED6F40844C82A75DA4A4A5A73820,PinName="DrawTime",PinToolTip="Draw Time\nFloat (single-precision)",PinType.PinCategory="real",PinType.PinSubCategory="float",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,DefaultValue="5.000000",AutogeneratedDefaultValue="5.000000",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=True,bOrphanedPin=False,) - CustomProperties Pin (PinId=54F6EF174A02D88C99CAFFBCF1E05B6E,PinName="ReturnValue",PinToolTip="Return Value\nBoolean\n\nTrue if there was a hit, false otherwise.",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,DefaultValue="false",AutogeneratedDefaultValue="false",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - End Object - `, - color: Configuration.nodeColors.blue, - icon: SVGIcon.functionSymbol, - pins: 31, - pinNames: [ - "Start", - "End", - "Object Types", - "Trace Complex", - "Actors to Ignore", - "Draw Debug Type", - "Ignore Self", - "Trace Color", - "Trace Hit Color", - "Draw Time", - "Out Hit Blocking Hit", - "Out Hit Initial Overlap", - "Out Hit Time", - "Out Hit Distance", - "Out Hit Location", - "Out Hit Impact Point", - "Out Hit Normal", - "Out Hit Impact Normal", - "Out Hit Phys Mat", - "Out Hit Hit Actor", - "Out Hit Hit Component", - "Out Hit Hit Bone Name", - "Out Hit Bone Name", - "Out Hit Hit Item", - "Out Hit Element Index", - "Out Hit Face Index", - "Out Hit Trace Start", - "Out Hit Trace End", - "Return Value", - ], - delegate: false, - development: false, - }, - { - name: "Timeline", - value: String.raw` - Begin Object Class=/Script/BlueprintGraph.K2Node_Timeline Name="K2Node_Timeline_0" - TimelineName="Timeline" - TimelineGuid=5A2932A3D7004616A4F233DB24D4E31F - NodePosX=-1136 - NodePosY=-464 - bCanRenameNode=True - NodeGuid=FAA474FEEE534CAB9F8E0828CDE95892 - CustomProperties Pin (PinId=73D6A2B467F9472C8069BAB3E3245EE0,PinName="Play",PinType.PinCategory="exec",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=A65D68F22BC7446998845F65C262B4AA,PinName="PlayFromStart",PinType.PinCategory="exec",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=D1CF97026F034CF3A79C6E6F90C348BA,PinName="Stop",PinType.PinCategory="exec",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=16A43012A9A14EB2B917962FD24731A7,PinName="Reverse",PinType.PinCategory="exec",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=74C2E50D186D4230B6ED2327D08FDA34,PinName="ReverseFromEnd",PinType.PinCategory="exec",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=434043688FB5451293945CA3C0E2D202,PinName="Update",Direction="EGPD_Output",PinType.PinCategory="exec",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_CallFunction_35 585A3CD5A0BA42569102B28820988070,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=296FA705872C4598BD613C68751387E3,PinName="Finished",Direction="EGPD_Output",PinType.PinCategory="exec",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=95467DD3FD76493FB981FCD2B8287EA7,PinName="SetNewTime",PinType.PinCategory="exec",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=48F9B48502CC484CA433FB1497A341E0,PinName="NewTime",PinType.PinCategory="real",PinType.PinSubCategory="float",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,DefaultValue="0.0",AutogeneratedDefaultValue="0.0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=5B2BC8D35A154CCE87AEA274C4CACED6,PinName="Direction",Direction="EGPD_Output",PinType.PinCategory="byte",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Enum'"/Script/Engine.ETimelineDirection"',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 - `, - color: Configuration.nodeColors.yellow, - icon: SVGIcon.timer, - pins: 10, - pinNames: [ - "Play", - "Play From Start", // No info in the graph that "from" is lower case - "Stop", - "Reverse", - "Reverse From End", // No info in the graph that "from" is lower case - "Set New Time", - "New Time", - "Update", - "Finished", - "Direction", - ], - delegate: false, - development: false, - }, - { - name: "Construction Script", - value: String.raw` - Begin Object Class=/Script/BlueprintGraph.K2Node_FunctionEntry Name="K2Node_FunctionEntry_11" - bEnforceConstCorrectness=False - FunctionReference=(MemberParent=/Script/CoreUObject.Class'"/Script/Engine.Actor"',MemberName="UserConstructionScript") - NodePosX=16 - NodePosY=-32 - NodeGuid=521B69F742A30F8EA5B92B8CC131AB54 - CustomProperties Pin (PinId=DE073CBD9EE44F4AA43C9BE239BBCB33,PinName="then",Direction="EGPD_Output",PinType.PinCategory="exec",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_CallFunction_4248 064F1F38F42D43ADA53BC41AFC6FBE9F,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - End Object - `, - color: Configuration.nodeColors.violet, - icon: SVGIcon.node, - pins: 1, - delegate: false, - development: false, - }, - { - name: "Set Relative Rotation", - subtitle: "Target is Scene Component", - value: String.raw` - Begin Object Class=/Script/BlueprintGraph.K2Node_CallFunction Name="K2Node_CallFunction_5" ExportPath=/Script/BlueprintGraph.K2Node_CallFunction'"/Temp/Untitled_1.Untitled_1:PersistentLevel.Untitled.EventGraph.K2Node_CallFunction_5"' - FunctionReference=(MemberParent=/Script/CoreUObject.Class'"/Script/Engine.SceneComponent"',MemberName="K2_SetRelativeRotation") - NodePosX=512 - NodePosY=-48 - AdvancedPinDisplay=Hidden - NodeGuid=2140E0AA9D8F4C5FB89F5CA378A9B56D - CustomProperties Pin (PinId=C347AFEE7AFC4848A63B99FF6167F73F,PinName="execute",PinToolTip="\nExec",PinType.PinCategory="exec",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=F3E0EED07DD54370A2DA0FD76353286B,PinName="then",PinToolTip="\nExec",Direction="EGPD_Output",PinType.PinCategory="exec",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=7EB45B16ED954F929722FBCD91A187A8,PinName="self",PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target"),PinToolTip="Target\nScene Component Object Reference",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/Engine.SceneComponent"',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=AE73B4E46A094DD788D04725FD7C6DF9,PinName="NewRotation",PinToolTip="New Rotation\nRotator\n\nNew rotation of the component relative to its parent",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/CoreUObject.Rotator"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="0, 0, 0",AutogeneratedDefaultValue="0, 0, 0",SubPins=(K2Node_CallFunction_5 F82B6140AD50485E8955369B735BC627,K2Node_CallFunction_5 0A417B3EA3074164B7DC605B7F85AF05,K2Node_CallFunction_5 8539DDEA84C24BE48F9D84B629FEA410,),PersistentGuid=00000000000000000000000000000000,bHidden=True,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=F82B6140AD50485E8955369B735BC627,PinName="NewRotation_Roll",PinFriendlyName=LOCGEN_FORMAT_NAMED(NSLOCTEXT("KismetSchema", "SplitPinFriendlyNameFormat", "{PinDisplayName} {ProtoPinDisplayName}"), "PinDisplayName", NSLOCTEXT("", "8F133E70437642249A31E409DD1E3852", "New Rotation"), "ProtoPinDisplayName", NSLOCTEXT("", "751A9C34B79E4E7F94E2F02DB922AFCE", "X (Roll)")),PinType.PinCategory="real",PinType.PinSubCategory="float",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,DefaultValue="0.0",AutogeneratedDefaultValue="0.0",ParentPin=K2Node_CallFunction_5 AE73B4E46A094DD788D04725FD7C6DF9,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=0A417B3EA3074164B7DC605B7F85AF05,PinName="NewRotation_Pitch",PinFriendlyName=LOCGEN_FORMAT_NAMED(NSLOCTEXT("KismetSchema", "SplitPinFriendlyNameFormat", "{PinDisplayName} {ProtoPinDisplayName}"), "PinDisplayName", NSLOCTEXT("", "26BC4556F421494A8E68A42D38A23EF1", "New Rotation"), "ProtoPinDisplayName", NSLOCTEXT("", "105B6B68DAF74E6CAD83079F9E795ECF", "Y (Pitch)")),PinType.PinCategory="real",PinType.PinSubCategory="float",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,DefaultValue="0.0",AutogeneratedDefaultValue="0.0",ParentPin=K2Node_CallFunction_5 AE73B4E46A094DD788D04725FD7C6DF9,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=8539DDEA84C24BE48F9D84B629FEA410,PinName="NewRotation_Yaw",PinFriendlyName=LOCGEN_FORMAT_NAMED(NSLOCTEXT("KismetSchema", "SplitPinFriendlyNameFormat", "{PinDisplayName} {ProtoPinDisplayName}"), "PinDisplayName", NSLOCTEXT("", "DE7AB5AB52D84405922E28EE72ABBB26", "New Rotation"), "ProtoPinDisplayName", NSLOCTEXT("", "1462F96F7C0B4D68B082EBA02E99F1EC", "Z (Yaw)")),PinType.PinCategory="real",PinType.PinSubCategory="float",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,DefaultValue="0.0",AutogeneratedDefaultValue="0.0",ParentPin=K2Node_CallFunction_5 AE73B4E46A094DD788D04725FD7C6DF9,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=E9652915F52D465E993222AC59ABBEDF,PinName="bSweep",PinToolTip="Sweep\nBoolean\n\nWhether we sweep to the destination (currently not supported for rotation).",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,DefaultValue="false",AutogeneratedDefaultValue="false",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=True,bOrphanedPin=False,) - CustomProperties Pin (PinId=3EE87DFBA5AB473F93F003AC9F8A2DED,PinName="SweepHitResult",PinToolTip="Sweep Hit Result\nHit Result Structure\n\nHit result from any impact if sweep is true.",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/Engine.HitResult"',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=649255CFBCB9480E8DC1AA214F9FCE6B,PinName="bTeleport",PinToolTip="Teleport\nBoolean\n\nWhether we teleport the physics state (if physics collision is enabled for this object). If true, physics velocity for this object is unchanged (so ragdoll parts are not affected by change in location). If false, physics velocity is updated based on the change in position (affecting ragdoll parts).",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,DefaultValue="false",AutogeneratedDefaultValue="false",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=True,bOrphanedPin=False,) - End Object - `, - size: [15, 16.5], - color: Configuration.nodeColors.blue, - icon: SVGIcon.functionSymbol, - pins: 9, - pinNames: [ - "Target", - "New Rotation X (Roll)", - "New Rotation Y (Pitch)", - "New Rotation Z (Yaw)", - "Sweep", - "Teleport", - "Sweep Hit Result", - ], - delegate: false, - development: false, - }, - { - name: "Async Change Bundle State For Matching Primary Assets", - value: String.raw` - Begin Object Class=/Script/BlueprintGraph.K2Node_AsyncAction Name="K2Node_AsyncAction_0" ExportPath=/Script/BlueprintGraph.K2Node_AsyncAction'"/Temp/Untitled_1.Untitled_1:PersistentLevel.Untitled.EventGraph.K2Node_AsyncAction_0"' - ProxyFactoryFunctionName="AsyncChangeBundleStateForMatchingPrimaryAssets" - ProxyFactoryClass=/Script/CoreUObject.Class'"/Script/Engine.AsyncActionChangePrimaryAssetBundles"' - ProxyClass=/Script/CoreUObject.Class'"/Script/Engine.AsyncActionChangePrimaryAssetBundles"' - NodePosX=-384 - NodePosY=-1152 - NodeGuid=BE2398EE906341DFBF4027C551933479 - CustomProperties Pin (PinId=0ADB80D7303A4B70A271609DEF026A74,PinName="execute",PinToolTip="\nExec",PinType.PinCategory="exec",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=982E6A6405014809B46CA263AA26EBE3,PinName="then",Direction="EGPD_Output",PinType.PinCategory="exec",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=58B7B76B29454FAD99B90931BD676CAB,PinName="Completed",PinFriendlyName=NSLOCTEXT("UObjectDisplayNames", "AsyncActionChangePrimaryAssetBundles:Completed", "Completed"),Direction="EGPD_Output",PinType.PinCategory="exec",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=FD58E0E4210D4714AFB0A5D049BF57D0,PinName="WorldContextObject",PinToolTip="World Context Object\nObject Reference",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.Class'"/Script/CoreUObject.Object"',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,) - CustomProperties Pin (PinId=C97FE20A5B2D450CA45CE0313CF86D19,PinName="NewBundles",PinToolTip="New Bundles\nArray of Names",PinType.PinCategory="name",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=Array,PinType.bIsReference=True,PinType.bIsConst=True,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=True,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=94C2A7BB42E8416B8F275FC59D536272,PinName="OldBundles",PinToolTip="Old Bundles\nArray of Names",PinType.PinCategory="name",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=Array,PinType.bIsReference=True,PinType.bIsConst=True,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=True,bAdvancedView=False,bOrphanedPin=False,) - End Object - `, - size: [24.5, 7.5], - color: Configuration.nodeColors.blue, - icon: SVGIcon.node, - pins: 5, - pinNames: ["New Bundles", "Old Bundles", "Completed"], - delegate: false, - development: false, - }, - { - name: "Make Some_§-AStruct", - value: String.raw` - Begin Object Class=/Script/BlueprintGraph.K2Node_MakeStruct Name="K2Node_MakeStruct_1" ExportPath=/Script/BlueprintGraph.K2Node_MakeStruct'"/Temp/Untitled_1.Untitled_1:PersistentLevel.Untitled.EventGraph.K2Node_MakeStruct_1"' - "bMadeAfterOverridePinRemoval"=True - "ShowPinForProperties"(0)=(PropertyName="FirstVariable_1_13DD7A0E491E619509C7408F7D8C4071",PropertyFriendlyName="First.Variable",bShowPin=True,bCanToggleVisibility=True) - "ShowPinForProperties"(1)=(PropertyName="Second-Variable_5_B897B051478F270D20FF29B3BC3B5A8C",PropertyFriendlyName="Second-Variable",bShowPin=True,bCanToggleVisibility=True) - "StructType"=/Script/Engine.UserDefinedStruct'"/Game/StarterContent/Blueprints/Some_§-AStruct.Some_§-AStruct"' - "NodePosX"=384 - "NodePosY"=144 - "NodeGuid"=118962B441E9282349A21EA43ADEE816 - CustomProperties Pin (PinId=3DD8E64049B1CD7AF21517B9C9C0E52E,PinName="Some_§-AStruct",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/Engine.UserDefinedStruct'"/Game/StarterContent/Blueprints/Some_§-AStruct.Some_§-AStruct"',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=97BAE50C41A8924F13A6E9B6EB9F83C8,PinName="FirstVariable_1_13DD7A0E491E619509C7408F7D8C4071",PinFriendlyName="First.Variable",PinToolTip="First. Variable\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,DefaultValue="False",AutogeneratedDefaultValue="False",PersistentGuid=13DD7A0E491E619509C7408F7D8C4071,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=94B8DE014A527EBDC91E48A6E95D8D2E,PinName="Second-Variable_5_B897B051478F270D20FF29B3BC3B5A8C",PinFriendlyName="Second-Variable",PinToolTip="Second- Variable\nArray of Transforms",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct'"/Script/CoreUObject.Transform"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=Array,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=B897B051478F270D20FF29B3BC3B5A8C,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=True,bAdvancedView=False,bOrphanedPin=False,) - End Object - `, - size: [17.5, 6], - color: Configuration.nodeColors.darkBlue, - icon: SVGIcon.makeStruct, - pins: 3, - pinNames: ["First.Variable", "Second-Variable", "Some_§-AStruct"], - delegate: false, - development: false, - }, - { - name: "Add Local Navigation Grid For Box", - value: String.raw` - Begin Object Class=/Script/BlueprintGraph.K2Node_CallFunction Name="K2Node_CallFunction_0" ExportPath="/Script/BlueprintGraph.K2Node_CallFunction'/Temp/Untitled_1.Untitled_1:PersistentLevel.Untitled.EventGraph.K2Node_CallFunction_0'" - FunctionReference=(MemberParent="/Script/CoreUObject.Class'/Script/AIModule.NavLocalGridManager'",MemberName="AddLocalNavigationGridForBox") - NodePosX=304 - NodePosY=-496 - NodeGuid=C15FC9905D6D4BF5AF19CB81BAB598DE - CustomProperties Pin (PinId=4A315083206E46F38782139225D1CBDB,PinName="execute",PinToolTip="\nExec",PinType.PinCategory="exec",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=0E0D6F8DD32C430D9F727D4B16A6CA85,PinName="then",PinToolTip="\nExec",Direction="EGPD_Output",PinType.PinCategory="exec",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=3A0F065EA4444A6BBD9DB667859A2139,PinName="self",PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target"),PinToolTip="Target\nNav Local Grid Manager Object Reference",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.Class'/Script/AIModule.NavLocalGridManager'",PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultObject="/Script/AIModule.Default__NavLocalGridManager",PersistentGuid=00000000000000000000000000000000,bHidden=True,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=3FBC998EDAF84DC48EF01354ED460934,PinName="WorldContextObject",PinToolTip="World Context Object\nObject Reference",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.Class'/Script/CoreUObject.Object'",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,) - CustomProperties Pin (PinId=44559846BCBA449395FE1552F1ECE478,PinName="Location",PinToolTip="Location\nVector (by ref)",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.ScriptStruct'/Script/CoreUObject.Vector'",PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=True,PinType.bIsConst=True,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="0, 0, 0",AutogeneratedDefaultValue="0, 0, 0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=True,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=C5C95F7DF3A74AF990B3093D85D70478,PinName="Extent",PinToolTip="Extent\nVector",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.ScriptStruct'/Script/CoreUObject.Vector'",PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="15.000000,30.000000,45.000000",AutogeneratedDefaultValue="1.000000,1.000000,1.000000",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=EE0E7856A7B54B5CBE67E4F589E82B4C,PinName="Rotation",PinToolTip="Rotation\nRotator",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.ScriptStruct'/Script/CoreUObject.Rotator'",PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="20.000000,30.000000,10.000000",AutogeneratedDefaultValue="0, 0, 0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=960A2A37701047D5B28353189B7199A5,PinName="Radius2D",PinToolTip="Radius 2D\nInteger",PinType.PinCategory="int",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=True,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="8",AutogeneratedDefaultValue="5",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=DE5301DC038D43969F9DB9F41949AFD0,PinName="Height",PinToolTip="Height\nFloat (single-precision)",PinType.PinCategory="real",PinType.PinSubCategory="float",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=True,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="200.500000",AutogeneratedDefaultValue="100.000000",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=5E42C9BD542E413E9CEF9D5A98A4C5EB,PinName="bRebuildGrids",PinToolTip="Rebuild Grids\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,DefaultValue="false",AutogeneratedDefaultValue="true",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - CustomProperties Pin (PinId=5A398222D44740A98F9742B5BDDB3580,PinName="ReturnValue",PinToolTip="Return Value\nInteger\n\nAdd Local Navigation Grid for Box",Direction="EGPD_Output",PinType.PinCategory="int",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,DefaultValue="0",AutogeneratedDefaultValue="0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - End Object - `, - size: [20.5, 19], - color: Configuration.nodeColors.blue, - icon: SVGIcon.functionSymbol, - pins: 9, - pinNames: [ - "Location", - "Extent", - "Rotation", - "Radius 2D", - "Height", - "Rebuild Grids", - "Return Value", - ], - delegate: false, - development: false, - additionalTest: async (node, pins, blueprintPage) => { - await expect(pins[2].locator("ueb-input")).toHaveText(["15.0", "30.0", "45.0"]) - await expect(pins[3].locator("ueb-input")).toHaveText(["10.0", "20.0", "30.0"]) - await expect(pins[4].locator("ueb-input")).toHaveText(["8"]) - await expect(pins[5].locator("ueb-input")).toHaveText(["200.5"]) - await expect(pins[6].locator("input")).toBeChecked({ checked: false }) - let inputs = await pins[2].locator("ueb-input").all() - await inputs[0].fill("-11.11") - await inputs[1].fill("-22.22") - await inputs[2].fill("-33.33") - await blueprintPage.blur() - expect(await pins[2].evaluate(pin => pin.entity.DefaultValue.constructor.className())) - .toBe("SimpleSerializationVectorEntity") - await expect(pins[2].locator("ueb-input")).toHaveText(["-11.11", "-22.22", "-33.33"]) - inputs = await pins[3].locator("ueb-input").all() - await inputs[0].fill("88") - await inputs[1].fill("77") - await inputs[2].fill("66") - await blueprintPage.blur() - expect(await pins[3].evaluate(pin => pin.entity.DefaultValue.constructor.className())) - .toBe("SimpleSerializationRotatorEntity") - await expect(pins[3].locator("ueb-input")).toHaveText(["88.0", "77.0", "66.0"]) - await pins[4].locator("ueb-input").fill("35.814") - await blueprintPage.blur() - expect(await pins[4].evaluate(pin => pin.entity.DefaultValue.constructor.className())) - .toBe("IntegerEntity") - await expect(pins[4].locator("ueb-input")).toHaveText("35") - await pins[6].locator("input").check() - await expect(pins[6].locator("input")).toBeChecked() - expect(await pins[6].evaluate(pin => pin.entity.DefaultValue.constructor.className())) - .toBe("BooleanEntity") - const serialization = await blueprintPage.getSerializedNodes() - await blueprintPage.removeNodes() - await blueprintPage.paste(serialization) - pins = await blueprintPage.blueprintLocator.locator("ueb-pin").all() - await expect(pins[2].locator("ueb-input")).toHaveText(["-11.11", "-22.22", "-33.33"]) - await expect(pins[3].locator("ueb-input")).toHaveText(["88.0", "77.0", "66.0"]) - await expect(pins[4].locator("ueb-input")).toHaveText(["35"]) - await expect(pins[5].locator("ueb-input")).toHaveText(["200.5"]) - await expect(pins[6].locator("input")).toBeChecked() - } - }, - { - name: "Self", - value: String.raw` - Begin Object Class=/Script/BlueprintGraph.K2Node_Self Name="K2Node_Self_0" ExportPath="/Script/BlueprintGraph.K2Node_Self'/Temp/Untitled_1.Untitled_1:PersistentLevel.Untitled.EventGraph.K2Node_Self_0'" - NodePosX=224 - NodePosY=848 - NodeGuid=70A71735B5F247699242DBC67A166772 - CustomProperties Pin (PinId=3B41006840BA3918576575AC4419E030,PinName="self",Direction="EGPD_Output",PinType.PinCategory="object",PinType.PinSubCategory="self",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_CallFunction_1 C3A04D2142AC39C30B0A62876AF7ECC8,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) - End Object - `, - size: [8, 2.5], - pins: 1, - delegate: false, - development: false, - additionalTest: async node => { - expect(await (node.evaluate(n => n.classList.contains("ueb-node-style-getter")))).toBeTruthy() - } - }, - ]) - } -} diff --git a/tests/resources/PCGNodes.js b/tests/resources/PCGNodes.js deleted file mode 100644 index a89d05a..0000000 --- a/tests/resources/PCGNodes.js +++ /dev/null @@ -1,395 +0,0 @@ -import { css } from "lit" -import Configuration from "../../js/Configuration.js" -import SVGIcon from "../../js/SVGIcon.js" -import { expect } from "../fixtures/test.js" -import NodeTests from "./NodeTests.js" - -export default class PCGNodes extends NodeTests { - static { - this.set([ - { - 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], - pins: 4, - pinNames: ["In", "Overrides", "Seed", "Out"], - delegate: false, - development: false, - additionalTest: async node => { - /** @type {Locator} */ - const inPin = node.locator('ueb-pin:has-text("In")') - /** @type {Locator} */ - const overridesPin = node.locator('ueb-pin:has-text("Overrides")') - /** @type {Locator} */ - const seedPin = node.locator('ueb-pin:has-text("Seed")') - /** @type {Locator} */ - const outPin = node.locator('ueb-pin:has-text("Out")') - await expect(inPin).toBeVisible() - await expect(overridesPin).toBeVisible() - await expect(seedPin).toBeVisible() - await expect(outPin).toBeVisible() - expect(await inPin.evaluate(pin => pin.template.renderIcon().strings.join(""))) - .toEqual(SVGIcon.pcgStackPin.strings.join("")) - expect(await overridesPin.evaluate(pin => pin.template.renderIcon().strings.join(""))) - .toEqual(SVGIcon.pcgParamPin.strings.join("")) - expect(await seedPin.evaluate(pin => pin.template.renderIcon().strings.join(""))) - .toEqual(SVGIcon.pcgParamPin.strings.join("")) - expect(await outPin.evaluate(pin => pin.template.renderIcon().strings.join(""))) - .toEqual(SVGIcon.pcgSpatialPin.strings.join("")) - } - }, - { - name: "Set Point Color", - value: String.raw` - Begin Object Class=/Script/PCGEditor.PCGEditorGraphNode Name="PCGEditorGraphNode_1" ExportPath="/Script/PCGEditor.PCGEditorGraphNode'/Game/NewPCGGraph.NewPCGGraph:PCGEditorGraph_0.PCGEditorGraphNode_1'" - Begin Object Class=/Script/PCG.PCGNode Name="ExecuteBlueprint_1" ExportPath="/Script/PCG.PCGNode'/Game/NewPCGGraph.NewPCGGraph:PCGEditorGraph_0.PCGEditorGraphNode_1.ExecuteBlueprint_1'" - Begin Object Class=/Script/PCG.PCGBlueprintSettings Name="PCGBlueprintSettings_1" ExportPath="/Script/PCG.PCGBlueprintSettings'/Game/NewPCGGraph.NewPCGGraph:PCGEditorGraph_0.PCGEditorGraphNode_1.ExecuteBlueprint_1.PCGBlueprintSettings_1'" - Begin Object Class=/PCG/BP_Elements/SetPointColor.SetPointColor_C Name="SetPointColor_C_0" ExportPath="/PCG/BP_Elements/SetPointColor.SetPointColor_C'/Game/NewPCGGraph.NewPCGGraph:PCGEditorGraph_0.PCGEditorGraphNode_1.ExecuteBlueprint_1.PCGBlueprintSettings_1.SetPointColor_C_0'" - End Object - End Object - Begin Object Class=/Script/PCG.PCGPin Name="PCGPin_0" ExportPath="/Script/PCG.PCGPin'/Game/NewPCGGraph.NewPCGGraph:PCGEditorGraph_0.PCGEditorGraphNode_1.ExecuteBlueprint_1.PCGPin_0'" - End Object - Begin Object Class=/Script/PCG.PCGPin Name="PCGPin_1" ExportPath="/Script/PCG.PCGPin'/Game/NewPCGGraph.NewPCGGraph:PCGEditorGraph_0.PCGEditorGraphNode_1.ExecuteBlueprint_1.PCGPin_1'" - End Object - Begin Object Class=/Script/PCG.PCGPin Name="PCGPin_2" ExportPath="/Script/PCG.PCGPin'/Game/NewPCGGraph.NewPCGGraph:PCGEditorGraph_0.PCGEditorGraphNode_1.ExecuteBlueprint_1.PCGPin_2'" - End Object - Begin Object Class=/Script/PCG.PCGPin Name="PCGPin_3" ExportPath="/Script/PCG.PCGPin'/Game/NewPCGGraph.NewPCGGraph:PCGEditorGraph_0.PCGEditorGraphNode_1.ExecuteBlueprint_1.PCGPin_3'" - End Object - Begin Object Class=/Script/PCG.PCGPin Name="PCGPin_4" ExportPath="/Script/PCG.PCGPin'/Game/NewPCGGraph.NewPCGGraph:PCGEditorGraph_0.PCGEditorGraphNode_1.ExecuteBlueprint_1.PCGPin_4'" - End Object - Begin Object Class=/Script/PCG.PCGPin Name="PCGPin_5" ExportPath="/Script/PCG.PCGPin'/Game/NewPCGGraph.NewPCGGraph:PCGEditorGraph_0.PCGEditorGraphNode_1.ExecuteBlueprint_1.PCGPin_5'" - End Object - Begin Object Class=/Script/PCG.PCGPin Name="PCGPin_6" ExportPath="/Script/PCG.PCGPin'/Game/NewPCGGraph.NewPCGGraph:PCGEditorGraph_0.PCGEditorGraphNode_1.ExecuteBlueprint_1.PCGPin_6'" - End Object - Begin Object Class=/Script/PCG.PCGPin Name="PCGPin_7" ExportPath="/Script/PCG.PCGPin'/Game/NewPCGGraph.NewPCGGraph:PCGEditorGraph_0.PCGEditorGraphNode_1.ExecuteBlueprint_1.PCGPin_7'" - End Object - End Object - Begin Object Name="ExecuteBlueprint_1" ExportPath="/Script/PCG.PCGNode'/Game/NewPCGGraph.NewPCGGraph:PCGEditorGraph_0.PCGEditorGraphNode_1.ExecuteBlueprint_1'" - Begin Object Name="PCGBlueprintSettings_1" ExportPath="/Script/PCG.PCGBlueprintSettings'/Game/NewPCGGraph.NewPCGGraph:PCGEditorGraph_0.PCGEditorGraphNode_1.ExecuteBlueprint_1.PCGBlueprintSettings_1'" - Begin Object Name="SetPointColor_C_0" ExportPath="/PCG/BP_Elements/SetPointColor.SetPointColor_C'/Game/NewPCGGraph.NewPCGGraph:PCGEditorGraph_0.PCGEditorGraphNode_1.ExecuteBlueprint_1.PCGBlueprintSettings_1.SetPointColor_C_0'" - End Object - BlueprintElementType="/Script/Engine.BlueprintGeneratedClass'/PCG/BP_Elements/SetPointColor.SetPointColor_C'" - BlueprintElementInstance="/PCG/BP_Elements/SetPointColor.SetPointColor_C'SetPointColor_C_0'" - Seed=-1868785340 - bExposeToLibrary=False - CachedOverridableParams(0)=(Label="Seed",PropertiesNames=("Seed"),PropertyClass="/Script/CoreUObject.Class'/Script/PCG.PCGBlueprintSettings'") - CachedOverridableParams(1)=(Label="R",PropertiesNames=("Linear Color","R"),PropertyClass="/Script/Engine.BlueprintGeneratedClass'/PCG/BP_Elements/SetPointColor.SetPointColor_C'") - CachedOverridableParams(2)=(Label="G",PropertiesNames=("Linear Color","G"),PropertyClass="/Script/Engine.BlueprintGeneratedClass'/PCG/BP_Elements/SetPointColor.SetPointColor_C'") - CachedOverridableParams(3)=(Label="B",PropertiesNames=("Linear Color","B"),PropertyClass="/Script/Engine.BlueprintGeneratedClass'/PCG/BP_Elements/SetPointColor.SetPointColor_C'") - CachedOverridableParams(4)=(Label="A",PropertiesNames=("Linear Color","A"),PropertyClass="/Script/Engine.BlueprintGeneratedClass'/PCG/BP_Elements/SetPointColor.SetPointColor_C'") - End Object - Begin Object Name="PCGPin_0" ExportPath="/Script/PCG.PCGPin'/Game/NewPCGGraph.NewPCGGraph:PCGEditorGraph_0.PCGEditorGraphNode_1.ExecuteBlueprint_1.PCGPin_0'" - Node="/Script/PCG.PCGNode'PCGEditorGraphNode_1.ExecuteBlueprint_1'" - Properties=(Label="In",AllowedTypes=Point) - End Object - Begin Object Name="PCGPin_1" ExportPath="/Script/PCG.PCGPin'/Game/NewPCGGraph.NewPCGGraph:PCGEditorGraph_0.PCGEditorGraphNode_1.ExecuteBlueprint_1.PCGPin_1'" - Node="/Script/PCG.PCGNode'PCGEditorGraphNode_1.ExecuteBlueprint_1'" - 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_0.PCGEditorGraphNode_1.ExecuteBlueprint_1.PCGPin_2'" - Node="/Script/PCG.PCGNode'PCGEditorGraphNode_1.ExecuteBlueprint_1'" - 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_0.PCGEditorGraphNode_1.ExecuteBlueprint_1.PCGPin_3'" - Node="/Script/PCG.PCGNode'PCGEditorGraphNode_1.ExecuteBlueprint_1'" - Properties=(Label="Out",AllowedTypes=Point) - End Object - Begin Object Name="PCGPin_4" ExportPath="/Script/PCG.PCGPin'/Game/NewPCGGraph.NewPCGGraph:PCGEditorGraph_0.PCGEditorGraphNode_1.ExecuteBlueprint_1.PCGPin_4'" - Node="/Script/PCG.PCGNode'PCGEditorGraphNode_1.ExecuteBlueprint_1'" - Properties=(Label="R",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}\""), "", "float", "Linear Color/R")) - End Object - Begin Object Name="PCGPin_5" ExportPath="/Script/PCG.PCGPin'/Game/NewPCGGraph.NewPCGGraph:PCGEditorGraph_0.PCGEditorGraphNode_1.ExecuteBlueprint_1.PCGPin_5'" - Node="/Script/PCG.PCGNode'PCGEditorGraphNode_1.ExecuteBlueprint_1'" - Properties=(Label="G",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}\""), "", "float", "Linear Color/G")) - End Object - Begin Object Name="PCGPin_6" ExportPath="/Script/PCG.PCGPin'/Game/NewPCGGraph.NewPCGGraph:PCGEditorGraph_0.PCGEditorGraphNode_1.ExecuteBlueprint_1.PCGPin_6'" - Node="/Script/PCG.PCGNode'PCGEditorGraphNode_1.ExecuteBlueprint_1'" - Properties=(Label="B",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}\""), "", "float", "Linear Color/B")) - End Object - Begin Object Name="PCGPin_7" ExportPath="/Script/PCG.PCGPin'/Game/NewPCGGraph.NewPCGGraph:PCGEditorGraph_0.PCGEditorGraphNode_1.ExecuteBlueprint_1.PCGPin_7'" - Node="/Script/PCG.PCGNode'PCGEditorGraphNode_1.ExecuteBlueprint_1'" - Properties=(Label="A",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}\""), "", "float", "Linear Color/A")) - End Object - PositionX=512 - PositionY=256 - SettingsInterface="/Script/PCG.PCGBlueprintSettings'PCGBlueprintSettings_1'" - InputPins(0)="/Script/PCG.PCGPin'PCGPin_0'" - InputPins(1)="/Script/PCG.PCGPin'PCGPin_1'" - InputPins(2)="/Script/PCG.PCGPin'PCGPin_2'" - InputPins(3)="/Script/PCG.PCGPin'PCGPin_4'" - InputPins(4)="/Script/PCG.PCGPin'PCGPin_5'" - InputPins(5)="/Script/PCG.PCGPin'PCGPin_6'" - InputPins(6)="/Script/PCG.PCGPin'PCGPin_7'" - OutputPins(0)="/Script/PCG.PCGPin'PCGPin_3'" - End Object - PCGNode="/Script/PCG.PCGNode'ExecuteBlueprint_1'" - NodePosX=512 - NodePosY=256 - AdvancedPinDisplay=Shown - bUserSetEnabledState=True - NodeGuid=74E6A6E9EF084BF4A24B56E43712EC85 - CustomProperties Pin (PinId=53B558601FD94E0A81D59879F7C84EE4,PinName="In",PinFriendlyName="In",PinType.PinCategory="Concrete Data",PinType.PinSubCategory="Point Data",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=D2D1A26AF9524E569FCA2DD6B15C7667,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=3506C39048EA435D8E16028C6E481FFE,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=7FBFCE159BE5483F9C0AF8E8053BF3B9,PinName="R",PinFriendlyName="R",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=996EFC1D746C46D39BB50E0AF3A156D4,PinName="G",PinFriendlyName="G",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=4693B14DC236425097A5FA8B3DDD46A3,PinName="B",PinFriendlyName="B",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=831312342DB14283A98ECB2D331C1B3D,PinName="A",PinFriendlyName="A",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=6F13FFA544CF43BD94FA007B9D6FC25A,PinName="Out",PinFriendlyName="Out",Direction="EGPD_Output",PinType.PinCategory="Concrete Data",PinType.PinSubCategory="Point Data",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, 16], - pins: 8, - pinNames: ["In", "Overrides", "Seed", "R", "G", "B", "A", "Out"], - delegate: false, - development: false, - additionalTest: async (node, pins) => { - expect(await pins[0].evaluate(pin => pin.template.renderIcon().strings.join(""))) - .toEqual(SVGIcon.pcgStackPin.strings.join("")) - expect(await pins[0].evaluate(pin => pin.entity.pinColor().cssText)).toEqual("63, 137, 255") - expect(await pins[1].evaluate(pin => pin.template.renderIcon().strings.join(""))) - .toEqual(SVGIcon.pcgParamPin.strings.join("")) - expect(await pins[2].evaluate(pin => pin.template.renderIcon().strings.join(""))) - .toEqual(SVGIcon.pcgParamPin.strings.join("")) - expect(await pins[3].evaluate(pin => pin.template.renderIcon().strings.join(""))) - .toEqual(SVGIcon.pcgParamPin.strings.join("")) - expect(await pins[4].evaluate(pin => pin.template.renderIcon().strings.join(""))) - .toEqual(SVGIcon.pcgParamPin.strings.join("")) - expect(await pins[5].evaluate(pin => pin.template.renderIcon().strings.join(""))) - .toEqual(SVGIcon.pcgParamPin.strings.join("")) - expect(await pins[6].evaluate(pin => pin.template.renderIcon().strings.join(""))) - .toEqual(SVGIcon.pcgParamPin.strings.join("")) - expect(await pins[7].evaluate(pin => pin.template.renderIcon().strings.join(""))) - .toEqual(SVGIcon.pcgPin.strings.join("")) - expect(await pins[7].evaluate(pin => pin.entity.pinColor().cssText)).toEqual("63, 137, 255") - } - }, - { - name: "PCG Branch", - title: "Branch", - value: String.raw` - Begin Object Class=/Script/PCGEditor.PCGEditorGraphNode Name="PCGEditorGraphNode_2" ExportPath="/Script/PCGEditor.PCGEditorGraphNode'/Game/NewPCGGraph.NewPCGGraph:PCGEditorGraph_0.PCGEditorGraphNode_2'" - Begin Object Class=/Script/PCG.PCGNode Name="Branch_2" ExportPath="/Script/PCG.PCGNode'/Game/NewPCGGraph.NewPCGGraph:PCGEditorGraph_0.PCGEditorGraphNode_2.Branch_2'" - Begin Object Class=/Script/PCG.PCGPin Name="PCGPin_4" ExportPath="/Script/PCG.PCGPin'/Game/NewPCGGraph.NewPCGGraph:PCGEditorGraph_0.PCGEditorGraphNode_2.Branch_2.PCGPin_4'" - End Object - Begin Object Class=/Script/PCG.PCGPin Name="PCGPin_3" ExportPath="/Script/PCG.PCGPin'/Game/NewPCGGraph.NewPCGGraph:PCGEditorGraph_0.PCGEditorGraphNode_2.Branch_2.PCGPin_3'" - End Object - Begin Object Class=/Script/PCG.PCGPin Name="PCGPin_2" ExportPath="/Script/PCG.PCGPin'/Game/NewPCGGraph.NewPCGGraph:PCGEditorGraph_0.PCGEditorGraphNode_2.Branch_2.PCGPin_2'" - End Object - Begin Object Class=/Script/PCG.PCGPin Name="PCGPin_1" ExportPath="/Script/PCG.PCGPin'/Game/NewPCGGraph.NewPCGGraph:PCGEditorGraph_0.PCGEditorGraphNode_2.Branch_2.PCGPin_1'" - End Object - Begin Object Class=/Script/PCG.PCGPin Name="PCGPin_0" ExportPath="/Script/PCG.PCGPin'/Game/NewPCGGraph.NewPCGGraph:PCGEditorGraph_0.PCGEditorGraphNode_2.Branch_2.PCGPin_0'" - End Object - Begin Object Class=/Script/PCG.PCGBranchSettings Name="PCGBranchSettings_0" ExportPath="/Script/PCG.PCGBranchSettings'/Game/NewPCGGraph.NewPCGGraph:PCGEditorGraph_0.PCGEditorGraphNode_2.Branch_2.PCGBranchSettings_0'" - End Object - End Object - Begin Object Name="Branch_2" ExportPath="/Script/PCG.PCGNode'/Game/NewPCGGraph.NewPCGGraph:PCGEditorGraph_0.PCGEditorGraphNode_2.Branch_2'" - Begin Object Name="PCGPin_4" ExportPath="/Script/PCG.PCGPin'/Game/NewPCGGraph.NewPCGGraph:PCGEditorGraph_0.PCGEditorGraphNode_2.Branch_2.PCGPin_4'" - Node="/Script/PCG.PCGNode'PCGEditorGraphNode_2.Branch_2'" - Properties=(Label="Output B",Tooltip=NSLOCTEXT("FPCGBranchElement", "OutputPinTooltipB", "Will only route input if \'Output To B\' (overridable) is true")) - End Object - Begin Object Name="PCGPin_3" ExportPath="/Script/PCG.PCGPin'/Game/NewPCGGraph.NewPCGGraph:PCGEditorGraph_0.PCGEditorGraphNode_2.Branch_2.PCGPin_3'" - Node="/Script/PCG.PCGNode'PCGEditorGraphNode_2.Branch_2'" - Properties=(Label="Output A",Tooltip=NSLOCTEXT("FPCGBranchElement", "OutputPinTooltipA", "Will only route input if \'Output To B\' (overridable) is false")) - End Object - Begin Object Name="PCGPin_2" ExportPath="/Script/PCG.PCGPin'/Game/NewPCGGraph.NewPCGGraph:PCGEditorGraph_0.PCGEditorGraphNode_2.Branch_2.PCGPin_2'" - Node="/Script/PCG.PCGNode'PCGEditorGraphNode_2.Branch_2'" - Properties=(Label="Output to B",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}\""), "", "bool", "bOutputToB")) - End Object - Begin Object Name="PCGPin_1" ExportPath="/Script/PCG.PCGPin'/Game/NewPCGGraph.NewPCGGraph:PCGEditorGraph_0.PCGEditorGraphNode_2.Branch_2.PCGPin_1'" - Node="/Script/PCG.PCGNode'PCGEditorGraphNode_2.Branch_2'" - 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_0" ExportPath="/Script/PCG.PCGPin'/Game/NewPCGGraph.NewPCGGraph:PCGEditorGraph_0.PCGEditorGraphNode_2.Branch_2.PCGPin_0'" - Node="/Script/PCG.PCGNode'PCGEditorGraphNode_2.Branch_2'" - Properties=(Label="In") - End Object - Begin Object Name="PCGBranchSettings_0" ExportPath="/Script/PCG.PCGBranchSettings'/Game/NewPCGGraph.NewPCGGraph:PCGEditorGraph_0.PCGEditorGraphNode_2.Branch_2.PCGBranchSettings_0'" - Seed=-420875123 - CachedOverridableParams(0)=(Label="Output to B",PropertiesNames=("bOutputToB"),PropertyClass="/Script/CoreUObject.Class'/Script/PCG.PCGBranchSettings'") - End Object - PositionX=384 - PositionY=128 - SettingsInterface="/Script/PCG.PCGBranchSettings'PCGBranchSettings_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'" - OutputPins(1)="/Script/PCG.PCGPin'PCGPin_4'" - End Object - PCGNode="/Script/PCG.PCGNode'Branch_2'" - NodePosX=384 - NodePosY=128 - AdvancedPinDisplay=Shown - bUserSetEnabledState=True - NodeGuid=BCEBB6C85A8844F2B06322DF95805CB5 - CustomProperties Pin (PinId=4CBC2755317F47F7BA23B7E928C7A436,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=390B992FE20D4AAAB63EC14DE8732AD2,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=15D942E8E7C640719B71544BBEA5365D,PinName="Output to B",PinFriendlyName="Output To B",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=9397BA7C5D694D9FB070B353BB26BA57,PinName="Output A",PinFriendlyName="Output A",Direction="EGPD_Output",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=32167D5DBA9A4498B162B90B0F16A191,PinName="Output B",PinFriendlyName="Output B",Direction="EGPD_Output",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,) - End Object - `, - size: [13, 9], - color: Configuration.nodeColors.intenseGreen, - pins: 5, - pinNames: ["In", "Overrides", "Output To B", "Output A", "Output B"], - delegate: false, - development: false, - additionalTest: async (node, pins) => { - expect(await pins[0].evaluate(pin => pin.template.renderIcon().strings.join(""))) - .toEqual(SVGIcon.pcgStackPin.strings.join("")) - expect(await pins[0].evaluate(pin => pin.entity.pinColor().cssText)).toEqual("132, 132, 132") - expect(await pins[1].evaluate(pin => pin.template.renderIcon().strings.join(""))) - .toEqual(SVGIcon.pcgParamPin.strings.join("")) - expect(await pins[2].evaluate(pin => pin.template.renderIcon().strings.join(""))) - .toEqual(SVGIcon.pcgParamPin.strings.join("")) - expect(await pins[3].evaluate(pin => pin.template.renderIcon().strings.join(""))) - .toEqual(SVGIcon.pcgPin.strings.join("")) - expect(await pins[3].evaluate(pin => pin.entity.pinColor().cssText)).toEqual("132, 132, 132") - expect(await pins[4].evaluate(pin => pin.template.renderIcon().strings.join(""))) - .toEqual(SVGIcon.pcgPin.strings.join("")) - expect(await pins[4].evaluate(pin => pin.entity.pinColor().cssText)).toEqual("132, 132, 132") - } - }, - { - name: "PCG Select", - title: "Select", - value: String.raw` - Begin Object Class=/Script/PCGEditor.PCGEditorGraphNode Name="PCGEditorGraphNode_0" ExportPath="/Script/PCGEditor.PCGEditorGraphNode'/Game/NewPCGGraph.NewPCGGraph:PCGEditorGraph_0.PCGEditorGraphNode_0'" - Begin Object Class=/Script/PCG.PCGNode Name="Select_1" ExportPath="/Script/PCG.PCGNode'/Game/NewPCGGraph.NewPCGGraph:PCGEditorGraph_0.PCGEditorGraphNode_0.Select_1'" - Begin Object Class=/Script/PCG.PCGBooleanSelectSettings Name="PCGBooleanSelectSettings_0" ExportPath="/Script/PCG.PCGBooleanSelectSettings'/Game/NewPCGGraph.NewPCGGraph:PCGEditorGraph_0.PCGEditorGraphNode_0.Select_1.PCGBooleanSelectSettings_0'" - End Object - Begin Object Class=/Script/PCG.PCGPin Name="PCGPin_0" ExportPath="/Script/PCG.PCGPin'/Game/NewPCGGraph.NewPCGGraph:PCGEditorGraph_0.PCGEditorGraphNode_0.Select_1.PCGPin_0'" - End Object - Begin Object Class=/Script/PCG.PCGPin Name="PCGPin_1" ExportPath="/Script/PCG.PCGPin'/Game/NewPCGGraph.NewPCGGraph:PCGEditorGraph_0.PCGEditorGraphNode_0.Select_1.PCGPin_1'" - End Object - Begin Object Class=/Script/PCG.PCGPin Name="PCGPin_2" ExportPath="/Script/PCG.PCGPin'/Game/NewPCGGraph.NewPCGGraph:PCGEditorGraph_0.PCGEditorGraphNode_0.Select_1.PCGPin_2'" - End Object - Begin Object Class=/Script/PCG.PCGPin Name="PCGPin_3" ExportPath="/Script/PCG.PCGPin'/Game/NewPCGGraph.NewPCGGraph:PCGEditorGraph_0.PCGEditorGraphNode_0.Select_1.PCGPin_3'" - End Object - Begin Object Class=/Script/PCG.PCGPin Name="PCGPin_4" ExportPath="/Script/PCG.PCGPin'/Game/NewPCGGraph.NewPCGGraph:PCGEditorGraph_0.PCGEditorGraphNode_0.Select_1.PCGPin_4'" - End Object - End Object - Begin Object Name="Select_1" ExportPath="/Script/PCG.PCGNode'/Game/NewPCGGraph.NewPCGGraph:PCGEditorGraph_0.PCGEditorGraphNode_0.Select_1'" - Begin Object Name="PCGBooleanSelectSettings_0" ExportPath="/Script/PCG.PCGBooleanSelectSettings'/Game/NewPCGGraph.NewPCGGraph:PCGEditorGraph_0.PCGEditorGraphNode_0.Select_1.PCGBooleanSelectSettings_0'" - Seed=-764420405 - CachedOverridableParams(0)=(Label="Use Input B",PropertiesNames=("bUseInputB"),PropertyClass="/Script/CoreUObject.Class'/Script/PCG.PCGBooleanSelectSettings'") - End Object - Begin Object Name="PCGPin_0" ExportPath="/Script/PCG.PCGPin'/Game/NewPCGGraph.NewPCGGraph:PCGEditorGraph_0.PCGEditorGraphNode_0.Select_1.PCGPin_0'" - Node="/Script/PCG.PCGNode'PCGEditorGraphNode_0.Select_1'" - Properties=(Label="Input A",Tooltip=NSLOCTEXT("FPCGBooleanSelectElement", "FirstInputPinTooltip", "Will only be used if \'Use Input B\' (overridable) is false")) - End Object - Begin Object Name="PCGPin_1" ExportPath="/Script/PCG.PCGPin'/Game/NewPCGGraph.NewPCGGraph:PCGEditorGraph_0.PCGEditorGraphNode_0.Select_1.PCGPin_1'" - Node="/Script/PCG.PCGNode'PCGEditorGraphNode_0.Select_1'" - Properties=(Label="Input B",Tooltip=NSLOCTEXT("FPCGBooleanSelectElement", "SecondInputPinTooltip", "Will only be used if \'Use Input B\' (overridable) is true")) - End Object - Begin Object Name="PCGPin_2" ExportPath="/Script/PCG.PCGPin'/Game/NewPCGGraph.NewPCGGraph:PCGEditorGraph_0.PCGEditorGraphNode_0.Select_1.PCGPin_2'" - Node="/Script/PCG.PCGNode'PCGEditorGraphNode_0.Select_1'" - 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_3" ExportPath="/Script/PCG.PCGPin'/Game/NewPCGGraph.NewPCGGraph:PCGEditorGraph_0.PCGEditorGraphNode_0.Select_1.PCGPin_3'" - Node="/Script/PCG.PCGNode'PCGEditorGraphNode_0.Select_1'" - Properties=(Label="Use Input B",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}\""), "", NSLOCTEXT("", "16C4E377C2E74CE5BA25165971FD45EF", "bool"), NSLOCTEXT("", "C2769CCD78C64949B3473D033EAF34BC", "bUseInputB"))) - End Object - Begin Object Name="PCGPin_4" ExportPath="/Script/PCG.PCGPin'/Game/NewPCGGraph.NewPCGGraph:PCGEditorGraph_0.PCGEditorGraphNode_0.Select_1.PCGPin_4'" - Node="/Script/PCG.PCGNode'PCGEditorGraphNode_0.Select_1'" - Properties=(Label="Out",Tooltip=NSLOCTEXT("FPCGBooleanSelectElement", "OutputPinTooltip", "All input will gathered into a single data collection")) - End Object - PositionX=896 - PositionY=256 - SettingsInterface="/Script/PCG.PCGBooleanSelectSettings'PCGBooleanSelectSettings_0'" - InputPins(0)="/Script/PCG.PCGPin'PCGPin_0'" - InputPins(1)="/Script/PCG.PCGPin'PCGPin_1'" - InputPins(2)="/Script/PCG.PCGPin'PCGPin_2'" - InputPins(3)="/Script/PCG.PCGPin'PCGPin_3'" - OutputPins(0)="/Script/PCG.PCGPin'PCGPin_4'" - End Object - PCGNode="/Script/PCG.PCGNode'Select_1'" - NodePosX=896 - NodePosY=256 - AdvancedPinDisplay=Shown - bUserSetEnabledState=True - NodeGuid=DC0AF7AFAE5643AEAA102848F6C250A1 - CustomProperties Pin (PinId=44103E0035144DDA9CBDF09DABD6FFBB,PinName="Input A",PinFriendlyName="Input A",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=DDAD3EAD7E13487AB8307520FEC50BFE,PinName="Input B",PinFriendlyName="Input B",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=3368F1F000994A78A1AE7445BE7A84F5,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=0EFB81FA173B41D294EB0795B08D8881,PinName="Use Input B",PinFriendlyName="Use Input B",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=49C207211518412D826C77C76B639411,PinName="Out",PinFriendlyName="Out",Direction="EGPD_Output",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,) - End Object - `, - size: [11, 11], - color: Configuration.nodeColors.intenseGreen, - icon: null, - pins: 5, - pinNames: ["Input A", "Input B", "Overrides", "Use Input B", "Out"], - delegate: false, - development: false, - additionalTest: async (node, pins) => { - expect(await node.evaluate(node => node.classList.contains("ueb-node-style-glass"))).toBeFalsy() - expect(await node.evaluate(node => node.classList.contains("ueb-node-style-default"))).toBeTruthy() - expect(await pins[0].evaluate(p => p.entity.pinColor().cssText)).toBe(css`132, 132, 132`.cssText) - expect(await pins[1].evaluate(p => p.entity.pinColor().cssText)).toBe(css`132, 132, 132`.cssText) - expect(await pins[2].evaluate(p => p.entity.pinColor().cssText)).toBe(css`255, 166, 39`.cssText) - expect(await pins[3].evaluate(p => p.entity.pinColor().cssText)).toBe(css`255, 166, 39`.cssText) - expect(await pins[4].evaluate(p => p.entity.pinColor().cssText)).toBe(css`132, 132, 132`.cssText) - }, - }, - ]) - } -}