API stability
Hammerite is versioned as one (HammeriteVersion.STRING, and
every addon's plugin.cfg), following semantic versioning over the classes
listed here: their public properties, methods, signals and constants, the autoloads (Hammerite,
HammeriteEditor, HammeriteAudio, HammeriteNavigation), and the shader contracts a
game's own shaders are written against. What changes is in CHANGELOG.md, and
what each of them does is in the API reference.
- A patch release (1.0.x) fixes things and changes none of it.
- A minor release adds to it.
- Only a major release removes or changes any of it.
Everything else is experimental: every other class_name, any member whose name starts with
_, and any member of a supported class tagged @experimental on its own - much of
HammeriteMapEditor is what its own menus and tools call, and is marked so. It is tagged
@experimental in its class or member documentation, so Godot's built-in help and the API reference
show the warning, and it may change in any release. If you need something that is only experimental, say so -
that is how things get onto this list.
A map saved by any earlier Hammerite opens in a later one; see "Compatibility" in the core README.
Supported classes
Core: the map
HammeriteMap, HammeriteBrush, HammeriteFace, HammeriteEntity, HammeriteBrushEntity, HammeriteLayer, HammeriteCell, HammeritePortal, HammeriteBoundaryWall, HammeritePrefab, HammeritePrefabSet, HammeritePrefabInstance, HammeriteSkybox
Core: in the scene
HammeriteMap3D, HammeriteWorldrepCompile, HammeriteCompileProgress
Core: entities
HammeritePointEntityNode3D, HammeritePointEntityAnimatableBody3D, HammeritePointEntityRigidBody3D, HammeriteBrushEntityNode3D, HammeriteBrushEntityStaticBody3D, HammeriteBrushEntityArea3D, HammeriteEntityNodes, HammeritePointLight3D, HammeriteDynamicLight3D, HammeriteDynamicPointLight3D, HammeriteDirectionalLight3D, HammeriteDynamicDirectionalLight3D, HammeriteGenericBrushEntity, HammeritePropModel, HammeriteDecal3D, HammeriteGizmoBuffer, HammeriteEditorHandle
Core: lighting
HammeriteLightmapper, HammeriteBakeSettings, HammeriteLightmapBakeReport, HammeriteBakedLight, HammeriteLightProbeSet, HammeriteLightCurve, HammeriteEyeAdaptation3D, HammeriteBakeOccluders, HammeriteBakeOccluder, HammeriteBrushEntityLighting, HammeriteShaderGlobals
Core: files, names and extension
HammeriteDataFile, HammeriteUnknownData, HammeriteReferences, HammeriteReferenceChange, HammeriteTextureLibrary, HammeriteModelLibrary, HammeriteAssetLibrary, HammeriteBrushPropertySchema, HammeriteBrushPropertyDef, HammeriteBrushPropertyRegistry, HammeriteBrushFill, HammeriteBrushFillRegistry, HammeriteSkyPropertySchema, HammeriteSkyPropertyRegistry, HammeriteEntityTypeRegistry, HammeriteUtils, HammeriteVersion
Editor
HammeriteMapEditor, HammeriteMapEditorSettings, HammeriteEditorColors, HammeriteEditorTheme, HammeriteEditorCommand, HammeriteEditorCommands, HammeriteEditorTool, HammeritePropertyControl, HammeriteEditorWorkspaces, HammeriteManual, HammeriteManualSection, HammeriteManualPage, HammeriteNotableSizes
Audio
HammeriteAudioRuntime, HammeriteAudioManager, HammeriteAudioHearing, HammeriteAudioMixSettings, HammeriteAudioSoundSpec, HammeriteAudioBakeReport, HammeriteAudioEmitter3D, HammeriteAudioReceiver3D, HammeriteAudioSoundTypes, HammeriteAudioSoundType, HammeriteAudioSoundEvent, HammeriteAudioPreset, HammeriteAudioMaterials, HammeriteAudioMaterial, HammeriteAudioBrushProperties, HammeriteAudioPortalProperties, HammeriteAudioEditorExtension
Navigation
HammeriteNavigationRuntime, HammeriteNavigationAgentProfile, HammeriteNavigationAgentProfiles, HammeriteNavigationBrushProperties, HammeriteNavigationEditorExtension, HammeriteNavigationLinkEntity3D, HammeriteNavigationBakeReport, HammeriteNavigationSurface, HammeriteNavigationLinkData, HammeriteNavigationBuilder, HammeriteNavigationLinkBuilder, HammeriteNavigationMeshWriter
Shader contracts
A game draws its own water and its own sky with shaders of its own, and those are written against names in Hammerite's shaders rather than against a class. These are covered by the same promise.
Water - a shader_type spatial shader that includes
res://addons/hammerite-core/resources/materials/hammerite_water.gdshaderinc, defines
void water_surface(inout HammeriteWater w), and then includes hammerite_water_main.gdshaderinc
(see "Water's look" in the core README).
struct HammeriteWater. What the surface is handed:time,uv,uv2,screen_uv,depth,position,normal,view_dir,ndotv,from_above,inv_view,inv_projection,vertex, and the brush'sclarity,tintanddisturbance. What it gives back:colour,alpha,carried.- The helpers:
water_travelled,water_below,water_lit,water_lit_from_below,water_slope,water_height,water_view_position,water_transmittance,water_fresnel.
Anything else those files declare - their uniforms, and what they include in turn - is not part of it.
Walls - a shader_type spatial shader that includes
res://addons/hammerite-core/resources/materials/hammerite_surface.gdshaderinc, defines
void brush_surface(inout HammeriteSurface s), and then includes hammerite_surface_main.gdshaderinc,
handed over as HammeriteBrush.surface_material (see "Walls' look" in the
core README).
struct HammeriteSurface. What the surface is handed:time,uv,uv2,position,face_normal,view_dir,u_axis,v_axis,has_uv_axes. What it gives back:albedo,normal,glow.- The helper
surface_normal_from_map.
Sky - a shader_type sky material assigned to HammeriteSkybox.dome_material. A uniform it
declares under one of these names is set from the skybox: horizon_color, zenith_color,
body_direction, body_color, body_energy, body_is_moon, light_energy. And one named after
each property declared on the sky (HammeriteSkyPropertyRegistry),
with / as _: clouds/cover is clouds_cover.
Shader globals - the names HammeriteShaderGlobals declares.