Aggiunto cambio direzione per corretta visualizzaione dx/sx
This commit is contained in:
@@ -13,6 +13,11 @@ enum class ReferencePlane {
|
||||
XZN
|
||||
};
|
||||
|
||||
enum class Direction {
|
||||
L,
|
||||
R
|
||||
};
|
||||
|
||||
//classi
|
||||
class PieceInterface{
|
||||
protected:
|
||||
@@ -25,7 +30,7 @@ class PieceInterface{
|
||||
shapeXZ->setFillColor(color);
|
||||
shapeYZ->setFillColor(color);
|
||||
}
|
||||
|
||||
Direction direction = Direction::L;
|
||||
public:
|
||||
sf::Shape* shapeXZ, *shapeYZ;
|
||||
rb::Vector3 globalPos;
|
||||
@@ -35,6 +40,9 @@ class PieceInterface{
|
||||
virtual void update(sf::Clock cl) = 0;
|
||||
virtual sf::Shape* draw(ReferencePlane plane) = 0;
|
||||
virtual ~PieceInterface(){}
|
||||
virtual void setDirection(Direction dir){
|
||||
direction = dir;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -62,6 +62,7 @@ sf::Shape* Sensore::draw(ReferencePlane plane){
|
||||
{
|
||||
case ReferencePlane::XZ:
|
||||
{
|
||||
|
||||
sf::Shape* shape = shapeXZ;
|
||||
shape->setRotation(sf::Angle(sf::radians(tmpRot[1])));
|
||||
shape->setPosition({tmpPos[0]+globalPos[0],tmpPos[2]+globalPos[2]});
|
||||
@@ -85,7 +86,7 @@ sf::Shape* Sensore::draw(ReferencePlane plane){
|
||||
|
||||
|
||||
void Sensore::calcRotWithG(unsigned int index){ // calcolo rotazione con valori della gravità
|
||||
|
||||
int dir = direction == Direction::R ? -1 : 1;
|
||||
std::vector<float> grav = gData[index];
|
||||
float modG = sqrt(pow(grav[0],2)+pow(grav[1],2)+pow(grav[2],2));
|
||||
|
||||
@@ -95,7 +96,7 @@ void Sensore::calcRotWithG(unsigned int index){ // calcolo rotazione con valori
|
||||
float tmpSinY = -grav[1] / modG;
|
||||
float tmpSinZ = -grav[2] / modG;
|
||||
|
||||
float tmpAX = acos(tmpSinX);
|
||||
float tmpAX = acos(dir*tmpSinX);
|
||||
float tmpAY = acos(tmpSinY);
|
||||
float tmpAZ = acos(tmpSinZ);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user