PeppeTH
17-07-2011, 18:36
Salve ragazzi arrivata l'estate e toltomi dalle scatole un po' di impegni sono tornato a codare un po'.
ho creato una classe, compilo = 0 errori. Un po' stranito (:asd:) avvio la mia applicazione, crasha. :selo: Crasha nel momento stesso in cui la apro uscendomi la finestra di winzozz 7 "app.exe ha smesso di funzionare... blablabla".
Dopo vari tentativi di capire cos'è l'errore ho scoperto che se escludo dal progetto i 2 file (.h e .cpp) della classe il programma parte senza problemi, mentre se i file sono inclusi nel progetto (anche senza aver istanziato alcun oggetto della classe)... va in crash.:fermfum:
Ecco la classe:
.h
class Camera
{
public:
Camera();
//cameraS
void FixedPointCamera(int, int);
void OnHorPgCamera(b2Body*, IND_Surface);
void FixedCenterScreenCamera();
~Camera();
//Param settings
void SetSpeedMove(int);
void SetSpeedRotat(int);
void SetDelta();
IND_Camera2d* cam;
private:
int speedMoveCamera;
int speedRotation;
static float delta;
static int widthWin;
static int heightWin;
};
.cpp
Camera::Camera()
{
cam = new IND_Camera2d(0.0f, 0.0f);
}
void Camera::FixedPointCamera(int pntX, int pntY)
{
SetDelta();
cam->SetPosition(pntX, pntY);
Graphic::mI->Render->SetCamera2d(cam);
}
void Camera::OnHorPgCamera(b2Body* body, IND_Surface backg)
{
SetDelta();
int posX = (int) body->GetPosition().x;
int maxX = backg.GetWidth();
if(posX > (widthWin/2) && posX < (maxX - (widthWin/2)))
cam->SetPosition(posX, heightWin);
else
cam->SetPosition((widthWin/2), (heightWin/2));
Graphic::mI->Render->SetCamera2d(cam);
}
void Camera::FixedCenterScreenCamera()
{
SetDelta();
cam->SetPosition((widthWin/2), (heightWin/2));
Graphic::mI->Render->SetCamera2d (cam);
}
void Camera::SetSpeedMove(int speed)
{
speedMoveCamera = speed;
}
void Camera::SetSpeedRotat(int speed)
{
speedRotation = speed;
}
void Camera::SetDelta()
{
delta = Graphic::mI->Render->GetFrameTime() / 1000.0f;
}
Camera::~Camera()
{
delete cam;
}
float Camera::delta = 0.0f;
int Camera::widthWin = Graphic::mI->Window->GetWidth();
int Camera::heightWin = Graphic::mI->Window->GetHeight();
Grazie in anticipo a quelli che mi aiuteranno :)
P.S. credo possa avere a che fare con l'allocazione dinamica nel costruttore. :rolleyes:
ho creato una classe, compilo = 0 errori. Un po' stranito (:asd:) avvio la mia applicazione, crasha. :selo: Crasha nel momento stesso in cui la apro uscendomi la finestra di winzozz 7 "app.exe ha smesso di funzionare... blablabla".
Dopo vari tentativi di capire cos'è l'errore ho scoperto che se escludo dal progetto i 2 file (.h e .cpp) della classe il programma parte senza problemi, mentre se i file sono inclusi nel progetto (anche senza aver istanziato alcun oggetto della classe)... va in crash.:fermfum:
Ecco la classe:
.h
class Camera
{
public:
Camera();
//cameraS
void FixedPointCamera(int, int);
void OnHorPgCamera(b2Body*, IND_Surface);
void FixedCenterScreenCamera();
~Camera();
//Param settings
void SetSpeedMove(int);
void SetSpeedRotat(int);
void SetDelta();
IND_Camera2d* cam;
private:
int speedMoveCamera;
int speedRotation;
static float delta;
static int widthWin;
static int heightWin;
};
.cpp
Camera::Camera()
{
cam = new IND_Camera2d(0.0f, 0.0f);
}
void Camera::FixedPointCamera(int pntX, int pntY)
{
SetDelta();
cam->SetPosition(pntX, pntY);
Graphic::mI->Render->SetCamera2d(cam);
}
void Camera::OnHorPgCamera(b2Body* body, IND_Surface backg)
{
SetDelta();
int posX = (int) body->GetPosition().x;
int maxX = backg.GetWidth();
if(posX > (widthWin/2) && posX < (maxX - (widthWin/2)))
cam->SetPosition(posX, heightWin);
else
cam->SetPosition((widthWin/2), (heightWin/2));
Graphic::mI->Render->SetCamera2d(cam);
}
void Camera::FixedCenterScreenCamera()
{
SetDelta();
cam->SetPosition((widthWin/2), (heightWin/2));
Graphic::mI->Render->SetCamera2d (cam);
}
void Camera::SetSpeedMove(int speed)
{
speedMoveCamera = speed;
}
void Camera::SetSpeedRotat(int speed)
{
speedRotation = speed;
}
void Camera::SetDelta()
{
delta = Graphic::mI->Render->GetFrameTime() / 1000.0f;
}
Camera::~Camera()
{
delete cam;
}
float Camera::delta = 0.0f;
int Camera::widthWin = Graphic::mI->Window->GetWidth();
int Camera::heightWin = Graphic::mI->Window->GetHeight();
Grazie in anticipo a quelli che mi aiuteranno :)
P.S. credo possa avere a che fare con l'allocazione dinamica nel costruttore. :rolleyes: