本文整理汇总了C++中SpaceObjectReference::space方法的典型用法代码示例。如果您正苦于以下问题:C++ SpaceObjectReference::space方法的具体用法?C++ SpaceObjectReference::space怎么用?C++ SpaceObjectReference::space使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类SpaceObjectReference
的用法示例。
在下文中一共展示了SpaceObjectReference::space方法的13个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: getProxyObject
ProxyObjectPtr ProxyManager::getProxyObject(const SpaceObjectReference &id) const {
PROXYMAN_SERIALIZED();
assert(id.space() == mID.space());
ProxyMap::const_iterator iter = mProxyMap.find(id.object());
if (iter != mProxyMap.end())
return (*iter).second.ptr;
return ProxyObjectPtr();
}
示例2: wrappedStreamCreatedCallback
void ObjectHost::wrappedStreamCreatedCallback(HostedObjectWPtr ho_weak, const SpaceObjectReference& sporef, SessionManager::ConnectionEvent after, StreamCreatedCallback cb) {
if (mQueryProcessor != NULL) {
HostedObjectPtr ho(ho_weak);
if (ho) {
SSTStreamPtr strm = getSpaceStream(sporef.space(), sporef.object());
// This had better be OK here since we're just getting the callback
assert(strm);
mQueryProcessor->presenceConnectedStream(ho, sporef, strm);
}
}
cb(sporef, after);
}
示例3: invokeOrphanUpdates
void invokeOrphanUpdates(ObjectHost* oh, const QuerierIDType& observer, const SpaceObjectReference& proximateID, ListenerType* listener) {
ObjectUpdateMap::iterator it = mUpdates.find(proximateID);
if (it == mUpdates.end()) return;
const UpdateInfoList& info_list = it->second;
for(UpdateInfoList::const_iterator info_it = info_list.begin(); info_it != info_list.end(); info_it++) {
if ((*info_it)->value != NULL) {
LocProtocolLocUpdate llu( *((*info_it)->value), oh, proximateID.space() );
listener->onOrphanLocUpdate( observer, llu );
}
else if ((*info_it)->opd != NULL) {
PresencePropertiesLocUpdate plu( (*info_it)->object.object(), *((*info_it)->opd) );
listener->onOrphanLocUpdate( observer, plu );
}
}
// Once we've notified of these we can get rid of them -- if they
// need the info again they should re-register it with
// addUpdateFromExisting before cleaning up the object.
mUpdates.erase(it);
}
示例4: unregisterObjectQuery
void ManualObjectQueryProcessor::unregisterObjectQuery(const SpaceObjectReference& sporef) {
// Get query info
ObjectStateMap::iterator it = mObjectState.find(sporef);
assert(it != mObjectState.end());
ObjectState& state = it->second;
HostedObjectPtr ho = state.who.lock();
// unregisterObjectQuery can happen due to disconnection where we
// want to preserve the query info, so we can't assert an empty
// query like we assert a non-empty one in registerOrUpdateObjectQuery
assert( ho && state.node != OHDP::NodeID::null() );
// Get the appropriate handler
QueryHandlerMap::iterator handler_it = mObjectQueryHandlers.find(OHDP::SpaceNodeID(sporef.space(), state.node));
assert(handler_it != mObjectQueryHandlers.end());
ObjectQueryHandlerPtr handler = handler_it->second;
// And unregister
handler->removeQuery(ho, sporef);
state.registered = false;
}
示例5: mSpace
Endpoint::Endpoint(const SpaceObjectReference& space_obj, const PortID& port)
: mSpace(space_obj.space()),
mObject(space_obj.object()),
mPort(port)
{
}
示例6: createObject
ProxyObjectPtr ProxyManager::createObject(
const SpaceObjectReference& id,
const TimedMotionVector3f& tmv, const TimedMotionQuaternion& tmq, const AggregateBoundingInfo& bs,
const Transfer::URI& meshuri, const String& phy, bool isAggregate, uint64 seqNo
)
{
PROXYMAN_SERIALIZED();
ProxyObjectPtr newObj;
// Try to reuse an existing object, even if we only have a valid
// weak pointer to it.
assert(id.space() == mID.space());
ProxyMap::iterator iter = mProxyMap.find(id.object());
if (iter != mProxyMap.end()) {
// From strong ref
newObj = iter->second.ptr;
if (!newObj) {
// From weak ref
newObj = iter->second.wptr.lock();
// And either update the strong ref or clear out the entry
// if its not even valid anymore.
if (newObj)
iter->second.ptr = newObj;
else
mProxyMap.erase(iter);
}
}
// If we couldn't get a valid existing copy, create and insert a
// new one.
if (!newObj) {
newObj = ProxyObject::construct(getSharedPtr(), id);
std::pair<ProxyMap::iterator, bool> result = mProxyMap.insert(
ProxyMap::value_type(
newObj->getObjectReference().object(),
ProxyData(newObj)
)
);
iter = result.first;
}
assert(newObj);
assert(newObj->getObjectReference() == id);
assert(newObj->getOwner().get() == this);
// This makes things simpler elsewhere: For new objects, we ensure
// all the values are set properly so that when the notification
// happens below, the proxy passed to listeners (for
// onCreateProxy) will be completely setup, making it valid for
// use. We don't need this for old ProxyObjects since they were
// already initialized. The seqNo of 0 only updates something if it wasn't
// set yet.
newObj->setLocation(tmv, 0);
newObj->setOrientation(tmq, 0);
newObj->setBounds(bs, 0);
if(meshuri)
newObj->setMesh(meshuri, 0);
if(phy.size() > 0)
newObj->setPhysics(phy, 0);
newObj->setIsAggregate(isAggregate, 0);
// Notification of the proxy will have already occured, but
// updates via, e.g., PositionListener or MeshListener, will go
// out here, so the potentially invalid initial data automatically
// filled when the object was created by createObject() shouldn't
// matter.
newObj->setLocation(tmv, seqNo);
newObj->setOrientation(tmq, seqNo);
newObj->setBounds(bs, seqNo);
if(meshuri)
newObj->setMesh(meshuri, seqNo);
if(phy.size() > 0)
newObj->setPhysics(phy, seqNo);
newObj->setIsAggregate(isAggregate, seqNo);
// Notification has to happen either way
notify(&ProxyCreationListener::onCreateProxy, newObj);
return newObj;
}
示例7: registerOrUpdateObjectQuery
void ManualObjectQueryProcessor::registerOrUpdateObjectQuery(const SpaceObjectReference& sporef) {
// Get query info
ObjectStateMap::iterator it = mObjectState.find(sporef);
assert(it != mObjectState.end());
ObjectState& state = it->second;
HostedObjectPtr ho = state.who.lock();
assert( ho && !state.query.empty() && state.node != OHDP::NodeID::null() );
// Get the appropriate handler
QueryHandlerMap::iterator handler_it = mObjectQueryHandlers.find(OHDP::SpaceNodeID(sporef.space(), state.node));
assert(handler_it != mObjectQueryHandlers.end());
ObjectQueryHandlerPtr handler = handler_it->second;
// And register
handler->updateQuery(ho, sporef, state.query);
state.registered = true;
}
示例8: populateSpaceObjRef
void PerPresenceData::populateSpaceObjRef(const SpaceObjectReference& sporef)
{
validSpaceObjRef = true;
space = sporef.space();
object = sporef.object();
}
示例9: handleObjectConnected
void ObjectHost::handleObjectConnected(const SpaceObjectReference& sporef_objid, ServerID server) {
ObjectNodeSessionProvider::notify(&ObjectNodeSessionListener::onObjectNodeSession, sporef_objid.space(), sporef_objid.object(), OHDP::NodeID(server));
}
示例10: space
bool operator==(const SpaceObjectReference& rhs) const {
return space()==rhs.space()&&object()==rhs.object();
}
示例11: handleObjectMigrated
void ObjectHost::handleObjectMigrated(const SpaceObjectReference& sporef_objid, ServerID from, ServerID to) {
ObjectNodeSessionProvider::notify(&ObjectNodeSessionListener::onObjectNodeSession, sporef_objid.space(), sporef_objid.object(), OHDP::NodeID(to));
}
示例12: initialize
/** Initializes the proxy. This performs initalizations that
* call virtual methods that cannot be called during construction.
* This should *always* be called immediately after construction.
*/
void initialize(Sirikata::Graphics::OgreSystem *sys, const SpaceObjectReference& ref) {
mSpace=ref.space();
mEntity = sys->getEntity(ref);
}
示例13: handleObjectDisconnected
void ObjectHost::handleObjectDisconnected(const SpaceObjectReference& sporef_objid, Disconnect::Code) {
ObjectNodeSessionProvider::notify(&ObjectNodeSessionListener::onObjectNodeSession, sporef_objid.space(), sporef_objid.object(), OHDP::NodeID::null());
}