parin.engine

The engine module functions as a lightweight 2D game engine.

fn _parinSortLayered _parinSortTopDown _parinSortTopDownFast _parinSortTopDownFastest _parinTempUiTextSizeFunc _TEMP_REPLACE_ME_GetCodepointNext _TEMP_REPLACE_ME_GetCodepointPrevious _updateEngineMouseBuffer _updateEngineWasdBuffer _updateViewportInfoBuffer assetsPath attach Attached beginClip beginDepthSort beginUiFrame cancelTask clearAllEngineTasks defaultFilter defaultFont defaultWrap deltaMouse deltaTime deltaWheel dequeuePressedKey dequeuePressedRune detach didLoadOrSaveSucceed drawCirc drawDebugBoxWorld drawDebugEngineInfo drawLine drawRect drawRune drawSprite drawSpriteStack drawSpriteStackLayer drawSurface drawSurfaceArea drawText drawTexture drawTextureArea drawTextureSlice drawTile drawTileMap drawUiState drawVec2 drawViewport drawViewportArea droppedPaths elapsedTicks elapsedTickTime elapsedTime endClip endDepthSort endUiFrame engineViewportInfo envArgs fontIdCount fps fpsMax frameMake frameMakeBlank frameMakeSlice frameMakeSliceBlank frameMalloc frameMemoryContext frameRealloc frameResizeSlice freeAllFontIds freeAllResourceIds freeAllSoundIds freeAllTextureIds freeAllViewportIds getRequestedScreenshot handleUiInput isCursorVisible isDebugMode isDown isEnteringDebugMode isExitingDebugMode isFullscreen isLoggingLoadOrSaveFaults isLoggingMemoryTrackingInfo isNullFontVisible isNullTextureVisible isPixelPerfect isPixelSnapped isPressed isReleased isResolutionLocked isUsingAssetsPath isWindowResized lastLoadOrSaveFault loadBytes loadBytesIntoBuffer loadFont loadSound loadSurface loadTempBytes loadTempText loadText loadTextIntoBuffer loadTexture loadViewport lockResolution masterVolume measureTextSize mouse openUrl openWindow openWindowC pauseSound playSound prepareTempText randf randi randomize readyUi repeatTask requestScreenshot resolution resolutionHeight resolutionWidth resumeSound saveBytes saveScreenshot saveText screenHeight screenSize screenWidth setAssetsPath setDebugModeKey setDefaultFilter setDefaultFont setDefaultWrap setFpsMax setIsCursorVisible setIsDebugMode setIsFullscreen setIsLoggingLoadOrSaveFaults setIsLoggingMemoryTrackingInfo setIsNullFontVisible setIsNullTextureVisible setIsPixelPerfect setIsPixelSnapped setIsUsingAssetsPath setMasterVolume setRandomSeed setVsync setWindowBackgroundColor setWindowBorderColor setWindowIconFromFiles setWindowMaxSize setWindowMinSize setWindowTitle soundIdCount startSound stopSound takeScreenshot textureIdCount toAssetsPath toCanvasPoint toggleIsCursorVisible toggleIsDebugMode toggleIsFullscreen toggleResolution toggleSoundIsActive toggleSoundIsPaused toScenePoint unlockResolution updateWindow viewportIdCount vsync wasd wasdPressed wasdReleased windowBackgroundColor windowBorderColor windowHeight windowSize windowWidth

Types 19

aliasTimer = GTimer!elapsedTickTime

A timer with pause/resume and repeat support.

aliasEngineTasks = GenList!( Task, SparseList!(Task, FixedList!(SparseListItem!Task, defaultEngineEngineTasksCapacity)), FixedList!(Gen, defaultEngineEngineTasksCapacity) )

A container type holding scheduled engine tasks.

An identifier for a scheduled engine task.

aliasEngineFlags = uint

Type representing the internal engine flags.

The internal engine flags.

none = 0x000000
isUpdating = 0x000001
isUsingAssetsPath = 0x000002
isPixelSnapped = 0x000004
isPixelPerfect = 0x000008
isNullTextureVisible = 0x000010
isNullFontVisible = 0x000020
isLoggingLoadOrSaveFaults = 0x000040
isLoggingMemoryTrackingInfo = 0x000080
isDebugMode = 0x000100
enumDepthSortMode : ubyte

Depth sorting modes.

topDownSorts with: Layer + Y + Call Order
topDownFastSorts with: Layer + Y
topDownFastestSorts with: Y
layeredSorts with: Layer + Call Order

Internal representation of a viewport within the engine.

Fields
int lockWidth
int lockHeight
bool isChanging
bool isLocking

Internal state of the engine.

Fields
UpdateFunc updateFunc
CallFunc finishFunc
Keyboard debugModeKey
bool debugModePreviousState
bool debugModeEnteringFrameState
bool debugModeExitingFrameState
ViewportInfo viewportInfoBuffer
Vec2 mouseBuffer
Vec2 wasdBuffer
Vec2 wasdPressedBuffer
Vec2 wasdReleasedBuffer
double elapsedTickTimeBuffer
bool clipIsActive
Rgba windowBorderColor
Filter defaultFilter
Wrap defaultWrap
FontId defaultFont
TextureId currentScreenshotTexture
Camera userCamera
ViewportId userViewport
Fault lastLoadOrSaveFault
FStr!defaultEngineAssetsPathCapacity assetsPath
FStr!defaultEngineScreenshotTargetPathCapacity screenshotTargetPath
FStr!defaultEngineScreenshotTargetPathCapacity screenshotLastFaultPath
IStr screenshotLastFaultFile
Sz screenshotLastFaultLine
FixedList!(IStr, defaultEngineEnvArgsCapacity) envArgsBuffer
DepthSortData depthSortData
DepthSortMode depthSortMode
bool depthSortActive
structTextureId

A texture identifier.

Fields
Methods
bool isNull() @safe nothrow @nogcChecks whether the resource is null (default value).
bool isValid() @safe nothrow @nogcChecks whether the resource is valid (loaded). Null is invalid.
TextureId validate(IStr message = defaultEngineValidateErrorMessage) @safe nothrow @nogcReturns this resource if valid, or asserts with the given message if not.
Filter filter() @safe nothrow @nogcReturns the filter mode.
void setFilter(Filter value) @safe nothrow @nogcSets the filter mode.
Wrap wrap() @safe nothrow @nogcReturns the wrap mode.
void setWrap(Wrap value) @safe nothrow @nogcSets the wrap mode.
int width() @safe nothrow @nogcReturns the width in pixels.
int height() @safe nothrow @nogcReturns the height in pixels.
Vec2 size() @safe nothrow @nogcReturns the size in pixels.
void free() @safe nothrow @nogcFrees the resource and resets the identifier to null.
structFontId

A font identifier.

Fields
Methods
bool isNull() @safe nothrow @nogcChecks whether the resource is null (default value).
bool isValid() @safe nothrow @nogcChecks whether the resource is valid (loaded). Null is invalid.
FontId validate(IStr message = defaultEngineValidateErrorMessage) @safe nothrow @nogcReturns this resource if valid, or asserts with the given message if not.
Filter filter() @safe nothrow @nogcReturns the filter mode.
void setFilter(Filter value) @safe nothrow @nogcSets the filter mode.
Wrap wrap() @safe nothrow @nogcReturns the wrap mode.
void setWrap(Wrap value) @safe nothrow @nogcSets the wrap mode.
int size() @safe nothrow @nogcReturns the font size in pixels.
int runeSpacing() @safe nothrow @nogcReturns the spacing between characters in pixels.
void setRuneSpacing(int value) @safe nothrow @nogcSets the spacing between characters in pixels.
int lineSpacing() @safe nothrow @nogcReturns the spacing between lines in pixels.
void setLineSpacing(int value) @safe nothrow @nogcSets the spacing between lines in pixels.
GlyphInfo glyphInfo(int rune) @safe nothrow @nogcReturns the glyph information for the given rune.
void free() @safe nothrow @nogcFrees the resource and resets the identifier to null.
structSoundId

A sound identifier.

Fields
Methods
bool isNull() @safe nothrow @nogcChecks whether the resource is null (default value).
bool isValid() @safe nothrow @nogcChecks whether the resource is valid (loaded). Null is invalid.
SoundId validate(IStr message = defaultEngineValidateErrorMessage) @safe nothrow @nogcReturns this resource if valid, or asserts with the given message if not.
float volume() @safe nothrow @nogcReturns the volume. The default value is 1.0 (normal level).
void setVolume(float value) @safe nothrow @nogcSets the volume. The default value is 1.0 (normal level).
float pan() @safe nothrow @nogcReturns the pan. The default value is 0.5 (center).
void setPan(float value) @safe nothrow @nogcSets the pan. The default value is 0.5 (center).
float pitch() @safe nothrow @nogcReturns the pitch. The default value is 1.0 (base level).
void setPitch(float value, bool canUpdatePitchVarianceBase = false) @safe nothrow @nogcSets the pitch. The default value is 1.0 (base level).
float pitchVariance() @safe nothrow @nogcReturns the pitch variance. The default value is 1.0 (no variation).
void setPitchVariance(float value) @safe nothrow @nogcSets the pitch variance. The default value is 1.0 (no variation).
float pitchVarianceBase() @safe nothrow @nogcReturns the pitch variance base. The default value is 1.0 (base level).
void setPitchVarianceBase(float value) @safe nothrow @nogcSets the pitch variance base. The default value is 1.0 (base level).
bool canRepeat() @safe nothrow @nogcReturns true if the sound is set to repeat.
void setCanRepeat(bool value) @safe nothrow @nogcSets whether the sound should repeat.
bool isActive() @safe nothrow @nogcReturns true if the sound is currently active (playing).
bool isPaused() @safe nothrow @nogcReturns true if the sound is currently paused.
float time() @safe nothrow @nogcReturns the current playback time in seconds.
float duration() @safe nothrow @nogcReturns the total duration in seconds.
float progress() @safe nothrow @nogcReturns the progress. The value is between 0.0 and 1.0 (inclusive).
void free() @safe nothrow @nogcFrees the resource and resets the identifier to null.

A viewport identifier.

Fields
Methods
bool isNull() @safe nothrow @nogcChecks whether the resource is null (default value).
bool isValid() @safe nothrow @nogcChecks whether the resource is valid (loaded). Null is invalid.
ViewportId validate(IStr message = defaultEngineValidateErrorMessage) @safe nothrow @nogcReturns this resource if valid, or asserts with the given message if not.
Filter filter() @safe nothrow @nogcReturns the filter mode.
void setFilter(Filter value) @safe nothrow @nogcSets the filter mode.
Wrap wrap() @safe nothrow @nogcReturns the wrap mode.
void setWrap(Wrap value) @safe nothrow @nogcSets the wrap mode.
Blend blend() @safe nothrow @nogcReturns the blend mode.
void setBlend(Blend value) @safe nothrow @nogcSets the blend mode.
Rgba color() @safe nothrow @nogcReturns the color in RGBA.
void setColor(Rgba value) @safe nothrow @nogcSets the color in RGBA.
int width() @safe nothrow @nogcReturns the width in pixels.
int height() @safe nothrow @nogcReturns the height in pixels.
Vec2 size() @safe nothrow @nogcReturns the size in pixels.
bool isFirstUse() @safe nothrow @nogcReturns true if the viewport has never been used (attached).
bool isAttached() @safe nothrow @nogcReturns true if the viewport is attached.
void resize(int newWidth, int newHeight) @safe nothrow @nogcResizes the viewport. Internally, this creates a new texture, so avoid calling it while the viewport is in use.
void free() @safe nothrow @nogcFrees the resource and resets the identifier to null.
structClip

A clipping region. Designed to be used with the with keyword.

Fields
Rect _clipArea
Constructors
this(Rect area)
this(Vec2 position, Vec2 size)
this(Vec2 size)
this(float x, float y, float w, float h)
this(float w, float h)
this(Vec2 position, float w, float h)
this(float x, float y, Vec2 size)
Destructors
struct_Attached(T)
Fields
T * _attachedObject
Constructors
this(ref T object)
Destructors
Fields
Methods
void free() @trusted @safe nothrow
Constructors
this(Sz length)
Fields
TextureId texture
Rect area
Vec2 position
DrawOptions options
Fields
float y
ushort i
ubyte layer
structDepthSort

A depth sort. Works only with textures. Designed to be used with the with keyword.

Fields
DepthSortMode _depthSortMode
Constructors
Destructors
aliastickTime = elapsedTickTime
deprecated Use `elapsedTickTime`. It's a better name.

Functions 221

fn_Attached!T Attached(T)(ref T object) @trusted nothrow @nogcAttaches the camera for the scope and detaches automatically. Designed to be used with the `with` keyword.
fnint _parinSortTopDown(const(void) * a, const(void) * b) @trusted nothrow @nogc extern(C)
fnint _parinSortTopDownFast(const(void) * a, const(void) * b) @trusted nothrow @nogc extern(C)
fnint _parinSortTopDownFastest(const(void) * a, const(void) * b) @trusted nothrow @nogc extern(C)
fnint _parinSortLayered(const(void) * a, const(void) * b) @trusted nothrow @nogc extern(C)
fnIVec2 _parinTempUiTextSizeFunc(UiFont font, uint fontScale, const(char)[] text) @trusted nothrow @nogc
fnvoid openWindow(int width, int height, const(IStr)[] args, IStr title = defaultEngineTitle, bool vsyncOff = false) @trustedOpens the window with the given information. Avoid calling this function manually.
fnvoid openWindowC(int width, int height, int argc, IStrz * argv, IStrz title = defaultEngineTitle, bool vsyncOff = false) @trustedOpens the window with the given information using C strings. Avoid calling this function manually.
fnvoid updateWindow(UpdateFunc updateFunc, CallFunc finishFunc = null) @trustedStarts the main window loop. Accepts an update function and optional debug callbacks. Returns when the update function returns true. Avoid calling this function manually.
fnVec2 drawText(A...)(FontId font, InterpolationHeader header, A args, InterpolationFooter footer, Vec2 position, DrawOptions options = DrawOptions(), TextOptions extra = TextOptions())Draws interpolated text with the given font at the given position using the provided draw options. The text is formatted from an interpolated expression string, e.g. `drawText(font, i"Score: ", pos...
fnVec2 drawText(A...)(InterpolationHeader header, A args, InterpolationFooter footer, Vec2 position, DrawOptions options = DrawOptions(), TextOptions extra = TextOptions())Draws interpolated text with the default font at the given position with the provided draw options. The text is formatted from an interpolated expression string, e.g. `drawText(i"Score: ", position...
fnvoid * frameMalloc(Sz alignment, Sz size, IStr file = __FILE__, Sz line = __LINE__) @safe nothrowAllocates raw memory from the frame arena.
fnvoid * frameRealloc(Sz alignment, void * oldPtr, Sz oldSize, Sz newSize, IStr file = __FILE__, Sz line = __LINE__) @safe nothrowReallocates memory from the frame arena.
fnT * frameMakeBlank(T)(IStr file = __FILE__, Sz line = __LINE__) @safe nothrowAllocates uninitialized memory for a single value of type `T`.
fnT * frameMake(T)(IStr file = __FILE__, Sz line = __LINE__) @safe nothrowAllocates and initializes a single value of type `T`.
fnT * frameMake(T)(const(T) value, IStr file = __FILE__, Sz line = __LINE__) @safe nothrowAllocates and initializes a single value of type `T`.
fnT[] frameMakeSliceBlank(T)(Sz length, IStr file = __FILE__, Sz line = __LINE__) @safe nothrowAllocates uninitialized memory for an array of type `T` with the given length.
fnT[] frameMakeSlice(T)(Sz length, IStr file = __FILE__, Sz line = __LINE__) @safe nothrowAllocates and initializes an array of type `T` with the given length.
fnT[] frameMakeSlice(T)(Sz length, const(T) value, IStr file = __FILE__, Sz line = __LINE__) @safe nothrowAllocates and initializes an array of type `T` with the given length.
fnT[] frameMakeSlice(T)(const(T)[] values, IStr file = __FILE__, Sz line = __LINE__) @safe nothrowAllocates and initializes an array of type `T` with the given slice.
fnT[] frameResizeSlice(T)(T * values, Sz oldLength, Sz newLength, IStr file = __FILE__, Sz line = __LINE__) @safe nothrowResizes an array of type `T` with the given slice pointer and length.
fnMemoryContext frameMemoryContext() @safe nothrowReturns a memory context from the frame allocator.
fnBStr prepareTempText(Sz capacity = defaultEngineLoadOrSaveTextCapacity, IStr file = __FILE__, Sz line = __LINE__) @safe nothrowAllocates a temporary text buffer for this frame. Each call returns a new buffer.
fnEngineTaskId repeatTask(UpdateFunc func, float interval, int count = - 1, bool canCallNow = false) @safe nothrowSchedules a task to run every interval. Set `count` to limit how many times it runs. Use -1 to run indefinitely. If `canCallNow` is true, the task runs immediately.
fnvoid cancelTask(EngineTaskId id) @safe nothrowCancels a scheduled task by its ID.
fnSurface loadSurface(IStr path, IStr file = __FILE__, Sz line = __LINE__) @safe nothrowLoads a surface file (PNG) with default filter and wrap modes. Uses the assets path unless the input starts with `/` or `\`, or `isUsingAssetsPath` is false. Path separators are normalized to the p...
fnSurface loadSurface(const(ubyte)[] memory, IStr ext = ".png", IStr file = __FILE__, Sz line = __LINE__) @safe nothrowLoads a surface file (PNG) from memory with default filter and wrap modes.
fnTextureId loadTexture(IStr path, IStr file = __FILE__, Sz line = __LINE__) @safe nothrowLoads a texture file (PNG) with default filter and wrap modes. Uses the assets path unless the input starts with `/` or `\`, or `isUsingAssetsPath` is false. Path separators are normalized to the p...
fnTextureId loadTexture(const(ubyte)[] memory, IStr ext = ".png", IStr file = __FILE__, Sz line = __LINE__) @safe nothrowLoads a texture file (PNG) from memory with default filter and wrap modes.
fnFontId loadFont(IStr path, int size, int runeSpacing = - 1, int lineSpacing = - 1, IStr32 runes = "", IStr file = __FILE__, Sz line = __LINE__) @safe nothrowLoads a font file (TTF) with default filter and wrap modes. Uses the assets path unless the input starts with `/` or `\`, or `isUsingAssetsPath` is false. Path separators are normalized to the plat...
fnFontId loadFont(const(ubyte)[] memory, int size, int runeSpacing = - 1, int lineSpacing = - 1, IStr32 runes = "", IStr ext = ".ttf", IStr file = __FILE__, Sz line = __LINE__) @safe nothrowLoads a font file (TTF) from memory with default filter and wrap modes.
fnFontId loadFont(TextureId texture, int tileWidth, int tileHeight, IStr file = __FILE__, Sz line = __LINE__) @safe nothrowLoads a font file (TTF) from a texture with default filter and wrap modes. The input texture will be invalidated after loading.
fnSoundId loadSound(IStr path, float volume, float pitch, bool canRepeat, float pitchVariance = 1.0f, IStr file = __FILE__, Sz line = __LINE__) @safe nothrowLoads a sound file (WAV, OGG, MP3) with default playback settings. Uses the assets path unless the input starts with `/` or `\`, or `isUsingAssetsPath` is false. Path separators are normalized to t...
fnViewportId loadViewport(int width, int height, Rgba color, Blend blend = Blend.alpha, IStr file = __FILE__, Sz line = __LINE__) @safe nothrowLoads a viewport with default filter and wrap modes.
fnLStr loadBytes(IStr path, IStr file = __FILE__, Sz line = __LINE__) @safe nothrowLoads bytes from a file and returns the contents as a list. Uses the assets path unless the input starts with `/` or `\`, or `isUsingAssetsPath` is false. Path separators are normalized to the plat...
fnIStr loadTempBytes(IStr path, Sz capacity = defaultEngineLoadOrSaveTextCapacity, IStr file = __FILE__, Sz line = __LINE__) @safe nothrowLoads bytes from a file into a temporary buffer for the current frame. Uses the assets path unless the input starts with `/` or `\`, or `isUsingAssetsPath` is false. Path separators are normalized ...
fnFault loadBytesIntoBuffer(L = LStr)(IStr path, ref L listBuffer, IStr file = __FILE__, Sz line = __LINE__) @safe nothrowLoads bytes from a file into the given buffer. Uses the assets path unless the input starts with `/` or `\`, or `isUsingAssetsPath` is false. Path separators are normalized to the platform's native...
fnFault saveBytes(IStr path, IStr bytes, IStr file = __FILE__, Sz line = __LINE__) @safe nothrowSaves bytes into a file with the given content. Uses the assets path unless the input starts with `/` or `\`, or `isUsingAssetsPath` is false. Path separators are normalized to the platform's nativ...
fnLStr loadText(IStr path, IStr file = __FILE__, Sz line = __LINE__) @safe nothrowLoads a text file and returns the contents as a list. Uses the assets path unless the input starts with `/` or `\`, or `isUsingAssetsPath` is false. Path separators are normalized to the platform's...
fnIStr loadTempText(IStr path, Sz capacity = defaultEngineLoadOrSaveTextCapacity, IStr file = __FILE__, Sz line = __LINE__) @safe nothrowLoads a text file into a temporary buffer for the current frame. Uses the assets path unless the input starts with `/` or `\`, or `isUsingAssetsPath` is false. Path separators are normalized to the...
fnFault loadTextIntoBuffer(L = LStr)(IStr path, ref L listBuffer, IStr file = __FILE__, Sz line = __LINE__) @safe nothrowLoads a text file into the given buffer. Uses the assets path unless the input starts with `/` or `\`, or `isUsingAssetsPath` is false. Path separators are normalized to the platform's native format.
fnFault saveText(IStr path, IStr text, IStr file = __FILE__, Sz line = __LINE__) @safe nothrowSaves a text file with the given content. Uses the assets path unless the input starts with `/` or `\`, or `isUsingAssetsPath` is false. Path separators are normalized to the platform's native format.
fnFault saveScreenshot(IStr path, ViewportId viewport, bool hasAlpha, IStr file = __FILE__, Sz line = __LINE__) @safe nothrowSaves an image taken from the given viewport. Uses the assets path unless the input starts with `/` or `\`, or `isUsingAssetsPath` is false. Path separators are normalized to the platform's native ...
fnvoid setAssetsPath(IStr path) @safe nothrowSets the path used as the assets folder.
fnvoid _updateViewportInfoBuffer() @safe nothrow @nogc
fnvoid _updateEngineMouseBuffer(Vec2 value) @safe nothrow @nogc
fnvoid _updateEngineWasdBuffer() @safe nothrow @nogc
fnint _TEMP_REPLACE_ME_GetCodepointNext(const(char) * text, int * codepointSize) @trusted @safe nothrow @nogc
fnint _TEMP_REPLACE_ME_GetCodepointPrevious(const(char) * text, int * codepointSize) @trusted @safe nothrow @nogc
fnIStr assetsPath() @safe nothrow @nogcReturns the current path used as the assets folder.
fnIStr toAssetsPath(IStr path) @safe nothrow @nogcConverts a path to one within the assets folder. Returns the path unchanged if it is absolute or asset paths are disabled.
fnbool isUsingAssetsPath() @safe nothrow @nogcReturns true if the assets path is used when loading.
fnvoid setIsUsingAssetsPath(bool value) @safe nothrow @nogcSets whether the assets path should be used when loading.
fnbool isLoggingLoadOrSaveFaults() @safe nothrow @nogcReturns true if load or save faults should be logged.
fnvoid setIsLoggingLoadOrSaveFaults(bool value) @safe nothrow @nogcSets whether load or save faults should be logged.
fnbool isLoggingMemoryTrackingInfo() @safe nothrow @nogcReturns true if memory tracking logs are enabled.
fnvoid setIsLoggingMemoryTrackingInfo(bool value) @safe nothrow @nogcEnables or disables memory tracking logs.
fnbool isDebugMode() @safe nothrow @nogcReturns true if debug mode is active.
fnbool isEnteringDebugMode() @safe nothrow @nogcReturns true when entering debug mode this frame.
fnbool isExitingDebugMode() @safe nothrow @nogcReturns true when exiting debug mode this frame.
fnvoid setIsDebugMode(bool value) @safe nothrow @nogcSets whether debug mode should be active.
fnvoid toggleIsDebugMode() @safe nothrow @nogcToggles the debug mode on or off.
fnvoid setDebugModeKey(Keyboard value) @safe nothrow @nogcSets the key that toggles debug mode.
fnbool isWindowResized() @safe nothrow @nogcReturns true if the window was resized.
fnvoid setWindowMinSize(int width, int height) @safe nothrow @nogcSets the minimum size of the window.
fnvoid setWindowMaxSize(int width, int height) @safe nothrow @nogcSets the maximum size of the window.
fnRgba windowBackgroundColor() @safe nothrow @nogcReturns the current background color (fill color) of the window.
fnvoid setWindowBackgroundColor(Rgba value) @safe nothrow @nogcSets the background color (fill color) of the window.
fnRgba windowBorderColor() @safe nothrow @nogcReturns the current color of the window borders shown when the aspect ratio is fixed.
fnvoid setWindowBorderColor(Rgba value) @safe nothrow @nogcSets the color of the window borders shown when the aspect ratio is fixed.
fnvoid setWindowTitle(IStr value) @safe nothrow @nogcSets the title of the window.
fnFault setWindowIconFromFiles(IStr path) @safe nothrow @nogcSets the window icon using an texture file (PNG). Uses the assets path unless the input starts with `/` or `\`, or `isUsingAssetsPath` is false. Path separators are normalized to the platform's nat...
fnint screenWidth() @safe nothrow @nogcReturns the current screen width.
fnint screenHeight() @safe nothrow @nogcReturns the current screen height.
fnVec2 screenSize() @safe nothrow @nogcReturns the current screen size.
fnint windowWidth() @safe nothrow @nogcReturns the current window width.
fnint windowHeight() @safe nothrow @nogcReturns the current window height.
fnVec2 windowSize() @safe nothrow @nogcReturns the current window size.
fnint resolutionWidth() @safe nothrow @nogcReturns the current resolution width.
fnint resolutionHeight() @safe nothrow @nogcReturns the current resolution height.
fnVec2 resolution() @safe nothrow @nogcReturns the current resolution.
fnbool isResolutionLocked() @safe nothrow @nogcReturns true if the resolution is locked.
fnvoid lockResolution(int width, int height) @safe nothrow @nogcLocks the resolution to the given width and height.
fnvoid unlockResolution() @safe nothrow @nogcUnlocks the resolution.
fnvoid toggleResolution(int width, int height) @safe nothrow @nogcToggles resolution lock using the specified width and height.
fnViewportInfo engineViewportInfo() @safe nothrow @nogcReturns information about the engine viewport, including its size and position.
fnbool isFullscreen() @safe nothrow @nogcReturns true if the application is in fullscreen mode.
fnvoid setIsFullscreen(bool value) @safe nothrow @nogcSets whether the application should be in fullscreen mode.
fnvoid toggleIsFullscreen() @safe nothrow @nogcToggles fullscreen mode.
fnbool isCursorVisible() @safe nothrow @nogcReturns true if the cursor is visible.
fnvoid setIsCursorVisible(bool value) @safe nothrow @nogcSets whether the cursor should be visible.
fnvoid toggleIsCursorVisible() @safe nothrow @nogcToggles cursor visibility.
fnint fps() @safe nothrow @nogcReturns the current frames per second (FPS).
fnint fpsMax() @safe nothrow @nogcReturns the maximum frames per second (FPS).
fnvoid setFpsMax(int value) @safe nothrow @nogcSets the maximum frames per second (FPS).
fnbool vsync() @safe nothrow @nogcReturns the vertical synchronization (VSync) state.
fnvoid setVsync(bool value) @safe nothrow @nogcSets the vertical synchronization (VSync) state.
fndouble elapsedTime() @safe nothrow @nogcReturns the total elapsed time since the application started. Prefer using `elapsedTickTime`.
fndouble elapsedTickTime() @safe nothrow @nogcReturns the total elapsed time since the application started, at the start of the current tick.
fnulong elapsedTicks() @safe nothrow @nogcReturns the total number of ticks since the application started.
fnfloat deltaTime() @safe nothrow @nogcReturns the time elapsed since the last frame.
fnint randi() @safe nothrow @nogcReturns a random integer between 0 and int.max (inclusive).
fnfloat randf() @safe nothrow @nogcReturns a random float between 0.0 and 1.0 (inclusive).
fnvoid randomize() @safe nothrow @nogcRandomizes the seed of the random number generator.
fnvoid setRandomSeed(int value) @safe nothrow @nogcSets the random number generator seed to the given value.
fnFilter defaultFilter() @safe nothrow @nogcReturns the default filter mode used for textures, fonts and viewports.
fnvoid setDefaultFilter(Filter value) @safe nothrow @nogcSets the default filter mode used for textures, fonts and viewports.
fnWrap defaultWrap() @safe nothrow @nogcReturns the default wrap mode used for textures, fonts and viewports.
fnvoid setDefaultWrap(Wrap value) @safe nothrow @nogcSets the default wrap mode used for textures, fonts and viewports.
fnFontId defaultFont() @safe nothrow @nogcReturns the default font used for null fonts.
fnvoid setDefaultFont(FontId value) @safe nothrow @nogcSets the default font used for null fonts.
fnbool isNullTextureVisible() @safe nothrow @nogcReturns true if drawing is done when using a null texture.
fnvoid setIsNullTextureVisible(bool value) @safe nothrow @nogcSets whether drawing should be done when using a null texture.
fnbool isNullFontVisible() @safe nothrow @nogcReturns true if drawing is done when using a null font.
fnvoid setIsNullFontVisible(bool value) @safe nothrow @nogcSets whether drawing should be done when using a null font.
fnbool isPixelSnapped() @safe nothrow @nogcReturns true if drawing is snapped to pixel coordinates.
fnvoid setIsPixelSnapped(bool value) @safe nothrow @nogcSets whether drawing should snap to pixel coordinates.
fnbool isPixelPerfect() @safe nothrow @nogcReturns true if drawing is pixel-perfect.
fnvoid setIsPixelPerfect(bool value) @safe nothrow @nogcSets whether drawing should be pixel-perfect.
fnVec2 measureTextSize(FontId font, IStr text, DrawOptions options = DrawOptions(), TextOptions extra = TextOptions()) @trusted @safe nothrow @nogcReturns the size of the text.
fnVec2 toCanvasPoint(Vec2 point, Camera camera) @safe nothrow @nogcConverts a scene point to a canvas point using the given camera and resolution.
fnVec2 toCanvasPoint(Vec2 point, Camera camera, Vec2 canvasSize) @safe nothrow @nogcConverts a scene point to a canvas point using the given camera and canvas size.
fnVec2 toScenePoint(Vec2 point, Camera camera) @safe nothrow @nogcConverts a canvas point to a scene point using the given camera and resolution.
fnVec2 toScenePoint(Vec2 point, Camera camera, Vec2 canvasSize) @safe nothrow @nogcConverts a canvas point to a scene point using the given camera and canvas size.
fnIStr[] envArgs() @safe nothrow @nogcReturns the arguments this application was started with.
fnIStr[] droppedPaths() @safe nothrow @nogcReturns the dropped paths from the current frame.
fnvoid takeScreenshot(IStr path, bool isUsingLockedResolution = false, bool hasAlpha = false, IStr file = __FILE__, Sz line = __LINE__) @safe nothrow @nogcTakes a screenshot and saves it to the given path. Uses the assets path unless the input starts with `/` or `\`, or `isUsingAssetsPath` is false. Path separators are normalized to the platform's na...
fnvoid requestScreenshot(bool isUsingLockedResolution = false, bool hasAlpha = false, IStr file = __FILE__, Sz line = __LINE__) @safe nothrow @nogcTakes a screenshot and creates a texture from it that can be used with the `getRequestedScreenshot` function.
fnbool getRequestedScreenshot(ref TextureId result, bool canFreeGivenTexture) @safe nothrow @nogcReturns the texture created by the last screenshot request, if available (true). When `canFreeGivenTexture` is true, the existing texture in `result` is freed.
fnvoid openUrl(IStr url) @safe nothrow @nogcOpens a URL in the default web browser.
fnFault lastLoadOrSaveFault() @safe nothrow @nogcReturns the last fault from a load or save call.
fnbool didLoadOrSaveSucceed(Fault fault, IStr message) @safe nothrow @nogcHelper for checking the result of a load or save call. Returns true if the fault is none, false otherwise.
fnSz textureIdCount() @safe nothrow @nogcReturns the number of loaded textures.
fnSz fontIdCount() @safe nothrow @nogcReturns the number of loaded fonts.
fnSz soundIdCount() @safe nothrow @nogcReturns the number of loaded sounds.
fnSz viewportIdCount() @safe nothrow @nogcReturns the number of loaded viewports.
fnvoid freeAllTextureIds() @safe nothrow @nogcFrees all loaded textures.
fnvoid freeAllFontIds() @safe nothrow @nogcFrees all loaded fonts.
fnvoid freeAllSoundIds() @safe nothrow @nogcFrees all loaded sounds.
fnvoid freeAllViewportIds() @safe nothrow @nogcFrees all loaded viewports.
fnvoid freeAllResourceIds() @safe nothrow @nogcFrees all loaded textures, fonts, sounds, and viewports.
fnvoid clearAllEngineTasks() @safe nothrow @nogcClears all engine tasks.
fnVec2 mouse() @safe nothrow @nogcReturns the current mouse position on the window.
fnVec2 deltaMouse() @safe nothrow @nogcReturns the change in mouse position since the last frame.
fnfloat deltaWheel() @safe nothrow @nogcReturns the change in mouse wheel position since the last frame.
fnbool isDown(char key) @safe nothrow @nogcReturns true if the specified character is currently pressed.
fnbool isDown(IStr keys) @safe nothrow @nogcReturns true if one of the specified characters is currently pressed.
fnbool isDown(const(Keyboard) key1, const(Keyboard)[] keys...) @safe nothrow @nogcReturns true if one of the specified keyboard keys is currently pressed.
fnbool isDown(Mouse key) @safe nothrow @nogcReturns true if the specified mouse button is currently pressed.
fnbool isDown(Gamepad key, int id = 0) @safe nothrow @nogcReturns true if the specified gamepad button is currently pressed.
fnbool isDown(InputBinding binding) @safe nothrow @nogcReturns true if any of the keyboard keys or the gamepad button in the specified binding is currently pressed.
fnbool isPressed(char key) @safe nothrow @nogcReturns true if the specified character was pressed this frame.
fnbool isPressed(IStr keys) @safe nothrow @nogcReturns true if one of the specified characters was pressed this frame.
fnbool isPressed(const(Keyboard) key1, const(Keyboard)[] keys...) @safe nothrow @nogcReturns true if one of the specified keyboard keys was pressed this frame.
fnbool isPressed(Mouse key) @safe nothrow @nogcReturns true if the specified mouse button was pressed this frame.
fnbool isPressed(Gamepad key, int id = 0) @safe nothrow @nogcReturns true if the specified gamepad button was pressed this frame.
fnbool isPressed(InputBinding binding) @safe nothrow @nogcReturns true if any of the keyboard keys or the gamepad button in the specified binding was pressed this frame.
fnbool isReleased(char key) @safe nothrow @nogcReturns true if the specified character was released this frame.
fnbool isReleased(IStr keys) @safe nothrow @nogcReturns true if one of the specified characters was released this frame.
fnbool isReleased(const(Keyboard) key1, const(Keyboard)[] keys...) @safe nothrow @nogcReturns true if one of the specified keyboard keys was released this frame.
fnbool isReleased(Mouse key) @safe nothrow @nogcReturns true if the specified mouse button was released this frame.
fnbool isReleased(Gamepad key, int id = 0) @safe nothrow @nogcReturns true if the specified gamepad button was released this frame.
fnbool isReleased(InputBinding binding) @safe nothrow @nogcReturns true if any of the keyboard keys or the gamepad button in the specified binding was released this frame.
fnVec2 wasd() @safe nothrow @nogcReturns the direction from the WASD and arrow keys that are currently down. The result is not normalized.
fnVec2 wasdPressed() @safe nothrow @nogcReturns the direction from the WASD and arrow keys that were pressed this frame. The result is not normalized.
fnVec2 wasdReleased() @safe nothrow @nogcReturns the direction from the WASD and arrow keys that were released this frame. The result is not normalized.
fnKeyboard dequeuePressedKey() @safe nothrow @nogcReturns the next recently pressed keyboard key. This acts like a queue. Returns `Keyboard.none` if the queue is empty.
fndchar dequeuePressedRune() @safe nothrow @nogcReturns the next recently pressed character. This acts like a queue. Returns `\0` if the queue is empty.
fnvoid attach(ref Camera camera, Rounding type = Rounding.none) @safe nothrow @nogcAttaches the given camera and makes it active.
fnvoid attach(ViewportId viewport) @safe nothrow @nogcAttaches the given viewport and makes it active.
fnvoid detach(ref Camera camera) @safe nothrow @nogcDetaches the currently active camera.
fnvoid detach(ViewportId viewport) @safe nothrow @nogcDetaches the currently active viewport.
fnvoid beginClip(Rect area) @safe nothrow @nogcBegins a clipping region using the given area.
fnvoid beginClip(float x, float y, float w, float h) @safe nothrow @nogcBegins a clipping region using the given area.
fnvoid endClip() @safe nothrow @nogcEnds the active clipping region.
fnvoid beginDepthSort(DepthSortMode mode = DepthSortMode.topDown) @safe nothrow @nogcBegins a depth sort. Works only with textures.
fnvoid endDepthSort() @trusted @safe nothrow @nogcEnds a depth sort. Works only with textures.
fnvoid drawRect(Rect area, Rgba color = white, float thickness = - 1.0f, Vec2 origin = Vec2(), float rotation = 0.0f) @safe nothrow @nogcDraws a rectangle with the specified area and color.
fnvoid drawRect(Vec2 position, Vec2 size, Rgba color = white, float thickness = - 1.0f, Vec2 origin = Vec2(), float rotation = 0.0f) @safe nothrow @nogcDraws a rectangle with the specified area and color.
fnvoid drawRect(float x, float y, float w, float h, Rgba color = white, float thickness = - 1.0f, Vec2 origin = Vec2(), float rotation = 0.0f) @safe nothrow @nogcDraws a rectangle with the specified area and color.
fnvoid drawVec2(Vec2 point, Rgba color = white, float thickness = 9.0f) @safe nothrow @nogcDraws a point at the specified location with the given size and color.
fnvoid drawVec2(float x, float y, Rgba color = white, float thickness = 9.0f) @safe nothrow @nogcDraws a point at the specified location with the given size and color.
fnvoid drawCirc(Circ area, Rgba color = white, float thickness = - 1.0f) @safe nothrow @nogcDraws a circle with the specified area and color.
fnvoid drawCirc(Vec2 position, float radius, Rgba color = white, float thickness = - 1.0f) @safe nothrow @nogcDraws a circle with the specified area and color.
fnvoid drawCirc(float x, float y, float radius, Rgba color = white, float thickness = - 1.0f) @safe nothrow @nogcDraws a circle with the specified area and color.
fnvoid drawLine(Line area, Rgba color = white, float thickness = 9.0f) @safe nothrow @nogcDraws a line with the specified area, thickness, and color.
fnvoid drawLine(Vec2 a, Vec2 b, Rgba color = white, float thickness = 9.0f) @safe nothrow @nogcDraws a line with the specified area, thickness, and color.
fnvoid drawLine(float x1, float y1, float x2, float y2, Rgba color = white, float thickness = 9.0f) @safe nothrow @nogcDraws a line with the specified area, thickness, and color.
fnvoid drawSurface(ref Surface surface, Vec2 position, DrawOptions options = DrawOptions()) @safe nothrow @nogcDraws the surface at the given position with the specified draw options. Note: Surfaces are uploaded to a GPU atlas every frame they are drawn.
fnvoid drawSurfaceArea(ref Surface surface, Rect area, Vec2 position, DrawOptions options = DrawOptions()) @safe nothrow @nogcDraws a portion of the specified surface at the given position with the specified draw options. Note: Surfaces are uploaded to a GPU atlas every frame they are drawn.
fnvoid drawTexture(TextureId texture, Vec2 position, DrawOptions options = DrawOptions()) @safe nothrow @nogcDraws the texture at the given position with the specified draw options.
fnvoid drawTextureArea(TextureId texture, Rect area, Vec2 position, DrawOptions options = DrawOptions()) @safe nothrow @nogcDraws a portion of the specified texture at the given position with the specified draw options.
fnvoid drawTextureSlice(TextureId texture, Rect area, Rect target, Margin margin, bool canRepeat, DrawOptions options = DrawOptions()) @safe nothrow @nogcDraws a 9-slice from the specified texture area at the given target area.
fnvoid drawViewportArea(ViewportId viewport, Rect area, Vec2 position, DrawOptions options = DrawOptions()) @safe nothrow @nogcDraws a portion of the specified viewport at the given position with the specified draw options.
fnvoid drawViewport(ViewportId viewport, Vec2 position, DrawOptions options = DrawOptions()) @safe nothrow @nogcDraws the viewport at the given position with the specified draw options.
fnVec2 drawRune(FontId font, dchar rune, Vec2 position, DrawOptions options = DrawOptions()) @safe nothrow @nogcDraws a single character from the specified font at the given position with the specified draw options.
fnVec2 drawRune(dchar rune, Vec2 position, DrawOptions options = DrawOptions()) @safe nothrow @nogcDraws a single character from the default font at the given position with the specified draw options. Call `setDefaultFont` before using this function.
fnVec2 drawText(FontId font, IStr text, Vec2 position, DrawOptions options = DrawOptions(), TextOptions extra = TextOptions()) @trusted @safe nothrow @nogcDraws text with the given font at the given position using the provided draw options.
fnVec2 drawText(IStr text, Vec2 position, DrawOptions options = DrawOptions(), TextOptions extra = TextOptions()) @safe nothrow @nogcDraws text with the default font at the given position with the provided draw options. Call `setDefaultFont` before using this function.
fnvoid drawDebugEngineInfo(Vec2 screenPoint, Camera camera = Camera(), DrawOptions options = DrawOptions(), bool isLogging = false) @safe nothrow @nogcDraws debug engine information at the given position with the provided draw options. Hold the left mouse button to create and resize a debug area. Hold the right mouse button to move the debug area...
fnvoid playSound(SoundId sound) @safe nothrow @nogcPlays the given sound. If the sound is already playing, this has no effect.
fnvoid stopSound(SoundId sound) @safe nothrow @nogcStops playback of the given sound.
fnvoid startSound(SoundId sound) @safe nothrow @nogcStarts playback of the given sound from the beginning.
fnvoid pauseSound(SoundId sound) @safe nothrow @nogcPauses playback of the given sound.
fnvoid resumeSound(SoundId sound) @safe nothrow @nogcResumes playback of the given sound if it was paused.
fnvoid toggleSoundIsActive(SoundId sound) @safe nothrow @nogcToggles whether the sound is playing or stopped.
fnvoid toggleSoundIsPaused(SoundId sound) @safe nothrow @nogcToggles whether the sound is paused or resumed.
fnfloat masterVolume() @safe nothrow @nogcReturns the current master volume level.
fnvoid setMasterVolume(float value) @safe nothrow @nogcSets the master volume level.
fnvoid drawTile(TextureId texture, Tile tile, DrawOptions options = DrawOptions()) @safe nothrow @nogcDraws a tile with a texture.
fnvoid drawTileMap(Sz N)(TextureId texture, ref GTileMap!N map, Rect viewArea = Rect(), DrawOptions options = DrawOptions()) @safe nothrow @nogcDraws a tile map with a texture. The view area controls what is visible.
fnvoid drawTileMap(Sz N)(TextureId texture, ref GTileMap!N map, Camera camera, DrawOptions options = DrawOptions()) @safe nothrow @nogcDraws a tile map with a texture. The camera controls what is visible.
fnvoid drawSprite(TextureId texture, Sprite sprite, DrawOptions options = DrawOptions()) @safe nothrow @nogcDraws a sprite with a texture. The Hook and Flip of the options is ignored.
fnvoid drawSpriteStackLayer(TextureId texture, SpriteStack stack, uint layer, Rgba layerColor = white, float layerScale = 1.0f) @safe nothrow @nogcDraws a sprite stack later.
fnvoid drawSpriteStack(TextureId texture, SpriteStack stack, Rgba layerColor = white, float layerScale = 1.0f) @safe nothrow @nogcDraws a sprite stack as is, without any depth.
fnvoid drawDebugBoxWorld(ref BoxWorld world, Rgba actorColor = blue, Rgba wallColor = maroon) @safe nothrow @nogcDraws debug rectangles based on the given box world.
fnvoid readyUi(ref UiContext ui, UiCommand[] commandsBuffer, char[] charDataBuffer, UiFont font = null, uint fontScale = 1, UiIconIdSizeFunc iconSizeFunc = null) @trusted @safe nothrow @nogcInitializes the microui context and sets temporary text size functions. Value `font` should be a `FontId*`.
fnvoid handleUiInput(ref UiContext ui) @safe nothrow @nogcHandles input events and updates the microui context accordingly.
fnvoid drawUiState(ref UiContext ui) @trusted @safe nothrow @nogcDraws the microui context to the screen.
fnvoid beginUiFrame(ref UiContext ui) @safe nothrow @nogcBegins input handling and UI processing.
fnvoid endUiFrame(ref UiContext ui) @safe nothrow @nogcEnds UI processing and performs drawing.

Variables 26

varEngineState * _engineState
enumvarengineFont = FontId(ResourceId(1))

The engine font identifier.

enumvarengineFontSmall = FontId(ResourceId(2))

The second engine font identifier.

enumvarengineViewport = ViewportId(ResourceId(1))

The engine viewport identifier.

enumvardefaultEngineTitle = "Parin"
enumvardefaultEngineWidth = 1280
enumvardefaultEngineHeight = 720
enumvardefaultEngineFpsMax = 60
enumvardefaultEngineWindowMinWidth = 320
enumvardefaultEngineWindowMinHeight = 180
enumvardefaultEngineWindowBackgroundColor = gray
enumvardefaultEngineWindowMinSize = Vec2(defaultEngineWindowMinWidth, defaultEngineWindowMinHeight)
enumvardefaultEngineDebugModeKey = Keyboard.f3
enumvardefaultEngineFlags = EngineFlag.isUsingAssetsPath | EngineFlag.isNullTextureVisible | EngineFlag.isNullFontVisible | EngineFlag.isLoggingLoadOrSaveFaults | EngineFlag.isLoggingMemoryTrackingInfo
enumvardefaultEngineValidateErrorMessage = "Resource is invalid or was never assigned."
enumvardefaultEngineLoadErrorMessage = "ERROR({}:{}): Can't load {} from \"{}\""
enumvardefaultEngineSaveErrorMessage = "ERROR({}:{}): Can't save {} to \"{}\""
enumvardefaultEngineLoadOrSaveTextCapacity = 16 * kilobyte
enumvardefaultEngineEnvArgsCapacity = (64 / defaultEngineResourceScaleDenominator)
enumvardefaultEngineEngineTasksCapacity = (64 / defaultEngineResourceScaleDenominator)
enumvardefaultEngineAssetsPathCapacity = (8 / defaultEngineResourceScaleDenominator) * kilobyte
enumvardefaultEngineScreenshotTargetPathCapacity = (2 / defaultEngineResourceScaleDenominator) * kilobyte
enumvardefaultEngineArenaCapacity = (4 / defaultEngineResourceScaleDenominator) * megabyte
enumvardefaultEngineDebugColor1 = white.alpha(120)
enumvardefaultEngineDebugColor2 = black.alpha(170)
enumvar_screenshotRequestPath = "[SCREENSHOT]"