diff --git a/panda/src/putil/buttonHandle.cxx b/panda/src/putil/buttonHandle.cxx index e37f0f738d..49d17eeea3 100644 --- a/panda/src/putil/buttonHandle.cxx +++ b/panda/src/putil/buttonHandle.cxx @@ -20,6 +20,22 @@ ButtonHandle ButtonHandle::_none; TypeHandle ButtonHandle::_type_handle; +//////////////////////////////////////////////////////////////////// +// Function: ButtonHandle::Constructor +// Access: Published +// Description: Constructs a ButtonHandle with the corresponding +// name, which is looked up in the ButtonRegistry. +// This exists for the purpose of being able to +// automatically coerce a string into a ButtonHandle; +// for most purposes, you should use either the static +// KeyboardButton/MouseButton getters or +// ButtonRegistry::register_button(). +//////////////////////////////////////////////////////////////////// +ButtonHandle:: +ButtonHandle(const string &name) { + _index = ButtonRegistry::ptr()->get_button(name)._index; +} + //////////////////////////////////////////////////////////////////// // Function: ButtonHandle::get_name // Access: Public diff --git a/panda/src/putil/buttonHandle.h b/panda/src/putil/buttonHandle.h index cd946bdfc3..909458c32c 100644 --- a/panda/src/putil/buttonHandle.h +++ b/panda/src/putil/buttonHandle.h @@ -29,6 +29,7 @@ class EXPCL_PANDA_PUTIL ButtonHandle { PUBLISHED: INLINE ButtonHandle(); INLINE ButtonHandle(int index); + ButtonHandle(const string &name); public: INLINE ButtonHandle(const ButtonHandle ©);