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
Move to Renderer V2
This commit is contained in:
@@ -0,0 +1,65 @@
|
||||
import { IAssetManager, IAvatarAssetDownloadLibrary } from '@nitrots/api';
|
||||
import { AvatarRenderLibraryEvent, GetEventDispatcher, NitroEventType } from '@nitrots/events';
|
||||
|
||||
export class AvatarAssetDownloadLibrary implements IAvatarAssetDownloadLibrary
|
||||
{
|
||||
private static NOT_LOADED: number = 0;
|
||||
private static LOADING: number = 1;
|
||||
private static LOADED: number = 2;
|
||||
|
||||
private _state: number = AvatarAssetDownloadLibrary.NOT_LOADED;
|
||||
private _libraryName: string;
|
||||
private _revision: string;
|
||||
private _downloadUrl: string;
|
||||
private _assetManager: IAssetManager;
|
||||
|
||||
constructor(libraryName: string, revision: string, downloadUrl: string, assetManager: IAssetManager)
|
||||
{
|
||||
this._libraryName = libraryName;
|
||||
this._revision = revision;
|
||||
this._downloadUrl = downloadUrl;
|
||||
this._assetManager = assetManager;
|
||||
|
||||
this._downloadUrl = this._downloadUrl.replace(/%libname%/gi, this._libraryName);
|
||||
this._downloadUrl = this._downloadUrl.replace(/%revision%/gi, this._revision);
|
||||
|
||||
this.checkIsLoaded();
|
||||
}
|
||||
|
||||
public async downloadAsset(): Promise<void>
|
||||
{
|
||||
if(!this._assetManager || (this._state === AvatarAssetDownloadLibrary.LOADING) || (this._state === AvatarAssetDownloadLibrary.LOADED)) return;
|
||||
|
||||
if(!this.checkIsLoaded())
|
||||
{
|
||||
this._state = AvatarAssetDownloadLibrary.LOADING;
|
||||
|
||||
const status = await this._assetManager.downloadAsset(this._downloadUrl);
|
||||
|
||||
if(!status) throw new Error('Could not download asset');
|
||||
}
|
||||
|
||||
if(this.checkIsLoaded()) GetEventDispatcher().dispatchEvent(new AvatarRenderLibraryEvent(NitroEventType.AVATAR_ASSET_DOWNLOADED, this));
|
||||
}
|
||||
|
||||
private checkIsLoaded(): boolean
|
||||
{
|
||||
const asset = this._assetManager.getCollection(this._libraryName);
|
||||
|
||||
if(!asset) return false;
|
||||
|
||||
this._state = AvatarAssetDownloadLibrary.LOADED;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public get libraryName(): string
|
||||
{
|
||||
return this._libraryName;
|
||||
}
|
||||
|
||||
public get isLoaded(): boolean
|
||||
{
|
||||
return (this._state === AvatarAssetDownloadLibrary.LOADED);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user