void GLObject::serializeMap(FileStream &f){ if( f.isIn() ){ float x,y,z, a, sx, sy, sz; int pl; f >> x >> y >> z >> a >> pl >> sx >> sy >> sz; setPosition(x, y, z); object.setRotateZ(a); object.setSize(sx, sy, sz); setPlayler( pl ); if( getBehavior("unit") ) ((UnitBehavior*)getBehavior("unit"))->setRAngle(a); } else {
bool HTMLMarqueeElement::shouldContinue() { int loopCount = loop(); // By default, slide loops only once. if (loopCount <= 0 && getBehavior() == kSlide) loopCount = 1; if (loopCount <= 0) return true; return m_loopCount < loopCount; }
void TDirectiveHandler::handleExtension(const pp::SourceLocation &loc, const std::string &name, const std::string &behavior) { const char kExtAll[] = "all"; TBehavior behaviorVal = getBehavior(behavior); if (behaviorVal == EBhUndefined) { mDiagnostics.error(loc, "behavior invalid", name.c_str()); return; } if (name == kExtAll) { if (behaviorVal == EBhRequire) { mDiagnostics.error(loc, "extension cannot have 'require' behavior", name.c_str()); } else if (behaviorVal == EBhEnable) { mDiagnostics.error(loc, "extension cannot have 'enable' behavior", name.c_str()); } else { for (TExtensionBehavior::iterator iter = mExtensionBehavior.begin(); iter != mExtensionBehavior.end(); ++iter) iter->second = behaviorVal; } return; } TExtensionBehavior::iterator iter = mExtensionBehavior.find(name); if (iter != mExtensionBehavior.end()) { iter->second = behaviorVal; return; } switch (behaviorVal) { case EBhRequire: mDiagnostics.error(loc, "extension is not supported", name.c_str()); break; case EBhEnable: case EBhWarn: case EBhDisable: mDiagnostics.warning(loc, "extension is not supported", name.c_str()); break; default: UNREACHABLE(); break; } }
void ActionBehavior::execute() { // execute subsequent option or basic behavior if (parameters->set()) getBehavior()->parametersChanged(); if (!getBehavior()->wasActive) getBehavior()->timeWhenActivated = time; getBehavior()->timeOfExecution = time - getBehavior()->timeWhenActivated; getBehavior()->execute(); getBehavior()->isActive = true; }
// new person for group follower void TurnaroundPassenger::newGroupFollower( void ) { MobLogEntry _followerEntry = m_logEntry; TerminalMobElementBehavior* spTerminalBehavior = (TerminalMobElementBehavior *)getBehavior(MobElementBehavior::TerminalBehavior); for( int i=1; i< GetAdminGroupSize(); i++ ) { _followerEntry.incPax(); Person* _pFollower = new TurnaroundPassenger( _followerEntry, getEngine() ); getEngine()->m_simBobileelemList.Register( _pFollower ); ((CGroupLeaderInfo*)m_pGroupInfo)->AddFollower( _pFollower, this ); } }
//CSinglePaxTypeFlow* TurnaroundPassenger::TryToGetPathInProcess( CSubFlow* _pProcess, const ElapsedTime& _curTime) //{ // bool bHaveGate = true; // const ProcessorID* pGate = NULL; // bool bHaveBag = false; // const ProcessorID* pDestID = NULL; // // gate // if( m_nGate < 0) // { // bHaveGate = false; // pGate = NULL; // } // else // { // pGate = GetTerminal()->procList->getProcessor( m_nGate )->getID(); // bHaveGate = pGate ? true : false; // } // // // bag device // bHaveBag = false; // if( m_type.GetTypeIndex() == 0 ) // pax // { // if( this->GetBagsCount() >0 && m_type.isArrival()) // bHaveBag = true; // } // else if( m_type.GetTypeIndex() == 2) // check bag // { // bHaveBag = true; // } // // if( bHaveBag ) // { // int nIndex = m_logMobEntry.getArrFlight(); // Flight* pFlight = getEngine()->m_simFlightSchedule.getItem(nIndex); // const ProcessorID* pDestID = &(pFlight->getBaggageDevice()); // if( pDestID == NULL ) // { // CString szMobType = getPersonErrorMsg(); // kill(_curTime); // throw new ARCNoBaggageDeviceAssignError(szMobType, "", _curTime.printTime()); // } // } // // CSinglePaxTypeFlow* pFlow = NULL; // if( m_nGate == arrivingGate ) // { // // get single flow from PROCESS // try // { // pFlow = _pProcess->GetPathInProcess(m_type,bHaveGate,*pGate,bHaveBag,*pDestID, arrivingType ); // } // catch(ARCError* e) // { // delete e; // } // catch( ARCSimEngineException* sim_exception ) // { // getEngine()->SendSimFormatMessage( sim_exception->getFormatErrorMsg() ); // delete sim_exception; // } // } // else // { // try // { // pFlow = _pProcess->GetPathInProcess(m_type,bHaveGate,*pGate,bHaveBag,*pDestID, departingType ); // } // catch(ARCError* e) // { // delete e; // } // catch( ARCSimEngineException* sim_exception ) // { // getEngine()->SendSimFormatMessage( sim_exception->getFormatErrorMsg() ); // delete sim_exception; // } // } // return pFlow; //} // // // Used to determine if the gate is used as arrival purpose. bool TurnaroundPassenger::CheckAndTurnArrState() { if( direction == ARRIVING ) { m_nGate = departingGate; direction = DEPARTING; TerminalMobElementBehavior* spTerminalBehavior = (TerminalMobElementBehavior *)getBehavior(MobElementBehavior::TerminalBehavior); ++spTerminalBehavior->m_iNumberOfPassedGateProc; return true; } else return false; }
// |point| is in screen coords (pixel) with the origin at the top left corner. bool Node::handleTouch(const BehaviorType& type, const Vector2& point) { LOGD("[Node handleTouch] triggered. Scene node = %s.\n", mName.c_str()); Behavior* behavior = getBehavior(type); if (behavior) { LOGD("[Node handleTouch] Behavior = %lu acts.\n", behavior->getID()); behavior->act(); // Get the coords of the point in a coords with the origin at bottom left. // Vector2 newPoint = point; // int screenH = mSceneMgr->getRenderer()->getScreenHeight(); // newPoint.y = screenH - newPoint.y; return true; } return false; }
HTMLMarqueeElement::AnimationParameters HTMLMarqueeElement::getAnimationParameters() { AnimationParameters parameters; Metrics metrics = getMetrics(); double totalWidth = metrics.marqueeWidth + metrics.contentWidth; double totalHeight = metrics.marqueeHeight + metrics.contentHeight; double innerWidth = metrics.marqueeWidth - metrics.contentWidth; double innerHeight = metrics.marqueeHeight - metrics.contentHeight; switch (getBehavior()) { case kAlternate: switch (getDirection()) { case kRight: parameters.transformBegin = createTransform(innerWidth >= 0 ? 0 : innerWidth); parameters.transformEnd = createTransform(innerWidth >= 0 ? innerWidth : 0); parameters.distance = std::abs(innerWidth); break; case kUp: parameters.transformBegin = createTransform(innerHeight >= 0 ? innerHeight : 0); parameters.transformEnd = createTransform(innerHeight >= 0 ? 0 : innerHeight); parameters.distance = std::abs(innerHeight); break; case kDown: parameters.transformBegin = createTransform(innerHeight >= 0 ? 0 : innerHeight); parameters.transformEnd = createTransform(innerHeight >= 0 ? innerHeight : 0); parameters.distance = std::abs(innerHeight); break; case kLeft: default: parameters.transformBegin = createTransform(innerWidth >= 0 ? innerWidth : 0); parameters.transformEnd = createTransform(innerWidth >= 0 ? 0 : innerWidth); parameters.distance = std::abs(innerWidth); } if (m_loopCount % 2) std::swap(parameters.transformBegin, parameters.transformEnd); break; case kSlide: switch (getDirection()) { case kRight: parameters.transformBegin = createTransform(-metrics.contentWidth); parameters.transformEnd = createTransform(innerWidth); parameters.distance = metrics.marqueeWidth; break; case kUp: parameters.transformBegin = createTransform(metrics.marqueeHeight); parameters.transformEnd = "translateY(0)"; parameters.distance = metrics.marqueeHeight; break; case kDown: parameters.transformBegin = createTransform(-metrics.contentHeight); parameters.transformEnd = createTransform(innerHeight); parameters.distance = metrics.marqueeHeight; break; case kLeft: default: parameters.transformBegin = createTransform(metrics.marqueeWidth); parameters.transformEnd = "translateX(0)"; parameters.distance = metrics.marqueeWidth; } break; case kScroll: default: switch (getDirection()) { case kRight: parameters.transformBegin = createTransform(-metrics.contentWidth); parameters.transformEnd = createTransform(metrics.marqueeWidth); parameters.distance = totalWidth; break; case kUp: parameters.transformBegin = createTransform(metrics.marqueeHeight); parameters.transformEnd = createTransform(-metrics.contentHeight); parameters.distance = totalHeight; break; case kDown: parameters.transformBegin = createTransform(-metrics.contentHeight); parameters.transformEnd = createTransform(metrics.marqueeHeight); parameters.distance = totalHeight; break; case kLeft: default: parameters.transformBegin = createTransform(metrics.marqueeWidth); parameters.transformEnd = createTransform(-metrics.contentWidth); parameters.distance = totalWidth; } break; } return parameters; }
void GLObject::deathEvent(){ if( getBehavior("unit") ) new DeathAnimation( scene, this, getClass()->name ); }
void TDirectiveHandler::handleExtension(const pp::SourceLocation& loc, const std::string& name, const std::string& behavior) { const char kExtAll[] = "all"; TBehavior behaviorVal = getBehavior(behavior); if (behaviorVal == EBhUndefined) { mDiagnostics.writeInfo(pp::Diagnostics::PP_ERROR, loc, "behavior", name, "invalid"); return; } if (name == kExtAll) { if (behaviorVal == EBhRequire) { mDiagnostics.writeInfo(pp::Diagnostics::PP_ERROR, loc, "extension", name, "cannot have 'require' behavior"); } else if (behaviorVal == EBhEnable) { mDiagnostics.writeInfo(pp::Diagnostics::PP_ERROR, loc, "extension", name, "cannot have 'enable' behavior"); } else { for (TExtensionBehavior::iterator iter = mExtensionBehavior.begin(); iter != mExtensionBehavior.end(); ++iter) iter->second = behaviorVal; } return; } TExtensionBehavior::iterator iter = mExtensionBehavior.find(name); if (iter != mExtensionBehavior.end()) { iter->second = behaviorVal; return; } pp::Diagnostics::Severity severity = pp::Diagnostics::PP_ERROR; switch (behaviorVal) { case EBhRequire: severity = pp::Diagnostics::PP_ERROR; break; case EBhEnable: case EBhWarn: case EBhDisable: severity = pp::Diagnostics::PP_WARNING; break; default: UNREACHABLE(); break; } mDiagnostics.writeInfo(severity, loc, "extension", name, "is not supported"); }