Mesh Spline - Spline Manager
Core data management module for the Mesh Spline tool. Handles creation, deletion, serialization, undo/redo, linking to master splines, and mesh spline presets.
Core data management module for the Mesh Spline tool. Handles creation, deletion, serialization, undo/redo, linking to master splines, and mesh spline presets.
Public API
| Function | Signature | Description |
|---|---|---|
M.getToolPrefixStr | () → string | Returns "Mesh Spline" |
M.getEditModeKey | () → string | Returns "meshSplineEditMode" |
M.getMeshSplines | () → table | Returns the mesh splines array |
M.getSplineMap | () → table | Returns the id-to-index map |
M.getDefaultSliderParams | () → table | Returns default UI slider parameters |
M.addNewMeshSpline | () → spline | Creates and returns a new mesh spline |
M.removeMeshSpline | (idx) | Removes mesh spline at index |
M.removeAllMeshSplines | (isIncludeDisabled) | Removes all mesh splines; if isIncludeDisabled is true, also removes disabled splines |
M.deepCopyMeshSpline | (spline) → table | Deep copies a mesh spline |
M.serializeMeshSpline | (spline) → table | Serializes for scene save |
M.deserializeMeshSpline | (data, isDeser?) → table | Deserializes from scene data |
M.setLink | (id, masterSplineId, isLink) | Links/unlinks from a master spline |
M.isLinked | (id) → bool | Checks if a spline is linked |
M.updateLinkedMeshSpline | (id, pts, widths, nmls, isLoop, isConform) | Updates linked spline geometry |
M.removeLinkedMeshSpline | (id) | Removes a linked mesh spline |
Built-in Presets
| Preset | Mesh | Spacing | Caps |
|---|---|---|---|
| Concrete Barrier | jerseybarrier_3m.dae | -0.18 | Yes (end caps) |
| Plastic Barrier | hr_plasticbarrier.dae | -0.075 | No |
| Metal Fence | s_metal_fence.dae | 0.2 | No |
Mesh Spline Data Structure
{
name = "Mesh Spline 1",
id = "<UUID>",
isDirty = true,
isLink = false,
linkId = nil,
-- Primary geometry
nodes = {}, widths = {}, nmls = {},
-- Mesh components
centerMeshPath = "art/shapes/objects/jerseybarrier_3m.dae",
rot = 1, -- pre-rotation (0-3)
spacing = 0.0,
verticalOffset = 0.0,
normalMode = 2, -- 0=local, 1=global, 2=terrain
-- Aliases (up to 3 alternative meshes)
isAlias1 = false, alias1MeshPath = "...", alias1Rot = 0,
-- ... alias2, alias3
-- Caps
isStartCap = false, startCapMeshPath = "...",
isEndCap = false, endCapMeshPath = "...",
}Dependencies
editor/toolUtilities/geom,util- Buffer-based deep copy via
string.buffer
Functions
setMeshSplines(splines)
Sets the mesh splines.
splines(any)
setMeshSpline(spline, idx)
Sets the mesh spline.
spline(object)idx(number)
setPreset(spline, presetStr)
Sets the preset.
spline(object)presetStr(any)
Returns: -- No spline or preset string provided.
splitMeshSpline(selectedSplineIdx, selectedNodeIdx)
Handles split mesh spline.
selectedSplineIdx(any)selectedNodeIdx(any)
joinMeshSplines(splineIdx1, nodeIdx1, splineIdx2, nodeIdx2)
Handles join mesh splines.
splineIdx1(any)nodeIdx1(any)splineIdx2(any)nodeIdx2(any)
Returns: -- Early return if invalid node indices.
deepCopyMeshSplineState()
Handles deep copy mesh spline state.
Returns: copy
copyMeshSplineProfile(spline)
Handles copy mesh spline profile.
spline(object)
Returns: copy
pasteMeshSplineProfile(spline, profile)
Handles paste mesh spline profile.
spline(object)profile(any)
singleSplineEditUndo(meshSplineData)
Handles single spline edit undo.
meshSplineData(any)
singleSplineEditRedo(meshSplineData)
Handles single spline edit redo.
meshSplineData(any)
presetSelectionUndo(meshSplineData)
Handles preset selection undo.
meshSplineData(any)
presetSelectionRedo(meshSplineData)
Handles preset selection redo.
meshSplineData(any)
transSplineEditUndo(data)
Handles trans spline edit undo.
data(table)
transSplineEditRedo(data)
Handles trans spline edit redo.
data(table)
objectSelectUndo(data)
Handles object select undo.
data(table)
objectSelectRedo(data)
Handles object select redo.
data(table)
Returns: self
updateDirtyMeshSplines()
Updates dirty mesh splines.
convertPathsToMeshSplines(paths)
Handles convert paths to mesh splines.
paths(any)
deepCopyMeshSplineState()
Handles deep copy mesh spline state.
Returns: copy
getCurrentMeshSplineList()
Returns the current mesh spline list.
Returns: list
unlinkAll()
Handles unlink all.
Returns: self
Additional Exports
M.convertPathsToMeshSplinesM.copyMeshSplineProfileM.deepCopyMeshSplineStateM.getCurrentMeshSplineListM.joinMeshSplinesM.objectSelectRedoM.objectSelectUndoM.pasteMeshSplineProfileM.presetSelectionRedoM.presetSelectionUndoM.setMeshSplineM.setMeshSplinesM.setPresetM.singleSplineEditRedoM.singleSplineEditUndoM.splitMeshSplineM.transSplineEditRedoM.transSplineEditUndoM.unlinkAllM.updateDirtyMeshSplines
See Also
- Mesh Spline - Import - Related reference
- Mesh Spline - Populate - Related reference
- World Editor Guide - Guide
Mesh Spline - Populate
Handles the placement of TSStatic mesh objects along mesh splines. Computes positions, rotations, and component selection for each mesh unit based on spacing, jitter, caps, and distribution mode.
Mission Editor - Additional Attributes
Sub-editor module for mission additional attributes including author, date, difficulty, grouping, time-of-day settings, and custom key-value attributes.