@awayjs/core
Version:
AwayJS core classes
176 lines (154 loc) • 5.31 kB
text/typescript
export class LoaderContext {
public static UNDEFINED: number = 0;
public static SINGLEPASS_MATERIALS: number = 1;
public static MULTIPASS_MATERIALS: number = 2;
public static ON_DEMAND: string = 'onDemand';
public static PRELOADED: string = 'preloaded';
private _includeDependencies: boolean;
private _dependencyBaseUrl: string;
private _embeddedDataByUrl: Object;
private _remappedUrls: Object;
private _materialMode: number;
private _externalAssetMode: string;
private _overrideAbsPath: boolean;
private _overrideFullUrls: boolean;
/**
* LoaderContext provides configuration for the Loader load() and parse()
* operations. Use it to configure how (and if) dependencies are loaded, or
* to map dependency URLs to embedded data.
*
* @see away.loading.Loader
*/
constructor(includeDependencies: boolean = true, dependencyBaseUrl: string = null) {
this._includeDependencies = includeDependencies;
this._dependencyBaseUrl = dependencyBaseUrl || '';
this._embeddedDataByUrl = {};
this._remappedUrls = {};
this._materialMode = LoaderContext.UNDEFINED;
this._externalAssetMode = LoaderContext.PRELOADED;
}
/**
* Defines whether dependencies (all files except the one at the URL given
* to the load() or parseData() operations) should be automatically loaded.
* Defaults to true.
*/
public get includeDependencies(): boolean {
return this._includeDependencies;
}
public set includeDependencies(val: boolean) {
this._includeDependencies = val;
}
/**
* MaterialMode defines, if the Parser should create SinglePass or MultiPass
* Materials Options: 0 (Default / undefined) - All Parsers will create
* SinglePassMaterials, but the AWD2.1parser will create Materials as they
* are defined in the file 1 (Force SinglePass) - All Parsers create
* SinglePassMaterials 2 (Force MultiPass) - All Parsers will create
* MultiPassMaterials
*
*/
public get materialMode(): number {
return this._materialMode;
}
public set materialMode(value: number) {
this._materialMode = value;
}
public get externalAssetMode(): string {
return this._externalAssetMode;
}
public set externalAssetMode(value: string) {
this._externalAssetMode = value;
}
/**
* A base URL that will be prepended to all relative dependency URLs found
* in a loaded resource. Absolute paths will not be affected by the value of
* this property.
*/
public get dependencyBaseUrl(): string {
return this._dependencyBaseUrl;
}
public set dependencyBaseUrl(val: string) {
this._dependencyBaseUrl = val;
}
/**
* Defines whether absolute paths (defined as paths that begin with a "/")
* should be overridden with the dependencyBaseUrl defined in this context.
* If this is true, and the base path is "base", /path/to/asset.jpg will be
* resolved as base/path/to/asset.jpg.
*/
public get overrideAbsolutePaths(): boolean {
return this._overrideAbsPath;
}
public set overrideAbsolutePaths(val: boolean) {
this._overrideAbsPath = val;
}
/**
* Defines whether "full" URLs (defined as a URL that includes a scheme,
* e.g. http://) should be overridden with the dependencyBaseUrl defined in
* this context. If this is true, and the base path is "base",
* http://example.com/path/to/asset.jpg will be resolved as
* base/path/to/asset.jpg.
*/
public get overrideFullURLs(): boolean {
return this._overrideFullUrls;
}
public set overrideFullURLs(val: boolean) {
this._overrideFullUrls = val;
}
/**
* Map a URL to another URL, so that files that are referred to by the
* original URL will instead be loaded from the new URL. Use this when your
* file structure does not match the one that is expected by the loaded
* file.
*
* @param originalUrl The original URL which is referenced in the loaded
* resource.
* @param newUrl The URL from which away.should load the resource instead.
*
* @see mapUrlToData()
*/
public mapUrl(originalUrl: string, newUrl: string): void {
this._remappedUrls[originalUrl] = newUrl;
}
/**
* Map a URL to embedded data, so that instead of trying to load a
* dependency from the URL at which it's referenced, the dependency data
* will be retrieved straight from the memory instead.
*
* @param originalUrl The original URL which is referenced in the loaded
* resource.
* @param data The embedded data. Can be ByteArray or a export class which
* can be used to create a bytearray.
*/
public mapUrlToData(originalUrl: string, data: any): void {
this._embeddedDataByUrl[originalUrl] = data;
}
/**
* @private
* Defines whether embedded data has been mapped to a particular URL.
*/
public _iHasDataForUrl(url: string): boolean {
return this._embeddedDataByUrl.hasOwnProperty(url);
}
/**
* @private
* Returns embedded data for a particular URL.
*/
public _iGetDataForUrl(url: string): any {
return this._embeddedDataByUrl[url];
}
/**
* @private
* Defines whether a replacement URL has been mapped to a particular URL.
*/
public _iHasMappingForUrl(url: string): boolean {
return this._remappedUrls.hasOwnProperty(url);
}
/**
* @private
* Returns new (replacement) URL for a particular original URL.
*/
public _iGetRemappedUrl(originalUrl: string): string {
return this._remappedUrls[originalUrl];
}
}