mirror of
https://github.com/overte-org/overte.git
synced 2025-08-09 21:43:03 +02:00
Snap imported JSON to grid
This commit is contained in:
parent
e02021bddf
commit
1e8698aee1
2 changed files with 22 additions and 5 deletions
|
@ -1559,8 +1559,17 @@ function importSVO(importURL) {
|
||||||
entityPositions[i] = properties.position;
|
entityPositions[i] = properties.position;
|
||||||
}
|
}
|
||||||
deltaPerpendicular = Vec3.multiply(1 / pastedEntityIDs.length, deltaPerpendicular);
|
deltaPerpendicular = Vec3.multiply(1 / pastedEntityIDs.length, deltaPerpendicular);
|
||||||
|
|
||||||
var deltaPosition = Vec3.sum(Vec3.multiply(deltaParallel, targetDirection), deltaPerpendicular);
|
var deltaPosition = Vec3.sum(Vec3.multiply(deltaParallel, targetDirection), deltaPerpendicular);
|
||||||
|
|
||||||
|
if (grid.getSnapToGrid()) {
|
||||||
|
var properties = Entities.getEntityProperties(pastedEntityIDs[0], ["position", "dimensions",
|
||||||
|
"registrationPoint"]);
|
||||||
|
var position = Vec3.sum(deltaPosition, properties.position);
|
||||||
|
position = grid.snapToSurface(grid.snapToGrid(position, false, properties.dimensions,
|
||||||
|
properties.registrationPoint), properties.dimensions, properties.registrationPoint);
|
||||||
|
deltaPosition = Vec3.subtract(position, properties.position);
|
||||||
|
}
|
||||||
|
|
||||||
for (var i = 0, length = pastedEntityIDs.length; i < length; i++) {
|
for (var i = 0, length = pastedEntityIDs.length; i < length; i++) {
|
||||||
Entities.editEntity(pastedEntityIDs[i], {
|
Entities.editEntity(pastedEntityIDs[i], {
|
||||||
position: Vec3.sum(deltaPosition, entityPositions[i])
|
position: Vec3.sum(deltaPosition, entityPositions[i])
|
||||||
|
|
|
@ -79,7 +79,7 @@ Grid = function(opts) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
that.snapToSurface = function(position, dimensions) {
|
that.snapToSurface = function(position, dimensions, registration) {
|
||||||
if (!snapToGrid) {
|
if (!snapToGrid) {
|
||||||
return position;
|
return position;
|
||||||
}
|
}
|
||||||
|
@ -88,14 +88,18 @@ Grid = function(opts) {
|
||||||
dimensions = { x: 0, y: 0, z: 0 };
|
dimensions = { x: 0, y: 0, z: 0 };
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (registration === undefined) {
|
||||||
|
registration = { x: 0.5, y: 0.5, z: 0.5 };
|
||||||
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
x: position.x,
|
x: position.x,
|
||||||
y: origin.y + (dimensions.y / 2),
|
y: origin.y + (registration.y * dimensions.y),
|
||||||
z: position.z
|
z: position.z
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
that.snapToGrid = function(position, majorOnly, dimensions) {
|
that.snapToGrid = function(position, majorOnly, dimensions, registration) {
|
||||||
if (!snapToGrid) {
|
if (!snapToGrid) {
|
||||||
return position;
|
return position;
|
||||||
}
|
}
|
||||||
|
@ -104,6 +108,10 @@ Grid = function(opts) {
|
||||||
dimensions = { x: 0, y: 0, z: 0 };
|
dimensions = { x: 0, y: 0, z: 0 };
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (registration === undefined) {
|
||||||
|
registration = { x: 0.5, y: 0.5, z: 0.5 };
|
||||||
|
}
|
||||||
|
|
||||||
var spacing = majorOnly ? majorGridEvery : minorGridEvery;
|
var spacing = majorOnly ? majorGridEvery : minorGridEvery;
|
||||||
|
|
||||||
position = Vec3.subtract(position, origin);
|
position = Vec3.subtract(position, origin);
|
||||||
|
@ -112,7 +120,7 @@ Grid = function(opts) {
|
||||||
position.y = Math.round(position.y / spacing) * spacing;
|
position.y = Math.round(position.y / spacing) * spacing;
|
||||||
position.z = Math.round(position.z / spacing) * spacing;
|
position.z = Math.round(position.z / spacing) * spacing;
|
||||||
|
|
||||||
return Vec3.sum(Vec3.sum(position, Vec3.multiply(0.5, dimensions)), origin);
|
return Vec3.sum(Vec3.sum(position, Vec3.multiplyVbyV(registration, dimensions)), origin);
|
||||||
}
|
}
|
||||||
|
|
||||||
that.snapToSpacing = function(delta, majorOnly) {
|
that.snapToSpacing = function(delta, majorOnly) {
|
||||||
|
|
Loading…
Reference in a new issue