Example #1
0
bool moveForDinamics(MySpriteDinamics & dinamicElement, MySpriteStatics & staticElement, GameData & gData, const std::string &staticKey, float time) {

	// -----------------------------реализация анимации-------------------------------------------
	dinamicElement.frameChangeTime += (sf::microseconds((sf::Int64)time));
	sf::Time realTPF = staticElement.baseTPF / dinamicElement.mSprite.speedKoof;
	if (dinamicElement.frameChangeTime >= realTPF) {
		int frameInc = (int)(dinamicElement.frameChangeTime / realTPF);
		dinamicElement.frameCurrent += frameInc;
		if (staticElement.isCycleFrames == false && dinamicElement.frameCurrent >= staticElement.frameCount) {
			return true;
		}
		dinamicElement.frameCurrent = dinamicElement.frameCurrent % staticElement.frameCount;
		dinamicElement.frameChangeTime -= sf::microseconds(frameInc * realTPF.asMicroseconds());
	}
	//---------------------------------------движение объекта-------------------------------------
	dinamicElement.sprite.setTextureRect(sf::IntRect(staticElement.frameSize.width * (dinamicElement.frameCurrent + 1), 0, -staticElement.frameSize.width, staticElement.frameSize.height));
	float nextX = dinamicElement.sprite.getPosition().x + dinamicElement.mSprite.signMoveHorizont * staticElement.baseSpeedPx * dinamicElement.mSprite.speedKoof * time;
	float nextY = dinamicElement.sprite.getPosition().y + dinamicElement.mSprite.signMoveVertical * staticElement.baseSpeedPx * dinamicElement.mSprite.speedKoof * time;

	if ((nextX >= 0 && nextX < gData.window.getSize().x - staticElement.frameSize.width && nextY >= 0 && nextY < gData.window.getSize().y - staticElement.frameSize.height) || staticElement.isFlyOutOfScreen) {
		dinamicElement.sprite.setPosition(nextX, nextY);
	} else {
		dinamicElement.mSprite.signMoveHorizont = 0;
		dinamicElement.mSprite.signMoveVertical = 0;
	}
	if (dinamicElement.sprite.getPosition().x < -staticElement.frameSize.width || dinamicElement.sprite.getPosition().x > gData.window.getSize().x) {
		return true;
	}
	//-----------------------------------Взаимодействие объектов---------------------------------
	if (collisionObject(gData, dinamicElement, staticKey)) {
		return true;
	}
	//--------------------------------------------------------------------------------------------
	return false;
}
Example #2
0
void BulletDS::addCollisionShape(SP::btCollisionShape shape,
                                 SP::SiconosVector pos,
                                 SP::SiconosVector ori,
                                 int group)
{
  SP::btCollisionObject collisionObject(new btCollisionObject());
  collisionObject->setUserPointer(this);
  collisionObject->setCollisionFlags(collisionObject->getCollisionFlags()|
                                     btCollisionObject::CF_KINEMATIC_OBJECT);
  collisionObject->setCollisionShape(&*shape);

  addCollisionObject(collisionObject, pos, ori, group);
}