Interaction¶
Interaction with objects is handled in the following way:
- when an object is in range, it is selected
- when an object is no longer in range, it is deselected
- when an object is selected and LMB is pressed, the object is activated
- when an object is selected and RMB is pressed, the object is activated alternatively
Every change of state emits a signal:
goat_interaction.object_selected (object_name, point)
goat_interaction.object_deselected (object_name)
goat_interaction.object_activated (object_name, point)
goat_interaction.object_activated_alternatively (object_name, point)
object_name
represents the unique name associated with an
interactive object that is currently being selected/deselected/activated
(either an item or a screen). Additionally, point
stores a global 3D
location where an interaction took place (that usually doesn’t matter
for items, but is quite important for screens).
To make things easier, currently selected objects and their corresponding points are stored globally and can be accessed like this:
goat_interaction.get_selected_object(category)
goat_interaction.get_selected_point(category)
category
represents the type of interaction object. Currently, only
two values are used: environment
and inventory
. Each category
can store only one item and one point at the same time. That means that
if a new object is selected, the previous one will be deselected first.
goat_inventory
contains methods for selecting/deselecting/activating
interactive objects, but they are used internally by GOAT and usually
don’t need to be used directly by game developers.