Implmeented some stuiff

This commit is contained in:
2025-10-24 18:10:58 +02:00
parent 0439ad00b3
commit 368f60d7b6
15 changed files with 407 additions and 7 deletions

6
dist/Main.js vendored
View File

@@ -45,6 +45,7 @@ var CameraRunner_1 = require("./CameraRunner");
var UnityRunner_1 = require("./Unity/UnityRunner"); var UnityRunner_1 = require("./Unity/UnityRunner");
var UnityWebSocket_1 = require("./Unity/UnityWebSocket"); var UnityWebSocket_1 = require("./Unity/UnityWebSocket");
var Twilio_1 = require("./Twilio"); var Twilio_1 = require("./Twilio");
var Utils_1 = require("./Utils");
var Main = /** @class */ (function () { var Main = /** @class */ (function () {
function Main() { function Main() {
this.dataPath = (0, path_1.join)((0, os_1.homedir)(), 'MorphixProductions', 'NTSHControl'); this.dataPath = (0, path_1.join)((0, os_1.homedir)(), 'MorphixProductions', 'NTSHControl');
@@ -112,9 +113,12 @@ var Main = /** @class */ (function () {
succeed = _a.sent(); succeed = _a.sent();
if (!succeed) if (!succeed)
return [2 /*return*/]; return [2 /*return*/];
return [4 /*yield*/, (0, Utils_1.delay)(5000)];
case 3:
_a.sent();
console.log('Starting UnityRunner...'); console.log('Starting UnityRunner...');
return [4 /*yield*/, this.UnityRunner.start()]; return [4 /*yield*/, this.UnityRunner.start()];
case 3: case 4:
_a.sent(); _a.sent();
console.log('Restart complete.'); console.log('Restart complete.');
return [2 /*return*/]; return [2 /*return*/];

2
dist/Main.js.map vendored
View File

@@ -1 +1 @@
{"version":3,"file":"Main.js","sourceRoot":"","sources":["../src/Main.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6BAA4B;AAC5B,mDAAkD;AAClD,yBAA6B;AAC7B,6EAG8C;AAC9C,+CAA8C;AAC9C,mDAAkD;AAClD,yDAAwD;AACxD,mCAAyC;AAEzC;IAAA;QACC,aAAQ,GAAG,IAAA,WAAI,EAAC,IAAA,YAAO,GAAE,EAAE,oBAAoB,EAAE,aAAa,CAAC,CAAC;QAEhE,yBAAoB,GAAG,IAAI,2CAAoB,CAAC,IAAI,CAAC,CAAC;QACtD,cAAS,GAAG,IAAI,qBAAS,CAAC,IAAI,CAAC,CAAC;QAChC,WAAM,GAAG,IAAI,sBAAa,CAAC,IAAI,CAAC,CAAC;QAEjC,iBAAY,GAAG,IAAI,2BAAY,CAAC,IAAI,CAAC,CAAC;QACtC,gBAAW,GAAG,IAAI,yBAAW,CAAC,IAAI,CAAC,CAAC;QACpC,mBAAc,GAAG,IAAI,+BAAc,CAAC,IAAI,CAAC,CAAC;IAmD3C,CAAC;IA/CM,oBAAK,GAAX;;;;;;4BACC,qBAAM,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,EAAA;;wBAAtC,SAAsC,CAAC;wBACvC,qBAAM,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAA;;wBAA7B,SAA6B,CAAC;wBAC9B,qBAAM,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,EAAA;;wBAAxB,SAAwB,CAAC;wBAEzB,qBAAM,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,EAAA;;wBAAjC,SAAiC,CAAC;wBAElC,UAAU,CAAC;4BACV,KAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;wBAC1B,CAAC,EAAE,MAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,YAAY,mCAAI,CAAC,CAAC,CAAC;;;;;KACnD;IAEK,sBAAO,GAAb;;;;;;;wBACC,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;wBACvC,qBAAM,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,EAAA;;wBAA7B,SAA6B,CAAC;wBAExB,QAAQ,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;wBACvD,OAAO,CAAC,GAAG,CAAC,UAAG,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,qBAAkB,CAAC,CAAC;wBACxD,qBAAM,IAAI,OAAO,CAAC,UAAC,OAAO;gCACzC,KAAI,CAAC,YAAY,CAAC,WAAW,CAC5B,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,EAC/B,UAAC,QAAgD;oCAChD,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;wCACvB,OAAO,CAAC,KAAK,CACZ,gCAAgC,EAChC,QAAQ,CAAC,OAAO,CAChB,CAAC;wCACF,KAAI,CAAC,MAAM,CAAC,SAAS,CACpB,cAAc,EACd,yCAAkC,QAAQ,CAAC,OAAO,CAAE,CACpD,CAAC;wCACF,OAAO,CAAC,KAAK,CAAC,CAAC;oCAChB,CAAC;yCAAM,CAAC;wCACP,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;wCACnD,KAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;wCAC5C,OAAO,CAAC,IAAI,CAAC,CAAC;oCACf,CAAC;gCACF,CAAC,CACD,CAAC;4BACH,CAAC,CAAC,EAAA;;wBArBI,OAAO,GAAG,SAqBd;wBACF,IAAI,CAAC,OAAO;4BAAE,sBAAO;wBAErB,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;wBACvC,qBAAM,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,EAAA;;wBAA9B,SAA8B,CAAC;wBAE/B,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;;;;;KACjC;IACF,WAAC;AAAD,CAAC,AA5DD,IA4DC;AA5DY,oBAAI"} {"version":3,"file":"Main.js","sourceRoot":"","sources":["../src/Main.ts"],"names":[],"mappings":"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"}

View File

@@ -65,6 +65,7 @@ var UnityWebSocket = /** @class */ (function () {
zedFPS: '-', zedFPS: '-',
outOfService: null, outOfService: null,
sliders: [], sliders: [],
advancedSliders: [],
sensors: [], sensors: [],
}; };
this.disconnected = false; this.disconnected = false;
@@ -82,6 +83,11 @@ var UnityWebSocket = /** @class */ (function () {
var percentage = args[1]; var percentage = args[1];
this.setSliderValue(sliderIndex, percentage); this.setSliderValue(sliderIndex, percentage);
break; break;
case 'advancedParameterValue':
var advSliderIndex = args[0];
var advPercentage = args[1];
this.setAdvancedSliderValue(advSliderIndex, advPercentage);
break;
case 'enableOutOfService': case 'enableOutOfService':
var enableCallback = args[0]; var enableCallback = args[0];
if (typeof enableCallback !== 'function') if (typeof enableCallback !== 'function')
@@ -118,6 +124,19 @@ var UnityWebSocket = /** @class */ (function () {
this.parameters.sliders[sliderIndex].outputValue = sliderValue; this.parameters.sliders[sliderIndex].outputValue = sliderValue;
this.broadcastState(); 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) { UnityWebSocket.prototype.setOutOfService = function (state) {
if (this.socket == null || this.socket.readyState !== ws_1.WebSocket.OPEN) if (this.socket == null || this.socket.readyState !== ws_1.WebSocket.OPEN)
return; return;
@@ -175,6 +194,10 @@ var UnityWebSocket = /** @class */ (function () {
this.parameters.sliders = message.heartbeat.dataSliders.map(function (slider) { this.parameters.sliders = message.heartbeat.dataSliders.map(function (slider) {
return __assign(__assign({}, slider), { decimalPlaces: slider.min == 0 && slider.max == 1 ? 2 : null }); 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(); this.broadcastState();
break; break;
case 'response_camera_frame': case 'response_camera_frame':

File diff suppressed because one or more lines are too long

View File

@@ -60,6 +60,7 @@ var DashboardUnity = /** @class */ (function () {
this.timelineStanding = document.querySelector('.ntsh_dashboard-unity-timeline-standing'); this.timelineStanding = document.querySelector('.ntsh_dashboard-unity-timeline-standing');
this.timelineProgress = document.querySelector('.ntsh_dashboard-unity-timeline-progress'); this.timelineProgress = document.querySelector('.ntsh_dashboard-unity-timeline-progress');
this.parametersTable = document.querySelector('.ntsh_dashboard-unity-parameters'); 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.sensorsTable = document.querySelector('.ntsh_dashboard-unity-sensors');
this.errorContainer = document.querySelector('.ntsh_dashboard-unity-error'); this.errorContainer = document.querySelector('.ntsh_dashboard-unity-error');
this.errorText = document.querySelector('.ntsh_dashboard-unity-errortext'); 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, '%'); (0, utils_1.setProgressState)(this.timelineProgress, Math.round(state.parameters.timelineProgress * 100), 0, 100, '%');
// ----------- Parameters ----------- // ----------- Parameters -----------
this.renderParameterSliders(state.state == 'CONNECTED' ? state.parameters.sliders : []); this.renderParameterSliders(state.state == 'CONNECTED' ? state.parameters.sliders : []);
this.renderAdvancedParameterSliders(state.state == 'CONNECTED' ? state.parameters.advancedSliders : []);
this.renderParameterSensors(state.state == 'CONNECTED' ? state.parameters.sensors : []); this.renderParameterSensors(state.state == 'CONNECTED' ? state.parameters.sensors : []);
// ----------- Error ----------- // ----------- Error -----------
if (((_b = state === null || state === void 0 ? void 0 : state.error) !== null && _b !== void 0 ? _b : '').trim().length > 0) 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) { DashboardUnity.prototype.renderParameterSensors = function (sensors) {
var _this = this; var _this = this;
var existingSensors = this.sensorsTable.querySelectorAll('.ntsh_dashboard-unity-sensor-row'); var existingSensors = this.sensorsTable.querySelectorAll('.ntsh_dashboard-unity-sensor-row');

File diff suppressed because one or more lines are too long

View File

@@ -241,7 +241,7 @@
<div class="ntsh_dashboard-box ntsh_dashboard-unityparameters"> <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"> <table class="ntsh_vertical ntsh_dashboard-unity-parameters">
<tr> <tr>
@@ -252,6 +252,19 @@
</tr> </tr>
</table> </table>
</div> </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 ntsh_dashboard-unitysensors">
<div class="ntsh_dashboard-box-header mux_header">Sensors</div> <div class="ntsh_dashboard-box-header mux_header">Sensors</div>

View File

@@ -15656,6 +15656,7 @@
this.timelineStanding = document.querySelector('.ntsh_dashboard-unity-timeline-standing'); this.timelineStanding = document.querySelector('.ntsh_dashboard-unity-timeline-standing');
this.timelineProgress = document.querySelector('.ntsh_dashboard-unity-timeline-progress'); this.timelineProgress = document.querySelector('.ntsh_dashboard-unity-timeline-progress');
this.parametersTable = document.querySelector('.ntsh_dashboard-unity-parameters'); 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.sensorsTable = document.querySelector('.ntsh_dashboard-unity-sensors');
this.errorContainer = document.querySelector('.ntsh_dashboard-unity-error'); this.errorContainer = document.querySelector('.ntsh_dashboard-unity-error');
this.errorText = document.querySelector('.ntsh_dashboard-unity-errortext'); 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, '%'); (0, utils_1.setProgressState)(this.timelineProgress, Math.round(state.parameters.timelineProgress * 100), 0, 100, '%');
// ----------- Parameters ----------- // ----------- Parameters -----------
this.renderParameterSliders(state.state == 'CONNECTED' ? state.parameters.sliders : []); this.renderParameterSliders(state.state == 'CONNECTED' ? state.parameters.sliders : []);
this.renderAdvancedParameterSliders(state.state == 'CONNECTED' ? state.parameters.advancedSliders : []);
this.renderParameterSensors(state.state == 'CONNECTED' ? state.parameters.sensors : []); this.renderParameterSensors(state.state == 'CONNECTED' ? state.parameters.sensors : []);
// ----------- Error ----------- // ----------- Error -----------
if (((_b = state === null || state === void 0 ? void 0 : state.error) !== null && _b !== void 0 ? _b : '').trim().length > 0) 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) { DashboardUnity.prototype.renderParameterSensors = function (sensors) {
var _this = this; var _this = this;
var existingSensors = this.sensorsTable.querySelectorAll('.ntsh_dashboard-unity-sensor-row'); var existingSensors = this.sensorsTable.querySelectorAll('.ntsh_dashboard-unity-sensor-row');

File diff suppressed because one or more lines are too long

View File

@@ -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 {
.ntsh_dashboard-unity-sensors-loading { .ntsh_dashboard-unity-sensors-loading {
text-align: center; text-align: center;

View File

@@ -2400,6 +2400,10 @@ body {
text-align: center; text-align: center;
color: #9d9d9d; 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 { .ntsh_dashboard .ntsh_dashboard-unity-sensors .ntsh_dashboard-unity-sensors-loading {
text-align: center; text-align: center;
color: #9d9d9d; color: #9d9d9d;

File diff suppressed because one or more lines are too long

View File

@@ -75,6 +75,9 @@ export class DashboardUnity {
parametersTable: HTMLTableElement = document.querySelector( parametersTable: HTMLTableElement = document.querySelector(
'.ntsh_dashboard-unity-parameters' '.ntsh_dashboard-unity-parameters'
); );
advancedParametersTable: HTMLTableElement = document.querySelector(
'.ntsh_dashboard-unity-advancedparameters'
);
sensorsTable: HTMLTableElement = document.querySelector( sensorsTable: HTMLTableElement = document.querySelector(
'.ntsh_dashboard-unity-sensors' '.ntsh_dashboard-unity-sensors'
@@ -200,6 +203,9 @@ export class DashboardUnity {
this.renderParameterSliders( this.renderParameterSliders(
state.state == 'CONNECTED' ? state.parameters.sliders : [] state.state == 'CONNECTED' ? state.parameters.sliders : []
); );
this.renderAdvancedParameterSliders(
state.state == 'CONNECTED' ? state.parameters.advancedSliders : []
);
this.renderParameterSensors( this.renderParameterSensors(
state.state == 'CONNECTED' ? state.parameters.sensors : [] 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']) { private renderParameterSensors(sensors: UnityParameters['sensors']) {
const existingSensors = this.sensorsTable.querySelectorAll( const existingSensors = this.sensorsTable.querySelectorAll(
'.ntsh_dashboard-unity-sensor-row' '.ntsh_dashboard-unity-sensor-row'
@@ -528,6 +683,7 @@ interface UnityParameters {
zedFPS: string; zedFPS: string;
outOfService: boolean; outOfService: boolean;
sliders: UnityParameterSlider[]; sliders: UnityParameterSlider[];
advancedSliders: UnityParameterSlider[];
sensors: UnitySocketMessageHeartbeat['heartbeat']['dataSensors']; sensors: UnitySocketMessageHeartbeat['heartbeat']['dataSensors'];
} }

View File

@@ -9,6 +9,7 @@ import { CameraRunner } from './CameraRunner';
import { UnityRunner } from './Unity/UnityRunner'; import { UnityRunner } from './Unity/UnityRunner';
import { UnityWebSocket } from './Unity/UnityWebSocket'; import { UnityWebSocket } from './Unity/UnityWebSocket';
import { TwilioHandler } from './Twilio'; import { TwilioHandler } from './Twilio';
import { delay } from './Utils';
export class Main { export class Main {
dataPath = join(homedir(), 'MorphixProductions', 'NTSHControl'); dataPath = join(homedir(), 'MorphixProductions', 'NTSHControl');
@@ -65,6 +66,8 @@ export class Main {
}); });
if (!succeed) return; if (!succeed) return;
await delay(5000);
console.log('Starting UnityRunner...'); console.log('Starting UnityRunner...');
await this.UnityRunner.start(); await this.UnityRunner.start();

View File

@@ -21,6 +21,7 @@ export class UnityWebSocket {
zedFPS: '-', zedFPS: '-',
outOfService: null, outOfService: null,
sliders: [], sliders: [],
advancedSliders: [],
sensors: [], sensors: [],
}; };
@@ -39,6 +40,13 @@ export class UnityWebSocket {
this.setSliderValue(sliderIndex, percentage); this.setSliderValue(sliderIndex, percentage);
break; break;
case 'advancedParameterValue':
const advSliderIndex: number = args[0];
const advPercentage: number = args[1];
this.setAdvancedSliderValue(advSliderIndex, advPercentage);
break;
case 'enableOutOfService': case 'enableOutOfService':
const enableCallback: Function = args[0]; const enableCallback: Function = args[0];
if (typeof enableCallback !== 'function') return; if (typeof enableCallback !== 'function') return;
@@ -87,6 +95,23 @@ export class UnityWebSocket {
this.broadcastState(); 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) { setOutOfService(state: boolean) {
if (this.socket == null || this.socket.readyState !== WebSocket.OPEN) if (this.socket == null || this.socket.readyState !== WebSocket.OPEN)
return; 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(); this.broadcastState();
break; break;
@@ -312,6 +345,7 @@ interface UnityParameters {
zedFPS: string; zedFPS: string;
outOfService: boolean; outOfService: boolean;
sliders: UnityParameterSlider[]; sliders: UnityParameterSlider[];
advancedSliders: UnityParameterSlider[];
sensors: UnitySocketMessageHeartbeat['heartbeat']['dataSensors']; sensors: UnitySocketMessageHeartbeat['heartbeat']['dataSensors'];
} }
@@ -346,6 +380,14 @@ interface UnitySocketMessageHeartbeat extends UnitySocketMessageBase {
max: number; max: number;
unit: string; unit: string;
}[]; }[];
dataAdvancedSliders: {
sliderIndex: number;
sliderName: string;
outputValue: number;
min: number;
max: number;
unit: string;
}[];
dataTimeline: { dataTimeline: {
isStanding: boolean; isStanding: boolean;
isWatching: boolean; isWatching: boolean;