GVectBase<GReal, 2> GAnimTRSNode2D::Scale(const GTimeValue TimePos, const GSpaceSystem Space, GTimeInterval& ValidInterval) const {

	GProperty *tmpProp = Property("transform");

	if (!tmpProp)
		return GVector2(1, 1);

	tmpProp = tmpProp->Property("scale");
	G_ASSERT(tmpProp);
	GTimeInterval tmpValid = G_FOREVER_TIMEINTERVAL;
	GKeyValue xValue, yValue;

	// extract scale
	GProperty *xProp = tmpProp->Property("x");
	GProperty *yProp = tmpProp->Property("y");
	G_ASSERT(xProp != NULL);
	G_ASSERT(yProp != NULL);
	GError xErr = xProp->Value(xValue, tmpValid, TimePos, G_ABSOLUTE_VALUE);
	GError yErr = yProp->Value(yValue, tmpValid, TimePos, G_ABSOLUTE_VALUE);
	if (xErr != G_NO_ERROR || yErr != G_NO_ERROR)
		return GVector2(1, 1);

	ValidInterval = tmpValid;
	// take care of father
	if (gFather && Space == G_WORLD_SPACE) {
		GVectBase<GReal, 2> retValue(xValue.RealValue(), yValue.RealValue());
		retValue += gFather->Scale(TimePos, G_WORLD_SPACE, tmpValid);
		ValidInterval &= tmpValid;
		return retValue;
	}
	return GVectBase<GReal, 2>(xValue.RealValue(), yValue.RealValue());
}
예제 #2
0
파일: ShadowBeast.cpp 프로젝트: 7ung/NMGAME
void ShadowBeast::ShadowMouth::shoot()
{
	BulletManager::insertBullet(new BeastBullet(this->getPosition() + GVector2(- 32, -32), D3DXToDegree( M_PI + M_PI_2 / 3)));
	BulletManager::insertBullet(new BeastBullet(this->getPosition() + GVector2(0, -32), D3DXToDegree(M_PI + 0)));
	BulletManager::insertBullet(new BeastBullet(this->getPosition() + GVector2(+ 32, -32), D3DXToDegree(M_PI - M_PI_2 / 3)));
	_flagCanShoot = false;
}
예제 #3
0
bool SelectionScene::init()
{
	_gap = 64;
	_maxIndex = 1;

	_stage1 = new TextSprite(eID::FONTFULL, "STAGE 1: JUNGLE", GVector2(WINDOW_WIDTH / 4, WINDOW_HEIGHT / 4));
	_stage1->init();
	_stage1->setScale(SCALE_FACTOR);
	_stage1->setOrigin(VECTOR2ZERO);
	_stage1->setOpacity(0.8f);

	_stage3 = new TextSprite(eID::FONTFULL, "STAGE 3: WATERFALL", GVector2(WINDOW_WIDTH / 4, _stage1->getPosition().y + _gap));
	_stage3->init();
	_stage3->setScale(SCALE_FACTOR);
	_stage3->setOrigin(VECTOR2ZERO);
	_stage3->setOpacity(0.8f);

	_yellowFancon = SpriteManager::getInstance()->getSprite(eID::YELLOWFALCON);
	_yellowFancon->setPosition(GVector2(32.0f, _stage1->getPosition().y));
	_yellowFancon->setScale(SCALE_FACTOR);
	_yellowFancon->setOrigin(VECTOR2ZERO);

	_tutLayer = SpriteManager::getInstance()->getSprite(eID::TUT_LAYER);
	_tutLayer->setPosition(0, WINDOW_HEIGHT);
	_tutLayer->setOrigin(VECTOR2ZERO);
	_tutLayer->setOpacity(0.7f);

	return true;
}
예제 #4
0
파일: ShadowBeast.cpp 프로젝트: 7ung/NMGAME
void ShadowBeast::ShadowMouth::init()
{
	_hitpoint = 32;
	_score = 10000;
	_sprite = SpriteManager::getInstance()->getSprite(eID::SHADOW_MOUTH);
	_sprite->setFrameRect(SpriteManager::getInstance()->getSourceRect(eID::SHADOW_MOUTH, "mouth_opening1"));
	_sprite->setScale(SCALE_FACTOR);
	_sprite->setPosition(_startposition);

	_animation = new Animation(_sprite, 0.33f);
	_animation->addFrameRect(eID::SHADOW_MOUTH, "mouth_opening1", "mouth_opening2", "mouth_opening3", "mouth_opening4", "mouth_opening5", "mouth_opening4", "mouth_opening3", "mouth_opening2", "mouth_opening1",  "mouth_closed3", "mouth_closed2", "mouth_closed1", "mouth_closed2", "mouth_closed3", NULL);

	_flagCanShoot = true;
	_explosion = nullptr;
	_flagBigExplosion = true;


	_moulder = SpriteManager::getInstance()->getSprite(eID::SHADOW_MOUTH);
	_moulder->setFrameRect(SpriteManager::getInstance()->getSourceRect(eID::SHADOW_MOUTH, "moudler"));
	_moulder->setScale(SCALE_FACTOR);
	_moulder->setOrigin(GVector2(0.5f, 1.0f));
	_moulder->setPosition(_startposition + GVector2(0, -120) + GVector2(-1, 3));
	_moulder->setZIndex(0.0f);
	_flagMoudle = false;
}
예제 #5
0
파일: ShadowBeast.cpp 프로젝트: 7ung/NMGAME
void ShadowBeast::ShadowArm::init()
{
	srand(599999);
	_hitpoint = 16;
	_score = 2000;
	Sprite* hand1 = SpriteManager::getInstance()->getSprite(eID::SHADOW_ARM);
	hand1->setFrameRect(SpriteManager::getInstance()->getSourceRect(eID::SHADOW_ARM, "arm"));
	hand1->setScale(SCALE_FACTOR);
	hand1->setPosition(_rootOfArm);

	Sprite* hand2 = SpriteManager::getInstance()->getSprite(eID::SHADOW_ARM);
	hand2->setFrameRect(SpriteManager::getInstance()->getSourceRect(eID::SHADOW_ARM, "arm"));
	hand2->setScale(SCALE_FACTOR);
	hand2->setPosition(_rootOfArm + GVector2(28, 14));

	Sprite* hand3 = SpriteManager::getInstance()->getSprite(eID::SHADOW_ARM);
	hand3->setFrameRect(SpriteManager::getInstance()->getSourceRect(eID::SHADOW_ARM, "arm"));
	hand3->setScale(SCALE_FACTOR);
	hand3->setPosition(_rootOfArm + GVector2(42, 42));

	Sprite* hand4 = SpriteManager::getInstance()->getSprite(eID::SHADOW_ARM);
	hand4->setFrameRect(SpriteManager::getInstance()->getSourceRect(eID::SHADOW_ARM, "arm"));
	hand4->setScale(SCALE_FACTOR);
	hand4->setPosition(_rootOfArm + GVector2(28, 70));

	_sprite = SpriteManager::getInstance()->getSprite(eID::SHADOW_ARM);
	_sprite->setFrameRect(SpriteManager::getInstance()->getSourceRect(eID::SHADOW_ARM, "hand"));
	_sprite->setScale(SCALE_FACTOR);
	_sprite->setPosition(_rootOfArm + GVector2(0, 80));

	roundCircletime = 0.0f;
	CollisionBody* collisionBody = new CollisionBody(this);
	this->_componentList["CollisionBody"] = collisionBody;
	__hook(&CollisionBody::onCollisionBegin, collisionBody, &Bullet::onCollisionBegin); //dư?

	_stopWatch = new StopWatch();
	_aimtime = new StopWatch();
	_trackBillTime = new StopWatch();
	_explosion = nullptr;

	_isClockWise = false;
	_isAiming = false;
	flagforTrackBill = false;
	counterforFire = 0;

	_handelem1 = HandElement( hand1, 0.0f, 0 );
	_handelem2 = HandElement( hand2, 0.0f, 32 );
	_handelem3 = HandElement( hand3, 0.0f, 0 );
	_handelem4 = HandElement( hand4, 0.0f, 0 );
	_arm = HandElement( _sprite, 0.0f, 0 );

	_flagAimFinish[0] = false;
	_flagAimFinish[1] = false;
	_flagAimFinish[2] = false;
	_flagAimFinish[3] = false;
	_waveCount = 0;
	_memStatus = normal;
}
예제 #6
0
파일: ShadowBeast.cpp 프로젝트: 7ung/NMGAME
void ShadowBeast::init()
{
	_leftArm = new ShadowArm(_position + GVector2(-115, 60));
	_leftArm->init();
	_leftArm->setWise(false);

	_rightArm = new ShadowArm(_position + GVector2(115, 60));
	_rightArm->init();
	_rightArm->setWise(true);

	_mouth = new ShadowMouth(_position+ GVector2(0, 120));
	_mouth->init();
	_flagPlayedDestroyBoss = false;
}
예제 #7
0
파일: F_Bullet.cpp 프로젝트: 7ung/NMGAME
void FBullet::init()
{
	_damage = 1;

	_sprite = SpriteManager::getInstance()->getSprite(eID::BULLET);
	_sprite->setFrameRect(SpriteManager::getInstance()->getSourceRect(eID::BULLET, "f_bullet"));

	this->setPosition(_startPosition);
	this->setScale(SCALE_FACTOR);

	GVector2 begin_veloc = Bullet::initveloc(F_BULLET_SPEED);

	auto movement = new Movement(GVector2(0, 0), begin_veloc, _sprite);
	_componentList.insert(pair<string, IComponent*>("Movement", movement));
	
	float radian = this->initRadian();

	auto roundmovement = new RoundMovement(ROUND_RADIUS, ROUND_FREQUENCE, radian, _sprite);
	_componentList["RoundMovement"] = roundmovement;
	//auto circlemovement = new CircleMovement(150.0f, 1.0f, _sprite);
	//_componentList["RoundMovement"] = circlemovement;
	auto collisionBody = new CollisionBody(this);
	_componentList.insert(pair<string, IComponent*>("CollisionBody", collisionBody));

	__hook(&CollisionBody::onCollisionBegin, collisionBody, &Bullet::onCollisionBegin);
}
예제 #8
0
bool GameOverScene::init()
{
	_index = 0;
	_blank = SpriteManager::getInstance()->getSprite(eID::BLANK);
	_blank->setScale(SCALE_FACTOR);
	_blank->setOrigin(VECTOR2ZERO);

	_yellowfancon = SpriteManager::getInstance()->getSprite(eID::YELLOWFALCON);
	_yellowfancon->setPosition(GVector2(192.0f, 320.0f));		// hardcode
	_yellowfancon->setScale(SCALE_FACTOR);
	_yellowfancon->setOrigin(VECTOR2ZERO);

	_background = SpriteManager::getInstance()->getSprite(eID::GAME_OVER_SCENE);
	_background->setPosition(VECTOR2ZERO);
	_background->setScale(SCALE_FACTOR);
	_background->setOrigin(GVector2(0.0f, 1.0f));

	_flash = new StopWatch();

	_highscore = HighScore::loadHighScore(HighScore::filehighscore);

	if (_score > _highscore)
	{
		_highscore = _score;
		HighScore::saveHighScore(HighScore::filehighscore, _highscore);
	}

	_textscore = new TextSprite(eID::FONTFULL, std::to_string(_score), GVector2(160, 68));
	_textscore->init();
	_textscore->setScale(SCALE_FACTOR);
	_textscore->getSprite()->setOpacity(0.7f);

	_texthighscore = new TextSprite(eID::FONTFULL, std::to_string(_highscore), GVector2(288, 144));
	_texthighscore->init();
	_texthighscore->setScale(SCALE_FACTOR);
	_texthighscore->getSprite()->setOpacity(0.7f);
	SoundManager::getInstance()->Play(eSoundId::GAME_OVER);
	return true;
}
예제 #9
0
파일: TextSprite.cpp 프로젝트: 7ung/NMGAME
void TextSprite::draw(LPD3DXSPRITE spriteHandle, Viewport* viewport)
{
	int x = 0, y = 0;
	int index = 0;
	int i = 0;
	for each (char c in _text)
	{
		if (c >= 'A' && c <= 'Z')
		{
			index = ((int)c) - 'A';
		}
		else if (c >= 'a' && c <= 'z')
		{
			index = ((int)c) - 'a';
		}
		else if (c >= '0' && c <= '9')
		{
			index = (((int)c) - '0') + 26;
		}
		else if (c == ' ')
		{
			index = 53;
		}
		else if (c == ':')
		{
			index = 45;
		}

		 _sprite->setIndex(index);
		_sprite->setPosition(GVector2(_position.x + _sprite->getFrameWidth() * i, _position.y));

		if (viewport == nullptr)
		{
			_sprite->render(spriteHandle);
		}
		else
		{
			_sprite->render(spriteHandle, viewport);
		}
		i++;
	}
}
GTwoConstantProperty1D::GTwoConstantProperty1D(const GElement* Owner) : GMultiProperty1D(Owner) {

	this->Init(2, G_CONSTANTPROPERTY1D_CLASSID, GKeyValue(GVector2(0, 0)), "x;y");
}
예제 #11
0
Transformable::Transformable()
{
	_scale = GVector2(1.0f, 1.0f);
}
// *********************************************************************
//                       GTwoLinearProperty1D
// *********************************************************************
GTwoLinearProperty1D::GTwoLinearProperty1D() : GMultiProperty1D() {

	this->Init(2, G_LINEARPROPERTY1D_CLASSID, GKeyValue(GVector2(0, 0)), "x;y");
}
GTwoLinearProperty1D::GTwoLinearProperty1D(const GElement* Owner) : GMultiProperty1D(Owner) {

	this->Init(2, G_LINEARPROPERTY1D_CLASSID, GKeyValue(GVector2(0, 0)), "x;y");
}
GTwoHermiteProperty1D::GTwoHermiteProperty1D(const GElement* Owner) : GMultiProperty1D(Owner) {
	
	this->Init(2, G_HERMITEPROPERTY1D_CLASSID, GKeyValue(GVector2(0, 0)), "x;y");
}
예제 #15
0
파일: ShadowBeast.cpp 프로젝트: 7ung/NMGAME
void ShadowBeast::ShadowArm::updateElemPosition(HandElement& elem)
{
	elem._sprite->setPosition(
		_rootOfArm + elem._lenght * GVector2(cos(elem._angle), sin(elem._angle))
		);
}
예제 #16
0
GVector2 GKeyValue::Vect2Value() const {
	return GVector2(gValue[0], gValue[1]);
}
GMatrix33 GAnimTRSNode2D::InverseMatrix(const GTimeValue TimePos, const GSpaceSystem Space, GTimeInterval& ValidInterval) const {

	GProperty *tmpProp = Property("transform");

	// this can be the case of a curve not created through a kernel
	if (!tmpProp) {
		ValidInterval = G_FOREVER_TIMEINTERVAL;
		return GMatrix33();
	}

	GMatrix33 invTranslation;
	GMatrix33 invRotation;
	GMatrix33 invScale;
	GTimeInterval tmpValid = G_FOREVER_TIMEINTERVAL;
	GKeyValue xValue, yValue;
	GError xErr, yErr;
	GProperty *transProp = tmpProp->Property("position");
	GProperty *rotProp = tmpProp->Property("rotation");
	GProperty *scaleProp = tmpProp->Property("scale");

	G_ASSERT(transProp != NULL);
	G_ASSERT(rotProp != NULL);
	G_ASSERT(scaleProp != NULL);

	// extract translation
	GProperty *xProp = transProp->Property("x");
	GProperty *yProp = transProp->Property("y");
	G_ASSERT(xProp != NULL);
	G_ASSERT(yProp != NULL);
	// build translation factor
	xErr = xProp->Value(xValue, tmpValid, TimePos, G_ABSOLUTE_VALUE);
	yErr = yProp->Value(yValue, tmpValid, TimePos, G_ABSOLUTE_VALUE);
	if (xErr != G_NO_ERROR || yErr != G_NO_ERROR)
		return GMatrix33();
	TranslationToMatrix(invTranslation, GVector2(-xValue.RealValue(), -yValue.RealValue()));

	// build rotation factor
	xErr = rotProp->Value(xValue, tmpValid, TimePos, G_ABSOLUTE_VALUE);
	if (xErr != G_NO_ERROR)
		return GMatrix33();
	RotationToMatrix(invRotation, -xValue.RealValue());

	// extract scale
	xProp = scaleProp->Property("x");
	yProp = scaleProp->Property("y");
	G_ASSERT(xProp != NULL);
	G_ASSERT(yProp != NULL);
	// build scale factor
	xErr = xProp->Value(xValue, tmpValid, TimePos, G_ABSOLUTE_VALUE);
	yErr = yProp->Value(yValue, tmpValid, TimePos, G_ABSOLUTE_VALUE);
	if (xErr != G_NO_ERROR || yErr != G_NO_ERROR)
		return GMatrix33();
	GPoint2 tmpScale(1, 1);
	if (GMath::Abs(xValue.RealValue()) > G_EPSILON)
		tmpScale[G_X] = 1 / xValue.RealValue();
	if (GMath::Abs(yValue.RealValue()) > G_EPSILON)
		tmpScale[G_Y] = 1 / yValue.RealValue();
	ScaleToMatrix(invScale, tmpScale);

	ValidInterval = tmpValid;
	// take care of father
	GMatrix33 invLocalMatrix = (invScale * (invRotation * invTranslation));
	if (gFather && Space == G_WORLD_SPACE) {
		GMatrix33 invFatherMatrix = gFather->InverseMatrix(TimePos, G_WORLD_SPACE, tmpValid);
		ValidInterval &= tmpValid;
		return (invLocalMatrix * invFatherMatrix);
	}
	return invLocalMatrix;
}
예제 #18
0
void QGLWidgetTest::BuildShape(const GFloat RadAngle1, const GFloat RadAngle2, const GFloat RadAngle3) {

	GMatrix33 preTrans, postTrans, rot;
	GMatrix33 finalMatrix;

	// rotation pivot is at (8, 8)
	TranslationToMatrix(preTrans, GVector2(-8, -8));
	TranslationToMatrix(postTrans, GVector2(8, 8));

	gContoursPoints.clear();
	gContoursIndexes.clear();

	// little cross
	RotationToMatrix(rot, (GReal)RadAngle1);
	finalMatrix = (postTrans * rot) * preTrans;
	gContoursPoints.push_back(finalMatrix * GPoint2(6, 7));
	gContoursPoints.push_back(finalMatrix * GPoint2(7, 8));
	gContoursPoints.push_back(finalMatrix * GPoint2(6, 9));
	gContoursPoints.push_back(finalMatrix * GPoint2(7, 10));
	gContoursPoints.push_back(finalMatrix * GPoint2(8, 9));
	gContoursPoints.push_back(finalMatrix * GPoint2(9, 10));
	gContoursPoints.push_back(finalMatrix * GPoint2(10, 9));
	gContoursPoints.push_back(finalMatrix * GPoint2(9, 8));
	gContoursPoints.push_back(finalMatrix * GPoint2(10, 7));
	gContoursPoints.push_back(finalMatrix * GPoint2(9, 6));
	gContoursPoints.push_back(finalMatrix * GPoint2(8, 7));
	gContoursPoints.push_back(finalMatrix * GPoint2(7, 6));
	gContoursIndexes.push_back(12);

	// big cross
	RotationToMatrix(rot, (GReal)RadAngle2);
	finalMatrix = (postTrans * rot) * preTrans;

	gContoursPoints.push_back(finalMatrix * GPoint2(2, 6));
	gContoursPoints.push_back(finalMatrix * GPoint2(2, 10));
	gContoursPoints.push_back(finalMatrix * GPoint2(6, 10));
	gContoursPoints.push_back(finalMatrix * GPoint2(6, 14));
	gContoursPoints.push_back(finalMatrix * GPoint2(10, 14));
	gContoursPoints.push_back(finalMatrix * GPoint2(10, 10));
	gContoursPoints.push_back(finalMatrix * GPoint2(14, 10));
	gContoursPoints.push_back(finalMatrix * GPoint2(14, 6));
	gContoursPoints.push_back(finalMatrix * GPoint2(10, 6));
	gContoursPoints.push_back(finalMatrix * GPoint2(10, 2));
	gContoursPoints.push_back(finalMatrix * GPoint2(6, 2));
	gContoursPoints.push_back(finalMatrix * GPoint2(6, 6));
	gContoursIndexes.push_back(12);

	// star
	RotationToMatrix(rot, (GReal)RadAngle3);
	finalMatrix = (postTrans * rot) * preTrans;
	gContoursPoints.push_back(finalMatrix * GPoint2(2, 2));
	gContoursPoints.push_back(finalMatrix * GPoint2(5, 8));
	gContoursPoints.push_back(finalMatrix * GPoint2(2, 14));
	gContoursPoints.push_back(finalMatrix * GPoint2(8, 11));
	gContoursPoints.push_back(finalMatrix * GPoint2(14, 14));
	gContoursPoints.push_back(finalMatrix * GPoint2(11, 8));
	gContoursPoints.push_back(finalMatrix * GPoint2(14, 2));
	gContoursPoints.push_back(finalMatrix * GPoint2(8, 5));
	gContoursIndexes.push_back(8);

	// square
	gContoursPoints.push_back(GPoint2(1, 1));
	gContoursPoints.push_back(GPoint2(1, 15));
	gContoursPoints.push_back(GPoint2(15, 15));
	gContoursPoints.push_back(GPoint2(15, 1));
	gContoursIndexes.push_back(4);
}
void QGLWidgetTest::TestLinearGradient(const GUInt32 TestIndex, const GReal RotAngle, const GReal Scale) {
	
	GUInt32 idx = (TestIndex % 4);

	GMatrix33 ofsTransf, m;
	GMatrix33 rot, scl, preTrans, postTrans;
		
	TranslationToMatrix(preTrans, GPoint2(-120, -88));
	TranslationToMatrix(postTrans, GPoint2(120, 88));
	RotationToMatrix(rot, RotAngle);
	ScaleToMatrix(scl, GVector2(Scale, Scale));
	ofsTransf = (postTrans * (rot * (scl * preTrans)));

	gDrawBoard->SetTargetMode(G_COLOR_MODE);
	gDrawBoard->SetStrokePaintType(G_COLOR_PAINT_TYPE);
	gDrawBoard->SetStrokeStyle(G_SOLID_STROKE);
	gDrawBoard->SetStrokeJoinStyle(G_MITER_JOIN);
	gDrawBoard->SetStrokeEnabled(G_TRUE);
	gDrawBoard->SetStrokeWidth(4);
	gDrawBoard->SetStrokeColor(GVector4(0.0, 0.0, 0.0, 1.000));
	gDrawBoard->SetFillEnabled(G_TRUE);
	gDrawBoard->SetFillPaintType(G_GRADIENT_PAINT_TYPE);
	
	// OPAQUE
	if (idx == 0) {
		gDrawBoard->SetFillColor(GVector4(0.0, 0.0, 0.0, 1.0));
		// --------------------------------------------------------------
		gLinGrad1->SetColorInterpolation(G_HERMITE_COLOR_INTERPOLATION);
		gLinGrad1->SetSpreadMode(G_PAD_COLOR_RAMP_SPREAD);
		TranslationToMatrix(m, GVector3(+20,+18,0));
		gLinGrad1->SetMatrix(m * ofsTransf);
		gDrawBoard->SetFillGradient(gLinGrad1);
		gDrawBoard->DrawRectangle(GPoint2(20, 18), GPoint2(260, 194));
		gLinGrad1->SetSpreadMode(G_REPEAT_COLOR_RAMP_SPREAD);
		TranslationToMatrix(m, GVector3(+280,+18,0));
		gLinGrad1->SetMatrix(m * ofsTransf);
		gDrawBoard->SetFillGradient(gLinGrad1);
		gDrawBoard->DrawRectangle(GPoint2(280, 18), GPoint2(520, 194));
		gLinGrad1->SetSpreadMode(G_REFLECT_COLOR_RAMP_SPREAD);
		TranslationToMatrix(m, GVector3(+540,+18,0));
		gLinGrad1->SetMatrix(m * ofsTransf);
		gDrawBoard->SetFillGradient(gLinGrad1);
		gDrawBoard->DrawRectangle(GPoint2(540, 18), GPoint2(780, 194));
		// --------------------------------------------------------------
		gLinGrad1->SetColorInterpolation(G_LINEAR_COLOR_INTERPOLATION);
		gLinGrad1->SetSpreadMode(G_PAD_COLOR_RAMP_SPREAD);
		TranslationToMatrix(m, GVector3(+20,+212,0));
		gLinGrad1->SetMatrix(m * ofsTransf);
		gDrawBoard->SetFillGradient(gLinGrad1);
		gDrawBoard->DrawRectangle(GPoint2(20, 212), GPoint2(260, 388));
		gLinGrad1->SetSpreadMode(G_REPEAT_COLOR_RAMP_SPREAD);
		TranslationToMatrix(m, GVector3(+280,+212,0));
		gLinGrad1->SetMatrix(m * ofsTransf);
		gDrawBoard->SetFillGradient(gLinGrad1);
		gDrawBoard->DrawRectangle(GPoint2(280, 212), GPoint2(520, 388));
		gLinGrad1->SetSpreadMode(G_REFLECT_COLOR_RAMP_SPREAD);
		TranslationToMatrix(m, GVector3(+540,+212,0));
		gLinGrad1->SetMatrix(m * ofsTransf);
		gDrawBoard->SetFillGradient(gLinGrad1);
		gDrawBoard->DrawRectangle(GPoint2(540, 212), GPoint2(780, 388));
		// --------------------------------------------------------------
		gLinGrad1->SetColorInterpolation(G_CONSTANT_COLOR_INTERPOLATION);
		gLinGrad1->SetSpreadMode(G_PAD_COLOR_RAMP_SPREAD);
		TranslationToMatrix(m, GVector3(+20,+406,0));
		gLinGrad1->SetMatrix(m * ofsTransf);
		gDrawBoard->SetFillGradient(gLinGrad1);
		gDrawBoard->DrawRectangle(GPoint2(20, 406), GPoint2(260, 582));
		gLinGrad1->SetSpreadMode(G_REPEAT_COLOR_RAMP_SPREAD);
		TranslationToMatrix(m, GVector3(+280,+406,0));
		gLinGrad1->SetMatrix(m * ofsTransf);
		gDrawBoard->SetFillGradient(gLinGrad1);
		gDrawBoard->DrawRectangle(GPoint2(280, 406), GPoint2(520, 582));
		gLinGrad1->SetSpreadMode(G_REFLECT_COLOR_RAMP_SPREAD);
		TranslationToMatrix(m, GVector3(+540,+406,0));
		gLinGrad1->SetMatrix(m * ofsTransf);
		gDrawBoard->SetFillGradient(gLinGrad1);	
		gDrawBoard->DrawRectangle(GPoint2(540, 406), GPoint2(780, 582));
		// --------------------------------------------------------------
	}
	else
	if (idx == 1) {
		// TRANSPARENT
		gDrawBoard->SetFillColor(GVector4(0.0, 0.0, 0.0, 0.5));
		// --------------------------------------------------------------
		gLinGrad1->SetColorInterpolation(G_HERMITE_COLOR_INTERPOLATION);
		gLinGrad1->SetSpreadMode(G_PAD_COLOR_RAMP_SPREAD);
		TranslationToMatrix(m, GVector3(+20,+18,0));
		gLinGrad1->SetMatrix(m * ofsTransf);
		gDrawBoard->SetFillGradient(gLinGrad1);
		gDrawBoard->DrawRectangle(GPoint2(20, 18), GPoint2(260, 194));
		gLinGrad1->SetSpreadMode(G_REPEAT_COLOR_RAMP_SPREAD);
		TranslationToMatrix(m, GVector3(+280,+18,0));
		gLinGrad1->SetMatrix(m * ofsTransf);
		gDrawBoard->SetFillGradient(gLinGrad1);
		gDrawBoard->DrawRectangle(GPoint2(280, 18), GPoint2(520, 194));
		gLinGrad1->SetSpreadMode(G_REFLECT_COLOR_RAMP_SPREAD);
		TranslationToMatrix(m, GVector3(+540,+18,0));
		gLinGrad1->SetMatrix(m * ofsTransf);
		gDrawBoard->SetFillGradient(gLinGrad1);
		gDrawBoard->DrawRectangle(GPoint2(540, 18), GPoint2(780, 194));
		// --------------------------------------------------------------
		gLinGrad1->SetColorInterpolation(G_LINEAR_COLOR_INTERPOLATION);
		gLinGrad1->SetSpreadMode(G_PAD_COLOR_RAMP_SPREAD);
		TranslationToMatrix(m, GVector3(+20,+212,0));
		gLinGrad1->SetMatrix(m * ofsTransf);
		gDrawBoard->SetFillGradient(gLinGrad1);
		gDrawBoard->DrawRectangle(GPoint2(20, 212), GPoint2(260, 388));
		gLinGrad1->SetSpreadMode(G_REPEAT_COLOR_RAMP_SPREAD);
		TranslationToMatrix(m, GVector3(+280,+212,0));
		gLinGrad1->SetMatrix(m * ofsTransf);
		gDrawBoard->SetFillGradient(gLinGrad1);
		gDrawBoard->DrawRectangle(GPoint2(280, 212), GPoint2(520, 388));
		gLinGrad1->SetSpreadMode(G_REFLECT_COLOR_RAMP_SPREAD);
		TranslationToMatrix(m, GVector3(+540,+212,0));
		gLinGrad1->SetMatrix(m * ofsTransf);
		gDrawBoard->SetFillGradient(gLinGrad1);
		gDrawBoard->DrawRectangle(GPoint2(540, 212), GPoint2(780, 388));
		// --------------------------------------------------------------
		gLinGrad1->SetColorInterpolation(G_CONSTANT_COLOR_INTERPOLATION);
		gLinGrad1->SetSpreadMode(G_PAD_COLOR_RAMP_SPREAD);
		TranslationToMatrix(m, GVector3(+20,+406,0));
		gLinGrad1->SetMatrix(m * ofsTransf);
		gDrawBoard->SetFillGradient(gLinGrad1);
		gDrawBoard->DrawRectangle(GPoint2(20, 406), GPoint2(260, 582));
		gLinGrad1->SetSpreadMode(G_REPEAT_COLOR_RAMP_SPREAD);
		TranslationToMatrix(m, GVector3(+280,+406,0));
		gLinGrad1->SetMatrix(m * ofsTransf);
		gDrawBoard->SetFillGradient(gLinGrad1);
		gDrawBoard->DrawRectangle(GPoint2(280, 406), GPoint2(520, 582));
		gLinGrad1->SetSpreadMode(G_REFLECT_COLOR_RAMP_SPREAD);
		TranslationToMatrix(m, GVector3(+540,+406,0));
		gLinGrad1->SetMatrix(m * ofsTransf);
		gDrawBoard->SetFillGradient(gLinGrad1);	
		gDrawBoard->DrawRectangle(GPoint2(540, 406), GPoint2(780, 582));
		// --------------------------------------------------------------
	}
	else
	if (idx == 2) {
		// TRANSPARENT IN KEYS
		gDrawBoard->SetFillColor(GVector4(0.0, 0.0, 0.0, 1.0));
		// --------------------------------------------------------------
		gLinGrad2->SetColorInterpolation(G_HERMITE_COLOR_INTERPOLATION);
		gLinGrad2->SetSpreadMode(G_PAD_COLOR_RAMP_SPREAD);
		TranslationToMatrix(m, GVector3(+20,+18,0));
		gLinGrad2->SetMatrix(m * ofsTransf);
		gDrawBoard->SetFillGradient(gLinGrad2);
		gDrawBoard->DrawRectangle(GPoint2(20, 18), GPoint2(260, 194));
		gLinGrad2->SetSpreadMode(G_REPEAT_COLOR_RAMP_SPREAD);
		TranslationToMatrix(m, GVector3(+280,+18,0));
		gLinGrad2->SetMatrix(m * ofsTransf);
		gDrawBoard->SetFillGradient(gLinGrad2);
		gDrawBoard->DrawRectangle(GPoint2(280, 18), GPoint2(520, 194));
		gLinGrad2->SetSpreadMode(G_REFLECT_COLOR_RAMP_SPREAD);
		TranslationToMatrix(m, GVector3(+540,+18,0));
		gLinGrad2->SetMatrix(m * ofsTransf);
		gDrawBoard->SetFillGradient(gLinGrad2);
		gDrawBoard->DrawRectangle(GPoint2(540, 18), GPoint2(780, 194));
		// --------------------------------------------------------------
		gLinGrad2->SetColorInterpolation(G_LINEAR_COLOR_INTERPOLATION);
		gLinGrad2->SetSpreadMode(G_PAD_COLOR_RAMP_SPREAD);
		TranslationToMatrix(m, GVector3(+20,+212,0));
		gLinGrad2->SetMatrix(m * ofsTransf);
		gDrawBoard->SetFillGradient(gLinGrad2);
		gDrawBoard->DrawRectangle(GPoint2(20, 212), GPoint2(260, 388));
		gLinGrad2->SetSpreadMode(G_REPEAT_COLOR_RAMP_SPREAD);
		TranslationToMatrix(m, GVector3(+280,+212,0));
		gLinGrad2->SetMatrix(m * ofsTransf);
		gDrawBoard->SetFillGradient(gLinGrad2);
		gDrawBoard->DrawRectangle(GPoint2(280, 212), GPoint2(520, 388));
		gLinGrad2->SetSpreadMode(G_REFLECT_COLOR_RAMP_SPREAD);
		TranslationToMatrix(m, GVector3(+540,+212,0));
		gLinGrad2->SetMatrix(m * ofsTransf);
		gDrawBoard->SetFillGradient(gLinGrad2);
		gDrawBoard->DrawRectangle(GPoint2(540, 212), GPoint2(780, 388));
		// --------------------------------------------------------------
		gLinGrad2->SetColorInterpolation(G_CONSTANT_COLOR_INTERPOLATION);
		gLinGrad2->SetSpreadMode(G_PAD_COLOR_RAMP_SPREAD);
		TranslationToMatrix(m, GVector3(+20,+406,0));
		gLinGrad2->SetMatrix(m * ofsTransf);
		gDrawBoard->SetFillGradient(gLinGrad2);
		gDrawBoard->DrawRectangle(GPoint2(20, 406), GPoint2(260, 582));
		gLinGrad2->SetSpreadMode(G_REPEAT_COLOR_RAMP_SPREAD);
		TranslationToMatrix(m, GVector3(+280,+406,0));
		gLinGrad2->SetMatrix(m * ofsTransf);
		gDrawBoard->SetFillGradient(gLinGrad2);
		gDrawBoard->DrawRectangle(GPoint2(280, 406), GPoint2(520, 582));
		gLinGrad2->SetSpreadMode(G_REFLECT_COLOR_RAMP_SPREAD);
		TranslationToMatrix(m, GVector3(+540,+406,0));
		gLinGrad2->SetMatrix(m * ofsTransf);
		gDrawBoard->SetFillGradient(gLinGrad2);	
		gDrawBoard->DrawRectangle(GPoint2(540, 406), GPoint2(780, 582));
		// --------------------------------------------------------------
	}
	else {
		// TRANSPARENT IN KEYS AND COLOR
		gDrawBoard->SetFillColor(GVector4(0.0, 0.0, 0.0, 0.5));
		// --------------------------------------------------------------
		gLinGrad2->SetColorInterpolation(G_HERMITE_COLOR_INTERPOLATION);
		gLinGrad2->SetSpreadMode(G_PAD_COLOR_RAMP_SPREAD);
		TranslationToMatrix(m, GVector3(+20,+18,0));
		gLinGrad2->SetMatrix(m * ofsTransf);
		gDrawBoard->SetFillGradient(gLinGrad2);
		gDrawBoard->DrawRectangle(GPoint2(20, 18), GPoint2(260, 194));
		gLinGrad2->SetSpreadMode(G_REPEAT_COLOR_RAMP_SPREAD);
		TranslationToMatrix(m, GVector3(+280,+18,0));
		gLinGrad2->SetMatrix(m * ofsTransf);
		gDrawBoard->SetFillGradient(gLinGrad2);
		gDrawBoard->DrawRectangle(GPoint2(280, 18), GPoint2(520, 194));
		gLinGrad2->SetSpreadMode(G_REFLECT_COLOR_RAMP_SPREAD);
		TranslationToMatrix(m, GVector3(+540,+18,0));
		gLinGrad2->SetMatrix(m * ofsTransf);
		gDrawBoard->SetFillGradient(gLinGrad2);
		gDrawBoard->DrawRectangle(GPoint2(540, 18), GPoint2(780, 194));
		// --------------------------------------------------------------
		gLinGrad2->SetColorInterpolation(G_LINEAR_COLOR_INTERPOLATION);
		gLinGrad2->SetSpreadMode(G_PAD_COLOR_RAMP_SPREAD);
		TranslationToMatrix(m, GVector3(+20,+212,0));
		gLinGrad2->SetMatrix(m * ofsTransf);
		gDrawBoard->SetFillGradient(gLinGrad2);
		gDrawBoard->DrawRectangle(GPoint2(20, 212), GPoint2(260, 388));
		gLinGrad2->SetSpreadMode(G_REPEAT_COLOR_RAMP_SPREAD);
		TranslationToMatrix(m, GVector3(+280,+212,0));
		gLinGrad2->SetMatrix(m * ofsTransf);
		gDrawBoard->SetFillGradient(gLinGrad2);
		gDrawBoard->DrawRectangle(GPoint2(280, 212), GPoint2(520, 388));
		gLinGrad2->SetSpreadMode(G_REFLECT_COLOR_RAMP_SPREAD);
		TranslationToMatrix(m, GVector3(+540,+212,0));
		gLinGrad2->SetMatrix(m * ofsTransf);
		gDrawBoard->SetFillGradient(gLinGrad2);
		gDrawBoard->DrawRectangle(GPoint2(540, 212), GPoint2(780, 388));
		// --------------------------------------------------------------
		gLinGrad2->SetColorInterpolation(G_CONSTANT_COLOR_INTERPOLATION);
		gLinGrad2->SetSpreadMode(G_PAD_COLOR_RAMP_SPREAD);
		TranslationToMatrix(m, GVector3(+20,+406,0));
		gLinGrad2->SetMatrix(m * ofsTransf);
		gDrawBoard->SetFillGradient(gLinGrad2);
		gDrawBoard->DrawRectangle(GPoint2(20, 406), GPoint2(260, 582));
		gLinGrad2->SetSpreadMode(G_REPEAT_COLOR_RAMP_SPREAD);
		TranslationToMatrix(m, GVector3(+280,+406,0));
		gLinGrad2->SetMatrix(m * ofsTransf);
		gDrawBoard->SetFillGradient(gLinGrad2);
		gDrawBoard->DrawRectangle(GPoint2(280, 406), GPoint2(520, 582));
		gLinGrad2->SetSpreadMode(G_REFLECT_COLOR_RAMP_SPREAD);
		TranslationToMatrix(m, GVector3(+540,+406,0));
		gLinGrad2->SetMatrix(m * ofsTransf);
		gDrawBoard->SetFillGradient(gLinGrad2);	
		gDrawBoard->DrawRectangle(GPoint2(540, 406), GPoint2(780, 582));
		// --------------------------------------------------------------
	}
}
예제 #20
0
void Transformable::setPosition(GVector3 vector)
{
	this->_position = GVector2(vector.x, vector.y);
}
예제 #21
0
void Transformable::setPosition(GVector2 position)
{
	this->_position = GVector2(position.x, position.y);
}
// *********************************************************************
//                       GTwoHermiteProperty1D
// *********************************************************************
GTwoHermiteProperty1D::GTwoHermiteProperty1D() : GMultiProperty1D() {

	this->Init(2, G_HERMITEPROPERTY1D_CLASSID, GKeyValue(GVector2(0, 0)), "x;y");
}
void ShadingPoint::fetch_source_geometry() const
{
    assert(hit());
    assert(!(m_members & HasSourceGeometry));

    // Retrieve the assembly.
    m_assembly = &m_assembly_instance->get_assembly();

    // Retrieve the object instance.
    m_object_instance = m_assembly->object_instances().get_by_index(m_object_instance_index);
    assert(m_object_instance);

    // Retrieve the object.
    m_object = &m_object_instance->get_object();

    // Retrieve the region kit of the object.
    assert(m_region_kit_cache);
    const RegionKit& region_kit =
        *m_region_kit_cache->access(
            m_object->get_uid(), m_object->get_region_kit());

    // Retrieve the region.
    const IRegion* region = region_kit[m_region_index];

    // Retrieve the tessellation of the region.
    assert(m_tess_cache);
    const StaticTriangleTess& tess =
        *m_tess_cache->access(
            region->get_uid(), region->get_static_triangle_tess());
    const size_t motion_segment_count = tess.get_motion_segment_count();

    // Retrieve the triangle.
    const Triangle& triangle = tess.m_primitives[m_triangle_index];

    // Copy the index of the triangle attribute.
    m_triangle_pa = triangle.m_pa;

    // Copy the texture coordinates from UV set #0.
    if (triangle.has_vertex_attributes() && tess.get_uv_vertex_count() > 0)
    {
        m_v0_uv = tess.get_uv_vertex(triangle.m_a0);
        m_v1_uv = tess.get_uv_vertex(triangle.m_a1);
        m_v2_uv = tess.get_uv_vertex(triangle.m_a2);
    }
    else
    {
        // UV set #0 doesn't exist, or this triangle doesn't have vertex attributes.
        m_v0_uv =
        m_v1_uv =
        m_v2_uv = GVector2(0.0);
    }

    // Copy the object instance space triangle vertices.
    assert(triangle.m_v0 != Triangle::None);
    assert(triangle.m_v1 != Triangle::None);
    assert(triangle.m_v2 != Triangle::None);
    if (motion_segment_count > 0)
    {
        // Fetch triangle vertices from the previous pose.
        const size_t prev_index = truncate<size_t>(m_ray.m_time * motion_segment_count);
        GVector3 prev_v0, prev_v1, prev_v2;
        if (prev_index == 0)
        {
            prev_v0 = tess.m_vertices[triangle.m_v0];
            prev_v1 = tess.m_vertices[triangle.m_v1];
            prev_v2 = tess.m_vertices[triangle.m_v2];
        }
        else
        {
            prev_v0 = tess.get_vertex_pose(triangle.m_v0, prev_index - 1);
            prev_v1 = tess.get_vertex_pose(triangle.m_v1, prev_index - 1);
            prev_v2 = tess.get_vertex_pose(triangle.m_v2, prev_index - 1);
        }

        // Fetch triangle vertices from the next pose.
        const GVector3 next_v0 = tess.get_vertex_pose(triangle.m_v0, prev_index);
        const GVector3 next_v1 = tess.get_vertex_pose(triangle.m_v1, prev_index);
        const GVector3 next_v2 = tess.get_vertex_pose(triangle.m_v2, prev_index);

        // Interpolate triangle vertices.
        const GScalar k = static_cast<GScalar>(m_ray.m_time * motion_segment_count - prev_index);
        m_v0 = (GScalar(1.0) - k) * prev_v0 + k * next_v0;
        m_v1 = (GScalar(1.0) - k) * prev_v1 + k * next_v1;
        m_v2 = (GScalar(1.0) - k) * prev_v2 + k * next_v2;
    }
    else
    {
        m_v0 = tess.m_vertices[triangle.m_v0];
        m_v1 = tess.m_vertices[triangle.m_v1];
        m_v2 = tess.m_vertices[triangle.m_v2];
    }

    // Copy the object instance space triangle vertex normals.
    assert(triangle.m_n0 != Triangle::None);
    assert(triangle.m_n1 != Triangle::None);
    assert(triangle.m_n2 != Triangle::None);
    m_n0 = tess.m_vertex_normals[triangle.m_n0];
    m_n1 = tess.m_vertex_normals[triangle.m_n1];
    m_n2 = tess.m_vertex_normals[triangle.m_n2];
    assert(is_normalized(m_n0));
    assert(is_normalized(m_n1));
    assert(is_normalized(m_n2));
}
예제 #24
0
파일: ShadowBeast.cpp 프로젝트: 7ung/NMGAME
	this->updateElemPosition(_handelem4);
	this->updateElemPosition(_arm);
}
void ShadowBeast::ShadowArm::updateElemPosition(HandElement& elem)
{
	elem._sprite->setPosition(
		_rootOfArm + elem._lenght * GVector2(cos(elem._angle), sin(elem._angle))
		);
}


/* Shadow Mouth */

GVector2 ShadowBeast::ShadowMouth::explose_position[12] = 
{
	GVector2(96, 64),
	GVector2(-96, 64),
	GVector2(32, 64),
	GVector2(-32, 64),
	GVector2(32, 0),
	GVector2(-32, 0),
	GVector2(32, -64),
	GVector2(-32, -64),
	GVector2(32, -128),
	GVector2(-32, -128),
	GVector2(32, -192),
	GVector2(-32, -192)
};
void ShadowBeast::ShadowMouth::init()
{
	_hitpoint = 32;