Drag[en]gine Script Module DragonScript
1.21
|
Behavior element. More...
Public Member Functions | |
Array | collectInstances (Block ablock) |
Collect behavior instance with block into Array. More... | |
ECBehaviorInstance | findInstance (Block ablock) |
Find behavior instance with block. More... | |
void | forEachInstance (Block ablock) |
Visit behavior instances with block. More... | |
void | forEachInstanceReverse (Block ablock) |
Visit behavior instances with block in reverse order. More... | |
ECBehaviorInstance | getInstanceAt (int index) |
Behavior instance at index. More... | |
bool | getRequiresAttachToParent () |
Attach to parent has not been processed yet. More... | |
bool | getRequiresEnterFrame () |
Sub-class requires enterFrame() to be called. More... | |
bool | getRequiresThink () |
Sub-class requires think() to be called. More... | |
bool | isChangingGameWorld () |
Behavior element is in progress of beeing added to or removed from a GameWorld. More... | |
bool | isReallyInGameWorld () |
Element is in GameWorld and not in progress of beeing removed from it. More... | |
BehaviorElement | new (BehaviorElementClass eclass) |
Create element. More... | |
void | onSetPosition () |
Position changed. More... | |
void | requiresThinkChanged () |
Requires thinking changed. More... | |
void | setRequiresAttachToParent (bool requiresAttachToParent) |
Set if attach to parent has not been processed yet. More... | |
Public Member Functions inherited from Dragengine.Scenery.Element | |
void | addToGameWorld () |
Dictionary | debugInformation () |
Debug information as Dictionary. More... | |
void | dispose () |
Dispose of element. More... | |
void | enterFrame () |
Frame update started. More... | |
ElementClass | getClass () |
DMatrix | getElementMatrix () |
Matrix to transform from element space into world space. More... | |
GameWorld | getGameWorld () |
UniqueID | getID () |
DMatrix | getInverseElementMatrix () |
Matrix to transform from world space into element space. More... | |
bool | getIsScaled () |
Is scaled. More... | |
Quaternion | getOrientation () |
Orientation. More... | |
Element | getParent () |
DVector | getPosition () |
Position. More... | |
Vector | getScaling () |
Scaling. More... | |
StubElement | getStub () |
Element stub used to create the element. More... | |
bool | getTouchable () |
bool | getVisible () |
void | init (StubElement stub) |
Initialize element from stub. More... | |
bool | isChildOf (Element parent) |
bool | isDisposed () |
Element has been disposed of. More... | |
bool | isMyselfOrChildOf (Element parent) |
bool | isNotDisposed () |
Element has not been disposed of. More... | |
void | log (String message) |
Log using BaseGameApp Console if present. More... | |
Element | new (ElementClass elementClass) |
void | onSetGameWorld () |
void | onSetGeometry () |
Position, orientation or scaling changed. More... | |
void | onSetOrientation () |
Orientation changed. More... | |
void | onSetParent () |
void | onSetScaling () |
Scaling changed. More... | |
void | onSetTouchable () |
void | onSetVisible () |
void | postThink (float elapsed) |
void | readFromFile (PersistencyEnvironment env, FileReader reader) |
Read element from file reader. More... | |
void | removeFromGameWorld () |
void | removeFromGameWorldIfPresent () |
Remove element from game world if present. More... | |
void | safeDispose () |
Remove element from game world if present and dispose of element. More... | |
void | setGameWorld (GameWorld gameWorld) |
void | setGeometry (DVector position, Quaternion orientation) |
Set position and orientation. More... | |
void | setGeometry (DVector position, Quaternion orientation, Vector scaling) |
Set position, orientation and scaling of element. More... | |
void | setID (UniqueID id) |
void | setOrientation (Quaternion orientation) |
Set orientation. More... | |
void | setParent (Element parent) |
void | setPosition (DVector position) |
Set position. More... | |
void | setScaling (Vector scaling) |
Set scaling. More... | |
void | setStub (StubElement stub) |
Set element stub used to create the element. More... | |
void | setTouchable (bool touchable) |
void | setVisible (bool visible) |
void | think (float elapsed) |
String | toString () |
void | visit (ElementVisitor visitor) |
void | writeToFile (PersistencyEnvironment env, FileWriter writer) |
Write element to file writer. More... | |
void | writeToFileWithStub (PersistencyEnvironment env, FileWriter writer) |
Write element to file writer with stub. More... | |
Public Attributes | |
Array | pInstances |
bool | pIsChangingGameWorld |
bool | pIsThinker |
bool | pRequiresAttachToParent |
bool | pRequiresEnterFrame |
bool | pRequiresThink |
Array | pThinkingInstances |
Protected Member Functions | |
void | setRequiresEnterFrame (bool requiresEnterFrame) |
Set if sub-class requires enterFrame() to be called. More... | |
void | setRequiresThink (bool requiresThink) |
Set if sub-class requires think() to be called. More... | |
Additional Inherited Members | |
Static Public Member Functions inherited from Dragengine.Scenery.Element | |
static Element | readElementFromFileWithStub (PersistencyEnvironment env, FileReader reader, ElementClassList ElementClassList) |
Load element from file reader with stub supporting null element. More... | |
static void | writeElementToFileWithStub (PersistencyEnvironment env, FileWriter writer, Element element) |
Write element to file writer with stub supporting null element. More... | |
Behavior element.
Behavior elements are jack of all trade elements. They allow building complex element behaviors by using behavior building blocks. Theye behavior building blocks are provided by ECBehavior classes attached to the element class.
Behavior elements are suited for prototyping or rapid development since they require little written code. Building element classes the conventional way though is usually preferred.
To create an element based on BehaviorElement create a new subclass of BehaviorElementClass and add all the desired ECBehavior instance. There is no need to subclas BehaviorElement. When creating a new instance the BehaviorElement is filled with ECBehavior created ECBehaviorInstance instances. These provide the actual behavior to the element.
Array Dragengine.Scenery.BehaviorElement.collectInstances | ( | Block | ablock | ) |
Collect behavior instance with block into Array.
Block is required to have one parameter ECBehaviorInstance or subclass thereof and returning true for instances to collect. Block is called only for instances castable to block parameter type.
ECBehaviorInstance Dragengine.Scenery.BehaviorElement.findInstance | ( | Block | ablock | ) |
Find behavior instance with block.
Block is required to have one parameter ECBehaviorInstance or subclass thereof and returning true if the right instance is found otherwise false. Block is called only for instances castable to block parameter type.
void Dragengine.Scenery.BehaviorElement.forEachInstance | ( | Block | ablock | ) |
Visit behavior instances with block.
Block is required to have one parameter of type ECBehaviorInstance or subclass thereof. Block is called only for instances castable to block parameter type.
void Dragengine.Scenery.BehaviorElement.forEachInstanceReverse | ( | Block | ablock | ) |
Visit behavior instances with block in reverse order.
Block is required to have one parameter ECBehaviorInstance or subclass thereof. Block is called only for instances castable to block parameter type.
ECBehaviorInstance Dragengine.Scenery.BehaviorElement.getInstanceAt | ( | int | index | ) |
Behavior instance at index.
bool Dragengine.Scenery.BehaviorElement.getRequiresAttachToParent | ( | ) |
Attach to parent has not been processed yet.
bool Dragengine.Scenery.BehaviorElement.getRequiresEnterFrame | ( | ) |
Sub-class requires enterFrame() to be called.
bool Dragengine.Scenery.BehaviorElement.getRequiresThink | ( | ) |
Sub-class requires think() to be called.
bool Dragengine.Scenery.BehaviorElement.isChangingGameWorld | ( | ) |
Behavior element is in progress of beeing added to or removed from a GameWorld.
Returns true while inside addToGameWorld() or removeFromGameWorld(). This knowledge is required by certain behaviors to produce correct result.
For example ECBehaviorTwoStateAnimated requires In this situation the behavior element layout can look like this:
The ECBehaviorTriggered has been added by ECBehaviorTwoStateAnimated.
The rule of ECBehaviorTwoStateAnimated is that if the trigger changes while the element is in a GameWorld then activate() or deactivate() is called to start the transition process. If the element is not in a GameWorld then setActivated() or setDeactivated() has to be called instead. This is required to ensure the element starts out in the activated state when added to a game world in which the trigger expression happens to eavluate to true.
When the element is added to the game world the following call-chain happens:
ECBehaviorTriggered.addToGameWorld() evaluates the trigger expression using the GameWorld the element is beeing added to. Since the trigger expression evaluates to true all listeners are notified about the ECBehaviorTriggered state having changed to true. This causes ECBehaviorTwoStateAnimated.SwitchStateListener to be fired. At this point in time the BehaviorElement already returns the GameWorld instance instead of null and the ECBehaviorTwoStateAnimated thinks it needs to do an activate() instead of a setActivated().
By using isChangingGameWorld() the ECBehaviorTwoStateAnimated can figure out that it should not call activate() but setActivated().
bool Dragengine.Scenery.BehaviorElement.isReallyInGameWorld | ( | ) |
Element is in GameWorld and not in progress of beeing removed from it.
Convenience method returning true if getGameWorld() returns not null and isChangingGameWorld() returns false.
BehaviorElement Dragengine.Scenery.BehaviorElement.new | ( | BehaviorElementClass | eclass | ) |
Create element.
void Dragengine.Scenery.BehaviorElement.onSetPosition | ( | ) |
Position changed.
Reimplemented from Dragengine.Scenery.Element.
void Dragengine.Scenery.BehaviorElement.requiresThinkChanged | ( | ) |
Requires thinking changed.
Called by ECBehaviorInstance if their requirement for thinking changed. This means the requiresThink() implementation returns a different value than the last time it has been checked.
This call will cause the behavior element to check again all behavior instances for their thinking requirement and will addThinker()/removeThinker() accordingly.
Using this method helps to reduce the script processing load by not making the element think() method called if no behavior requires it.
void Dragengine.Scenery.BehaviorElement.setRequiresAttachToParent | ( | bool | requiresAttachToParent | ) |
Set if attach to parent has not been processed yet.
Use this method if you need to reattach the element to the parent defined in the StubElement the next time it enters a game world.
|
protected |
Set if sub-class requires enterFrame() to be called.
|
protected |
Set if sub-class requires think() to be called.
Array Dragengine.Scenery.BehaviorElement.pInstances |
bool Dragengine.Scenery.BehaviorElement.pIsChangingGameWorld |
bool Dragengine.Scenery.BehaviorElement.pIsThinker |
bool Dragengine.Scenery.BehaviorElement.pRequiresAttachToParent |
bool Dragengine.Scenery.BehaviorElement.pRequiresEnterFrame |
bool Dragengine.Scenery.BehaviorElement.pRequiresThink |
Array Dragengine.Scenery.BehaviorElement.pThinkingInstances |