mirror of
https://github.com/billsonnn/nitro-renderer.git
synced 2025-02-18 19:02:35 +01:00
Make some TextureUtilities async
This commit is contained in:
parent
02f698f8a9
commit
ef7dfe9bb8
@ -1,7 +1,5 @@
|
||||
import { Resource, Texture } from '@pixi/core';
|
||||
import { Rectangle } from '@pixi/math';
|
||||
import { Sprite } from '@pixi/sprite';
|
||||
import { TextureUtils } from '../../pixi-proxy';
|
||||
import { IGraphicAsset } from './IGraphicAsset';
|
||||
|
||||
export class GraphicAsset implements IGraphicAsset
|
||||
@ -66,11 +64,6 @@ export class GraphicAsset implements IGraphicAsset
|
||||
this._initialized = true;
|
||||
}
|
||||
|
||||
public getImageUrl(): string
|
||||
{
|
||||
return TextureUtils.generateImageUrl(new Sprite(this._texture));
|
||||
}
|
||||
|
||||
public get name(): string
|
||||
{
|
||||
return this._name;
|
||||
|
@ -2,8 +2,8 @@ import { RenderTexture } from '@pixi/core';
|
||||
import { Sprite } from '@pixi/sprite';
|
||||
import { IGraphicAsset } from '../../asset';
|
||||
import { IDisposable } from '../../common';
|
||||
import { IAnimationLayerData, IAvatarDataContainer, ISpriteDataContainer } from './animation';
|
||||
import { IAvatarFigureContainer } from './IAvatarFigureContainer';
|
||||
import { IAnimationLayerData, IAvatarDataContainer, ISpriteDataContainer } from './animation';
|
||||
import { IPartColor } from './structure';
|
||||
|
||||
export interface IAvatarImage extends IDisposable
|
||||
@ -17,7 +17,7 @@ export interface IAvatarImage extends IDisposable
|
||||
getLayerData(_arg_1: ISpriteDataContainer): IAnimationLayerData;
|
||||
getImage(setType: string, hightlight: boolean, scale?: number, cache?: boolean): RenderTexture;
|
||||
getImageAsSprite(setType: string, scale?: number): Sprite;
|
||||
getCroppedImage(setType: string, scale?: number): HTMLImageElement;
|
||||
getCroppedImage(setType: string, scale?: number): Promise<HTMLImageElement>;
|
||||
getAsset(_arg_1: string): IGraphicAsset;
|
||||
getDirection(): number;
|
||||
getFigure(): IAvatarFigureContainer;
|
||||
|
@ -6,7 +6,7 @@ import { IRoomCameraWidgetSelectedEffect } from './IRoomCameraWidgetSelectedEffe
|
||||
export interface IRoomCameraWidgetManager
|
||||
{
|
||||
init(): void;
|
||||
applyEffects(texture: Texture<Resource>, selectedEffects: IRoomCameraWidgetSelectedEffect[], isZoomed: boolean): HTMLImageElement;
|
||||
applyEffects(texture: Texture<Resource>, selectedEffects: IRoomCameraWidgetSelectedEffect[], isZoomed: boolean): Promise<HTMLImageElement>;
|
||||
events: IEventDispatcher;
|
||||
effects: Map<string, IRoomCameraWidgetEffect>;
|
||||
isLoaded: boolean;
|
||||
|
@ -5,5 +5,5 @@ export interface IImageResult
|
||||
id: number;
|
||||
data: RenderTexture;
|
||||
image: HTMLImageElement;
|
||||
getImage(): HTMLImageElement;
|
||||
getImage(): Promise<HTMLImageElement>;
|
||||
}
|
||||
|
@ -84,7 +84,7 @@ export interface IRoomEngine extends INitroManager
|
||||
processRoomObjectPlacement(placementSource: string, id: number, category: number, typeId: number, legacyString?: string, stuffData?: IObjectData, state?: number, frameNumber?: number, posture?: string): boolean;
|
||||
dispatchMouseEvent(canvasId: number, x: number, y: number, type: string, altKey: boolean, ctrlKey: boolean, shiftKey: boolean, buttonDown: boolean): void;
|
||||
createTextureFromRoom(roomId: number, canvasId?: number, bounds?: Rectangle): RenderTexture;
|
||||
saveTextureAsScreenshot(texture: RenderTexture, saveAsThumbnail?: boolean): void;
|
||||
saveTextureAsScreenshot(texture: RenderTexture, saveAsThumbnail?: boolean): Promise<void>;
|
||||
saveBase64AsScreenshot(base64: string, saveAsThumbnail?: boolean): void;
|
||||
deleteRoomObject(objectId: number, objectCategory: number): boolean;
|
||||
sessionDataManager: ISessionDataManager;
|
||||
|
@ -5,12 +5,12 @@ import { Rectangle } from '@pixi/math';
|
||||
import { Sprite } from '@pixi/sprite';
|
||||
import { AdvancedMap, AvatarAction, AvatarDirectionAngle, AvatarScaleType, AvatarSetType, IActionDefinition, IActiveActionData, IAdvancedMap, IAnimationLayerData, IAvatarDataContainer, IAvatarEffectListener, IAvatarFigureContainer, IAvatarImage, IGraphicAsset, IPartColor, ISpriteDataContainer } from '../../api';
|
||||
import { GetTickerTime, NitroContainer, NitroSprite, PaletteMapFilter, PixiApplicationProxy, TextureUtils } from '../../pixi-proxy';
|
||||
import { ActiveActionData } from './actions';
|
||||
import { AssetAliasCollection } from './alias';
|
||||
import { AvatarFigureContainer } from './AvatarFigureContainer';
|
||||
import { AvatarStructure } from './AvatarStructure';
|
||||
import { AvatarImageCache } from './cache';
|
||||
import { EffectAssetDownloadManager } from './EffectAssetDownloadManager';
|
||||
import { ActiveActionData } from './actions';
|
||||
import { AssetAliasCollection } from './alias';
|
||||
import { AvatarImageCache } from './cache';
|
||||
|
||||
export class AvatarImage implements IAvatarImage, IAvatarEffectListener
|
||||
{
|
||||
@ -543,7 +543,7 @@ export class AvatarImage implements IAvatarImage, IAvatarEffectListener
|
||||
return container;
|
||||
}
|
||||
|
||||
public getCroppedImage(setType: string, scale: number = 1): HTMLImageElement
|
||||
public async getCroppedImage(setType: string, scale: number = 1): Promise<HTMLImageElement>
|
||||
{
|
||||
if(!this._mainAction) return null;
|
||||
|
||||
@ -604,11 +604,7 @@ export class AvatarImage implements IAvatarImage, IAvatarEffectListener
|
||||
|
||||
const texture = TextureUtils.generateTexture(container, new Rectangle(0, 0, avatarCanvas.width, avatarCanvas.height));
|
||||
|
||||
const image = TextureUtils.generateImage(texture);
|
||||
|
||||
if(!image) return null;
|
||||
|
||||
return image;
|
||||
return await TextureUtils.generateImage(texture);
|
||||
}
|
||||
|
||||
protected getFullImage(k: string): RenderTexture
|
||||
|
@ -50,7 +50,7 @@ export class RoomCameraWidgetManager implements IRoomCameraWidgetManager
|
||||
this.events.dispatchEvent(new RoomCameraWidgetManagerEvent(RoomCameraWidgetManagerEvent.INITIALIZED));
|
||||
}
|
||||
|
||||
public applyEffects(texture: Texture, selectedEffects: IRoomCameraWidgetSelectedEffect[], isZoomed: boolean): HTMLImageElement
|
||||
public async applyEffects(texture: Texture, selectedEffects: IRoomCameraWidgetSelectedEffect[], isZoomed: boolean): Promise<HTMLImageElement>
|
||||
{
|
||||
const container = new NitroContainer();
|
||||
const sprite = new NitroSprite(texture);
|
||||
@ -86,7 +86,7 @@ export class RoomCameraWidgetManager implements IRoomCameraWidgetManager
|
||||
}
|
||||
}
|
||||
|
||||
return TextureUtils.generateImage(container);
|
||||
return await TextureUtils.generateImage(container);
|
||||
}
|
||||
|
||||
public get effects(): Map<string, IRoomCameraWidgetEffect>
|
||||
|
@ -21,9 +21,9 @@ export class RenderRoomMessageComposer implements IMessageComposer<ConstructorPa
|
||||
this._data = [];
|
||||
}
|
||||
|
||||
public assignBitmap(texture: RenderTexture): void
|
||||
public async assignBitmap(texture: RenderTexture): Promise<void>
|
||||
{
|
||||
const url = TextureUtils.generateImageUrl(texture);
|
||||
const url = await TextureUtils.generateImageUrl(texture);
|
||||
|
||||
if(!url) return;
|
||||
|
||||
|
@ -8,12 +8,12 @@ export class ImageResult implements IImageResult
|
||||
public data: RenderTexture = null;
|
||||
public image: HTMLImageElement = null;
|
||||
|
||||
public getImage(): HTMLImageElement
|
||||
public async getImage(): Promise<HTMLImageElement>
|
||||
{
|
||||
if(this.image) return this.image;
|
||||
|
||||
if(!this.data) return null;
|
||||
|
||||
return TextureUtils.generateImage(this.data);
|
||||
return await TextureUtils.generateImage(this.data);
|
||||
}
|
||||
}
|
||||
|
@ -10,13 +10,13 @@ import { PetFigureData } from '../avatar';
|
||||
import { RenderRoomMessageComposer, RenderRoomThumbnailMessageComposer } from '../communication';
|
||||
import { FurniId } from '../utils';
|
||||
import { ImageResult } from './ImageResult';
|
||||
import { ObjectAvatarCarryObjectUpdateMessage, ObjectAvatarChatUpdateMessage, ObjectAvatarDanceUpdateMessage, ObjectAvatarEffectUpdateMessage, ObjectAvatarExperienceUpdateMessage, ObjectAvatarExpressionUpdateMessage, ObjectAvatarFigureUpdateMessage, ObjectAvatarFlatControlUpdateMessage, ObjectAvatarGestureUpdateMessage, ObjectAvatarGuideStatusUpdateMessage, ObjectAvatarMutedUpdateMessage, ObjectAvatarOwnMessage, ObjectAvatarPetGestureUpdateMessage, ObjectAvatarPlayerValueUpdateMessage, ObjectAvatarPlayingGameUpdateMessage, ObjectAvatarPostureUpdateMessage, ObjectAvatarSignUpdateMessage, ObjectAvatarSleepUpdateMessage, ObjectAvatarTypingUpdateMessage, ObjectAvatarUpdateMessage, ObjectAvatarUseObjectUpdateMessage, ObjectDataUpdateMessage, ObjectGroupBadgeUpdateMessage, ObjectHeightUpdateMessage, ObjectItemDataUpdateMessage, ObjectModelDataUpdateMessage, ObjectMoveUpdateMessage, ObjectRoomColorUpdateMessage, ObjectRoomFloorHoleUpdateMessage, ObjectRoomMaskUpdateMessage, ObjectRoomPlanePropertyUpdateMessage, ObjectRoomPlaneVisibilityUpdateMessage, ObjectRoomUpdateMessage, ObjectStateUpdateMessage } from './messages';
|
||||
import { RoomLogic, RoomMapData, RoomObjectVisualizationFactory } from './object';
|
||||
import { RoomContentLoader } from './RoomContentLoader';
|
||||
import { RoomMessageHandler } from './RoomMessageHandler';
|
||||
import { RoomObjectEventHandler } from './RoomObjectEventHandler';
|
||||
import { RoomObjectLogicFactory } from './RoomObjectLogicFactory';
|
||||
import { RoomVariableEnum } from './RoomVariableEnum';
|
||||
import { ObjectAvatarCarryObjectUpdateMessage, ObjectAvatarChatUpdateMessage, ObjectAvatarDanceUpdateMessage, ObjectAvatarEffectUpdateMessage, ObjectAvatarExperienceUpdateMessage, ObjectAvatarExpressionUpdateMessage, ObjectAvatarFigureUpdateMessage, ObjectAvatarFlatControlUpdateMessage, ObjectAvatarGestureUpdateMessage, ObjectAvatarGuideStatusUpdateMessage, ObjectAvatarMutedUpdateMessage, ObjectAvatarOwnMessage, ObjectAvatarPetGestureUpdateMessage, ObjectAvatarPlayerValueUpdateMessage, ObjectAvatarPlayingGameUpdateMessage, ObjectAvatarPostureUpdateMessage, ObjectAvatarSignUpdateMessage, ObjectAvatarSleepUpdateMessage, ObjectAvatarTypingUpdateMessage, ObjectAvatarUpdateMessage, ObjectAvatarUseObjectUpdateMessage, ObjectDataUpdateMessage, ObjectGroupBadgeUpdateMessage, ObjectHeightUpdateMessage, ObjectItemDataUpdateMessage, ObjectModelDataUpdateMessage, ObjectMoveUpdateMessage, ObjectRoomColorUpdateMessage, ObjectRoomFloorHoleUpdateMessage, ObjectRoomMaskUpdateMessage, ObjectRoomPlanePropertyUpdateMessage, ObjectRoomPlaneVisibilityUpdateMessage, ObjectRoomUpdateMessage, ObjectStateUpdateMessage } from './messages';
|
||||
import { RoomLogic, RoomMapData, RoomObjectVisualizationFactory } from './object';
|
||||
import { RoomCamera, RoomData, RoomFurnitureData, RoomInstanceData, RoomObjectBadgeImageAssetListener, SpriteDataCollector } from './utils';
|
||||
|
||||
export class RoomEngine extends NitroManager implements IRoomEngine, IRoomCreator, IRoomEngineServices, IRoomManagerListener, IRoomContentListener, IUpdateReceiver, IDisposable
|
||||
@ -1745,7 +1745,9 @@ export class RoomEngine extends NitroManager implements IRoomEngine, IRoomCreato
|
||||
|
||||
if(icon)
|
||||
{
|
||||
const image = TextureUtils.generateImage(icon);
|
||||
(async () =>
|
||||
{
|
||||
const image = await TextureUtils.generateImage(icon);
|
||||
|
||||
if(this.events)
|
||||
{
|
||||
@ -1755,6 +1757,7 @@ export class RoomEngine extends NitroManager implements IRoomEngine, IRoomCreato
|
||||
|
||||
this.events.dispatchEvent(event);
|
||||
}
|
||||
})();
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1790,7 +1793,9 @@ export class RoomEngine extends NitroManager implements IRoomEngine, IRoomCreato
|
||||
|
||||
if(icon)
|
||||
{
|
||||
const image = TextureUtils.generateImage(icon);
|
||||
(async () =>
|
||||
{
|
||||
const image = await TextureUtils.generateImage(icon);
|
||||
|
||||
if(this.events)
|
||||
{
|
||||
@ -1800,6 +1805,7 @@ export class RoomEngine extends NitroManager implements IRoomEngine, IRoomCreato
|
||||
|
||||
this.events.dispatchEvent(event);
|
||||
}
|
||||
})();
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -3400,14 +3406,14 @@ export class RoomEngine extends NitroManager implements IRoomEngine, IRoomCreato
|
||||
return texture;
|
||||
}
|
||||
|
||||
public saveTextureAsScreenshot(texture: RenderTexture, saveAsThumbnail: boolean = false): void
|
||||
public async saveTextureAsScreenshot(texture: RenderTexture, saveAsThumbnail: boolean = false): Promise<void>
|
||||
{
|
||||
let composer: RenderRoomMessageComposer = null;
|
||||
|
||||
if(saveAsThumbnail) composer = new RenderRoomThumbnailMessageComposer();
|
||||
else composer = new RenderRoomMessageComposer();
|
||||
|
||||
composer.assignBitmap(texture);
|
||||
await composer.assignBitmap(texture);
|
||||
|
||||
this._communication.connection.send(composer);
|
||||
}
|
||||
|
@ -28,14 +28,14 @@ export class TextureUtils
|
||||
return Texture.from(image);
|
||||
}
|
||||
|
||||
public static generateImage(target: DisplayObject | RenderTexture): HTMLImageElement
|
||||
public static async generateImage(target: DisplayObject | RenderTexture): Promise<HTMLImageElement>
|
||||
{
|
||||
if(!target) return null;
|
||||
|
||||
return this.getExtractor().image(target);
|
||||
}
|
||||
|
||||
public static generateImageUrl(target: DisplayObject | RenderTexture): string
|
||||
public static async generateImageUrl(target: DisplayObject | RenderTexture): Promise<string>
|
||||
{
|
||||
if(!target) return null;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user