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