File: engine_handlers.rst

package info (click to toggle)
openmw 0.49.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 33,992 kB
  • sloc: cpp: 372,479; xml: 2,149; sh: 1,403; python: 797; makefile: 26
file content (160 lines) | stat: -rw-r--r-- 6,030 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
Engine handlers reference
=========================

.. include:: version.rst

Engine handler is a function defined by a script, that can be called by the engine.

**Can be defined by any script**

.. list-table::
  :widths: 20 80

  * - onInterfaceOverride(base)
    - | Called if the current script has an interface and overrides an interface
      | (``base``) of another script.

**Can be defined by any non-menu script**

.. list-table::
  :widths: 20 80

  * - onInit(initData)
    - | Called once when the script is created (not loaded). `InitData can be`
      | `assigned to a script in openmw-cs (not yet implemented).`
      | ``onInterfaceOverride`` can be called before ``onInit``.
  * - onUpdate(dt)
    - | Called every frame if the game is not paused. `dt` is
      | the simulation time from the last update in seconds.
  * - onSave() -> savedData
    - | Called when the game is saving. May be called in inactive state,
      | so it shouldn't use `openmw.nearby`.
  * - onLoad(savedData, initData)
    - | Called on loading with the data previosly returned by
      | ``onSave``. During loading the object is always inactive. ``initData`` is
      | the same as in ``onInit``.
      | Note that ``onLoad`` means loading a script rather than loading a game.
      | If a script did not exist when a game was saved onLoad will not be
      | called, but ``onInit`` will.

**Only for global scripts**

.. list-table::
  :widths: 20 80

  * - onNewGame()
    - New game is started.
  * - onPlayerAdded(player)
    - | Player added to the game world. The argument is a `Game object`. 
      | Note that this is triggered at the start of a game, and when a game is loaded.
  * - onObjectActive(object)
    - Object becomes active.
  * - onActorActive(actor)
    - Actor (NPC or Creature) becomes active.
  * - onItemActive(item)
    - | Item (Weapon, Potion, ...) becomes active in a cell.
      | Does not apply to items in inventories or containers.
  * - onActivate(object, actor)
    - Object is activated by an actor.
  * - onNewExterior(cell)
    - A new exterior cell not defined by a content file has been generated.

**Only for local scripts**

.. list-table::
  :widths: 20 80

  * - onActive()
    - | Called when the object becomes active
      | (either a player came to this cell again, or a save was loaded).
  * - onInactive()
    - | Object became inactive. Since it is inactive the handler
      | can not access anything nearby, but it is possible to send
      | an event to global scripts.
  * - onTeleported()
    - Object was teleported.
  * - onActivated(actor)
    - | Called on an object when an actor activates it. Note that picking
      | up an item is also an activation and works this way: (1) a copy of
      | the item is placed to the actor's inventory, (2) count of
      | the original item is set to zero, (3) and only then onActivated is
      | called on the original item, so self.count is already zero.
  * - onConsume(item)
    - | Called on an actor when they consume an item (e.g. a potion).
      | Similarly to onActivated, the item has already been removed
      | from the actor's inventory, and the count was set to zero.

**Only menu scripts and local scripts attached to a player**

.. list-table::
  :widths: 20 80

  * - onFrame(dt)
    - | Called every frame (even if the game is paused) right after
      | processing user input. Use it only for latency-critical stuff
      | and for UI that should work on pause.
      | `dt` is simulation time delta (0 when on pause).
  * - onKeyPress(key)
    - | `Key <openmw_input.html##(KeyboardEvent)>`_ is pressed.
      | Usage example:
      | ``if key.symbol == 'z' and key.withShift then ...``
  * - onKeyRelease(key)
    - | `Key <openmw_input.html##(KeyboardEvent)>`_ is released.
      | Usage example:
      | ``if key.symbol == 'z' and key.withShift then ...``
  * - onControllerButtonPress(id)
    - | A `button <openmw_input.html##(CONTROLLER_BUTTON)>`_ on a game controller is pressed.
      | Usage example:
      | ``if id == input.CONTROLLER_BUTTON.LeftStick then ...``
  * - onControllerButtonRelease(id)
    - | A `button <openmw_input.html##(CONTROLLER_BUTTON)>`_ on a game controller is released.
      | Usage example:
      | ``if id == input.CONTROLLER_BUTTON.LeftStick then ...``
  * - onInputAction(id)
    - | (DEPRECATED, use `registerActionHandler <openmw_input.html##(registerActionHandler)>`_)
      | `Game control <openmw_input.html##(ACTION)>`_ is pressed.
      | Usage example:
      | ``if id == input.ACTION.ToggleWeapon then ...``
  * - onTouchPress(touchEvent)
    - | A finger pressed on a touch device.
      | `Touch event <openmw_input.html##(TouchEvent)>`_.
  * - onTouchRelease(touchEvent)
    - | A finger released a touch device.
      | `Touch event <openmw_input.html##(TouchEvent)>`_.
  * - onTouchMove(touchEvent)
    - | A finger moved on a touch device.
      | `Touch event <openmw_input.html##(TouchEvent)>`_.
  * - onMouseButtonPress(button)
    - | A mouse button was pressed
      | Button id
  * - onMouseButtonRelease(button)
    - | A mouse button was released
      | Button id
  * - onMouseWheel(vertical, horizontal)
    - | Mouse wheel was scrolled
      | vertical and horizontal mouse wheel change
  * - | onConsoleCommand(
      |     mode, command, selectedObject)
    - | User entered `command` in in-game console. Called if either
      | `mode` is not default or `command` starts with prefix `lua`.

**Only for local scripts attached to a player**

.. list-table::
  :widths: 20 80

  * - onKeyPress(key)
    - | `Key <openmw_input.html##(KeyboardEvent)>`_ is pressed.
      | Usage example:
      | ``if key.symbol == 'z' and key.withShift then ...``
  * - onQuestUpdate(questId, stage)
    - | Called when a quest is updated.

**Only for menu scripts**

.. list-table::
  :widths: 20 80

  * - onStateChanged()
    - | Called whenever the current game changes
      | (i. e. the result of `getState <openmw_menu.html##(menu).getState>`_ changes)