SLProject
4.2.000
A platform independent 3D computer graphics framework for desktop OS, Android, iOS and online in web browsers
|
Class that holds all visible gizmo node during mouse transforms. More...
#include <SLTransformNode.h>
Public Member Functions | |
SLTransformNode (SLSceneView *sv, SLNode *targetNode, SLstring shaderDir) | |
Construct a new SLTransformNode::SLTransformNode object *. More... | |
~SLTransformNode () override | |
virtual SLbool | onMouseDown (SLMouseButton button, SLint x, SLint y, SLKey mod) override |
onMouseDown event handler during editing interaction More... | |
virtual SLbool | onMouseUp (SLMouseButton button, SLint x, SLint y, SLKey mod) override |
onMouseUp event handler during editing interaction More... | |
virtual SLbool | onMouseMove (SLMouseButton button, SLint x, SLint y, SLKey mod) override |
onMouseMove event handler during editing interaction More... | |
virtual void | editMode (SLNodeEditMode editMode) |
SLNode * | targetNode () |
SLNodeEditMode | editMode () |
Public Member Functions inherited from SLNode | |
SLNode (const SLstring &name="Node") | |
Construct a new SLNode::SLNode object. More... | |
SLNode (SLMesh *mesh, const SLstring &name="Node") | |
SLNode (SLMesh *mesh, const SLVec3f &translation, const SLstring &name) | |
~SLNode () override | |
virtual void | cull3DRec (SLSceneView *sv) |
virtual void | cullChildren3D (SLSceneView *sv) |
Initializer function to call SLNode::cull3DRec recursively. More... | |
virtual void | cull2DRec (SLSceneView *sv) |
virtual bool | hitRec (SLRay *ray) |
virtual void | statsRec (SLNodeStats &stats) |
virtual SLNode * | copyRec () |
virtual SLAABBox & | updateAABBRec (SLbool updateAlsoAABBinOS) |
virtual void | dumpRec () |
void | setDrawBitsRec (SLuint bit, SLbool state) |
void | setPrimitiveTypeRec (SLGLPrimitiveType primitiveType) |
virtual void | addMesh (SLMesh *mesh) |
virtual void | drawMesh (SLSceneView *sv) |
Draws the single mesh. More... | |
bool | removeMesh () |
Returns true if a mesh was assigned and set it to nullptr. More... | |
bool | removeMesh (SLMesh *mesh) |
Returns true if the passed mesh was assigned and sets it to nullptr. More... | |
SLint | numChildren () |
void | addChild (SLNode *child) |
bool | insertChild (SLNode *insertC, SLNode *afterC) |
void | deleteChildren () |
bool | deleteChild () |
bool | deleteChild (SLNode *child) |
bool | deleteChild (const SLstring &name) |
bool | removeChild (SLNode *child) |
remove child from vector of children. Removes false if not found, else true. More... | |
template<typename T > | |
T * | find (const SLstring &name="", SLbool findRecursive=true) |
template<typename T > | |
T * | findChild (const SLstring &name="", SLbool findRecursive=true) |
template<typename T > | |
deque< T * > | findChildren (const SLstring &name="", SLbool findRecursive=true, SLbool canContain=false) |
deque< SLNode * > | findChildren (const SLMesh *mesh, SLbool findRecursive=true) |
deque< SLNode * > | findChildren (SLuint drawbit, SLbool findRecursive=true) |
SLVec3f | translationOS () const |
SLVec3f | forwardOS () const |
SLVec3f | rightOS () const |
SLVec3f | upOS () const |
SLVec3f | axisXOS () const |
SLVec3f | axisYOS () const |
SLVec3f | axisZOS () const |
SLVec3f | translationWS () const |
SLVec3f | forwardWS () const |
SLVec3f | rightWS () const |
SLVec3f | upWS () const |
SLVec3f | axisXWS () const |
SLVec3f | axisYWS () const |
SLVec3f | axisZWS () const |
void | translation (const SLVec3f &pos, SLTransformSpace relativeTo=TS_parent) |
void | translation (SLfloat x, SLfloat y, SLfloat z, SLTransformSpace relativeTo=TS_parent) |
void | rotation (const SLQuat4f &rot, SLTransformSpace relativeTo=TS_parent) |
void | rotation (SLfloat angleDeg, const SLVec3f &axis, SLTransformSpace relativeTo=TS_parent) |
void | scaling (SLfloat s) |
void | scaling (SLfloat x, SLfloat y, SLfloat z) |
void | scaling (const SLVec3f &scaling) |
void | lookAt (SLfloat targetX, SLfloat targetY, SLfloat targetZ, SLfloat upX=0, SLfloat upY=1, SLfloat upZ=0, SLTransformSpace relativeTo=TS_world) |
void | lookAt (const SLVec3f &target, const SLVec3f &up=SLVec3f::AXISY, SLTransformSpace relativeTo=TS_world) |
void | translate (const SLVec3f &vec, SLTransformSpace relativeTo=TS_object) |
void | translate (SLfloat x, SLfloat y, SLfloat z, SLTransformSpace relativeTo=TS_object) |
void | rotate (const SLQuat4f &rot, SLTransformSpace relativeTo=TS_object) |
void | rotate (SLfloat angleDeg, const SLVec3f &axis, SLTransformSpace relativeTo=TS_object) |
void | rotate (SLfloat angleDeg, SLfloat x, SLfloat y, SLfloat z, SLTransformSpace relativeTo=TS_object) |
void | rotateAround (const SLVec3f &point, SLVec3f &axis, SLfloat angleDeg, SLTransformSpace relativeTo=TS_world) |
void | scale (SLfloat s) |
void | scale (SLfloat x, SLfloat y, SLfloat z) |
void | scale (const SLVec3f &scale) |
void | scaleToCenter (SLfloat maxDim) |
void | setInitialState () |
void | resetToInitialState () |
void | parent (SLNode *p) |
void | entityID (SLint entityID) |
void | om (const SLMat4f &mat) |
void | animation (SLAnimation *a) |
void | castsShadows (SLbool castsShadows) |
virtual void | needUpdate () |
void | needWMUpdate () |
void | needAABBUpdate () |
void | isSelected (bool isSelected) |
void | minLodCoverage (SLfloat minLodCoverage) |
void | levelForSM (SLubyte lfsm) |
void | onUpdateCB (function< void()> callbackFunc) |
SLNode * | parent () |
SLint | depth () const |
SLint | entityID () const |
const SLMat4f & | om () |
const SLMat4f & | initialOM () |
const SLMat4f & | updateAndGetWM () const |
const SLMat4f & | updateAndGetWMI () const |
SLDrawBits * | drawBits () |
SLbool | drawBit (SLuint bit) |
SLAABBox * | aabb () |
SLAnimation * | animation () |
SLbool | castsShadows () |
SLMesh * | mesh () |
SLVNode & | children () |
const SLAnimSkeleton * | skeleton () |
Returns the first skeleton found in the meshes. More... | |
void | updateRec () |
virtual void | doUpdate () |
bool | updateMeshSkins (bool forceCPUSkinning, const std::function< void(SLMesh *)> &cbInformNodes) |
Update all skinned meshes recursively. More... | |
void | updateMeshAccelStructs () |
void | updateMeshMat (std::function< void(SLMaterial *m)> setMat, bool recursive) |
Updates the mesh material recursively with a material lambda. More... | |
void | setMeshMat (SLMaterial *mat, bool recursive) |
Set the mesh material recursively. More... | |
bool | isSelected () |
SLfloat | minLodCoverage () |
SLubyte | levelForSM () |
Public Member Functions inherited from SLObject | |
SLObject (const SLstring &Name="", const SLstring &url="") | |
virtual | ~SLObject () |
void | name (const SLstring &Name) |
void | url (const SLstring &url) |
const SLstring & | name () const |
const SLstring & | url () const |
Public Member Functions inherited from SLEventHandler | |
SLEventHandler () | |
virtual | ~SLEventHandler () |
virtual SLbool | onDoubleClick (const SLMouseButton button, const SLint x, const SLint y, const SLKey mod) |
virtual SLbool | onMouseWheel (const SLint delta, const SLKey mod) |
virtual SLbool | onTouch2Down (const SLint x1, const SLint y1, const SLint x2, const SLint y2) |
virtual SLbool | onTouch2Move (const SLint x1, const SLint y1, const SLint x2, const SLint y2) |
virtual SLbool | onTouch2Up (const SLint x1, const SLint y1, const SLint x2, const SLint y2) |
virtual SLbool | onTouch3Down (const SLint x1, const SLint y1) |
virtual SLbool | onTouch3Move (const SLint x1, const SLint y1) |
virtual SLbool | onTouch3Up (const SLint x1, const SLint y1) |
virtual SLbool | onKeyPress (const SLKey key, const SLKey mod) |
virtual SLbool | onKeyRelease (const SLKey key, const SLKey mod) |
virtual SLbool | onRotationPYR (const SLfloat pitchRAD, const SLfloat yawRAD, const SLfloat rollRAD) |
void | mouseRotationFactor (SLfloat rf) |
SLfloat | mouseRotationFactor () |
Private Member Functions | |
bool | getClosestPointsBetweenRays (const SLVec3f &ray1O, const SLVec3f &ray1Dir, const SLVec3f &ray2O, const SLVec3f &ray2Dir, SLVec3f &ray1P, float &t1, SLVec3f &ray2P, float &t2) |
bool | getClosestPointOnAxis (const SLVec3f &pickRayO, const SLVec3f &pickRayDir, const SLVec3f &axisRayO, const SLVec3f &axisRayDir, SLVec3f &axisPoint) |
bool | rayDiscIntersect (const SLVec3f &rayO, const SLVec3f &rayDir, const SLVec3f &discO, const SLVec3f &discN, const float &distR, float &t) |
bool | rayPlaneIntersect (const SLVec3f &rayO, const SLVec3f &rayDir, const SLVec3f &discO, const SLVec3f &discN, float &t) |
bool | isCCW (const SLVec2f &a, const SLVec2f &b, const SLVec2f &c) |
void | setDrawBitRecursive (SLuint bit, SLNode *node, bool value) |
void | lookAt (SLNode *node, SLCamera *camera) |
Additional Inherited Members | |
Static Public Attributes inherited from SLNode | |
static SLuint | numWMUpdates = 0 |
NO. of calls to updateWMRec per frame. More... | |
static unsigned int | instanceIndex = 0 |
??? More... | |
Protected Attributes inherited from SLNode | |
SLNode * | _parent |
pointer to the parent node More... | |
SLVNode | _children |
vector of children nodes More... | |
SLMesh * | _mesh |
pointer to a single mesh More... | |
SLint | _depth |
depth of the node in a scene tree More... | |
SLint | _entityID |
ID in the SLVEntity graph for Data Oriented Design. More... | |
SLMat4f | _om |
object matrix for local transforms More... | |
SLMat4f | _initialOM |
the initial om state More... | |
SLMat4f | _wm |
world matrix for world transform More... | |
SLMat4f | _wmI |
inverse world matrix More... | |
SLbool | _isWMUpToDate |
is the WM of this node still valid More... | |
SLbool | _isWMIUpToDate |
is the inverse WM of this node still valid More... | |
SLbool | _isAABBUpToDate |
is the saved aabb still valid More... | |
bool | _castsShadows |
flag if meshes of node should cast shadows More... | |
bool | _isSelected |
flag if node and one or more of its meshes are selected More... | |
SLDrawBits | _drawBits |
node level drawing flags More... | |
SLAABBox | _aabb |
axis aligned bounding box More... | |
SLAnimation * | _animation |
animation of the node More... | |
SLfloat | _minLodCoverage |
Min. LOD coverage for visibility (0.0 < _minLodCoverage < 1.0) More... | |
SLubyte | _levelForSM |
Level of LOD to use for shadow mapping (0 = the visible one will be drawn) More... | |
function< void()> | _onUpdateCB |
Optional lambda callback once per update. More... | |
Protected Attributes inherited from SLObject | |
SLstring | _name |
name of an object More... | |
SLstring | _url |
uniform resource locator More... | |
Protected Attributes inherited from SLEventHandler | |
SLfloat | _mouseRotationFactor |
Mouse rotation sensibility. More... | |
SLfloat | _keyboardDeltaPos |
Delta dist. for keyboard translation. More... | |
Class that holds all visible gizmo node during mouse transforms.
An SLTransformNode is added to the scenegraph during edit mode. Depending on the transform type (translation, rotation or scaling) arrows or disks and circles get shown or hidden. The transform node gets added and removed on the fly. So the assets have to be delete in the destructor.
Definition at line 32 of file SLTransformNode.h.
SLTransformNode::SLTransformNode | ( | SLSceneView * | sv, |
SLNode * | targetNode, | ||
SLstring | shaderDir | ||
) |
Construct a new SLTransformNode::SLTransformNode object *.
It is important that during instantiation NO OpenGL functions (gl*) get called because this constructor will be most probably called in a parallel thread from within an SLScene::registerAssetsToLoad or SLScene::assemble function. All objects that get rendered have to do their OpenGL initialization when they are used the first time during rendering in the main thread.
sv | Pointer to the SLSceneView |
targetNode | Pointer to the node that should be transformed. |
shaderDir | Path to the shader files |
Definition at line 30 of file SLTransformNode.cpp.
|
override |
Destructor for a transform node. Because a transform node will be added and removed on the fly to the scenegraph it is the owner of its meshes (SLMesh), materials (SLMaterial) and shader programs (SLGLProgram). It has to delete them in here.
Definition at line 165 of file SLTransformNode.cpp.
|
inline |
Definition at line 56 of file SLTransformNode.h.
|
virtual |
Setter function for the edit mode. It shows or hides the appropriate gizmo meshes for the mouse interaction.
editMode | New edit mode to switch to. |
Definition at line 202 of file SLTransformNode.cpp.
|
private |
Definition at line 648 of file SLTransformNode.cpp.
|
private |
Definition at line 604 of file SLTransformNode.cpp.
Definition at line 725 of file SLTransformNode.cpp.
Definition at line 748 of file SLTransformNode.cpp.
|
overridevirtual |
onMouseDown event handler during editing interaction
Reimplemented from SLEventHandler.
Definition at line 268 of file SLTransformNode.cpp.
|
overridevirtual |
onMouseMove event handler during editing interaction
Reimplemented from SLEventHandler.
Definition at line 309 of file SLTransformNode.cpp.
|
overridevirtual |
onMouseUp event handler during editing interaction
Reimplemented from SLEventHandler.
Definition at line 285 of file SLTransformNode.cpp.
|
private |
Definition at line 682 of file SLTransformNode.cpp.
|
private |
Definition at line 702 of file SLTransformNode.cpp.
Definition at line 738 of file SLTransformNode.cpp.
|
inline |
Definition at line 55 of file SLTransformNode.h.
|
private |
Definition at line 74 of file SLTransformNode.h.
|
private |
Definition at line 73 of file SLTransformNode.h.
|
private |
Definition at line 72 of file SLTransformNode.h.
|
private |
Definition at line 80 of file SLTransformNode.h.
|
private |
Definition at line 79 of file SLTransformNode.h.
|
private |
Definition at line 78 of file SLTransformNode.h.
|
private |
Definition at line 81 of file SLTransformNode.h.
|
private |
Definition at line 84 of file SLTransformNode.h.
|
private |
Definition at line 83 of file SLTransformNode.h.
|
private |
Definition at line 82 of file SLTransformNode.h.
|
private |
Definition at line 85 of file SLTransformNode.h.
|
private |
Definition at line 62 of file SLTransformNode.h.
|
private |
Definition at line 88 of file SLTransformNode.h.
|
private |
Definition at line 113 of file SLTransformNode.h.
|
private |
Definition at line 89 of file SLTransformNode.h.
|
private |
Definition at line 77 of file SLTransformNode.h.
|
private |
Definition at line 76 of file SLTransformNode.h.
|
private |
Definition at line 75 of file SLTransformNode.h.
|
private |
Definition at line 66 of file SLTransformNode.h.
|
private |
Definition at line 70 of file SLTransformNode.h.
|
private |
Definition at line 65 of file SLTransformNode.h.
|
private |
Definition at line 69 of file SLTransformNode.h.
|
private |
Definition at line 64 of file SLTransformNode.h.
|
private |
Definition at line 68 of file SLTransformNode.h.
|
private |
Definition at line 67 of file SLTransformNode.h.
|
private |
Definition at line 71 of file SLTransformNode.h.
|
private |
Definition at line 87 of file SLTransformNode.h.
|
private |
Definition at line 105 of file SLTransformNode.h.
|
private |
Definition at line 107 of file SLTransformNode.h.
|
private |
Definition at line 109 of file SLTransformNode.h.
|
private |
Definition at line 106 of file SLTransformNode.h.
|
private |
Definition at line 108 of file SLTransformNode.h.
|
private |
Definition at line 110 of file SLTransformNode.h.
|
private |
Definition at line 104 of file SLTransformNode.h.
|
private |
Definition at line 101 of file SLTransformNode.h.
|
private |
Definition at line 100 of file SLTransformNode.h.
|
private |
Definition at line 99 of file SLTransformNode.h.
|
private |
Definition at line 90 of file SLTransformNode.h.
|
private |
Definition at line 59 of file SLTransformNode.h.
|
private |
Definition at line 60 of file SLTransformNode.h.
|
private |
Definition at line 93 of file SLTransformNode.h.
|
private |
Definition at line 94 of file SLTransformNode.h.
|
private |
Definition at line 95 of file SLTransformNode.h.
|
private |
Definition at line 96 of file SLTransformNode.h.