public static Mesh Convert(Mesh mesh, BakingMode bakingMode, Channel channel, float thresholdAngle = 0, float sceneScale = 1, float importScale = 1) { WireframeBaker.channel = channel; WireframeBaker.thresholdAngle = thresholdAngle * Mathf.Deg2Rad; #if UNITY_EDITOR CheckTopology(mesh); #endif // Threshold if (bakingMode == BakingMode.AngleThreshold) { return(ConvertThresh(mesh)); } // Barycentric if (bakingMode == BakingMode.Barycentric || bakingMode == BakingMode.ScreenSpace) { return(ConvertBary(mesh)); } // Distance if (bakingMode == BakingMode.WorldSpace) { return(ConvertDist(mesh, isWorldSpace: true, scale: sceneScale / importScale)); } else { return(ConvertDist(mesh, isWorldSpace: false)); } }
public void BeginBake(ProbeBox[] probeBoxes, BakingMode bakingMode, string identifier = default(string), Sphere sphere = default(Sphere)) { oneBakeActive = true; bakeStatus = BakeStatus.InProgress; duringBakeProbeBoxes = probeBoxes; duringBakeMode = bakingMode; duringBakeIdentifier = identifier; duringBakeSphere = sphere; #if UNITY_EDITOR totalProbeBoxes = duringBakeProbeBoxes.Length; #endif if (probeBoxes.Length == 0) { Debug.LogError("Probe Box component not attached or no probe boxes selected for baking."); } // Initialize environment try { duringBakePhononManager = GameObject.FindObjectOfType <PhononManager>(); if (duringBakePhononManager == null) { throw new Exception("Phonon Manager Settings object not found in the scene! Click Window > Phonon"); } bool initializeRenderer = false; duringBakePhononManager.Initialize(initializeRenderer); duringBakePhononContainer = duringBakePhononManager.PhononManagerContainer(); duringBakePhononContainer.Initialize(initializeRenderer, duringBakePhononManager); if (duringBakePhononContainer.Scene().GetScene() == IntPtr.Zero) { throw new Exception("Make sure to pre-export the scene before baking."); } } catch (Exception e) { bakeStatus = BakeStatus.Complete; Debug.LogError(e.Message); return; } bakeCallback = new PhononCore.BakeProgressCallback(AdvanceProgress); #if (UNITY_EDITOR_WIN || UNITY_STANDALONE_WIN) bakeCallbackPointer = Marshal.GetFunctionPointerForDelegate(bakeCallback); bakeCallbackHandle = GCHandle.Alloc(bakeCallbackPointer); GC.Collect(); #endif bakeThread = new Thread(new ThreadStart(BakeEffectThread)); bakeThread.Start(); }