// __gc for MotionState
static int destroyMotionState(lua_State* L)
{
  MotionState* mstate = 0;
  checkUserData(L, "Lusion.MotionState", mstate);
  mstate->release();
  return 0;
}
示例#2
0
// __gc
static int destroyMatrix2(lua_State* L)
{
  Matrix2* matrix = 0;
  checkUserData(L, "Lusion.Matrix2", matrix);
  delete matrix;
  return 0;
}
示例#3
0
void SS5Player::updateFrame(float dt)
{
	double nextTime = m_nowTime + dt;

	int currentFrame = getCurrentFrame();
	int nextFrame = nextTime * getAnimeFPS();
		
	int seekCount = nextFrame - currentFrame;
	//順再生
	for(int i=0; i < seekCount; ++i){
		//通過フレームのイベントのチェックをする
		int frame = currentFrame + i;
		frame = ss::wrap<int>(frame, 0, getMaxFrame());	//範囲制限

		checkUserData(frame);		//ユーザーデータチェック
		checkEvent(frame);			//イベントチェック
		/*memo:最終フレームなどで止めたいときはここでbreakする必要がある。今はひとまずこのまま*/
	}

	//逆順再生
	for(int i=0; i > seekCount; --i){
		//通過フレームのイベントのチェックをする
		int frame = currentFrame + i;
		frame = ss::wrap<int>(frame, 0, getMaxFrame());	//範囲制限

		checkUserData(frame);		//ユーザーデータチェック
		checkEvent(frame);			//イベントチェック
		/*memo:最終フレームなどで止めたいときはここでbreakする必要がある。今はひとまずこのまま*/
	}
		

	double maxTime = static_cast<double>(getMaxFrame()) / getAnimeFPS();	//下方向に誤差る分には問題ないはず
	m_nowTime = ss::fwrap<double>(nextTime, 0, maxTime);		//範囲内に時間を収める
		
	
	//アニメーションをこのフレームに合わせる
	setFrame(getCurrentFrame());
}
示例#4
0
void SS5Player::play(const AnimeRef* animeRef, int startFrameNo)
{
	SS_ASSERT(animeRef);
	if (m_currentAnimeRef != animeRef){
		m_currentAnimeRef = animeRef;
		
		allocParts(animeRef->m_numParts);
		setPartsParentage();
	}

	setCurrentFrame(startFrameNo);
	setFrame(startFrameNo);
	
	//play実行時に最初のフレームのユーザーデータを確認する
	checkUserData(startFrameNo);
	checkEvent(startFrameNo);
}
示例#5
0
	void PanelUserData::update(MyGUI::Widget* _currentWidget)
	{
		mCurrentWidget = _currentWidget;
		if (mCurrentWidget == nullptr)
			return;

		WidgetContainer* widgetContainer = EditorWidgets::getInstance().find(_currentWidget);

		mMultilist->removeAllItems();
		for (MyGUI::VectorStringPairs::iterator iterProperty = widgetContainer->mUserString.begin(); iterProperty != widgetContainer->mUserString.end(); ++iterProperty)
		{
			if (checkUserData(widgetContainer, (*iterProperty).first))
			{
				mMultilist->addItem(iterProperty->first);
				mMultilist->setSubItemNameAt(1, mMultilist->getItemCount() - 1, iterProperty->second);
			}
		}
	}
示例#6
0
  void PanelUserData::update(MyGUI::Widget* _currentWidget)
  {
    mCurrentWidget = _currentWidget;
    if (mCurrentWidget == nullptr)
      return;

    mMultilist->removeAllItems();

    WidgetContainer* widgetContainer = EditorWidgets::getInstance().find(_currentWidget);
    WidgetContainer::UserDataEnumerator userData = widgetContainer->getUserDataEnumerator();
    while (userData.next())
    {
      if (checkUserData(widgetContainer, userData.current().first))
      {
        mMultilist->addItem(userData.current().first);
        mMultilist->setSubItemNameAt(1, mMultilist->getItemCount() - 1, MyGUI::TextIterator::toTagsString(userData.current().second));
      }
    }
  }