Fix niagara script variables merging

This commit is contained in:
barsdeveloper
2024-12-16 23:45:56 +02:00
parent c0032fed76
commit 3b68fb46a8
6 changed files with 169 additions and 20 deletions

View File

@@ -19,6 +19,13 @@ export default class BlueprintEntity extends ObjectEntity {
ScriptVariables: super.attributes.ScriptVariables.asUniqueClass(true).withDefault(),
}
constructor(...args) {
super(...args)
if (!this.Name) {
this.Name = new (/** @type {typeof ObjectEntity} */(this.constructor).attributes.Name)("Blueprint")
}
}
/** @param {ObjectEntity} entity */
getHomonymObjectEntity(entity) {
const name = entity.getObjectName()

View File

@@ -67,9 +67,9 @@ export default class MirroredEntity extends IEntity {
}
/** @returns {InstanceType<T>} */
valueOf() {
valueOf(arg) {
// @ts-expect-error
return this.getter().valueOf()
return this.getter(arg).valueOf()
}
toString() {

View File

@@ -389,18 +389,18 @@ export default class ObjectEntity extends IEntity {
}
/** @type {ObjectEntity} */
const subObject = this[k]
if (!subObject.ExportPath?.valueOf().path.includes(this.Name.toString())) {
if (!subObject.ExportPath?.valueOf(this).path.includes(this.Name.toString())) {
continue
}
const originalExportPath = subObject.ExportPath.valueOf()
const originalExportPath = subObject.ExportPath.valueOf(this)
const position = originalExportPath.path.indexOf(this.Name.toString())
const prefix = originalExportPath.path.substring(0, position)
const suffix = originalExportPath.path.substring(position + this.Name.toString().length)
const mirroredEntity = /** @type {typeof ObjectEntity} */(subObject.constructor).attributes.ExportPath
subObject.ExportPath = new mirroredEntity(
() => new (mirroredEntity.type)(
(self = this) => new (mirroredEntity.type)(
originalExportPath.type,
prefix + (this.Name ?? "").toString() + suffix,
prefix + (self.Name ?? "").toString() + suffix,
originalExportPath.full
)
)