示例#1
0
        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();
            }
        }
示例#2
0
        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);
                }
            }
        }