示例#1
0
        public override Task Rebuild()
        {
            this.DebugDepth("Rebuild");
            bool changed = false;

            using (RebuildLock())
            {
                var sides    = Sides.ClampIfNotCalculated(this, 3, 360, ref changed);
                var diameter = Diameter.ClampIfNotCalculated(this, .01, 1000000, ref changed);
                var height   = Height.ClampIfNotCalculated(this, .01, 1000000, ref changed);
                using (new CenterAndHeightMaintainer(this))
                {
                    var path = new VertexStorage();
                    path.MoveTo(0, 0);
                    path.LineTo(diameter / 2, 0);
                    path.LineTo(0, height);

                    Mesh = VertexSourceToMesh.Revolve(path, sides);
                }
            }

            Parent?.Invalidate(new InvalidateArgs(this, InvalidateType.Children));
            return(Task.CompletedTask);
        }