private void Update() { LFShape parentShape = null; if (transform.parent != null) { parentShape = transform.parent.GetComponent <LFShape>(); } if (transformHasChanged() && parentShape != null) { parentShape.localTransformHash = 0f; } if (material == null) { material = new Material(Shader.Find("Diffuse")); } if (cachedMesh == null) { cachedMesh = new Mesh(); cachedMesh.indexFormat = UnityEngine.Rendering.IndexFormat.UInt32; } isRootNode = parentShape == null; if (payload != null && !payload.handle.Equals(default(Unity.Jobs.JobHandle)) && (!AsyncRender || payload.handle.IsCompleted)) { payload.handle.Complete(); LFMeshRendering.CompleteRenderLibFiveMesh(ref payload, cachedMesh, vertexSplittingAngle); payload.handle = default(Unity.Jobs.JobHandle); } else if ((tree == null || transformHasChanged() || cachedMesh.vertexCount == 0) && (payload == null || payload.handle.IsCompleted)) { Evaluate(); //tree.RenderMesh(cachedMesh, new Bounds(transform.position, Vector3.one * boundsSize), resolution + 0.001f, vertexSplittingAngle); if (payload == null) { payload = new LFMeshRendering.RenderJobPayload(ref tree); } UnityEngine.Profiling.Profiler.BeginSample("Update LibFive Mesh", this); LFMeshRendering.ScheduleRenderLibFiveMesh(tree, new Bounds(transform.position, Vector3.one * boundsSize), resolution + 0.001f, ref payload); if (!AsyncRender) { Update(); } UnityEngine.Profiling.Profiler.EndSample(); } }
public override void OnInspectorGUI() { DrawDefaultInspector(); if (GUILayout.Button("Save STL")) { LFShape shape = (LFShape)target; string pathString = Path.Combine(Directory.GetParent(Application.dataPath).ToString(), shape.gameObject.name + " - " + System.DateTime.Now.ToShortTimeString().Replace(":", ".") + ".stl"); Mesh toWrite = shape.tree.RenderMesh(new Bounds(shape.transform.position, Vector3.one * shape.boundsSize), shape.resolution + 0.001f); string stlString = LFMeshRendering.createSTL(toWrite); try { File.WriteAllText(pathString, stlString); Debug.Log("Saved STL at: " + pathString); } catch (System.Exception e) { Debug.LogError("Failed to save STL! - " + e); } } }