11import { createApp , ref , watch , onMounted , watchEffect } from 'vue' ;
22import { presets } from './presets.js' ;
3- import * as GCodePreview from 'gcode-preview' ;
3+ import { GCodePreview } from 'gcode-preview' ;
44import { defaultSettings } from './default-settings.js' ;
55import { parseIntOrDefault } from './utils.js' ;
66
@@ -46,23 +46,22 @@ export const app = (window.app = createApp({
4646
4747 // Update UI with current preview settings
4848 const updateUI = async ( ) => {
49+ const { parser, sceneManager, countLayers } = preview ;
4950 const {
50- parser,
51- countLayers,
52- extrusionColor,
5351 topLayerColor,
5452 lastSegmentColor,
5553 buildVolume,
56- backgroundColor,
5754 singleLayerMode,
5855 renderTravel,
5956 travelColor,
6057 renderExtrusion,
6158 lineWidth,
6259 renderTubes,
6360 extrusionWidth,
64- boundingBoxColor
65- } = preview ;
61+ boundingBoxColor,
62+ extrusionColor,
63+ backgroundColor
64+ } = sceneManager ;
6665 const { thumbnails } = parser . metadata ;
6766
6867 // thumbnail.value = thumbnails['220x124']?.src;
@@ -99,7 +98,7 @@ export const app = (window.app = createApp({
9998 } ;
10099 console . debug ( 'app settings:' , currentSettings ) ;
101100 Object . assign ( settings . value , currentSettings ) ;
102- preview . endLayer = countLayers ;
101+ sceneManager . endLayer = countLayers ;
103102
104103 applyDevMode ( enableDevMode . value ) ;
105104 } ;
@@ -117,12 +116,12 @@ export const app = (window.app = createApp({
117116 // preview.clear();
118117 preview . devMode = prevDevMode ;
119118
120- await preview . processGCode ( gcodeStream , { render : false } ) ; // rendering will be done reactively
119+ await preview . processGCodeStream ( gcodeStream , { render : false } ) ; // rendering will be done reactively
121120 } ;
122121
123122 const render = async ( ) => {
124123 if ( loadProgressive . value && preview . job . layers !== null ) {
125- await preview . renderAnimated ( ) ;
124+ await preview . sceneManager . renderAnimated ( ) ;
126125 } else {
127126 preview . render ( ) ;
128127 }
@@ -153,11 +152,11 @@ export const app = (window.app = createApp({
153152 if ( defaultSettings . devMode ) defaultSettings . devMode . statsContainer = statsContainer ( ) ;
154153 preview ?. dispose ( ) ;
155154
156- window [ '_preview' ] = preview = new GCodePreview . init ( options ) ;
155+ window [ '_preview' ] = preview = new GCodePreview ( options ) ;
157156
158157 // resize preview on canvas resize (TODO: move to GCodePreview)
159158 if ( observer ) observer . disconnect ( ) ;
160- observer = new ResizeObserver ( ( ) => preview . resize ( ) ) ;
159+ observer = new ResizeObserver ( ( ) => preview . sceneManager . resize ( ) ) ;
161160 observer . observe ( canvas ) ;
162161
163162 applyDevMode ( enableDevMode . value ) ; // HACK: force dev mode to update UI
@@ -178,39 +177,47 @@ export const app = (window.app = createApp({
178177 await selectPreset ( defaultPreset ) ;
179178
180179 watchEffect ( ( ) => {
181- preview . backgroundColor = settings . value . backgroundColor ;
182-
183- if ( preview . buildVolume && settings . value . drawBuildVolume ) {
184- preview . buildVolume . smallGrid = settings . value . buildVolume . smallGrid ;
185- preview . buildVolume . x = + settings . value . buildVolume . x ;
186- preview . buildVolume . y = + settings . value . buildVolume . y ;
187- preview . buildVolume . z = + settings . value . buildVolume . z ;
180+ if ( ! preview ) return ;
181+ preview . sceneManager . backgroundColor = settings . value . backgroundColor ;
182+
183+ if ( preview . sceneManager . buildVolume && settings . value . drawBuildVolume ) {
184+ preview . sceneManager . buildVolume . smallGrid = settings . value . buildVolume . smallGrid ;
185+ preview . sceneManager . buildVolume . x = + settings . value . buildVolume . x ;
186+ preview . sceneManager . buildVolume . y = + settings . value . buildVolume . y ;
187+ preview . sceneManager . buildVolume . z = + settings . value . buildVolume . z ;
188188 }
189189
190- if ( ! preview . buildVolume && settings . value . drawBuildVolume ) {
191- preview . buildVolume = {
190+ if ( ! preview . sceneManager . buildVolume && settings . value . drawBuildVolume ) {
191+ preview . sceneManager . buildVolume = {
192192 x : + settings . value . buildVolume . x ,
193193 y : + settings . value . buildVolume . y ,
194194 z : + settings . value . buildVolume . z ,
195195 smallGrid : settings . value . buildVolume . smallGrid
196196 } ;
197- } else if ( preview . buildVolume && ! settings . value . drawBuildVolume ) {
198- preview . buildVolume = undefined ;
197+ } else if ( preview . sceneManager . buildVolume && ! settings . value . drawBuildVolume ) {
198+ preview . sceneManager . buildVolume = undefined ;
199199 }
200- preview . boundingBoxColor = drawBoundingBox . value ? ( settings . value . boundingBoxColor ?? 'magenta' ) : undefined ;
200+ preview . sceneManager . boundingBoxColor = drawBoundingBox . value
201+ ? ( settings . value . boundingBoxColor ?? 'magenta' )
202+ : undefined ;
201203 } ) ;
202204
203205 watchEffect ( ( ) => {
204- preview . renderTravel = settings . value . renderTravel ;
205- preview . travelColor = settings . value . travelColor ;
206- preview . lineWidth = + settings . value . lineWidth ;
207-
208- preview . renderExtrusion = settings . value . renderExtrusion ;
209- preview . renderTubes = settings . value . renderTubes ;
210- preview . extrusionWidth = + settings . value . extrusionWidth ;
211-
212- preview . topLayerColor = settings . value . highlightTopLayer ? settings . value . topLayerColor : undefined ;
213- preview . lastSegmentColor = settings . value . highlightLastSegment ? settings . value . lastSegmentColor : undefined ;
206+ if ( ! preview ) return ;
207+ preview . sceneManager . renderTravel = settings . value . renderTravel ;
208+ preview . sceneManager . travelColor = settings . value . travelColor ;
209+ preview . sceneManager . lineWidth = + settings . value . lineWidth ;
210+
211+ preview . sceneManager . renderExtrusion = settings . value . renderExtrusion ;
212+ preview . sceneManager . renderTubes = settings . value . renderTubes ;
213+ preview . sceneManager . extrusionWidth = + settings . value . extrusionWidth ;
214+
215+ preview . sceneManager . topLayerColor = settings . value . highlightTopLayer
216+ ? settings . value . topLayerColor
217+ : undefined ;
218+ preview . sceneManager . lastSegmentColor = settings . value . highlightLastSegment
219+ ? settings . value . lastSegmentColor
220+ : undefined ;
214221
215222 // run render after settings have been applied
216223 // this is needed to prevent reactivity attaching the render function
@@ -220,19 +227,23 @@ export const app = (window.app = createApp({
220227 } ) ;
221228
222229 watchEffect ( ( ) => {
230+ if ( ! preview ) return ;
223231 const startLayer = parseIntOrDefault ( settings . value . startLayer , undefined ) ;
224232 const endLayer = parseIntOrDefault ( settings . value . endLayer , undefined ) ;
225233
226- preview . startLayer = settings . value . enableStartLayer ? startLayer : undefined ;
227- preview . endLayer = settings . value . enableEndLayer ? endLayer : undefined ;
234+ preview . sceneManager . startLayer = settings . value . enableStartLayer ? startLayer : undefined ;
235+ preview . sceneManager . endLayer = settings . value . enableEndLayer ? endLayer : undefined ;
228236 } ) ;
229237
230238 watchEffect ( ( ) => {
231- preview . singleLayerMode = settings . value . singleLayerMode ;
239+ if ( ! preview ) return ;
240+ preview . sceneManager . singleLayerMode = settings . value . singleLayerMode ;
232241 } ) ;
233242
234243 watchEffect ( ( ) => {
235- preview . extrusionColor = settings . value . colors . length === 1 ? settings . value . colors [ 0 ] : settings . value . colors ;
244+ if ( ! preview ) return ;
245+ preview . sceneManager . extrusionColor =
246+ settings . value . colors . length === 1 ? settings . value . colors [ 0 ] : settings . value . colors ;
236247 } ) ;
237248 } ) ;
238249
0 commit comments