优化代码,避免切换渲染类型时重新生成实体

pull/354/MERGE
ChenX 5 years ago
parent 12620e1452
commit 9a2d40d1d1

@ -121,13 +121,8 @@ export class AlignedDimension extends Entity
return ent; return ent;
} }
GetDrawObjectFromRenderType(renderType: RenderType = RenderType.Wireframe): Object3D //重载
{ protected OnlyRenderType = true;
if (renderType === RenderType.Jig)
return;
return super.GetDrawObjectFromRenderType(RenderType.Wireframe);
}
InitDrawObject(renderType: RenderType = RenderType.Wireframe): Object3D InitDrawObject(renderType: RenderType = RenderType.Wireframe): Object3D
{ {
let obj = new Object3D(); let obj = new Object3D();

@ -154,12 +154,8 @@ export abstract class Curve extends Entity
IntersectWith(curve: Curve, intType: IntersectOption, tolerance = 1e-6): Vector3[] { return []; } IntersectWith(curve: Curve, intType: IntersectOption, tolerance = 1e-6): Vector3[] { return []; }
//------------------绘制相关------------------ //------------------绘制相关------------------
GetDrawObjectFromRenderType(renderType: RenderType = RenderType.Wireframe): Object3D //重载
{ protected OnlyRenderType = true;
if (renderType === RenderType.Jig)
return;
return super.GetDrawObjectFromRenderType(RenderType.Wireframe);
}
/** /**
* : * :

@ -22,6 +22,11 @@ import { PhysicalMaterialRecord } from '../PhysicalMaterialRecord';
@Factory @Factory
export class Entity extends CADObject export class Entity extends CADObject
{ {
/**
* ,
*/
protected OnlyRenderType = false;
protected _CacheDrawObject = new Map<RenderType, Object3D>(); protected _CacheDrawObject = new Map<RenderType, Object3D>();
//材质id //材质id
protected materialId: ObjectId; protected materialId: ObjectId;
@ -158,6 +163,7 @@ export class Entity extends CADObject
} }
UpdateRenderType(type: RenderType) UpdateRenderType(type: RenderType)
{ {
if (this.OnlyRenderType) return;
DisposeThreeObj(this.DrawObject); DisposeThreeObj(this.DrawObject);
let obj = this.GetDrawObjectFromRenderType(type); let obj = this.GetDrawObjectFromRenderType(type);
if (obj) this.DrawObject.add(obj); if (obj) this.DrawObject.add(obj);
@ -165,6 +171,9 @@ export class Entity extends CADObject
GetDrawObjectFromRenderType(renderType: RenderType = RenderType.Wireframe): Object3D GetDrawObjectFromRenderType(renderType: RenderType = RenderType.Wireframe): Object3D
{ {
if (this.OnlyRenderType)
renderType = RenderType.Wireframe;
if (this._CacheDrawObject.has(renderType)) if (this._CacheDrawObject.has(renderType))
{ {
return this._CacheDrawObject.get(renderType); return this._CacheDrawObject.get(renderType);

Loading…
Cancel
Save