void AvatarManager::handleRemovedAvatar(const AvatarSharedPointer& removedAvatar, KillAvatarReason removalReason) { auto avatar = std::static_pointer_cast<OtherAvatar>(removedAvatar); AvatarHashMap::handleRemovedAvatar(avatar, removalReason); avatar->tearDownGrabs(); avatar->die(); queuePhysicsChange(avatar); // remove this avatar's entities from the tree now, if we wait (as we did previously) for this Avatar's destructor // it might not fire until after we create a new instance for the same remote avatar, which creates a race // on the creation of entities for that avatar instance and the deletion of entities for this instance avatar->removeAvatarEntitiesFromTree(); if (removalReason != KillAvatarReason::AvatarDisconnected) { if (removalReason == KillAvatarReason::TheirAvatarEnteredYourBubble) { emit AvatarInputs::getInstance()->avatarEnteredIgnoreRadius(avatar->getSessionUUID()); emit DependencyManager::get<UsersScriptingInterface>()->enteredIgnoreRadius(); } workload::Transaction workloadTransaction; workloadTransaction.remove(avatar->getSpaceIndex()); _space->enqueueTransaction(workloadTransaction); const render::ScenePointer& scene = qApp->getMain3DScene(); render::Transaction transaction; avatar->removeFromScene(avatar, scene, transaction); scene->enqueueTransaction(transaction); } else { // remove from node sets, if present DependencyManager::get<NodeList>()->removeFromIgnoreMuteSets(avatar->getSessionUUID()); DependencyManager::get<UsersScriptingInterface>()->avatarDisconnected(avatar->getSessionUUID()); render::Transaction transaction; auto scene = qApp->getMain3DScene(); avatar->fadeOut(transaction, removalReason); workload::SpacePointer space = _space; transaction.transitionFinishedOperator(avatar->getRenderItemID(), [space, avatar]() { if (avatar->getLastFadeRequested() != render::Transition::Type::USER_LEAVE_DOMAIN) { // The avatar is using another transition besides the fade-out transition, which means it is still in use. // Deleting the avatar now could cause state issues, so abort deletion and show message. qCWarning(interfaceapp) << "An ending fade-out transition wants to delete an avatar, but the avatar is still in use. Avatar deletion has aborted. (avatar ID: " << avatar->getSessionUUID() << ")"; } else { const render::ScenePointer& scene = qApp->getMain3DScene(); render::Transaction transaction; avatar->removeFromScene(avatar, scene, transaction); scene->enqueueTransaction(transaction); workload::Transaction workloadTransaction; workloadTransaction.remove(avatar->getSpaceIndex()); space->enqueueTransaction(workloadTransaction); } }); scene->enqueueTransaction(transaction); } }
/* SceneNode* gateNode; Entity* gateEntity; SceneNode* gateDoorNodes[8]; Entity* gateDoorEntities[8]; bool gateOpen = true; float tVal = 0.0f; float tSpeedOpen = 10.0f; float tSpeedClose = 20.0f; float tSpeed = 0.0f; float tAccel = 2.0f; float gateDelayTimer = 0.0f; float gateDelay = 1.0f; void Vine::updateGate(float elapsed) { if( gateOpen ) { if( tVal + tSpeed*elapsed >= 4.0f ) { tVal = 4.0f; if( gateDelayTimer >= gateDelay ) { gateOpen = false; gateDelayTimer = 0.0f; tSpeed = 0.0f; } else { gateDelayTimer += elapsed; } } else { if( tSpeed+tAccel >= tSpeedOpen ) { tSpeed = tSpeedOpen; } else { tSpeed += tAccel; } tVal += tSpeed*elapsed; } } else { if( tVal - tSpeed*elapsed <= 0.0f ) { tVal = 0.0f; if( gateDelayTimer >= gateDelay ) { gateOpen = true; gateDelayTimer = 0.0f; tSpeed = 0.0f; } else { gateDelayTimer += elapsed; } } else { if( tSpeed+tAccel >= tSpeedClose ) { tSpeed = tSpeedClose; } else { tSpeed += tAccel; } tVal -= tSpeed*elapsed; } } for( int i = 0; i < 8; ++i ) { Vector3 t = Vector3(0,tVal,0); Vector3 r = Vector3(Math::Cos(Degree(45*i))*t.x - Math::Sin(Degree(45*i))*t.y,Math::Sin(Degree(45*i))*t.x + Math::Cos(Degree(45*i))*t.y,0); gateDoorNodes[i]->setPosition(r); } } */ void Vine::loadRunnerShip() { removeFromScene(); entireVine = parentNode->createChildSceneNode("entireVineNode" + Util::toStringInt(vineID)); tip = entireVine->createChildSceneNode("vineTipNode" + Util::toStringInt(vineID)); tipEntity = tip->getCreator()->createEntity("vineTipEntity" + Util::toStringInt(vineID), "Ships/arwing.mesh"); tip->attachObject(tipEntity); tip->scale(radius / 1.5, radius / 1.5, radius / 1.5); tip->yaw(Degree(180.0)); tipEntity->getSubEntity(7)->setMaterialName("Arwing/GlassHull"); tipEntity->getSubEntity(3)->setMaterialName("Arwing/GlassHull"); tipEntity->getSubEntity(2)->setMaterialName("Arwing/EndWing"); tipEntity->getSubEntity(4)->setMaterialName("Arwing/FrontLine"); tipEntity->getSubEntity(0)->setMaterialName("Arwing/EndWing"); tipEntity->getSubEntity(1)->setMaterialName("Arwing/FrontWing"); tipEntity->getSubEntity(5)->setMaterialName("Arwing/FrontWing"); tipEntity->getSubEntity(6)->setMaterialName("Arwing/ThrusterColor"); base = entireVine->createChildSceneNode("vineBaseNode" + Util::toStringInt(vineID)); base->translate(0, 0.0, radius * 2.0); base->yaw(Degree(180.0)); }
void AvatarManager::simulateAvatarFades(float deltaTime) { QVector<AvatarSharedPointer>::iterator fadingIterator = _avatarFades.begin(); const float SHRINK_RATE = 0.9f; const float MIN_FADE_SCALE = MIN_AVATAR_SCALE; render::ScenePointer scene = qApp->getMain3DScene(); render::PendingChanges pendingChanges; while (fadingIterator != _avatarFades.end()) { auto avatar = std::static_pointer_cast<Avatar>(*fadingIterator); avatar->startUpdate(); avatar->setTargetScale(avatar->getUniformScale() * SHRINK_RATE); if (avatar->getTargetScale() <= MIN_FADE_SCALE) { avatar->removeFromScene(*fadingIterator, scene, pendingChanges); // only remove from _avatarFades if we're sure its motionState has been removed from PhysicsEngine if (_motionStatesToRemoveFromPhysics.empty()) { fadingIterator = _avatarFades.erase(fadingIterator); } else { ++fadingIterator; } } else { avatar->simulate(deltaTime); ++fadingIterator; } avatar->endUpdate(); } scene->enqueuePendingChanges(pendingChanges); }
void SFXEmitter::onRemove() { SFX_DELETE( mSource ); removeFromScene(); Parent::onRemove(); }
void Pod::setToGrowth(float t) { if (mtype == POD_BASIC) { if (t <= 0.0) { removeFromScene(); } else entirePod->setPosition(tip); } else if (mtype == POD_FUEL) { head->setScale(Vector3(headRadius / 1.5, t * headRadius / 1.5, headRadius / 1.5)); } else if (mtype == POD_FLOWER) { head->setScale(Vector3(headRadius / 20, t * headRadius / 20, headRadius / 20)); } else { head->setScale(Vector3(0.5, 0.5 * t, 0.5)); //head->setScale(Vector3(0.7, 0.7 * t, 0.7)); } }
void Sun::onRemove() { TimeOfDay::getTimeOfDayUpdateSignal().remove( this, &Sun::_updateTimeOfDay ); removeFromScene(); Parent::onRemove(); }
void SceneObject::setHidden( bool hidden ) { if( hidden != isHidden() ) { // Add/remove the object from the scene. Removing it // will also cause the NetObject to go out of scope since // the container query will not find it anymore. However, // ScopeAlways objects need to be treated separately as we // do next. if( !hidden ) addToScene(); else removeFromScene(); // ScopeAlways objects stay in scope no matter what, i.e. even // if they aren't in the scene query anymore. So, to force ghosts // to go away, we need to clear ScopeAlways while we are hidden. if( hidden && mIsScopeAlways ) clearScopeAlways(); else if( !hidden && mIsScopeAlways ) setScopeAlways(); Parent::setHidden( hidden ); } }
void GroundPlane::onRemove() { SAFE_DELETE( mPhysicsRep ); removeFromScene(); Parent::onRemove(); }
void ZoneItem::signalEndOfAdding() { std::cout << "signal" << std::endl; if (m_state == e_beingAdded) { m_view->setStateAddingItem (this); m_state = e_beingResized; } else { MyItem::signalEndOfAdding(); } // si le rectangle est a l'envers, on le remet a l'endroit if (m_width < 0) { m_width = -m_width; setPos (x() - m_width, y() ); } if (m_height < 0) { m_height = -m_height; setPos (x(), y() - m_height); } int x1 = x(); int y1 = y(); removeFromScene (m_view->scene() ); setItem (addRect (0, 0, m_width, m_height) ); setPos (x1, y1); }
void ProximityMine::onRemove() { scriptOnRemove(); removeFromScene(); Parent::onRemove(); }
void VehicleBlocker::onRemove() { mConvexList->nukeList(); removeFromScene(); Parent::onRemove(); }
void RenderObjectExample::onRemove() { // Remove this object from the scene removeFromScene(); Parent::onRemove(); }
Actor::~Actor() { // Alle möglichen Area-Verknüpfungen entfernen GameEventManager::getSingleton().removeAllAreas(this); // Alle TrackAnimations entfernen AnimationManager::getSingleton().removeAllTrackAnimations(this); detachAllChildren(); if (mParent == NULL) { removeFromScene(); } else { mParent->detach( this ); } if (mActorControlledObject != NULL) { mActorControlledObject->_setActor(0); mActorControlledObject = NULL; } if (mPhysicalThing != NULL) { mPhysicalThing->_setActor(0); mPhysicalThing = NULL; } /// @todo Highlightmaterial entfernen delete mDescription; }
void MetaShapeRenderer::onRemove() { // Remove this object from the scene removeFromScene(); Parent::onRemove(); }
void Pod::loadHazard() { removeFromScene(); float stemLength = base.distance(tip); entirePod = parentNode->createChildSceneNode("entirePodNode" + Util::toStringInt(podID)); Vector3 v = tip - base; // Though the variable names are not symmetric, // Use the stem to be the other obelisk on the other side head = entirePod->createChildSceneNode("headNode" + Util::toStringInt(podID)); stem = entirePod->createChildSceneNode("stemNode" + Util::toStringInt(podID)); headContentEntity = head->getCreator()->createEntity("headEntity" + Util::toStringInt(podID), "Barriers/obelisk.mesh"); Entity* stemContentEntity = stem->getCreator()->createEntity("stemEntity" + Util::toStringInt(podID), "Barriers/obelisk.mesh"); headContentEntity->setMaterialName("General/BarrierMaterial"); stemContentEntity->setMaterialName("General/BarrierMaterial"); head->attachObject(headContentEntity); head->setOrientation(globals.tunnelReferenceUpward.getRotationTo(v)); head->setPosition(base); head->translate(Vector3(-3.5, 0.0, 0.0), Ogre::Node::TS_LOCAL); head->yaw(Degree(180.0)); head->roll(Degree(5.0)); stem->attachObject(stemContentEntity); stem->setOrientation(globals.tunnelReferenceUpward.getRotationTo(v)); stem->setPosition(base); stem->translate(Vector3(3.5, 0.0, 0.0), Ogre::Node::TS_LOCAL); stem->roll(Degree(5.0)); hazardID = podID; setToGrowth(0.0); }
void Board::clearPieces() { if (playerGoesFirst == 1) playerGoesFirst = currentPlayer = 2; else playerGoesFirst = currentPlayer = 1; gameResultText->hide(); /*for (int i=0; i<animations.size(); i++) { delete animations[i]; } animations.clear();*/ clearAnimations = new QParallelAnimationGroup(); QPropertyAnimation* animation; for (int i=0; i<pieces.size(); i++) { animation = new QPropertyAnimation(pieces[i], "pos"); animation->setDuration(1000); animation->setStartValue(QPointF(pieces[i]->x(), pieces[i]->y())); animation->setEndValue(QPointF(pieces[i]->x(), this->originalHeight)); animation->setEasingCurve(QEasingCurve::InQuad); connect(animation,SIGNAL(finished()),animation->targetObject(),SLOT(removeFromScene())); clearAnimations->addAnimation(animation); } clearAnimations->start(); currentPiece = new Piece(currentPlayer, this); }
void Entity::addToScene(Ogre::SceneNode *newParent) { if (newParent == NULL) { newParent = mScene->getSceneManager()->getRootSceneNode(); } removeFromScene(); newParent->addChild(mSceneNode); setStatic(false); // May get set to true after the next frame has drawn. }
void TimeOfDay::onRemove() { if ( isClientObject() ) NetConnection::smGhostAlwaysDone.remove( this, &TimeOfDay::_onGhostAlwaysDone ); removeFromScene(); Parent::onRemove(); }
void AvatarManager::handleRemovedAvatar(const AvatarSharedPointer& removedAvatar, KillAvatarReason removalReason) { auto avatar = std::static_pointer_cast<OtherAvatar>(removedAvatar); AvatarHashMap::handleRemovedAvatar(avatar, removalReason); avatar->tearDownGrabs(); avatar->die(); queuePhysicsChange(avatar); // remove this avatar's entities from the tree now, if we wait (as we did previously) for this Avatar's destructor // it might not fire until after we create a new instance for the same remote avatar, which creates a race // on the creation of entities for that avatar instance and the deletion of entities for this instance avatar->removeAvatarEntitiesFromTree(); if (removalReason == KillAvatarReason::TheirAvatarEnteredYourBubble) { emit AvatarInputs::getInstance()->avatarEnteredIgnoreRadius(avatar->getSessionUUID()); emit DependencyManager::get<UsersScriptingInterface>()->enteredIgnoreRadius(); workload::Transaction workloadTransaction; workloadTransaction.remove(avatar->getSpaceIndex()); _space->enqueueTransaction(workloadTransaction); const render::ScenePointer& scene = qApp->getMain3DScene(); render::Transaction transaction; avatar->removeFromScene(avatar, scene, transaction); scene->enqueueTransaction(transaction); } else if (removalReason == KillAvatarReason::AvatarDisconnected) { // remove from node sets, if present DependencyManager::get<NodeList>()->removeFromIgnoreMuteSets(avatar->getSessionUUID()); DependencyManager::get<UsersScriptingInterface>()->avatarDisconnected(avatar->getSessionUUID()); render::Transaction transaction; auto scene = qApp->getMain3DScene(); avatar->fadeOut(transaction, removalReason); workload::SpacePointer space = _space; transaction.transitionFinishedOperator(avatar->getRenderItemID(), [space, avatar]() { const render::ScenePointer& scene = qApp->getMain3DScene(); render::Transaction transaction; avatar->removeFromScene(avatar, scene, transaction); scene->enqueueTransaction(transaction); workload::Transaction workloadTransaction; workloadTransaction.remove(avatar->getSpaceIndex()); space->enqueueTransaction(workloadTransaction); }); scene->enqueueTransaction(transaction); } }
void VolumetricFog::onRemove() { removeFromScene(); VFRTM->DecFogObjects(); Parent::onRemove(); }
void MissionMarker::onEditorDisable() { if(mAddedToScene) { removeFromScene(); mAddedToScene = false; } }
void Trigger::onRemove() { onRemove_callback( getId() ); mConvexList->nukeList(); removeFromScene(); Parent::onRemove(); }
void ZoneItem::changeCoordinates (int x, int y, int x2, int y2) { m_width = x2 - this->x(); m_height = y2 - this->y(); removeFromScene (m_view->scene() ); setItem (addRect (0, 0, m_width, m_height) ); setPos (x, y); }
void ForestWindEmitter::onEditorDisable() { // Remove us from the scene. if ( mAddedToScene ) { removeFromScene(); mAddedToScene = false; } }
void NavMesh::onRemove() { removeFromScene(); if(mEventManager) mEventManager->deleteObject(); Parent::onRemove(); }
void StaticShape::onRemove() { //.logicking >> SAFE_DELETE( mPhysicsRep ); //.logicking << scriptOnRemove(); removeFromScene(); Parent::onRemove(); }
void ScatterSky::onRemove() { removeFromScene(); if ( isClientObject() ) TimeOfDay::getTimeOfDayUpdateSignal().remove( this, &ScatterSky::_updateTimeOfDay ); Parent::onRemove(); }
void FlyingVehicle::onRemove() { SFX_DELETE( mJetSound ); SFX_DELETE( mEngineSound ); scriptOnRemove(); removeFromScene(); Parent::onRemove(); }
void DecalRoad::onRemove() { SAFE_DELETE( mMatInst ); TerrainBlock::smUpdateSignal.remove( this, &DecalRoad::_onTerrainChanged ); removeFromScene(); Parent::onRemove(); }
void ConvexShape::onRemove() { removeFromScene(); mConvexList->nukeList(); SAFE_DELETE( mPhysicsRep ); Parent::onRemove(); }