@lightningjs/renderer 2.9.0-beta4 → 2.9.1

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 (28) hide show
  1. package/dist/src/core/CoreNode.d.ts +5 -1
  2. package/dist/src/core/CoreNode.js +15 -5
  3. package/dist/src/core/CoreNode.js.map +1 -1
  4. package/dist/src/core/CoreTextureManager.d.ts +24 -0
  5. package/dist/src/core/CoreTextureManager.js.map +1 -1
  6. package/dist/src/core/text-rendering/font-face-types/WebTrFontFace.js +7 -3
  7. package/dist/src/core/text-rendering/font-face-types/WebTrFontFace.js.map +1 -1
  8. package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.js +7 -0
  9. package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.js.map +1 -1
  10. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.js +5 -1
  11. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.js.map +1 -1
  12. package/dist/src/core/textures/ImageTexture.js +1 -1
  13. package/dist/src/core/textures/SubTexture.d.ts +1 -0
  14. package/dist/src/core/textures/SubTexture.js +7 -0
  15. package/dist/src/core/textures/SubTexture.js.map +1 -1
  16. package/dist/src/core/textures/Texture.d.ts +9 -0
  17. package/dist/src/core/textures/Texture.js +23 -13
  18. package/dist/src/core/textures/Texture.js.map +1 -1
  19. package/dist/tsconfig.dist.tsbuildinfo +1 -1
  20. package/package.json +1 -1
  21. package/src/core/CoreNode.ts +27 -5
  22. package/src/core/CoreTextureManager.ts +26 -0
  23. package/src/core/text-rendering/font-face-types/WebTrFontFace.ts +8 -3
  24. package/src/core/text-rendering/renderers/LightningTextTextureRenderer.ts +10 -0
  25. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.ts +6 -1
  26. package/src/core/textures/ImageTexture.ts +1 -1
  27. package/src/core/textures/SubTexture.ts +8 -0
  28. package/src/core/textures/Texture.ts +27 -15
@@ -212,11 +212,7 @@ export abstract class Texture extends EventEmitter {
212
212
  (this.renderable as boolean) = true;
213
213
  (this.lastRenderableChangeTime as number) = this.txManager.frameTime;
214
214
  this.onChangeIsRenderable?.(true);
215
-
216
- // Check if the texture needs to be added to the loading queue
217
- if (this.state === 'freed' || this.state === 'initial') {
218
- this.txManager.loadTexture(this);
219
- }
215
+ this.load();
220
216
  }
221
217
  } else {
222
218
  this.renderableOwners.delete(owner);
@@ -229,6 +225,20 @@ export abstract class Texture extends EventEmitter {
229
225
  }
230
226
  }
231
227
 
228
+ load(): void {
229
+ if (this.sourceState === 'loaded' && this.coreCtxState === 'freed') {
230
+ // we need to load the texture data to the gpu
231
+ this.txManager.enqueueUploadTexture(this);
232
+ return;
233
+ }
234
+
235
+ if (this.state === 'loading' || this.state === 'loaded') {
236
+ return;
237
+ }
238
+
239
+ this.txManager.loadTexture(this);
240
+ }
241
+
232
242
  /**
233
243
  * Event called when the Texture becomes renderable or unrenderable.
234
244
  *
@@ -262,10 +272,18 @@ export abstract class Texture extends EventEmitter {
262
272
  */
263
273
  free(): void {
264
274
  this.ctxTexture?.free();
265
- if (this.textureData !== null) {
266
- this.textureData = null;
267
- this.setSourceState('freed');
268
- }
275
+ }
276
+
277
+ /**
278
+ * Free the source texture data for this Texture.
279
+ *
280
+ * @remarks
281
+ * The texture data is the source data that is used to populate the CoreContextTexture.
282
+ * e.g. ImageData that is downloaded from a URL.
283
+ */
284
+ freeTextureData(): void {
285
+ this.textureData = null;
286
+ this.setSourceState('freed');
269
287
  }
270
288
 
271
289
  private setState(
@@ -338,12 +356,6 @@ export abstract class Texture extends EventEmitter {
338
356
  } else if (sourceState === 'loaded' && ctxState === 'loaded') {
339
357
  newState = 'loaded';
340
358
  payload = this.dimensions; // Dimensions set by the source
341
- } else if (
342
- (sourceState === 'loaded' && ctxState === 'freed') ||
343
- (ctxState === 'loaded' && sourceState === 'freed')
344
- ) {
345
- // If one is loaded and the other is freed, then we are in a loading state
346
- newState = 'loading';
347
359
  } else {
348
360
  newState = 'freed';
349
361
  }