public void GetGeometries( )
    {
        if (this.fbxsdk == FBX.SDK2010)
        {
            UniFBXGeometry.indexes = Enumerable.Range(0, UniFBX.list.Count).Where(x => list[x].Contains(", \"Mesh\" {")).ToList();
        }
        else
        {
            UniFBXGeometry.indexes = Enumerable.Range(0, UniFBX.list.Count).Where(x => list[x].Contains("\"Geometry::") && list[x].Contains("Mesh")).ToList();
        }

        switch (this.setting.paths.runnningMethode)
        {
        case RunnningMethode.MainThread:
            ugeometries1 = new UniFBXGeometries();
            ugeometries1.Init(this.setting, 1);
            break;

#if (!UNITY_WEBPLAYER && !UNITY_WEBGL)
        case RunnningMethode.AsyncThread:
            if (this.setting.paths.maxThreads > 3)
            {
                ugeometries1 = new UniFBXGeometries();
                ugeometries1.Init(this.setting, 1);
                ugeometries2 = new UniFBXGeometries();
                ugeometries2.Init(this.setting, 2);
                ugeometries3 = new UniFBXGeometries();
                ugeometries3.Init(this.setting, 3);
            }
            else if (this.setting.paths.maxThreads == 3)
            {
                ugeometries1 = new UniFBXGeometries();
                ugeometries1.Init(this.setting, 1);
                ugeometries2 = new UniFBXGeometries();
                ugeometries2.Init(this.setting, 2);
            }
            else
            {
                ugeometries1 = new UniFBXGeometries();
                ugeometries1.Init(this.setting, 1);
            }

            break;
#endif

        default:
            ugeometries1 = new UniFBXGeometries();
            ugeometries1.Init(this.setting, 1);
            break;
        }
    }
 protected virtual void Dispose(bool disposing)
 {
     if (!this.disposed)
     {
         if (disposing)
         {
             this.content = null;
             if (UniFBX.list != null)
             {
                 UniFBX.list.Clear();
             }
             if (UniFBX.meshes != null)
             {
                 UniFBX.meshes.Clear();
             }
             if (this.models != null)
             {
                 this.models.Clear();
             }
             if (this.materialProp70 != null)
             {
                 this.materialProp70.Clear();
             }
             if (this.uanimations != null)
             {
                 this.uanimations.Finish();
             }
             UniFBX.list           = null;
             UniFBX.meshes         = null;
             this.models           = null;
             this.materialProp70   = null;
             this.ulayeredTextures = null;
             this.ugeometries1     = null;
             this.ugeometries2     = null;
             this.ugeometries3     = null;
             this.umodels          = null;
             this.umaterials       = null;
             this.utextures        = null;
             this.ulayeredTextures = null;
             this.uanimations      = null;
             this.ulights          = null;
             this.ucameras         = null;
         }
     }
     this.disposed = true;
 }
 public void Dispose( )
 {
     this.content = null;
     if (UniFBX.list != null)
     {
         UniFBX.list.Clear();
     }
     if (UniFBX.meshes != null)
     {
         UniFBX.meshes.Clear();
     }
     if (this.models != null)
     {
         this.models.Clear();
     }
     if (this.materialProp70 != null)
     {
         this.materialProp70.Clear();
     }
     if (this.uanimations != null)
     {
         this.uanimations.Finish();
     }
     UniFBX.list           = null;
     UniFBX.meshes         = null;
     this.models           = null;
     this.materialProp70   = null;
     this.ulayeredTextures = null;
     this.ugeometries1     = null;
     this.ugeometries2     = null;
     this.ugeometries3     = null;
     this.umodels          = null;
     this.umaterials       = null;
     this.utextures        = null;
     this.ulayeredTextures = null;
     this.uanimations      = null;
     this.ulights          = null;
     this.ucameras         = null;
 }
 public void Add(GameObject o, UniFBXGeometries ugeometries1, UniFBXGeometries ugeometries2, UniFBXGeometries ugeometries3, FBXSetting setting, int geometryIndex)
 {
     StartCoroutine(this.IAdd(o, ugeometries1, ugeometries2, ugeometries3, setting, geometryIndex));
 }
    private IEnumerator IAdd(GameObject o, UniFBXGeometries ugeometries1, UniFBXGeometries ugeometries2, UniFBXGeometries ugeometries3, FBXSetting setting, int geometryIndex)
    {
        if (ugeometries1 != null)
        {
            while (!ugeometries1.IsDone)
            {
                yield return(null);
            }
        }
        if (ugeometries2 != null)
        {
            while (!ugeometries2.IsDone)
            {
                yield return(null);
            }
        }
        if (ugeometries3 != null)
        {
            while (!ugeometries3.IsDone)
            {
                yield return(null);
            }
        }

        Mesh mesh = null;

        if (UniFBX.meshes.ContainsKey(geometryIndex))
        {
            mesh = UniFBX.meshes[geometryIndex];
        }

        if (mesh != null)
        {
            MeshFilter mf = o.AddComponent <MeshFilter> ();
            mf.mesh      = mesh;
            mf.mesh.name = o.name;

            MeshRenderer mr = o.AddComponent <MeshRenderer> ();
            mr.enabled   = setting.meshes.rendererOnLoad;
            mr.materials = new Material[mf.mesh.subMeshCount];

            for (int i = 0; i < mr.materials.Length; i++)
            {
#if UNITY_5
                if (setting.materials.shaderType == ShaderType.Standard)
                {
                    if (setting.materials.standardMaterial)
                    {
                        mr.materials[i].CopyPropertiesFromMaterial(setting.materials.standardMaterial);
                    }
                }

                else if (setting.materials.shaderType == ShaderType.Legacy)
                {
#else
                if (setting.materials.shaderType == ShaderType.Legacy)
                {
#endif
                    if (setting.textures.normalmaps)
                    {
#if UNITY_5
                        mr.materials[i].shader = Shader.Find("Legacy Shaders/Bumped Diffuse");
#else
                        mr.materials[i].shader = Shader.Find("Bumped Diffuse");
#endif
                    }
                    else
                    {
#if UNITY_5
                        mr.materials[i].shader = Shader.Find("Legacy Shaders/Diffuse");
#else
                        mr.materials[i].shader = Shader.Find("Diffuse");
#endif
                    }
                }
                mr.materials[i].name = "0";
                if (setting.materials.materialImported == Imported.No)
                {
                    mr.materials[i].color = setting.materials.colorDefault;
                }
                yield return(null);
            }

            switch (setting.meshes.colliderType)
            {
            case ColliderType.Box: o.AddComponent <BoxCollider> (); break;

            case ColliderType.Mesh: o.AddComponent <MeshCollider> (); break;

            case ColliderType.Sphere: o.AddComponent <SphereCollider> (); break;
            }
        }

        UniFBXGeometry.Count++;
        DestroyImmediate(this);
    }
}