CrystalSpace

Public API Reference

csInputBinder Class Reference

Use this class to bind input events (keypress, button press, mouse move, etc. More...

#include <csutil/binder.h>

Inheritance diagram for csInputBinder:

Inheritance graph
[legend]
List of all members.

Public Member Functions

virtual int Axis (unsigned cmd)
 Returns the position of the given axis command.
virtual void BindAxis (csInputDefinition const &def, unsigned int cmd, int sensitivity=1)
 Bind an axis motion event to an axis command.
virtual void BindButton (csInputDefinition const &def, unsigned int cmd, bool toggle=false)
 Bind a button event to a button command.
virtual bool Button (unsigned cmd)
 Returns the status of the given button command.
 csInputBinder (iObjectRegistry *, iBase *parent=0, int btnSize=127, int axisSize=13)
 Create a new binder with an initial bindings hash size.
virtual void LoadConfig (iConfigFile *, const char *subsection)
 Load bindings from a configuration file.
virtual iEventHandlerQueryHandler ()
 Get a pointer to the embedded iEventHander.
virtual void SaveConfig (iConfigFile *, const char *subsection)
 Save bindings to a configuration file.
virtual void UnbindAll ()
 Remove all bindings.
virtual bool UnbindAxis (unsigned cmd)
 Remove a binding.
virtual bool UnbindButton (unsigned cmd)
 Remove a binding.

Protected Member Functions

bool HandleEvent (iEvent &)
 This is the basic event handling function.

Detailed Description

Use this class to bind input events (keypress, button press, mouse move, etc.

) to commands which are represented by an unsigned integer. It is up to the application to specify the meaning of a command value.

Example:

 enum MyCommand = { Walk, Shoot, Jump, LookX, LookY };
 ...
 csRef<iInputBinder> binder = ...;
 binder->BindButton (csInputDefinition ("ctrl"), Shoot);
 binder->BindAxis (csInputDefinition ("mousex"), LookX);
 ...
 if (binder->Button (Shoot))
   ...
 else
 {
   DoSomething (binder->Axis (LookX), binder->Axis (LookY));
 }

Definition at line 57 of file binder.h.


Constructor & Destructor Documentation

csInputBinder::csInputBinder ( iObjectRegistry ,
iBase parent = 0,
int  btnSize = 127,
int  axisSize = 13 
)

Create a new binder with an initial bindings hash size.

For optimum hash storage, size should be a prime number.


Member Function Documentation

virtual int csInputBinder::Axis ( unsigned  cmd  )  [virtual]

Returns the position of the given axis command.

Implements iInputBinder.

virtual void csInputBinder::BindAxis ( csInputDefinition const &  def,
unsigned int  cmd,
int  sensitivity = 1 
) [virtual]

Bind an axis motion event to an axis command.

Parameters:
def Describes the physical axis to bind to.
cmd The ID of the command to bind.
sensitivity A multiplier for the axis command.
Remarks:
Note that cmd is used as an array index so the numbers you use should be consecutive, starting with 0.

Implements iInputBinder.

virtual void csInputBinder::BindButton ( csInputDefinition const &  def,
unsigned int  cmd,
bool  toggle = false 
) [virtual]

Bind a button event to a button command.

Parameters:
def Describes the physical button to bind to.
cmd The ID of the command to bind.
toggle If true, button status is only toggled on keydown events.
Remarks:
Note that cmd is used as an array index so the numbers you use should be consecutive, starting with 0. Also note that there must be a 1:1 mapping between buttons and commands, that is, a button cannot issue multiple commands, and the same command cannot be bound to multiple buttons. If you require this, you must handle it in your application. Binding a button (or command) will remove any previous bindings involving the button or command.

Implements iInputBinder.

virtual bool csInputBinder::Button ( unsigned  cmd  )  [virtual]

Returns the status of the given button command.

Implements iInputBinder.

bool csInputBinder::HandleEvent ( iEvent  )  [protected, virtual]

This is the basic event handling function.

To receive events, a component must implement iEventHandler and register with an event queue using iEventQueue::RegisterListener() and iEventQueue::Subscribe(). The event handler should return true if the event was handled. Returning true prevents the event from being passed along to other event handlers (unless the event's Broadcast flag has been set, in which case it is sent to all subscribers regardless of the return value). If the event was not handled, then false should be returned, in which case other event handlers are given a shot at the event. Do not return true unless you really handled the event and want event dispatch to stop at your handler.

Implements iEventHandler.

virtual void csInputBinder::LoadConfig ( iConfigFile ,
const char *  subsection 
) [virtual]

Load bindings from a configuration file.

Implements iInputBinder.

virtual iEventHandler* csInputBinder::QueryHandler (  )  [inline, virtual]

Get a pointer to the embedded iEventHander.

Remarks:
This class has to be registered with the event queue: EventQueue->RegisterListener(InputBinder->QueryHandler (), CSMASK_Input); to get working Axis() and Button() methods.

Implements iInputBinder.

Definition at line 100 of file binder.h.

virtual void csInputBinder::SaveConfig ( iConfigFile ,
const char *  subsection 
) [virtual]

Save bindings to a configuration file.

Implements iInputBinder.

virtual void csInputBinder::UnbindAll (  )  [virtual]

Remove all bindings.

Implements iInputBinder.

virtual bool csInputBinder::UnbindAxis ( unsigned  cmd  )  [virtual]

Remove a binding.

Implements iInputBinder.

virtual bool csInputBinder::UnbindButton ( unsigned  cmd  )  [virtual]

Remove a binding.

Implements iInputBinder.


The documentation for this class was generated from the following file:
Generated for Crystal Space by doxygen 1.4.7