Map2Curve v0.8 Readme

New GUI now shipping with Map2Curve

I created Map2Curve GUI with C#, Winforms and Visual Studio 2022 Community. It was my first coding project for a graphical user interface and in said software suite. Thankfully C# is not very different from C++. I decided to use Winforms, because it was easier to find help online this way. Any question I had was already asked and answered somewhere on the internet (mainly Stack Overflow), which is of course really helpful, when you are new to a topic and incredible lazy (check and check). Sadly this way the GUI will only ever be working on a Windows platform natively (not sure about Wine and thelike).

Similar to Map2Curve (CLI) I will release the source code of the GUI-project in a short while on github as well. A build version will always be shipped along with Map2Curve from now on. However I will probably upload the latest changes to github more frequently, more or less independently from Map2Curve development.
This could happen soon or never. I am not sure how much more time I am willing to invest in this (took me 4 years to get from 0.7 to 0.8).

It can do almost anything that is necessary to generate curves with Map2Curve without the need of creating your own preset-files. For the time being individual Detail Objects still need to be set up in an editor though. When there is enough positive feedback I might continue the development, but there’s no guarantee.

New Texture features

Texture shearing now on ramps and path extrusions

Added support for texture shearing (texmode 1) on ramps and extrusions.

Horizontal texture stretching

Added command hstretch (bool) to toggle horizontal texture stretching based on curve length (+/- export range) and texture-size and -scale.

hstretch 0 // Off (Default)
hstretch 1 // On - Works together with hstretchamt
Stretching Off
Stretching On, fixed Amount

Added command hstretchamt (integer) to control how many times a texture is being stretched along the curve horizontally (0=automatic,>0=custom).

hstretchamt 0 // Auto (Default)
hstretchamt n // e.g. 8 - Fixed Amount

Horizontal shift offset

Added command shiftoffset (float) to add an offset to the horizontal texture shift (ingame units; added on top of final result).

hshiftoffset 0  // Off (Default)
hshiftoffset 32 // e.g. Offset of 32 game units

Horizontal shift source

Added command hshiftsrc (int) to specify the source edge for texture shift calculation.

hshiftsrc 0 // Inner Edge
hshiftsrc 1 // Outer Edge (Default)
Inner edge acts as texture shift/scale source
Outer edge acts as texture shift/scale source

New height features

New height curves and step-height calculation

Made all height curve calculations adaptive to uneaven/custom section lengths (type2/3) to ensure smooth results.
Added many new curves for “heightmode” from https://easings.net and re-ordered existing ones.

heightmode 0 // Linear progression
heightmode 1 // Height taken from linked path_corner
heightmode 2 // random height curve
heightmode 3 to 14 // new height curves (www.easings.net)
figure shows heightmode 0 (Linear),3,4,5,6 (Ease In Out 3-6)

Height setting changed from per step to total height

Changed height command from size per section-step to whole height that is being covered from start to finish, independend from export-range.

Complete Changelog

  • Added a GUI (and it was about time)
  • Added support for texture shearing (texmode 1) on ramps and extrusions
  • Added command hshiftsrc (int) to specify the source edge for texture shift calculation
  • Added command hstretch (bool) to toggle horizontal texture stretching based on curve length (+/- export range) and texture-size and -scale
  • Added command hstretchamt (integer) to control how many times a texture is being stretched along the curve horizontally (0=automatic,>0=custom)
  • Added command shiftoffset (float) to add an offset to the horizontal texture shift (ingame units; added on top of final result)
  • Made all height curve calculations adaptive to uneaven/custom section lengths (type2/3) to ensure smooth results
  • Added many new curves for “heightmode” from Easings.net and re-ordered existing ones (see the Manual for more info)
  • Changed height command from size per section-step to whole height that is being covered from start to finish, independend from export-range
  • Changed the detection of horizontal shift-groups. Until now only the texture-name was used to differentiate between them. Now only faces which share the same texture-name, -scale and -shift will be grouped together.
  • Added info_player_start and light_env entities to bound 2 on *.map export and increased bounding box size
  • Fixed DEFAULTS.txt not being loaded correctly, when no other preset-file was available (how did I not notice this before?)
  • Fixed an issue with brushes being turned into triangles
  • Fixed resolution calculation for Grid/Quake-circle (type 1) and multiple curve objects without specified resolution (res 0) in a row
  • Fixed a bug that lead to curve brushes of type 2 and 3 not being exported, when curve was exported to both map and rmf formats
  • Changed various info-messages to be more specific
  • Cleaned up the sourcecode a bit
  • Gap and ramptex are not being maintained anymore, so results might not be as intended