@2112-lab/central-plant 0.1.6 → 0.1.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bundle/index.js +902 -34
- package/dist/cjs/src/core/centralPlant.js +31 -0
- package/dist/cjs/src/core/sceneViewer.js +824 -0
- package/dist/cjs/src/data/export.js +76 -34
- package/dist/cjs/src/index.js +2 -0
- package/dist/esm/src/core/centralPlant.js +31 -0
- package/dist/esm/src/core/sceneViewer.js +799 -0
- package/dist/esm/src/data/export.js +76 -34
- package/dist/esm/src/index.js +1 -0
- package/package.json +1 -1
package/dist/bundle/index.js
CHANGED
|
@@ -21807,6 +21807,801 @@ var SceneHelper = /*#__PURE__*/function () {
|
|
|
21807
21807
|
}]);
|
|
21808
21808
|
}();
|
|
21809
21809
|
|
|
21810
|
+
var SceneViewer = /*#__PURE__*/function () {
|
|
21811
|
+
/**
|
|
21812
|
+
* Initialize the SceneViewer
|
|
21813
|
+
* @param {HTMLElement} container - DOM element to render the scene
|
|
21814
|
+
* @param {Object} options - Configuration options
|
|
21815
|
+
* @param {Object} centralPlant - CentralPlant instance for managers
|
|
21816
|
+
*/
|
|
21817
|
+
function SceneViewer(container) {
|
|
21818
|
+
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
21819
|
+
var centralPlant = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
|
|
21820
|
+
_classCallCheck(this, SceneViewer);
|
|
21821
|
+
// Core properties
|
|
21822
|
+
this.container = container;
|
|
21823
|
+
this.centralPlant = centralPlant;
|
|
21824
|
+
this.options = _objectSpread2({
|
|
21825
|
+
enableAutoRotation: false,
|
|
21826
|
+
enableShadows: true,
|
|
21827
|
+
enableBloom: true,
|
|
21828
|
+
enableSSAO: false,
|
|
21829
|
+
antialias: true,
|
|
21830
|
+
pixelRatio: Math.min(window.devicePixelRatio, 2)
|
|
21831
|
+
}, options);
|
|
21832
|
+
|
|
21833
|
+
// Instance tracking for hot-reload handling
|
|
21834
|
+
this.instanceId = Date.now() + Math.random();
|
|
21835
|
+
|
|
21836
|
+
// Core Three.js objects
|
|
21837
|
+
this.scene = null;
|
|
21838
|
+
this.camera = null;
|
|
21839
|
+
this.renderer = null;
|
|
21840
|
+
this.controls = null;
|
|
21841
|
+
this.composer = null;
|
|
21842
|
+
this.bloomPass = null;
|
|
21843
|
+
this.ssaoPass = null;
|
|
21844
|
+
|
|
21845
|
+
// Utilities
|
|
21846
|
+
this.textureLoader = null;
|
|
21847
|
+
this.gltfLoader = null;
|
|
21848
|
+
this.envMap = null;
|
|
21849
|
+
this.performanceMonitor = null;
|
|
21850
|
+
this.resizeObserver = null;
|
|
21851
|
+
|
|
21852
|
+
// Scene data
|
|
21853
|
+
this.currentSceneData = null;
|
|
21854
|
+
|
|
21855
|
+
// State flags
|
|
21856
|
+
this.isDestroyed = false;
|
|
21857
|
+
this.isInitialized = false;
|
|
21858
|
+
|
|
21859
|
+
// Transform controls
|
|
21860
|
+
this.transformManager = null;
|
|
21861
|
+
this.selectedObjectForTransform = null;
|
|
21862
|
+
this.transformMode = 'translate';
|
|
21863
|
+
this.transformSpace = 'world';
|
|
21864
|
+
this.transformHistory = [];
|
|
21865
|
+
this.previousTransformValues = null;
|
|
21866
|
+
|
|
21867
|
+
// Manager instances (will be attached from centralPlant)
|
|
21868
|
+
this.managers = {};
|
|
21869
|
+
|
|
21870
|
+
// Event system for communication with external systems
|
|
21871
|
+
this.eventCallbacks = new Map();
|
|
21872
|
+
|
|
21873
|
+
// Drag and drop state
|
|
21874
|
+
this.isDragOver = false;
|
|
21875
|
+
this.dragDropManager = null;
|
|
21876
|
+
|
|
21877
|
+
// Scene helper utility
|
|
21878
|
+
this.sceneHelper = null;
|
|
21879
|
+
|
|
21880
|
+
// Pathfinder version cache
|
|
21881
|
+
this.pathfinderVersionInfo = null;
|
|
21882
|
+
|
|
21883
|
+
// Transform settings
|
|
21884
|
+
this.shouldUpdatePaths = true;
|
|
21885
|
+
|
|
21886
|
+
// Initialize the scene viewer
|
|
21887
|
+
this.init();
|
|
21888
|
+
}
|
|
21889
|
+
|
|
21890
|
+
/**
|
|
21891
|
+
* Initialize the Three.js scene and all components
|
|
21892
|
+
*/
|
|
21893
|
+
return _createClass(SceneViewer, [{
|
|
21894
|
+
key: "init",
|
|
21895
|
+
value: (function () {
|
|
21896
|
+
var _init = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {
|
|
21897
|
+
var _t;
|
|
21898
|
+
return _regenerator().w(function (_context) {
|
|
21899
|
+
while (1) switch (_context.n) {
|
|
21900
|
+
case 0:
|
|
21901
|
+
_context.p = 0;
|
|
21902
|
+
console.log('🚀 Initializing SceneViewer...', {
|
|
21903
|
+
instanceId: this.instanceId,
|
|
21904
|
+
containerSize: {
|
|
21905
|
+
width: this.container.clientWidth,
|
|
21906
|
+
height: this.container.clientHeight
|
|
21907
|
+
}
|
|
21908
|
+
});
|
|
21909
|
+
|
|
21910
|
+
// Attach managers from centralPlant if available
|
|
21911
|
+
if (this.centralPlant) {
|
|
21912
|
+
this.attachManagers();
|
|
21913
|
+
}
|
|
21914
|
+
|
|
21915
|
+
// Initialize Three.js components
|
|
21916
|
+
this.initScene();
|
|
21917
|
+
this.initCamera();
|
|
21918
|
+
this.initRenderer();
|
|
21919
|
+
this.initLights();
|
|
21920
|
+
this.initControls();
|
|
21921
|
+
this.initPostProcessing();
|
|
21922
|
+
this.initEventListeners();
|
|
21923
|
+
|
|
21924
|
+
// Initialize managers that require scene to be ready
|
|
21925
|
+
_context.n = 1;
|
|
21926
|
+
return this.initializeSceneManagers();
|
|
21927
|
+
case 1:
|
|
21928
|
+
// Start the animation loop
|
|
21929
|
+
this.animate();
|
|
21930
|
+
this.isInitialized = true;
|
|
21931
|
+
this.emit('initialized', {
|
|
21932
|
+
sceneViewer: this
|
|
21933
|
+
});
|
|
21934
|
+
console.log('✅ SceneViewer initialization completed');
|
|
21935
|
+
_context.n = 3;
|
|
21936
|
+
break;
|
|
21937
|
+
case 2:
|
|
21938
|
+
_context.p = 2;
|
|
21939
|
+
_t = _context.v;
|
|
21940
|
+
console.error('❌ Error initializing SceneViewer:', _t);
|
|
21941
|
+
this.emit('error', {
|
|
21942
|
+
error: _t,
|
|
21943
|
+
phase: 'initialization'
|
|
21944
|
+
});
|
|
21945
|
+
case 3:
|
|
21946
|
+
return _context.a(2);
|
|
21947
|
+
}
|
|
21948
|
+
}, _callee, this, [[0, 2]]);
|
|
21949
|
+
}));
|
|
21950
|
+
function init() {
|
|
21951
|
+
return _init.apply(this, arguments);
|
|
21952
|
+
}
|
|
21953
|
+
return init;
|
|
21954
|
+
}()
|
|
21955
|
+
/**
|
|
21956
|
+
* Attach managers from centralPlant
|
|
21957
|
+
*/
|
|
21958
|
+
)
|
|
21959
|
+
}, {
|
|
21960
|
+
key: "attachManagers",
|
|
21961
|
+
value: function attachManagers() {
|
|
21962
|
+
var _this = this;
|
|
21963
|
+
if (!this.centralPlant) return;
|
|
21964
|
+
|
|
21965
|
+
// Get all managers from centralPlant
|
|
21966
|
+
var managers = this.centralPlant.getAllManagers();
|
|
21967
|
+
|
|
21968
|
+
// Attach each manager to this instance
|
|
21969
|
+
Object.entries(managers).forEach(function (_ref) {
|
|
21970
|
+
var _ref2 = _slicedToArray(_ref, 2),
|
|
21971
|
+
key = _ref2[0],
|
|
21972
|
+
manager = _ref2[1];
|
|
21973
|
+
_this[key] = manager;
|
|
21974
|
+
_this.managers[key] = manager;
|
|
21975
|
+
});
|
|
21976
|
+
|
|
21977
|
+
// Also attach utilities
|
|
21978
|
+
var utilities = this.centralPlant.getAllUtilities();
|
|
21979
|
+
Object.entries(utilities).forEach(function (_ref3) {
|
|
21980
|
+
var _ref4 = _slicedToArray(_ref3, 2),
|
|
21981
|
+
key = _ref4[0],
|
|
21982
|
+
utility = _ref4[1];
|
|
21983
|
+
_this[key] = utility;
|
|
21984
|
+
});
|
|
21985
|
+
console.log('📦 Managers attached to SceneViewer:', Object.keys(managers));
|
|
21986
|
+
}
|
|
21987
|
+
|
|
21988
|
+
/**
|
|
21989
|
+
* Initialize Three.js scene
|
|
21990
|
+
*/
|
|
21991
|
+
}, {
|
|
21992
|
+
key: "initScene",
|
|
21993
|
+
value: function initScene() {
|
|
21994
|
+
this.scene = new THREE__namespace.Scene();
|
|
21995
|
+
this.scene.name = 'MainScene';
|
|
21996
|
+
|
|
21997
|
+
// Set background
|
|
21998
|
+
this.scene.background = new THREE__namespace.Color(0x87CEEB); // Sky blue
|
|
21999
|
+
|
|
22000
|
+
console.log('🌍 Scene initialized');
|
|
22001
|
+
}
|
|
22002
|
+
|
|
22003
|
+
/**
|
|
22004
|
+
* Initialize camera
|
|
22005
|
+
*/
|
|
22006
|
+
}, {
|
|
22007
|
+
key: "initCamera",
|
|
22008
|
+
value: function initCamera() {
|
|
22009
|
+
var aspect = this.container.clientWidth / this.container.clientHeight;
|
|
22010
|
+
this.camera = new THREE__namespace.PerspectiveCamera(75, aspect, 0.1, 1000);
|
|
22011
|
+
this.camera.position.set(5, 5, 5);
|
|
22012
|
+
this.camera.lookAt(0, 0, 0);
|
|
22013
|
+
console.log('📷 Camera initialized');
|
|
22014
|
+
}
|
|
22015
|
+
|
|
22016
|
+
/**
|
|
22017
|
+
* Initialize renderer
|
|
22018
|
+
*/
|
|
22019
|
+
}, {
|
|
22020
|
+
key: "initRenderer",
|
|
22021
|
+
value: function initRenderer() {
|
|
22022
|
+
this.renderer = new THREE__namespace.WebGLRenderer({
|
|
22023
|
+
antialias: this.options.antialias,
|
|
22024
|
+
powerPreference: 'high-performance'
|
|
22025
|
+
});
|
|
22026
|
+
this.renderer.setSize(this.container.clientWidth, this.container.clientHeight);
|
|
22027
|
+
this.renderer.setPixelRatio(this.options.pixelRatio);
|
|
22028
|
+
this.renderer.shadowMap.enabled = this.options.enableShadows;
|
|
22029
|
+
this.renderer.shadowMap.type = THREE__namespace.PCFSoftShadowMap;
|
|
22030
|
+
this.renderer.outputColorSpace = THREE__namespace.SRGBColorSpace;
|
|
22031
|
+
this.renderer.toneMapping = THREE__namespace.ACESFilmicToneMapping;
|
|
22032
|
+
this.renderer.toneMappingExposure = 1;
|
|
22033
|
+
|
|
22034
|
+
// Append renderer to container
|
|
22035
|
+
this.container.appendChild(this.renderer.domElement);
|
|
22036
|
+
console.log('🎨 Renderer initialized');
|
|
22037
|
+
}
|
|
22038
|
+
|
|
22039
|
+
/**
|
|
22040
|
+
* Initialize lighting
|
|
22041
|
+
*/
|
|
22042
|
+
}, {
|
|
22043
|
+
key: "initLights",
|
|
22044
|
+
value: function initLights() {
|
|
22045
|
+
// Ambient light
|
|
22046
|
+
var ambientLight = new THREE__namespace.AmbientLight(0x404040, 0.4);
|
|
22047
|
+
this.scene.add(ambientLight);
|
|
22048
|
+
|
|
22049
|
+
// Directional light
|
|
22050
|
+
var directionalLight = new THREE__namespace.DirectionalLight(0xffffff, 1);
|
|
22051
|
+
directionalLight.position.set(10, 10, 5);
|
|
22052
|
+
directionalLight.castShadow = this.options.enableShadows;
|
|
22053
|
+
if (this.options.enableShadows) {
|
|
22054
|
+
directionalLight.shadow.mapSize.width = 2048;
|
|
22055
|
+
directionalLight.shadow.mapSize.height = 2048;
|
|
22056
|
+
directionalLight.shadow.camera.near = 0.5;
|
|
22057
|
+
directionalLight.shadow.camera.far = 500;
|
|
22058
|
+
}
|
|
22059
|
+
this.scene.add(directionalLight);
|
|
22060
|
+
console.log('💡 Lights initialized');
|
|
22061
|
+
}
|
|
22062
|
+
|
|
22063
|
+
/**
|
|
22064
|
+
* Initialize controls (if available)
|
|
22065
|
+
*/
|
|
22066
|
+
}, {
|
|
22067
|
+
key: "initControls",
|
|
22068
|
+
value: function initControls() {
|
|
22069
|
+
// Controls will be initialized by the camera controls manager
|
|
22070
|
+
// This is just a placeholder for the base setup
|
|
22071
|
+
console.log('🎮 Controls setup ready');
|
|
22072
|
+
}
|
|
22073
|
+
|
|
22074
|
+
/**
|
|
22075
|
+
* Initialize post-processing effects
|
|
22076
|
+
*/
|
|
22077
|
+
}, {
|
|
22078
|
+
key: "initPostProcessing",
|
|
22079
|
+
value: function initPostProcessing() {
|
|
22080
|
+
// Post-processing will be handled by managers
|
|
22081
|
+
// This is just a placeholder
|
|
22082
|
+
console.log('✨ Post-processing setup ready');
|
|
22083
|
+
}
|
|
22084
|
+
|
|
22085
|
+
/**
|
|
22086
|
+
* Initialize event listeners
|
|
22087
|
+
*/
|
|
22088
|
+
}, {
|
|
22089
|
+
key: "initEventListeners",
|
|
22090
|
+
value: function initEventListeners() {
|
|
22091
|
+
var _this2 = this;
|
|
22092
|
+
// Resize observer
|
|
22093
|
+
this.resizeObserver = new ResizeObserver(function (entries) {
|
|
22094
|
+
var _iterator = _createForOfIteratorHelper(entries),
|
|
22095
|
+
_step;
|
|
22096
|
+
try {
|
|
22097
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
22098
|
+
var entry = _step.value;
|
|
22099
|
+
_this2.handleResize();
|
|
22100
|
+
}
|
|
22101
|
+
} catch (err) {
|
|
22102
|
+
_iterator.e(err);
|
|
22103
|
+
} finally {
|
|
22104
|
+
_iterator.f();
|
|
22105
|
+
}
|
|
22106
|
+
});
|
|
22107
|
+
this.resizeObserver.observe(this.container);
|
|
22108
|
+
|
|
22109
|
+
// Mouse events for selection
|
|
22110
|
+
this.container.addEventListener('click', this.handleClick.bind(this));
|
|
22111
|
+
this.container.addEventListener('dblclick', this.handleDoubleClick.bind(this));
|
|
22112
|
+
|
|
22113
|
+
// Drag and drop events
|
|
22114
|
+
this.container.addEventListener('dragover', this.handleDragOver.bind(this));
|
|
22115
|
+
this.container.addEventListener('drop', this.handleDrop.bind(this));
|
|
22116
|
+
this.container.addEventListener('dragenter', this.handleDragEnter.bind(this));
|
|
22117
|
+
this.container.addEventListener('dragleave', this.handleDragLeave.bind(this));
|
|
22118
|
+
console.log('👂 Event listeners initialized');
|
|
22119
|
+
}
|
|
22120
|
+
|
|
22121
|
+
/**
|
|
22122
|
+
* Initialize scene managers that require the scene to be ready
|
|
22123
|
+
*/
|
|
22124
|
+
}, {
|
|
22125
|
+
key: "initializeSceneManagers",
|
|
22126
|
+
value: (function () {
|
|
22127
|
+
var _initializeSceneManagers = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2() {
|
|
22128
|
+
var _t2;
|
|
22129
|
+
return _regenerator().w(function (_context2) {
|
|
22130
|
+
while (1) switch (_context2.n) {
|
|
22131
|
+
case 0:
|
|
22132
|
+
_context2.p = 0;
|
|
22133
|
+
if (!this.sceneInitializationManager) {
|
|
22134
|
+
_context2.n = 1;
|
|
22135
|
+
break;
|
|
22136
|
+
}
|
|
22137
|
+
_context2.n = 1;
|
|
22138
|
+
return this.sceneInitializationManager.initializeScene();
|
|
22139
|
+
case 1:
|
|
22140
|
+
if (!this.environmentManager) {
|
|
22141
|
+
_context2.n = 2;
|
|
22142
|
+
break;
|
|
22143
|
+
}
|
|
22144
|
+
_context2.n = 2;
|
|
22145
|
+
return this.environmentManager.initializeEnvironment();
|
|
22146
|
+
case 2:
|
|
22147
|
+
// Initialize other managers as needed
|
|
22148
|
+
console.log('🏗️ Scene managers initialized');
|
|
22149
|
+
_context2.n = 4;
|
|
22150
|
+
break;
|
|
22151
|
+
case 3:
|
|
22152
|
+
_context2.p = 3;
|
|
22153
|
+
_t2 = _context2.v;
|
|
22154
|
+
console.error('❌ Error initializing scene managers:', _t2);
|
|
22155
|
+
case 4:
|
|
22156
|
+
return _context2.a(2);
|
|
22157
|
+
}
|
|
22158
|
+
}, _callee2, this, [[0, 3]]);
|
|
22159
|
+
}));
|
|
22160
|
+
function initializeSceneManagers() {
|
|
22161
|
+
return _initializeSceneManagers.apply(this, arguments);
|
|
22162
|
+
}
|
|
22163
|
+
return initializeSceneManagers;
|
|
22164
|
+
}()
|
|
22165
|
+
/**
|
|
22166
|
+
* Main animation loop
|
|
22167
|
+
*/
|
|
22168
|
+
)
|
|
22169
|
+
}, {
|
|
22170
|
+
key: "animate",
|
|
22171
|
+
value: function animate() {
|
|
22172
|
+
var _this3 = this;
|
|
22173
|
+
if (this.isDestroyed) return;
|
|
22174
|
+
requestAnimationFrame(function () {
|
|
22175
|
+
return _this3.animate();
|
|
22176
|
+
});
|
|
22177
|
+
try {
|
|
22178
|
+
// Update controls
|
|
22179
|
+
if (this.controls && this.controls.update) {
|
|
22180
|
+
this.controls.update();
|
|
22181
|
+
}
|
|
22182
|
+
|
|
22183
|
+
// Update camera controls manager
|
|
22184
|
+
if (this.cameraControlsManager) {
|
|
22185
|
+
this.cameraControlsManager.update();
|
|
22186
|
+
}
|
|
22187
|
+
|
|
22188
|
+
// Update animation manager
|
|
22189
|
+
if (this.animationManager) {
|
|
22190
|
+
this.animationManager.update();
|
|
22191
|
+
}
|
|
22192
|
+
|
|
22193
|
+
// Update performance monitor
|
|
22194
|
+
if (this.performanceMonitor) {
|
|
22195
|
+
this.performanceMonitor.begin();
|
|
22196
|
+
}
|
|
22197
|
+
|
|
22198
|
+
// Render the scene
|
|
22199
|
+
if (this.composer) {
|
|
22200
|
+
this.composer.render();
|
|
22201
|
+
} else {
|
|
22202
|
+
this.renderer.render(this.scene, this.camera);
|
|
22203
|
+
}
|
|
22204
|
+
|
|
22205
|
+
// End performance monitoring
|
|
22206
|
+
if (this.performanceMonitor) {
|
|
22207
|
+
this.performanceMonitor.end();
|
|
22208
|
+
}
|
|
22209
|
+
} catch (error) {
|
|
22210
|
+
console.error('❌ Error in animation loop:', error);
|
|
22211
|
+
}
|
|
22212
|
+
}
|
|
22213
|
+
|
|
22214
|
+
/**
|
|
22215
|
+
* Handle window/container resize
|
|
22216
|
+
*/
|
|
22217
|
+
}, {
|
|
22218
|
+
key: "handleResize",
|
|
22219
|
+
value: function handleResize() {
|
|
22220
|
+
if (!this.camera || !this.renderer) return;
|
|
22221
|
+
var width = this.container.clientWidth;
|
|
22222
|
+
var height = this.container.clientHeight;
|
|
22223
|
+
|
|
22224
|
+
// Update camera
|
|
22225
|
+
this.camera.aspect = width / height;
|
|
22226
|
+
this.camera.updateProjectionMatrix();
|
|
22227
|
+
|
|
22228
|
+
// Update renderer
|
|
22229
|
+
this.renderer.setSize(width, height);
|
|
22230
|
+
|
|
22231
|
+
// Update composer if available
|
|
22232
|
+
if (this.composer) {
|
|
22233
|
+
this.composer.setSize(width, height);
|
|
22234
|
+
}
|
|
22235
|
+
this.emit('resize', {
|
|
22236
|
+
width: width,
|
|
22237
|
+
height: height
|
|
22238
|
+
});
|
|
22239
|
+
}
|
|
22240
|
+
|
|
22241
|
+
/**
|
|
22242
|
+
* Handle click events
|
|
22243
|
+
*/
|
|
22244
|
+
}, {
|
|
22245
|
+
key: "handleClick",
|
|
22246
|
+
value: function handleClick(event) {
|
|
22247
|
+
if (!this.camera || !this.scene) return;
|
|
22248
|
+
var rect = this.container.getBoundingClientRect();
|
|
22249
|
+
var mouse = new THREE__namespace.Vector2();
|
|
22250
|
+
mouse.x = (event.clientX - rect.left) / rect.width * 2 - 1;
|
|
22251
|
+
mouse.y = -((event.clientY - rect.top) / rect.height) * 2 + 1;
|
|
22252
|
+
var raycaster = new THREE__namespace.Raycaster();
|
|
22253
|
+
raycaster.setFromCamera(mouse, this.camera);
|
|
22254
|
+
var intersects = raycaster.intersectObjects(this.scene.children, true);
|
|
22255
|
+
if (intersects.length > 0) {
|
|
22256
|
+
var object = intersects[0].object;
|
|
22257
|
+
this.selectObject(object);
|
|
22258
|
+
} else {
|
|
22259
|
+
this.selectObject(null);
|
|
22260
|
+
}
|
|
22261
|
+
}
|
|
22262
|
+
|
|
22263
|
+
/**
|
|
22264
|
+
* Handle double click events
|
|
22265
|
+
*/
|
|
22266
|
+
}, {
|
|
22267
|
+
key: "handleDoubleClick",
|
|
22268
|
+
value: function handleDoubleClick(event) {
|
|
22269
|
+
// Handle double click actions
|
|
22270
|
+
this.emit('doubleClick', {
|
|
22271
|
+
event: event
|
|
22272
|
+
});
|
|
22273
|
+
}
|
|
22274
|
+
|
|
22275
|
+
/**
|
|
22276
|
+
* Handle drag over events
|
|
22277
|
+
*/
|
|
22278
|
+
}, {
|
|
22279
|
+
key: "handleDragOver",
|
|
22280
|
+
value: function handleDragOver(event) {
|
|
22281
|
+
event.preventDefault();
|
|
22282
|
+
this.isDragOver = true;
|
|
22283
|
+
this.emit('dragOver', {
|
|
22284
|
+
event: event
|
|
22285
|
+
});
|
|
22286
|
+
}
|
|
22287
|
+
|
|
22288
|
+
/**
|
|
22289
|
+
* Handle drop events
|
|
22290
|
+
*/
|
|
22291
|
+
}, {
|
|
22292
|
+
key: "handleDrop",
|
|
22293
|
+
value: function handleDrop(event) {
|
|
22294
|
+
event.preventDefault();
|
|
22295
|
+
this.isDragOver = false;
|
|
22296
|
+
try {
|
|
22297
|
+
var dataTransfer = event.dataTransfer.getData('text/plain');
|
|
22298
|
+
if (dataTransfer) {
|
|
22299
|
+
var componentData = JSON.parse(dataTransfer);
|
|
22300
|
+
|
|
22301
|
+
// Calculate drop position
|
|
22302
|
+
var rect = this.container.getBoundingClientRect();
|
|
22303
|
+
var mouse = new THREE__namespace.Vector2();
|
|
22304
|
+
mouse.x = (event.clientX - rect.left) / rect.width * 2 - 1;
|
|
22305
|
+
mouse.y = -((event.clientY - rect.top) / rect.height) * 2 + 1;
|
|
22306
|
+
var raycaster = new THREE__namespace.Raycaster();
|
|
22307
|
+
raycaster.setFromCamera(mouse, this.camera);
|
|
22308
|
+
|
|
22309
|
+
// Cast ray to ground plane (y = 0)
|
|
22310
|
+
var groundPlane = new THREE__namespace.Plane(new THREE__namespace.Vector3(0, 1, 0), 0);
|
|
22311
|
+
var dropPosition = new THREE__namespace.Vector3();
|
|
22312
|
+
raycaster.ray.intersectPlane(groundPlane, dropPosition);
|
|
22313
|
+
this.emit('componentDropped', {
|
|
22314
|
+
componentData: componentData,
|
|
22315
|
+
position: dropPosition,
|
|
22316
|
+
event: event
|
|
22317
|
+
});
|
|
22318
|
+
}
|
|
22319
|
+
} catch (error) {
|
|
22320
|
+
console.error('❌ Error handling drop:', error);
|
|
22321
|
+
this.emit('dropError', {
|
|
22322
|
+
error: error,
|
|
22323
|
+
event: event
|
|
22324
|
+
});
|
|
22325
|
+
}
|
|
22326
|
+
}
|
|
22327
|
+
|
|
22328
|
+
/**
|
|
22329
|
+
* Handle drag enter events
|
|
22330
|
+
*/
|
|
22331
|
+
}, {
|
|
22332
|
+
key: "handleDragEnter",
|
|
22333
|
+
value: function handleDragEnter(event) {
|
|
22334
|
+
event.preventDefault();
|
|
22335
|
+
this.emit('dragEnter', {
|
|
22336
|
+
event: event
|
|
22337
|
+
});
|
|
22338
|
+
}
|
|
22339
|
+
|
|
22340
|
+
/**
|
|
22341
|
+
* Handle drag leave events
|
|
22342
|
+
*/
|
|
22343
|
+
}, {
|
|
22344
|
+
key: "handleDragLeave",
|
|
22345
|
+
value: function handleDragLeave(event) {
|
|
22346
|
+
this.isDragOver = false;
|
|
22347
|
+
this.emit('dragLeave', {
|
|
22348
|
+
event: event
|
|
22349
|
+
});
|
|
22350
|
+
}
|
|
22351
|
+
|
|
22352
|
+
/**
|
|
22353
|
+
* Select an object in the scene
|
|
22354
|
+
*/
|
|
22355
|
+
}, {
|
|
22356
|
+
key: "selectObject",
|
|
22357
|
+
value: function selectObject(object) {
|
|
22358
|
+
// Clear previous selection
|
|
22359
|
+
if (this.selectedObjectForTransform) {
|
|
22360
|
+
// Remove selection indicators
|
|
22361
|
+
this.clearObjectSelection(this.selectedObjectForTransform);
|
|
22362
|
+
}
|
|
22363
|
+
this.selectedObjectForTransform = object;
|
|
22364
|
+
if (object) {
|
|
22365
|
+
// Add selection indicators
|
|
22366
|
+
this.highlightSelectedObject(object);
|
|
22367
|
+
|
|
22368
|
+
// Initialize transform controls if available
|
|
22369
|
+
if (this.transformManager) {
|
|
22370
|
+
this.transformManager.attachToObject(object);
|
|
22371
|
+
}
|
|
22372
|
+
} else {
|
|
22373
|
+
// Clear transform controls
|
|
22374
|
+
if (this.transformManager) {
|
|
22375
|
+
this.transformManager.detach();
|
|
22376
|
+
}
|
|
22377
|
+
}
|
|
22378
|
+
this.emit('objectSelected', {
|
|
22379
|
+
object: object
|
|
22380
|
+
});
|
|
22381
|
+
}
|
|
22382
|
+
|
|
22383
|
+
/**
|
|
22384
|
+
* Clear object selection visual indicators
|
|
22385
|
+
*/
|
|
22386
|
+
}, {
|
|
22387
|
+
key: "clearObjectSelection",
|
|
22388
|
+
value: function clearObjectSelection(object) {
|
|
22389
|
+
// Remove selection outline or other indicators
|
|
22390
|
+
// This would depend on your specific selection visualization
|
|
22391
|
+
}
|
|
22392
|
+
|
|
22393
|
+
/**
|
|
22394
|
+
* Highlight selected object
|
|
22395
|
+
*/
|
|
22396
|
+
}, {
|
|
22397
|
+
key: "highlightSelectedObject",
|
|
22398
|
+
value: function highlightSelectedObject(object) {
|
|
22399
|
+
// Add selection outline or other indicators
|
|
22400
|
+
// This would depend on your specific selection visualization
|
|
22401
|
+
}
|
|
22402
|
+
|
|
22403
|
+
/**
|
|
22404
|
+
* Load a scene from data
|
|
22405
|
+
*/
|
|
22406
|
+
}, {
|
|
22407
|
+
key: "loadScene",
|
|
22408
|
+
value: (function () {
|
|
22409
|
+
var _loadScene = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee3(sceneData) {
|
|
22410
|
+
var _t3;
|
|
22411
|
+
return _regenerator().w(function (_context3) {
|
|
22412
|
+
while (1) switch (_context3.n) {
|
|
22413
|
+
case 0:
|
|
22414
|
+
_context3.p = 0;
|
|
22415
|
+
this.currentSceneData = sceneData;
|
|
22416
|
+
if (!this.componentManager) {
|
|
22417
|
+
_context3.n = 1;
|
|
22418
|
+
break;
|
|
22419
|
+
}
|
|
22420
|
+
_context3.n = 1;
|
|
22421
|
+
return this.componentManager.loadSceneFromData(sceneData);
|
|
22422
|
+
case 1:
|
|
22423
|
+
this.emit('sceneLoaded', {
|
|
22424
|
+
sceneData: sceneData
|
|
22425
|
+
});
|
|
22426
|
+
_context3.n = 3;
|
|
22427
|
+
break;
|
|
22428
|
+
case 2:
|
|
22429
|
+
_context3.p = 2;
|
|
22430
|
+
_t3 = _context3.v;
|
|
22431
|
+
console.error('❌ Error loading scene:', _t3);
|
|
22432
|
+
this.emit('sceneLoadError', {
|
|
22433
|
+
error: _t3,
|
|
22434
|
+
sceneData: sceneData
|
|
22435
|
+
});
|
|
22436
|
+
case 3:
|
|
22437
|
+
return _context3.a(2);
|
|
22438
|
+
}
|
|
22439
|
+
}, _callee3, this, [[0, 2]]);
|
|
22440
|
+
}));
|
|
22441
|
+
function loadScene(_x) {
|
|
22442
|
+
return _loadScene.apply(this, arguments);
|
|
22443
|
+
}
|
|
22444
|
+
return loadScene;
|
|
22445
|
+
}()
|
|
22446
|
+
/**
|
|
22447
|
+
* Add a component to the scene
|
|
22448
|
+
*/
|
|
22449
|
+
)
|
|
22450
|
+
}, {
|
|
22451
|
+
key: "addComponentToScene",
|
|
22452
|
+
value: function addComponentToScene(componentData) {
|
|
22453
|
+
var position = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : new THREE__namespace.Vector3();
|
|
22454
|
+
try {
|
|
22455
|
+
if (this.componentManager) {
|
|
22456
|
+
return this.componentManager.addComponent(componentData, position);
|
|
22457
|
+
}
|
|
22458
|
+
return false;
|
|
22459
|
+
} catch (error) {
|
|
22460
|
+
console.error('❌ Error adding component:', error);
|
|
22461
|
+
return false;
|
|
22462
|
+
}
|
|
22463
|
+
}
|
|
22464
|
+
|
|
22465
|
+
/**
|
|
22466
|
+
* Export scene data
|
|
22467
|
+
*/
|
|
22468
|
+
}, {
|
|
22469
|
+
key: "exportScene",
|
|
22470
|
+
value: function exportScene() {
|
|
22471
|
+
try {
|
|
22472
|
+
if (this.sceneExportManager) {
|
|
22473
|
+
return this.sceneExportManager.exportScene();
|
|
22474
|
+
}
|
|
22475
|
+
return null;
|
|
22476
|
+
} catch (error) {
|
|
22477
|
+
console.error('❌ Error exporting scene:', error);
|
|
22478
|
+
return null;
|
|
22479
|
+
}
|
|
22480
|
+
}
|
|
22481
|
+
|
|
22482
|
+
/**
|
|
22483
|
+
* Toggle camera auto rotation
|
|
22484
|
+
*/
|
|
22485
|
+
}, {
|
|
22486
|
+
key: "toggleCameraRotation",
|
|
22487
|
+
value: function toggleCameraRotation() {
|
|
22488
|
+
if (this.cameraControlsManager) {
|
|
22489
|
+
return this.cameraControlsManager.toggleCameraRotation();
|
|
22490
|
+
}
|
|
22491
|
+
return false;
|
|
22492
|
+
}
|
|
22493
|
+
|
|
22494
|
+
/**
|
|
22495
|
+
* Get selected transform data
|
|
22496
|
+
*/
|
|
22497
|
+
}, {
|
|
22498
|
+
key: "getSelectedTransform",
|
|
22499
|
+
value: function getSelectedTransform() {
|
|
22500
|
+
if (this.transformManager && this.selectedObjectForTransform) {
|
|
22501
|
+
return this.transformManager.getTransformData(this.selectedObjectForTransform);
|
|
22502
|
+
}
|
|
22503
|
+
return null;
|
|
22504
|
+
}
|
|
22505
|
+
|
|
22506
|
+
/**
|
|
22507
|
+
* Event system methods
|
|
22508
|
+
*/
|
|
22509
|
+
}, {
|
|
22510
|
+
key: "on",
|
|
22511
|
+
value: function on(eventName, callback) {
|
|
22512
|
+
if (!this.eventCallbacks.has(eventName)) {
|
|
22513
|
+
this.eventCallbacks.set(eventName, []);
|
|
22514
|
+
}
|
|
22515
|
+
this.eventCallbacks.get(eventName).push(callback);
|
|
22516
|
+
}
|
|
22517
|
+
}, {
|
|
22518
|
+
key: "off",
|
|
22519
|
+
value: function off(eventName, callback) {
|
|
22520
|
+
if (this.eventCallbacks.has(eventName)) {
|
|
22521
|
+
var callbacks = this.eventCallbacks.get(eventName);
|
|
22522
|
+
var index = callbacks.indexOf(callback);
|
|
22523
|
+
if (index > -1) {
|
|
22524
|
+
callbacks.splice(index, 1);
|
|
22525
|
+
}
|
|
22526
|
+
}
|
|
22527
|
+
}
|
|
22528
|
+
}, {
|
|
22529
|
+
key: "emit",
|
|
22530
|
+
value: function emit(eventName) {
|
|
22531
|
+
var data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
22532
|
+
if (this.eventCallbacks.has(eventName)) {
|
|
22533
|
+
this.eventCallbacks.get(eventName).forEach(function (callback) {
|
|
22534
|
+
try {
|
|
22535
|
+
callback(data);
|
|
22536
|
+
} catch (error) {
|
|
22537
|
+
console.error("\u274C Error in event callback for ".concat(eventName, ":"), error);
|
|
22538
|
+
}
|
|
22539
|
+
});
|
|
22540
|
+
}
|
|
22541
|
+
}
|
|
22542
|
+
|
|
22543
|
+
/**
|
|
22544
|
+
* Dispose of the scene viewer and clean up resources
|
|
22545
|
+
*/
|
|
22546
|
+
}, {
|
|
22547
|
+
key: "dispose",
|
|
22548
|
+
value: function dispose() {
|
|
22549
|
+
console.log('🧹 Disposing SceneViewer...');
|
|
22550
|
+
this.isDestroyed = true;
|
|
22551
|
+
try {
|
|
22552
|
+
// Clean up event listeners
|
|
22553
|
+
this.eventCallbacks.clear();
|
|
22554
|
+
|
|
22555
|
+
// Clean up resize observer
|
|
22556
|
+
if (this.resizeObserver) {
|
|
22557
|
+
this.resizeObserver.disconnect();
|
|
22558
|
+
this.resizeObserver = null;
|
|
22559
|
+
}
|
|
22560
|
+
|
|
22561
|
+
// Clean up DOM event listeners
|
|
22562
|
+
if (this.container) {
|
|
22563
|
+
this.container.removeEventListener('click', this.handleClick);
|
|
22564
|
+
this.container.removeEventListener('dblclick', this.handleDoubleClick);
|
|
22565
|
+
this.container.removeEventListener('dragover', this.handleDragOver);
|
|
22566
|
+
this.container.removeEventListener('drop', this.handleDrop);
|
|
22567
|
+
this.container.removeEventListener('dragenter', this.handleDragEnter);
|
|
22568
|
+
this.container.removeEventListener('dragleave', this.handleDragLeave);
|
|
22569
|
+
}
|
|
22570
|
+
|
|
22571
|
+
// Dispose of managers using disposal manager
|
|
22572
|
+
if (this.disposalManager) {
|
|
22573
|
+
this.disposalManager.cleanupEventListeners();
|
|
22574
|
+
this.disposalManager.cleanupPerformanceMonitoring();
|
|
22575
|
+
this.disposalManager.cleanupControls();
|
|
22576
|
+
this.disposalManager.cleanupScene();
|
|
22577
|
+
this.disposalManager.cleanupRenderer();
|
|
22578
|
+
}
|
|
22579
|
+
|
|
22580
|
+
// Remove renderer from DOM
|
|
22581
|
+
if (this.renderer && this.renderer.domElement && this.container) {
|
|
22582
|
+
this.container.removeChild(this.renderer.domElement);
|
|
22583
|
+
}
|
|
22584
|
+
|
|
22585
|
+
// Dispose of renderer
|
|
22586
|
+
if (this.renderer) {
|
|
22587
|
+
this.renderer.dispose();
|
|
22588
|
+
this.renderer = null;
|
|
22589
|
+
}
|
|
22590
|
+
|
|
22591
|
+
// Clear references
|
|
22592
|
+
this.scene = null;
|
|
22593
|
+
this.camera = null;
|
|
22594
|
+
this.controls = null;
|
|
22595
|
+
this.currentSceneData = null;
|
|
22596
|
+
this.selectedObjectForTransform = null;
|
|
22597
|
+
console.log('✅ SceneViewer disposed successfully');
|
|
22598
|
+
} catch (error) {
|
|
22599
|
+
console.error('❌ Error during SceneViewer disposal:', error);
|
|
22600
|
+
}
|
|
22601
|
+
}
|
|
22602
|
+
}]);
|
|
22603
|
+
}();
|
|
22604
|
+
|
|
21810
22605
|
/**
|
|
21811
22606
|
* CentralPlant class that manages all scene utility instances
|
|
21812
22607
|
*/
|
|
@@ -22927,6 +23722,36 @@ var CentralPlant = /*#__PURE__*/function () {
|
|
|
22927
23722
|
});
|
|
22928
23723
|
return found;
|
|
22929
23724
|
}
|
|
23725
|
+
|
|
23726
|
+
/**
|
|
23727
|
+
* Get the SceneViewer class for creating new instances
|
|
23728
|
+
* @returns {Function} The SceneViewer class constructor
|
|
23729
|
+
*/
|
|
23730
|
+
}, {
|
|
23731
|
+
key: "getSceneViewerClass",
|
|
23732
|
+
value: function getSceneViewerClass() {
|
|
23733
|
+
return SceneViewer;
|
|
23734
|
+
}
|
|
23735
|
+
|
|
23736
|
+
/**
|
|
23737
|
+
* Get all managers for external access
|
|
23738
|
+
* @returns {Object} All manager instances
|
|
23739
|
+
*/
|
|
23740
|
+
}, {
|
|
23741
|
+
key: "getAllManagers",
|
|
23742
|
+
value: function getAllManagers() {
|
|
23743
|
+
return _objectSpread2({}, this.managers);
|
|
23744
|
+
}
|
|
23745
|
+
|
|
23746
|
+
/**
|
|
23747
|
+
* Get all utilities for external access
|
|
23748
|
+
* @returns {Object} All utility instances
|
|
23749
|
+
*/
|
|
23750
|
+
}, {
|
|
23751
|
+
key: "getAllUtilities",
|
|
23752
|
+
value: function getAllUtilities() {
|
|
23753
|
+
return _objectSpread2({}, this.utilities);
|
|
23754
|
+
}
|
|
22930
23755
|
}]);
|
|
22931
23756
|
}();
|
|
22932
23757
|
|
|
@@ -30444,29 +31269,41 @@ var Export = /*#__PURE__*/function () {
|
|
|
30444
31269
|
includeCustomExtensions: false
|
|
30445
31270
|
}, options);
|
|
30446
31271
|
_t = format.toLowerCase();
|
|
30447
|
-
_context.n = _t === 'gltf' ? 2 : _t === 'glb' ? 2 : _t === 'obj' ? 4 : _t === 'stl' ? 6 : 8;
|
|
31272
|
+
_context.n = _t === 'gltf' ? 2 : _t === 'glb' ? 2 : _t === 'obj' ? 4 : _t === 'stl' ? 6 : _t === 'ply' ? 8 : _t === 'dae' ? 10 : 12;
|
|
30448
31273
|
break;
|
|
30449
31274
|
case 2:
|
|
30450
31275
|
_context.n = 3;
|
|
30451
31276
|
return this.exportGLTF(object, exportOptions);
|
|
30452
31277
|
case 3:
|
|
30453
31278
|
result = _context.v;
|
|
30454
|
-
return _context.a(3,
|
|
31279
|
+
return _context.a(3, 13);
|
|
30455
31280
|
case 4:
|
|
30456
31281
|
_context.n = 5;
|
|
30457
31282
|
return this.exportOBJ(object, exportOptions);
|
|
30458
31283
|
case 5:
|
|
30459
31284
|
result = _context.v;
|
|
30460
|
-
return _context.a(3,
|
|
31285
|
+
return _context.a(3, 13);
|
|
30461
31286
|
case 6:
|
|
30462
31287
|
_context.n = 7;
|
|
30463
31288
|
return this.exportSTL(object, exportOptions);
|
|
30464
31289
|
case 7:
|
|
30465
31290
|
result = _context.v;
|
|
30466
|
-
return _context.a(3,
|
|
31291
|
+
return _context.a(3, 13);
|
|
30467
31292
|
case 8:
|
|
30468
|
-
|
|
31293
|
+
_context.n = 9;
|
|
31294
|
+
return this.exportPLY(object, exportOptions);
|
|
30469
31295
|
case 9:
|
|
31296
|
+
result = _context.v;
|
|
31297
|
+
return _context.a(3, 13);
|
|
31298
|
+
case 10:
|
|
31299
|
+
_context.n = 11;
|
|
31300
|
+
return this.exportCollada(object, exportOptions);
|
|
31301
|
+
case 11:
|
|
31302
|
+
result = _context.v;
|
|
31303
|
+
return _context.a(3, 13);
|
|
31304
|
+
case 12:
|
|
31305
|
+
throw new Error("Unsupported format: ".concat(format));
|
|
31306
|
+
case 13:
|
|
30470
31307
|
exportTime = performance.now() - startTime;
|
|
30471
31308
|
exportRecord = {
|
|
30472
31309
|
timestamp: new Date().toISOString(),
|
|
@@ -30484,8 +31321,8 @@ var Export = /*#__PURE__*/function () {
|
|
|
30484
31321
|
exportTime: exportTime,
|
|
30485
31322
|
filename: this.generateFilename(object.name || 'model', format)
|
|
30486
31323
|
});
|
|
30487
|
-
case
|
|
30488
|
-
_context.p =
|
|
31324
|
+
case 14:
|
|
31325
|
+
_context.p = 14;
|
|
30489
31326
|
_t2 = _context.v;
|
|
30490
31327
|
_exportTime = performance.now() - startTime;
|
|
30491
31328
|
_exportRecord = {
|
|
@@ -30500,10 +31337,10 @@ var Export = /*#__PURE__*/function () {
|
|
|
30500
31337
|
this.exportHistory.push(_exportRecord);
|
|
30501
31338
|
logger.error("\u274C Failed to export model to ".concat(format.toUpperCase(), ":"), _t2);
|
|
30502
31339
|
throw _t2;
|
|
30503
|
-
case
|
|
31340
|
+
case 15:
|
|
30504
31341
|
return _context.a(2);
|
|
30505
31342
|
}
|
|
30506
|
-
}, _callee, this, [[1,
|
|
31343
|
+
}, _callee, this, [[1, 14]]);
|
|
30507
31344
|
}));
|
|
30508
31345
|
function exportModel(_x, _x2) {
|
|
30509
31346
|
return _exportModel.apply(this, arguments);
|
|
@@ -30628,6 +31465,36 @@ var Export = /*#__PURE__*/function () {
|
|
|
30628
31465
|
}
|
|
30629
31466
|
return exportPLY;
|
|
30630
31467
|
}()
|
|
31468
|
+
/**
|
|
31469
|
+
* Export to Collada (DAE) format
|
|
31470
|
+
* @param {THREE.Object3D} object - Object to export
|
|
31471
|
+
* @param {Object} options - Export options
|
|
31472
|
+
* @returns {Promise<string>} Collada XML string
|
|
31473
|
+
*/
|
|
31474
|
+
)
|
|
31475
|
+
}, {
|
|
31476
|
+
key: "exportCollada",
|
|
31477
|
+
value: (function () {
|
|
31478
|
+
var _exportCollada = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee6(object) {
|
|
31479
|
+
var _this5 = this;
|
|
31480
|
+
var options,
|
|
31481
|
+
_args6 = arguments;
|
|
31482
|
+
return _regenerator().w(function (_context6) {
|
|
31483
|
+
while (1) switch (_context6.n) {
|
|
31484
|
+
case 0:
|
|
31485
|
+
options = _args6.length > 1 && _args6[1] !== undefined ? _args6[1] : {};
|
|
31486
|
+
return _context6.a(2, new Promise(function (resolve) {
|
|
31487
|
+
var result = _this5.exporters.collada.parse(object, options);
|
|
31488
|
+
resolve(result.data);
|
|
31489
|
+
}));
|
|
31490
|
+
}
|
|
31491
|
+
}, _callee6);
|
|
31492
|
+
}));
|
|
31493
|
+
function exportCollada(_x7) {
|
|
31494
|
+
return _exportCollada.apply(this, arguments);
|
|
31495
|
+
}
|
|
31496
|
+
return exportCollada;
|
|
31497
|
+
}()
|
|
30631
31498
|
/**
|
|
30632
31499
|
* Export scene configuration to JSON
|
|
30633
31500
|
* @param {THREE.Scene} scene - Scene to export
|
|
@@ -30670,7 +31537,7 @@ var Export = /*#__PURE__*/function () {
|
|
|
30670
31537
|
}, {
|
|
30671
31538
|
key: "serializeObject",
|
|
30672
31539
|
value: function serializeObject(object) {
|
|
30673
|
-
var
|
|
31540
|
+
var _this6 = this;
|
|
30674
31541
|
var serialized = {
|
|
30675
31542
|
uuid: object.uuid,
|
|
30676
31543
|
name: object.name,
|
|
@@ -30701,7 +31568,7 @@ var Export = /*#__PURE__*/function () {
|
|
|
30701
31568
|
|
|
30702
31569
|
// Recursively serialize children
|
|
30703
31570
|
object.children.forEach(function (child) {
|
|
30704
|
-
serialized.children.push(
|
|
31571
|
+
serialized.children.push(_this6.serializeObject(child));
|
|
30705
31572
|
});
|
|
30706
31573
|
return serialized;
|
|
30707
31574
|
}
|
|
@@ -30874,7 +31741,7 @@ var Export = /*#__PURE__*/function () {
|
|
|
30874
31741
|
}, {
|
|
30875
31742
|
key: "exportToXML",
|
|
30876
31743
|
value: function exportToXML(data) {
|
|
30877
|
-
var
|
|
31744
|
+
var _this7 = this;
|
|
30878
31745
|
var rootElement = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'root';
|
|
30879
31746
|
var xmlHeader = '<?xml version="1.0" encoding="UTF-8"?>\n';
|
|
30880
31747
|
var _objectToXML = function objectToXML(obj) {
|
|
@@ -30893,12 +31760,12 @@ var Export = /*#__PURE__*/function () {
|
|
|
30893
31760
|
if (_typeof(item) === 'object') {
|
|
30894
31761
|
xml += '\n' + _objectToXML(item, indent + 1) + spaces;
|
|
30895
31762
|
} else {
|
|
30896
|
-
xml +=
|
|
31763
|
+
xml += _this7.escapeXML(item);
|
|
30897
31764
|
}
|
|
30898
31765
|
xml += "</".concat(key, ">\n");
|
|
30899
31766
|
});
|
|
30900
31767
|
} else {
|
|
30901
|
-
xml += "".concat(spaces, "<").concat(key, ">").concat(
|
|
31768
|
+
xml += "".concat(spaces, "<").concat(key, ">").concat(_this7.escapeXML(value), "</").concat(key, ">\n");
|
|
30902
31769
|
}
|
|
30903
31770
|
});
|
|
30904
31771
|
return xml;
|
|
@@ -30950,63 +31817,63 @@ var Export = /*#__PURE__*/function () {
|
|
|
30950
31817
|
}, {
|
|
30951
31818
|
key: "exportBatch",
|
|
30952
31819
|
value: (function () {
|
|
30953
|
-
var _exportBatch = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function
|
|
31820
|
+
var _exportBatch = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee7(objects) {
|
|
30954
31821
|
var results, errors, _iterator, _step, item, result, _t3, _t4;
|
|
30955
|
-
return _regenerator().w(function (
|
|
30956
|
-
while (1) switch (
|
|
31822
|
+
return _regenerator().w(function (_context7) {
|
|
31823
|
+
while (1) switch (_context7.n) {
|
|
30957
31824
|
case 0:
|
|
30958
31825
|
logger.info("\uD83D\uDD04 Starting batch export of ".concat(objects.length, " objects..."));
|
|
30959
31826
|
results = [];
|
|
30960
31827
|
errors = [];
|
|
30961
31828
|
_iterator = _createForOfIteratorHelper(objects);
|
|
30962
|
-
|
|
31829
|
+
_context7.p = 1;
|
|
30963
31830
|
_iterator.s();
|
|
30964
31831
|
case 2:
|
|
30965
31832
|
if ((_step = _iterator.n()).done) {
|
|
30966
|
-
|
|
31833
|
+
_context7.n = 7;
|
|
30967
31834
|
break;
|
|
30968
31835
|
}
|
|
30969
31836
|
item = _step.value;
|
|
30970
|
-
|
|
30971
|
-
|
|
31837
|
+
_context7.p = 3;
|
|
31838
|
+
_context7.n = 4;
|
|
30972
31839
|
return this.exportModel(item.object, item.format, item.options);
|
|
30973
31840
|
case 4:
|
|
30974
|
-
result =
|
|
31841
|
+
result = _context7.v;
|
|
30975
31842
|
results.push(result);
|
|
30976
|
-
|
|
31843
|
+
_context7.n = 6;
|
|
30977
31844
|
break;
|
|
30978
31845
|
case 5:
|
|
30979
|
-
|
|
30980
|
-
_t3 =
|
|
31846
|
+
_context7.p = 5;
|
|
31847
|
+
_t3 = _context7.v;
|
|
30981
31848
|
errors.push({
|
|
30982
31849
|
object: item.object.name || 'Unnamed Object',
|
|
30983
31850
|
format: item.format,
|
|
30984
31851
|
error: _t3.message
|
|
30985
31852
|
});
|
|
30986
31853
|
case 6:
|
|
30987
|
-
|
|
31854
|
+
_context7.n = 2;
|
|
30988
31855
|
break;
|
|
30989
31856
|
case 7:
|
|
30990
|
-
|
|
31857
|
+
_context7.n = 9;
|
|
30991
31858
|
break;
|
|
30992
31859
|
case 8:
|
|
30993
|
-
|
|
30994
|
-
_t4 =
|
|
31860
|
+
_context7.p = 8;
|
|
31861
|
+
_t4 = _context7.v;
|
|
30995
31862
|
_iterator.e(_t4);
|
|
30996
31863
|
case 9:
|
|
30997
|
-
|
|
31864
|
+
_context7.p = 9;
|
|
30998
31865
|
_iterator.f();
|
|
30999
|
-
return
|
|
31866
|
+
return _context7.f(9);
|
|
31000
31867
|
case 10:
|
|
31001
31868
|
logger.info("\u2705 Batch export complete: ".concat(results.length, " successful, ").concat(errors.length, " failed"));
|
|
31002
|
-
return
|
|
31869
|
+
return _context7.a(2, {
|
|
31003
31870
|
results: results,
|
|
31004
31871
|
errors: errors
|
|
31005
31872
|
});
|
|
31006
31873
|
}
|
|
31007
|
-
},
|
|
31874
|
+
}, _callee7, this, [[3, 5], [1, 8, 9, 10]]);
|
|
31008
31875
|
}));
|
|
31009
|
-
function exportBatch(
|
|
31876
|
+
function exportBatch(_x8) {
|
|
31010
31877
|
return _exportBatch.apply(this, arguments);
|
|
31011
31878
|
}
|
|
31012
31879
|
return exportBatch;
|
|
@@ -33133,6 +34000,7 @@ exports.SceneExportManager = SceneExportManager;
|
|
|
33133
34000
|
exports.SceneInitializationManager = SceneInitializationManager;
|
|
33134
34001
|
exports.SceneOperationsManager = SceneOperationsManager;
|
|
33135
34002
|
exports.SceneTooltipsManager = SceneTooltipsManager;
|
|
34003
|
+
exports.SceneViewer = SceneViewer;
|
|
33136
34004
|
exports.Testing = testing;
|
|
33137
34005
|
exports.createTransformControls = createTransformControls;
|
|
33138
34006
|
exports.findObjectByHardcodedUuid = findObjectByHardcodedUuid;
|