vrecko
virtual reality framework
|
#include <ControllableAbility.h>
Classes | |
class | MessageCAINFO |
Public Member Functions | |
ControllableAbility (const char *abilityName) | |
virtual | ~ControllableAbility () |
virtual bool | initialize (XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *parameters=NULL) |
virtual void | update () |
virtual bool | isActive () |
It shouldn't be necessary to override this function. More... | |
Public Member Functions inherited from vrecko::Ability | |
virtual | ~Ability () |
copy constructor More... | |
const std::string & | getName () const |
Returns the ability name. More... | |
void | setPluginName (const char *pName) |
Sets the plugin name. More... | |
const std::string & | getPluginName (void) const |
Returns the plugin name. More... | |
const std::string & | getID (void) const |
Returns ability the identification string. More... | |
void | setID (const char *pID) |
(Internal usage, most people should not need to use it.) Sets the ability ID. More... | |
virtual void | clean (void) |
void | setOwner (BaseClass *owner) |
(Internal usage, most people should not need to use it.) Sets ability owner. *l This method is called automatically in World::createAbility(), so one would (almost?) never want to use it directly. More... | |
BaseClass * | getOwner (void) |
Returns the ability owner. More... | |
virtual ParameterVector * | getParameterVector (void) |
Return vector of the parameter description. More... | |
bool | isUpdated (void) |
Set update flag. More... | |
virtual const std::string & | getSenderString (void) |
Returns the identification string of sender. More... | |
Public Member Functions inherited from vrecko::BaseClass | |
BaseClass (const char *startingSenderString) | |
The main constructor. More... | |
BaseClass (BaseClass &bc) | |
Copy constructor. Probably not really used. More... | |
virtual | ~BaseClass () |
Destructor. More... | |
virtual bool | initializeFromString (const char *xmlString) |
Helper method that allows to initialize ability from a XML-formatted string. More... | |
virtual XERCES_CPP_NAMESPACE_QUALIFIER DOMNode * | saveXMLParameters (XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument *) |
Save current setting into a XML node. More... | |
bool | inputPresent (const std::string &name) |
Returns true if input pin (not request inputpin ) with given name is present. More... | |
bool | outputPresent (const std::string &name) |
Returns true if output pin (not request output pin) with given name is present. More... | |
void | addInputPin (InputPinBase *pin) |
Adds an input pin. More... | |
void | removeInputPin (InputPinBase *pin) |
Removes an input pin. More... | |
void | addOutputPin (OutputPinBase *pin) |
Adds an output pin. More... | |
void | removeOutputPin (OutputPinBase *pin) |
Removes and output pin. More... | |
void | addRequestInputPin (RequestInputPinBase *pin) |
Adds a request input pin. More... | |
void | removeRequestInputPin (RequestInputPinBase *pin) |
Removes a request input pin. More... | |
void | addRequestOutputPin (RequestOutputPinBase *pin) |
Adds a request output pin. More... | |
void | removeRequestOutputPin (RequestOutputPinBase *pin) |
Removes a request output pin. More... | |
bool | addNotification (BaseClass *receiver, unsigned long notificationTypes) |
Registers an observer that will be notified if a specific change occurs. More... | |
bool | removeNotification (BaseClass *receiver, unsigned long notificationTypes=NOTIFICATION_ALL) |
Unregisters a previously registered observer. More... | |
virtual void | processEvent (const std::string &input_name, VreckoMessage *pMessage) |
Internal method for processing the events. More... | |
virtual VreckoMessage * | processRequest (const std::string &request_input_name, VreckoMessage *pMessage) |
Internal method for processing the requests. More... | |
void | reportError (const std::string &error) |
Print error message. More... | |
void | setPriority (long int pr) |
Sets the priority. (Possible problems - read the full description for more info) More... | |
long int | getPriority (void) const |
Returns current object priority. More... | |
void | setAttribute (const std::string &attr_name, int attr_value) |
Sets an attribute value. More... | |
int | getAttribute (const std::string &attr_name) |
Returns attribute value. More... | |
int | getAttribute (const char *attr_name) |
Returns attribute value. More... | |
void | deleteAttribute (const std::string &attr_name) |
Delete an attribute. More... | |
void | setSceneFile (const std::string &sceneFileName) |
Set the name of the file this component was in (and possibly will be saved to). More... | |
const std::string & | getSceneFile () const |
Get the name of the file this component was in. More... | |
virtual bool | loadXMLParameters (const char *xmlString) |
OBSOLETE METHOD, kept for backwards compatibility. More... | |
InputPinBase * | getInputPin (const char *strName) |
Returns pointer to an input pin with specified name. More... | |
OutputPinBase * | getOutputPin (const char *strName) |
Returns pointer to an output pin with specified name. More... | |
RequestInputPinBase * | getRequestInputPin (const char *strName) |
Returns pointer to an request input pin with specified name. More... | |
RequestOutputPinBase * | getRequestOutputPin (const char *strName) |
Returns pointer to an input pin with specified name. More... | |
Protected Member Functions | |
virtual void | createInterface () |
virtual void | destroyInterface () |
virtual void | processButtonPress (CABUTTONEVENT *eventData) |
virtual void | processButtonRelease (CABUTTONEVENT *eventData) |
virtual int | processNotification (BaseClass *sender, unsigned long notificationType, void *notificationData) |
virtual bool | activate () |
virtual void | deactivate () |
virtual CAINFO * | createInfo () |
virtual void | fillDefaultInfo ()=0 |
bool | requestPointerLoc (bool bCancelIfNotActive=true) |
bool | requestPointerLocRaw (bool bCancelIfNotActive=true) |
bool | requestSelectionID (bool bCancelIfNotActive=true) |
bool | requestSelectionPath (bool bCancelIfNotActive=true) |
bool | isMenuCreated () |
bool | isMenuVisible () |
virtual bool | createMenu (const char *menuString, bool bForceCreate=true) |
virtual void | destroyMenu () |
virtual bool | showMenu () |
virtual bool | hideMenu () |
virtual void | processMenuButtonPress (CABUTTONEVENT *eventData) |
virtual void | processMenuButtonRelease (CABUTTONEVENT *eventData) |
virtual void | menuItemClicked (const char *itemID) |
virtual void | menuSliderChanged (const char *sliderID, float sliderPos) |
DECLARE_INPUT (ButtonStateChange, MessageCAButtonEvent) | |
DECLARE_INPUT (Menu_Clicked, MessageString) | |
DECLARE_REQUEST_INPUT (ActivePointerID, MessageInt, MessageInt) | |
DECLARE_REQUEST_INPUT (GetInfo, MessageVoid, MessageCAINFO) | |
DECLARE_REQUEST_OUTPUT (PointerPos, MessageInt, MessageVec3) | |
DECLARE_REQUEST_OUTPUT (PointerRot, MessageInt, MessageQuat) | |
DECLARE_REQUEST_OUTPUT (PointerPosRaw, MessageInt, MessageVec3) | |
DECLARE_REQUEST_OUTPUT (PointerRotRaw, MessageInt, MessageQuat) | |
DECLARE_REQUEST_OUTPUT (SelectionID, MessageInt, MessageObjectID) | |
DECLARE_REQUEST_OUTPUT (SelectionPath, MessageInt, MessageNodeList) | |
Protected Member Functions inherited from vrecko::Ability | |
Ability (const char *theAbilityName) | |
Protected Member Functions inherited from vrecko::BaseClass | |
bool | sendNotifications (unsigned long notificationType, void *notificationData) |
IOPinBase * | findPinInList (const char *strName, PinList *pinList) |
Internal method to find a given pin in a given list. More... | |
Protected Attributes | |
EnvironmentObject * | owner |
The owner object. More... | |
int | activePointerID |
Active pointer ID or 0 if not active. More... | |
int | lastEventButtonID |
ID of a button that was received in the last button press/release event. More... | |
osg::Vec3 | actPointerPos |
osg::Vec3 | actPointerPosRaw |
osg::Quat | actPointerRot |
osg::Quat | actPointerRotRaw |
unsigned long | actSelectedObjectID |
std::vector< osg::Node * > * | actSelectedPath |
int | actPosInPath |
CAINFO | defaultInfo |
Ability * | menu |
bool | bMenuVisible |
Protected Attributes inherited from vrecko::Ability | |
BaseClass * | pOwner |
Pointer to the owner of this ability. (Almost?) always an EnvironmentObject class. More... | |
std::vector< std::string > | parameterString |
bool | updated |
Update flag. It is used for save. More... | |
Protected Attributes inherited from vrecko::BaseClass | |
AttributeMap | attribute |
MTReadWriteLock | attributeLock |
std::string | senderString |
MTLock | notificationsLock |
std::vector < NOTIFICATION_DESCRIPTION > | notifications |
long int | priority |
const std::string * | sceneFile |
PinList | inputPinsList |
PinList | outputPinsList |
PinList | requestInputPinsList |
PinList | requestOutputPinsList |
Additional Inherited Members | |
Public Types inherited from vrecko::Ability | |
typedef std::vector < ParameterStruct > | ParameterVector |
Vector of the description of parameters. More... | |
Protected Types inherited from vrecko::BaseClass | |
typedef std::map< std::string, int > | AttributeMap |
Attributes. More... | |
typedef std::vector < osg::ref_ptr< IOPinBase > > | PinList |
EDITORCONTROLLER_IMP_EXP vrecko::ControllableAbility::ControllableAbility | ( | const char * | abilityName | ) |
|
virtual |
|
inlineprotectedvirtual |
Called when the ability is about to be activated. Returns true if the ability is activated or false otherwise (so the activation will be cancelled). CAN/SHOULD be overriden to activate the ability properly, but should call the ancestor method and return "false" if the ancestor returned false too.
Reimplemented in APCameraPath::Camera, AP_CableEditor::CableEditor, APLightsEditor::Editor, APRoomEdit::RoomEditor, APConnectEditor::ConnectEditor, APEditorController::AbilityMapper, APCameraMovement::CameraMovementEditor, APEditorQAbilities::AbilityEditor, APConstrainedMovement::ConstrainedObjectMovement, APEditorQAbilities::ObjectMovement, APConnectEditor::Optimalizer, APFFDEditor::EditorLogic, APConnectEditor::Cut, APConnectEditor::Rotation, APEditorQAbilities::AvatarMovement, APEditorQAbilities::SimpleObjectMovement, APConnectEditor::Scale, APEditorQAbilities::AnimatorEditor, APEditorQAbilities::UseTrigger, APConnectEditor::PolygonState, APEditorQAbilities::ObjectAdd, APEditorQAbilities::ObjectDelete, and APEditorQAbilities::SceneSave.
|
protectedvirtual |
This method creates a new instance of the CAINFO structure and copies data from the [defaltInfo] structure. Additionally, it may change some of the parameters of the new structure (especially [dwActiveFlags]). CAN be overridden although it is unnecessary in most cases. The overridden method should look like this: You have complete control over the structure, but some field have been already pre-filled: Especially size and some the [dwActiveFlags]. The [dwActiveFlags] has been changed according to the current state of the ability (is Menu displayed -> prefer not to show the selections etc.) You can still change any of the attributes. CAINFO* info = ControllableAbility::createInfo(); if (!info) return NULL;
Now adjust the members of the structure. Note: If adjusting for example info->dwActiveFlags for selection visibility, ... // you have to use the mask. For example, to set the visibility to _ACTPTR_FORCESHOW: info->dwActiveFlags = CAINFO_AFLAGS_SELSHOW_ACTPTR_FORCESHOW | (info->dwActiveFlags & ~CAINFO_AFLAGS_SELSHOW_ACTPTR__MASK);
return info;
Reimplemented in APConstrainedMovement::ConstrainedObjectMovement, and APEditorQAbilities::ObjectMovement.
|
protectedvirtual |
Method for creating the input/outputs/requests. If overridden, it has to call the ancestor method. This is the method to override, if you need to add any other inputs/outputs etc. Then you also have to override the destroyInterface() to destroy these connections. Please see notes about destroyInterface() to use it properly (!)
Reimplemented in APEditorController::AbilityMapper.
|
protectedvirtual |
If [bForceCreate] is "false", then the menu is NOT created if it was already created before.
|
protectedvirtual |
Called when the ability is about to be deactivated. CAN be overridden to unlock used objects etc., but should call the ancestor method. You may wan to call isActive() in the overriden method to check whether the ability is really being deactivated.
Reimplemented in APCameraPath::Camera, AP_CableEditor::CableEditor, APLightsEditor::Editor, APRoomEdit::RoomEditor, APConnectEditor::ConnectEditor, APCameraMovement::CameraMovementEditor, APEditorQAbilities::AbilityEditor, APConstrainedMovement::ConstrainedObjectMovement, APEditorQAbilities::ObjectMovement, APConnectEditor::Optimalizer, APConnectEditor::Cut, APConnectEditor::Rotation, APEditorQAbilities::AvatarMovement, APEditorQAbilities::SimpleObjectMovement, APConnectEditor::Scale, and APEditorQAbilities::UseTrigger.
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protectedvirtual |
Destroys the inputs/outputs/requests. If you override it, you have to:
|
protectedvirtual |
|
protectedpure virtual |
MUST be overridden. The overridden method have to fill in the [defaultInfo]. The structure is already filled by zeroes and the size is set correctly, so you need to only change what is necessary. The [defaultInfo] is used as a base information that will be used in createInfo() method. The createInfo() may adjust some of the parameters and you can adjust it even further by overriding createInfo().
Implemented in APCameraPath::Camera, AP_CableEditor::CableEditor, APLightsEditor::Editor, APRoomEdit::RoomEditor, APConnectEditor::ConnectEditor, APEditorController::AbilityMapper, APCameraMovement::CameraMovementEditor, APEditorQAbilities::AbilityEditor, APConstrainedMovement::ConstrainedObjectMovement, APEditorQAbilities::ObjectMovement, APConnectEditor::Optimalizer, APFFDEditor::EditorLogic, APConnectEditor::Cut, APConnectEditor::Rotation, APEditorQAbilities::AvatarMovement, APEditorQAbilities::SimpleObjectMovement, APConnectEditor::Scale, APEditorQAbilities::AnimatorEditor, APEditorQAbilities::UseTrigger, APConnectEditor::PolygonState, APEditorQAbilities::ObjectAdd, APEditorQAbilities::ObjectDelete, and APEditorQAbilities::SceneSave.
|
protectedvirtual |
|
virtual |
Called as the first initialization method COULD be overridden, but it HAS TO CALL the method from the ancestor class. But BETTER SOLUTION is to override the createInterface() and destroyInterface() functions instead.
Reimplemented from vrecko::BaseClass.
Reimplemented in AP_CableEditor::CableEditor, APLightsEditor::Editor, APCameraPath::Camera, APRoomEdit::RoomEditor, APEditorQAbilities::ObjectMovement, and APEditorQAbilities::AbilityEditor.
|
virtual |
It shouldn't be necessary to override this function.
|
inlineprotected |
|
protected |
This method may issue a request to detect the current state of the menu.
|
inlineprotectedvirtual |
This method should be overridden for the menu to work. The [itemID] could be NULL in case the user hasn't clicked on any item. (It is expected that the menu will disappear.) If [itemID] is a valid pointer, it will contain the name (not caption) of the item clicked.
Reimplemented in APCameraPath::Camera, AP_CableEditor::CableEditor, APLightsEditor::Editor, APCameraMovement::CameraMovementEditor, APEditorController::AbilityMapper, APEditorQAbilities::AbilityEditor, APConnectEditor::Cut, APFFDEditor::EditorLogic, APEditorQAbilities::AnimatorEditor, APConnectEditor::PolygonState, APEditorQAbilities::ObjectAdd, APEditorQAbilities::ObjectDelete, and APEditorQAbilities::SceneSave.
|
inlineprotectedvirtual |
You should override this method if there is any slider in your menu.
Reimplemented in AP_CableEditor::CableEditor, APLightsEditor::Editor, and APFFDEditor::EditorLogic.
|
inlineprotectedvirtual |
This function must be able to handle also cases when [eventData] == NULL (which means the "standard button" has been pressed). SHOULD be overridden if any button functionality is required. If the menu is visible, this method won't be executed.
Reimplemented in APRoomEdit::RoomEditor, and APConstrainedMovement::ConstrainedObjectMovement.
|
inlineprotectedvirtual |
This function must be able to handle also cases when [eventData] == NULL (which means the "standard button" has been released). SHOULD be overridden if any button functionality is required. If the menu is visible, this method won't be executed.
Reimplemented in AP_CableEditor::CableEditor, APRoomEdit::RoomEditor, APConnectEditor::ConnectEditor, APEditorQAbilities::AbilityEditor, APConstrainedMovement::ConstrainedObjectMovement, and APConnectEditor::Optimalizer.
|
protectedvirtual |
Sending the button press to the menu ability. Descendants should not need to override this function.
|
protectedvirtual |
Sending the button release to the menu ability. Descendants should not need to override this function.
|
protectedvirtual |
Processes any notification. If you ever override this method, you MUST call the overridden one (this one).
Reimplemented from vrecko::BaseClass.
Reimplemented in AP_CableEditor::CableEditor.
|
protected |
Requests the "real" pointer position and orientation and stores it in [actPointerPos] and [actPointerRot] member variables. Works only when CAINFO_FLAGS_POINTERLOC_REQUESTOUPUTS is specified in CAINFO::dwFlags in GetInfo() function.
|
protected |
Requests the "raw" pointer position and orientation and stores it in [actPointerPosRaw] and [actPointerRotRaw] member variables. Works only when CAINFO_FLAGS_POINTERLOC_RAW_REQUESTOUPUTS is specified in CAINFO::dwFlags in GetInfo() function.
|
protected |
Requests the current SELECTION (ONLY) of the active pointer and stores it in [actSelectedObjectID] member variable. Returns "true" if the request finished successfully (doesn't imply that something is selected!). Works only when CAINFO_FLAGS_SELECTIONID_REQUESTOUTPUT is specified in CAINFO::dwFlags in GetInfo() function.
|
protected |
Requests the current SELECTION AND selection PATH of the active pointer and stores it in [actSelectedObjectID] + [actSelectedPath] + [actPosInPath] member variables. Returns "true" if the request finished successfully (doesn't imply that something is selected!). Works only when CAINFO_FLAGS_SELECTIONID_REQUESTOUTPUT is specified in CAINFO::dwFlags in GetInfo() function.
|
protectedvirtual |
|
inlinevirtual |
Called by the VRECKO scheduler at the specified frequency. CAN be overridden, but it HAS TO CALL the method from the ancestor class. (For future updates)
Reimplemented from vrecko::BaseClass.
Reimplemented in APLightsEditor::Editor, APCameraPath::Camera, AP_CableEditor::CableEditor, APRoomEdit::RoomEditor, APCameraMovement::CameraMovementEditor, APConstrainedMovement::ConstrainedObjectMovement, APEditorQAbilities::ObjectMovement, APConnectEditor::Cut, APEditorQAbilities::AvatarMovement, APEditorQAbilities::SimpleObjectMovement, APFFDEditor::EditorLogic, APConnectEditor::Rotation, and APConnectEditor::Scale.
|
protected |
Active pointer ID or 0 if not active.
|
protected |
"Real" pointer position (including view transformation) as received from [POINTERPOS_REQUEST_NAME] request output.
NOTE: You have to call requestPointerLoc() method to update this member variable (it is not updated automatically). Works only when CAINFO_FLAGS_POINTERLOC_REQUESTOUPUTS is specified in CAINFO::dwFlags in GetInfo() function.
|
protected |
"Raw" pointer position (not including the view transformation) as received from [POINTERPOS_RAW_REQUEST_NAME] request output.
NOTE: You have to call requestPointerLocRaw() method to update this member variable (it is not updated automatically).
Works only when CAINFO_FLAGS_POINTERLOC_RAW_REQUESTOUPUTS is specified in CAINFO::dwFlags in GetInfo() function.
|
protected |
"Real" pointer rotation (including the view transformation) as received from [POINTERROT_REQUEST_NAME] request output.
NOTE: You have to call requestPointerLoc() method to update this member variable (it is not updated automatically).
Works only when CAINFO_FLAGS_POINTERLOC_REQUESTOUPUTS is specified in CAINFO::dwFlags in GetInfo() function.
|
protected |
"Raw" pointer rotation (not including the view transformation) as received from [POINTERROT_RAW_REQUEST_NAME] request output. Works only when CAINFO_FLAGS_POINTERLOC_RAW_REQUESTOUPUTS is specified in CAINFO::dwFlags in GetInfo() function.
|
protected |
The position of the selected object in the path. Can be -1 if not applicable. The variable is also set in requestSelectionPath() method.
|
protected |
Selected object is received from [SELECTIONID_REQUEST_NAME] request output. This variable is updated every time requestSelectionID() or requestSelectionPath() methods are called. Works only when CAINFO_FLAGS_SELECTIONID_REQUESTOUTPUT is specified in CAINFO::dwFlags in GetInfo() method.
|
protected |
Path to the selected object from the root of the scene (first in the vector). This variable is updated by requestSelectionPath() method, which requires CAINFO_FLAGS_SELECTIONID_REQUESTOUTPUT to be specified in CAINFO::dwFlags in GetInfo() method.
IMPORTANT NOTE: The final Node on the path is the real section (some Geometry etc.) and it doesn't need to be the EnvironmentObject. The usual path is something like this: Root -> ... EOs/Transforms/other Nodes ... -> selected EO -> ... something else, but no other EOs
|
protected |
|
protected |
|
protected |
ID of a button that was received in the last button press/release event.
|
protected |
To get the menu selection the menuItemClicked() method should be overriden.
|
protected |
The owner object.