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