Current section

Files

Jump to
exray lib Core Input.Mouse.ex
Raw

lib/Core/Input.Mouse.ex

defmodule Exray.Core.Input.Mouse do
@moduledoc """
Input control for your mouse
"""
@loader Exray.Core.Input.Mouse.Loader
alias Exray.Structs.Vector2
@doc """
Check if a mouse button has been pressed once
"""
@spec is_mouse_button_pressed(button :: integer) :: {:ok, is_pressed :: boolean}
defdelegate is_mouse_button_pressed(button), to: @loader
@doc """
Check if a mouse button is being pressed
"""
@spec is_mouse_button_down(button :: integer) :: {:ok, is_down :: boolean}
defdelegate is_mouse_button_down(button), to: @loader
@doc """
Check if a mouse button has been released once
"""
@spec is_mouse_button_released(button :: integer) :: {:ok, is_released :: boolean}
defdelegate is_mouse_button_released(button), to: @loader
@doc """
Check if a mouse button is NOT being pressed
"""
@spec is_mouse_button_up(button :: integer) :: {:ok, is_up :: boolean}
defdelegate is_mouse_button_up(button), to: @loader
@doc """
Get mouse position X
"""
@spec get_mouse_x() :: {:ok, mouse_x :: integer}
defdelegate get_mouse_x(), to: @loader
@doc """
Get mouse position Y
"""
@spec get_mouse_y() :: {:ok, mouse_y :: integer}
defdelegate get_mouse_y(), to: @loader
@doc """
Get mouse position XY
"""
@spec get_mouse_position() :: {:ok, mouse_position :: Vector2}
defdelegate get_mouse_position(), to: @loader
@doc """
Get mouse delta between frames
"""
@spec get_mouse_delta() :: {:ok, mouse_delta :: Vector2}
defdelegate get_mouse_delta(), to: @loader
@doc """
Set mouse position XY
"""
@spec set_mouse_position(x :: integer, y :: integer) :: {:ok}
defdelegate set_mouse_position(x, y), to: @loader
@doc """
Set mouse offset
"""
@spec set_mouse_offset(offset_x :: integer, offset_y :: integer) :: {:ok}
defdelegate set_mouse_offset(offset_x, offset_y), to: @loader
@doc """
Set mouse scaling
"""
@spec set_mouse_scale(scale_x :: float, scale_y :: float) :: {:ok}
defdelegate set_mouse_scale(scale_x, scale_y), to: @loader
@doc """
Get mouse wheel movement for X or Y, whichever is larger
"""
@spec get_mouse_wheel_move() :: {:ok, wheel_movement :: float}
defdelegate get_mouse_wheel_move(), to: @loader
@doc """
Get mouse wheel movement for both X and Y
"""
@spec get_mouse_wheel_move_v() :: {:ok, wheel_movement :: Vector2}
defdelegate get_mouse_wheel_move_v(), to: @loader
@doc """
Set mouse cursor
"""
@spec set_mouse_cursor(cursor :: integer) :: {:ok}
defdelegate set_mouse_cursor(cursor), to: @loader
end