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