AnimationTrackController::AnimationTrackController(AnimationTrackObject *animationTrackObject , ISceneObject *trackObject) : m_speed(1.0f) , m_paused(true) , m_animationTrackObject(animationTrackObject) , m_trackObject(trackObject) , m_animation(0) , m_animationTrack(0) , m_animationState(0) , m_sceneMgr(0) , m_startTime(0.0f) , m_endTime(0.0f) , m_needRebuild(true) , m_loop(false) , m_length(0.0f) , m_interpolationMode(AnimationTrackObject::IM_LINEAR) , m_rotationInterpolationMode(AnimationTrackObject::RIM_LINEAR) { m_loop = m_animationTrackObject->getLoop(); m_interpolationMode = m_animationTrackObject->getInterpolationMode(); m_rotationInterpolationMode = m_animationTrackObject->getRotationInterpolationMode(); m_sceneMgr = m_animationTrackObject->getScene()->getOgreSceneManager(); Root::getSingleton().addFrameListener(this); // 一开始就重建所有 _rebuild(); }
Graph::Graph(int n, double p) { int i = 0, j = 0, r = 0, m = 0; // Threshold for edge existency double q = p * RAND_MAX; srand(time(NULL)); //std::cout << "Existence rate : " << q / RAND_MAX * 100 << "%\n"; // Build the edges for (i = 1; i <= n; i++) { for(j = i + 1; j <= n; j++) { r = rand(); if (r <= q) { ++m; _edges[i].push_back(j); _edges[j].push_back(i); } } } // Create the priority list _rebuild(); _nb_nodes = n; _nb_edges = m; _avg = (double) m / n; }
void OSDSelector::_updateItemsSize(void) { _initialSize.resize(_items.size()); for(size_t i = _items.size(); i--;) { float itemRatio = _items[i]->getRatio(); unsigned int width, height; if(itemRatio == 0.0) { _items[i]->getSize(Renderer3D::nullRef(), width, height); itemRatio = (float)width / (float)height; if(width > _itemMaxWidth) { width = _itemMaxWidth; height = (unsigned int)(width / itemRatio); } if(height > _itemMaxHeight) { height = _itemMaxHeight; width = (unsigned int)(height * itemRatio); } } else { width = _itemMaxWidth; height = _itemMaxHeight; } _items[i]->setSize(width, height); _items[i]->setDepth(0.0); _initialSize[i] = make_pair(width, height); } _rebuild(); }
void OSDSelector::_timeOutCB(const Window3D::TimeOutEvent& evt) { if(evt.timeOut != _timeOut) { return; } int sgn = -1; if(_cmd.front()) { sgn = 1; } _rotationDt += sgn * M_2PI / _timeOutDelay; if(fabs(_rotationDt) > M_2PI / (float)_items.size()) { _rotationDt = 0.0; _items[_zoomedItem]->_highlight(false); _zoomedItem = _zoomedItem - sgn; if(_zoomedItem == (int)_items.size()) _zoomedItem = 0; if(_zoomedItem < 0) _zoomedItem = _items.size() - 1; _cmd.pop(); _items[_zoomedItem]->_highlight(true); } if(_cmd.empty()) { _window->cancelTimeOut(_timeOut); _timeOut = 0; if(_mustHide) { _reallyRemoveRenderer(); } } else { _timeOut = _window->postTimeOut(_timeOutDelay); } _rebuild(); }
COpenGLRenderTarget::COpenGLRenderTarget(const core::dimension2di &size, img::E_COLOR_FORMAT colorFormat, img::E_COLOR_FORMAT depthFormat) : CNullRenderTarget(size, colorFormat, depthFormat), m_FBO(0), m_ColorAttachmentsBuilded(0) { _rebuild(); }
int Graph::max() { if (_changed) { _rebuild(); } return _max; }
int Graph::id() { if (_changed) { _rebuild(); } return _id; }
CD3D9RenderTarget::CD3D9RenderTarget(const core::dimension2di &size, img::E_COLOR_FORMAT colorFormat, img::E_COLOR_FORMAT depthFormat) : CNullRenderTarget(size, colorFormat, depthFormat), m_D3DDriver((CD3D9Driver*)VIDEO_DRIVER_PTR), m_D3DDepthStencilSurface(0) { memset(m_D3DRenderTargetSurface, 0, sizeof(m_D3DRenderTargetSurface)); _rebuild(); }
COpenGLRenderTarget::COpenGLRenderTarget( ITexture *colorTexture, ITexture *depthTexture) : CNullRenderTarget(colorTexture, depthTexture), m_FBO(0), m_ColorAttachmentsBuilded(0) { if (colorTexture) _rebuild(); else m_OK = true; }
CD3D9RenderTarget::CD3D9RenderTarget( ITexture *colorTexture, ITexture *depthTexture) : CNullRenderTarget(colorTexture, depthTexture), m_D3DDriver((CD3D9Driver*)VIDEO_DRIVER_PTR), m_D3DDepthStencilSurface(0) { memset(m_D3DRenderTargetSurface, 0, sizeof(m_D3DRenderTargetSurface)); if (colorTexture) _rebuild(); else m_OK = true; }
void Level::start(LevelConfig* config) { if (_config != config) { if (_config != nullptr) { _config->release(); } _config = config; _config->retain(); _rebuild(); } _reset(); }
// 每帧更新动画 bool AnimationTrackController::frameStarted(const FrameEvent& evt) { // 看是否需要重建所有 _rebuild(); // 如果暂停或未初始化,则不播放 if(m_paused || m_animationState == 0 || !m_animationState->getEnabled()) { return true; } // 步进时间 m_animationState->addTime(evt.timeSinceLastFrame * m_speed); // 如果超过结束播放时间,就设置到最后去 if(m_animationState->getTimePosition() >= m_endTime) { if(!m_loop) { m_animationState->setTimePosition(m_endTime); m_animationState->setEnabled(false); } else { m_animationState->setTimePosition(m_startTime); } } // 倒叙播放会出现这种情况 else if(m_animationState->getTimePosition() <= m_startTime) { if(!m_loop) { m_animationState->setTimePosition(m_startTime); m_animationState->setEnabled(false); } else { m_animationState->setTimePosition(m_endTime); } } return true; }
void OSDSelector::removeItem(ArRef<OSDSelectorItem> item) { for(int i = _items.size(); i--;) { if(_items[i] == item) { StlVectorFastErase(_items, i); /* if(_items.empty()) { _selectedItem = 0; } else { if(_selectedItem == i) { selectItem(_items[0]); } } */ _selectedItem = 0; if(_window) { _window->removeOSD(item); _rebuild(); } return; } } }
void OSDSelector::setPosition(int x, int y) { OSD::setPosition(x, y); _rebuild(); }
void OSDSelector::setSelectedItemZoomFactor(float zoom) { _zoomFactor = zoom; _rebuild(); }