Use set or map instead of pure object.

This commit is contained in:
kovacsv 2022-01-02 10:00:13 +01:00
parent 862677bbf7
commit d4b3a2e009
7 changed files with 55 additions and 50 deletions

View File

@ -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 ();

View File

@ -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;

View File

@ -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)

View File

@ -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;
}
};

View File

@ -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 = () => {

View File

@ -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++) {

View File

@ -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) {