Use set or map instead of pure object.
This commit is contained in:
parent
862677bbf7
commit
d4b3a2e009
@ -18,14 +18,14 @@ OV.Importer3dm = class extends OV.ImporterBase
|
||||
|
||||
ClearContent ()
|
||||
{
|
||||
this.instanceObjects = null;
|
||||
this.instanceDefinitions = null;
|
||||
this.instanceIdToObject = null;
|
||||
this.instanceIdToDefinition = null;
|
||||
}
|
||||
|
||||
ResetContent ()
|
||||
{
|
||||
this.instanceObjects = {};
|
||||
this.instanceDefinitions = {};
|
||||
this.instanceIdToObject = new Map ();
|
||||
this.instanceIdToDefinition = new Map ();
|
||||
}
|
||||
|
||||
ImportContent (fileContent, onFinish)
|
||||
@ -73,13 +73,13 @@ OV.Importer3dm = class extends OV.ImporterBase
|
||||
let rhinoObject = rhinoObjects.get (i);
|
||||
let rhinoAttributes = rhinoObject.attributes ();
|
||||
if (rhinoAttributes.isInstanceDefinitionObject) {
|
||||
this.instanceObjects[rhinoAttributes.id] = rhinoObject;
|
||||
this.instanceIdToObject.set (rhinoAttributes.id, rhinoObject);
|
||||
}
|
||||
}
|
||||
let rhinoInstanceDefinitions = rhinoDoc.instanceDefinitions ();
|
||||
for (let i = 0; i < rhinoInstanceDefinitions.count (); i++) {
|
||||
let rhinoInstanceDefinition = rhinoInstanceDefinitions.get (i);
|
||||
this.instanceDefinitions[rhinoInstanceDefinition.id] = rhinoInstanceDefinition;
|
||||
this.instanceIdToDefinition.set (rhinoInstanceDefinition.id, rhinoInstanceDefinition);
|
||||
}
|
||||
}
|
||||
|
||||
@ -145,13 +145,13 @@ OV.Importer3dm = class extends OV.ImporterBase
|
||||
deleteMesh = true;
|
||||
} else if (objectType === this.rhino.ObjectType.InstanceReference) {
|
||||
let parentDefinitionId = rhinoGeometry.parentIdefId;
|
||||
let instanceDefinition = this.instanceDefinitions[parentDefinitionId];
|
||||
if (instanceDefinition !== undefined) {
|
||||
if (this.instanceIdToDefinition.has (parentDefinitionId)) {
|
||||
let instanceDefinition = this.instanceIdToDefinition.get (parentDefinitionId);
|
||||
let instanceObjectIds = instanceDefinition.getObjectIds ();
|
||||
for (let i = 0; i < instanceObjectIds.length; i++) {
|
||||
let instanceObjectId = instanceObjectIds[i];
|
||||
let instanceObject = this.instanceObjects[instanceObjectId];
|
||||
if (instanceObject !== undefined) {
|
||||
if (this.instanceIdToObject.has (instanceObjectId)) {
|
||||
let instanceObject = this.instanceIdToObject.get (instanceObjectId);
|
||||
rhinoInstanceReferences.push (rhinoObject);
|
||||
this.ImportRhinoGeometryObject (rhinoDoc, instanceObject, rhinoInstanceReferences);
|
||||
rhinoInstanceReferences.pop ();
|
||||
|
||||
@ -490,7 +490,7 @@ OV.ImporterGltf = class extends OV.ImporterBase
|
||||
ResetContent ()
|
||||
{
|
||||
this.bufferContents = [];
|
||||
this.imageIndexToTextureParams = {};
|
||||
this.imageIndexToTextureParams = new Map ();
|
||||
}
|
||||
|
||||
ImportContent (fileContent, onFinish)
|
||||
@ -725,8 +725,10 @@ OV.ImporterGltf = class extends OV.ImporterBase
|
||||
let gltfImageIndex = gltfTexture.source;
|
||||
let gltfImage = gltf.images[gltfImageIndex];
|
||||
|
||||
let textureParams = this.imageIndexToTextureParams[gltfImageIndex];
|
||||
if (textureParams === undefined) {
|
||||
let textureParams = null;
|
||||
if (this.imageIndexToTextureParams.has (gltfImageIndex)) {
|
||||
textureParams = this.imageIndexToTextureParams.get (gltfImageIndex);
|
||||
} else {
|
||||
textureParams = {
|
||||
name : null,
|
||||
url : null,
|
||||
@ -757,7 +759,7 @@ OV.ImporterGltf = class extends OV.ImporterBase
|
||||
textureParams.buffer = buffer;
|
||||
}
|
||||
}
|
||||
this.imageIndexToTextureParams[gltfImageIndex] = textureParams;
|
||||
this.imageIndexToTextureParams.set (gltfImageIndex, textureParams);
|
||||
}
|
||||
|
||||
texture.name = textureParams.name;
|
||||
|
||||
@ -24,8 +24,8 @@ OV.ImporterIfc = class extends OV.ImporterBase
|
||||
|
||||
ResetContent ()
|
||||
{
|
||||
this.materialNameToIndex = {};
|
||||
this.expressIDToMesh = {};
|
||||
this.materialNameToIndex = new Map ();
|
||||
this.expressIDToMesh = new Map ();
|
||||
}
|
||||
|
||||
ImportContent (fileContent, onFinish)
|
||||
@ -103,7 +103,7 @@ OV.ImporterIfc = class extends OV.ImporterBase
|
||||
vertexOffset += ifcVertices.length / 6;
|
||||
}
|
||||
|
||||
this.expressIDToMesh[ifcMesh.expressID] = mesh;
|
||||
this.expressIDToMesh.set (ifcMesh.expressID, mesh);
|
||||
this.model.AddMeshToRootNode (mesh);
|
||||
}
|
||||
|
||||
@ -117,15 +117,18 @@ OV.ImporterIfc = class extends OV.ImporterBase
|
||||
continue;
|
||||
}
|
||||
rel.RelatedObjects.forEach ((objectRelID) => {
|
||||
let element = this.expressIDToMesh[objectRelID.value];
|
||||
if (element === undefined) {
|
||||
let element = null;
|
||||
if (this.expressIDToMesh.has (objectRelID.value)) {
|
||||
element = this.expressIDToMesh.get (objectRelID.value);
|
||||
} else {
|
||||
let propSetOwner = this.ifc.GetLine (modelID, objectRelID.value, true);
|
||||
if (propSetOwner.type === WebIFC.IFCBUILDING) {
|
||||
element = this.model;
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (element === null) {
|
||||
return;
|
||||
}
|
||||
let propSetDef = rel.RelatingPropertyDefinition;
|
||||
let propSet = this.ifc.GetLine (modelID, propSetDef.value, true);
|
||||
if (!propSet || !propSet.HasProperties) {
|
||||
@ -203,17 +206,18 @@ OV.ImporterIfc = class extends OV.ImporterBase
|
||||
OV.IntegerToHexString (color.b) +
|
||||
OV.IntegerToHexString (parseInt (ifcColor.w * 255.0, 10));
|
||||
|
||||
let materialIndex = this.materialNameToIndex[materialName];
|
||||
if (materialIndex === undefined) {
|
||||
if (this.materialNameToIndex.has (materialName)) {
|
||||
return this.materialNameToIndex.get (materialName);
|
||||
} else {
|
||||
let material = new OV.PhongMaterial ();
|
||||
material.name = materialName;
|
||||
material.color = color;
|
||||
material.opacity = ifcColor.w;
|
||||
OV.UpdateMaterialTransparency (material);
|
||||
materialIndex = this.model.AddMaterial (material);
|
||||
this.materialNameToIndex[materialName] = materialIndex;
|
||||
let materialIndex = this.model.AddMaterial (material);
|
||||
this.materialNameToIndex.set (materialName, materialIndex);
|
||||
return materialIndex;
|
||||
}
|
||||
return materialIndex;
|
||||
}
|
||||
|
||||
GetIFCString (ifcString)
|
||||
|
||||
@ -97,7 +97,7 @@ OV.PlyMaterialHandler = class
|
||||
constructor (model)
|
||||
{
|
||||
this.model = model;
|
||||
this.colorToMaterial = {};
|
||||
this.colorToMaterial = new Map ();
|
||||
}
|
||||
|
||||
GetMaterialIndexByColor (color)
|
||||
@ -108,18 +108,18 @@ OV.PlyMaterialHandler = class
|
||||
OV.IntegerToHexString (color[2]) +
|
||||
OV.IntegerToHexString (color[3]);
|
||||
|
||||
let materialIndex = this.colorToMaterial[materialName];
|
||||
if (materialIndex === undefined) {
|
||||
if (this.colorToMaterial.has (materialName)) {
|
||||
return this.colorToMaterial.get (materialName);
|
||||
} else {
|
||||
let material = new OV.PhongMaterial ();
|
||||
material.name = materialName;
|
||||
material.color = new OV.Color (color[0], color[1], color[2]);
|
||||
material.opacity = color[3] / 255.0;
|
||||
OV.UpdateMaterialTransparency (material);
|
||||
materialIndex = this.model.AddMaterial (material);
|
||||
this.colorToMaterial[materialName] = materialIndex;
|
||||
let materialIndex = this.model.AddMaterial (material);
|
||||
this.colorToMaterial.set (materialName, materialIndex);
|
||||
return materialIndex;
|
||||
}
|
||||
|
||||
return materialIndex;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@ -1,6 +1,5 @@
|
||||
OV.ExternalLibLocation = null;
|
||||
|
||||
OV.LoadedExternalLibs = {};
|
||||
OV.LoadedExternalLibs = new Set ();
|
||||
|
||||
OV.LoadExternalLibrary = function (libName)
|
||||
{
|
||||
@ -9,17 +8,17 @@ OV.LoadExternalLibrary = function (libName)
|
||||
reject ();
|
||||
return;
|
||||
}
|
||||
|
||||
if (OV.LoadedExternalLibs[libName] !== undefined) {
|
||||
|
||||
if (OV.LoadedExternalLibs.has (libName)) {
|
||||
resolve ();
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
let scriptElement = document.createElement ('script');
|
||||
scriptElement.type = 'text/javascript';
|
||||
scriptElement.src = OV.ExternalLibLocation + '/' + libName;
|
||||
scriptElement.onload = () => {
|
||||
OV.LoadedExternalLibs[libName] = true;
|
||||
OV.LoadedExternalLibs.add (libName);
|
||||
resolve ();
|
||||
};
|
||||
scriptElement.onerror = () => {
|
||||
|
||||
@ -51,7 +51,7 @@ OV.ModelFinalizer = class
|
||||
}
|
||||
|
||||
let averageNormals = [];
|
||||
let neigTriangles = vertexToTriangles[vertexIndex];
|
||||
let neigTriangles = vertexToTriangles.get (vertexIndex);
|
||||
for (let i = 0; i < neigTriangles.length; i++) {
|
||||
let neigIndex = neigTriangles[i];
|
||||
let neigTriangle = mesh.GetTriangle (neigIndex);
|
||||
@ -73,10 +73,10 @@ OV.ModelFinalizer = class
|
||||
}
|
||||
|
||||
let triangleNormals = [];
|
||||
let vertexToTriangles = {};
|
||||
let vertexToTriangles = new Map ();
|
||||
|
||||
for (let vertexIndex = 0; vertexIndex < mesh.VertexCount (); vertexIndex++) {
|
||||
vertexToTriangles[vertexIndex] = [];
|
||||
vertexToTriangles.set (vertexIndex, []);
|
||||
}
|
||||
|
||||
for (let triangleIndex = 0; triangleIndex < mesh.TriangleCount (); triangleIndex++) {
|
||||
@ -86,9 +86,9 @@ OV.ModelFinalizer = class
|
||||
let v2 = mesh.GetVertex (triangle.v2);
|
||||
let normal = OV.CalculateTriangleNormal (v0, v1, v2);
|
||||
triangleNormals.push (normal);
|
||||
vertexToTriangles[triangle.v0].push (triangleIndex);
|
||||
vertexToTriangles[triangle.v1].push (triangleIndex);
|
||||
vertexToTriangles[triangle.v2].push (triangleIndex);
|
||||
vertexToTriangles.get (triangle.v0).push (triangleIndex);
|
||||
vertexToTriangles.get (triangle.v1).push (triangleIndex);
|
||||
vertexToTriangles.get (triangle.v2).push (triangleIndex);
|
||||
}
|
||||
|
||||
for (let triangleIndex = 0; triangleIndex < mesh.TriangleCount (); triangleIndex++) {
|
||||
|
||||
@ -44,7 +44,7 @@ OV.Topology = class
|
||||
this.edges = [];
|
||||
this.triangleEdges = [];
|
||||
this.triangles = [];
|
||||
this.edgeStartToEndVertexMap = {};
|
||||
this.edgeStartToEndVertexMap = new Map ();
|
||||
}
|
||||
|
||||
AddVertex ()
|
||||
@ -114,11 +114,11 @@ OV.Topology = class
|
||||
|
||||
AddEdge (startVertex, endVertex)
|
||||
{
|
||||
if (this.edgeStartToEndVertexMap[startVertex] === undefined) {
|
||||
this.edgeStartToEndVertexMap[startVertex] = [];
|
||||
if (!this.edgeStartToEndVertexMap.has (startVertex)) {
|
||||
this.edgeStartToEndVertexMap.set (startVertex, []);
|
||||
}
|
||||
|
||||
let endVertices = this.edgeStartToEndVertexMap[startVertex];
|
||||
|
||||
let endVertices = this.edgeStartToEndVertexMap.get (startVertex);
|
||||
for (let i = 0; i < endVertices.length; i++) {
|
||||
let endVertexItem = endVertices[i];
|
||||
if (endVertexItem.endVertex === endVertex) {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user