TransformationModifierFactory Class Reference
#include <TransformationModifierFactory.h>
Inherited by ApplyAngularVelocityModifierFactory, ApplyCursorTransformationModifierFactory, ApplyForceModifierFactory, ApplyNavigationModifierFactory, ApplyUserTransformationModifierFactory, AssociatedEntityInterrupterFactory, AvatarAnimationWriterFactory, AvatarTransformationWriterFactory, CameraTransformationWriterFactory, CheckCollisionModifierFactory, CursorTransformationWriterFactory, EntityTransformationWriterFactory, HeightMapModifierFactory, ManipulationOffsetModifierFactory, MultiPipeInterrupterFactory, PhysicsEntityTransformationWriterModifierFactory, RunAtPhysicsServerModifierFactory, TargetPipeTransformationWriterFactory, TrackingDataWriterFactory, TrackingOffsetModifierFactory, TransformationDistributionModifierFactory, TransformationLoggerModifierFactory, and UserTransformationWriterFactory.

Classes | |
| struct | GROUPMODIFIER |
Public Member Functions | |
| TransformationModifierFactory () | |
| virtual | ~TransformationModifierFactory () |
| virtual TransformationModifier * | create (ArgumentVector *args, PipeSelector *sel) |
| std::string | getClassName () |
| virtual bool | releaseModifier (TransformationModifier *modifier) |
Protected Member Functions | |
| virtual TransformationModifier * | createInternal (ArgumentVector *args)=0 |
| virtual bool | needInstanceForEachPipe () |
| virtual bool | needInstanceForEachPipeConfiguration () |
| create a modifier instance for each group of pipes with equal configuration | |
| virtual bool | needSingleton () |
| create one global modifier instance | |
Protected Attributes | |
| std::string | className |
| TransformationModifier * | singleton |
| std::vector< GROUPMODIFIER > | groupModifiersList |
Detailed Description
The Factory-class for TransformationModifier.For each subclass of TransformationModifier, there has to be a corresponding TransformationModifierFactory class. If you want to create your own modifier you must therefore provide a factory class inheriting from TransformationModifierFactory.
When writing your own modifier class, the corresponding factory class needs to:
- inherit from TransformationModifierFactory
- set the className member accordingly in the constructor
- override one of needInstanceForEachPipe(), needInstanceForEachPipeConfiguration(), needSingleton() (see remarks)
- override createInternal()
A factor has to be registered before loading the config file (i.e. before TransformationManager::loadModifier() is invoked).
- See also:
- TransformationModifier
Constructor & Destructor Documentation
| TransformationModifierFactory::TransformationModifierFactory | ( | ) |
Constructor. When inheriting, don't forget to set the className here!
| TransformationModifierFactory::~TransformationModifierFactory | ( | ) | [virtual] |
Delete the factory itself, and all created TransformationModifer.
Member Function Documentation
| TransformationModifier * TransformationModifierFactory::create | ( | ArgumentVector * | args, | |
| PipeSelector * | sel | |||
| ) | [virtual] |
Create (or reuse) a TransformationModifier matching the PipeSelector. If an existing modifier is reused, the ArgumentVector will be ignored.
- Parameters:
-
args contains parameters read from the Configuration file. sel the configuration of the TransformationPipe, in which the modifier will be executed.
| virtual TransformationModifier* TransformationModifierFactory::createInternal | ( | ArgumentVector * | args | ) | [protected, pure virtual] |
Create a TransformationModifier instance.
- Parameters:
-
args can be used to pass configuration-data for the modifier.
<modifier type="ConfiguredTransformationModifier">
<arguments>
<arg key="intArg" type="int" value="1"/>
<arg key="floatArg" type="float" value="0.125"/>
<arg key="stringArg" type="string" value="a string"/>
</arguments>
</modifier>
<modifier type="UnconfiguredTransformationModifier"/>
Implemented in ApplyAngularVelocityModifierFactory, ApplyForceModifierFactory, PhysicsEntityTransformationWriterModifierFactory, ManipulationOffsetModifierFactory, ApplyCursorTransformationModifierFactory, ApplyNavigationModifierFactory, ApplyUserTransformationModifierFactory, AssociatedEntityInterrupterFactory, AvatarTransformationWriterFactory, CameraTransformationWriterFactory, CursorTransformationWriterFactory, EntityTransformationWriterFactory, MultiPipeInterrupterFactory, TargetPipeTransformationWriterFactory, TrackingDataWriterFactory, TrackingOffsetModifierFactory, TransformationDistributionModifierFactory, TransformationLoggerModifierFactory, UserTransformationWriterFactory, AvatarAnimationWriterFactory, CheckCollisionModifierFactory, and HeightMapModifierFactory.
| std::string TransformationModifierFactory::getClassName | ( | ) |
The class name of the TransformationModifier. NOT the class name of the factory! This is used by the TransformationModifier to know its own name.
| bool TransformationModifierFactory::needInstanceForEachPipe | ( | ) | [protected, virtual] |
the following three methods specify when a separate instance the modifier has to be created by default each method returns false at least one of the methods has to be overriden and has to return true
- Todo:
- make these three functions an enumeration: create a modifier instance for each pipe
Reimplemented in ApplyCursorTransformationModifierFactory, ApplyUserTransformationModifierFactory, AvatarTransformationWriterFactory, CameraTransformationWriterFactory, CursorTransformationWriterFactory, MultiPipeInterrupterFactory, TargetPipeTransformationWriterFactory, TrackingOffsetModifierFactory, TransformationLoggerModifierFactory, UserTransformationWriterFactory, AvatarAnimationWriterFactory, CheckCollisionModifierFactory, and HeightMapModifierFactory.
| bool TransformationModifierFactory::needInstanceForEachPipeConfiguration | ( | ) | [protected, virtual] |
create a modifier instance for each group of pipes with equal configuration
Reimplemented in TransformationDistributionModifierFactory.
| bool TransformationModifierFactory::needSingleton | ( | ) | [protected, virtual] |
create one global modifier instance
Reimplemented in ApplyAngularVelocityModifierFactory, ApplyForceModifierFactory, PhysicsEntityTransformationWriterModifierFactory, ManipulationOffsetModifierFactory, ApplyNavigationModifierFactory, AssociatedEntityInterrupterFactory, EntityTransformationWriterFactory, and TrackingDataWriterFactory.
| bool TransformationModifierFactory::releaseModifier | ( | TransformationModifier * | modifier | ) | [virtual] |
Mark the given TransformationModifier as no longer needed. Depending on the (re)usage pattern, the modifier may or may not be deleted when calling this function.
- Note:
- Do NOT delete a modifier yourself. This will wreak havoc, if it is a shared instance! (If it is not shared, you gain nothing by deleting it yourself and not using this method.)
- See also:
- ~TransformationModifierFactory
Member Data Documentation
std::string TransformationModifierFactory::className [protected] |
std::vector<GROUPMODIFIER> TransformationModifierFactory::groupModifiersList [protected] |
The documentation for this class was generated from the following files:
- src/inVRs/SystemCore/TransformationManager/TransformationModifierFactory.h
- src/inVRs/SystemCore/TransformationManager/TransformationModifierFactory.cpp
Generated on Wed Oct 20 16:12:01 2010 for inVRs by
1.5.8