Permalink
Browse files

Fixed the motherfucking bug (changed the order of the transformations…

… + used GetLocalToGlobal instead of GetLocalTransformation)
  • Loading branch information...
gnuvince committed Jan 26, 2012
1 parent 17066f0 commit 7a62b0aec3674a1b9a2b583e544a571179c1bf44
@@ -2,6 +2,10 @@
#include "MainWindow.h"
#include "CoreLib/Cube.h"
+#define BOAT_WIDTH 10
+#define BOAT_THICKNESS 2
+#define BOAT_LENGTH 10
+
using namespace CoreLib;
namespace Application
@@ -17,7 +21,13 @@ Boat::Boat()
// un Node<real> vous pouvez attacher ses
// sous-objet à l'aide de la méthode this->AddChild(...)
///////////////////////////////////////
- Cube<real> *platform = new Cube<real>(10, 2, 10);
+ Cube<real> *platform = new Cube<real>(BOAT_WIDTH, BOAT_THICKNESS, BOAT_LENGTH);
+
+ BlinnPhongMaterial<real> *bpm = new BlinnPhongMaterial<real>;
+ Color<real> *red = new Color<real>(1, 0.5, 0, 1);
+ bpm->SetSurface(*red);
+ platform->SetMaterial(bpm);
+
this->AddChild(platform);
// Size definition
@@ -81,21 +91,23 @@ void Boat::Animate( const WaterSurface& waterSurface, real time, real dt )
// MainWindow::Get()->IsKeyPressed('a')
///////////////////////////////////////
+
+
UnusedParameter( time );
}
real Boat::GetSizeZ() const
{
// Vous pouvez remplacer cette valeur au besoin.
//Elle doit correspondre à la taille de la coque du bateau
- return 2;
+ return BOAT_LENGTH;
}
real Boat::GetSizeX() const
{
// Vous pouvez remplacer cette valeur au besoin.
//Elle doit correspondre à la taille de la coque du bateau
- return 1;
+ return BOAT_WIDTH;
}
}
@@ -76,7 +76,7 @@ void MainScene::CreateCamera()
mCamera.SetCenter( Vector3<real>( 0, 3, 0 ) );
mCamera.SetRotationTheta( 0 );
mCamera.SetRotationPhi( -PI / 12 );
- mCamera.SetDistance( 8 );
+ mCamera.SetDistance( 20 );
mCamera.SetRotationThetaAxis( Vector3<real>( 0, 1, 0 ) );
mCamera.SetRotationPhiAxis( Vector3<real>( 1, 0, 0 ) );
@@ -89,8 +89,10 @@ void MainScene::CreateCamera()
// vous devrez lui attacher la caméra, remplaçant
// donc la ligne ci-dessous
///////////////////////////////////////
+
mBoat.AddChild( &mCamera );
- //mSceneGraph.AddChild( &mCamera );
+ mBoat.Update();
+
}
void MainScene::CreateLights()
@@ -12,6 +12,7 @@
#include "CoreLib/DirectionalLight.h"
#include "CoreLib/EnvironmentMaterial.h"
#include "CoreLib/Scene.h"
+#include "CoreLib/Transformation.h"
#include "CoreLib/TurntableCamera.h"
namespace Application
@@ -49,6 +50,9 @@ class MainScene
Boat mBoat;
std::vector<Buoy*> mBuoys;
CollisionHandler mCollisionHandler;
+
+
+ // Nos ajouts
};
}
@@ -205,7 +205,7 @@ Matrix4<real> Transformation<real>::GetMatrix() const
Matrix4<real> trans_matrix = GetTranslation();
Matrix4<real> scale_matrix = GetScaling();
- mTransformation = rot_matrix * trans_matrix * scale_matrix;
+ mTransformation = trans_matrix * rot_matrix * scale_matrix;
SetDirtyOff( DirtyTransformation );
}
@@ -54,9 +54,14 @@ void Node<real>::Update()
Node* parent = GetParent();
if (parent != NULL) {
- Transformation<real> parent_transformation = parent->GetLocalTransformation();
- mLocalToGlobal = parent_transformation.GetMatrix() * GetLocalTransformation().GetMatrix();
- mGlobalToLocal = GetLocalTransformation().GetMatrix() * parent_transformation.GetInverseMatrix();
+ Matrix4<real> parent_transformation = parent->GetLocalToGlobal();
+ mLocalToGlobal = parent_transformation * GetLocalTransformation().GetMatrix();
+ parent_transformation.Inverse();
+ mGlobalToLocal = GetLocalTransformation().GetInverseMatrix() * parent_transformation;
+ }
+ else {
+ mLocalToGlobal = GetLocalTransformation().GetMatrix();
+ mGlobalToLocal = GetLocalTransformation().GetInverseMatrix();
}
// Update child nodes

0 comments on commit 7a62b0a

Please sign in to comment.