Skip to content

Commit

Permalink
Insert Model.NeedsPivotMigration in insert_instance when missing (#865)
Browse files Browse the repository at this point in the history
  • Loading branch information
kennethloeffler committed Feb 20, 2024
1 parent 5914196 commit e23d024
Show file tree
Hide file tree
Showing 5 changed files with 27 additions and 7 deletions.
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
---
source: tests/tests/build.rs
expression: contents

---
<roblox version="4">
<Item class="Folder" referent="0">
Expand All @@ -25,6 +24,7 @@ expression: contents
<R21>0</R21>
<R22>1</R22>
</CoordinateFrame>
<bool name="NeedsPivotMigration">false</bool>
<Ref name="PrimaryPart">null</Ref>
<BinaryString name="Tags"></BinaryString>
</Properties>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
---
source: tests/tests/build.rs
expression: contents

---
<roblox version="4">
<Item class="DataModel" referent="0">
Expand All @@ -22,6 +21,7 @@ expression: contents
<Item class="Workspace" referent="2">
<Properties>
<string name="Name">Workspace</string>
<bool name="NeedsPivotMigration">false</bool>
</Properties>
<Item class="BoolValue" referent="3">
<Properties>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
---
source: tests/tests/serve.rs
expression: "read_response.intern_and_redact(&mut redactions, root_id)"

---
instances:
id-2:
Expand All @@ -22,7 +21,9 @@ instances:
ignoreUnknownInstances: false
Name: test
Parent: id-2
Properties: {}
Properties:
NeedsPivotMigration:
Bool: false
messageCursor: 1
sessionId: id-1

Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
---
source: tests/tests/serve.rs
expression: "subscribe_response.intern_and_redact(&mut redactions, ())"

---
messageCursor: 1
messages:
Expand All @@ -14,7 +13,9 @@ messages:
ignoreUnknownInstances: false
Name: test
Parent: id-2
Properties: {}
Properties:
NeedsPivotMigration:
Bool: false
removed: []
updated: []
sessionId: id-1
Expand Down
20 changes: 19 additions & 1 deletion src/snapshot/tree.rs
Original file line number Diff line number Diff line change
Expand Up @@ -87,10 +87,28 @@ impl RojoTree {
}

pub fn insert_instance(&mut self, parent_ref: Ref, snapshot: InstanceSnapshot) -> Ref {
// !!!!!!!!!! UGLY HACK !!!!!!!!!!
//
// This is a set of special cases working around a more general problem upstream
// in rbx-dom that causes pivots to not build to file correctly, described in
// github.com/rojo-rbx/rojo/issues/628.
//
// We need to insert the NeedsPivotMigration property with a value of false on
// every instance that inherits from Model for pivots to build correctly.
let hack_needs_pivot_migration = match snapshot.class_name.as_ref() {
"Model" | "Actor" | "Tool" | "HopperBin" | "Flag" | "WorldModel" | "Workspace"
if !snapshot.properties.contains_key("NeedsPivotMigration") =>
{
vec![("NeedsPivotMigration", Variant::Bool(false))]
}
_ => Vec::new(),
};

let builder = InstanceBuilder::empty()
.with_class(snapshot.class_name.into_owned())
.with_name(snapshot.name.into_owned())
.with_properties(snapshot.properties);
.with_properties(snapshot.properties)
.with_properties(hack_needs_pivot_migration);

let referent = self.inner.insert(parent_ref, builder);
self.insert_metadata(referent, snapshot.metadata);
Expand Down

0 comments on commit e23d024

Please sign in to comment.