mirror of
https://github.com/overte-org/overte.git
synced 2025-08-08 12:37:51 +02:00
fix bug related to camera lock for entity orbit and pan
This commit is contained in:
parent
f8956a853b
commit
84f0c404ad
2 changed files with 622 additions and 179 deletions
547
examples/edit.js
547
examples/edit.js
|
@ -39,7 +39,9 @@ var lightOverlayManager = new LightOverlayManager();
|
||||||
var cameraManager = new CameraManager();
|
var cameraManager = new CameraManager();
|
||||||
|
|
||||||
var grid = Grid();
|
var grid = Grid();
|
||||||
gridTool = GridTool({ horizontalGrid: grid });
|
gridTool = GridTool({
|
||||||
|
horizontalGrid: grid
|
||||||
|
});
|
||||||
gridTool.setVisible(false);
|
gridTool.setVisible(false);
|
||||||
|
|
||||||
var entityListTool = EntityListTool();
|
var entityListTool = EntityListTool();
|
||||||
|
@ -109,20 +111,30 @@ var importingSVOImageOverlay = Overlays.addOverlay("image", {
|
||||||
width: 20,
|
width: 20,
|
||||||
height: 20,
|
height: 20,
|
||||||
alpha: 1.0,
|
alpha: 1.0,
|
||||||
color: { red: 255, green: 255, blue: 255 },
|
color: {
|
||||||
|
red: 255,
|
||||||
|
green: 255,
|
||||||
|
blue: 255
|
||||||
|
},
|
||||||
x: Window.innerWidth - IMPORTING_SVO_OVERLAY_WIDTH,
|
x: Window.innerWidth - IMPORTING_SVO_OVERLAY_WIDTH,
|
||||||
y: Window.innerHeight - IMPORTING_SVO_OVERLAY_HEIGHT,
|
y: Window.innerHeight - IMPORTING_SVO_OVERLAY_HEIGHT,
|
||||||
visible: false,
|
visible: false,
|
||||||
});
|
});
|
||||||
var importingSVOTextOverlay = Overlays.addOverlay("text", {
|
var importingSVOTextOverlay = Overlays.addOverlay("text", {
|
||||||
font: { size: 14 },
|
font: {
|
||||||
|
size: 14
|
||||||
|
},
|
||||||
text: "Importing SVO...",
|
text: "Importing SVO...",
|
||||||
leftMargin: IMPORTING_SVO_OVERLAY_LEFT_MARGIN,
|
leftMargin: IMPORTING_SVO_OVERLAY_LEFT_MARGIN,
|
||||||
x: Window.innerWidth - IMPORTING_SVO_OVERLAY_WIDTH - IMPORTING_SVO_OVERLAY_MARGIN,
|
x: Window.innerWidth - IMPORTING_SVO_OVERLAY_WIDTH - IMPORTING_SVO_OVERLAY_MARGIN,
|
||||||
y: Window.innerHeight - IMPORTING_SVO_OVERLAY_HEIGHT - IMPORTING_SVO_OVERLAY_MARGIN,
|
y: Window.innerHeight - IMPORTING_SVO_OVERLAY_HEIGHT - IMPORTING_SVO_OVERLAY_MARGIN,
|
||||||
width: IMPORTING_SVO_OVERLAY_WIDTH,
|
width: IMPORTING_SVO_OVERLAY_WIDTH,
|
||||||
height: IMPORTING_SVO_OVERLAY_HEIGHT,
|
height: IMPORTING_SVO_OVERLAY_HEIGHT,
|
||||||
backgroundColor: { red: 80, green: 80, blue: 80 },
|
backgroundColor: {
|
||||||
|
red: 80,
|
||||||
|
green: 80,
|
||||||
|
blue: 80
|
||||||
|
},
|
||||||
backgroundAlpha: 0.7,
|
backgroundAlpha: 0.7,
|
||||||
visible: false,
|
visible: false,
|
||||||
});
|
});
|
||||||
|
@ -163,7 +175,12 @@ var toolBar = (function () {
|
||||||
|
|
||||||
activeButton = toolBar.addTool({
|
activeButton = toolBar.addTool({
|
||||||
imageURL: toolIconUrl + "edit-status.svg",
|
imageURL: toolIconUrl + "edit-status.svg",
|
||||||
subImage: { x: 0, y: Tool.IMAGE_WIDTH, width: Tool.IMAGE_WIDTH, height: Tool.IMAGE_HEIGHT },
|
subImage: {
|
||||||
|
x: 0,
|
||||||
|
y: Tool.IMAGE_WIDTH,
|
||||||
|
width: Tool.IMAGE_WIDTH,
|
||||||
|
height: Tool.IMAGE_HEIGHT
|
||||||
|
},
|
||||||
width: toolWidth,
|
width: toolWidth,
|
||||||
height: toolHeight,
|
height: toolHeight,
|
||||||
alpha: 0.9,
|
alpha: 0.9,
|
||||||
|
@ -172,7 +189,12 @@ var toolBar = (function () {
|
||||||
|
|
||||||
newModelButton = toolBar.addTool({
|
newModelButton = toolBar.addTool({
|
||||||
imageURL: toolIconUrl + "upload.svg",
|
imageURL: toolIconUrl + "upload.svg",
|
||||||
subImage: { x: 0, y: Tool.IMAGE_WIDTH, width: Tool.IMAGE_WIDTH, height: Tool.IMAGE_HEIGHT },
|
subImage: {
|
||||||
|
x: 0,
|
||||||
|
y: Tool.IMAGE_WIDTH,
|
||||||
|
width: Tool.IMAGE_WIDTH,
|
||||||
|
height: Tool.IMAGE_HEIGHT
|
||||||
|
},
|
||||||
width: toolWidth,
|
width: toolWidth,
|
||||||
height: toolHeight,
|
height: toolHeight,
|
||||||
alpha: 0.9,
|
alpha: 0.9,
|
||||||
|
@ -181,7 +203,12 @@ var toolBar = (function () {
|
||||||
|
|
||||||
newCubeButton = toolBar.addTool({
|
newCubeButton = toolBar.addTool({
|
||||||
imageURL: toolIconUrl + "add-cube.svg",
|
imageURL: toolIconUrl + "add-cube.svg",
|
||||||
subImage: { x: 0, y: Tool.IMAGE_WIDTH, width: Tool.IMAGE_WIDTH, height: Tool.IMAGE_HEIGHT },
|
subImage: {
|
||||||
|
x: 0,
|
||||||
|
y: Tool.IMAGE_WIDTH,
|
||||||
|
width: Tool.IMAGE_WIDTH,
|
||||||
|
height: Tool.IMAGE_HEIGHT
|
||||||
|
},
|
||||||
width: toolWidth,
|
width: toolWidth,
|
||||||
height: toolHeight,
|
height: toolHeight,
|
||||||
alpha: 0.9,
|
alpha: 0.9,
|
||||||
|
@ -190,7 +217,12 @@ var toolBar = (function () {
|
||||||
|
|
||||||
newSphereButton = toolBar.addTool({
|
newSphereButton = toolBar.addTool({
|
||||||
imageURL: toolIconUrl + "add-sphere.svg",
|
imageURL: toolIconUrl + "add-sphere.svg",
|
||||||
subImage: { x: 0, y: Tool.IMAGE_WIDTH, width: Tool.IMAGE_WIDTH, height: Tool.IMAGE_HEIGHT },
|
subImage: {
|
||||||
|
x: 0,
|
||||||
|
y: Tool.IMAGE_WIDTH,
|
||||||
|
width: Tool.IMAGE_WIDTH,
|
||||||
|
height: Tool.IMAGE_HEIGHT
|
||||||
|
},
|
||||||
width: toolWidth,
|
width: toolWidth,
|
||||||
height: toolHeight,
|
height: toolHeight,
|
||||||
alpha: 0.9,
|
alpha: 0.9,
|
||||||
|
@ -199,7 +231,12 @@ var toolBar = (function () {
|
||||||
|
|
||||||
newLightButton = toolBar.addTool({
|
newLightButton = toolBar.addTool({
|
||||||
imageURL: toolIconUrl + "light.svg",
|
imageURL: toolIconUrl + "light.svg",
|
||||||
subImage: { x: 0, y: Tool.IMAGE_WIDTH, width: Tool.IMAGE_WIDTH, height: Tool.IMAGE_HEIGHT },
|
subImage: {
|
||||||
|
x: 0,
|
||||||
|
y: Tool.IMAGE_WIDTH,
|
||||||
|
width: Tool.IMAGE_WIDTH,
|
||||||
|
height: Tool.IMAGE_HEIGHT
|
||||||
|
},
|
||||||
width: toolWidth,
|
width: toolWidth,
|
||||||
height: toolHeight,
|
height: toolHeight,
|
||||||
alpha: 0.9,
|
alpha: 0.9,
|
||||||
|
@ -208,7 +245,12 @@ var toolBar = (function () {
|
||||||
|
|
||||||
newTextButton = toolBar.addTool({
|
newTextButton = toolBar.addTool({
|
||||||
imageURL: toolIconUrl + "add-text.svg",
|
imageURL: toolIconUrl + "add-text.svg",
|
||||||
subImage: { x: 0, y: Tool.IMAGE_WIDTH, width: Tool.IMAGE_WIDTH, height: Tool.IMAGE_HEIGHT },
|
subImage: {
|
||||||
|
x: 0,
|
||||||
|
y: Tool.IMAGE_WIDTH,
|
||||||
|
width: Tool.IMAGE_WIDTH,
|
||||||
|
height: Tool.IMAGE_HEIGHT
|
||||||
|
},
|
||||||
width: toolWidth,
|
width: toolWidth,
|
||||||
height: toolHeight,
|
height: toolHeight,
|
||||||
alpha: 0.9,
|
alpha: 0.9,
|
||||||
|
@ -217,7 +259,12 @@ var toolBar = (function () {
|
||||||
|
|
||||||
newWebButton = toolBar.addTool({
|
newWebButton = toolBar.addTool({
|
||||||
imageURL: "https://hifi-public.s3.amazonaws.com/images/www.svg",
|
imageURL: "https://hifi-public.s3.amazonaws.com/images/www.svg",
|
||||||
subImage: { x: 0, y: 0, width: 128, height: 128 },
|
subImage: {
|
||||||
|
x: 0,
|
||||||
|
y: 0,
|
||||||
|
width: 128,
|
||||||
|
height: 128
|
||||||
|
},
|
||||||
width: toolWidth,
|
width: toolWidth,
|
||||||
height: toolHeight,
|
height: toolHeight,
|
||||||
alpha: 0.9,
|
alpha: 0.9,
|
||||||
|
@ -226,7 +273,12 @@ var toolBar = (function () {
|
||||||
|
|
||||||
newZoneButton = toolBar.addTool({
|
newZoneButton = toolBar.addTool({
|
||||||
imageURL: toolIconUrl + "zonecube_text.svg",
|
imageURL: toolIconUrl + "zonecube_text.svg",
|
||||||
subImage: { x: 0, y: 128, width: 128, height: 128 },
|
subImage: {
|
||||||
|
x: 0,
|
||||||
|
y: 128,
|
||||||
|
width: 128,
|
||||||
|
height: 128
|
||||||
|
},
|
||||||
width: toolWidth,
|
width: toolWidth,
|
||||||
height: toolHeight,
|
height: toolHeight,
|
||||||
alpha: 0.9,
|
alpha: 0.9,
|
||||||
|
@ -235,7 +287,12 @@ var toolBar = (function () {
|
||||||
|
|
||||||
newPolyVoxButton = toolBar.addTool({
|
newPolyVoxButton = toolBar.addTool({
|
||||||
imageURL: toolIconUrl + "polyvox.svg",
|
imageURL: toolIconUrl + "polyvox.svg",
|
||||||
subImage: { x: 0, y: 0, width: 256, height: 256 },
|
subImage: {
|
||||||
|
x: 0,
|
||||||
|
y: 0,
|
||||||
|
width: 256,
|
||||||
|
height: 256
|
||||||
|
},
|
||||||
width: toolWidth,
|
width: toolWidth,
|
||||||
height: toolHeight,
|
height: toolHeight,
|
||||||
alpha: 0.9,
|
alpha: 0.9,
|
||||||
|
@ -293,6 +350,7 @@ var toolBar = (function () {
|
||||||
var RESIZE_INTERVAL = 50;
|
var RESIZE_INTERVAL = 50;
|
||||||
var RESIZE_TIMEOUT = 120000; // 2 minutes
|
var RESIZE_TIMEOUT = 120000; // 2 minutes
|
||||||
var RESIZE_MAX_CHECKS = RESIZE_TIMEOUT / RESIZE_INTERVAL;
|
var RESIZE_MAX_CHECKS = RESIZE_TIMEOUT / RESIZE_INTERVAL;
|
||||||
|
|
||||||
function addModel(url) {
|
function addModel(url) {
|
||||||
var entityID = createNewEntity({
|
var entityID = createNewEntity({
|
||||||
type: "Model",
|
type: "Model",
|
||||||
|
@ -334,7 +392,10 @@ var toolBar = (function () {
|
||||||
url,
|
url,
|
||||||
file;
|
file;
|
||||||
|
|
||||||
clickedOverlay = Overlays.getOverlayAtPoint({ x: event.x, y: event.y });
|
clickedOverlay = Overlays.getOverlayAtPoint({
|
||||||
|
x: event.x,
|
||||||
|
y: event.y
|
||||||
|
});
|
||||||
|
|
||||||
if (activeButton === toolBar.clicked(clickedOverlay)) {
|
if (activeButton === toolBar.clicked(clickedOverlay)) {
|
||||||
that.setActive(!isActive);
|
that.setActive(!isActive);
|
||||||
|
@ -360,7 +421,11 @@ var toolBar = (function () {
|
||||||
createNewEntity({
|
createNewEntity({
|
||||||
type: "Box",
|
type: "Box",
|
||||||
dimensions: DEFAULT_DIMENSIONS,
|
dimensions: DEFAULT_DIMENSIONS,
|
||||||
color: { red: 255, green: 0, blue: 0 }
|
color: {
|
||||||
|
red: 255,
|
||||||
|
green: 0,
|
||||||
|
blue: 0
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@ -370,7 +435,11 @@ var toolBar = (function () {
|
||||||
createNewEntity({
|
createNewEntity({
|
||||||
type: "Sphere",
|
type: "Sphere",
|
||||||
dimensions: DEFAULT_DIMENSIONS,
|
dimensions: DEFAULT_DIMENSIONS,
|
||||||
color: { red: 255, green: 0, blue: 0 }
|
color: {
|
||||||
|
red: 255,
|
||||||
|
green: 0,
|
||||||
|
blue: 0
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@ -381,7 +450,11 @@ var toolBar = (function () {
|
||||||
type: "Light",
|
type: "Light",
|
||||||
dimensions: DEFAULT_LIGHT_DIMENSIONS,
|
dimensions: DEFAULT_LIGHT_DIMENSIONS,
|
||||||
isSpotlight: false,
|
isSpotlight: false,
|
||||||
color: { red: 150, green: 150, blue: 150 },
|
color: {
|
||||||
|
red: 150,
|
||||||
|
green: 150,
|
||||||
|
blue: 150
|
||||||
|
},
|
||||||
|
|
||||||
constantAttenuation: 1,
|
constantAttenuation: 1,
|
||||||
linearAttenuation: 0,
|
linearAttenuation: 0,
|
||||||
|
@ -396,9 +469,21 @@ var toolBar = (function () {
|
||||||
if (newTextButton === toolBar.clicked(clickedOverlay)) {
|
if (newTextButton === toolBar.clicked(clickedOverlay)) {
|
||||||
createNewEntity({
|
createNewEntity({
|
||||||
type: "Text",
|
type: "Text",
|
||||||
dimensions: { x: 0.65, y: 0.3, z: 0.01 },
|
dimensions: {
|
||||||
backgroundColor: { red: 64, green: 64, blue: 64 },
|
x: 0.65,
|
||||||
textColor: { red: 255, green: 255, blue: 255 },
|
y: 0.3,
|
||||||
|
z: 0.01
|
||||||
|
},
|
||||||
|
backgroundColor: {
|
||||||
|
red: 64,
|
||||||
|
green: 64,
|
||||||
|
blue: 64
|
||||||
|
},
|
||||||
|
textColor: {
|
||||||
|
red: 255,
|
||||||
|
green: 255,
|
||||||
|
blue: 255
|
||||||
|
},
|
||||||
text: "some text",
|
text: "some text",
|
||||||
lineHeight: 0.06
|
lineHeight: 0.06
|
||||||
});
|
});
|
||||||
|
@ -409,7 +494,11 @@ var toolBar = (function () {
|
||||||
if (newWebButton === toolBar.clicked(clickedOverlay)) {
|
if (newWebButton === toolBar.clicked(clickedOverlay)) {
|
||||||
createNewEntity({
|
createNewEntity({
|
||||||
type: "Web",
|
type: "Web",
|
||||||
dimensions: { x: 1.6, y: 0.9, z: 0.01 },
|
dimensions: {
|
||||||
|
x: 1.6,
|
||||||
|
y: 0.9,
|
||||||
|
z: 0.01
|
||||||
|
},
|
||||||
sourceUrl: "https://highfidelity.com/",
|
sourceUrl: "https://highfidelity.com/",
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -419,7 +508,11 @@ var toolBar = (function () {
|
||||||
if (newZoneButton === toolBar.clicked(clickedOverlay)) {
|
if (newZoneButton === toolBar.clicked(clickedOverlay)) {
|
||||||
createNewEntity({
|
createNewEntity({
|
||||||
type: "Zone",
|
type: "Zone",
|
||||||
dimensions: { x: 10, y: 10, z: 10 },
|
dimensions: {
|
||||||
|
x: 10,
|
||||||
|
y: 10,
|
||||||
|
z: 10
|
||||||
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@ -428,27 +521,83 @@ var toolBar = (function () {
|
||||||
if (newPolyVoxButton === toolBar.clicked(clickedOverlay)) {
|
if (newPolyVoxButton === toolBar.clicked(clickedOverlay)) {
|
||||||
var polyVoxId = createNewEntity({
|
var polyVoxId = createNewEntity({
|
||||||
type: "PolyVox",
|
type: "PolyVox",
|
||||||
dimensions: { x: 10, y: 10, z: 10 },
|
dimensions: {
|
||||||
voxelVolumeSize: {x:16, y:16, z:16},
|
x: 10,
|
||||||
|
y: 10,
|
||||||
|
z: 10
|
||||||
|
},
|
||||||
|
voxelVolumeSize: {
|
||||||
|
x: 16,
|
||||||
|
y: 16,
|
||||||
|
z: 16
|
||||||
|
},
|
||||||
voxelSurfaceStyle: 2
|
voxelSurfaceStyle: 2
|
||||||
});
|
});
|
||||||
for (var x = 1; x <= 14; x++) {
|
for (var x = 1; x <= 14; x++) {
|
||||||
Entities.setVoxel(polyVoxId, {x: x, y: 1, z: 1}, 255);
|
Entities.setVoxel(polyVoxId, {
|
||||||
Entities.setVoxel(polyVoxId, {x: x, y: 14, z: 1}, 255);
|
x: x,
|
||||||
Entities.setVoxel(polyVoxId, {x: x, y: 1, z: 14}, 255);
|
y: 1,
|
||||||
Entities.setVoxel(polyVoxId, {x: x, y: 14, z: 14}, 255);
|
z: 1
|
||||||
|
}, 255);
|
||||||
|
Entities.setVoxel(polyVoxId, {
|
||||||
|
x: x,
|
||||||
|
y: 14,
|
||||||
|
z: 1
|
||||||
|
}, 255);
|
||||||
|
Entities.setVoxel(polyVoxId, {
|
||||||
|
x: x,
|
||||||
|
y: 1,
|
||||||
|
z: 14
|
||||||
|
}, 255);
|
||||||
|
Entities.setVoxel(polyVoxId, {
|
||||||
|
x: x,
|
||||||
|
y: 14,
|
||||||
|
z: 14
|
||||||
|
}, 255);
|
||||||
}
|
}
|
||||||
for (var y = 2; y <= 13; y++) {
|
for (var y = 2; y <= 13; y++) {
|
||||||
Entities.setVoxel(polyVoxId, {x: 1, y: y, z: 1}, 255);
|
Entities.setVoxel(polyVoxId, {
|
||||||
Entities.setVoxel(polyVoxId, {x: 14, y: y, z: 1}, 255);
|
x: 1,
|
||||||
Entities.setVoxel(polyVoxId, {x: 1, y: y, z: 14}, 255);
|
y: y,
|
||||||
Entities.setVoxel(polyVoxId, {x: 14, y: y, z: 14}, 255);
|
z: 1
|
||||||
|
}, 255);
|
||||||
|
Entities.setVoxel(polyVoxId, {
|
||||||
|
x: 14,
|
||||||
|
y: y,
|
||||||
|
z: 1
|
||||||
|
}, 255);
|
||||||
|
Entities.setVoxel(polyVoxId, {
|
||||||
|
x: 1,
|
||||||
|
y: y,
|
||||||
|
z: 14
|
||||||
|
}, 255);
|
||||||
|
Entities.setVoxel(polyVoxId, {
|
||||||
|
x: 14,
|
||||||
|
y: y,
|
||||||
|
z: 14
|
||||||
|
}, 255);
|
||||||
}
|
}
|
||||||
for (var z = 2; z <= 13; z++) {
|
for (var z = 2; z <= 13; z++) {
|
||||||
Entities.setVoxel(polyVoxId, {x: 1, y: 1, z: z}, 255);
|
Entities.setVoxel(polyVoxId, {
|
||||||
Entities.setVoxel(polyVoxId, {x: 14, y: 1, z: z}, 255);
|
x: 1,
|
||||||
Entities.setVoxel(polyVoxId, {x: 1, y: 14, z: z}, 255);
|
y: 1,
|
||||||
Entities.setVoxel(polyVoxId, {x: 14, y: 14, z: z}, 255);
|
z: z
|
||||||
|
}, 255);
|
||||||
|
Entities.setVoxel(polyVoxId, {
|
||||||
|
x: 14,
|
||||||
|
y: 1,
|
||||||
|
z: z
|
||||||
|
}, 255);
|
||||||
|
Entities.setVoxel(polyVoxId, {
|
||||||
|
x: 1,
|
||||||
|
y: 14,
|
||||||
|
z: z
|
||||||
|
}, 255);
|
||||||
|
Entities.setVoxel(polyVoxId, {
|
||||||
|
x: 14,
|
||||||
|
y: 14,
|
||||||
|
z: z
|
||||||
|
}, 255);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -461,7 +610,10 @@ var toolBar = (function () {
|
||||||
that.mouseReleaseEvent = function(event) {
|
that.mouseReleaseEvent = function(event) {
|
||||||
var handled = false;
|
var handled = false;
|
||||||
if (newModelButtonDown) {
|
if (newModelButtonDown) {
|
||||||
var clickedOverlay = Overlays.getOverlayAtPoint({ x: event.x, y: event.y });
|
var clickedOverlay = Overlays.getOverlayAtPoint({
|
||||||
|
x: event.x,
|
||||||
|
y: event.y
|
||||||
|
});
|
||||||
if (newModelButton === toolBar.clicked(clickedOverlay)) {
|
if (newModelButton === toolBar.clicked(clickedOverlay)) {
|
||||||
url = Window.prompt("Model URL", modelURLs[Math.floor(Math.random() * modelURLs.length)]);
|
url = Window.prompt("Model URL", modelURLs[Math.floor(Math.random() * modelURLs.length)]);
|
||||||
if (url !== null && url !== "") {
|
if (url !== null && url !== "") {
|
||||||
|
@ -470,7 +622,10 @@ var toolBar = (function () {
|
||||||
handled = true;
|
handled = true;
|
||||||
}
|
}
|
||||||
} else if (browseMarketplaceButtonDown) {
|
} else if (browseMarketplaceButtonDown) {
|
||||||
var clickedOverlay = Overlays.getOverlayAtPoint({ x: event.x, y: event.y });
|
var clickedOverlay = Overlays.getOverlayAtPoint({
|
||||||
|
x: event.x,
|
||||||
|
y: event.y
|
||||||
|
});
|
||||||
if (browseMarketplaceButton === toolBar.clicked(clickedOverlay)) {
|
if (browseMarketplaceButton === toolBar.clicked(clickedOverlay)) {
|
||||||
url = Window.s3Browse(".*(fbx|FBX|obj|OBJ)");
|
url = Window.s3Browse(".*(fbx|FBX|obj|OBJ)");
|
||||||
if (url !== null && url !== "") {
|
if (url !== null && url !== "") {
|
||||||
|
@ -568,17 +723,26 @@ function findClickedEntity(event) {
|
||||||
}
|
}
|
||||||
|
|
||||||
var foundEntity = result.entityID;
|
var foundEntity = result.entityID;
|
||||||
return { pickRay: pickRay, entityID: foundEntity };
|
return {
|
||||||
|
pickRay: pickRay,
|
||||||
|
entityID: foundEntity
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
var mouseHasMovedSincePress = false;
|
var mouseHasMovedSincePress = false;
|
||||||
var mousePressStartTime = 0;
|
var mousePressStartTime = 0;
|
||||||
var mousePressStartPosition = { x: 0, y: 0 };
|
var mousePressStartPosition = {
|
||||||
|
x: 0,
|
||||||
|
y: 0
|
||||||
|
};
|
||||||
var mouseDown = false;
|
var mouseDown = false;
|
||||||
|
|
||||||
function mousePressEvent(event) {
|
function mousePressEvent(event) {
|
||||||
mouseDown = true;
|
mouseDown = true;
|
||||||
mousePressStartPosition = { x: event.x, y: event.y };
|
mousePressStartPosition = {
|
||||||
|
x: event.x,
|
||||||
|
y: event.y
|
||||||
|
};
|
||||||
mousePressStartTime = Date.now();
|
mousePressStartTime = Date.now();
|
||||||
mouseHasMovedSincePress = false;
|
mouseHasMovedSincePress = false;
|
||||||
mouseCapturedByTool = false;
|
mouseCapturedByTool = false;
|
||||||
|
@ -605,9 +769,11 @@ var IDLE_MOUSE_TIMEOUT = 200;
|
||||||
var DEFAULT_ENTITY_DRAG_DROP_DISTANCE = 2.0;
|
var DEFAULT_ENTITY_DRAG_DROP_DISTANCE = 2.0;
|
||||||
|
|
||||||
var lastMouseMoveEvent = null;
|
var lastMouseMoveEvent = null;
|
||||||
|
|
||||||
function mouseMoveEventBuffered(event) {
|
function mouseMoveEventBuffered(event) {
|
||||||
lastMouseMoveEvent = event;
|
lastMouseMoveEvent = event;
|
||||||
}
|
}
|
||||||
|
|
||||||
function mouseMove(event) {
|
function mouseMove(event) {
|
||||||
if (mouseDown && !mouseHasMovedSincePress) {
|
if (mouseDown && !mouseHasMovedSincePress) {
|
||||||
var timeSincePressMicro = Date.now() - mousePressStartTime;
|
var timeSincePressMicro = Date.now() - mousePressStartTime;
|
||||||
|
@ -647,7 +813,10 @@ function mouseMove(event) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
lastMousePosition = { x: event.x, y: event.y };
|
lastMousePosition = {
|
||||||
|
x: event.x,
|
||||||
|
y: event.y
|
||||||
|
};
|
||||||
|
|
||||||
idleMouseTimerId = Script.setTimeout(handleIdleMouse, IDLE_MOUSE_TIMEOUT);
|
idleMouseTimerId = Script.setTimeout(handleIdleMouse, IDLE_MOUSE_TIMEOUT);
|
||||||
}
|
}
|
||||||
|
@ -662,7 +831,9 @@ function highlightEntityUnderCursor(position, accurateRay) {
|
||||||
if (entityIntersection.accurate) {
|
if (entityIntersection.accurate) {
|
||||||
if (highlightedEntityID && highlightedEntityID != entityIntersection.entityID) {
|
if (highlightedEntityID && highlightedEntityID != entityIntersection.entityID) {
|
||||||
selectionDisplay.unhighlightSelectable(highlightedEntityID);
|
selectionDisplay.unhighlightSelectable(highlightedEntityID);
|
||||||
highlightedEntityID = { id: -1 };
|
highlightedEntityID = {
|
||||||
|
id: -1
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
var halfDiagonal = Vec3.length(entityIntersection.properties.dimensions) / 2.0;
|
var halfDiagonal = Vec3.length(entityIntersection.properties.dimensions) / 2.0;
|
||||||
|
@ -670,12 +841,13 @@ function highlightEntityUnderCursor(position, accurateRay) {
|
||||||
var angularSize = 2 * Math.atan(halfDiagonal / Vec3.distance(Camera.getPosition(),
|
var angularSize = 2 * Math.atan(halfDiagonal / Vec3.distance(Camera.getPosition(),
|
||||||
entityIntersection.properties.position)) * 180 / 3.14;
|
entityIntersection.properties.position)) * 180 / 3.14;
|
||||||
|
|
||||||
var sizeOK = (allowLargeModels || angularSize < MAX_ANGULAR_SIZE)
|
var sizeOK = (allowLargeModels || angularSize < MAX_ANGULAR_SIZE) && (allowSmallModels || angularSize > MIN_ANGULAR_SIZE);
|
||||||
&& (allowSmallModels || angularSize > MIN_ANGULAR_SIZE);
|
|
||||||
|
|
||||||
if (entityIntersection.entityID && sizeOK) {
|
if (entityIntersection.entityID && sizeOK) {
|
||||||
if (wantEntityGlow) {
|
if (wantEntityGlow) {
|
||||||
Entities.editEntity(entityIntersection.entityID, { glowLevel: 0.25 });
|
Entities.editEntity(entityIntersection.entityID, {
|
||||||
|
glowLevel: 0.25
|
||||||
|
});
|
||||||
}
|
}
|
||||||
highlightedEntityID = entityIntersection.entityID;
|
highlightedEntityID = entityIntersection.entityID;
|
||||||
selectionDisplay.highlightSelectable(entityIntersection.entityID);
|
selectionDisplay.highlightSelectable(entityIntersection.entityID);
|
||||||
|
@ -693,18 +865,23 @@ function mouseReleaseEvent(event) {
|
||||||
lastMouseMoveEvent = null;
|
lastMouseMoveEvent = null;
|
||||||
}
|
}
|
||||||
if (propertyMenu.mouseReleaseEvent(event) || toolBar.mouseReleaseEvent(event)) {
|
if (propertyMenu.mouseReleaseEvent(event) || toolBar.mouseReleaseEvent(event)) {
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
if (placingEntityID) {
|
if (placingEntityID) {
|
||||||
|
|
||||||
if (isActive) {
|
if (isActive) {
|
||||||
|
|
||||||
selectionManager.setSelections([placingEntityID]);
|
selectionManager.setSelections([placingEntityID]);
|
||||||
}
|
}
|
||||||
placingEntityID = null;
|
placingEntityID = null;
|
||||||
}
|
}
|
||||||
if (isActive && selectionManager.hasSelection()) {
|
if (isActive && selectionManager.hasSelection()) {
|
||||||
|
|
||||||
tooltip.show(false);
|
tooltip.show(false);
|
||||||
}
|
}
|
||||||
if (mouseCapturedByTool) {
|
if (mouseCapturedByTool) {
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -757,8 +934,7 @@ function mouseClickEvent(event) {
|
||||||
|
|
||||||
var angularSize = 2 * Math.atan(halfDiagonal / Vec3.distance(Camera.getPosition(), properties.position)) * 180 / 3.14;
|
var angularSize = 2 * Math.atan(halfDiagonal / Vec3.distance(Camera.getPosition(), properties.position)) * 180 / 3.14;
|
||||||
|
|
||||||
var sizeOK = (allowLargeModels || angularSize < MAX_ANGULAR_SIZE)
|
var sizeOK = (allowLargeModels || angularSize < MAX_ANGULAR_SIZE) && (allowSmallModels || angularSize > MIN_ANGULAR_SIZE);
|
||||||
&& (allowSmallModels || angularSize > MIN_ANGULAR_SIZE);
|
|
||||||
|
|
||||||
if (0 < x && sizeOK) {
|
if (0 < x && sizeOK) {
|
||||||
entitySelected = true;
|
entitySelected = true;
|
||||||
|
@ -813,44 +989,125 @@ Controller.mouseReleaseEvent.connect(mouseReleaseEvent);
|
||||||
// added it.
|
// added it.
|
||||||
var modelMenuAddedDelete = false;
|
var modelMenuAddedDelete = false;
|
||||||
var originalLightsArePickable = Entities.getLightsArePickable();
|
var originalLightsArePickable = Entities.getLightsArePickable();
|
||||||
|
|
||||||
function setupModelMenus() {
|
function setupModelMenus() {
|
||||||
print("setupModelMenus()");
|
print("setupModelMenus()");
|
||||||
// adj our menuitems
|
// adj our menuitems
|
||||||
Menu.addMenuItem({ menuName: "Edit", menuItemName: "Models", isSeparator: true, beforeItem: "Physics" });
|
Menu.addMenuItem({
|
||||||
|
menuName: "Edit",
|
||||||
|
menuItemName: "Models",
|
||||||
|
isSeparator: true,
|
||||||
|
beforeItem: "Physics"
|
||||||
|
});
|
||||||
if (!Menu.menuItemExists("Edit", "Delete")) {
|
if (!Menu.menuItemExists("Edit", "Delete")) {
|
||||||
print("no delete... adding ours");
|
print("no delete... adding ours");
|
||||||
Menu.addMenuItem({ menuName: "Edit", menuItemName: "Delete",
|
Menu.addMenuItem({
|
||||||
shortcutKeyEvent: { text: "backspace" }, afterItem: "Models" });
|
menuName: "Edit",
|
||||||
|
menuItemName: "Delete",
|
||||||
|
shortcutKeyEvent: {
|
||||||
|
text: "backspace"
|
||||||
|
},
|
||||||
|
afterItem: "Models"
|
||||||
|
});
|
||||||
modelMenuAddedDelete = true;
|
modelMenuAddedDelete = true;
|
||||||
} else {
|
} else {
|
||||||
print("delete exists... don't add ours");
|
print("delete exists... don't add ours");
|
||||||
}
|
}
|
||||||
|
|
||||||
Menu.addMenuItem({ menuName: "Edit", menuItemName: "Entity List...", shortcutKey: "CTRL+META+L", afterItem: "Models" });
|
Menu.addMenuItem({
|
||||||
Menu.addMenuItem({ menuName: "Edit", menuItemName: "Allow Selecting of Large Models", shortcutKey: "CTRL+META+L",
|
menuName: "Edit",
|
||||||
afterItem: "Entity List...", isCheckable: true, isChecked: true });
|
menuItemName: "Entity List...",
|
||||||
Menu.addMenuItem({ menuName: "Edit", menuItemName: "Allow Selecting of Small Models", shortcutKey: "CTRL+META+S",
|
shortcutKey: "CTRL+META+L",
|
||||||
afterItem: "Allow Selecting of Large Models", isCheckable: true, isChecked: true });
|
afterItem: "Models"
|
||||||
Menu.addMenuItem({ menuName: "Edit", menuItemName: "Allow Selecting of Lights", shortcutKey: "CTRL+SHIFT+META+L",
|
});
|
||||||
afterItem: "Allow Selecting of Small Models", isCheckable: true });
|
Menu.addMenuItem({
|
||||||
Menu.addMenuItem({ menuName: "Edit", menuItemName: "Select All Entities In Box", shortcutKey: "CTRL+SHIFT+META+A",
|
menuName: "Edit",
|
||||||
afterItem: "Allow Selecting of Lights" });
|
menuItemName: "Allow Selecting of Large Models",
|
||||||
Menu.addMenuItem({ menuName: "Edit", menuItemName: "Select All Entities Touching Box", shortcutKey: "CTRL+SHIFT+META+T",
|
shortcutKey: "CTRL+META+L",
|
||||||
afterItem: "Select All Entities In Box" });
|
afterItem: "Entity List...",
|
||||||
|
isCheckable: true,
|
||||||
|
isChecked: true
|
||||||
|
});
|
||||||
|
Menu.addMenuItem({
|
||||||
|
menuName: "Edit",
|
||||||
|
menuItemName: "Allow Selecting of Small Models",
|
||||||
|
shortcutKey: "CTRL+META+S",
|
||||||
|
afterItem: "Allow Selecting of Large Models",
|
||||||
|
isCheckable: true,
|
||||||
|
isChecked: true
|
||||||
|
});
|
||||||
|
Menu.addMenuItem({
|
||||||
|
menuName: "Edit",
|
||||||
|
menuItemName: "Allow Selecting of Lights",
|
||||||
|
shortcutKey: "CTRL+SHIFT+META+L",
|
||||||
|
afterItem: "Allow Selecting of Small Models",
|
||||||
|
isCheckable: true
|
||||||
|
});
|
||||||
|
Menu.addMenuItem({
|
||||||
|
menuName: "Edit",
|
||||||
|
menuItemName: "Select All Entities In Box",
|
||||||
|
shortcutKey: "CTRL+SHIFT+META+A",
|
||||||
|
afterItem: "Allow Selecting of Lights"
|
||||||
|
});
|
||||||
|
Menu.addMenuItem({
|
||||||
|
menuName: "Edit",
|
||||||
|
menuItemName: "Select All Entities Touching Box",
|
||||||
|
shortcutKey: "CTRL+SHIFT+META+T",
|
||||||
|
afterItem: "Select All Entities In Box"
|
||||||
|
});
|
||||||
|
|
||||||
Menu.addMenuItem({ menuName: "File", menuItemName: "Models", isSeparator: true, beforeItem: "Settings" });
|
Menu.addMenuItem({
|
||||||
Menu.addMenuItem({ menuName: "File", menuItemName: "Export Entities", shortcutKey: "CTRL+META+E", afterItem: "Models" });
|
menuName: "File",
|
||||||
Menu.addMenuItem({ menuName: "File", menuItemName: "Import Entities", shortcutKey: "CTRL+META+I", afterItem: "Export Entities" });
|
menuItemName: "Models",
|
||||||
Menu.addMenuItem({ menuName: "File", menuItemName: "Import Entities from URL", shortcutKey: "CTRL+META+U", afterItem: "Import Entities" });
|
isSeparator: true,
|
||||||
|
beforeItem: "Settings"
|
||||||
|
});
|
||||||
|
Menu.addMenuItem({
|
||||||
|
menuName: "File",
|
||||||
|
menuItemName: "Export Entities",
|
||||||
|
shortcutKey: "CTRL+META+E",
|
||||||
|
afterItem: "Models"
|
||||||
|
});
|
||||||
|
Menu.addMenuItem({
|
||||||
|
menuName: "File",
|
||||||
|
menuItemName: "Import Entities",
|
||||||
|
shortcutKey: "CTRL+META+I",
|
||||||
|
afterItem: "Export Entities"
|
||||||
|
});
|
||||||
|
Menu.addMenuItem({
|
||||||
|
menuName: "File",
|
||||||
|
menuItemName: "Import Entities from URL",
|
||||||
|
shortcutKey: "CTRL+META+U",
|
||||||
|
afterItem: "Import Entities"
|
||||||
|
});
|
||||||
|
|
||||||
Menu.addMenuItem({ menuName: "View", menuItemName: MENU_AUTO_FOCUS_ON_SELECT,
|
Menu.addMenuItem({
|
||||||
isCheckable: true, isChecked: Settings.getValue(SETTING_AUTO_FOCUS_ON_SELECT) == "true" });
|
menuName: "View",
|
||||||
Menu.addMenuItem({ menuName: "View", menuItemName: MENU_EASE_ON_FOCUS, afterItem: MENU_AUTO_FOCUS_ON_SELECT,
|
menuItemName: MENU_AUTO_FOCUS_ON_SELECT,
|
||||||
isCheckable: true, isChecked: Settings.getValue(SETTING_EASE_ON_FOCUS) == "true" });
|
isCheckable: true,
|
||||||
Menu.addMenuItem({ menuName: "View", menuItemName: MENU_SHOW_LIGHTS_IN_EDIT_MODE, afterItem: MENU_EASE_ON_FOCUS,
|
isChecked: Settings.getValue(SETTING_AUTO_FOCUS_ON_SELECT) == "true"
|
||||||
isCheckable: true, isChecked: Settings.getValue(SETTING_SHOW_LIGHTS_IN_EDIT_MODE) == "true" });
|
});
|
||||||
Menu.addMenuItem({ menuName: "View", menuItemName: MENU_SHOW_ZONES_IN_EDIT_MODE, afterItem: MENU_SHOW_LIGHTS_IN_EDIT_MODE,
|
Menu.addMenuItem({
|
||||||
isCheckable: true, isChecked: Settings.getValue(SETTING_SHOW_ZONES_IN_EDIT_MODE) == "true" });
|
menuName: "View",
|
||||||
|
menuItemName: MENU_EASE_ON_FOCUS,
|
||||||
|
afterItem: MENU_AUTO_FOCUS_ON_SELECT,
|
||||||
|
isCheckable: true,
|
||||||
|
isChecked: Settings.getValue(SETTING_EASE_ON_FOCUS) == "true"
|
||||||
|
});
|
||||||
|
Menu.addMenuItem({
|
||||||
|
menuName: "View",
|
||||||
|
menuItemName: MENU_SHOW_LIGHTS_IN_EDIT_MODE,
|
||||||
|
afterItem: MENU_EASE_ON_FOCUS,
|
||||||
|
isCheckable: true,
|
||||||
|
isChecked: Settings.getValue(SETTING_SHOW_LIGHTS_IN_EDIT_MODE) == "true"
|
||||||
|
});
|
||||||
|
Menu.addMenuItem({
|
||||||
|
menuName: "View",
|
||||||
|
menuItemName: MENU_SHOW_ZONES_IN_EDIT_MODE,
|
||||||
|
afterItem: MENU_SHOW_LIGHTS_IN_EDIT_MODE,
|
||||||
|
isCheckable: true,
|
||||||
|
isChecked: Settings.getValue(SETTING_SHOW_ZONES_IN_EDIT_MODE) == "true"
|
||||||
|
});
|
||||||
|
|
||||||
Entities.setLightsArePickable(false);
|
Entities.setLightsArePickable(false);
|
||||||
}
|
}
|
||||||
|
@ -920,9 +1177,7 @@ Script.update.connect(function (deltaTime) {
|
||||||
});
|
});
|
||||||
|
|
||||||
function insideBox(center, dimensions, point) {
|
function insideBox(center, dimensions, point) {
|
||||||
return (Math.abs(point.x - center.x) <= (dimensions.x / 2.0))
|
return (Math.abs(point.x - center.x) <= (dimensions.x / 2.0)) && (Math.abs(point.y - center.y) <= (dimensions.y / 2.0)) && (Math.abs(point.z - center.z) <= (dimensions.z / 2.0));
|
||||||
&& (Math.abs(point.y - center.y) <= (dimensions.y / 2.0))
|
|
||||||
&& (Math.abs(point.z - center.z) <= (dimensions.z / 2.0));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function selectAllEtitiesInCurrentSelectionBox(keepIfTouching) {
|
function selectAllEtitiesInCurrentSelectionBox(keepIfTouching) {
|
||||||
|
@ -943,7 +1198,11 @@ function selectAllEtitiesInCurrentSelectionBox(keepIfTouching) {
|
||||||
var localPosition = Vec3.multiplyQbyV(Quat.inverse(selectionManager.localRotation),
|
var localPosition = Vec3.multiplyQbyV(Quat.inverse(selectionManager.localRotation),
|
||||||
Vec3.subtract(position,
|
Vec3.subtract(position,
|
||||||
selectionManager.localPosition));
|
selectionManager.localPosition));
|
||||||
return insideBox({ x: 0, y: 0, z: 0 }, selectionManager.localDimensions, localPosition);
|
return insideBox({
|
||||||
|
x: 0,
|
||||||
|
y: 0,
|
||||||
|
z: 0
|
||||||
|
}, selectionManager.localDimensions, localPosition);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for (var i = 0; i < entities.length; ++i) {
|
for (var i = 0; i < entities.length; ++i) {
|
||||||
|
@ -1041,12 +1300,8 @@ function getPositionToCreateEntity() {
|
||||||
|
|
||||||
var HALF_TREE_SCALE = 16384;
|
var HALF_TREE_SCALE = 16384;
|
||||||
|
|
||||||
var cameraOutOfBounds = Math.abs(cameraPosition.x) > HALF_TREE_SCALE
|
var cameraOutOfBounds = Math.abs(cameraPosition.x) > HALF_TREE_SCALE || Math.abs(cameraPosition.y) > HALF_TREE_SCALE || Math.abs(cameraPosition.z) > HALF_TREE_SCALE;
|
||||||
|| Math.abs(cameraPosition.y) > HALF_TREE_SCALE
|
var placementOutOfBounds = Math.abs(placementPosition.x) > HALF_TREE_SCALE || Math.abs(placementPosition.y) > HALF_TREE_SCALE || Math.abs(placementPosition.z) > HALF_TREE_SCALE;
|
||||||
|| Math.abs(cameraPosition.z) > HALF_TREE_SCALE;
|
|
||||||
var placementOutOfBounds = Math.abs(placementPosition.x) > HALF_TREE_SCALE
|
|
||||||
|| Math.abs(placementPosition.y) > HALF_TREE_SCALE
|
|
||||||
|| Math.abs(placementPosition.z) > HALF_TREE_SCALE;
|
|
||||||
|
|
||||||
if (cameraOutOfBounds && placementOutOfBounds) {
|
if (cameraOutOfBounds && placementOutOfBounds) {
|
||||||
return null;
|
return null;
|
||||||
|
@ -1065,14 +1320,22 @@ function importSVO(importURL) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Overlays.editOverlay(importingSVOTextOverlay, { visible: true });
|
Overlays.editOverlay(importingSVOTextOverlay, {
|
||||||
Overlays.editOverlay(importingSVOImageOverlay, { visible: true });
|
visible: true
|
||||||
|
});
|
||||||
|
Overlays.editOverlay(importingSVOImageOverlay, {
|
||||||
|
visible: true
|
||||||
|
});
|
||||||
|
|
||||||
var success = Clipboard.importEntities(importURL);
|
var success = Clipboard.importEntities(importURL);
|
||||||
|
|
||||||
if (success) {
|
if (success) {
|
||||||
var VERY_LARGE = 10000;
|
var VERY_LARGE = 10000;
|
||||||
var position = { x: 0, y: 0, z: 0 };
|
var position = {
|
||||||
|
x: 0,
|
||||||
|
y: 0,
|
||||||
|
z: 0
|
||||||
|
};
|
||||||
if (Clipboard.getClipboardContentsLargestDimension() < VERY_LARGE) {
|
if (Clipboard.getClipboardContentsLargestDimension() < VERY_LARGE) {
|
||||||
position = getPositionToCreateEntity();
|
position = getPositionToCreateEntity();
|
||||||
}
|
}
|
||||||
|
@ -1091,8 +1354,12 @@ function importSVO(importURL) {
|
||||||
Window.alert("There was an error importing the entity file.");
|
Window.alert("There was an error importing the entity file.");
|
||||||
}
|
}
|
||||||
|
|
||||||
Overlays.editOverlay(importingSVOTextOverlay, { visible: false });
|
Overlays.editOverlay(importingSVOTextOverlay, {
|
||||||
Overlays.editOverlay(importingSVOImageOverlay, { visible: false });
|
visible: false
|
||||||
|
});
|
||||||
|
Overlays.editOverlay(importingSVOImageOverlay, {
|
||||||
|
visible: false
|
||||||
|
});
|
||||||
}
|
}
|
||||||
Window.svoImportRequested.connect(importSVO);
|
Window.svoImportRequested.connect(importSVO);
|
||||||
|
|
||||||
|
@ -1131,7 +1398,11 @@ Controller.keyReleaseEvent.connect(function (event) {
|
||||||
} else if (event.text == 'g') {
|
} else if (event.text == 'g') {
|
||||||
if (isActive && selectionManager.hasSelection()) {
|
if (isActive && selectionManager.hasSelection()) {
|
||||||
var newPosition = selectionManager.worldPosition;
|
var newPosition = selectionManager.worldPosition;
|
||||||
newPosition = Vec3.subtract(newPosition, { x: 0, y: selectionManager.worldDimensions.y * 0.5, z: 0 });
|
newPosition = Vec3.subtract(newPosition, {
|
||||||
|
x: 0,
|
||||||
|
y: selectionManager.worldDimensions.y * 0.5,
|
||||||
|
z: 0
|
||||||
|
});
|
||||||
grid.setPosition(newPosition);
|
grid.setPosition(newPosition);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1140,8 +1411,7 @@ Controller.keyReleaseEvent.connect(function (event) {
|
||||||
// When an entity has been deleted we need a way to "undo" this deletion. Because it's not currently
|
// When an entity has been deleted we need a way to "undo" this deletion. Because it's not currently
|
||||||
// possible to create an entity with a specific id, earlier undo commands to the deleted entity
|
// possible to create an entity with a specific id, earlier undo commands to the deleted entity
|
||||||
// will fail if there isn't a way to find the new entity id.
|
// will fail if there isn't a way to find the new entity id.
|
||||||
DELETED_ENTITY_MAP = {
|
DELETED_ENTITY_MAP = {}
|
||||||
}
|
|
||||||
|
|
||||||
function applyEntityProperties(data) {
|
function applyEntityProperties(data) {
|
||||||
var properties = data.setProperties;
|
var properties = data.setProperties;
|
||||||
|
@ -1293,7 +1563,11 @@ PropertiesTool = function(opts) {
|
||||||
if (selectionManager.hasSelection()) {
|
if (selectionManager.hasSelection()) {
|
||||||
selectionManager.saveProperties();
|
selectionManager.saveProperties();
|
||||||
var dY = grid.getOrigin().y - (selectionManager.worldPosition.y - selectionManager.worldDimensions.y / 2);
|
var dY = grid.getOrigin().y - (selectionManager.worldPosition.y - selectionManager.worldDimensions.y / 2);
|
||||||
var diff = { x: 0, y: dY, z: 0 };
|
var diff = {
|
||||||
|
x: 0,
|
||||||
|
y: dY,
|
||||||
|
z: 0
|
||||||
|
};
|
||||||
for (var i = 0; i < selectionManager.selections.length; i++) {
|
for (var i = 0; i < selectionManager.selections.length; i++) {
|
||||||
var properties = selectionManager.savedProperties[selectionManager.selections[i]];
|
var properties = selectionManager.savedProperties[selectionManager.selections[i]];
|
||||||
var newPosition = Vec3.sum(properties.position, diff);
|
var newPosition = Vec3.sum(properties.position, diff);
|
||||||
|
@ -1311,7 +1585,11 @@ PropertiesTool = function(opts) {
|
||||||
var properties = selectionManager.savedProperties[selectionManager.selections[i]];
|
var properties = selectionManager.savedProperties[selectionManager.selections[i]];
|
||||||
var bottomY = properties.boundingBox.center.y - properties.boundingBox.dimensions.y / 2;
|
var bottomY = properties.boundingBox.center.y - properties.boundingBox.dimensions.y / 2;
|
||||||
var dY = grid.getOrigin().y - bottomY;
|
var dY = grid.getOrigin().y - bottomY;
|
||||||
var diff = { x: 0, y: dY, z: 0 };
|
var diff = {
|
||||||
|
x: 0,
|
||||||
|
y: dY,
|
||||||
|
z: 0
|
||||||
|
};
|
||||||
var newPosition = Vec3.sum(properties.position, diff);
|
var newPosition = Vec3.sum(properties.position, diff);
|
||||||
Entities.editEntity(selectionManager.selections[i], {
|
Entities.editEntity(selectionManager.selections[i], {
|
||||||
position: newPosition,
|
position: newPosition,
|
||||||
|
@ -1328,10 +1606,8 @@ PropertiesTool = function(opts) {
|
||||||
var naturalDimensions = properties.naturalDimensions;
|
var naturalDimensions = properties.naturalDimensions;
|
||||||
|
|
||||||
// If any of the natural dimensions are not 0, resize
|
// If any of the natural dimensions are not 0, resize
|
||||||
if (properties.type == "Model" && naturalDimensions.x == 0
|
if (properties.type == "Model" && naturalDimensions.x == 0 && naturalDimensions.y == 0 && naturalDimensions.z == 0) {
|
||||||
&& naturalDimensions.y == 0 && naturalDimensions.z == 0) {
|
Window.alert("Cannot reset entity to its natural dimensions: Model URL" + " is invalid or the model has not yet been loaded.");
|
||||||
Window.alert("Cannot reset entity to its natural dimensions: Model URL"
|
|
||||||
+ " is invalid or the model has not yet been loaded.");
|
|
||||||
} else {
|
} else {
|
||||||
Entities.editEntity(selectionManager.selections[i], {
|
Entities.editEntity(selectionManager.selections[i], {
|
||||||
dimensions: properties.naturalDimensions,
|
dimensions: properties.naturalDimensions,
|
||||||
|
@ -1370,12 +1646,16 @@ PropertiesTool = function(opts) {
|
||||||
var properties = selectionManager.savedProperties[selectionManager.selections[i]];
|
var properties = selectionManager.savedProperties[selectionManager.selections[i]];
|
||||||
if (properties.type == "Zone") {
|
if (properties.type == "Zone") {
|
||||||
var centerOfZone = properties.boundingBox.center;
|
var centerOfZone = properties.boundingBox.center;
|
||||||
var atmosphereCenter = { x: centerOfZone.x,
|
var atmosphereCenter = {
|
||||||
|
x: centerOfZone.x,
|
||||||
y: centerOfZone.y - properties.atmosphere.innerRadius,
|
y: centerOfZone.y - properties.atmosphere.innerRadius,
|
||||||
z: centerOfZone.z };
|
z: centerOfZone.z
|
||||||
|
};
|
||||||
|
|
||||||
Entities.editEntity(selectionManager.selections[i], {
|
Entities.editEntity(selectionManager.selections[i], {
|
||||||
atmosphere: { center: atmosphereCenter },
|
atmosphere: {
|
||||||
|
center: atmosphereCenter
|
||||||
|
},
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1399,9 +1679,21 @@ PopupMenu = function() {
|
||||||
var overlays = [];
|
var overlays = [];
|
||||||
var overlayInfo = {};
|
var overlayInfo = {};
|
||||||
|
|
||||||
var upColor = { red: 0, green: 0, blue: 0 };
|
var upColor = {
|
||||||
var downColor = { red: 192, green: 192, blue: 192 };
|
red: 0,
|
||||||
var overColor = { red: 128, green: 128, blue: 128 };
|
green: 0,
|
||||||
|
blue: 0
|
||||||
|
};
|
||||||
|
var downColor = {
|
||||||
|
red: 192,
|
||||||
|
green: 192,
|
||||||
|
blue: 192
|
||||||
|
};
|
||||||
|
var overColor = {
|
||||||
|
red: 128,
|
||||||
|
green: 128,
|
||||||
|
blue: 128
|
||||||
|
};
|
||||||
|
|
||||||
self.onSelectMenuItem = function() {};
|
self.onSelectMenuItem = function() {};
|
||||||
|
|
||||||
|
@ -1414,16 +1706,22 @@ PopupMenu = function() {
|
||||||
leftMargin: TEXT_MARGIN,
|
leftMargin: TEXT_MARGIN,
|
||||||
width: 210,
|
width: 210,
|
||||||
height: MENU_ITEM_HEIGHT,
|
height: MENU_ITEM_HEIGHT,
|
||||||
font: { size: 12 },
|
font: {
|
||||||
|
size: 12
|
||||||
|
},
|
||||||
visible: false,
|
visible: false,
|
||||||
});
|
});
|
||||||
overlays.push(id);
|
overlays.push(id);
|
||||||
overlayInfo[id] = { name: name };
|
overlayInfo[id] = {
|
||||||
|
name: name
|
||||||
|
};
|
||||||
return id;
|
return id;
|
||||||
};
|
};
|
||||||
|
|
||||||
self.updateMenuItemText = function(id, newText) {
|
self.updateMenuItemText = function(id, newText) {
|
||||||
Overlays.editOverlay(id, { text: newText });
|
Overlays.editOverlay(id, {
|
||||||
|
text: newText
|
||||||
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
self.setPosition = function(x, y) {
|
self.setPosition = function(x, y) {
|
||||||
|
@ -1443,10 +1741,15 @@ PopupMenu = function() {
|
||||||
|
|
||||||
self.mousePressEvent = function(event) {
|
self.mousePressEvent = function(event) {
|
||||||
if (event.isLeftButton) {
|
if (event.isLeftButton) {
|
||||||
var overlay = Overlays.getOverlayAtPoint({ x: event.x, y: event.y });
|
var overlay = Overlays.getOverlayAtPoint({
|
||||||
|
x: event.x,
|
||||||
|
y: event.y
|
||||||
|
});
|
||||||
if (overlay in overlayInfo) {
|
if (overlay in overlayInfo) {
|
||||||
pressingOverlay = overlay;
|
pressingOverlay = overlay;
|
||||||
Overlays.editOverlay(pressingOverlay, { backgroundColor: downColor });
|
Overlays.editOverlay(pressingOverlay, {
|
||||||
|
backgroundColor: downColor
|
||||||
|
});
|
||||||
} else {
|
} else {
|
||||||
self.hide();
|
self.hide();
|
||||||
}
|
}
|
||||||
|
@ -1455,14 +1758,21 @@ PopupMenu = function() {
|
||||||
};
|
};
|
||||||
self.mouseMoveEvent = function(event) {
|
self.mouseMoveEvent = function(event) {
|
||||||
if (visible) {
|
if (visible) {
|
||||||
var overlay = Overlays.getOverlayAtPoint({ x: event.x, y: event.y });
|
var overlay = Overlays.getOverlayAtPoint({
|
||||||
|
x: event.x,
|
||||||
|
y: event.y
|
||||||
|
});
|
||||||
if (!pressingOverlay) {
|
if (!pressingOverlay) {
|
||||||
if (hoveringOverlay != null && overlay != hoveringOverlay) {
|
if (hoveringOverlay != null && overlay != hoveringOverlay) {
|
||||||
Overlays.editOverlay(hoveringOverlay, { backgroundColor: upColor});
|
Overlays.editOverlay(hoveringOverlay, {
|
||||||
|
backgroundColor: upColor
|
||||||
|
});
|
||||||
hoveringOverlay = null;
|
hoveringOverlay = null;
|
||||||
}
|
}
|
||||||
if (overlay != hoveringOverlay && overlay in overlayInfo) {
|
if (overlay != hoveringOverlay && overlay in overlayInfo) {
|
||||||
Overlays.editOverlay(overlay, { backgroundColor: overColor });
|
Overlays.editOverlay(overlay, {
|
||||||
|
backgroundColor: overColor
|
||||||
|
});
|
||||||
hoveringOverlay = overlay;
|
hoveringOverlay = overlay;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1470,12 +1780,17 @@ PopupMenu = function() {
|
||||||
return false;
|
return false;
|
||||||
};
|
};
|
||||||
self.mouseReleaseEvent = function(event) {
|
self.mouseReleaseEvent = function(event) {
|
||||||
var overlay = Overlays.getOverlayAtPoint({ x: event.x, y: event.y });
|
var overlay = Overlays.getOverlayAtPoint({
|
||||||
|
x: event.x,
|
||||||
|
y: event.y
|
||||||
|
});
|
||||||
if (pressingOverlay != null) {
|
if (pressingOverlay != null) {
|
||||||
if (overlay == pressingOverlay) {
|
if (overlay == pressingOverlay) {
|
||||||
self.onSelectMenuItem(overlayInfo[overlay].name);
|
self.onSelectMenuItem(overlayInfo[overlay].name);
|
||||||
}
|
}
|
||||||
Overlays.editOverlay(pressingOverlay, { backgroundColor: upColor });
|
Overlays.editOverlay(pressingOverlay, {
|
||||||
|
backgroundColor: upColor
|
||||||
|
});
|
||||||
pressingOverlay = null;
|
pressingOverlay = null;
|
||||||
self.hide();
|
self.hide();
|
||||||
}
|
}
|
||||||
|
@ -1487,7 +1802,9 @@ PopupMenu = function() {
|
||||||
if (newVisible != visible) {
|
if (newVisible != visible) {
|
||||||
visible = newVisible;
|
visible = newVisible;
|
||||||
for (var key in overlayInfo) {
|
for (var key in overlayInfo) {
|
||||||
Overlays.editOverlay(key, { visible: newVisible });
|
Overlays.editOverlay(key, {
|
||||||
|
visible: newVisible
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -118,8 +118,16 @@ CameraManager = function() {
|
||||||
that.targetYaw = 0;
|
that.targetYaw = 0;
|
||||||
that.targetPitch = 0;
|
that.targetPitch = 0;
|
||||||
|
|
||||||
that.focalPoint = { x: 0, y: 0, z: 0 };
|
that.focalPoint = {
|
||||||
that.targetFocalPoint = { x: 0, y: 0, z: 0 };
|
x: 0,
|
||||||
|
y: 0,
|
||||||
|
z: 0
|
||||||
|
};
|
||||||
|
that.targetFocalPoint = {
|
||||||
|
x: 0,
|
||||||
|
y: 0,
|
||||||
|
z: 0
|
||||||
|
};
|
||||||
|
|
||||||
easing = false;
|
easing = false;
|
||||||
easingTime = 0;
|
easingTime = 0;
|
||||||
|
@ -127,13 +135,18 @@ CameraManager = function() {
|
||||||
|
|
||||||
that.previousCameraMode = null;
|
that.previousCameraMode = null;
|
||||||
|
|
||||||
that.lastMousePosition = { x: 0, y: 0 };
|
that.lastMousePosition = {
|
||||||
|
x: 0,
|
||||||
|
y: 0
|
||||||
|
};
|
||||||
|
|
||||||
that.enable = function() {
|
that.enable = function() {
|
||||||
if (Camera.mode == "independent" || that.enabled) return;
|
if (Camera.mode == "independent" || that.enabled) return;
|
||||||
|
|
||||||
for (var i = 0; i < CAPTURED_KEYS.length; i++) {
|
for (var i = 0; i < CAPTURED_KEYS.length; i++) {
|
||||||
Controller.captureKeyEvents({ text: CAPTURED_KEYS[i] });
|
Controller.captureKeyEvents({
|
||||||
|
text: CAPTURED_KEYS[i]
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
that.enabled = true;
|
that.enabled = true;
|
||||||
|
@ -169,7 +182,9 @@ CameraManager = function() {
|
||||||
if (!that.enabled) return;
|
if (!that.enabled) return;
|
||||||
|
|
||||||
for (var i = 0; i < CAPTURED_KEYS.length; i++) {
|
for (var i = 0; i < CAPTURED_KEYS.length; i++) {
|
||||||
Controller.releaseKeyEvents({ text: CAPTURED_KEYS[i] });
|
Controller.releaseKeyEvents({
|
||||||
|
text: CAPTURED_KEYS[i]
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
that.enabled = false;
|
that.enabled = false;
|
||||||
|
@ -335,19 +350,27 @@ CameraManager = function() {
|
||||||
|
|
||||||
var hasDragged = false;
|
var hasDragged = false;
|
||||||
that.mousePressEvent = function(event) {
|
that.mousePressEvent = function(event) {
|
||||||
|
|
||||||
if (cameraTool.mousePressEvent(event)) {
|
if (cameraTool.mousePressEvent(event)) {
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (!that.enabled) return;
|
if (!that.enabled) return;
|
||||||
|
|
||||||
if (event.isRightButton || (event.isLeftButton && event.isControl && !event.isShifted)) {
|
if (event.isRightButton || (event.isLeftButton && event.isControl && !event.isShifted)) {
|
||||||
|
|
||||||
that.mode = MODE_ORBIT;
|
that.mode = MODE_ORBIT;
|
||||||
} else if (event.isMiddleButton || (event.isLeftButton && event.isControl && event.isShifted)) {
|
} else if (event.isMiddleButton || (event.isLeftButton && event.isControl && event.isShifted)) {
|
||||||
|
|
||||||
|
|
||||||
that.mode = MODE_PAN;
|
that.mode = MODE_PAN;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (that.mode != MODE_INACTIVE) {
|
if (that.mode !== MODE_INACTIVE) {
|
||||||
|
|
||||||
|
|
||||||
hasDragged = false;
|
hasDragged = false;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@ -357,10 +380,12 @@ CameraManager = function() {
|
||||||
}
|
}
|
||||||
|
|
||||||
that.mouseReleaseEvent = function(event) {
|
that.mouseReleaseEvent = function(event) {
|
||||||
|
|
||||||
if (!that.enabled) return;
|
if (!that.enabled) return;
|
||||||
|
|
||||||
Window.setCursorVisible(true);
|
|
||||||
that.mode = MODE_INACTIVE;
|
that.mode = MODE_INACTIVE;
|
||||||
|
Window.setCursorVisible(true);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
that.keyPressEvent = function(event) {
|
that.keyPressEvent = function(event) {
|
||||||
|
@ -396,15 +421,31 @@ CameraManager = function() {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var yRot = Quat.angleAxis(that.yaw, { x: 0, y: 1, z: 0 });
|
var yRot = Quat.angleAxis(that.yaw, {
|
||||||
var xRot = Quat.angleAxis(that.pitch, { x: 1, y: 0, z: 0 });
|
x: 0,
|
||||||
|
y: 1,
|
||||||
|
z: 0
|
||||||
|
});
|
||||||
|
var xRot = Quat.angleAxis(that.pitch, {
|
||||||
|
x: 1,
|
||||||
|
y: 0,
|
||||||
|
z: 0
|
||||||
|
});
|
||||||
var q = Quat.multiply(yRot, xRot);
|
var q = Quat.multiply(yRot, xRot);
|
||||||
|
|
||||||
var pos = Vec3.multiply(Quat.getFront(q), that.zoomDistance);
|
var pos = Vec3.multiply(Quat.getFront(q), that.zoomDistance);
|
||||||
Camera.setPosition(Vec3.sum(that.focalPoint, pos));
|
Camera.setPosition(Vec3.sum(that.focalPoint, pos));
|
||||||
|
|
||||||
yRot = Quat.angleAxis(that.yaw - 180, { x: 0, y: 1, z: 0 });
|
yRot = Quat.angleAxis(that.yaw - 180, {
|
||||||
xRot = Quat.angleAxis(-that.pitch, { x: 1, y: 0, z: 0 });
|
x: 0,
|
||||||
|
y: 1,
|
||||||
|
z: 0
|
||||||
|
});
|
||||||
|
xRot = Quat.angleAxis(-that.pitch, {
|
||||||
|
x: 1,
|
||||||
|
y: 0,
|
||||||
|
z: 0
|
||||||
|
});
|
||||||
q = Quat.multiply(yRot, xRot);
|
q = Quat.multiply(yRot, xRot);
|
||||||
|
|
||||||
if (easing) {
|
if (easing) {
|
||||||
|
@ -503,9 +544,21 @@ CameraManager = function() {
|
||||||
CameraTool = function(cameraManager) {
|
CameraTool = function(cameraManager) {
|
||||||
var that = {};
|
var that = {};
|
||||||
|
|
||||||
var RED = { red: 191, green: 78, blue: 38 };
|
var RED = {
|
||||||
var GREEN = { red: 26, green: 193, blue: 105 };
|
red: 191,
|
||||||
var BLUE = { red: 0, green: 131, blue: 204 };
|
green: 78,
|
||||||
|
blue: 38
|
||||||
|
};
|
||||||
|
var GREEN = {
|
||||||
|
red: 26,
|
||||||
|
green: 193,
|
||||||
|
blue: 105
|
||||||
|
};
|
||||||
|
var BLUE = {
|
||||||
|
red: 0,
|
||||||
|
green: 131,
|
||||||
|
blue: 204
|
||||||
|
};
|
||||||
|
|
||||||
var BORDER_WIDTH = 1;
|
var BORDER_WIDTH = 1;
|
||||||
|
|
||||||
|
@ -536,7 +589,11 @@ CameraTool = function(cameraManager) {
|
||||||
height: UI_HEIGHT + BORDER_WIDTH * 2,
|
height: UI_HEIGHT + BORDER_WIDTH * 2,
|
||||||
alpha: 0,
|
alpha: 0,
|
||||||
text: "",
|
text: "",
|
||||||
backgroundColor: { red: 101, green: 101, blue: 101 },
|
backgroundColor: {
|
||||||
|
red: 101,
|
||||||
|
green: 101,
|
||||||
|
blue: 101
|
||||||
|
},
|
||||||
backgroundAlpha: 1.0,
|
backgroundAlpha: 1.0,
|
||||||
visible: false,
|
visible: false,
|
||||||
});
|
});
|
||||||
|
@ -548,7 +605,11 @@ CameraTool = function(cameraManager) {
|
||||||
height: UI_HEIGHT,
|
height: UI_HEIGHT,
|
||||||
alpha: 0,
|
alpha: 0,
|
||||||
text: "",
|
text: "",
|
||||||
backgroundColor: { red: 51, green: 51, blue: 51 },
|
backgroundColor: {
|
||||||
|
red: 51,
|
||||||
|
green: 51,
|
||||||
|
blue: 51
|
||||||
|
},
|
||||||
backgroundAlpha: 1.0,
|
backgroundAlpha: 1.0,
|
||||||
visible: false,
|
visible: false,
|
||||||
});
|
});
|
||||||
|
@ -556,7 +617,11 @@ CameraTool = function(cameraManager) {
|
||||||
var defaultCubeProps = {
|
var defaultCubeProps = {
|
||||||
size: ORIENTATION_OVERLAY_CUBE_SIZE,
|
size: ORIENTATION_OVERLAY_CUBE_SIZE,
|
||||||
alpha: 1,
|
alpha: 1,
|
||||||
color: { red: 255, green: 0, blue: 0 },
|
color: {
|
||||||
|
red: 255,
|
||||||
|
green: 0,
|
||||||
|
blue: 0
|
||||||
|
},
|
||||||
solid: true,
|
solid: true,
|
||||||
visible: true,
|
visible: true,
|
||||||
drawOnHUD: true,
|
drawOnHUD: true,
|
||||||
|
@ -564,10 +629,26 @@ CameraTool = function(cameraManager) {
|
||||||
var defaultLineProps = {
|
var defaultLineProps = {
|
||||||
lineWidth: 1.5,
|
lineWidth: 1.5,
|
||||||
alpha: 1,
|
alpha: 1,
|
||||||
position: { x: 0, y: 0, z: 0 },
|
position: {
|
||||||
start: { x: 0, y: 0, z: 0 },
|
x: 0,
|
||||||
end: { x: 0, y: 0, z: 0 },
|
y: 0,
|
||||||
color: { red: 255, green: 0, blue: 0 },
|
z: 0
|
||||||
|
},
|
||||||
|
start: {
|
||||||
|
x: 0,
|
||||||
|
y: 0,
|
||||||
|
z: 0
|
||||||
|
},
|
||||||
|
end: {
|
||||||
|
x: 0,
|
||||||
|
y: 0,
|
||||||
|
z: 0
|
||||||
|
},
|
||||||
|
color: {
|
||||||
|
red: 255,
|
||||||
|
green: 0,
|
||||||
|
blue: 0
|
||||||
|
},
|
||||||
visible: false,
|
visible: false,
|
||||||
drawOnHUD: true,
|
drawOnHUD: true,
|
||||||
};
|
};
|
||||||
|
@ -582,30 +663,66 @@ CameraTool = function(cameraManager) {
|
||||||
|
|
||||||
var OOHS = ORIENTATION_OVERLAY_HALF_SIZE;
|
var OOHS = ORIENTATION_OVERLAY_HALF_SIZE;
|
||||||
var cubeX = orientationOverlay.createOverlay("cube", mergeObjects(defaultCubeProps, {
|
var cubeX = orientationOverlay.createOverlay("cube", mergeObjects(defaultCubeProps, {
|
||||||
position: { x: -OOHS, y: OOHS, z: OOHS },
|
position: {
|
||||||
|
x: -OOHS,
|
||||||
|
y: OOHS,
|
||||||
|
z: OOHS
|
||||||
|
},
|
||||||
color: RED,
|
color: RED,
|
||||||
}));
|
}));
|
||||||
var cubeY = orientationOverlay.createOverlay("cube", mergeObjects(defaultCubeProps, {
|
var cubeY = orientationOverlay.createOverlay("cube", mergeObjects(defaultCubeProps, {
|
||||||
position: { x: OOHS, y: -OOHS, z: OOHS },
|
position: {
|
||||||
|
x: OOHS,
|
||||||
|
y: -OOHS,
|
||||||
|
z: OOHS
|
||||||
|
},
|
||||||
color: GREEN,
|
color: GREEN,
|
||||||
}));
|
}));
|
||||||
var cubeZ = orientationOverlay.createOverlay("cube", mergeObjects(defaultCubeProps, {
|
var cubeZ = orientationOverlay.createOverlay("cube", mergeObjects(defaultCubeProps, {
|
||||||
position: { x: OOHS, y: OOHS, z: -OOHS },
|
position: {
|
||||||
|
x: OOHS,
|
||||||
|
y: OOHS,
|
||||||
|
z: -OOHS
|
||||||
|
},
|
||||||
color: BLUE,
|
color: BLUE,
|
||||||
}));
|
}));
|
||||||
orientationOverlay.createOverlay("line3d", mergeObjects(defaultLineProps, {
|
orientationOverlay.createOverlay("line3d", mergeObjects(defaultLineProps, {
|
||||||
start: { x: -OOHS, y: OOHS, z: OOHS },
|
start: {
|
||||||
end: { x: OOHS, y: OOHS, z: OOHS },
|
x: -OOHS,
|
||||||
|
y: OOHS,
|
||||||
|
z: OOHS
|
||||||
|
},
|
||||||
|
end: {
|
||||||
|
x: OOHS,
|
||||||
|
y: OOHS,
|
||||||
|
z: OOHS
|
||||||
|
},
|
||||||
color: RED,
|
color: RED,
|
||||||
}));
|
}));
|
||||||
orientationOverlay.createOverlay("line3d", mergeObjects(defaultLineProps, {
|
orientationOverlay.createOverlay("line3d", mergeObjects(defaultLineProps, {
|
||||||
start: { x: OOHS, y: -OOHS, z: OOHS },
|
start: {
|
||||||
end: { x: OOHS, y: OOHS, z: OOHS },
|
x: OOHS,
|
||||||
|
y: -OOHS,
|
||||||
|
z: OOHS
|
||||||
|
},
|
||||||
|
end: {
|
||||||
|
x: OOHS,
|
||||||
|
y: OOHS,
|
||||||
|
z: OOHS
|
||||||
|
},
|
||||||
color: GREEN,
|
color: GREEN,
|
||||||
}));
|
}));
|
||||||
orientationOverlay.createOverlay("line3d", mergeObjects(defaultLineProps, {
|
orientationOverlay.createOverlay("line3d", mergeObjects(defaultLineProps, {
|
||||||
start: { x: OOHS, y: OOHS, z: -OOHS },
|
start: {
|
||||||
end: { x: OOHS, y: OOHS, z: OOHS },
|
x: OOHS,
|
||||||
|
y: OOHS,
|
||||||
|
z: -OOHS
|
||||||
|
},
|
||||||
|
end: {
|
||||||
|
x: OOHS,
|
||||||
|
y: OOHS,
|
||||||
|
z: OOHS
|
||||||
|
},
|
||||||
color: BLUE,
|
color: BLUE,
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
@ -645,7 +762,10 @@ CameraTool = function(cameraManager) {
|
||||||
}
|
}
|
||||||
|
|
||||||
that.mousePressEvent = function(event) {
|
that.mousePressEvent = function(event) {
|
||||||
var clickedOverlay = Overlays.getOverlayAtPoint({x: event.x, y: event.y});
|
var clickedOverlay = Overlays.getOverlayAtPoint({
|
||||||
|
x: event.x,
|
||||||
|
y: event.y
|
||||||
|
});
|
||||||
|
|
||||||
if (clickedOverlay == cubeX) {
|
if (clickedOverlay == cubeX) {
|
||||||
targetPitch = 0;
|
targetPitch = 0;
|
||||||
|
@ -666,9 +786,15 @@ CameraTool = function(cameraManager) {
|
||||||
};
|
};
|
||||||
|
|
||||||
that.setVisible = function(visible) {
|
that.setVisible = function(visible) {
|
||||||
orientationOverlay.setProperties({ visible: visible });
|
orientationOverlay.setProperties({
|
||||||
Overlays.editOverlay(background, { visible: visible });
|
visible: visible
|
||||||
Overlays.editOverlay(backgroundBorder, { visible: visible });
|
});
|
||||||
|
Overlays.editOverlay(background, {
|
||||||
|
visible: visible
|
||||||
|
});
|
||||||
|
Overlays.editOverlay(backgroundBorder, {
|
||||||
|
visible: visible
|
||||||
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
that.setVisible(false);
|
that.setVisible(false);
|
||||||
|
|
Loading…
Reference in a new issue