ACSUtils Wiki

An ACS library for ZDoom-based ports

User Tools

Site Tools


functions:cursor

This is an old revision of the document!


Mouse Cursor API

This is a simple library that implements the mouse cursor in ACS.

This library takes into account the player's mouse sensitivity and Y invert settings to make the cursor work the same regardless of the settings.

You should use these functions only in clientside scripts. Serverside usage is not supported.

Serverside cursors are very laggy in mods that use them and can't take the player's settings into account, so we chose to not support serverside cursors.

Example

while (true)
{
    // Get mouse input.
    UpdateCursor();
        
    // Draw the cursor at CursorX(), CursorY().
    HudSetPoint(CursorX(), CursorY());
    HudDrawText(1, "*");
    
    // Wait for next frame.
    Delay(1);
}       

Coordinate system

The cursor's coordinates system matches that of HudMessages with SetHudSize. The default coordinate system is 640×480. You can override it using 'SetCursorArea(width, height)'.

All coordinates are fixed-point. When drawing the cursor using HudMessage, don't forget to round the coordinates, or else you'll get very jerky motion.

Functions

UpdateCursor

void UpdateCursor()

Updates the cursor position using the input from ConsolePlayer (current computer).

CursorX

fixed CursorX()

Returns the cursor's X position.

CursorY

fixed CursorY()

Returns the cursor's Y position.

CenterCursor

void CenterCursor()

Centers the cursor on the screen.

SetCursorPosition

void SetCursorPosition(fixed x, fixed y)

Sets the cursor's position.

SetCursorSpeed

void SetCursorSpeed(fixed speed)

Sets the cursor's current speed multiplier.

Default is 1.0.

SetCursorSpeedX

void SetCursorSpeedX(fixed speed)

Sets the cursor's current X speed multiplier.

Default is 1.0.

SetCursorSpeedY

void SetCursorSpeedY(fixed speed)

Sets the cursor's current Y speed multiplier.

Default is 1.0.

EnableCursorWrap

void EnableCursorWrap(bool enable)

If enabled, the cursor when moved outside the screen, will teleport to the opposite edge of the screen.

EnableCursorWrapX

void EnableCursorWrap(bool enable)

Enables/disables cursor wrapping on X axis only.

EnableCursorWrapY

void EnableCursorWrap(bool enable)

Enables/disables cursor wrapping on Y axis only.

SetCursorArea

void SetCursorArea(fixed width, fixed height)

Sets the coordinate system for the cursor. You can use any size from 1.0 to several thousands for any axis. When SetCursorArea is called, the cursor is moved so that its relative position stays the same.

Default is 640×480 (width = 640.0, height = 480.0).

This function does not change the cursor's perceived speed. Use SetCursorSpeed() to change the cursor's speed.

Example

SetCursorArea(1.0, 1.0);

Results in the following cursor coordinate system:

CursorDeltaX

fixed CursorDeltaX()

Returns the last change in cursor's X position.

CursorDeltaY

fixed CursorDeltaY()

Returns the last change in cursor's Y position.

CursorMotionX

fixed CursorMotionX()

Returns the attempted X-axis cursor motion. Equals to delta unless the cursor is blocked by the edge of the screen.

CursorMotionY

fixed CursorMotionY()

Returns the attempted Y-axis cursor motion. Equals to delta unless the cursor is blocked by the edge of the screen.

functions/cursor.1490100939.txt.gz ยท Last modified: 2017/03/21 12:55 by korshun