Implmeented some stuiff
This commit is contained in:
6
dist/Main.js
vendored
6
dist/Main.js
vendored
@@ -45,6 +45,7 @@ var CameraRunner_1 = require("./CameraRunner");
|
||||
var UnityRunner_1 = require("./Unity/UnityRunner");
|
||||
var UnityWebSocket_1 = require("./Unity/UnityWebSocket");
|
||||
var Twilio_1 = require("./Twilio");
|
||||
var Utils_1 = require("./Utils");
|
||||
var Main = /** @class */ (function () {
|
||||
function Main() {
|
||||
this.dataPath = (0, path_1.join)((0, os_1.homedir)(), 'MorphixProductions', 'NTSHControl');
|
||||
@@ -112,9 +113,12 @@ var Main = /** @class */ (function () {
|
||||
succeed = _a.sent();
|
||||
if (!succeed)
|
||||
return [2 /*return*/];
|
||||
return [4 /*yield*/, (0, Utils_1.delay)(5000)];
|
||||
case 3:
|
||||
_a.sent();
|
||||
console.log('Starting UnityRunner...');
|
||||
return [4 /*yield*/, this.UnityRunner.start()];
|
||||
case 3:
|
||||
case 4:
|
||||
_a.sent();
|
||||
console.log('Restart complete.');
|
||||
return [2 /*return*/];
|
||||
|
||||
2
dist/Main.js.map
vendored
2
dist/Main.js.map
vendored
@@ -1 +1 @@
|
||||
{"version":3,"file":"Main.js","sourceRoot":"","sources":["../src/Main.ts"],"names":[],"mappings":"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"}
|
||||
{"version":3,"file":"Main.js","sourceRoot":"","sources":["../src/Main.ts"],"names":[],"mappings":"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"}
|
||||
23
dist/Unity/UnityWebSocket.js
vendored
23
dist/Unity/UnityWebSocket.js
vendored
@@ -65,6 +65,7 @@ var UnityWebSocket = /** @class */ (function () {
|
||||
zedFPS: '-',
|
||||
outOfService: null,
|
||||
sliders: [],
|
||||
advancedSliders: [],
|
||||
sensors: [],
|
||||
};
|
||||
this.disconnected = false;
|
||||
@@ -82,6 +83,11 @@ var UnityWebSocket = /** @class */ (function () {
|
||||
var percentage = args[1];
|
||||
this.setSliderValue(sliderIndex, percentage);
|
||||
break;
|
||||
case 'advancedParameterValue':
|
||||
var advSliderIndex = args[0];
|
||||
var advPercentage = args[1];
|
||||
this.setAdvancedSliderValue(advSliderIndex, advPercentage);
|
||||
break;
|
||||
case 'enableOutOfService':
|
||||
var enableCallback = args[0];
|
||||
if (typeof enableCallback !== 'function')
|
||||
@@ -118,6 +124,19 @@ var UnityWebSocket = /** @class */ (function () {
|
||||
this.parameters.sliders[sliderIndex].outputValue = sliderValue;
|
||||
this.broadcastState();
|
||||
};
|
||||
UnityWebSocket.prototype.setAdvancedSliderValue = function (sliderIndex, sliderValue) {
|
||||
if (this.socket == null || this.socket.readyState !== ws_1.WebSocket.OPEN)
|
||||
return;
|
||||
this.socket.send(JSON.stringify({
|
||||
type: 'set_advanced_slider_value',
|
||||
sliderIndex: sliderIndex,
|
||||
sliderValue: sliderValue,
|
||||
}));
|
||||
if (this.parameters.advancedSliders[sliderIndex] == undefined)
|
||||
return;
|
||||
this.parameters.advancedSliders[sliderIndex].outputValue = sliderValue;
|
||||
this.broadcastState();
|
||||
};
|
||||
UnityWebSocket.prototype.setOutOfService = function (state) {
|
||||
if (this.socket == null || this.socket.readyState !== ws_1.WebSocket.OPEN)
|
||||
return;
|
||||
@@ -175,6 +194,10 @@ var UnityWebSocket = /** @class */ (function () {
|
||||
this.parameters.sliders = message.heartbeat.dataSliders.map(function (slider) {
|
||||
return __assign(__assign({}, slider), { decimalPlaces: slider.min == 0 && slider.max == 1 ? 2 : null });
|
||||
});
|
||||
this.parameters.advancedSliders =
|
||||
message.heartbeat.dataAdvancedSliders.map(function (slider) {
|
||||
return __assign(__assign({}, slider), { decimalPlaces: slider.min == 0 && slider.max == 1 ? 2 : null });
|
||||
});
|
||||
this.broadcastState();
|
||||
break;
|
||||
case 'response_camera_frame':
|
||||
|
||||
2
dist/Unity/UnityWebSocket.js.map
vendored
2
dist/Unity/UnityWebSocket.js.map
vendored
File diff suppressed because one or more lines are too long
74
frontend/views/dashboard/dist/dashboard.unity.js
vendored
74
frontend/views/dashboard/dist/dashboard.unity.js
vendored
@@ -60,6 +60,7 @@ var DashboardUnity = /** @class */ (function () {
|
||||
this.timelineStanding = document.querySelector('.ntsh_dashboard-unity-timeline-standing');
|
||||
this.timelineProgress = document.querySelector('.ntsh_dashboard-unity-timeline-progress');
|
||||
this.parametersTable = document.querySelector('.ntsh_dashboard-unity-parameters');
|
||||
this.advancedParametersTable = document.querySelector('.ntsh_dashboard-unity-advancedparameters');
|
||||
this.sensorsTable = document.querySelector('.ntsh_dashboard-unity-sensors');
|
||||
this.errorContainer = document.querySelector('.ntsh_dashboard-unity-error');
|
||||
this.errorText = document.querySelector('.ntsh_dashboard-unity-errortext');
|
||||
@@ -143,6 +144,7 @@ var DashboardUnity = /** @class */ (function () {
|
||||
(0, utils_1.setProgressState)(this.timelineProgress, Math.round(state.parameters.timelineProgress * 100), 0, 100, '%');
|
||||
// ----------- Parameters -----------
|
||||
this.renderParameterSliders(state.state == 'CONNECTED' ? state.parameters.sliders : []);
|
||||
this.renderAdvancedParameterSliders(state.state == 'CONNECTED' ? state.parameters.advancedSliders : []);
|
||||
this.renderParameterSensors(state.state == 'CONNECTED' ? state.parameters.sensors : []);
|
||||
// ----------- Error -----------
|
||||
if (((_b = state === null || state === void 0 ? void 0 : state.error) !== null && _b !== void 0 ? _b : '').trim().length > 0)
|
||||
@@ -223,6 +225,78 @@ var DashboardUnity = /** @class */ (function () {
|
||||
});
|
||||
}
|
||||
};
|
||||
DashboardUnity.prototype.renderAdvancedParameterSliders = function (sliders) {
|
||||
var _this = this;
|
||||
var existingSliders = this.advancedParametersTable.querySelectorAll('.ntsh_dashboard-unity-parameter-row');
|
||||
if (existingSliders.length !== sliders.length) {
|
||||
this.advancedParametersTable.innerHTML = '';
|
||||
if (sliders.length === 0) {
|
||||
var row = (0, morphux_1.ce)('tr');
|
||||
var cell = (0, morphux_1.ce)('td');
|
||||
cell.appendChild((0, morphux_1.ce)('div', ['mux_text', 'ntsh_dashboard-unity-parameters-loading'], null, 'Waiting for Unity...'));
|
||||
row.appendChild(cell);
|
||||
this.advancedParametersTable.appendChild(row);
|
||||
}
|
||||
else
|
||||
sliders.forEach(function (slider) {
|
||||
var _a, _b;
|
||||
var multiplierFactor = (_a = slider.visualMultiplier) !== null && _a !== void 0 ? _a : 1;
|
||||
var decimalPlacesFactor = Math.pow(10, ((_b = slider.decimalPlaces) !== null && _b !== void 0 ? _b : 0));
|
||||
var value = Math.round(slider.outputValue *
|
||||
multiplierFactor *
|
||||
decimalPlacesFactor) / decimalPlacesFactor;
|
||||
var row = (0, morphux_1.ce)('tr', 'ntsh_dashboard-unity-parameter-row');
|
||||
var nameCell = (0, morphux_1.ce)('td');
|
||||
nameCell.appendChild((0, morphux_1.ce)('div', 'mux_text', null, slider.sliderName));
|
||||
row.appendChild(nameCell);
|
||||
var progressCell = (0, morphux_1.ce)('td', 'no-service');
|
||||
progressCell.appendChild((0, utils_1.createProgress)(value, slider.min * multiplierFactor, slider.max * multiplierFactor, slider.unit));
|
||||
row.appendChild(progressCell);
|
||||
var sliderCell = (0, morphux_1.ce)('td', 'only-service');
|
||||
var sliderProgress = (0, utils_1.createProgress)(value, slider.min * multiplierFactor, slider.max * multiplierFactor, slider.unit);
|
||||
var sliderValue = sliderProgress.querySelector('.ntsh_progress-value');
|
||||
sliderValue.classList.add('mux_resizer');
|
||||
sliderCell.appendChild(sliderProgress);
|
||||
var resizer = new morphux_1.MorphComponent.Resizer({
|
||||
existingContainer: sliderValue,
|
||||
direction: 'right',
|
||||
relative: true,
|
||||
min: 0,
|
||||
max: function () { return sliderProgress.clientWidth; },
|
||||
});
|
||||
var lastValue = -1;
|
||||
resizer.on('resized', function (size) {
|
||||
var percentage = Math.round((size / sliderProgress.clientWidth) * 100) / 100;
|
||||
var actualValue = slider.min + percentage * (slider.max - slider.min);
|
||||
if (actualValue === lastValue)
|
||||
return;
|
||||
lastValue = actualValue;
|
||||
_this._Main.socket.emit('unityWebSocket', 'advancedParameterValue', slider.sliderIndex, actualValue);
|
||||
(0, utils_1.setProgressState)(sliderProgress, Math.round(actualValue *
|
||||
multiplierFactor *
|
||||
decimalPlacesFactor) / decimalPlacesFactor, slider.min * multiplierFactor, slider.max * multiplierFactor, slider.unit);
|
||||
});
|
||||
row.appendChild(sliderCell);
|
||||
_this.advancedParametersTable.appendChild(row);
|
||||
});
|
||||
}
|
||||
else {
|
||||
existingSliders.forEach(function (row, index) {
|
||||
var _a, _b;
|
||||
var slider = sliders[index];
|
||||
var multiplierFactor = (_a = slider.visualMultiplier) !== null && _a !== void 0 ? _a : 1;
|
||||
var decimalPlacesFactor = Math.pow(10, ((_b = slider.decimalPlaces) !== null && _b !== void 0 ? _b : 0));
|
||||
var value = Math.round(slider.outputValue *
|
||||
multiplierFactor *
|
||||
decimalPlacesFactor) / decimalPlacesFactor;
|
||||
var progressElement = row.querySelector('.no-service .ntsh_progress');
|
||||
(0, utils_1.setProgressState)(progressElement, value, slider.min * multiplierFactor, slider.max * multiplierFactor, slider.unit);
|
||||
var sliderElement = row.querySelector('.only-service .ntsh_progress');
|
||||
if (sliderElement.querySelector('.mux_resizer-moving') == null)
|
||||
(0, utils_1.setProgressState)(sliderElement, value, slider.min * multiplierFactor, slider.max * multiplierFactor, slider.unit);
|
||||
});
|
||||
}
|
||||
};
|
||||
DashboardUnity.prototype.renderParameterSensors = function (sensors) {
|
||||
var _this = this;
|
||||
var existingSensors = this.sensorsTable.querySelectorAll('.ntsh_dashboard-unity-sensor-row');
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -241,7 +241,7 @@
|
||||
|
||||
|
||||
<div class="ntsh_dashboard-box ntsh_dashboard-unityparameters">
|
||||
<div class="ntsh_dashboard-box-header mux_header">Parameters</div>
|
||||
<div class="ntsh_dashboard-box-header mux_header">Audio</div>
|
||||
|
||||
<table class="ntsh_vertical ntsh_dashboard-unity-parameters">
|
||||
<tr>
|
||||
@@ -252,6 +252,19 @@
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="ntsh_dashboard-box ntsh_dashboard-unityadvancedparameters">
|
||||
<div class="ntsh_dashboard-box-header mux_header">Parameters</div>
|
||||
|
||||
<table class="ntsh_vertical ntsh_dashboard-unity-advancedparameters">
|
||||
<tr>
|
||||
<td>
|
||||
<div class="mux_text ntsh_dashboard-unity-advancedparameters-loading">Waiting for
|
||||
Unity...
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="ntsh_dashboard-box ntsh_dashboard-unitysensors">
|
||||
<div class="ntsh_dashboard-box-header mux_header">Sensors</div>
|
||||
|
||||
|
||||
@@ -15656,6 +15656,7 @@
|
||||
this.timelineStanding = document.querySelector('.ntsh_dashboard-unity-timeline-standing');
|
||||
this.timelineProgress = document.querySelector('.ntsh_dashboard-unity-timeline-progress');
|
||||
this.parametersTable = document.querySelector('.ntsh_dashboard-unity-parameters');
|
||||
this.advancedParametersTable = document.querySelector('.ntsh_dashboard-unity-advancedparameters');
|
||||
this.sensorsTable = document.querySelector('.ntsh_dashboard-unity-sensors');
|
||||
this.errorContainer = document.querySelector('.ntsh_dashboard-unity-error');
|
||||
this.errorText = document.querySelector('.ntsh_dashboard-unity-errortext');
|
||||
@@ -15739,6 +15740,7 @@
|
||||
(0, utils_1.setProgressState)(this.timelineProgress, Math.round(state.parameters.timelineProgress * 100), 0, 100, '%');
|
||||
// ----------- Parameters -----------
|
||||
this.renderParameterSliders(state.state == 'CONNECTED' ? state.parameters.sliders : []);
|
||||
this.renderAdvancedParameterSliders(state.state == 'CONNECTED' ? state.parameters.advancedSliders : []);
|
||||
this.renderParameterSensors(state.state == 'CONNECTED' ? state.parameters.sensors : []);
|
||||
// ----------- Error -----------
|
||||
if (((_b = state === null || state === void 0 ? void 0 : state.error) !== null && _b !== void 0 ? _b : '').trim().length > 0)
|
||||
@@ -15819,6 +15821,78 @@
|
||||
});
|
||||
}
|
||||
};
|
||||
DashboardUnity.prototype.renderAdvancedParameterSliders = function (sliders) {
|
||||
var _this = this;
|
||||
var existingSliders = this.advancedParametersTable.querySelectorAll('.ntsh_dashboard-unity-parameter-row');
|
||||
if (existingSliders.length !== sliders.length) {
|
||||
this.advancedParametersTable.innerHTML = '';
|
||||
if (sliders.length === 0) {
|
||||
var row = (0, morphux_1$1.ce)('tr');
|
||||
var cell = (0, morphux_1$1.ce)('td');
|
||||
cell.appendChild((0, morphux_1$1.ce)('div', ['mux_text', 'ntsh_dashboard-unity-parameters-loading'], null, 'Waiting for Unity...'));
|
||||
row.appendChild(cell);
|
||||
this.advancedParametersTable.appendChild(row);
|
||||
}
|
||||
else
|
||||
sliders.forEach(function (slider) {
|
||||
var _a, _b;
|
||||
var multiplierFactor = (_a = slider.visualMultiplier) !== null && _a !== void 0 ? _a : 1;
|
||||
var decimalPlacesFactor = Math.pow(10, ((_b = slider.decimalPlaces) !== null && _b !== void 0 ? _b : 0));
|
||||
var value = Math.round(slider.outputValue *
|
||||
multiplierFactor *
|
||||
decimalPlacesFactor) / decimalPlacesFactor;
|
||||
var row = (0, morphux_1$1.ce)('tr', 'ntsh_dashboard-unity-parameter-row');
|
||||
var nameCell = (0, morphux_1$1.ce)('td');
|
||||
nameCell.appendChild((0, morphux_1$1.ce)('div', 'mux_text', null, slider.sliderName));
|
||||
row.appendChild(nameCell);
|
||||
var progressCell = (0, morphux_1$1.ce)('td', 'no-service');
|
||||
progressCell.appendChild((0, utils_1.createProgress)(value, slider.min * multiplierFactor, slider.max * multiplierFactor, slider.unit));
|
||||
row.appendChild(progressCell);
|
||||
var sliderCell = (0, morphux_1$1.ce)('td', 'only-service');
|
||||
var sliderProgress = (0, utils_1.createProgress)(value, slider.min * multiplierFactor, slider.max * multiplierFactor, slider.unit);
|
||||
var sliderValue = sliderProgress.querySelector('.ntsh_progress-value');
|
||||
sliderValue.classList.add('mux_resizer');
|
||||
sliderCell.appendChild(sliderProgress);
|
||||
var resizer = new morphux_1$1.MorphComponent.Resizer({
|
||||
existingContainer: sliderValue,
|
||||
direction: 'right',
|
||||
relative: true,
|
||||
min: 0,
|
||||
max: function () { return sliderProgress.clientWidth; },
|
||||
});
|
||||
var lastValue = -1;
|
||||
resizer.on('resized', function (size) {
|
||||
var percentage = Math.round((size / sliderProgress.clientWidth) * 100) / 100;
|
||||
var actualValue = slider.min + percentage * (slider.max - slider.min);
|
||||
if (actualValue === lastValue)
|
||||
return;
|
||||
lastValue = actualValue;
|
||||
_this._Main.socket.emit('unityWebSocket', 'advancedParameterValue', slider.sliderIndex, actualValue);
|
||||
(0, utils_1.setProgressState)(sliderProgress, Math.round(actualValue *
|
||||
multiplierFactor *
|
||||
decimalPlacesFactor) / decimalPlacesFactor, slider.min * multiplierFactor, slider.max * multiplierFactor, slider.unit);
|
||||
});
|
||||
row.appendChild(sliderCell);
|
||||
_this.advancedParametersTable.appendChild(row);
|
||||
});
|
||||
}
|
||||
else {
|
||||
existingSliders.forEach(function (row, index) {
|
||||
var _a, _b;
|
||||
var slider = sliders[index];
|
||||
var multiplierFactor = (_a = slider.visualMultiplier) !== null && _a !== void 0 ? _a : 1;
|
||||
var decimalPlacesFactor = Math.pow(10, ((_b = slider.decimalPlaces) !== null && _b !== void 0 ? _b : 0));
|
||||
var value = Math.round(slider.outputValue *
|
||||
multiplierFactor *
|
||||
decimalPlacesFactor) / decimalPlacesFactor;
|
||||
var progressElement = row.querySelector('.no-service .ntsh_progress');
|
||||
(0, utils_1.setProgressState)(progressElement, value, slider.min * multiplierFactor, slider.max * multiplierFactor, slider.unit);
|
||||
var sliderElement = row.querySelector('.only-service .ntsh_progress');
|
||||
if (sliderElement.querySelector('.mux_resizer-moving') == null)
|
||||
(0, utils_1.setProgressState)(sliderElement, value, slider.min * multiplierFactor, slider.max * multiplierFactor, slider.unit);
|
||||
});
|
||||
}
|
||||
};
|
||||
DashboardUnity.prototype.renderParameterSensors = function (sensors) {
|
||||
var _this = this;
|
||||
var existingSensors = this.sensorsTable.querySelectorAll('.ntsh_dashboard-unity-sensor-row');
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -38,6 +38,13 @@
|
||||
}
|
||||
}
|
||||
|
||||
.ntsh_dashboard-unity-advancedparameters {
|
||||
.ntsh_dashboard-unity-advancedparameters-loading {
|
||||
text-align: center;
|
||||
color: #9d9d9d;
|
||||
}
|
||||
}
|
||||
|
||||
.ntsh_dashboard-unity-sensors {
|
||||
.ntsh_dashboard-unity-sensors-loading {
|
||||
text-align: center;
|
||||
|
||||
@@ -2400,6 +2400,10 @@ body {
|
||||
text-align: center;
|
||||
color: #9d9d9d;
|
||||
}
|
||||
.ntsh_dashboard .ntsh_dashboard-unity-advancedparameters .ntsh_dashboard-unity-advancedparameters-loading {
|
||||
text-align: center;
|
||||
color: #9d9d9d;
|
||||
}
|
||||
.ntsh_dashboard .ntsh_dashboard-unity-sensors .ntsh_dashboard-unity-sensors-loading {
|
||||
text-align: center;
|
||||
color: #9d9d9d;
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -75,6 +75,9 @@ export class DashboardUnity {
|
||||
parametersTable: HTMLTableElement = document.querySelector(
|
||||
'.ntsh_dashboard-unity-parameters'
|
||||
);
|
||||
advancedParametersTable: HTMLTableElement = document.querySelector(
|
||||
'.ntsh_dashboard-unity-advancedparameters'
|
||||
);
|
||||
|
||||
sensorsTable: HTMLTableElement = document.querySelector(
|
||||
'.ntsh_dashboard-unity-sensors'
|
||||
@@ -200,6 +203,9 @@ export class DashboardUnity {
|
||||
this.renderParameterSliders(
|
||||
state.state == 'CONNECTED' ? state.parameters.sliders : []
|
||||
);
|
||||
this.renderAdvancedParameterSliders(
|
||||
state.state == 'CONNECTED' ? state.parameters.advancedSliders : []
|
||||
);
|
||||
this.renderParameterSensors(
|
||||
state.state == 'CONNECTED' ? state.parameters.sensors : []
|
||||
);
|
||||
@@ -358,6 +364,155 @@ export class DashboardUnity {
|
||||
}
|
||||
}
|
||||
|
||||
private renderAdvancedParameterSliders(
|
||||
sliders: UnityParameters['sliders']
|
||||
) {
|
||||
const existingSliders = this.advancedParametersTable.querySelectorAll(
|
||||
'.ntsh_dashboard-unity-parameter-row'
|
||||
);
|
||||
|
||||
if (existingSliders.length !== sliders.length) {
|
||||
this.advancedParametersTable.innerHTML = '';
|
||||
|
||||
if (sliders.length === 0) {
|
||||
const row = ce('tr');
|
||||
const cell = ce('td');
|
||||
cell.appendChild(
|
||||
ce(
|
||||
'div',
|
||||
['mux_text', 'ntsh_dashboard-unity-parameters-loading'],
|
||||
null,
|
||||
'Waiting for Unity...'
|
||||
)
|
||||
);
|
||||
row.appendChild(cell);
|
||||
this.advancedParametersTable.appendChild(row);
|
||||
} else
|
||||
sliders.forEach((slider) => {
|
||||
const multiplierFactor = slider.visualMultiplier ?? 1;
|
||||
const decimalPlacesFactor =
|
||||
10 ** (slider.decimalPlaces ?? 0);
|
||||
|
||||
const value =
|
||||
Math.round(
|
||||
slider.outputValue *
|
||||
multiplierFactor *
|
||||
decimalPlacesFactor
|
||||
) / decimalPlacesFactor;
|
||||
|
||||
const row = ce('tr', 'ntsh_dashboard-unity-parameter-row');
|
||||
|
||||
const nameCell = ce('td');
|
||||
nameCell.appendChild(
|
||||
ce('div', 'mux_text', null, slider.sliderName)
|
||||
);
|
||||
row.appendChild(nameCell);
|
||||
|
||||
const progressCell = ce('td', 'no-service');
|
||||
progressCell.appendChild(
|
||||
createProgress(
|
||||
value,
|
||||
slider.min * multiplierFactor,
|
||||
slider.max * multiplierFactor,
|
||||
slider.unit
|
||||
)
|
||||
);
|
||||
row.appendChild(progressCell);
|
||||
|
||||
const sliderCell = ce('td', 'only-service');
|
||||
const sliderProgress = createProgress(
|
||||
value,
|
||||
slider.min * multiplierFactor,
|
||||
slider.max * multiplierFactor,
|
||||
slider.unit
|
||||
);
|
||||
const sliderValue: HTMLDivElement =
|
||||
sliderProgress.querySelector('.ntsh_progress-value');
|
||||
sliderValue.classList.add('mux_resizer');
|
||||
sliderCell.appendChild(sliderProgress);
|
||||
|
||||
const resizer = new MorphComponent.Resizer({
|
||||
existingContainer: sliderValue,
|
||||
direction: 'right',
|
||||
relative: true,
|
||||
min: 0,
|
||||
max: () => sliderProgress.clientWidth,
|
||||
});
|
||||
let lastValue: number = -1;
|
||||
resizer.on('resized', (size) => {
|
||||
const percentage =
|
||||
Math.round(
|
||||
(size / sliderProgress.clientWidth) * 100
|
||||
) / 100;
|
||||
|
||||
var actualValue =
|
||||
slider.min + percentage * (slider.max - slider.min);
|
||||
|
||||
if (actualValue === lastValue) return;
|
||||
lastValue = actualValue;
|
||||
|
||||
this._Main.socket.emit(
|
||||
'unityWebSocket',
|
||||
'advancedParameterValue',
|
||||
slider.sliderIndex,
|
||||
actualValue
|
||||
);
|
||||
setProgressState(
|
||||
sliderProgress,
|
||||
Math.round(
|
||||
actualValue *
|
||||
multiplierFactor *
|
||||
decimalPlacesFactor
|
||||
) / decimalPlacesFactor,
|
||||
slider.min * multiplierFactor,
|
||||
slider.max * multiplierFactor,
|
||||
slider.unit
|
||||
);
|
||||
});
|
||||
|
||||
row.appendChild(sliderCell);
|
||||
|
||||
this.advancedParametersTable.appendChild(row);
|
||||
});
|
||||
} else {
|
||||
existingSliders.forEach((row, index) => {
|
||||
const slider = sliders[index];
|
||||
const multiplierFactor = slider.visualMultiplier ?? 1;
|
||||
const decimalPlacesFactor = 10 ** (slider.decimalPlaces ?? 0);
|
||||
|
||||
const value =
|
||||
Math.round(
|
||||
slider.outputValue *
|
||||
multiplierFactor *
|
||||
decimalPlacesFactor
|
||||
) / decimalPlacesFactor;
|
||||
|
||||
const progressElement: HTMLDivElement = row.querySelector(
|
||||
'.no-service .ntsh_progress'
|
||||
);
|
||||
setProgressState(
|
||||
progressElement,
|
||||
value,
|
||||
slider.min * multiplierFactor,
|
||||
slider.max * multiplierFactor,
|
||||
slider.unit
|
||||
);
|
||||
|
||||
const sliderElement: HTMLDivElement = row.querySelector(
|
||||
'.only-service .ntsh_progress'
|
||||
);
|
||||
if (sliderElement.querySelector('.mux_resizer-moving') == null)
|
||||
setProgressState(
|
||||
sliderElement,
|
||||
value,
|
||||
slider.min * multiplierFactor,
|
||||
slider.max * multiplierFactor,
|
||||
slider.unit
|
||||
);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
private renderParameterSensors(sensors: UnityParameters['sensors']) {
|
||||
const existingSensors = this.sensorsTable.querySelectorAll(
|
||||
'.ntsh_dashboard-unity-sensor-row'
|
||||
@@ -528,6 +683,7 @@ interface UnityParameters {
|
||||
zedFPS: string;
|
||||
outOfService: boolean;
|
||||
sliders: UnityParameterSlider[];
|
||||
advancedSliders: UnityParameterSlider[];
|
||||
sensors: UnitySocketMessageHeartbeat['heartbeat']['dataSensors'];
|
||||
}
|
||||
|
||||
|
||||
@@ -9,6 +9,7 @@ import { CameraRunner } from './CameraRunner';
|
||||
import { UnityRunner } from './Unity/UnityRunner';
|
||||
import { UnityWebSocket } from './Unity/UnityWebSocket';
|
||||
import { TwilioHandler } from './Twilio';
|
||||
import { delay } from './Utils';
|
||||
|
||||
export class Main {
|
||||
dataPath = join(homedir(), 'MorphixProductions', 'NTSHControl');
|
||||
@@ -65,6 +66,8 @@ export class Main {
|
||||
});
|
||||
if (!succeed) return;
|
||||
|
||||
await delay(5000);
|
||||
|
||||
console.log('Starting UnityRunner...');
|
||||
await this.UnityRunner.start();
|
||||
|
||||
|
||||
@@ -21,6 +21,7 @@ export class UnityWebSocket {
|
||||
zedFPS: '-',
|
||||
outOfService: null,
|
||||
sliders: [],
|
||||
advancedSliders: [],
|
||||
sensors: [],
|
||||
};
|
||||
|
||||
@@ -39,6 +40,13 @@ export class UnityWebSocket {
|
||||
this.setSliderValue(sliderIndex, percentage);
|
||||
break;
|
||||
|
||||
case 'advancedParameterValue':
|
||||
const advSliderIndex: number = args[0];
|
||||
const advPercentage: number = args[1];
|
||||
|
||||
this.setAdvancedSliderValue(advSliderIndex, advPercentage);
|
||||
break;
|
||||
|
||||
case 'enableOutOfService':
|
||||
const enableCallback: Function = args[0];
|
||||
if (typeof enableCallback !== 'function') return;
|
||||
@@ -87,6 +95,23 @@ export class UnityWebSocket {
|
||||
this.broadcastState();
|
||||
}
|
||||
|
||||
setAdvancedSliderValue(sliderIndex: number, sliderValue: number) {
|
||||
if (this.socket == null || this.socket.readyState !== WebSocket.OPEN)
|
||||
return;
|
||||
|
||||
this.socket.send(
|
||||
JSON.stringify({
|
||||
type: 'set_advanced_slider_value',
|
||||
sliderIndex,
|
||||
sliderValue,
|
||||
})
|
||||
);
|
||||
|
||||
if (this.parameters.advancedSliders[sliderIndex] == undefined) return;
|
||||
this.parameters.advancedSliders[sliderIndex].outputValue = sliderValue;
|
||||
this.broadcastState();
|
||||
}
|
||||
|
||||
setOutOfService(state: boolean) {
|
||||
if (this.socket == null || this.socket.readyState !== WebSocket.OPEN)
|
||||
return;
|
||||
@@ -159,6 +184,14 @@ export class UnityWebSocket {
|
||||
};
|
||||
}
|
||||
);
|
||||
this.parameters.advancedSliders =
|
||||
message.heartbeat.dataAdvancedSliders.map((slider) => {
|
||||
return {
|
||||
...slider,
|
||||
decimalPlaces:
|
||||
slider.min == 0 && slider.max == 1 ? 2 : null,
|
||||
};
|
||||
});
|
||||
|
||||
this.broadcastState();
|
||||
break;
|
||||
@@ -312,6 +345,7 @@ interface UnityParameters {
|
||||
zedFPS: string;
|
||||
outOfService: boolean;
|
||||
sliders: UnityParameterSlider[];
|
||||
advancedSliders: UnityParameterSlider[];
|
||||
sensors: UnitySocketMessageHeartbeat['heartbeat']['dataSensors'];
|
||||
}
|
||||
|
||||
@@ -346,6 +380,14 @@ interface UnitySocketMessageHeartbeat extends UnitySocketMessageBase {
|
||||
max: number;
|
||||
unit: string;
|
||||
}[];
|
||||
dataAdvancedSliders: {
|
||||
sliderIndex: number;
|
||||
sliderName: string;
|
||||
outputValue: number;
|
||||
min: number;
|
||||
max: number;
|
||||
unit: string;
|
||||
}[];
|
||||
dataTimeline: {
|
||||
isStanding: boolean;
|
||||
isWatching: boolean;
|
||||
|
||||
Reference in New Issue
Block a user