Exemplo n.º 1
0
 static void TryLoadFbxSupport()
 {
     if (s_FbxIsLoaded)
     {
         return;
     }
     ModelExporter.RegisterMeshCallback <ProBuilderMesh>(GetMeshForComponent, true);
     m_FbxOptions.quads = ProBuilderSettings.Get <bool>("Export::m_FbxQuads", SettingsScope.User, true);
     s_FbxIsLoaded      = true;
 }
Exemplo n.º 2
0
        static void TryLoadFbxSupport()
        {
            if (FbxExporterAssembly == null)
            {
                return;
            }

            var modelExporter        = FbxExporterAssembly.GetType("UnityEditor.Formats.Fbx.Exporter.ModelExporter");
            var registerMeshCallback = modelExporter.GetMethods(BindingFlags.NonPublic | BindingFlags.Static).Where(x => x.Name == "RegisterMeshCallback").First(x => x.ContainsGenericParameters);

            registerMeshCallback = registerMeshCallback.MakeGenericMethod(typeof(ProBuilderMesh));

            var getMeshForComponent = FbxExporterAssembly.GetTypes()
                                      .Where(t => t.BaseType == typeof(MulticastDelegate) && t.Name.StartsWith("GetMeshForComponent"))
                                      .First(t => t.ContainsGenericParameters);

            getMeshForComponent = getMeshForComponent.MakeGenericType(typeof(ProBuilderMesh));
            var meshDelegate = Delegate.CreateDelegate(getMeshForComponent, typeof(Fbx).GetMethod("GetMeshForComponent", BindingFlags.NonPublic | BindingFlags.Static));

            registerMeshCallback.Invoke(null, new object[] { meshDelegate, true });

            m_FbxOptions.quads = ProBuilderSettings.Get <bool>("Export::m_FbxQuads", SettingsScope.User, true);
        }