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

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

@ -256,16 +256,18 @@ export class SceneManager {
{ {
mainTextureRatio: 1, mainTextureRatio: 1,
}); });
this.highLightLayer.innerGlow = false; this.highLightLayer.innerGlow = true;
this.highLightLayer.outerGlow = true;
} }
let allMesh = mesh.getChildMeshes(); let allMesh = mesh.getChildMeshes();
this.highLightLayer.addMesh(mesh, color);
allMesh.push(mesh); allMesh.push(mesh);
for (let i = 0; i < allMesh.length; i++) { for (let i = 0; i < allMesh.length; i++) {
let childMesh = allMesh[i]; let childMesh = allMesh[i];
if (childMesh instanceof Mesh) { if (childMesh instanceof Mesh) {
this.highLightLayer.addMesh(childMesh, color); this.highLightLayer.addMesh(childMesh, color);
this.highLightNum++; 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); // 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.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) { showFollowUI(show: boolean) {
if (this.uiFollowRoot != null) { if (this.uiFollowRoot != null) {
this.uiFollowRoot.isVisible = show; this.uiFollowRoot.isVisible = show;
} }
} }
@ -142,13 +141,13 @@ export class ModelInfo {
* @param play false表示停止 * @param play false表示停止
*/ */
playShowAnim(play: boolean) { playShowAnim(play: boolean) {
this.showFollowUI(play);
if (this.modelBox != null) { if (this.modelBox != null) {
if (play) { if (play) {
SceneManager.Instance.addToHighLight(this.modelBox as Mesh, Color3.Green()); SceneManager.Instance.addToHighLight(this.modelBox as Mesh, Color3.Yellow());
} }
else { else {
SceneManager.Instance.removeFromHighLight(this.modelBox as Mesh); 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.onChangeCurrentBuildingItem(item);
// this.three.selectLeftBuilding(item); // this.three.selectLeftBuilding(item);
} }
/** /**
@ -593,6 +596,10 @@ export class BuildingWindow extends UIBase {
if (TsTool.stringContain(nodeName, "primitive")) { if (TsTool.stringContain(nodeName, "primitive")) {
//复合材质被分解为多个子mesh,不看做特殊意义的对象 //复合材质被分解为多个子mesh,不看做特殊意义的对象
} }
else if (TsTool.stringContain(nodeName, this.c_zheDang))//遮挡
{
this.currentBuidngItem.createStopByMesh(allNode[i]);
}
else if (TsTool.stringContain(nodeName, this.c_xiaoFang)) //消防 else if (TsTool.stringContain(nodeName, this.c_xiaoFang)) //消防
{ {
this.currentBuidngItem.createFacilityByMesh(allNode[i]); this.currentBuidngItem.createFacilityByMesh(allNode[i]);
@ -601,10 +608,7 @@ export class BuildingWindow extends UIBase {
{ {
this.currentBuidngItem.createOilingByMesh(allNode[i]); 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) { if (infos != null) {
for (let j = 0; j < infos.length; j++) { for (let j = 0; j < infos.length; j++) {
infos[j].playShowAnim(show); infos[j].playShowAnim(show);
//安全疏散,特殊,要在不显示时隐藏本体
if (type == JYZInfoMoudleType.AQSS) {
infos[j].setEnable(show);
}
} }
} }
} }
//阻挡类物体 //阻挡类物体
let zdByType: FacilityInfoByType[] = []; let zdByType: FacilityInfoByType[] = [];
if (this.zdByMoudle.has(type)) { if (this.zdByMoudle.has(type)) {
zdByType = this.zdByMoudle.get(type); zdByType = this.zdByMoudle.get(type);
console.log("查找阻挡物", type, zdByType);
}
else {
console.log("没找到阻挡物", type, zdByType);
} }
for (let i = 0; i < zdByType.length; i++) { for (let i = 0; i < zdByType.length; i++) {
let infos = zdByType[i].facilityInfo; let infos = zdByType[i].facilityInfo;
@ -711,6 +727,17 @@ export class BuildingWindow extends UIBase {
for (let i = 0; i < allFacilityByType.length; i++) { for (let i = 0; i < allFacilityByType.length; i++) {
let l_facilityByType = allFacilityByType[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 (TsTool.stringContain(l_facilityByType.type, zdKey)) {
if (!this.zdByMoudle.has(moudleType)) { if (!this.zdByMoudle.has(moudleType)) {
this.zdByMoudle.set(moudleType, []); this.zdByMoudle.set(moudleType, []);
@ -748,8 +775,8 @@ export class BuildingWindow extends UIBase {
getUVMat(facilityType: FacilityType, mesh: AbstractMesh) { getUVMat(facilityType: FacilityType, mesh: AbstractMesh) {
let moudleType: JYZInfoMoudleType = null; let moudleType: JYZInfoMoudleType = null;
switch (facilityType) { switch (facilityType) {
case FacilityType.XF_TSLX: case FacilityType.AQSS_TSLX:
moudleType = JYZInfoMoudleType.TSLX; moudleType = JYZInfoMoudleType.AQSS;
break; break;
case FacilityType.JY_SYGX: case FacilityType.JY_SYGX:
moudleType = JYZInfoMoudleType.SYG; moudleType = JYZInfoMoudleType.SYG;
@ -843,9 +870,9 @@ export enum JYZInfoMoudleType {
*/ */
YQHSGX = "YQHSGX", 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)) { else if (TsTool.stringContain(mesh.name, FacilityType.XF_MHT)) {
this.createNewFacilityByMesh(mesh, FacilityType.XF_MHT); this.createNewFacilityByMesh(mesh, FacilityType.XF_MHT);
} }
else if (TsTool.stringContain(mesh.name, FacilityType.XF_SSD)) { else if (TsTool.stringContain(mesh.name, FacilityType.AQSS_SSD)) {
this.createNewFacilityByMesh(mesh, FacilityType.XF_SSD); this.createNewFacilityByMesh(mesh, FacilityType.AQSS_SSD);
} }
else if (TsTool.stringContain(mesh.name, FacilityType.XF_TSLX)) { else if (TsTool.stringContain(mesh.name, FacilityType.AQSS_TSLX)) {
this.createNewFacilityByMesh(mesh, FacilityType.XF_TSLX); this.createNewFacilityByMesh(mesh, FacilityType.AQSS_TSLX);
} }
else if (TsTool.stringContain(mesh.name, FacilityType.XF_XFCM)) { else if (TsTool.stringContain(mesh.name, FacilityType.XF_XFCM)) {
this.createNewFacilityByMesh(mesh, FacilityType.XF_XFCM); this.createNewFacilityByMesh(mesh, FacilityType.XF_XFCM);
@ -617,19 +617,19 @@ export class FacilityWindow extends UIBase {
createOilingByMesh(mesh: AbstractMesh) { createOilingByMesh(mesh: AbstractMesh) {
if (TsTool.stringContain(mesh.name, FacilityType.JY_JYJ)) { if (TsTool.stringContain(mesh.name, FacilityType.JY_JYJ)) {
console.log("找到加油机", mesh) // console.log("找到加油机", mesh)
this.createNewFacilityByMesh(mesh, FacilityType.JY_JYJ); this.createNewFacilityByMesh(mesh, FacilityType.JY_JYJ);
} }
else if (TsTool.stringContain(mesh.name, FacilityType.JY_SYGX)) { else if (TsTool.stringContain(mesh.name, FacilityType.JY_SYGX)) {
console.log("找到输油管线", mesh) // console.log("找到输油管线", mesh)
this.createNewFacilityByMesh(mesh, FacilityType.JY_SYGX); this.createNewFacilityByMesh(mesh, FacilityType.JY_SYGX);
} }
else if (TsTool.stringContain(mesh.name, FacilityType.JY_YG)) { else if (TsTool.stringContain(mesh.name, FacilityType.JY_YG)) {
console.log("找到油罐", mesh) // console.log("找到油罐", mesh)
this.createNewFacilityByMesh(mesh, FacilityType.JY_YG); this.createNewFacilityByMesh(mesh, FacilityType.JY_YG);
} }
else if (TsTool.stringContain(mesh.name, FacilityType.JY_YQHSGX)) { else if (TsTool.stringContain(mesh.name, FacilityType.JY_YQHSGX)) {
console.log("找到油气回收", mesh) // console.log("找到油气回收", mesh)
this.createNewFacilityByMesh(mesh, FacilityType.JY_YQHSGX); this.createNewFacilityByMesh(mesh, FacilityType.JY_YQHSGX);
} }
} }
@ -649,6 +649,7 @@ export class FacilityWindow extends UIBase {
this.createNewFacilityByMesh(mesh, FacilityType.ZD_YQHSGX); this.createNewFacilityByMesh(mesh, FacilityType.ZD_YQHSGX);
} }
if (TsTool.stringContain(mesh.name, FacilityType.ZD_XF)) { if (TsTool.stringContain(mesh.name, FacilityType.ZD_XF)) {
console.log("找到消防阻挡物", mesh.name);
this.createNewFacilityByMesh(mesh, FacilityType.ZD_XF); this.createNewFacilityByMesh(mesh, FacilityType.ZD_XF);
} }
if (TsTool.stringContain(mesh.name, FacilityType.ZD_ZP)) { 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) { } else if (type === 3) {
fenceType = JYZInfoMoudleType.XF fenceType = JYZInfoMoudleType.XF
} else if (type === 4) { } else if (type === 4) {
fenceType = JYZInfoMoudleType.TSLX fenceType = JYZInfoMoudleType.AQSS
} else if (type === 5) { } else if (type === 5) {
fenceType = JYZInfoMoudleType.SYG fenceType = JYZInfoMoudleType.SYG
} else if (type === 6) { } else if (type === 6) {

Loading…
Cancel
Save