!1898 开发:清理

pull/1895/MERGE
林三 2 years ago committed by ChenX
parent 7e6cc5e348
commit 2f97fc18a9

@ -39,17 +39,17 @@ export class Command_OpenCabinet implements Command
});
return;
}
let OK = false;
let DrawerEns: Entity[] = [];
let DoorEns: Entity[] = [];
let DoorGroups: Entity[][] = [];
let canOpen = false;
let drawerEns: Entity[] = [];
let doorEns: Entity[] = [];
let doorGroups: Entity[][] = [];
while (!OK)
while (!canOpen)
{
if (this._MoveDrawerObjs.length > 0 || this._MoveDoorObjs.length > 0) //判断之前是否开过门板、抽屉
{
Log("关闭门板、抽屉");
OK = true;
canOpen = true;
}
else
{
@ -71,24 +71,24 @@ export class Command_OpenCabinet implements Command
let holes: Entity[] = [];
for (let ent of ss.SelectSet.SelectEntityList)
if (IsDoor(ent) && ent.Template)
DoorEns.push(ent);
doorEns.push(ent);
else if (IsHandle(ent))
handles.push(ent);
else if (IsDrawer(ent) || IsLattice(ent))
DrawerEns.push(ent);
drawerEns.push(ent);
else if (ent instanceof Hole)
holes.push(ent);
//拉手、排钻 绑定门板 获得门板组 二维刀路
this.GetDoorGroups(DoorEns, handles, holes, DoorGroups);
this.GetDoorGroups(doorEns, handles, holes, doorGroups);
//门板组 设置旋转方向 旋转点
this.SetDoorGroupRotate(DoorGroups);
this.SetDoorGroupRotate(doorGroups);
let boxDrawerMap: Map<Box3, Entity[]> = new Map();
//拉手、排钻 绑定抽屉 获取抽屉组
this.GetDrawerMap(DrawerEns, handles, holes, boxDrawerMap);
this.GetDrawerMap(drawerEns, handles, holes, boxDrawerMap);
//抽屉组 设置方向
this.SetDrawerDirection(boxDrawerMap);
@ -96,10 +96,10 @@ export class Command_OpenCabinet implements Command
if (this._MoveDoorObjs.length === 0 && this._MoveDrawerObjs.length === 0) return;
this.DoMove(OK); //动起来
this.DoMove(canOpen); //动起来
//开启门板抽屉后,限制使用其他功能,
while (!OK)
while (!canOpen)
{
userConfig.isOpenCabinet = true;
AppToaster.show({
@ -134,11 +134,11 @@ export class Command_OpenCabinet implements Command
}
}
private GetDrawerMap(DrawerEns: Entity[], handles: Entity[], holes: Entity[], boxDrawerMap: Map<Box3, Entity[]>)
private GetDrawerMap(drawerEns: Entity[], handles: Entity[], holes: Entity[], boxDrawerMap: Map<Box3, Entity[]>)
{
for (let i = 0; i < DrawerEns.length; i++)
for (let i = 0; i < drawerEns.length; i++)
{
let ens = DrawerEns[i].Template.Object as TemplateRecord;
let ens = drawerEns[i].Template.Object as TemplateRecord;
while (ens.Name !== "抽屉空间" && ens.Name !== "格子抽")
{
if (ens.Parent)
@ -154,8 +154,8 @@ export class Command_OpenCabinet implements Command
for (let en of ens.AllEntitys)
{
//删除重复节省资源
if (DrawerEns.includes(en) && DrawerEns[i] !== en)
DrawerEns.splice(DrawerEns.indexOf(en), 1);
if (drawerEns.includes(en) && drawerEns[i] !== en)
drawerEns.splice(drawerEns.indexOf(en), 1);
else if (handles.includes(en))
handles.splice(handles.indexOf(en), 1);
else if (holes.includes(en))
@ -196,17 +196,17 @@ export class Command_OpenCabinet implements Command
}
}
private GetDoorGroups(DoorEns: Entity[], handles: Entity[], holes: Entity[], DoorGroups: Entity[][])
private GetDoorGroups(doorEns: Entity[], handles: Entity[], holes: Entity[], doorGroups: Entity[][])
{
for (let i = 0; i < DoorEns.length; i++)
for (let i = 0; i < doorEns.length; i++)
{
let ens = DoorEns[i].Template.Object as TemplateRecord;
let ens = doorEns[i].Template.Object as TemplateRecord;
let doorGroup: Entity[] = ens.Entitys;
for (let en of ens.Entitys)
{
//删除重复节省资源
if (DoorEns.includes(en) && DoorEns[i] !== en)
DoorEns.splice(DoorEns.indexOf(en), 1);
if (doorEns.includes(en) && doorEns[i] !== en)
doorEns.splice(doorEns.indexOf(en), 1);
else if (handles.includes(en))
handles.splice(handles.indexOf(en), 1);
else if (holes.includes(en))
@ -219,7 +219,7 @@ export class Command_OpenCabinet implements Command
//手动添加的把手跟随门板
arrayRemoveIf(handles, (handle) => IsEntityBelongToDoor(enBox, ocsInv, doorGroup, handle));
}
DoorGroups.push(doorGroup);
doorGroups.push(doorGroup);
}
function IsEntityBelongToDoor(enBox: Box3Ext, ocsInv: Matrix4, doorGroup: Entity[], en: Entity)
@ -234,9 +234,9 @@ export class Command_OpenCabinet implements Command
}
}
private DoMove(OK: boolean)
private DoMove(canOpen: boolean)
{
let dis = OK ? -1 : 1;
let dis = canOpen ? -1 : 1;
this._Timer = setInterval(() =>
{
if (this._Count === MOVECOUNT)
@ -244,7 +244,7 @@ export class Command_OpenCabinet implements Command
clearInterval(this._Timer);
this._Timer = undefined;
this._Count = 0;
if (OK)
if (canOpen)
{
this._MoveDoorObjs.length = 0;
this._MoveDrawerObjs.length = 0;
@ -302,19 +302,19 @@ export class Command_OpenCabinet implements Command
obj.updateMatrixWorld(true);
}
private SetDoorGroupRotate(DoorGroups: Entity[][])
private SetDoorGroupRotate(doorGroups: Entity[][])
{
let boxDoorMap: Map<Box3, Entity[]> = new Map();
if (DoorGroups.length > 0)
if (doorGroups.length > 0)
{
for (let i = 0; i < DoorGroups.length; i++)
for (let i = 0; i < doorGroups.length; i++)
{
let osc = (DoorGroups[i][0] as Entity).SpaceOCSInv;
let osc = (doorGroups[i][0] as Entity).SpaceOCSInv;
let brBox = new Box3;
for (let en of DoorGroups[i])
for (let en of doorGroups[i])
if ((!IsHandle(en) || en instanceof Hole) && !(en instanceof Curve)) //门把手不记录box 影响旋转点 但跟随旋转 (AllEntity中包含曲线类型需要过滤)
brBox.union((en as Entity).GetBoundingBoxInMtx(osc));
boxDoorMap.set(brBox, DoorGroups[i]);
boxDoorMap.set(brBox, doorGroups[i]);
}
for (let [box, br] of boxDoorMap)

Loading…
Cancel
Save