示例#1
0
	NetObject::NetObject(ZCom_Control* control, IrrlichtDevice* dev)
		: m_deleteme(false)
		, m_sceneNode(NULL)
		, m_device(dev)
		, m_meshScale(1,1,1)
	{
		m_zcomNode.reset(new ZCom_Node());
		m_zcomNode->setUserData(this);

		// BEGIN REPLICATION SETUP
		m_zcomNode->beginReplicationSetup(1);
			m_zcomNode -> addReplicator(
				new ObjectReplicator(
					new ZCom_ReplicatorSetup(ZCOM_REPFLAG_UNRELIABLE|ZCOM_REPFLAG_MOSTRECENT|ZCOM_REPFLAG_SETUPAUTODELETE, ZCOM_REPRULE_AUTH_2_ALL)
				, this)
			, true);
		m_zcomNode->endReplicationSetup();
		// END REPLICATION SETUP

		m_zcomNode -> registerNodeDynamic(Sarona::TypeRegistry::m_objectId, control);
		m_zcomNode -> setEventInterceptor(this);

		reloadNode();

		// the node is first shown after the first status update packet
		// which shows up pretty soon now that we've notified the endpoint of obj creation
		m_sceneNode->setVisible(false);
	}
示例#2
0
void NodeEditorWindows::attachProject(GPNodeProject *project)
{
    /*if(_project)
        disconnect(_project);*/

    _project = project;
    _project->setNodeEditorWindow(this);

    connect(_project, SIGNAL(nodeChanged(ModelNode *)), this, SLOT(reloadNode()));
    connect(_project, SIGNAL(nodePathChanged(QString)), this, SLOT(reloadNodePath()));

    connect(_blocksView, SIGNAL(blockSelected(QString)), _camExplorerWidget, SLOT(selectBlock(QString)));
    connect(_camExplorerWidget, SIGNAL(blockSelected(QString)), _blocksView, SLOT(selectBlock(QString)));
    connect(_blocksView, SIGNAL(blockSelected(QString)), this, SLOT(showCamExplorer()));

    connect(_blocksView, SIGNAL(blockDetailsRequest(QString)), this, SLOT(showBlockDetails(QString)));

    // attach project to editors and viewers
    _camExplorerWidget->attachProject(_project);
    _viewerExplorerWidget->attachProject(_project);
    _blocksView->attachProject(_project);
    _compileLog->setProject(_project);
    _libTreeView->attachProject(_project);

    if(project->node())
    {
        reloadNode();
        reloadNodePath();
    }
}
示例#3
0
	bool NetObject::recUserEvent(ZCom_Node *_node, ZCom_ConnID _from,
					eZCom_NodeRole _remoterole, ZCom_BitStream &_data,
					zU32 _estimated_time_sent)
	{
		// Received event from remote node
		unsigned int Id = _data.getInt(16);

		if(Id == Protocol::NodeStateUpdate::Id)
		{
			Protocol::NodeStateUpdate state;
			state.read(_data);

			bool dirty = false;

			if(m_mesh != state.mesh)
			{
				dirty = true;
				m_mesh = state.mesh;
			}
			if(m_texture != state.texture)
			{
				dirty = true;
				m_texture = state.texture;
			}
			core::vector3df scale(
				state.mesh_scale.x(),
				state.mesh_scale.y(),
				state.mesh_scale.z()
			);
			if(m_meshScale.getDistanceFromSQ(scale)>0.0001) // TODO: compare with epsilon
			{
				dirty = true;
				m_meshScale = scale;
			}
//			std::cout << "Updated: " << m_texture << ", " << m_mesh << ", " << m_meshScale << std::endl;

			if(dirty)
				reloadNode();
		}
		else
		{
			std::cerr << "FATAL: Unhandled node message with id: " << Id << std::endl;
		}

		return false;
	}