IntersectPoint::IntersectPoint(SceneManipulator* sceneManipulator) : HitIndicator(sceneManipulator) , mIntersectNode(NULL) , mIntersectEntity(NULL) { // Create intersection node and entity mIntersectNode = getIndicatorRootSceneNode()->createChildSceneNode(); Real radius = 1; int rings = 16; int segments = 16; Ogre::MeshPtr sphereMesh = createCommonSphere(radius, rings, segments); Ogre::MaterialPtr material = createColourMaterial( Ogre::ColourValue(1, 0, 0, 0.75), Ogre::ColourValue(0, 1, 0), 1); mIntersectEntity = getSceneManager()->createEntity(mIntersectNode->getName(), sphereMesh->getName()); mIntersectEntity->setQueryFlags(0); mIntersectEntity->setNormaliseNormals(true); mIntersectEntity->setMaterialName(material->getName()); mIntersectEntity->setRenderQueueGroup(Ogre::RENDER_QUEUE_7); mIntersectNode->attachObject(mIntersectEntity); mIntersectNode->setVisible(false); reshape(); }
////////////////////////////////////////////////////////////////////////// // IntersectGrids ///// ////////////////////////////////////////////////////////////////////////// IntersectGrids::IntersectGrids(SceneManipulator* sceneManipulator) : HitIndicator(sceneManipulator) { mIntersectGridsNode = getIndicatorRootSceneNode()->createChildSceneNode(); intersectGrids = new IntersectGrid; intersectGrids->setQueryFlags(0); intersectGrids->setGridColour( Ogre::ColourValue(1.0, 1.0, 1.0, 0.3) ); mIntersectGridsNode->attachObject(intersectGrids); }
Ogre::SceneNode* JunctionPoints::allocNode(void) { Ogre::SceneNode* node; if (mFreeNodes.empty()) { node = getIndicatorRootSceneNode()->createChildSceneNode(); Ogre::Entity* entity = getSceneManager()->createEntity(node->getName(), mBaseMesh->getName()); entity->setQueryFlags(0); //david-<< //entity->setNormaliseNormals(true); //david->> node->attachObject(entity); } else { node = mFreeNodes.back(); mFreeNodes.pop_back(); getIndicatorRootSceneNode()->addChild(node); } node->setScale(mScale, mScale, mScale); return node; }
StandardModelIndicator::StandardModelIndicator(SceneManipulator* sceneManipulator) : HitIndicator(sceneManipulator) , mIntersectNode(NULL) , mIntersectEntity(NULL) { // Create intersection node and entity mIntersectNode = getIndicatorRootSceneNode()->createChildSceneNode(); mIntersectEntity = getSceneManager()->createEntity(mIntersectNode->getName(), "standardmodel.mesh"); mIntersectEntity->setQueryFlags(0); mIntersectEntity->setNormaliseNormals(true); mIntersectEntity->setMaterialName("BaseWhite"); mIntersectEntity->setRenderQueueGroup(Ogre::RENDER_QUEUE_7); mIntersectNode->attachObject(mIntersectEntity); mIntersectNode->setVisible(false); reshape(); }
void DisableDecalGrids::_createProjector(void) { if (NULL == mProjector) { mProjectorNode = getIndicatorRootSceneNode()->createChildSceneNode(); mProjector = static_cast<Projector*> ( getSceneManipulator()->getSceneManager()-> createMovableObject(mProjectorNode->getName(), ProjectorFactory::FACTORY_TYPE_NAME) ); mProjector->setProjectionType(Ogre::PT_ORTHOGRAPHIC); mProjector->setTerrain( getSceneManipulator()->getTerrain() ); mProjector->setAspectRatio(1); mProjector->setShowFrustum(false); mProjector->setEnableClipPlanes(false); mProjector->setPatchMaterial("DisableDecalProjector"); mProjectorNode->attachObject(mProjector); mProjectorNode->setDirection(Ogre::Vector3::NEGATIVE_UNIT_Y, mIntersectGridsNode->TS_WORLD); } }
CreateObjectAction::CreateObjectAction(SceneManipulator* sceneManipulator) : Action(sceneManipulator) , mDirty(true) , mObject() , mHasPosition(false) , mRangeSphereEntity(NULL) , mRangeSphereNode(NULL) { // create a entity for indicate the range of a point light mRangeSphereNode = getIndicatorRootSceneNode()->createChildSceneNode(); Ogre::MeshPtr sphereMesh = Fairy::createCommonSphere("PointLightRangeSphere", 100, 16, 16); Ogre::MaterialPtr material = Fairy::createPureColourMaterial(Ogre::ColourValue(0, 1, 0, 0.75)); material->getTechnique(0)->getPass(0)->setPolygonMode(Ogre::PM_WIREFRAME); material->getTechnique(0)->getPass(0)->setCullingMode(Ogre::CULL_NONE); mRangeSphereEntity = getSceneManager()->createEntity("CreateLightRangeSphere", sphereMesh->getName()); mRangeSphereEntity->setMaterialName(material->getName()); mRangeSphereNode->attachObject(mRangeSphereEntity); mRangeSphereNode->setVisible(false); }