This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revision | |||
| documentation [2026/07/16 14:59] – created rock | documentation [2026/07/19 14:12] (current) – removed rock | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ====== Arma 3 MFD Creator User Guide ====== | ||
| - | |||
| - | ===== Purpose ===== | ||
| - | |||
| - | The MFD Creator is a browser-based drawing tool for building Arma 3 `class MFD` HUD/HMD config fragments. It lets you draw HUD symbols on a normalized 0..1 coordinate plane, edit their properties, and export Arma config-friendly code. | ||
| - | |||
| - | The tool runs fully in your browser. It does not need a database, login, or server-side processing. | ||
| - | |||
| - | ===== The Tool ===== | ||
| - | |||
| - | [[https:// | ||
| - | |||
| - | ===== Screen Layout ===== | ||
| - | |||
| - | The editor now uses top-menu pages: | ||
| - | |||
| - | * Project Setup: set export target, HUD class, mount type, color, font, and memory points. Drawing is locked until setup is complete. | ||
| - | * Editor: draw and edit HUD geometry on the 0..1 plane. | ||
| - | * Draw: Manager: manage Draw Groups, condition wrappers, and fixed bones. | ||
| - | * Config: Export: review, copy, or download generated config. | ||
| - | * Admin: edit the browser-side library copy. | ||
| - | |||
| - | The top menu also has a " | ||
| - | |||
| - | ===== Drawing Tools ===== | ||
| - | |||
| - | Use the tool buttons on the left: | ||
| - | |||
| - | * **Select:** select and move existing elements. | ||
| - | * **Line:** draw a straight line. | ||
| - | * **Box:** draw a rectangle. Exports as a closed line shape. | ||
| - | * **Circle:** draw a circle. Exports as a multi-point line approximation. | ||
| - | * **Polygon: | ||
| - | * **Text:** place text. Can be static text or a dynamic Arma MFD string source. | ||
| - | * **Bone Cue:** place a vector bone cue. Exports a `class Bones` vector bone plus a `class Draw` Draw Group that uses it. | ||
| - | * **PylonIcon: | ||
| - | * **HUD Scale:** create an exported Arma `type = " | ||
| - | * **Radar / RadarToView / Turret / TurretToView**: | ||
| - | * **Eraser:** removes a line segment. For circles, the circle is converted into a grouped polyline with the nearest segment removed. | ||
| - | * **Transform Scale**: scales the selected editor element around its center by dragging. This is an editor transform, not an exported `type = " | ||
| - | * **Rotate:** rotates selected line, grouped-line, | ||
| - | |||
| - | To draw: | ||
| - | |||
| - | - Select a tool. | ||
| - | - Click or drag on the HUD Plane. | ||
| - | - Select the created Draw Group. | ||
| - | - Edit its properties in the inspector. | ||
| - | |||
| - | ===== Grid And Snap ===== | ||
| - | |||
| - | The HUD Plane uses normalized coordinates. | ||
| - | |||
| - | * **Grid** controls only the visible grid spacing. | ||
| - | * **Snap distance** controls how coordinates are rounded while drawing or moving. | ||
| - | * **Snap** enables or disables coordinate snapping. | ||
| - | |||
| - | Examples: | ||
| - | |||
| - | * `0.1` gives coarse placement at tenths. | ||
| - | * `0.05` is useful for rough layout. | ||
| - | * `0.025` gives finer placement. | ||
| - | * `0.001` gives near-free placement while still rounding the exported values. | ||
| - | |||
| - | ===== Draw Groups ===== | ||
| - | |||
| - | In this tool, a **Draw Group** means one `class < | ||
| - | |||
| - | Draw Group actions: | ||
| - | |||
| - | * Select a Draw Group to edit it. | ||
| - | * Ctrl-click Draw Groups to multi-select individual Draw Groups. | ||
| - | * Shift-click Draw Groups to select a range. | ||
| - | * `{}` merges selected line/ | ||
| - | * `][` splits the selected grouped-line Draw Group into individual line segments. | ||
| - | * `++` duplicates the selected element. | ||
| - | * `x` deletes the selected element. | ||
| - | * `^` and `v` move the selected element up or down in export/draw order. | ||
| - | |||
| - | Draw Group order affects the order of generated config classes. Grouped-line Draw Groups preserve Arma `points[]` line breaks by exporting `{}` between point chains. | ||
| - | |||
| - | ===== Condition Wrappers ===== | ||
| - | |||
| - | Use **Draw Manager** to create optional Arma `type = " | ||
| - | |||
| - | * **Add Condition** creates a new condition wrapper and makes it active. | ||
| - | * **Delete Condition** removes the selected condition wrapper and leaves its Draw Groups unwrapped. | ||
| - | * The selected condition wrapper controls which wrapper new Draw Groups are assigned to. | ||
| - | * Wrapper **' | ||
| - | |||
| - | Supported condition values include normal Arma MFD conditions such as: | ||
| - | |||
| - | * `on`, | ||
| - | * `ils`, | ||
| - | * `mgun`, | ||
| - | * `missile`, | ||
| - | * `aamissile`, | ||
| - | * `atmissile`, | ||
| - | * `rocket`, | ||
| - | * `bomb`, | ||
| - | * `flaps`, | ||
| - | * `lights`, | ||
| - | * `collisionlights`, | ||
| - | * `stall`, | ||
| - | * `incomingmissile`, | ||
| - | * `missilelocking`, | ||
| - | * `missilelocked`, | ||
| - | * `wpvalid`, | ||
| - | * `laseron`, | ||
| - | * `activeSensorsOn`, | ||
| - | * `weaponX`, | ||
| - | * `pilotcameralock`, | ||
| - | * `autohover`, | ||
| - | * `pylonSelected`, | ||
| - | * `pylonEmpty`, | ||
| - | * `pylonMagazineEmpty`, | ||
| - | * `vtolMode`, | ||
| - | * `nvg`, | ||
| - | * and `user0` through `user50`. | ||
| - | |||
| - | ===== Bones ===== | ||
| - | |||
| - | Use **' | ||
| - | |||
| - | * Enter a bone name and select **Add Bone**. | ||
| - | * The bone is created at the selected Draw Group center, or at `0.5,0.5` when no Draw Group is selected. | ||
| - | * Set the selected bone to make new lines relative to that bone. | ||
| - | * Existing lines and grouped lines can be assigned to a bone in the selected element inspector. | ||
| - | |||
| - | Bone-relative lines export in this form: | ||
| - | |||
| - | <code -> | ||
| - | {" | ||
| - | </ | ||
| - | |||
| - | ===== Element Library ===== | ||
| - | |||
| - | The top-menu ' | ||
| - | |||
| - | Choose a library item to add it to the center of the HUD plane. Library items are copied into the current project as normal editable Draw Groups. Their class names are made unique if the current project already has a matching class name. | ||
| - | |||
| - | ===== Project Settings ===== | ||
| - | |||
| - | Set these before final export: | ||
| - | |||
| - | * Export target | ||
| - | * `Vehicle class MFD`: exports a `class MFD` fragment. | ||
| - | * `Magazine mfdElements`: | ||
| - | * HUD class: the generated root class name, for example `AirplaneHUD` or `HelmetHUD`. | ||
| - | * Mount | ||
| - | * ' | ||
| - | * `Helmet mounted`: uses `helmetMountedDisplay`, | ||
| - | * Color / Alpha: default HUD color used by elements unless overridden. | ||
| - | * Font: config font name used by the HUD. The dropdown contains font names found in local Arma/RKSL configs: | ||
| - | * `Caveat`, | ||
| - | * `EtelkaMonospacePro`, | ||
| - | * `EtelkaMonospaceProBold`, | ||
| - | * `FontMono`, | ||
| - | * `LCD14`, | ||
| - | * `LucidaConsoleB`, | ||
| - | * `PuristaBold`, | ||
| - | * `PuristaLight`, | ||
| - | * `PuristaMedium`, | ||
| - | * `PuristaSemiBold`, | ||
| - | * `PuristaSemibold`, | ||
| - | * `RobotoCondensed`, | ||
| - | * `RobotoCondensedBold`, | ||
| - | * `RobotoCondensedLight`, | ||
| - | * `TahomaB`. | ||
| - | * Imported configs using another font keep it as a custom dropdown option. | ||
| - | |||
| - | For cockpit HUDs, confirm the memory point names match the model. For HMDs, confirm the helmet vectors are correct for the intended aircraft/ | ||
| - | |||
| - | ===== Element Properties ===== | ||
| - | |||
| - | Select a Draw Group to edit its properties. | ||
| - | |||
| - | ==== Common properties: ==== | ||
| - | |||
| - | * Class name: generated config class name. Use Arma-safe names with letters, digits, and underscores. | ||
| - | * Color override: optionally give one element its own color. | ||
| - | * Coordinates: | ||
| - | * Width: line width in MFD config terms. | ||
| - | |||
| - | ==== Line-specific: | ||
| - | |||
| - | * `x1`, `y1`, `x2`, `y2`: line endpoints. | ||
| - | * `lineType`: solid, dotted, dashed, or dot-dashed. | ||
| - | |||
| - | ==== Grouped-line-specific: | ||
| - | |||
| - | * Chains: number of point chains that will be separated by `{}` in `points[]`. | ||
| - | * Points: total point count across all chains. | ||
| - | * Width / lineType: exported once on the grouped line class. | ||
| - | |||
| - | ==== Box-specific: | ||
| - | |||
| - | * `x`, `y`: start position. | ||
| - | * `w`, `h`: width and height. | ||
| - | |||
| - | ==== Circle-specific: | ||
| - | |||
| - | * `cx`, `cy`: center. | ||
| - | * `r`: radius. | ||
| - | * `segments`: number of line segments used in export. Higher values are smoother but produce longer config. | ||
| - | |||
| - | ==== Text-specific: | ||
| - | |||
| - | * `source`: `static`, `speed`, `altitudeAGL`, | ||
| - | * `Static text`: used when `source` is `static`. | ||
| - | * `sourceScale`: | ||
| - | * `sourcePrecision`: | ||
| - | * `sourceIndex`: | ||
| - | * `align`: left, center, or right. | ||
| - | * `scale`: text size. | ||
| - | |||
| - | ==== Bone-cue-specific: | ||
| - | |||
| - | * `source`: vector source such as `impactpoint`, | ||
| - | * `condition`: | ||
| - | * `pos10x`, `pos10y`: vector projection scale. | ||
| - | * `size`: cue size around the vector bone. | ||
| - | |||
| - | For helmet-mounted displays, prefer `ToView` vector sources such as `impactpointtoview`, | ||
| - | |||
| - | ===== Exporting Config ===== | ||
| - | |||
| - | The generated config appears in **Config Export**. | ||
| - | |||
| - | Use: | ||
| - | |||
| - | * Copy Config: copies the generated config to the clipboard. | ||
| - | * Download: downloads `arma_mfd_export.hpp`. | ||
| - | |||
| - | Paste the exported fragment into the relevant Arma config file: | ||
| - | |||
| - | * Vehicle HUD: inside the target vehicle class or merge with an existing `class MFD`. | ||
| - | * Magazine/ | ||
| - | |||
| - | Review the exported config before packing: | ||
| - | |||
| - | * Confirm class names are unique. | ||
| - | * Confirm cockpit memory points or HMD vectors are correct. | ||
| - | * Confirm vector sources match cockpit vs HMD use. | ||
| - | * Confirm text sources and `sourceIndex` values are correct. | ||
| - | * Confirm line/circle complexity is reasonable. | ||
| - | |||
| - | ===== Importing Config Extracts ===== | ||
| - | |||
| - | Use **Import** to load either an editor project JSON file or an Arma config extract. | ||
| - | |||
| - | Supported import file types: | ||
| - | |||
| - | * `.json`: full editable MFD Creator project. | ||
| - | * `.hpp`, `.txt`, `.cpp`, `.h`: Arma config extract. | ||
| - | |||
| - | Config import supports common `class MFD` and `class mfdElements` fragments containing: | ||
| - | |||
| - | * root HUD class settings, | ||
| - | * `color[]`, `font`, cockpit memory points, and HMD vectors, | ||
| - | * `class Bones` vector bones, | ||
| - | * `class Draw` line elements, | ||
| - | * absolute and fixed-bone line point triplets, | ||
| - | * text elements, | ||
| - | * simple `type = " | ||
| - | * bone cue patterns that use a vector bone. | ||
| - | |||
| - | Imported line geometry is converted into editable elements where possible: | ||
| - | |||
| - | * two points become a Line; | ||
| - | * rectangular closed lines become a Box; | ||
| - | * circular closed line approximations become a Circle; | ||
| - | * longer polylines and classes with `{}` line breaks become one grouped line layer. | ||
| - | |||
| - | Config import is intended for practical extracts and round-tripping this tool's own exports. It is not a full Arma preprocessor. | ||
| - | |||
| - | ===== Saving And Loading Projects ===== | ||
| - | |||
| - | Use **Save JSON** to download an editable project file: | ||
| - | |||
| - | <code -> | ||
| - | arma_mfd_editor_project.json | ||
| - | </ | ||
| - | |||
| - | This stores: | ||
| - | |||
| - | * project settings, | ||
| - | * grid and snap settings, | ||
| - | * all drawn elements, | ||
| - | * Draw Group order. | ||
| - | |||
| - | Use **Import** to load a saved project JSON back into the editor. | ||
| - | |||
| - | **NOTE: JSON project files are for the editor only. They are not Arma config files.** | ||
| - | |||
| - | ===== Keyboard Shortcuts ===== | ||
| - | |||
| - | When not typing in an input: | ||
| - | |||
| - | * `v`: Select tool. | ||
| - | * `l`: Line tool. | ||
| - | * `r`: Box tool. | ||
| - | * `c`: Circle tool. | ||
| - | * `t`: Text tool. | ||
| - | * `b`: Bone Cue tool. | ||
| - | * `Delete`: delete selected element. | ||
| - | |||
| - | ===== Practical Workflow ===== | ||
| - | |||
| - | - Choose export target and mount type. | ||
| - | - Set the HUD class name and default color. | ||
| - | - Set grid and snap distance. | ||
| - | - Draw static reference symbols first, such as waterline, reticle, or frame. | ||
| - | - Add dynamic text values. | ||
| - | - Add bone cues where the Draw Group needs to follow a vector source. | ||
| - | - Name Draw Groups with config-safe class names. | ||
| - | - Export config. | ||
| - | - Paste into the addon config. | ||
| - | - Validate with your normal Arma config build/ | ||
| - | - Test in game and return to the editor for coordinate adjustments. | ||
| - | |||
| - | ===== Public Use Notes ===== | ||
| - | |||
| - | The tool is static and client-side. Multiple users can use it at the same time because each browser tab has its own local state. | ||
| - | |||
| - | It does not provide: | ||
| - | |||
| - | * accounts, | ||
| - | * shared projects, | ||
| - | * live collaboration, | ||
| - | * central storage, | ||
| - | * permission control, | ||
| - | * audit history. | ||
| - | |||
| - | ===== Known Limitations ===== | ||
| - | |||
| - | * It exports useful config fragments, not a complete addon. | ||
| - | * It does not fully parse arbitrary Arma config syntax, macros, includes, inheritance, | ||
| - | * It imports supported MFD/HUD config extracts into editable shapes where possible. | ||
| - | * Circle export uses line segments, not a native Arma circle primitive. | ||
| - | * Bone cues are a simple generated pattern around a vector bone. | ||
| - | * It cannot verify model memory points, turret paths, or source behavior in game. | ||
| - | * Final validation still needs Arma config checking and in-game testing. | ||
| - | |||