Fix children's rotations drifting when scale group

This commit is contained in:
David Rowe 2017-10-05 14:36:25 +13:00
parent 63e7521711
commit 4855e0f528

View file

@ -55,6 +55,7 @@ SelectionManager = function (side) {
position: properties.position, position: properties.position,
parentID: properties.parentID, parentID: properties.parentID,
localPosition: properties.localPosition, localPosition: properties.localPosition,
localRotation: properties.localRotation,
registrationPoint: properties.registrationPoint, registrationPoint: properties.registrationPoint,
rotation: properties.rotation, rotation: properties.rotation,
dimensions: properties.dimensions, dimensions: properties.dimensions,
@ -363,7 +364,8 @@ SelectionManager = function (side) {
for (i = 1, length = selection.length; i < length; i++) { for (i = 1, length = selection.length; i < length; i++) {
Entities.editEntity(selection[i].id, { Entities.editEntity(selection[i].id, {
dimensions: Vec3.multiply(factor, selection[i].dimensions), dimensions: Vec3.multiply(factor, selection[i].dimensions),
localPosition: Vec3.multiply(factor, selection[i].localPosition) localPosition: Vec3.multiply(factor, selection[i].localPosition),
localRotation: selection[i].localRotation // Always specify localRotation otherwise rotations can drift.
}); });
} }
@ -405,7 +407,8 @@ SelectionManager = function (side) {
entityID: selection[i].id, entityID: selection[i].id,
properties: { properties: {
dimensions: selection[i].dimensions, dimensions: selection[i].dimensions,
localPosition: selection[i].localPosition localPosition: selection[i].localPosition,
localRotation: selection[i].localRotation
} }
}); });
selection[i].dimensions = Vec3.multiply(scaleFactor, selection[i].dimensions); selection[i].dimensions = Vec3.multiply(scaleFactor, selection[i].dimensions);
@ -414,7 +417,8 @@ SelectionManager = function (side) {
entityID: selection[i].id, entityID: selection[i].id,
properties: { properties: {
dimensions: selection[i].dimensions, dimensions: selection[i].dimensions,
localPosition: selection[i].localPosition localPosition: selection[i].localPosition,
localRotation: selection[i].localRotation
} }
}); });
} }
@ -476,7 +480,8 @@ SelectionManager = function (side) {
for (i = 1, length = selection.length; i < length; i++) { for (i = 1, length = selection.length; i < length; i++) {
Entities.editEntity(selection[i].id, { Entities.editEntity(selection[i].id, {
dimensions: Vec3.multiplyVbyV(factor, selection[i].dimensions), dimensions: Vec3.multiplyVbyV(factor, selection[i].dimensions),
localPosition: Vec3.multiplyVbyV(factor, selection[i].localPosition) localPosition: Vec3.multiplyVbyV(factor, selection[i].localPosition),
localRotation: selection[i].localRotation // Always specify localRotation otherwise rotations can drift.
}); });
} }
@ -518,7 +523,8 @@ SelectionManager = function (side) {
entityID: selection[i].id, entityID: selection[i].id,
properties: { properties: {
dimensions: selection[i].dimensions, dimensions: selection[i].dimensions,
localPosition: selection[i].localPosition localPosition: selection[i].localPosition,
localRotation: selection[i].localRotation
} }
}); });
selection[i].dimensions = Vec3.multiplyVbyV(scaleFactor, selection[i].dimensions); selection[i].dimensions = Vec3.multiplyVbyV(scaleFactor, selection[i].dimensions);
@ -527,7 +533,8 @@ SelectionManager = function (side) {
entityID: selection[i].id, entityID: selection[i].id,
properties: { properties: {
dimensions: selection[i].dimensions, dimensions: selection[i].dimensions,
localPosition: selection[i].localPosition localPosition: selection[i].localPosition,
localRotation: selection[i].localRotation
} }
}); });
} }