Exemplo n.º 1
0
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);

}
Exemplo n.º 2
0
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);
    }
}
Exemplo n.º 3
0
Ray::Ray(Object * from, Object * to) {

    if (isCamera(from)) pos = C(from)->eye;
    else pos = to->pos();

    dir = to->pos() - pos;

}
Exemplo n.º 4
0
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;
}
Exemplo n.º 5
0
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);
    }
}