Exemplo n.º 1
0
void Pulley::Grab(SGD::Point _p)
{
	if (GameplayState::GetInstance()->GetMovementOff())
	{
		r->GetParticleAt(0)->SetCurrPosition({ _p.x, _p.y - 16.0f });
		r->GetParticleAt(0)->SetFixed(true);
	}
	else
	{
		r->GetParticleAt(index)->SetFixed(false);
		for (int i = r->GetNumberOfParticles() - 1; i >= 0; i--)
		{
			if (r->GetParticleAt(i)->GetFixed() && i > 11)
			{
				r->GetParticleAt(0)->SetFixed(false);
				if (i == r->GetNumberOfParticles() - 1)
				{
					r->GetParticleAt(0)->SetCurrPosition({ _p.x, _p.y - 16.0f });
					break;
				}
				r->GetParticleAt(0)->SetCurrPosition({ _p.x, _p.y - 16.0f });
				r->GetParticleAt(i - 3)->SetCurrPosition({ r->GetParticleAt(i - 2)->GetCurrPosition().x, r->GetParticleAt(i - 2)->GetCurrPosition().y });
				r->GetParticleAt(i - 2)->SetCurrPosition({ r->GetParticleAt(i - 1)->GetCurrPosition().x, r->GetParticleAt(i - 1)->GetCurrPosition().y });
				r->GetParticleAt(i - 1)->SetCurrPosition({ r->GetParticleAt(i)->GetCurrPosition().x, r->GetParticleAt(i)->GetCurrPosition().y });
				r->GetParticleAt(i - 3)->SetFixed(true);
				r->GetParticleAt(i)->SetFixed(false);
				if (i == 12)
				{r->GetParticleAt(19)->SetCurrPosition({ GetPoint3().x, GetPoint3().y + 150.0f });
				r->GetParticleAt(19)->SetFixed(true);
			}
			}
		}
		
		index = 0;
	}

}
Exemplo n.º 2
0
void
BezierSegment::Append (moon_path *path)
{
	Point *p1 = GetPoint1 ();
	Point *p2 = GetPoint2 ();
	Point *p3 = GetPoint3 ();
	
	double x1 = p1 ? p1->x : 0.0;
	double y1 = p1 ? p1->y : 0.0;
	double x2 = p2 ? p2->x : 0.0;
	double y2 = p2 ? p2->y : 0.0;
	double x3 = p3 ? p3->x : 0.0;
	double y3 = p3 ? p3->y : 0.0;

	moon_curve_to (path, x1, y1, x2, y2, x3, y3);
}
Exemplo n.º 3
0
Pulley::Pulley(int length, int numberOfPartciles, SGD::Vector location)
{
	index = 0;
	r = new Rope(length, numberOfPartciles, location);
	SetPoint1({ r->GetParticleAt(10)->GetCurrPosition().x-100.0f, r->GetParticleAt(10)->GetCurrPosition().y -100.0f });
	SetPoint2({ r->GetParticleAt(10)->GetCurrPosition().x, r->GetParticleAt(10)->GetCurrPosition().y - 200.0f });
	SetPoint3({ r->GetParticleAt(10)->GetCurrPosition().x+50.0f, r->GetParticleAt(10)->GetCurrPosition().y - 180.0f });
	
	r->GetParticleAt(9)->SetFixed(true);
	r->GetParticleAt(10)->SetFixed(true);
	r->GetParticleAt(11)->SetFixed(true);
	r->GetParticleAt(9)->SetCurrPosition(GetPoint1());
	r->GetParticleAt(10)->SetCurrPosition(GetPoint2());
	r->GetParticleAt(11)->SetCurrPosition(GetPoint3());
	r->GetParticleAt(19)->SetMass(800.0f);
	r->GetParticleAt(0)->SetCurrPosition({ r->GetParticleAt(9)->GetCurrPosition().x-100.0f, r->GetParticleAt(9)->GetCurrPosition().y + 150.0f });
	r->GetParticleAt(19)->SetCurrPosition({ r->GetParticleAt(11)->GetCurrPosition().x +150.0f, r->GetParticleAt(11)->GetCurrPosition().y + 150.0f });
}