@littlecarlito/blorktools 0.50.4 → 0.51.0

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.
Files changed (114) hide show
  1. package/bin/cli.js +69 -0
  2. package/package.json +13 -7
  3. package/src/asset_debugger/axis-indicator/axis-indicator.css +6 -0
  4. package/src/asset_debugger/axis-indicator/axis-indicator.html +20 -0
  5. package/src/asset_debugger/axis-indicator/axis-indicator.js +822 -0
  6. package/src/asset_debugger/debugger-scene/debugger-scene.css +142 -0
  7. package/src/asset_debugger/debugger-scene/debugger-scene.html +80 -0
  8. package/src/asset_debugger/debugger-scene/debugger-scene.js +791 -0
  9. package/src/asset_debugger/header/header.css +73 -0
  10. package/src/asset_debugger/header/header.html +24 -0
  11. package/src/asset_debugger/header/header.js +224 -0
  12. package/src/asset_debugger/index.html +76 -0
  13. package/src/asset_debugger/landing-page/landing-page.css +396 -0
  14. package/src/asset_debugger/landing-page/landing-page.html +81 -0
  15. package/src/asset_debugger/landing-page/landing-page.js +611 -0
  16. package/src/asset_debugger/loading-splash/loading-splash.css +195 -0
  17. package/src/asset_debugger/loading-splash/loading-splash.html +22 -0
  18. package/src/asset_debugger/loading-splash/loading-splash.js +59 -0
  19. package/src/asset_debugger/loading-splash/preview-loading-splash.js +66 -0
  20. package/src/asset_debugger/main.css +14 -0
  21. package/src/asset_debugger/modals/examples-modal/examples-modal.css +41 -0
  22. package/src/asset_debugger/modals/examples-modal/examples-modal.html +18 -0
  23. package/src/asset_debugger/modals/examples-modal/examples-modal.js +111 -0
  24. package/src/asset_debugger/modals/examples-modal/examples.js +125 -0
  25. package/src/asset_debugger/modals/html-editor-modal/html-editor-modal.css +452 -0
  26. package/src/asset_debugger/modals/html-editor-modal/html-editor-modal.html +87 -0
  27. package/src/asset_debugger/modals/html-editor-modal/html-editor-modal.js +675 -0
  28. package/src/asset_debugger/modals/mesh-info-modal/mesh-info-modal.css +219 -0
  29. package/src/asset_debugger/modals/mesh-info-modal/mesh-info-modal.html +20 -0
  30. package/src/asset_debugger/modals/mesh-info-modal/mesh-info-modal.js +548 -0
  31. package/src/asset_debugger/modals/settings-modal/settings-modal.css +103 -0
  32. package/src/asset_debugger/modals/settings-modal/settings-modal.html +158 -0
  33. package/src/asset_debugger/modals/settings-modal/settings-modal.js +475 -0
  34. package/src/asset_debugger/panels/asset-panel/asset-panel.css +263 -0
  35. package/src/asset_debugger/panels/asset-panel/asset-panel.html +123 -0
  36. package/src/asset_debugger/panels/asset-panel/asset-panel.js +136 -0
  37. package/src/asset_debugger/panels/asset-panel/atlas-heading/atlas-heading.css +94 -0
  38. package/src/asset_debugger/panels/asset-panel/atlas-heading/atlas-heading.js +312 -0
  39. package/src/asset_debugger/panels/asset-panel/mesh-heading/mesh-heading.css +129 -0
  40. package/src/asset_debugger/panels/asset-panel/mesh-heading/mesh-heading.js +486 -0
  41. package/src/asset_debugger/panels/asset-panel/rig-heading/rig-heading.css +545 -0
  42. package/src/asset_debugger/panels/asset-panel/rig-heading/rig-heading.js +538 -0
  43. package/src/asset_debugger/panels/asset-panel/uv-heading/uv-heading.css +70 -0
  44. package/src/asset_debugger/panels/asset-panel/uv-heading/uv-heading.js +586 -0
  45. package/src/asset_debugger/panels/world-panel/world-panel.css +364 -0
  46. package/src/asset_debugger/panels/world-panel/world-panel.html +173 -0
  47. package/src/asset_debugger/panels/world-panel/world-panel.js +1891 -0
  48. package/src/asset_debugger/router.js +190 -0
  49. package/src/asset_debugger/util/animation/playback/animation-playback-controller.js +150 -0
  50. package/src/asset_debugger/util/animation/playback/animation-preview-controller.js +316 -0
  51. package/src/asset_debugger/util/animation/playback/css3d-bounce-controller.js +400 -0
  52. package/src/asset_debugger/util/animation/playback/css3d-reversal-controller.js +821 -0
  53. package/src/asset_debugger/util/animation/render/css3d-prerender-controller.js +696 -0
  54. package/src/asset_debugger/util/animation/render/debug-texture-factory.js +0 -0
  55. package/src/asset_debugger/util/animation/render/iframe2texture-render-controller.js +199 -0
  56. package/src/asset_debugger/util/animation/render/image2texture-prerender-controller.js +461 -0
  57. package/src/asset_debugger/util/animation/render/pbr-material-factory.js +82 -0
  58. package/src/asset_debugger/util/common.css +280 -0
  59. package/src/asset_debugger/util/data/animation-classifier.js +323 -0
  60. package/src/asset_debugger/util/data/duplicate-handler.js +20 -0
  61. package/src/asset_debugger/util/data/glb-buffer-manager.js +407 -0
  62. package/src/asset_debugger/util/data/glb-classifier.js +290 -0
  63. package/src/asset_debugger/util/data/html-formatter.js +76 -0
  64. package/src/asset_debugger/util/data/html-linter.js +276 -0
  65. package/src/asset_debugger/util/data/localstorage-manager.js +265 -0
  66. package/src/asset_debugger/util/data/mesh-html-manager.js +295 -0
  67. package/src/asset_debugger/util/data/string-serder.js +303 -0
  68. package/src/asset_debugger/util/data/texture-classifier.js +663 -0
  69. package/src/asset_debugger/util/data/upload/background-file-handler.js +292 -0
  70. package/src/asset_debugger/util/data/upload/dropzone-preview-controller.js +396 -0
  71. package/src/asset_debugger/util/data/upload/file-upload-manager.js +495 -0
  72. package/src/asset_debugger/util/data/upload/glb-file-handler.js +36 -0
  73. package/src/asset_debugger/util/data/upload/glb-preview-controller.js +317 -0
  74. package/src/asset_debugger/util/data/upload/lighting-file-handler.js +194 -0
  75. package/src/asset_debugger/util/data/upload/model-file-manager.js +104 -0
  76. package/src/asset_debugger/util/data/upload/texture-file-handler.js +166 -0
  77. package/src/asset_debugger/util/data/upload/zip-handler.js +686 -0
  78. package/src/asset_debugger/util/loaders/html2canvas-loader.js +107 -0
  79. package/src/asset_debugger/util/rig/bone-kinematics.js +403 -0
  80. package/src/asset_debugger/util/rig/rig-constraint-manager.js +618 -0
  81. package/src/asset_debugger/util/rig/rig-controller.js +612 -0
  82. package/src/asset_debugger/util/rig/rig-factory.js +628 -0
  83. package/src/asset_debugger/util/rig/rig-handle-factory.js +46 -0
  84. package/src/asset_debugger/util/rig/rig-label-factory.js +441 -0
  85. package/src/asset_debugger/util/rig/rig-mouse-handler.js +377 -0
  86. package/src/asset_debugger/util/rig/rig-state-manager.js +175 -0
  87. package/src/asset_debugger/util/rig/rig-tooltip-manager.js +267 -0
  88. package/src/asset_debugger/util/rig/rig-ui-factory.js +700 -0
  89. package/src/asset_debugger/util/scene/background-manager.js +284 -0
  90. package/src/asset_debugger/util/scene/camera-controller.js +243 -0
  91. package/src/asset_debugger/util/scene/css3d-debug-controller.js +406 -0
  92. package/src/asset_debugger/util/scene/css3d-frame-factory.js +113 -0
  93. package/src/asset_debugger/util/scene/css3d-scene-manager.js +529 -0
  94. package/src/asset_debugger/util/scene/glb-controller.js +208 -0
  95. package/src/asset_debugger/util/scene/lighting-manager.js +690 -0
  96. package/src/asset_debugger/util/scene/threejs-model-manager.js +437 -0
  97. package/src/asset_debugger/util/scene/threejs-preview-manager.js +207 -0
  98. package/src/asset_debugger/util/scene/threejs-preview-setup.js +478 -0
  99. package/src/asset_debugger/util/scene/threejs-scene-controller.js +286 -0
  100. package/src/asset_debugger/util/scene/ui-manager.js +107 -0
  101. package/src/asset_debugger/util/state/animation-state.js +128 -0
  102. package/src/asset_debugger/util/state/css3d-state.js +83 -0
  103. package/src/asset_debugger/util/state/glb-preview-state.js +31 -0
  104. package/src/asset_debugger/util/state/log-util.js +197 -0
  105. package/src/asset_debugger/util/state/scene-state.js +452 -0
  106. package/src/asset_debugger/util/state/threejs-state.js +54 -0
  107. package/src/asset_debugger/util/workers/lighting-worker.js +61 -0
  108. package/src/asset_debugger/util/workers/model-worker.js +109 -0
  109. package/src/asset_debugger/util/workers/texture-worker.js +54 -0
  110. package/src/asset_debugger/util/workers/worker-manager.js +212 -0
  111. package/src/asset_debugger/widgets/mesh-info-widget.js +280 -0
  112. package/src/index.html +261 -0
  113. package/src/index.js +8 -0
  114. package/vite.config.js +66 -0
@@ -0,0 +1,364 @@
1
+ /* World Panel Styles */
2
+
3
+ .lighting-controls {
4
+ display: flex;
5
+ flex-direction: column;
6
+ gap: 10px;
7
+ width: 100%;
8
+ max-width: 100%;
9
+ box-sizing: border-box;
10
+ }
11
+
12
+ /* All content containers should be visible without scrollbars */
13
+ .lighting-status,
14
+ .lighting-data-info,
15
+ .metadata-content,
16
+ .background-status,
17
+ .background-data-info,
18
+ .image-container {
19
+ overflow: visible !important;
20
+ }
21
+
22
+ /* Section header styles */
23
+ .section-header {
24
+ padding: 4px 0;
25
+ margin-bottom: 6px;
26
+ }
27
+
28
+ /* Main section headers (Background and Lighting) */
29
+ .world-section > .section-header h3.metadata-header {
30
+ margin: 0;
31
+ font-size: 1.1em;
32
+ color: #4CAF50; /* Terminal green from theme */
33
+ font-weight: 500;
34
+ text-shadow: 0 0 5px rgba(76, 175, 80, 0.3);
35
+ }
36
+
37
+ /* Main section collapse indicators */
38
+ .world-section > .section-header .collapse-indicator {
39
+ color: #4CAF50; /* Match header color */
40
+ font-weight: 500;
41
+ }
42
+
43
+ /* Subheaders remain gray for contrast */
44
+ .section-content .metadata-header {
45
+ color: #aaa;
46
+ }
47
+
48
+ .section-content {
49
+ padding: 0 2px;
50
+ }
51
+
52
+ /* Section divider styles - reduce margins to fix spacing */
53
+ .section-divider {
54
+ height: 1px;
55
+ background-color: #333;
56
+ margin: 4px 0; /* Reduced from 8px */
57
+ width: 100%;
58
+ }
59
+
60
+ /* First section (Background) should have less bottom padding */
61
+ .world-section:first-child {
62
+ margin-bottom: 0;
63
+ padding-bottom: 0;
64
+ }
65
+
66
+ /* Remove extra margin on second section */
67
+ .world-section:last-child {
68
+ margin-top: 0;
69
+ }
70
+
71
+ /* Remove any underlines that might be appearing */
72
+ .world-section .section-header,
73
+ .world-section .metadata-header,
74
+ .world-section h3 {
75
+ border-bottom: none;
76
+ text-decoration: none;
77
+ box-shadow: none;
78
+ }
79
+
80
+ /* HDR toggle styles */
81
+ .hdr-toggle-container {
82
+ display: flex;
83
+ align-items: center;
84
+ gap: 8px;
85
+ position: relative;
86
+ z-index: 2; /* Ensure the container appears above other elements */
87
+ }
88
+
89
+ .hdr-toggle-checkbox {
90
+ appearance: none;
91
+ -webkit-appearance: none;
92
+ width: 16px;
93
+ height: 16px;
94
+ border: 1px solid #444;
95
+ border-radius: 3px;
96
+ background-color: #2a2a2a;
97
+ cursor: pointer;
98
+ position: relative;
99
+ margin: 0;
100
+ z-index: 3; /* Higher z-index for the checkbox */
101
+ }
102
+
103
+ .hdr-toggle-checkbox:checked {
104
+ background-color: #0088ff;
105
+ border-color: #0088ff;
106
+ }
107
+
108
+ .hdr-toggle-checkbox:checked::after {
109
+ content: '✓';
110
+ position: absolute;
111
+ color: white;
112
+ font-size: 12px;
113
+ top: 0;
114
+ left: 3px;
115
+ }
116
+
117
+ .hdr-toggle-checkbox:hover {
118
+ border-color: #0088ff;
119
+ }
120
+
121
+ /* Control groups and elements */
122
+ .control-group {
123
+ display: flex;
124
+ flex-direction: column;
125
+ width: 100%;
126
+ gap: 4px;
127
+ }
128
+
129
+ /* Default state for different lighting controls */
130
+ .exposure-control {
131
+ display: none; /* Hide by default, only shown with HDR/EXR */
132
+ }
133
+
134
+ .label-container {
135
+ display: flex;
136
+ justify-content: space-between;
137
+ align-items: center;
138
+ }
139
+
140
+ .control-group label {
141
+ color: #aaa;
142
+ font-size: 0.9em;
143
+ }
144
+
145
+ .control-group input[type="range"] {
146
+ width: 100%;
147
+ height: 6px;
148
+ }
149
+
150
+ /* Custom slider styling */
151
+ input[type="range"] {
152
+ -webkit-appearance: none;
153
+ appearance: none;
154
+ background: #333;
155
+ height: 6px;
156
+ border-radius: 3px;
157
+ outline: none;
158
+ }
159
+
160
+ input[type="range"]::-webkit-slider-thumb {
161
+ -webkit-appearance: none;
162
+ appearance: none;
163
+ width: 12px;
164
+ height: 12px;
165
+ border-radius: 50%;
166
+ background: #0088ff;
167
+ cursor: pointer;
168
+ border: none;
169
+ }
170
+
171
+ input[type="range"]::-moz-range-thumb {
172
+ width: 12px;
173
+ height: 12px;
174
+ border-radius: 50%;
175
+ background: #0088ff;
176
+ cursor: pointer;
177
+ border: none;
178
+ }
179
+
180
+ .value-display {
181
+ min-width: 24px;
182
+ text-align: right;
183
+ color: #ddd;
184
+ font-size: 0.9em;
185
+ }
186
+
187
+ .buttons {
188
+ margin-top: 10px;
189
+ flex-direction: row;
190
+ justify-content: center;
191
+ }
192
+
193
+ .control-button {
194
+ padding: 6px 12px;
195
+ background-color: #2a2a2a;
196
+ border: 1px solid #444;
197
+ color: #ddd;
198
+ border-radius: 4px;
199
+ cursor: pointer;
200
+ }
201
+
202
+ .control-button:hover {
203
+ background-color: #333;
204
+ }
205
+
206
+ .lighting-status,
207
+ .background-status {
208
+ box-sizing: border-box;
209
+ width: 100%;
210
+ }
211
+
212
+ .no-data-message,
213
+ .no-background-message {
214
+ text-align: center;
215
+ color: #777;
216
+ font-size: 0.9em;
217
+ font-style: italic;
218
+ }
219
+
220
+ .lighting-data-info,
221
+ .background-data-info {
222
+ margin-top: 8px;
223
+ width: 100%;
224
+ box-sizing: border-box;
225
+ }
226
+
227
+
228
+
229
+ .metadata-header {
230
+ font-size: 1em;
231
+ color: #aaa;
232
+ margin: 0;
233
+ font-weight: normal;
234
+ cursor: pointer; /* Add pointer cursor to make it clear it's clickable */
235
+ }
236
+
237
+ .image-container {
238
+ position: relative;
239
+ width: 100%;
240
+ min-height: 260px;
241
+ display: flex;
242
+ justify-content: center;
243
+ align-items: center;
244
+ margin-bottom: 10px;
245
+ overflow: visible !important;
246
+ }
247
+
248
+ .hdr-preview-canvas {
249
+ max-width: 100%;
250
+ max-height: 260px;
251
+ width: 100%;
252
+ height: auto;
253
+ object-fit: contain;
254
+ display: block;
255
+ background-color: #222;
256
+ border: 1px solid #444;
257
+ }
258
+
259
+ .lighting-metadata {
260
+ width: 100%;
261
+ font-size: 0.9em;
262
+ color: #aaa;
263
+ table-layout: fixed;
264
+ }
265
+
266
+ .lighting-metadata td {
267
+ padding: 3px 0;
268
+ }
269
+
270
+ .lighting-metadata td:first-child {
271
+ width: 110px;
272
+ color: #777;
273
+ }
274
+
275
+ .image-preview-content {
276
+ margin-top: 5px;
277
+ }
278
+
279
+ .lighting-options-content {
280
+ padding-top: 10px;
281
+ }
282
+
283
+ /* Background radio buttons styles */
284
+ .bg-options-container {
285
+ display: flex;
286
+ flex-direction: column;
287
+ gap: 12px;
288
+ margin-bottom: 16px;
289
+ }
290
+
291
+ .bg-option {
292
+ display: flex;
293
+ align-items: center;
294
+ gap: 6px;
295
+ }
296
+
297
+ .bg-radio-container {
298
+ display: flex;
299
+ align-items: center;
300
+ gap: 8px;
301
+ position: relative;
302
+ z-index: 2; /* Ensure the container appears above other elements */
303
+ }
304
+
305
+ .bg-option input[type="radio"],
306
+ .bg-radio-container input[type="radio"] {
307
+ appearance: none;
308
+ -webkit-appearance: none;
309
+ width: 16px;
310
+ height: 16px;
311
+ border: 1px solid #444;
312
+ border-radius: 50%;
313
+ background-color: #2a2a2a;
314
+ cursor: pointer;
315
+ position: relative;
316
+ margin: 0;
317
+ z-index: 3; /* Higher z-index for the radio button */
318
+ }
319
+
320
+ .bg-option input[type="radio"]:checked,
321
+ .bg-radio-container input[type="radio"]:checked {
322
+ border-color: #0088ff;
323
+ }
324
+
325
+ .bg-option input[type="radio"]:checked::after,
326
+ .bg-radio-container input[type="radio"]:checked::after {
327
+ content: '';
328
+ position: absolute;
329
+ width: 10px;
330
+ height: 10px;
331
+ border-radius: 50%;
332
+ background-color: #0088ff;
333
+ top: 50%;
334
+ left: 50%;
335
+ transform: translate(-50%, -50%);
336
+ }
337
+
338
+ .bg-option input[type="radio"]:hover,
339
+ .bg-radio-container input[type="radio"]:hover {
340
+ border-color: #0088ff;
341
+ }
342
+
343
+ .bg-option label {
344
+ color: #aaa;
345
+ font-size: 1em;
346
+ cursor: pointer;
347
+ }
348
+
349
+ /* Preview canvases */
350
+ .bg-preview-canvas {
351
+ max-width: 100%;
352
+ max-height: 260px;
353
+ width: 100%;
354
+ height: auto;
355
+ object-fit: contain;
356
+ display: block;
357
+ background-color: #222;
358
+ border: 1px solid #444;
359
+ }
360
+
361
+ /* Update content section headers to have some top margin */
362
+ .bg-content-header {
363
+ margin-top: 10px;
364
+ }
@@ -0,0 +1,173 @@
1
+ <!-- World Panel Component -->
2
+ <link rel="stylesheet" href="/asset_debugger/panels/world-panel/world-panel.css">
3
+ <div id="world-tab" class="tab-content">
4
+ <div class="world-section">
5
+ <div class="collapsible-header section-header">
6
+ <h3 class="metadata-header">Background</h3>
7
+ <span class="collapse-indicator">[+]</span>
8
+ </div>
9
+ <div class="metadata-content section-content" style="display: none;">
10
+ <div class="background-status">
11
+ <div class="no-background-message">
12
+ No Background Data Found
13
+ </div>
14
+
15
+ <div class="background-data-info" style="display: none;">
16
+ <div class="bg-options-container">
17
+ <div class="bg-option" id="none-option">
18
+ <input type="radio" id="bg-none" name="bg-option" value="none" checked>
19
+ <label for="bg-none">None</label>
20
+ </div>
21
+
22
+ <div class="bg-option" id="background-option">
23
+ <input type="radio" id="bg-background" name="bg-option" value="background">
24
+ <label for="bg-background">Background Image</label>
25
+ </div>
26
+
27
+ <div class="bg-option" id="hdr-option">
28
+ <input type="radio" id="bg-hdr" name="bg-option" value="hdr">
29
+ <label for="bg-hdr">EXR/HDR Image</label>
30
+ </div>
31
+ </div>
32
+
33
+ <!-- Background Image Content -->
34
+ <div class="collapsible-header bg-content-header" id="bg-image-section">
35
+ <h4 class="metadata-header">Background Image</h4>
36
+ <span class="collapse-indicator">[+]</span>
37
+ </div>
38
+ <div class="metadata-content" style="display: none;">
39
+ <div class="image-container">
40
+ <canvas id="bg-preview-canvas" class="bg-preview-canvas" width="260" height="260"></canvas>
41
+ <div id="no-bg-image-message" class="no-image-message-container">
42
+ No background image data available.
43
+ </div>
44
+ </div>
45
+ <table class="lighting-metadata">
46
+ <tr>
47
+ <td>File:</td>
48
+ <td id="bg-filename">-</td>
49
+ </tr>
50
+ <tr>
51
+ <td>Type:</td>
52
+ <td id="bg-type">-</td>
53
+ </tr>
54
+ <tr>
55
+ <td>Resolution:</td>
56
+ <td id="bg-resolution">-</td>
57
+ </tr>
58
+ <tr>
59
+ <td>Size:</td>
60
+ <td id="bg-size">-</td>
61
+ </tr>
62
+ </table>
63
+ </div>
64
+
65
+ <!-- HDR/EXR Image Content -->
66
+ <div class="collapsible-header bg-content-header" id="hdr-image-section">
67
+ <h4 class="metadata-header">EXR/HDR Image</h4>
68
+ <span class="collapse-indicator">[+]</span>
69
+ </div>
70
+ <div class="metadata-content" style="display: none;">
71
+ <div class="image-container">
72
+ <canvas id="hdr-preview-canvas" class="hdr-preview-canvas" width="260" height="260"></canvas>
73
+ <div id="no-image-message" class="no-image-message-container">
74
+ No image data available or could not be processed.
75
+ </div>
76
+ </div>
77
+ </div>
78
+ </div>
79
+ </div>
80
+ </div>
81
+ </div>
82
+
83
+ <div class="section-divider"></div>
84
+
85
+ <div class="world-section">
86
+ <div class="collapsible-header section-header">
87
+ <h3 class="metadata-header">Lighting</h3>
88
+ <span class="collapse-indicator">[+]</span>
89
+ </div>
90
+ <div class="metadata-content section-content" style="display: none;">
91
+ <div class="world-info lighting-controls">
92
+ <div class="collapsible-header lighting-options-header">
93
+ <h4 class="metadata-header">Lighting Options</h4>
94
+ <span class="collapse-indicator">[+]</span>
95
+ </div>
96
+ <div class="metadata-content lighting-options-content" style="display: none;">
97
+ <div class="control-group ambient-control">
98
+ <div class="label-container">
99
+ <label for="ambient-light-intensity">Ambient:</label>
100
+ <span class="value-display">0.5</span>
101
+ </div>
102
+ <input type="range" id="ambient-light-intensity" min="0" max="2" step="0.1" value="0.5" />
103
+ </div>
104
+
105
+ <div class="control-group directional-control">
106
+ <div class="label-container">
107
+ <label for="directional-light-intensity">Directional:</label>
108
+ <span class="value-display">1.0</span>
109
+ </div>
110
+ <input type="range" id="directional-light-intensity" min="0" max="2" step="0.1" value="1.0" />
111
+ </div>
112
+
113
+ <div class="control-group exposure-control">
114
+ <div class="label-container">
115
+ <label for="exposure-value">Exposure:</label>
116
+ <span class="value-display">1.0</span>
117
+ </div>
118
+ <input type="range" id="exposure-value" min="0" max="2" step="0.1" value="1.0" />
119
+ </div>
120
+
121
+ <div class="control-group buttons">
122
+ <button id="reset-lighting" class="control-button">Reset Lighting</button>
123
+ </div>
124
+ </div>
125
+
126
+ <div class="lighting-status">
127
+ <div class="no-data-message">
128
+ No Lighting Data; Using Default Lighting
129
+ </div>
130
+
131
+ <div class="lighting-data-info" style="display: none;">
132
+ <div class="collapsible-header">
133
+ <h4 class="metadata-header">Lighting File Data</h4>
134
+ <span class="collapse-indicator">[+]</span>
135
+ </div>
136
+ <div class="metadata-content" style="display: none;">
137
+ <table class="lighting-metadata">
138
+ <tr>
139
+ <td>File:</td>
140
+ <td id="lighting-filename">-</td>
141
+ </tr>
142
+ <tr>
143
+ <td>Type:</td>
144
+ <td id="lighting-type">-</td>
145
+ </tr>
146
+ <tr>
147
+ <td>Resolution:</td>
148
+ <td id="lighting-resolution">-</td>
149
+ </tr>
150
+ <tr>
151
+ <td>Size:</td>
152
+ <td id="lighting-size">-</td>
153
+ </tr>
154
+ <tr>
155
+ <td>Dynamic Range:</td>
156
+ <td id="lighting-range">-</td>
157
+ </tr>
158
+ <tr>
159
+ <td>Max Luminance:</td>
160
+ <td id="lighting-luminance">-</td>
161
+ </tr>
162
+ <tr>
163
+ <td>Software:</td>
164
+ <td id="lighting-software">-</td>
165
+ </tr>
166
+ </table>
167
+ </div>
168
+ </div>
169
+ </div>
170
+ </div>
171
+ </div>
172
+ </div>
173
+ </div>