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();
	}
Ejemplo n.º 2
0
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;
}
Ejemplo n.º 3
0
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();
}
Ejemplo n.º 4
0
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();
}
Ejemplo n.º 5
0
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();
}
Ejemplo n.º 6
0
int Graph::max()
{
	if (_changed) {
		_rebuild();
	}
	
	return _max;
}
Ejemplo n.º 7
0
int Graph::id()
{
	if (_changed) {
		_rebuild();
	}
	
	return _id;
}
Ejemplo n.º 8
0
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();
}
Ejemplo n.º 9
0
COpenGLRenderTarget::COpenGLRenderTarget(
	ITexture *colorTexture, ITexture *depthTexture)
	: CNullRenderTarget(colorTexture, depthTexture),
m_FBO(0), m_ColorAttachmentsBuilded(0)
{
	if (colorTexture)
		_rebuild();
	else
		m_OK = true;
}
Ejemplo n.º 10
0
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;
}
Ejemplo n.º 11
0
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;
	}
Ejemplo n.º 13
0
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;
    }
  }
}
Ejemplo n.º 14
0
void
OSDSelector::setPosition(int x,
			 int y) {
  OSD::setPosition(x, y);
  _rebuild();
}
Ejemplo n.º 15
0
void
OSDSelector::setSelectedItemZoomFactor(float zoom) {
  _zoomFactor = zoom;
  _rebuild();
}