public virtual J3DBuffer getSelectedColorBuffer(Color paramColor) { if (this.selectedColorBuffer == null) { FloatBuffer floatBuffer1 = (FloatBuffer)ColorBuffer.Buffer; float[] arrayOfFloat = new float[this.triangleGeometry.VertexCount * 4]; for (sbyte b = 0; b < this.triangleGeometry.VertexCount; b++) { sbyte b1 = b * 4; arrayOfFloat[b1] = (paramColor.Red / 255); arrayOfFloat[b1 + 1] = (paramColor.Green / 255); arrayOfFloat[b1 + 2] = (paramColor.Blue / 255); arrayOfFloat[b1 + 3] = floatBuffer1.get(b1 + 3); } FloatBuffer floatBuffer2 = ByteBuffer.allocateDirect(32 * arrayOfFloat.Length).order(ByteOrder.nativeOrder()).asFloatBuffer(); floatBuffer2.put(arrayOfFloat, 0, arrayOfFloat.Length); this.selectedColorBuffer = new J3DBuffer(floatBuffer2); } return(this.selectedColorBuffer); }
public IfcEngineGeometryDataJava3d(GeometryArray paramGeometryArray1, GeometryArray paramGeometryArray2, GeometryArray paramGeometryArray3, GeometryData paramGeometryData) { this.triangleGeometry = paramGeometryArray1; this.wireFrameGeometry = paramGeometryArray2; this.innerWireFrameGeometry = paramGeometryArray3; if (paramGeometryArray1 != null && paramGeometryData != null) { this.colorBuffer = paramGeometryArray1.ColorRefBuffer; } if (paramGeometryData != null && paramGeometryData.Materials.length > 0) { foreach (ElementMaterialGeomData elementMaterialGeomData in paramGeometryData.Materials) { if (this.ambientColor == null) { this.ambientColor = new Color(elementMaterialGeomData.DiffuseColor[0], elementMaterialGeomData.DiffuseColor[1], elementMaterialGeomData.DiffuseColor[2], 1.0F); } if (elementMaterialGeomData.Transparency < 1.0F) { this.transparency = Convert.ToDouble(1.0D - elementMaterialGeomData.Transparency); } } } }
public virtual IfcEngineGeometryData createGeometry(GeometryData paramGeometryData) { if (this.o_rendererType != 0) { return(new IfcEngineGeometryDataBimCT(paramGeometryData)); } IndexedTriangleArray indexedTriangleArray = null; IndexedLineArray indexedLineArray = null; bool @bool = false; try { float[] arrayOfFloat1 = paramGeometryData.VertexBuffer; long l1 = arrayOfFloat1.Length; long l2 = l1 * 4L; int[] arrayOfInt = paramGeometryData.IndicesForFaces; long l3 = arrayOfInt.Length; long l4 = l3 * 4L; long l5 = l1 * 4L; float[] arrayOfFloat2 = new float[arrayOfFloat1.Length / 2]; float[] arrayOfFloat3 = new float[arrayOfFloat1.Length / 2]; float[] arrayOfFloat4 = null; if (paramGeometryData.Materials.length > 1) { arrayOfFloat4 = new float[(int)l5]; } sbyte b1 = 0; sbyte b2 = 0; for (bool bool1 = false; bool1 < arrayOfFloat1.Length; bool1 += true) { if (arrayOfFloat4 != null) { arrayOfFloat4[b2] = 0.0F; arrayOfFloat4[b2++] = 0.0F; arrayOfFloat4[b2++] = 0.0F; arrayOfFloat4[b2++] = 1.0F; } arrayOfFloat2[b1] = arrayOfFloat1[bool1]; arrayOfFloat3[b1++] = -arrayOfFloat1[bool1 + 3]; arrayOfFloat2[b1] = arrayOfFloat1[bool1 + true]; arrayOfFloat3[b1++] = -arrayOfFloat1[bool1 + 4]; arrayOfFloat2[b1] = arrayOfFloat1[bool1 + 2]; arrayOfFloat3[b1++] = -arrayOfFloat1[bool1 + 5]; } J3DBuffer j3DBuffer1 = createNioFloatBuffer(arrayOfFloat2, l2 / 2L); J3DBuffer j3DBuffer2 = createNioFloatBuffer(arrayOfFloat3, l2 / 2L); if (paramGeometryData.Materials.length > 1) { indexedTriangleArray = new IndexedTriangleArray(arrayOfFloat2.Length / 3, 10895, arrayOfInt.Length); } else { indexedTriangleArray = new IndexedTriangleArray(arrayOfFloat2.Length / 3, 10883, arrayOfInt.Length); } indexedTriangleArray.NormalRefBuffer = j3DBuffer2; indexedTriangleArray.CoordRefBuffer = j3DBuffer1; indexedTriangleArray.Capability = 21; indexedTriangleArray.Capability = 19; if (arrayOfFloat4 != null) { for (bool bool2 = false; bool2 < arrayOfInt.Length; bool2 += true) { int i = arrayOfInt[bool2]; int j = arrayOfInt[bool2 + true]; int k = arrayOfInt[bool2 + 2]; float[] arrayOfFloat = getColorOfIndex(paramGeometryData, arrayOfInt, j); if (arrayOfFloat4 != null) { arrayOfFloat4[4 * i + 0] = arrayOfFloat[0]; arrayOfFloat4[4 * i + 1] = arrayOfFloat[1]; arrayOfFloat4[4 * i + 2] = arrayOfFloat[2]; arrayOfFloat4[4 * i + 3] = arrayOfFloat[3]; arrayOfFloat4[4 * j + 0] = arrayOfFloat[0]; arrayOfFloat4[4 * j + 1] = arrayOfFloat[1]; arrayOfFloat4[4 * j + 2] = arrayOfFloat[2]; arrayOfFloat4[4 * j + 3] = arrayOfFloat[3]; arrayOfFloat4[4 * k + 0] = arrayOfFloat[0]; arrayOfFloat4[4 * k + 1] = arrayOfFloat[1]; arrayOfFloat4[4 * k + 2] = arrayOfFloat[2]; arrayOfFloat4[4 * k + 3] = arrayOfFloat[3]; } } J3DBuffer j3DBuffer = createNioFloatBuffer(arrayOfFloat4, (32 * arrayOfFloat4.Length)); indexedTriangleArray.ColorRefBuffer = j3DBuffer; } ((IndexedTriangleArray)indexedTriangleArray).CoordIndicesRef = arrayOfInt; if (paramGeometryData.IndicesForLines.length > 0) { indexedLineArray = new IndexedLineArray(arrayOfFloat2.Length / 3, 10881, paramGeometryData.IndicesForLines.length); indexedLineArray.CoordRefBuffer = j3DBuffer1; ((IndexedLineArray)indexedLineArray).CoordIndicesRef = paramGeometryData.IndicesForLines; } else { indexedLineArray = null; } } catch (Exception exception) { Console.WriteLine(exception.ToString()); Console.Write(exception.StackTrace); throw new System.ArgumentException(exception); } return(new IfcEngineGeometryDataJava3d(indexedTriangleArray, indexedLineArray, null, paramGeometryData)); }