Browse Source

调整高亮和阻挡物的查找逻辑

dev
刘向辉 3 years ago
parent
commit
befe1e51d8
  1. 4
      src/app/babylon/controller/info-manager.ts
  2. 6
      src/app/babylon/controller/scene-manager.ts
  3. 6
      src/app/babylon/controller/status/building-status.ts
  4. 4
      src/app/babylon/model/data/model-data/model-data-facility.ts
  5. 1
      src/app/babylon/model/info/model/model-info-facility.ts
  6. 5
      src/app/babylon/model/info/model/model-info.ts
  7. 43
      src/app/babylon/view/building-window/building-window.ts
  8. 17
      src/app/babylon/view/facility-window/facility-window.ts
  9. 2
      src/app/pages/plan/plan.component.ts

4
src/app/babylon/controller/info-manager.ts

@ -164,7 +164,6 @@ export class InfoManager {
modelEditData: ModelEditData,
buildingInfo: BuildingInfo = null
) {
console.trace("创建设备", buildingInfo);
let facilities = modelEditData.facilities;
@ -176,11 +175,8 @@ export class InfoManager {
let facilityData = facilities[i].facilities[j]
if (facilityData.posType == FacilityPosType.In && buildingInfo.ModelInfo != null) {
mesh = buildingInfo.ModelInfo.getChildrenByName(facilityData.resName);
console.log("内建模型找到", mesh);
}
FacilityWindow.instance.createFacility(
modelEditData.facilities[i].facilities[j],
false,

6
src/app/babylon/controller/scene-manager.ts

@ -256,16 +256,18 @@ export class SceneManager {
{
mainTextureRatio: 1,
});
this.highLightLayer.innerGlow = false;
this.highLightLayer.innerGlow = true;
this.highLightLayer.outerGlow = true;
}
let allMesh = mesh.getChildMeshes();
this.highLightLayer.addMesh(mesh, color);
allMesh.push(mesh);
for (let i = 0; i < allMesh.length; i++) {
let childMesh = allMesh[i];
if (childMesh instanceof Mesh) {
this.highLightLayer.addMesh(childMesh, color);
this.highLightNum++;
}
}

6
src/app/babylon/controller/status/building-status.ts

@ -137,9 +137,13 @@ export class BuildingStatus extends StatusBase {
//判断已经有了就不创建了
// InfoManager.createFacilityInfos(buildingInfo.buildingData.outdoorData, buildingInfo);
//显示
this.buildingWindow.showFacilityInfosIcon(this.currentBuildingInfo, true);
//this.buildingWindow.showFacilityInfosIcon(this.currentBuildingInfo, true);
}
this.buildingWindow.changeCurrentBuildingInfo(buildingInfo.ModelInfo);
}
//模型变化

4
src/app/babylon/model/data/model-data/model-data-facility.ts

@ -246,11 +246,11 @@ export enum FacilityType {
/**
* 线
*/
XF_TSLX = "XF_TSLX",
AQSS_TSLX = "AQSS_TSLX",
/**
*
*/
XF_SSD = "XF_SSD",
AQSS_SSD = "AQSS_SSD",
/**
*

1
src/app/babylon/model/info/model/model-info-facility.ts

@ -92,6 +92,7 @@ export class ModelInfo_facility extends ModelInfo {
});
this.uiFollowRoot.zIndex = BabylonUIStyleTool.c_zIndex_facilityIcon;
this.showFollowUI(false);
}

5
src/app/babylon/model/info/model/model-info.ts

@ -133,7 +133,6 @@ export class ModelInfo {
showFollowUI(show: boolean) {
if (this.uiFollowRoot != null) {
this.uiFollowRoot.isVisible = show;
}
}
@ -142,13 +141,13 @@ export class ModelInfo {
* @param play false表示停止
*/
playShowAnim(play: boolean) {
this.showFollowUI(play);
if (this.modelBox != null) {
if (play) {
SceneManager.Instance.addToHighLight(this.modelBox as Mesh, Color3.Green());
SceneManager.Instance.addToHighLight(this.modelBox as Mesh, Color3.Yellow());
}
else {
SceneManager.Instance.removeFromHighLight(this.modelBox as Mesh);
}
}
}

43
src/app/babylon/view/building-window/building-window.ts

@ -308,10 +308,13 @@ export class BuildingWindow extends UIBase {
}
}
console.log("选中建筑", modelInfo);
this.showJYZModules(JYZInfoMoudleType.AQSS, false);
//this.onChangeCurrentBuildingItem(item);
// this.three.selectLeftBuilding(item);
}
/**
@ -593,6 +596,10 @@ export class BuildingWindow extends UIBase {
if (TsTool.stringContain(nodeName, "primitive")) {
//复合材质被分解为多个子mesh,不看做特殊意义的对象
}
else if (TsTool.stringContain(nodeName, this.c_zheDang))//遮挡
{
this.currentBuidngItem.createStopByMesh(allNode[i]);
}
else if (TsTool.stringContain(nodeName, this.c_xiaoFang)) //消防
{
this.currentBuidngItem.createFacilityByMesh(allNode[i]);
@ -601,10 +608,7 @@ export class BuildingWindow extends UIBase {
{
this.currentBuidngItem.createOilingByMesh(allNode[i]);
}
else if (TsTool.stringContain(nodeName, this.c_zheDang))//遮挡
{
this.currentBuidngItem.createStopByMesh(allNode[i]);
}
}
}
@ -659,14 +663,26 @@ export class BuildingWindow extends UIBase {
if (infos != null) {
for (let j = 0; j < infos.length; j++) {
infos[j].playShowAnim(show);
//安全疏散,特殊,要在不显示时隐藏本体
if (type == JYZInfoMoudleType.AQSS) {
infos[j].setEnable(show);
}
}
}
}
//阻挡类物体
let zdByType: FacilityInfoByType[] = [];
if (this.zdByMoudle.has(type)) {
zdByType = this.zdByMoudle.get(type);
console.log("查找阻挡物", type, zdByType);
}
else {
console.log("没找到阻挡物", type, zdByType);
}
for (let i = 0; i < zdByType.length; i++) {
let infos = zdByType[i].facilityInfo;
@ -711,6 +727,17 @@ export class BuildingWindow extends UIBase {
for (let i = 0; i < allFacilityByType.length; i++) {
let l_facilityByType = allFacilityByType[i];
// if (moudleType == JYZInfoMoudleType.XF) //消防-逃生
// {
// if (TsTool.stringContain(l_facilityByType.type, FacilityType.XF_TSLX)) {
// continue;
// }
// if (TsTool.stringContain(l_facilityByType.type, FacilityType.XF_SSD)) {
// continue;
// }
// }
if (TsTool.stringContain(l_facilityByType.type, zdKey)) {
if (!this.zdByMoudle.has(moudleType)) {
this.zdByMoudle.set(moudleType, []);
@ -748,8 +775,8 @@ export class BuildingWindow extends UIBase {
getUVMat(facilityType: FacilityType, mesh: AbstractMesh) {
let moudleType: JYZInfoMoudleType = null;
switch (facilityType) {
case FacilityType.XF_TSLX:
moudleType = JYZInfoMoudleType.TSLX;
case FacilityType.AQSS_TSLX:
moudleType = JYZInfoMoudleType.AQSS;
break;
case FacilityType.JY_SYGX:
moudleType = JYZInfoMoudleType.SYG;
@ -843,9 +870,9 @@ export enum JYZInfoMoudleType {
*/
YQHSGX = "YQHSGX",
/**
* 线
*
*/
TSLX = "TSLX",
AQSS = "AQSS",
/**
*

17
src/app/babylon/view/facility-window/facility-window.ts

@ -587,11 +587,11 @@ export class FacilityWindow extends UIBase {
else if (TsTool.stringContain(mesh.name, FacilityType.XF_MHT)) {
this.createNewFacilityByMesh(mesh, FacilityType.XF_MHT);
}
else if (TsTool.stringContain(mesh.name, FacilityType.XF_SSD)) {
this.createNewFacilityByMesh(mesh, FacilityType.XF_SSD);
else if (TsTool.stringContain(mesh.name, FacilityType.AQSS_SSD)) {
this.createNewFacilityByMesh(mesh, FacilityType.AQSS_SSD);
}
else if (TsTool.stringContain(mesh.name, FacilityType.XF_TSLX)) {
this.createNewFacilityByMesh(mesh, FacilityType.XF_TSLX);
else if (TsTool.stringContain(mesh.name, FacilityType.AQSS_TSLX)) {
this.createNewFacilityByMesh(mesh, FacilityType.AQSS_TSLX);
}
else if (TsTool.stringContain(mesh.name, FacilityType.XF_XFCM)) {
this.createNewFacilityByMesh(mesh, FacilityType.XF_XFCM);
@ -617,19 +617,19 @@ export class FacilityWindow extends UIBase {
createOilingByMesh(mesh: AbstractMesh) {
if (TsTool.stringContain(mesh.name, FacilityType.JY_JYJ)) {
console.log("找到加油机", mesh)
// console.log("找到加油机", mesh)
this.createNewFacilityByMesh(mesh, FacilityType.JY_JYJ);
}
else if (TsTool.stringContain(mesh.name, FacilityType.JY_SYGX)) {
console.log("找到输油管线", mesh)
// console.log("找到输油管线", mesh)
this.createNewFacilityByMesh(mesh, FacilityType.JY_SYGX);
}
else if (TsTool.stringContain(mesh.name, FacilityType.JY_YG)) {
console.log("找到油罐", mesh)
// console.log("找到油罐", mesh)
this.createNewFacilityByMesh(mesh, FacilityType.JY_YG);
}
else if (TsTool.stringContain(mesh.name, FacilityType.JY_YQHSGX)) {
console.log("找到油气回收", mesh)
// console.log("找到油气回收", mesh)
this.createNewFacilityByMesh(mesh, FacilityType.JY_YQHSGX);
}
}
@ -649,6 +649,7 @@ export class FacilityWindow extends UIBase {
this.createNewFacilityByMesh(mesh, FacilityType.ZD_YQHSGX);
}
if (TsTool.stringContain(mesh.name, FacilityType.ZD_XF)) {
console.log("找到消防阻挡物", mesh.name);
this.createNewFacilityByMesh(mesh, FacilityType.ZD_XF);
}
if (TsTool.stringContain(mesh.name, FacilityType.ZD_ZP)) {

2
src/app/pages/plan/plan.component.ts

@ -127,7 +127,7 @@ export class PlanComponent implements OnInit {
} else if (type === 3) {
fenceType = JYZInfoMoudleType.XF
} else if (type === 4) {
fenceType = JYZInfoMoudleType.TSLX
fenceType = JYZInfoMoudleType.AQSS
} else if (type === 5) {
fenceType = JYZInfoMoudleType.SYG
} else if (type === 6) {

Loading…
Cancel
Save