nitro-renderer/src/nitro/room/object/visualization/room/RoomVisualizationData.ts

122 lines
3.2 KiB
TypeScript

import { IAssetData, IGraphicAssetCollection, IObjectVisualizationData } from '../../../../../api';
import { Disposable } from '../../../../../core';
import { PlaneMaskManager } from './mask';
import { FloorRasterizer, LandscapeRasterizer, WallRasterizer } from './rasterizer';
export class RoomVisualizationData extends Disposable implements IObjectVisualizationData
{
private _wallRasterizer: WallRasterizer;
private _floorRasterizer: FloorRasterizer;
private _landscapeRasterizer: LandscapeRasterizer;
private _maskManager: PlaneMaskManager;
private _initialized: boolean;
constructor()
{
super();
this._wallRasterizer = new WallRasterizer();
this._floorRasterizer = new FloorRasterizer();
this._landscapeRasterizer = new LandscapeRasterizer();
this._maskManager = new PlaneMaskManager();
this._initialized = false;
}
public initialize(asset: IAssetData): boolean
{
if(!asset.roomVisualization) return false;
const wallData = asset.roomVisualization.wallData;
if(wallData) this._wallRasterizer.initialize(wallData);
const floorData = asset.roomVisualization.floorData;
if(floorData) this._floorRasterizer.initialize(floorData);
const landscapeData = asset.roomVisualization.landscapeData;
if(landscapeData) this._landscapeRasterizer.initialize(landscapeData);
const maskData = asset.roomVisualization.maskData;
if(maskData) this._maskManager.initialize(maskData);
return true;
}
protected onDispose(): void
{
if(this._wallRasterizer)
{
this._wallRasterizer.dispose();
this._wallRasterizer = null;
}
if(this._floorRasterizer)
{
this._floorRasterizer.dispose();
this._floorRasterizer = null;
}
if(this._landscapeRasterizer)
{
this._landscapeRasterizer.dispose();
this._landscapeRasterizer = null;
}
if(this._maskManager)
{
this._maskManager.dispose();
this._maskManager = null;
}
super.onDispose();
}
public setGraphicAssetCollection(collection: IGraphicAssetCollection): void
{
if(this._initialized) return;
this._wallRasterizer.initializeAssetCollection(collection);
this._floorRasterizer.initializeAssetCollection(collection);
this._landscapeRasterizer.initializeAssetCollection(collection);
this._maskManager.initializeAssetCollection(collection);
this._initialized = true;
}
public clearCache(): void
{
if(this._wallRasterizer) this._wallRasterizer.clearCache();
if(this._floorRasterizer) this._floorRasterizer.clearCache();
if(this._landscapeRasterizer) this._landscapeRasterizer.clearCache();
}
public get wallRasterizer(): WallRasterizer
{
return this._wallRasterizer;
}
public get floorRasterizer(): FloorRasterizer
{
return this._floorRasterizer;
}
public get landscapeRasterizer(): LandscapeRasterizer
{
return this._landscapeRasterizer;
}
public get maskManager(): PlaneMaskManager
{
return this._maskManager;
}
}