void mtth_MayaScene::transformUpdateCallback(MayaObject *mobj) { mtth_MayaObject *obj = (mtth_MayaObject *)mobj; //logger.trace(MString("mtth_MayaScene::transformUpdateCallback")); //logger.debug(MString("mtth_updateObj: ") + mobj->dagPath.fullPathName()); if( isCamera(obj->mobject)) { this->mtth_renderer.updateTransform(obj); return; } // if this is an instance of an object which has an assembly, then update it, // if not, ignore instance. if( obj->instanceNumber > 0) { if( obj->origObject == NULL) return; }else{ if( obj->instancerParticleId > -1) { if( obj->origObject == NULL) { logger.debug(MString("transformUpdateCallback: obj orig obj == NULL with instancerParticleId > -1")); return; } }else{ } } this->mtth_renderer.updateTransform(obj); }
void SceneManager::removeSceneNode(SceneNode *node) { assert(node != NULL); { std::vector<SceneNode*>::iterator iter = std::find(m_nodes.begin(), m_nodes.end(), node); if (iter == m_nodes.end()) return; m_nodes.erase(iter); } for (int i = 0; i < (int)node->getAttachedObjs().size(); ++i) { SceneObj* obj = node->getAttachedObjs()[i]; if (isCamera(obj->getObjType())) { assert(m_camera == obj); m_camera = NULL; } else if (isLight(obj->getObjType())) { assert(m_light == obj); m_light = NULL; } else if (isEntity(obj->getObjType())) { m_entitys.erase(std::find(m_entitys.begin(), m_entitys.end(), obj)); } else assert(0); } }
Ray::Ray(Object * from, Object * to) { if (isCamera(from)) pos = C(from)->eye; else pos = to->pos(); dir = to->pos() - pos; }
bool SceneManager::load(const std::string& fname) { clear(); std::ifstream fi(fname.c_str()); int sceneObjCnt = 0; { StreamBlockReader r("SceneDescription", fi); if (!r.read("sceneObjCount", &sceneObjCnt)) assert(0); } while (sceneObjCnt-- > 0) { SceneNode *node = new SceneNode(); fi >> *node; SceneObj* obj = NULL; fi >> obj; assert(obj != NULL); node->attachSceneObj(obj); m_nodes.push_back(node); if (isEntity(obj->getObjType())) { m_entitys.push_back((Entity*)obj); } else if (isCamera(obj->getObjType())) { assert(m_camera == NULL); m_camera = (Camera*)obj; } else if (isLight(obj->getObjType())) { assert(m_light == NULL); m_light = (Light*)obj; } else assert(0); } assert(m_camera != NULL); assert(m_light != NULL); assert(!m_entitys.empty()); m_terrain = new FlatTerrain(0); m_cameraController = new FPSCameraController(m_camera, m_terrain); m_entController = new EntityController_Rotator(this); return !!fi; }
void SceneManager::addSceneNode(SceneNode *node) { assert(node != NULL); assert(find(m_nodes.begin(), m_nodes.end(), node) == m_nodes.end()); m_nodes.push_back(node); for (int i = 0; i < (int)node->getAttachedObjs().size(); ++i) { SceneObj* obj = node->getAttachedObjs()[i]; if (isCamera(obj->getObjType())) { assert(m_camera == NULL); m_camera = (Camera*)obj; } else if (isLight(obj->getObjType())) { assert(m_light == NULL); m_light = (Light*)obj; } else if (isEntity(obj->getObjType())) { assert(find(m_entitys.begin(), m_entitys.end(), obj) == m_entitys.end()); m_entitys.push_back((Entity*)obj); } else assert(0); } }