# HG changeset patch # User Alys Brooks # Date 2022-12-25 17:16:21 # Node ID ef25f95a7fd01ebca327fdf9abf2e871423f9b22 # Parent b5c8908715bfae632cdb5a1b23670bccb03a43c9 Fix handling when there are too few trees. Also add debug tool to remove trees. diff --git a/SpriteFontPlus/src/obj/project.assets.json b/SpriteFontPlus/src/obj/project.assets.json --- a/SpriteFontPlus/src/obj/project.assets.json +++ b/SpriteFontPlus/src/obj/project.assets.json @@ -2,8 +2,57 @@ "version": 3, "targets": { ".NETFramework,Version=v4.5": { + "Microsoft.NETFramework.ReferenceAssemblies/1.0.2": { + "type": "package", + "dependencies": { + "Microsoft.NETFramework.ReferenceAssemblies.net45": "1.0.2" + } + }, + "Microsoft.NETFramework.ReferenceAssemblies.net45/1.0.2": { + "type": "package", + "build": { + "build/Microsoft.NETFramework.ReferenceAssemblies.net45.targets": {} + } + }, "FNA/1.0.0": { "type": "project", + "framework": ".NETFramework,Version=v4.0", + "compile": { + "bin/placeholder/FNA.dll": {} + }, + "runtime": { + "bin/placeholder/FNA.dll": {} + } + } + }, + ".NETStandard,Version=v2.0": { + "Microsoft.NETCore.Platforms/1.1.0": { + "type": "package", + "compile": { + "lib/netstandard1.0/_._": {} + }, + "runtime": { + "lib/netstandard1.0/_._": {} + } + }, + "NETStandard.Library/2.0.3": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0" + }, + "compile": { + "lib/netstandard1.0/_._": {} + }, + "runtime": { + "lib/netstandard1.0/_._": {} + }, + "build": { + "build/netstandard2.0/NETStandard.Library.targets": {} + } + }, + "FNA/1.0.0": { + "type": "project", + "framework": ".NETStandard,Version=v2.0", "compile": { "bin/placeholder/FNA.dll": {} }, @@ -14,15 +63,493 @@ } }, "libraries": { + "Microsoft.NETCore.Platforms/1.1.0": { + "sha512": "kz0PEW2lhqygehI/d6XsPCQzD7ff7gUJaVGPVETX611eadGsA3A877GdSlU0LRVMCTH/+P3o2iDTak+S08V2+A==", + "type": "package", + "path": "microsoft.netcore.platforms/1.1.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/netstandard1.0/_._", + "microsoft.netcore.platforms.1.1.0.nupkg.sha512", + "microsoft.netcore.platforms.nuspec", + "runtime.json" + ] + }, + "Microsoft.NETFramework.ReferenceAssemblies/1.0.2": { + "sha512": "5/cSEVld+px/CuRrbohO/djfg6++eR6zGpy88MgqloXvkj//WXWpFZyu/OpkXPN0u5m+dN/EVwLNYFUxD4h2+A==", + "type": "package", + "path": "microsoft.netframework.referenceassemblies/1.0.2", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "microsoft.netframework.referenceassemblies.1.0.2.nupkg.sha512", + "microsoft.netframework.referenceassemblies.nuspec" + ] + }, + "Microsoft.NETFramework.ReferenceAssemblies.net45/1.0.2": { + "sha512": "Nm14pRmqB+4u2JEMdtngnbDcJidTmswMxOJ992TpTwiwcUTERxLlHwwSh0HiUoRjS0TO0sozsiB0h6FHjCUdEA==", + "type": "package", + "path": "microsoft.netframework.referenceassemblies.net45/1.0.2", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "build/.NETFramework/v4.5/Accessibility.dll", + "build/.NETFramework/v4.5/Accessibility.xml", + "build/.NETFramework/v4.5/CustomMarshalers.dll", + "build/.NETFramework/v4.5/CustomMarshalers.xml", + "build/.NETFramework/v4.5/Facades/System.Collections.Concurrent.dll", + "build/.NETFramework/v4.5/Facades/System.Collections.dll", + "build/.NETFramework/v4.5/Facades/System.ComponentModel.Annotations.dll", + "build/.NETFramework/v4.5/Facades/System.ComponentModel.EventBasedAsync.dll", + "build/.NETFramework/v4.5/Facades/System.ComponentModel.dll", + "build/.NETFramework/v4.5/Facades/System.Diagnostics.Contracts.dll", + "build/.NETFramework/v4.5/Facades/System.Diagnostics.Debug.dll", + "build/.NETFramework/v4.5/Facades/System.Diagnostics.Tools.dll", + "build/.NETFramework/v4.5/Facades/System.Diagnostics.Tracing.dll", + "build/.NETFramework/v4.5/Facades/System.Dynamic.Runtime.dll", + "build/.NETFramework/v4.5/Facades/System.Globalization.dll", + "build/.NETFramework/v4.5/Facades/System.IO.dll", + "build/.NETFramework/v4.5/Facades/System.Linq.Expressions.dll", + "build/.NETFramework/v4.5/Facades/System.Linq.Parallel.dll", + "build/.NETFramework/v4.5/Facades/System.Linq.Queryable.dll", + "build/.NETFramework/v4.5/Facades/System.Linq.dll", + "build/.NETFramework/v4.5/Facades/System.Net.NetworkInformation.dll", + "build/.NETFramework/v4.5/Facades/System.Net.Primitives.dll", + "build/.NETFramework/v4.5/Facades/System.Net.Requests.dll", + "build/.NETFramework/v4.5/Facades/System.ObjectModel.dll", + "build/.NETFramework/v4.5/Facades/System.Reflection.Emit.ILGeneration.dll", + "build/.NETFramework/v4.5/Facades/System.Reflection.Emit.Lightweight.dll", + "build/.NETFramework/v4.5/Facades/System.Reflection.Emit.dll", + "build/.NETFramework/v4.5/Facades/System.Reflection.Extensions.dll", + "build/.NETFramework/v4.5/Facades/System.Reflection.Primitives.dll", + "build/.NETFramework/v4.5/Facades/System.Reflection.dll", + "build/.NETFramework/v4.5/Facades/System.Resources.ResourceManager.dll", + "build/.NETFramework/v4.5/Facades/System.Runtime.Extensions.dll", + "build/.NETFramework/v4.5/Facades/System.Runtime.InteropServices.WindowsRuntime.dll", + "build/.NETFramework/v4.5/Facades/System.Runtime.InteropServices.dll", + "build/.NETFramework/v4.5/Facades/System.Runtime.Numerics.dll", + "build/.NETFramework/v4.5/Facades/System.Runtime.Serialization.Json.dll", + "build/.NETFramework/v4.5/Facades/System.Runtime.Serialization.Primitives.dll", + "build/.NETFramework/v4.5/Facades/System.Runtime.Serialization.Xml.dll", + "build/.NETFramework/v4.5/Facades/System.Runtime.dll", + "build/.NETFramework/v4.5/Facades/System.Security.Principal.dll", + "build/.NETFramework/v4.5/Facades/System.ServiceModel.Duplex.dll", + "build/.NETFramework/v4.5/Facades/System.ServiceModel.Http.dll", + "build/.NETFramework/v4.5/Facades/System.ServiceModel.NetTcp.dll", + "build/.NETFramework/v4.5/Facades/System.ServiceModel.Primitives.dll", + "build/.NETFramework/v4.5/Facades/System.ServiceModel.Security.dll", + "build/.NETFramework/v4.5/Facades/System.Text.Encoding.Extensions.dll", + "build/.NETFramework/v4.5/Facades/System.Text.Encoding.dll", + "build/.NETFramework/v4.5/Facades/System.Text.RegularExpressions.dll", + "build/.NETFramework/v4.5/Facades/System.Threading.Tasks.Parallel.dll", + "build/.NETFramework/v4.5/Facades/System.Threading.Tasks.dll", + "build/.NETFramework/v4.5/Facades/System.Threading.dll", + "build/.NETFramework/v4.5/Facades/System.Xml.ReaderWriter.dll", + "build/.NETFramework/v4.5/Facades/System.Xml.XDocument.dll", + "build/.NETFramework/v4.5/Facades/System.Xml.XmlSerializer.dll", + "build/.NETFramework/v4.5/ISymWrapper.dll", + "build/.NETFramework/v4.5/ISymWrapper.xml", + "build/.NETFramework/v4.5/Microsoft.Activities.Build.dll", + "build/.NETFramework/v4.5/Microsoft.Activities.Build.xml", + "build/.NETFramework/v4.5/Microsoft.Build.Conversion.v4.0.dll", + "build/.NETFramework/v4.5/Microsoft.Build.Conversion.v4.0.xml", + "build/.NETFramework/v4.5/Microsoft.Build.Engine.dll", + "build/.NETFramework/v4.5/Microsoft.Build.Engine.xml", + "build/.NETFramework/v4.5/Microsoft.Build.Framework.dll", + "build/.NETFramework/v4.5/Microsoft.Build.Framework.xml", + "build/.NETFramework/v4.5/Microsoft.Build.Tasks.v4.0.dll", + "build/.NETFramework/v4.5/Microsoft.Build.Tasks.v4.0.xml", + "build/.NETFramework/v4.5/Microsoft.Build.Utilities.v4.0.dll", + "build/.NETFramework/v4.5/Microsoft.Build.Utilities.v4.0.xml", + "build/.NETFramework/v4.5/Microsoft.Build.dll", + "build/.NETFramework/v4.5/Microsoft.Build.xml", + "build/.NETFramework/v4.5/Microsoft.CSharp.dll", + "build/.NETFramework/v4.5/Microsoft.CSharp.xml", + "build/.NETFramework/v4.5/Microsoft.JScript.dll", + "build/.NETFramework/v4.5/Microsoft.JScript.xml", + "build/.NETFramework/v4.5/Microsoft.VisualBasic.Compatibility.Data.dll", + "build/.NETFramework/v4.5/Microsoft.VisualBasic.Compatibility.Data.xml", + "build/.NETFramework/v4.5/Microsoft.VisualBasic.Compatibility.dll", + "build/.NETFramework/v4.5/Microsoft.VisualBasic.Compatibility.xml", + "build/.NETFramework/v4.5/Microsoft.VisualBasic.dll", + "build/.NETFramework/v4.5/Microsoft.VisualBasic.xml", + "build/.NETFramework/v4.5/Microsoft.VisualC.STLCLR.dll", + "build/.NETFramework/v4.5/Microsoft.VisualC.STLCLR.xml", + "build/.NETFramework/v4.5/Microsoft.VisualC.dll", + "build/.NETFramework/v4.5/Microsoft.VisualC.xml", + "build/.NETFramework/v4.5/PermissionSets/FullTrust.xml", + "build/.NETFramework/v4.5/PermissionSets/Internet.xml", + "build/.NETFramework/v4.5/PermissionSets/LocalIntranet.xml", + "build/.NETFramework/v4.5/PresentationBuildTasks.dll", + "build/.NETFramework/v4.5/PresentationBuildTasks.xml", + "build/.NETFramework/v4.5/PresentationCore.dll", + "build/.NETFramework/v4.5/PresentationCore.xml", + "build/.NETFramework/v4.5/PresentationFramework.Aero.dll", + "build/.NETFramework/v4.5/PresentationFramework.Aero.xml", + "build/.NETFramework/v4.5/PresentationFramework.Aero2.dll", + "build/.NETFramework/v4.5/PresentationFramework.AeroLite.dll", + "build/.NETFramework/v4.5/PresentationFramework.Classic.dll", + "build/.NETFramework/v4.5/PresentationFramework.Classic.xml", + "build/.NETFramework/v4.5/PresentationFramework.Luna.dll", + "build/.NETFramework/v4.5/PresentationFramework.Luna.xml", + "build/.NETFramework/v4.5/PresentationFramework.Royale.dll", + "build/.NETFramework/v4.5/PresentationFramework.Royale.xml", + "build/.NETFramework/v4.5/PresentationFramework.dll", + "build/.NETFramework/v4.5/PresentationFramework.xml", + "build/.NETFramework/v4.5/ReachFramework.dll", + "build/.NETFramework/v4.5/ReachFramework.xml", + "build/.NETFramework/v4.5/RedistList/FrameworkList.xml", + "build/.NETFramework/v4.5/System.Activities.Core.Presentation.dll", + "build/.NETFramework/v4.5/System.Activities.Core.Presentation.xml", + "build/.NETFramework/v4.5/System.Activities.DurableInstancing.dll", + "build/.NETFramework/v4.5/System.Activities.DurableInstancing.xml", + "build/.NETFramework/v4.5/System.Activities.Presentation.dll", + "build/.NETFramework/v4.5/System.Activities.Presentation.xml", + "build/.NETFramework/v4.5/System.Activities.dll", + "build/.NETFramework/v4.5/System.Activities.xml", + "build/.NETFramework/v4.5/System.AddIn.Contract.dll", + "build/.NETFramework/v4.5/System.AddIn.Contract.xml", + "build/.NETFramework/v4.5/System.AddIn.dll", + "build/.NETFramework/v4.5/System.AddIn.xml", + "build/.NETFramework/v4.5/System.ComponentModel.Composition.Registration.dll", + "build/.NETFramework/v4.5/System.ComponentModel.Composition.dll", + "build/.NETFramework/v4.5/System.ComponentModel.Composition.xml", + "build/.NETFramework/v4.5/System.ComponentModel.DataAnnotations.dll", + "build/.NETFramework/v4.5/System.ComponentModel.DataAnnotations.xml", + "build/.NETFramework/v4.5/System.Configuration.Install.dll", + "build/.NETFramework/v4.5/System.Configuration.Install.xml", + "build/.NETFramework/v4.5/System.Configuration.dll", + "build/.NETFramework/v4.5/System.Configuration.xml", + "build/.NETFramework/v4.5/System.Core.dll", + "build/.NETFramework/v4.5/System.Core.xml", + "build/.NETFramework/v4.5/System.Data.DataSetExtensions.dll", + "build/.NETFramework/v4.5/System.Data.DataSetExtensions.xml", + "build/.NETFramework/v4.5/System.Data.Entity.Design.dll", + "build/.NETFramework/v4.5/System.Data.Entity.Design.xml", + "build/.NETFramework/v4.5/System.Data.Entity.dll", + "build/.NETFramework/v4.5/System.Data.Entity.xml", + "build/.NETFramework/v4.5/System.Data.Linq.dll", + "build/.NETFramework/v4.5/System.Data.Linq.xml", + "build/.NETFramework/v4.5/System.Data.OracleClient.dll", + "build/.NETFramework/v4.5/System.Data.OracleClient.xml", + "build/.NETFramework/v4.5/System.Data.Services.Client.dll", + "build/.NETFramework/v4.5/System.Data.Services.Client.xml", + "build/.NETFramework/v4.5/System.Data.Services.Design.dll", + "build/.NETFramework/v4.5/System.Data.Services.Design.xml", + "build/.NETFramework/v4.5/System.Data.Services.dll", + "build/.NETFramework/v4.5/System.Data.Services.xml", + "build/.NETFramework/v4.5/System.Data.SqlXml.dll", + "build/.NETFramework/v4.5/System.Data.SqlXml.xml", + "build/.NETFramework/v4.5/System.Data.dll", + "build/.NETFramework/v4.5/System.Data.xml", + "build/.NETFramework/v4.5/System.Deployment.dll", + "build/.NETFramework/v4.5/System.Deployment.xml", + "build/.NETFramework/v4.5/System.Design.dll", + "build/.NETFramework/v4.5/System.Design.xml", + "build/.NETFramework/v4.5/System.Device.dll", + "build/.NETFramework/v4.5/System.Device.xml", + "build/.NETFramework/v4.5/System.DirectoryServices.AccountManagement.dll", + "build/.NETFramework/v4.5/System.DirectoryServices.AccountManagement.xml", + "build/.NETFramework/v4.5/System.DirectoryServices.Protocols.dll", + "build/.NETFramework/v4.5/System.DirectoryServices.Protocols.xml", + "build/.NETFramework/v4.5/System.DirectoryServices.dll", + "build/.NETFramework/v4.5/System.DirectoryServices.xml", + "build/.NETFramework/v4.5/System.Drawing.Design.dll", + "build/.NETFramework/v4.5/System.Drawing.Design.xml", + "build/.NETFramework/v4.5/System.Drawing.dll", + "build/.NETFramework/v4.5/System.Drawing.xml", + "build/.NETFramework/v4.5/System.EnterpriseServices.Thunk.dll", + "build/.NETFramework/v4.5/System.EnterpriseServices.Wrapper.dll", + "build/.NETFramework/v4.5/System.EnterpriseServices.dll", + "build/.NETFramework/v4.5/System.EnterpriseServices.xml", + "build/.NETFramework/v4.5/System.IO.Compression.FileSystem.dll", + "build/.NETFramework/v4.5/System.IO.Compression.FileSystem.xml", + "build/.NETFramework/v4.5/System.IO.Compression.dll", + "build/.NETFramework/v4.5/System.IO.Compression.xml", + "build/.NETFramework/v4.5/System.IO.Log.dll", + "build/.NETFramework/v4.5/System.IO.Log.xml", + "build/.NETFramework/v4.5/System.IdentityModel.Selectors.dll", + "build/.NETFramework/v4.5/System.IdentityModel.Selectors.xml", + "build/.NETFramework/v4.5/System.IdentityModel.Services.dll", + "build/.NETFramework/v4.5/System.IdentityModel.Services.xml", + "build/.NETFramework/v4.5/System.IdentityModel.dll", + "build/.NETFramework/v4.5/System.IdentityModel.xml", + "build/.NETFramework/v4.5/System.Management.Instrumentation.dll", + "build/.NETFramework/v4.5/System.Management.Instrumentation.xml", + "build/.NETFramework/v4.5/System.Management.dll", + "build/.NETFramework/v4.5/System.Management.xml", + "build/.NETFramework/v4.5/System.Messaging.dll", + "build/.NETFramework/v4.5/System.Messaging.xml", + "build/.NETFramework/v4.5/System.Net.Http.WebRequest.dll", + "build/.NETFramework/v4.5/System.Net.Http.WebRequest.xml", + "build/.NETFramework/v4.5/System.Net.Http.dll", + "build/.NETFramework/v4.5/System.Net.Http.xml", + "build/.NETFramework/v4.5/System.Net.dll", + "build/.NETFramework/v4.5/System.Net.xml", + "build/.NETFramework/v4.5/System.Numerics.dll", + "build/.NETFramework/v4.5/System.Numerics.xml", + "build/.NETFramework/v4.5/System.Printing.dll", + "build/.NETFramework/v4.5/System.Printing.xml", + "build/.NETFramework/v4.5/System.Reflection.Context.dll", + "build/.NETFramework/v4.5/System.Reflection.Context.xml", + "build/.NETFramework/v4.5/System.Runtime.Caching.dll", + "build/.NETFramework/v4.5/System.Runtime.Caching.xml", + "build/.NETFramework/v4.5/System.Runtime.DurableInstancing.dll", + "build/.NETFramework/v4.5/System.Runtime.DurableInstancing.xml", + "build/.NETFramework/v4.5/System.Runtime.Remoting.dll", + "build/.NETFramework/v4.5/System.Runtime.Remoting.xml", + "build/.NETFramework/v4.5/System.Runtime.Serialization.Formatters.Soap.dll", + "build/.NETFramework/v4.5/System.Runtime.Serialization.Formatters.Soap.xml", + "build/.NETFramework/v4.5/System.Runtime.Serialization.dll", + "build/.NETFramework/v4.5/System.Runtime.Serialization.xml", + "build/.NETFramework/v4.5/System.Security.dll", + "build/.NETFramework/v4.5/System.Security.xml", + "build/.NETFramework/v4.5/System.ServiceModel.Activation.dll", + "build/.NETFramework/v4.5/System.ServiceModel.Activation.xml", + "build/.NETFramework/v4.5/System.ServiceModel.Activities.dll", + "build/.NETFramework/v4.5/System.ServiceModel.Activities.xml", + "build/.NETFramework/v4.5/System.ServiceModel.Channels.dll", + "build/.NETFramework/v4.5/System.ServiceModel.Channels.xml", + "build/.NETFramework/v4.5/System.ServiceModel.Discovery.dll", + "build/.NETFramework/v4.5/System.ServiceModel.Discovery.xml", + "build/.NETFramework/v4.5/System.ServiceModel.Routing.dll", + "build/.NETFramework/v4.5/System.ServiceModel.Routing.xml", + "build/.NETFramework/v4.5/System.ServiceModel.Web.dll", + "build/.NETFramework/v4.5/System.ServiceModel.Web.xml", + "build/.NETFramework/v4.5/System.ServiceModel.dll", + "build/.NETFramework/v4.5/System.ServiceModel.xml", + "build/.NETFramework/v4.5/System.ServiceProcess.dll", + "build/.NETFramework/v4.5/System.ServiceProcess.xml", + "build/.NETFramework/v4.5/System.Speech.dll", + "build/.NETFramework/v4.5/System.Speech.xml", + "build/.NETFramework/v4.5/System.Threading.Tasks.Dataflow.xml", + "build/.NETFramework/v4.5/System.Transactions.dll", + "build/.NETFramework/v4.5/System.Transactions.xml", + "build/.NETFramework/v4.5/System.Web.Abstractions.dll", + "build/.NETFramework/v4.5/System.Web.ApplicationServices.dll", + "build/.NETFramework/v4.5/System.Web.ApplicationServices.xml", + "build/.NETFramework/v4.5/System.Web.DataVisualization.Design.dll", + "build/.NETFramework/v4.5/System.Web.DataVisualization.dll", + "build/.NETFramework/v4.5/System.Web.DataVisualization.xml", + "build/.NETFramework/v4.5/System.Web.DynamicData.Design.dll", + "build/.NETFramework/v4.5/System.Web.DynamicData.Design.xml", + "build/.NETFramework/v4.5/System.Web.DynamicData.dll", + "build/.NETFramework/v4.5/System.Web.DynamicData.xml", + "build/.NETFramework/v4.5/System.Web.Entity.Design.dll", + "build/.NETFramework/v4.5/System.Web.Entity.Design.xml", + "build/.NETFramework/v4.5/System.Web.Entity.dll", + "build/.NETFramework/v4.5/System.Web.Entity.xml", + "build/.NETFramework/v4.5/System.Web.Extensions.Design.dll", + "build/.NETFramework/v4.5/System.Web.Extensions.Design.xml", + "build/.NETFramework/v4.5/System.Web.Extensions.dll", + "build/.NETFramework/v4.5/System.Web.Extensions.xml", + "build/.NETFramework/v4.5/System.Web.Mobile.dll", + "build/.NETFramework/v4.5/System.Web.Mobile.xml", + "build/.NETFramework/v4.5/System.Web.RegularExpressions.dll", + "build/.NETFramework/v4.5/System.Web.RegularExpressions.xml", + "build/.NETFramework/v4.5/System.Web.Routing.dll", + "build/.NETFramework/v4.5/System.Web.Services.dll", + "build/.NETFramework/v4.5/System.Web.Services.xml", + "build/.NETFramework/v4.5/System.Web.dll", + "build/.NETFramework/v4.5/System.Web.xml", + "build/.NETFramework/v4.5/System.Windows.Controls.Ribbon.dll", + "build/.NETFramework/v4.5/System.Windows.Controls.Ribbon.xml", + "build/.NETFramework/v4.5/System.Windows.Forms.DataVisualization.Design.dll", + "build/.NETFramework/v4.5/System.Windows.Forms.DataVisualization.dll", + "build/.NETFramework/v4.5/System.Windows.Forms.DataVisualization.xml", + "build/.NETFramework/v4.5/System.Windows.Forms.dll", + "build/.NETFramework/v4.5/System.Windows.Forms.xml", + "build/.NETFramework/v4.5/System.Windows.Input.Manipulations.dll", + "build/.NETFramework/v4.5/System.Windows.Input.Manipulations.xml", + "build/.NETFramework/v4.5/System.Windows.Presentation.dll", + "build/.NETFramework/v4.5/System.Windows.Presentation.xml", + "build/.NETFramework/v4.5/System.Windows.dll", + "build/.NETFramework/v4.5/System.Workflow.Activities.dll", + "build/.NETFramework/v4.5/System.Workflow.Activities.xml", + "build/.NETFramework/v4.5/System.Workflow.ComponentModel.dll", + "build/.NETFramework/v4.5/System.Workflow.ComponentModel.xml", + "build/.NETFramework/v4.5/System.Workflow.Runtime.dll", + "build/.NETFramework/v4.5/System.Workflow.Runtime.xml", + "build/.NETFramework/v4.5/System.WorkflowServices.dll", + "build/.NETFramework/v4.5/System.WorkflowServices.xml", + "build/.NETFramework/v4.5/System.Xaml.dll", + "build/.NETFramework/v4.5/System.Xaml.xml", + "build/.NETFramework/v4.5/System.Xml.Linq.dll", + "build/.NETFramework/v4.5/System.Xml.Linq.xml", + "build/.NETFramework/v4.5/System.Xml.Serialization.dll", + "build/.NETFramework/v4.5/System.Xml.dll", + "build/.NETFramework/v4.5/System.Xml.xml", + "build/.NETFramework/v4.5/System.dll", + "build/.NETFramework/v4.5/System.xml", + "build/.NETFramework/v4.5/UIAutomationClient.dll", + "build/.NETFramework/v4.5/UIAutomationClient.xml", + "build/.NETFramework/v4.5/UIAutomationClientsideProviders.dll", + "build/.NETFramework/v4.5/UIAutomationClientsideProviders.xml", + "build/.NETFramework/v4.5/UIAutomationProvider.dll", + "build/.NETFramework/v4.5/UIAutomationProvider.xml", + "build/.NETFramework/v4.5/UIAutomationTypes.dll", + "build/.NETFramework/v4.5/UIAutomationTypes.xml", + "build/.NETFramework/v4.5/WindowsBase.dll", + "build/.NETFramework/v4.5/WindowsBase.xml", + "build/.NETFramework/v4.5/WindowsFormsIntegration.dll", + "build/.NETFramework/v4.5/WindowsFormsIntegration.xml", + "build/.NETFramework/v4.5/XamlBuildTask.dll", + "build/.NETFramework/v4.5/XamlBuildTask.xml", + "build/.NETFramework/v4.5/mscorlib.dll", + "build/.NETFramework/v4.5/mscorlib.xml", + "build/.NETFramework/v4.5/sysglobl.dll", + "build/.NETFramework/v4.5/sysglobl.xml", + "build/Microsoft.NETFramework.ReferenceAssemblies.net45.targets", + "microsoft.netframework.referenceassemblies.net45.1.0.2.nupkg.sha512", + "microsoft.netframework.referenceassemblies.net45.nuspec" + ] + }, + "NETStandard.Library/2.0.3": { + "sha512": "st47PosZSHrjECdjeIzZQbzivYBJFv6P2nv4cj2ypdI204DO+vZ7l5raGMiX4eXMJ53RfOIg+/s4DHVZ54Nu2A==", + "type": "package", + "path": "netstandard.library/2.0.3", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "build/netstandard2.0/NETStandard.Library.targets", + "build/netstandard2.0/ref/Microsoft.Win32.Primitives.dll", + "build/netstandard2.0/ref/System.AppContext.dll", + "build/netstandard2.0/ref/System.Collections.Concurrent.dll", + "build/netstandard2.0/ref/System.Collections.NonGeneric.dll", + "build/netstandard2.0/ref/System.Collections.Specialized.dll", + "build/netstandard2.0/ref/System.Collections.dll", + "build/netstandard2.0/ref/System.ComponentModel.Composition.dll", + "build/netstandard2.0/ref/System.ComponentModel.EventBasedAsync.dll", + "build/netstandard2.0/ref/System.ComponentModel.Primitives.dll", + "build/netstandard2.0/ref/System.ComponentModel.TypeConverter.dll", + "build/netstandard2.0/ref/System.ComponentModel.dll", + "build/netstandard2.0/ref/System.Console.dll", + "build/netstandard2.0/ref/System.Core.dll", + "build/netstandard2.0/ref/System.Data.Common.dll", + "build/netstandard2.0/ref/System.Data.dll", + "build/netstandard2.0/ref/System.Diagnostics.Contracts.dll", + "build/netstandard2.0/ref/System.Diagnostics.Debug.dll", + "build/netstandard2.0/ref/System.Diagnostics.FileVersionInfo.dll", + "build/netstandard2.0/ref/System.Diagnostics.Process.dll", + "build/netstandard2.0/ref/System.Diagnostics.StackTrace.dll", + "build/netstandard2.0/ref/System.Diagnostics.TextWriterTraceListener.dll", + "build/netstandard2.0/ref/System.Diagnostics.Tools.dll", + "build/netstandard2.0/ref/System.Diagnostics.TraceSource.dll", + "build/netstandard2.0/ref/System.Diagnostics.Tracing.dll", + "build/netstandard2.0/ref/System.Drawing.Primitives.dll", + "build/netstandard2.0/ref/System.Drawing.dll", + "build/netstandard2.0/ref/System.Dynamic.Runtime.dll", + "build/netstandard2.0/ref/System.Globalization.Calendars.dll", + "build/netstandard2.0/ref/System.Globalization.Extensions.dll", + "build/netstandard2.0/ref/System.Globalization.dll", + "build/netstandard2.0/ref/System.IO.Compression.FileSystem.dll", + "build/netstandard2.0/ref/System.IO.Compression.ZipFile.dll", + "build/netstandard2.0/ref/System.IO.Compression.dll", + "build/netstandard2.0/ref/System.IO.FileSystem.DriveInfo.dll", + "build/netstandard2.0/ref/System.IO.FileSystem.Primitives.dll", + "build/netstandard2.0/ref/System.IO.FileSystem.Watcher.dll", + "build/netstandard2.0/ref/System.IO.FileSystem.dll", + "build/netstandard2.0/ref/System.IO.IsolatedStorage.dll", + "build/netstandard2.0/ref/System.IO.MemoryMappedFiles.dll", + "build/netstandard2.0/ref/System.IO.Pipes.dll", + "build/netstandard2.0/ref/System.IO.UnmanagedMemoryStream.dll", + "build/netstandard2.0/ref/System.IO.dll", + "build/netstandard2.0/ref/System.Linq.Expressions.dll", + "build/netstandard2.0/ref/System.Linq.Parallel.dll", + "build/netstandard2.0/ref/System.Linq.Queryable.dll", + "build/netstandard2.0/ref/System.Linq.dll", + "build/netstandard2.0/ref/System.Net.Http.dll", + "build/netstandard2.0/ref/System.Net.NameResolution.dll", + "build/netstandard2.0/ref/System.Net.NetworkInformation.dll", + "build/netstandard2.0/ref/System.Net.Ping.dll", + "build/netstandard2.0/ref/System.Net.Primitives.dll", + "build/netstandard2.0/ref/System.Net.Requests.dll", + "build/netstandard2.0/ref/System.Net.Security.dll", + "build/netstandard2.0/ref/System.Net.Sockets.dll", + "build/netstandard2.0/ref/System.Net.WebHeaderCollection.dll", + "build/netstandard2.0/ref/System.Net.WebSockets.Client.dll", + "build/netstandard2.0/ref/System.Net.WebSockets.dll", + "build/netstandard2.0/ref/System.Net.dll", + "build/netstandard2.0/ref/System.Numerics.dll", + "build/netstandard2.0/ref/System.ObjectModel.dll", + "build/netstandard2.0/ref/System.Reflection.Extensions.dll", + "build/netstandard2.0/ref/System.Reflection.Primitives.dll", + "build/netstandard2.0/ref/System.Reflection.dll", + "build/netstandard2.0/ref/System.Resources.Reader.dll", + "build/netstandard2.0/ref/System.Resources.ResourceManager.dll", + "build/netstandard2.0/ref/System.Resources.Writer.dll", + "build/netstandard2.0/ref/System.Runtime.CompilerServices.VisualC.dll", + "build/netstandard2.0/ref/System.Runtime.Extensions.dll", + "build/netstandard2.0/ref/System.Runtime.Handles.dll", + "build/netstandard2.0/ref/System.Runtime.InteropServices.RuntimeInformation.dll", + "build/netstandard2.0/ref/System.Runtime.InteropServices.dll", + "build/netstandard2.0/ref/System.Runtime.Numerics.dll", + "build/netstandard2.0/ref/System.Runtime.Serialization.Formatters.dll", + "build/netstandard2.0/ref/System.Runtime.Serialization.Json.dll", + "build/netstandard2.0/ref/System.Runtime.Serialization.Primitives.dll", + "build/netstandard2.0/ref/System.Runtime.Serialization.Xml.dll", + "build/netstandard2.0/ref/System.Runtime.Serialization.dll", + "build/netstandard2.0/ref/System.Runtime.dll", + "build/netstandard2.0/ref/System.Security.Claims.dll", + "build/netstandard2.0/ref/System.Security.Cryptography.Algorithms.dll", + "build/netstandard2.0/ref/System.Security.Cryptography.Csp.dll", + "build/netstandard2.0/ref/System.Security.Cryptography.Encoding.dll", + "build/netstandard2.0/ref/System.Security.Cryptography.Primitives.dll", + "build/netstandard2.0/ref/System.Security.Cryptography.X509Certificates.dll", + "build/netstandard2.0/ref/System.Security.Principal.dll", + "build/netstandard2.0/ref/System.Security.SecureString.dll", + "build/netstandard2.0/ref/System.ServiceModel.Web.dll", + "build/netstandard2.0/ref/System.Text.Encoding.Extensions.dll", + "build/netstandard2.0/ref/System.Text.Encoding.dll", + "build/netstandard2.0/ref/System.Text.RegularExpressions.dll", + "build/netstandard2.0/ref/System.Threading.Overlapped.dll", + "build/netstandard2.0/ref/System.Threading.Tasks.Parallel.dll", + "build/netstandard2.0/ref/System.Threading.Tasks.dll", + "build/netstandard2.0/ref/System.Threading.Thread.dll", + "build/netstandard2.0/ref/System.Threading.ThreadPool.dll", + "build/netstandard2.0/ref/System.Threading.Timer.dll", + "build/netstandard2.0/ref/System.Threading.dll", + "build/netstandard2.0/ref/System.Transactions.dll", + "build/netstandard2.0/ref/System.ValueTuple.dll", + "build/netstandard2.0/ref/System.Web.dll", + "build/netstandard2.0/ref/System.Windows.dll", + "build/netstandard2.0/ref/System.Xml.Linq.dll", + "build/netstandard2.0/ref/System.Xml.ReaderWriter.dll", + "build/netstandard2.0/ref/System.Xml.Serialization.dll", + "build/netstandard2.0/ref/System.Xml.XDocument.dll", + "build/netstandard2.0/ref/System.Xml.XPath.XDocument.dll", + "build/netstandard2.0/ref/System.Xml.XPath.dll", + "build/netstandard2.0/ref/System.Xml.XmlDocument.dll", + "build/netstandard2.0/ref/System.Xml.XmlSerializer.dll", + "build/netstandard2.0/ref/System.Xml.dll", + "build/netstandard2.0/ref/System.dll", + "build/netstandard2.0/ref/mscorlib.dll", + "build/netstandard2.0/ref/netstandard.dll", + "build/netstandard2.0/ref/netstandard.xml", + "lib/netstandard1.0/_._", + "netstandard.library.2.0.3.nupkg.sha512", + "netstandard.library.nuspec" + ] + }, "FNA/1.0.0": { "type": "project", - "path": "../../FNA/FNA.csproj", - "msbuildProject": "../../FNA/FNA.csproj" + "path": "../../FNA/FNA.Core.csproj", + "msbuildProject": "../../FNA/FNA.Core.csproj" } }, "projectFileDependencyGroups": { ".NETFramework,Version=v4.5": [ - "FNA >= 1.0.0" + "FNA >= 1.0.0", + "Microsoft.NETFramework.ReferenceAssemblies >= 1.0.2" + ], + ".NETStandard,Version=v2.0": [ + "FNA >= 1.0.0", + "NETStandard.Library >= 2.0.3" ] }, "packageFolders": { @@ -31,26 +558,37 @@ "project": { "version": "1.0.0", "restore": { - "projectUniqueName": "/home/alys/repos/isometric-park-fna/SpriteFontPlus/src/SpriteFontPlus.FNA.csproj", + "projectUniqueName": "/home/alys/repos/isometric-park-fna/SpriteFontPlus/src/SpriteFontPlus.FNA.Core.csproj", "projectName": "SpriteFontPlus", - "projectPath": "/home/alys/repos/isometric-park-fna/SpriteFontPlus/src/SpriteFontPlus.FNA.csproj", + "projectPath": "/home/alys/repos/isometric-park-fna/SpriteFontPlus/src/SpriteFontPlus.FNA.Core.csproj", "packagesPath": "/home/alys/.nuget/packages/", "outputPath": "/home/alys/repos/isometric-park-fna/SpriteFontPlus/src/obj/", "projectStyle": "PackageReference", + "crossTargeting": true, "configFilePaths": [ - "/home/alys/.config/NuGet/NuGet.Config" + "/home/alys/.nuget/NuGet/NuGet.Config" ], "originalTargetFrameworks": [ - "net45" + "net45", + "netstandard2.0" ], "sources": { "https://api.nuget.org/v3/index.json": {} }, "frameworks": { "net45": { + "targetAlias": "net45", "projectReferences": { - "/home/alys/repos/isometric-park-fna/FNA/FNA.csproj": { - "projectPath": "/home/alys/repos/isometric-park-fna/FNA/FNA.csproj" + "/home/alys/repos/isometric-park-fna/FNA/FNA.Core.csproj": { + "projectPath": "/home/alys/repos/isometric-park-fna/FNA/FNA.Core.csproj" + } + } + }, + "netstandard2.0": { + "targetAlias": "netstandard2.0", + "projectReferences": { + "/home/alys/repos/isometric-park-fna/FNA/FNA.Core.csproj": { + "projectPath": "/home/alys/repos/isometric-park-fna/FNA/FNA.Core.csproj" } } } @@ -63,7 +601,39 @@ }, "frameworks": { "net45": { - "runtimeIdentifierGraphPath": "/usr/lib/mono/msbuild/Current/bin/RuntimeIdentifierGraph.json" + "targetAlias": "net45", + "dependencies": { + "Microsoft.NETFramework.ReferenceAssemblies": { + "suppressParent": "All", + "target": "Package", + "version": "[1.0.2, )", + "autoReferenced": true + } + }, + "runtimeIdentifierGraphPath": "/usr/share/dotnet/sdk/6.0.403/RuntimeIdentifierGraph.json" + }, + "netstandard2.0": { + "targetAlias": "netstandard2.0", + "dependencies": { + "NETStandard.Library": { + "suppressParent": "All", + "target": "Package", + "version": "[2.0.3, )", + "autoReferenced": true + } + }, + "imports": [ + "net461", + "net462", + "net47", + "net471", + "net472", + "net48", + "net481" + ], + "assetTargetFallback": true, + "warn": true, + "runtimeIdentifierGraphPath": "/usr/share/dotnet/sdk/6.0.403/RuntimeIdentifierGraph.json" } } } diff --git a/SpriteFontPlus/src/obj/project.nuget.cache b/SpriteFontPlus/src/obj/project.nuget.cache --- a/SpriteFontPlus/src/obj/project.nuget.cache +++ b/SpriteFontPlus/src/obj/project.nuget.cache @@ -1,8 +1,13 @@ { "version": 2, - "dgSpecHash": "tOnJ1OKHA9fVe0r0rF8SXkY/g6Dsae+u1nunMHJtIiHm2UrxMmZk6x6accdLrAYlwIjYkj7fcv/RHNfOBL/3Kg==", + "dgSpecHash": "LQ9xdN3ITVT6cpXZmPALpr/8NCMQcSv8J/6U+zaH75HrvHwzIW8ICaLALl9j83UlVW22b95E7BgXUuP7F/fNSg==", "success": true, - "projectFilePath": "/home/alys/repos/isometric-park-fna/SpriteFontPlus/src/SpriteFontPlus.FNA.csproj", - "expectedPackageFiles": [], + "projectFilePath": "/home/alys/repos/isometric-park-fna/SpriteFontPlus/src/SpriteFontPlus.FNA.Core.csproj", + "expectedPackageFiles": [ + "/home/alys/.nuget/packages/microsoft.netcore.platforms/1.1.0/microsoft.netcore.platforms.1.1.0.nupkg.sha512", + "/home/alys/.nuget/packages/microsoft.netframework.referenceassemblies/1.0.2/microsoft.netframework.referenceassemblies.1.0.2.nupkg.sha512", + "/home/alys/.nuget/packages/microsoft.netframework.referenceassemblies.net45/1.0.2/microsoft.netframework.referenceassemblies.net45.1.0.2.nupkg.sha512", + "/home/alys/.nuget/packages/netstandard.library/2.0.3/netstandard.library.2.0.3.nupkg.sha512" + ], "logs": [] } \ No newline at end of file diff --git a/TODO.taskpaper b/TODO.taskpaper --- a/TODO.taskpaper +++ b/TODO.taskpaper @@ -278,7 +278,10 @@ - Crashes after exiting a game. Seems to be a draw issue (Batch hasn't begun.) In Area renderer? - - + Also happens when you lose. + Unhandled exception: System.InvalidOperationException: Draw was called, but Begin has not yet been called. Begin must be called successfully before you can call Draw. + - No handler for Ink errors. + There really shouldn't be any way to run into an Ink error, but they will probably slip in. Misc: - Starting a game after exiting a previous one doesn't really work, afaict Also crases, but I suspect the crash isn't related. diff --git a/isometric-park-fna/Content/dialog_runner.ink b/isometric-park-fna/Content/dialog_runner.ink --- a/isometric-park-fna/Content/dialog_runner.ink +++ b/isometric-park-fna/Content/dialog_runner.ink @@ -6,6 +6,6 @@ ~ assistantTraits = (shy, sweary) --> EndLowFunds +-> PreserveHalf -> END \ No newline at end of file diff --git a/isometric-park-fna/Engines/ImGuiWindowBridgeEngine.cs b/isometric-park-fna/Engines/ImGuiWindowBridgeEngine.cs --- a/isometric-park-fna/Engines/ImGuiWindowBridgeEngine.cs +++ b/isometric-park-fna/Engines/ImGuiWindowBridgeEngine.cs @@ -29,7 +29,8 @@ typeof(SetOptionMessage), typeof(QuitGameMessage), typeof(ToggleToolMessage), - typeof(PlaySoundMessage))] + typeof(PlaySoundMessage), + typeof(DebugAlterTreesMessage))] [Reads(typeof(VisibilityComponent), typeof(WindowTypeComponent), typeof(TrespassingPolicyComponent), @@ -60,6 +61,7 @@ public List quitGameMessages; public List toggleToolMessages; public List playSoundMessages; + public List debugAlterTreesMessages; bool showBudget { get; } bool showForest { get; } @@ -112,6 +114,7 @@ this.quitGameMessages = new List(); this.toggleToolMessages = new List(); this.playSoundMessages = new List(); + this.debugAlterTreesMessages = new List(); this.windowStatuses = new Dictionary(); this.toolStatuses = new Dictionary(); @@ -248,6 +251,10 @@ SendMessage(message); } + foreach (var message in this.debugAlterTreesMessages) { + SendMessage(message); + } + foreach (var entity in ReadEntities()) { var type = GetComponent(entity).type; @@ -311,6 +318,7 @@ this.quitGameMessages.Clear(); this.toggleToolMessages.Clear(); this.playSoundMessages.Clear(); + this.debugAlterTreesMessages.Clear(); } } } diff --git a/isometric-park-fna/Engines/SimulationBridgeEngine.cs b/isometric-park-fna/Engines/SimulationBridgeEngine.cs --- a/isometric-park-fna/Engines/SimulationBridgeEngine.cs +++ b/isometric-park-fna/Engines/SimulationBridgeEngine.cs @@ -21,7 +21,7 @@ typeof(TreeDeltaComponent), typeof(PreserveComponent))] [Writes(typeof(BudgetComponent))] - [Receives(typeof(SingleExpenseMessage))] + [Receives(typeof(SingleExpenseMessage), typeof(DebugAlterTreesMessage))] public class SimulationBridgeEngine : Engine { public Simulation simulation; @@ -169,6 +169,8 @@ if (simulation.latestBudget.DateTime != default) { + var tree_count_threshold = (int)(0.05 * this.simulation.map.tree_capacity); + if (simulation.latestBudget.money < 0M && simulation.previousBudget.money >= 0M) { @@ -185,7 +187,8 @@ SendMessage(new SpawnDialogMessage {Path = "LowFunds"}); } - if (simulation.map.tree_count < 400) + if ((simulation.latestBudget.trees < tree_count_threshold) + && (simulation.previousBudget.trees >= tree_count_threshold)) { SendMessage(new SpawnDialogMessage {Path = "PoorTreeHealth"}); } @@ -265,8 +268,26 @@ simulation.enforcement = new_enforcement_amount; simulation.misc = new_misc_amount; +#region debug + + foreach (ref readonly var message in ReadMessages()) + { + var trees = message.DeltaTrees; + + //Probaby not very performant; used only for debug. + foreach (CellMap.Cell cell in this.simulation.map.iterate_cells().Where(c => c.HasTree).ToList().Shuffle()) + { + if (trees > 0) { + trees -= 1; + cell.RemoveTree(); + } + } + } +#endregion + //Move this here? // this.simulation.update(dt); } + } } diff --git a/isometric-park-fna/FNAGame.cs b/isometric-park-fna/FNAGame.cs --- a/isometric-park-fna/FNAGame.cs +++ b/isometric-park-fna/FNAGame.cs @@ -397,6 +397,8 @@ Logging.Error(String.Format("Error loading file: {0}", e.ToString())); } + this.debugWindow.engine = this.imGuiWindowBridgeEngine; + World = WorldBuilder.Build(); this.output = grammar.Flatten("#greeting#"); diff --git a/isometric-park-fna/Simulation.cs b/isometric-park-fna/Simulation.cs --- a/isometric-park-fna/Simulation.cs +++ b/isometric-park-fna/Simulation.cs @@ -68,8 +68,8 @@ public const int TREE_PLANT_COST = 500; public const int TREE_CLEAR_COST = 250; - public const int MAX_TREES_TO_PLANT = 25; - public const int MAX_TREES_TO_CLEAR = 25; + public const int MAX_TREES_TO_PLANT = 50; + public const int MAX_TREES_TO_CLEAR = 50; public const decimal STARTING_FUNDS = 100_000M; diff --git a/isometric-park-fna/UI/DebugWindow.cs b/isometric-park-fna/UI/DebugWindow.cs --- a/isometric-park-fna/UI/DebugWindow.cs +++ b/isometric-park-fna/UI/DebugWindow.cs @@ -8,6 +8,9 @@ using Microsoft.Xna.Framework.Graphics; using System.Runtime.InteropServices; +using isometricparkfna.Engines; +using isometricparkfna.Messages; + namespace isometricparkfna.UI { @@ -45,6 +48,16 @@ public ImageMap map; + private ImGuiWindowBridgeEngine _engine; + public ImGuiWindowBridgeEngine engine { + get { + return this._engine; + } + set { + this._engine = value; + } + } + private ImGuiRenderer renderer; public static Dictionary fonts = new Dictionary {{"Roboto", @"Content/Roboto-Regular.ttf"}, @@ -96,6 +109,7 @@ this.map = map; + this.engine = engine; _xnaTexture = map.ImageMapTexture; // _xnaTexture = CreateTexture(graphicsDevice, 300, 150, pixel => // { @@ -107,6 +121,8 @@ _imGuiTexture = _imGuiRenderer.BindTexture(_xnaTexture); } + + public void swap() { ImGuiIOPtr io = ImGui.GetIO(); @@ -315,6 +331,21 @@ ImGui.EndTabItem(); } + + if(ImGui.BeginTabItem("Debug Controls")) + { + if (ImGui.Button("Cull 100 Trees")) + { + this.engine.debugAlterTreesMessages.Add(new DebugAlterTreesMessage { + DeltaTrees = 100}); + } + if (ImGui.Button("Cull 1000 Trees")) + { + this.engine.debugAlterTreesMessages.Add(new DebugAlterTreesMessage { + DeltaTrees = 1000}); + } + ImGui.EndTabItem(); + } ImGui.EndTabBar(); ImGui.End(); } diff --git a/isometric-park-fna/UI/Graph.cs b/isometric-park-fna/UI/Graph.cs --- a/isometric-park-fna/UI/Graph.cs +++ b/isometric-park-fna/UI/Graph.cs @@ -194,7 +194,7 @@ var domain_max_rounded = Math.Ceiling(domain_max / 50.0) * 50; var domain_min_rounded = Math.Floor(domain_min / 50.0) * 50; - Logging.Info("Standard rounding."); + // Logging.Info("Standard rounding."); //Throw out rounding if result is too close together: if (domain_min_rounded != domain_max_rounded) { @@ -210,7 +210,7 @@ var lower = MathUtils.Clamp(domain_min, 0, 100); var upper = MathUtils.Clamp(domain_min, 10, 100); - Logging.Info("Clamped rounding."); + // Logging.Info("Clamped rounding."); return new Num.Vector2(domain_min-lower, domain_max+upper); }