ComponentTransitPtr SceneNodeTreeComponentGenerator::getTreeComponent(Tree* const Parent, const boost::any& Value, bool IsSelected, bool Expanded, bool Leaf, UInt32 Row, bool HasFocus) { NodeUnrecPtr TheNode; try { TheNode = boost::any_cast<NodeUnrecPtr>(Value); } catch (boost::bad_any_cast &) { //Could not convert to FieldContinerFieldPath return ComponentTransitPtr(NULL); } //Get the text for the label std::string LabelText(""); if(TheNode != NULL) { const Char8* name(getName(TheNode)); if(name) { LabelText += std::string(name) + " "; } if(TheNode->getCore() != NULL) { LabelText += std::string("[") + TheNode->getCore()->getType().getCName() + "]"; } else { LabelText += "[NULL core]"; } } else { LabelText += "NULL"; } ComponentRecPtr GenComp = getTreeComponentText(Parent, LabelText, IsSelected, Expanded, Leaf, Row, HasFocus); if(TheNode != NULL && !(TheNode->getTravMask() & getTravMask())) { GenComp->setEnabled(false); } return ComponentTransitPtr(GenComp); }
virtual void keyPressed(const KeyEventUnrecPtr e) { if(e->getKey() == KeyEvent::KEY_Q && e->getModifiers() & KeyEvent::KEY_MODIFIER_CONTROL) { TutorialWindow->closeWindow(); } switch(e->getKey()) { case KeyEvent::KEY_B: buildBox(Vec3f(10.0,10.0,10.0), Pnt3f((Real32)(rand()%100)-50.0,(Real32)(rand()%100)-50.0,25.0)); break; case KeyEvent::KEY_UP: _IsUpKeyDown = true; break; case KeyEvent::KEY_DOWN: _IsDownKeyDown = true; break; case KeyEvent::KEY_LEFT: _IsLeftKeyDown = true; break; case KeyEvent::KEY_RIGHT: _IsRightKeyDown = true; break; case KeyEvent::KEY_D: { if(PhysDrawableNode->getTravMask()) { PhysDrawableNode->setTravMask(TypeTraits<UInt32>::getMin()); } else { PhysDrawableNode->setTravMask(TypeTraits<UInt32>::getMax()); } } break; } }
virtual void keyPressed(const KeyEventUnrecPtr e) { //Exit if(e->getKey() == KeyEvent::KEY_Q && e->getModifiers() & KeyEvent::KEY_MODIFIER_COMMAND) { TutorialWindow->closeWindow(); } //Toggle animation if(e->getKey() == KeyEvent::KEY_SPACE) { if(animationPaused) animationPaused = false; else animationPaused = true; } //Toggle bind pose if(e->getKey() == KeyEvent::KEY_B) { if(e->getModifiers() & KeyEvent::KEY_MODIFIER_SHIFT) { //Toggle mesh if(UnboundGeometry->getTravMask() == 0) { UnboundGeometry->setTravMask(1); } else { UnboundGeometry->setTravMask(0); } } else { //Toggle skeleton if(dynamic_cast<SkeletonDrawable*>(SkeletonNode->getCore())->getDrawBindPose() == false) { dynamic_cast<SkeletonDrawable*>(SkeletonNode->getCore())->setDrawBindPose(true); } else { dynamic_cast<SkeletonDrawable*>(SkeletonNode->getCore())->setDrawBindPose(false); } } } //Toggle current pose if(e->getKey() == KeyEvent::KEY_P) { if(e->getModifiers() & KeyEvent::KEY_MODIFIER_SHIFT) { //Toggle mesh if(MeshNode->getTravMask() == 0) { MeshNode->setTravMask(1); } else { MeshNode->setTravMask(0); } } else { //Toggle skeleton if(dynamic_cast<SkeletonDrawable*>(SkeletonNode->getCore())->getDrawPose() == false) { dynamic_cast<SkeletonDrawable*>(SkeletonNode->getCore())->setDrawPose(true); } else { dynamic_cast<SkeletonDrawable*>(SkeletonNode->getCore())->setDrawPose(false); } } } }