mirror of
https://github.com/JulianGro/overte.git
synced 2025-04-09 11:32:31 +02:00
181 lines
4.8 KiB
JavaScript
181 lines
4.8 KiB
JavaScript
//
|
|
// editModes.js
|
|
//
|
|
// Created by Karol Suprynowicz on 2022.05.15.
|
|
// Copyright 2022 Overte e.V.
|
|
//
|
|
// Partially based on gridTool.js
|
|
// Created by Ryan Huffman on 6 Nov 2014
|
|
// Copyright 2014 High Fidelity, Inc.
|
|
// Copyright 2020 Vircadia contributors.
|
|
// Copyright 2022 Overte e.V.
|
|
//
|
|
// This script implements a class for managing different edit modes
|
|
//
|
|
// Distributed under the Apache License, Version 2.0.
|
|
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
|
|
//
|
|
|
|
EditTools = function(options) {
|
|
var that = {};
|
|
|
|
var createAppMode = "object";
|
|
var voxelEditMode = "single";
|
|
var voxelSphereSize = 0.3;
|
|
var voxelEditDynamics = "click";
|
|
var voxelRemove = false;
|
|
var voxelPointerMode = "laser";
|
|
var voxelBrushLength = 0.5;
|
|
var listeners = [];
|
|
|
|
var createToolsWindow = options.createToolsWindow;
|
|
|
|
that.emitUpdate = function() {
|
|
var dataString = JSON.stringify({
|
|
createAppMode : createAppMode,
|
|
voxelEditMode : voxelEditMode,
|
|
voxelSphereSize : voxelSphereSize,
|
|
voxelEditDynamics : voxelEditDynamics,
|
|
voxelRemove : voxelRemove,
|
|
voxelPointerMode : voxelPointerMode,
|
|
voxelBrushLength : voxelBrushLength,
|
|
});
|
|
webView.emitScriptEvent(dataString);
|
|
createToolsWindow.emitScriptEvent(dataString);
|
|
};
|
|
|
|
that.getCreateAppMode = function() {
|
|
return createAppMode;
|
|
}
|
|
|
|
that.setCreateAppMode = function(value) {
|
|
createAppMode = value;
|
|
that.emitUpdate();
|
|
}
|
|
|
|
that.getVoxelEditMode = function() {
|
|
return voxelEditMode;
|
|
}
|
|
|
|
that.setVoxelEditMode = function(value) {
|
|
voxelEditMode = value;
|
|
that.emitUpdate();
|
|
}
|
|
|
|
that.getVoxelSphereSize = function() {
|
|
return voxelSphereSize;
|
|
}
|
|
|
|
that.setVoxelSphereSize = function(value) {
|
|
voxelSphereSize = value;
|
|
that.emitUpdate();
|
|
}
|
|
|
|
that.getVoxelEditDynamics = function() {
|
|
return voxelEditDynamics;
|
|
}
|
|
|
|
that.setVoxelEditDynamics = function(value) {
|
|
voxelEditDynamics = value;
|
|
that.emitUpdate();
|
|
}
|
|
|
|
that.getVoxelRemove = function() {
|
|
return voxelRemove;
|
|
}
|
|
|
|
that.setVoxelRemove = function(value) {
|
|
voxelRemove = value;
|
|
that.emitUpdate();
|
|
}
|
|
|
|
that.getVoxelPointerMode = function() {
|
|
return voxelPointerMode;
|
|
}
|
|
|
|
that.setVoxelPointerMode = function(value) {
|
|
voxelPointerMode = value;
|
|
that.emitUpdate();
|
|
}
|
|
|
|
that.getVoxelBrushLength = function() {
|
|
return voxelBrushLength;
|
|
}
|
|
|
|
that.setVoxelBrushLength = function(value) {
|
|
voxelBrushLength = value;
|
|
that.emitUpdate();
|
|
}
|
|
|
|
that.update = function(data) {
|
|
if (data.type !== "update-edit-tools") {
|
|
return;
|
|
}
|
|
|
|
print(JSON.stringify(data));
|
|
|
|
var needsUpdate = false;
|
|
|
|
if (data.createAppMode) {
|
|
createAppMode = data.createAppMode;
|
|
needsUpdate = true;
|
|
}
|
|
if (data.voxelEditMode) {
|
|
voxelEditMode = data.voxelEditMode;
|
|
needsUpdate = true;
|
|
}
|
|
if (data.voxelSphereSize) {
|
|
voxelSphereSize = data.voxelSphereSize;
|
|
needsUpdate = true;
|
|
}
|
|
if (data.voxelEditDynamics) {
|
|
voxelEditDynamics = data.voxelEditDynamics;
|
|
needsUpdate = true;
|
|
}
|
|
if (data.voxelRemove) {
|
|
voxelRemove = data.voxelRemove;
|
|
needsUpdate = true;
|
|
}
|
|
if (data.voxelPointerMode) {
|
|
voxelPointerMode = data.voxelPointerMode;
|
|
needsUpdate = true;
|
|
}
|
|
if (data.voxelBrushLength) {
|
|
voxelBrushLength = data.voxelBrushLength;
|
|
needsUpdate = true;
|
|
}
|
|
}
|
|
|
|
var webEventReceived = function(data) {
|
|
try {
|
|
data = JSON.parse(data);
|
|
} catch (e) {
|
|
console.log("editModes.js, EditTools.webEventReceived: Cannot parse received JSON data");
|
|
return;
|
|
}
|
|
|
|
if (data.type === "init") {
|
|
that.emitUpdate();
|
|
} else if (data.type === "update-edit-tools") {
|
|
that.update(data);
|
|
for (var i = 0; i < listeners.length; i++) {
|
|
listeners[i] && listeners[i](data);
|
|
}
|
|
}
|
|
};
|
|
|
|
var webView = null;
|
|
webView = Tablet.getTablet("com.highfidelity.interface.tablet.system");
|
|
|
|
webView.webEventReceived.connect(webEventReceived);
|
|
createToolsWindow.webEventReceived.addListener(webEventReceived);
|
|
|
|
that.addListener = function(callback) {
|
|
listeners.push(callback);
|
|
};
|
|
|
|
function cleanup() {
|
|
}
|
|
|
|
return that;
|
|
}
|