You've already forked Nitro_Render_V3
mirror of
https://github.com/duckietm/Nitro_Render_V3.git
synced 2026-06-19 23:16:20 +00:00
Align with Pixi v8: Filter[] union, WebGLRenderer narrow, ImageLike
Four sites where Pixi v8's stricter typing tripped tsgo: - AvatarImage: container.filters is typed as 'readonly Filter[] | null' in v8 (no longer a single-Filter union). The old fallback branch 'else container.filters = [container.filters, …]' tried to treat a readonly array as a single Filter; collapsed to the array-spread path which now covers both undefined and non-empty cases. Added Filter to the pixi.js import. - FurnitureBadgeDisplayVisualization.updateSprite() had a 4-arg override (sprite, asset, scale, layerId) of the parent's 2-arg signature (scale, layerId). The sprite/asset were never used from the parameters — the body only mutated 'sprite'. Refactored to fetch the sprite via this.getSprite(layerId) inside the override body so the signature matches the base. - ExtendedSprite: 'renderer.gl' / 'glRenderTarget.resolveTargetFramebuffer' exist only on WebGLRenderer / GlRenderTarget (not the WebGPU variants). The runtime check 'renderer.type === RendererType.WEBGL' guarantees this; cast at the boundary to satisfy the typechecker. - TextureUtils.generateImage: Pixi v8's Extractor.image() returns the union ImageLike (HTMLCanvasElement | HTMLImageElement); the public signature promises HTMLImageElement. Cast at return — the Pixi default backend returns HTMLImageElement here.
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
import { AvatarAction, AvatarDirectionAngle, AvatarScaleType, AvatarSetType, IActiveActionData, IAnimationLayerData, IAvatarDataContainer, IAvatarEffectListener, IAvatarFigureContainer, IAvatarImage, IPartColor, ISpriteDataContainer } from '@nitrots/api';
|
||||
import { AvatarAction, AvatarDirectionAngle, AvatarScaleType, AvatarSetType, IActiveActionData, IAnimationLayerData, IAvatarDataContainer, IAvatarEffectListener, IAvatarFigureContainer, IAvatarImage, IGraphicAsset, IPartColor, ISpriteDataContainer } from '@nitrots/api';
|
||||
import { GetRenderer, GetTexturePool, GetTickerTime, PaletteMapFilter, TextureUtils } from '@nitrots/utils';
|
||||
import { ColorMatrixFilter, Container, RenderTexture, Sprite, Texture } from 'pixi.js';
|
||||
import { ColorMatrixFilter, Container, Filter, RenderTexture, Sprite, Texture } from 'pixi.js';
|
||||
import { AvatarFigureContainer } from './AvatarFigureContainer';
|
||||
import { AvatarStructure } from './AvatarStructure';
|
||||
import { EffectAssetDownloadManager } from './EffectAssetDownloadManager';
|
||||
@@ -243,8 +243,7 @@ export class AvatarImage implements IAvatarImage, IAvatarEffectListener
|
||||
if(this._avatarSpriteData.colorTransform)
|
||||
{
|
||||
if(container.filters === undefined || container.filters === null) container.filters = [ this._avatarSpriteData.colorTransform ];
|
||||
else if(Array.isArray(container.filters)) container.filters = [ ...container.filters, this._avatarSpriteData.colorTransform ];
|
||||
else container.filters = [ container.filters, this._avatarSpriteData.colorTransform ];
|
||||
else container.filters = [ ...(container.filters as readonly Filter[]), this._avatarSpriteData.colorTransform ];
|
||||
}
|
||||
|
||||
if(this._avatarSpriteData.paletteIsGrayscale)
|
||||
@@ -257,8 +256,7 @@ export class AvatarImage implements IAvatarImage, IAvatarEffectListener
|
||||
});
|
||||
|
||||
if(container.filters === undefined || container.filters === null) container.filters = [ paletteMapFilter ];
|
||||
else if(Array.isArray(container.filters)) container.filters = [ ...container.filters, paletteMapFilter ];
|
||||
else container.filters = [ container.filters, paletteMapFilter ];
|
||||
else container.filters = [ ...(container.filters as readonly Filter[]), paletteMapFilter ];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -766,8 +764,7 @@ export class AvatarImage implements IAvatarImage, IAvatarEffectListener
|
||||
];
|
||||
|
||||
if(container.filters === undefined || container.filters === null) container.filters = [ filter ];
|
||||
else if(Array.isArray(container.filters)) container.filters = [ ...container.filters, filter ];
|
||||
else container.filters = [ container.filters, filter ];
|
||||
else container.filters = [ ...(container.filters as readonly Filter[]), filter ];
|
||||
|
||||
return container;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user