====== Development plan for L3DT release 17.0X ====== Due date: early/mid 2017 Code name: //Frogger//. | >> [[l3dt:plan:plus_one|Release after next]] | | >> [[l3dt:plan:unscheduled|Unscheduled features]] | ===== Changes ===== ==== 64-bit version ==== * {{:common:done.gif|DONE}} Compile 64-bit version of L3DT Pro. * Finish plugins * {{:common:todo.gif|TODO}} VFW. * {{:common:todo.gif|TODO}} PCX. * {{:common:todo.gif|TODO}} Copy all updated plugins to installer. * {{:common:done.gif|DONE}} Modify installer for 64-bit. * {{:common:done.gif|DONE}} Run acid test batch script, and debug any problems. * {{:common:done.gif|DONE}} Test with Sapphire. * {{:common:todo.gif|TODO}} Test mesh exporter. * {{:common:done.gif|DONE}} Release dev build. * {{:common:todo.gif|TODO}} Keep testing! ==== LibHFZ ==== * {{:common:todo.gif|TODO}} Upload cross-platform library code with Josh H.'s fixes. ==== Finalisation wizard ==== * {{:common:done.gif|DONE}} Add 'Finalisation' to end of calc queue. * {{:common:done.gif|DONE}} Have RunFinalisationList check for group activity at start of each operation, and if group busy, exit and flag to resume when group is no longer active. Is checked in timer loop, so is running in UI thread. Also have wait for mipmaps &c. * {{:common:done.gif|DONE}} Protect with critical section to prevent race conditions when going in and out of threadcalcs. * {{:common:done.gif|DONE}} Add wizard controls * {{:common:done.gif|DONE}} Added flags to ops, reserved for future use. * Add following finalisation options (with custom UIs): * {{:common:done.gif|DONE}} SaveProject * {{:common:done.gif|DONE}} Add code to verify project is saved before calc starts. * {{:common:done.gif|DONE}} SaveProjectAs * {{:common:done.gif|DONE}} RunScript * {{:common:done.gif|DONE}} RunScriptFile * {{:common:done.gif|DONE}} RunGraphFile (run in thread, deferring subsequent finalisation) * {{:common:done.gif|DONE}} PlayWAV * {{:common:done.gif|DONE}} SystemSleep * {{:common:todo.gif|TODO}} Add code (in OnNext) to warn user if ops follow sleep. * {{:common:todo.gif|TODO}} ExportMapLayer * {{:common:todo.gif|TODO}} Quit * {{:common:todo.gif|TODO}} MessageBox (needs text & style params) * {{:common:todo.gif|TODO}} SystemShutdown * {{:common:todo.gif|TODO}} SystemCommandLine * {{:common:todo.gif|TODO}} ShellExecute (needs target, verb & flags params) * {{:common:todo.gif|TODO}} Add wizard preset support * {{:common:todo.gif|TODO}} Default (is single SaveProject) * {{:common:done.gif|DONE}} Added to user guide ([[l3dt:userguide:ops:finalisation|see here]]). * {{:common:todo.gif|TODO}} Add load/save options for finalisation list, and ability to run finalisation in batch run. ==== Roads, pathfinding & points of interest ==== * {{:common:todo.gif|TODO}} All the things! ==== Sapphire ==== * Improve HUD text visibility * {{:common:done.gif|DONE}} Added semitransparent background to HUD, and changed text colour to white. * {{:common:done.gif|DONE}} Changed to using system UI font. * {{:common:todo.gif|TODO}} [[http://www.bundysoft.com/phpBB2/viewtopic.php?f=6&t=4110&p=12501#p12501|See other requests]]. * HF tools: * {{:common:todo.gif|TODO}} Make tool window appear, for first time, in top-right corner of Sapphire. * {{:common:todo.gif|TODO}} Add spin controls for radius & such * {{:common:todo.gif|TODO}} Add 'PerlinRaise' and 'PerlinLower' tools ([[http://www.bundysoft.com/phpBB2/viewtopic.php?f=6&t=2680&p=9984#p9981|see request]].) * {{:common:done.gif|DONE}} Updated display of bulldozer / etc. tools. * {{:common:done.gif|DONE}} Smooth edge of Perlin tool ([[http://www.bundysoft.com/phpBB2/viewtopic.php?f=4&t=4152&p=12657#p12657|see request]]). * Fix support for large heightfields * {{:common:todo.gif|TODO}} Move ROAM patches to CsHeightfieldTile class (requires patch size to be divisor of tile size?) * {{:common:todo.gif|TODO}} Implement dynamic loading / freeing of tiles (with re-tessellation, etc.) * {{:common:todo.gif|TODO}} Optimise triangle pool usage between tiles * {{:common:todo.gif|TODO}} Document path recording / playback. * Improve rendering of camera paths and teleport points. * {{:common:todo.gif|TODO}} Use better camera mesh (saved as zmesh?) * {{:common:todo.gif|TODO}} Add text overlay above camera teleport point. * {{:common:todo.gif|TODO}} Add support for loading arbitrary point lists (from CSV) as paths. * {{:common:todo.gif|TODO}} Use GLSL shaders to provide better terrain detail, and for fog. * {{:common:todo.gif|TODO}} Use GLSL shaders for waves, water reflection, refraction (inc. underwater view) * {{:common:todo.gif|TODO}} Use VBOs for terrain patches. ==== User-defined grids ==== * {{:common:todo.gif|TODO}} Add option for user-defined grid overlay, where user sets extents, and tile sizes. Note grid does not need to cover entire map. * {{:common:todo.gif|TODO}} Allow import & export of grid definitions. * {{:common:todo.gif|TODO}} Show grids in Sapphire. * {{:common:todo.gif|TODO}} Add option for 'snap to grid' with mouse selection tool ([[http://www.bundysoft.com/phpBB2/viewtopic.php?f=6&t=4108&p=12524#p12524|see request]]). * {{:common:todo.gif|TODO}} Add 'select tiles' window (possibly using existing 'select area' window.) * {{:common:todo.gif|TODO}} Add ability to set grid tile names, and display names in 2D and 3D view ([[http://www.bundysoft.com/phpBB2/viewtopic.php?p=3820#p3820|see request]], [[http://www.bundysoft.com/phpBB2/viewtopic.php?f=6&t=4111&p=12505#p12505|also here]]). * //[[http://www.bundysoft.com/phpBB2/viewtopic.php?f=6&t=4111&p=12505#p12505|More grid requests here]]//. ==== ZeoGraph ==== * {{:common:done.gif|DONE}} Add pin passthrough rendering, to make it clear when a filter's output is the same as its input (i.e. map handles being passed through verbatim). * {{:common:done.gif|DONE}} Ensure passthroughs are loaded/saved in ''CzFilter::Serialise'' and ''CzFilter::Deserialise'' (example is zg_tee, where all passthroughs are created dynamically) * {{:common:done.gif|DONE}} Apply to script filters too. * {{:common:todo.gif|TODO}} **Verify all filters (both script & plugins) set all passthroughs correctly (see 'tests/FiltersToFix.zgraph').** * {{:common:todo.gif|TODO}} Update docs. * {{:common:done.gif|DONE}} Added flags to CzFilterFactory::RegisterFilter function, including: * ZFF_CLASS_DEPRECATED, which hides filters from 'add new filter' dialog box (but allows existing filters in graphs to be supported). * {{:common:done.gif|DONE}} Modified ''GetProjectMap2'' to allow 'options' edit of map name input pin too. If name input is disconnected, options button allows edit of map name. If pin is connected, options button says "Map name option is controlled by '[filter name]' filter connected to 'MapName' pin". * {{:common:done.gif|DONE}} Repeated for ''SetProjectMap2'' too. * {{:common:done.gif|DONE}} Deprecated ''GetProjectMap'' and ''SetProjectMap'', which are now redundant (using new ZFF_CLASS_DEPRECATED flag). * {{:common:done.gif|DONE}} Modified ''GetProjectMap2'' to allow choice of creating local copy or not (previous default was yes). * {{:common:done.gif|DONE}} Modified ''project.SetProjectMap2'' to automatically save undo points. * {{:common:todo.gif|TODO}} Update ZG_project plugin & filter documentation. * {{:common:done.gif|DONE}} Removed manual backup scripts from example graphs. * {{:common:done.gif|DONE}} Reorder insane ''calc.HF.Exponential'' pins, before it's too late :!: (also drop hOutputMap input pin). * {{:common:todo.gif|TODO}} Add lowpass filter (sinc convolution), and highpass filter (subtraction of lowpass filter); see [[https://en.wikipedia.org/wiki/Low-pass_filter#Ideal_and_real_filters]]. * {{:common:todo.gif|TODO}} Added 'Load graph...' menu item to L3DT, for opening ZeoGraph and loading file. * {{:common:done.gif|DONE}} Added ''UI.EditValue'' filter in new 'ZG_UI' plugin. * {{:common:todo.gif|TODO}} Document! * {{:common:done.gif|DONE}} Added ''UI.EditValueEx'' filter, for multiple values. * {{:common:todo.gif|TODO}} Document! * {{:common:done.gif|DONE}} Add ''General.Wait'' and ''General.WaitTrigger'' filters. * {{:common:todo.gif|TODO}} Document! * {{:common:done.gif|DONE}} Also added support for void pin types, for dataless flow control. * {{:common:done.gif|DONE}} Added ''calc.HF.SquareRoot'' filter. * {{:common:todo.gif|TODO}} Document! * {{:common:todo.gif|TODO}} Add passthrough hMap pin to ''project.SetProjectMap'' filter. * {{:common:todo.gif|TODO}} Add ''UI.ComboSelector'' filter, for selecting from a set of values (output is int for index, AND string for value) * {{:common:todo.gif|TODO}} Add ''UI.MessageBox'' filter (simple notification, icon style is option, as combobox; prompt input only) * {{:common:todo.gif|TODO}} Document! * {{:common:todo.gif|TODO}} Add ''UI.YesNoQuestion'' filter, which returns true or false. * {{:common:todo.gif|TODO}} Document! * {{:common:todo.gif|TODO}} Add ''UI.YesNoQuestionSwitch'' filter, which passes an input variable between yes or no outputs (uses disable behaviour). * {{:common:todo.gif|TODO}} Document! * {{:common:todo.gif|TODO}} Allow external scripts &c to set input variables (i.e. the variable.xyz filters, also pins of named filters) ==== Zeolite API ==== * {{:common:todo.gif|TODO}} Use shared struct to load all API function handles in one go, to speed up plugin loading. ==== Pending requests ==== * {{:common:todo.gif|TODO}} Line overlay over textured mesh in Sapphire when editing ([[http://www.bundysoft.com/phpBB2/viewtopic.php?f=6&t=4139&p=12629#p12629|see request]] * {{:common:todo.gif|TODO}} Limits on raise / lower brushes ([[http://www.bundysoft.com/phpBB2/viewtopic.php?f=4&t=4104&p=12475#p12475|see request]]). * {{:common:todo.gif|TODO}} Lower by / raise by brush tool ([[http://www.bundysoft.com/phpBB2/viewtopic.php?f=6&t=4164&p=12700#p12700|see request]]). * {{:common:todo.gif|TODO}} More heightfield display options ([[http://www.bundysoft.com/phpBB2/viewtopic.php?f=6&t=2830|see request]]). * {{:common:todo.gif|TODO}} Add automatic beach generation ([[http://www.bundysoft.com/phpBB2/viewtopic.php?f=3&t=2831&p=10515#p10515|see request]]). * {{:common:todo.gif|TODO}} Add vertical scaling to merge import (see [[http://www.bundysoft.com/phpBB2/viewtopic.php?f=3&t=2200&p=10440#p10440|see this thread]].) * {{:common:todo.gif|TODO}} Update 'export type list' option to include colour and bump map texture ([[http://www.bundysoft.com/phpBB2/viewtopic.php?f=4&t=2174&p=9120#p9120|see request]]). * {{:common:todo.gif|TODO}} Fix unoptimised north/east edges in atMeshDecimator ([[http://www.bundysoft.com/phpBB2/viewtopic.php?f=2&t=2136&p=8963#p8957|see request, and possible fix]]). * {{:common:todo.gif|TODO}} Support wrapping in perlin maps ([[http://www.bundysoft.com/phpBB2/viewtopic.php?f=6&t=1920&p=8482#p8482|see request]]). * {{:common:todo.gif|TODO}} Add SunBurn TER import/export support. * {{:common:todo.gif|TODO}} Add low-pass filter for heightfield ([[http://www.bundysoft.com/phpBB2/viewtopic.php?p=7807#7807|see request]]). * {{:common:todo.gif|TODO}} Write script to bake water surface map on to texture map ([[http://www.bundysoft.com/phpBB2/viewtopic.php?f=4&t=1917&p=8428#p8428|see request]]). * {{:common:todo.gif|TODO}} User-defined grid overlay in display, and T3D region exporter for single and multiple files ([[http://www.bundysoft.com/phpBB2/viewtopic.php?f=6&t=2031&p=8494#p8494|see request]]). * {{:common:todo.gif|TODO}} Limited 'export selected area' option for Torque TER, where users set west & south extents, and then pick tile size (256, 512, 1024, 2048, etc.), before running regular TER exporter ([[http://www.bundysoft.com/phpBB2/viewtopic.php?f=3&t=2112|see request]]). * {{:common:todo.gif|TODO}} Implement 'Operations->Design map->Resize canvas' using graph/script ([[http://www.bundysoft.com/phpBB2/viewtopic.php?f=4&t=2747&p=10229#p10229|see request]].) * {{:common:todo.gif|TODO}} Add manual scaling UI to L3DTio_RAW_HF plugin ([[http://www.bundysoft.com/phpBB2/viewtopic.php?f=3&t=2231&p=9361#p9361|see this thread]].) ==== Algorithms ==== * {{:common:done.gif|DONE}} Added map ''Iterator'' functions, to reduce repetition in programming map loops. * {{:common:done.gif|DONE}} Add reusable iterator support for progress (both group & direct progbox). * {{:common:done.gif|DONE}} Add reusable iterator support for masked areas, using rect mask :!: * {{:common:todo.gif|TODO}} Apply to converter calcs (HF->RGB, etc.), DM<->layer calcs, etc.. * {{:common:todo.gif|TODO}} Apply iterator to ''copy area'', etc. * {{:common:todo.gif|TODO}} Make auto-multithreaded version (in CMapWrap::Iterate). * {{:common:todo.gif|TODO}} Add to extension API, so it can be used in plugins! * {{:common:done.gif|DONE}} Added exponential filter for heightmap calc (as zeofunc, and filter). * {{:common:todo.gif|TODO}} Add HF.GenMap to benchmarking results * {{:common:todo.gif|TODO}} Allow 'HF->change vert scale' to work with DM ([[http://www.bundysoft.com/phpBB2/viewtopic.php?f=6&t=2225|see forum thread]].) * {{:common:todo.gif|TODO}} Add guards to handle DM/HF size mismatch everywhere following HF selected area preview. * {{:common:todo.gif|TODO}} Add InitMap2 extension function, and filter. * {{:common:todo.gif|TODO}} Allow larger non-mosaic maps in UI. * Multithread: * {{:common:todo.gif|TODO}} calc_HF_Diff2Filter &c * {{:common:todo.gif|TODO}} Channelling erosion * {{:common:todo.gif|TODO}} Thermal erosion * {{:common:todo.gif|TODO}} Diamond/square inflation * {{:common:todo.gif|TODO}} Water table flooding (use four threads to raster simultaneously) * {{:common:todo.gif|TODO}} Alpha calculation * {{:common:todo.gif|TODO}} Perlin generator * {{:common:todo.gif|TODO}} Shadow casting * {{:common:todo.gif|TODO}} Revise atCalc_AM_image to use direct access writing of AMimg (requires mipmap update). * {{:common:todo.gif|TODO}} Fix multithreading in atCalc_AM_image, which was disabled b/c it caused crashes. * {{:common:done.gif|DONE}} Added 'project.RegenerateWBL' script function to regenerate water body list (see 'WBL_Renergate.zs' script). ==== User interface ==== === General === * {{:common:done.gif|DONE}} Added 'Add height' and 'Multiply' options to 'Operations->Heightfield' menu. * {{:common:todo.gif|TODO}} Remove largely useless 'Split to mosaic' and 'Combine mosaic' functions. Possibly retain 'change mosaic tile size' option, but only on MAPALLOC_MOSAIC. :!: :!: * Update extension manager window: * {{:common:done.gif|DONE}} Use report view to show DLL version, date, &c * {{:common:todo.gif|TODO}} **Finish enable display (greyed out)** * {{:common:todo.gif|TODO}} **Fix selection marker** * {{:common:done.gif|DONE}} Modified idle message in main window to use system font, and changed 'x' to '×'. === Alpha map wizard === * {{:common:todo.gif|TODO}} Add load and save buttons to alpha wizard (or enable presets), so that layer combination lists can be stored and recalled ([[http://www.bundysoft.com/phpBB2/viewtopic.php?f=6&t=2686&p=10146#p10146|see request]]) :!: === New wizards === * {{:common:todo.gif|TODO}} Add mask map wizard, in scheme after attributes map. ==== Plugins ==== === L3DTio_TIFF plugin === * {{:common:done.gif|DONE}} Added import support for BYTE, WORD and RGB images (uncompressed only). * {{:common:done.gif|DONE}} Added support for internally tiled TIFF files (in addition to strips). * {{:common:todo.gif|TODO}} Add BigTIFF support (e.g., see [[http://www.awaresystems.be/imaging/tiff/bigtiff.html]]) * {{:common:todo.gif|TODO}} Add export support. === LibJPEG plugin === * {{:common:done.gif|DONE}} Add reader / writer / mosaic support. * {{:common:todo.gif|TODO}} Verify InvertY and Quality options. * {{:common:todo.gif|TODO}} Benchmark. * {{:common:todo.gif|TODO}} Add WM support (export only). * {{:common:todo.gif|TODO}} Build x64 version. * {{:common:todo.gif|TODO}} Include in installer, and formats ini. === LibPNG plugin === * {{:common:todo.gif|TODO}} Create me! === atEdgeBlender === * {{:common:todo.gif|TODO}} Implement improved blending modes in atEdgeBlender to remove streaking. * {{:common:todo.gif|TODO}} Refine [[bundywiki>scripts:cube_wrapped_heightfield|cube wrapped heightfield script]] with progress bars. === atEdgeLeveller === * {{:common:todo.gif|TODO}} Modify [[bundywiki>plugins:calc:atEdgeLeveller|atEdgeLeveller]] to support edge levelling of design map (including erosion, roughness, etc.) ==== Bug fixes ==== * {{:common:done.gif|DONE}} Modified 'Import DM' wizard to recalculate horiz scale to preserve horizontal extents when changing down and up-sampling rates. * {{:common:done.gif|DONE}} Ensure edit record is closed in Sapphire when mouse mode changes (and other similar cases), to eliminate 'cannot create edit record' errors ([[http://www.bundysoft.com/phpBB2/viewtopic.php?f=5&t=4149&p=12647#p12647|see bug report]]). * {{:common:done.gif|DONE}} Modified PROJ loader to tolerate missing settings (e.g. WrapFlag, HorizScale), as these can be picked up from maps. Warning is given instead. * {{:common:done.gif|DONE}} Fixed installer so that zmenu extensions are installed properly (now in resources dir) * {{:common:done.gif|DONE}} Fixed offset b/w cursor and tools in Sapphire ---//build pending//. * {{:common:done.gif|DONE}} Fixed initial vertical offset in PointGrab tool ---//build pending//. * {{:common:done.gif|DONE}} Fixed bug in L3DTio_Backup that prevented proper undo on large-area tools (e.g. bulldozer) ---//build pending//. * {{:common:done.gif|DONE}} Fixed [[bundywiki>plugins:fileio:L3DTio_Raw_HF|L3DTio_RAW_HF]] to support files larger than 4GB ([[http://www.bundysoft.com/phpBB2/viewtopic.php?f=4&t=4135&p=12601#p12601|see bug report]]). * {{:common:done.gif|DONE}} Made L3DT check for other L3DT processes, and abort startup to prevent fighting over log / resources. * {{:common:todo.gif|TODO}} Debug 'CMosaicMapo::CloseTile warning - tile was already saved' error state ([[http://www.bundysoft.com/phpBB2/viewtopic.php?f=2&t=4128&p=12599#p12599|see bug report]]). * {{:common:done.gif|DONE}} Fixed bug in ZeoWrap, where ''combosel.GetCurSelA'' was incorrectly named ''combosel.GetPathCurSelA''. * {{:common:done.gif|DONE}} Recompiled ZG_script for L3DT Pro x64 (was out of date, and gave errors on some return values). * {{:common:done.gif|DONE}} Modify Sapphire to log error and continue rendering when water map is incorrect size (previously would halt initialisation.) ([[http://www.bundysoft.com/phpBB2/viewtopic.php?f=5&t=4132&p=12592#p12592|see bug report]]). * {{:common:todo.gif|TODO}} :!: :!: :!: Change GetExt to get only last extension. Add new ''CompareExt'' function to handle compound extensions ([[http://www.bundysoft.com/phpBB2/viewtopic.php?f=5&t=2808&p=10394#p10394|see bug report]]). * {{:common:todo.gif|TODO}} Debug problems in view when importing design map ([[http://www.bundysoft.com/phpBB2/viewtopic.php?f=5&t=2182&p=9153#p9153|see bug report]].) * {{:common:todo.gif|TODO}} Fix screen capture to file. * {{:common:todo.gif|TODO}} Fix bug in volcano overlay ([[http://www.bundysoft.com/phpBB2/viewtopic.php?f=4&t=2214&p=9317#p9302|see bug report]]). * {{:common:todo.gif|TODO}} Fix alpha map generator to include all land types in map (reported by Andrew B. via e-mail, error is 'calc_Alpha_GenMaps error - invalid alpha index in LandTypeAlphaIDBuf'). * {{:common:todo.gif|TODO}} DM editing doesn't always mark HF as dirty ([[http://www.bundysoft.com/phpBB2/viewtopic.php?f=5&t=2226|see this thread]].) * {{:common:done.gif|DONE}} Extended timeout to prevent errors on startup. * {{:common:done.gif|DONE}} Fixed error with min/max alt when resizing HF ([[http://www.bundysoft.com/phpBB2/viewtopic.php?f=4&t=4230&p=12815#p12815|see thread]].) * {{:common:done.gif|DONE}} Modified CreateDir to report directory creation failures (with sys error codes). ==== Documentation ==== * {{:common:todo.gif|TODO}} **Update old [[bundywiki>scripts|example scripts]]** :!: * {{:common:todo.gif|TODO}} Add more off-line help PDFs. (some added, [[http://www.bundysoft.com/phpBB2/viewtopic.php?t=903|see here]]) * {{:common:todo.gif|TODO}} Write more of the [[bundywiki>tutorials:l3dt:newclimate|climate tutorial]]. * {{:common:todo.gif|TODO}} Finish the [[bundywiki>tutorials:l3dt:newmaterial|material tutorial]]. * {{:common:todo.gif|TODO}} Update the algorithms pages. * {{:common:todo.gif|TODO}} Document new splat map settings in materials. * {{:common:todo.gif|TODO}} Document path recording / playback in Sapphire. ====== Following release ====== >> [[l3dt:plan:plus_one|Release after next]] >>