Тема: axelynx
Показать сообщение отдельно
Старый 19.07.2012, 22:38   #299
dsd
Мастер
 
Аватар для dsd
 
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений
(для 1,836 пользователей)
Ответ: axelynx


а куда про баги писать?

class my_Cam{
public:
Camera *cam;
Scene *s;


my_Cam(Scene *sc){
s=sc;
Camera *cam = s->AddCamera();

}

void Update(){
cam->Move(0.1,0,0);
}

};


вот если такой класс делаю, то приложение падает на любой команде сдвигающей камеру. притом теже команды с камерой как в стандартном примере работают. На 107 версии работало, вроде.

#include <axelynx/axelynx.h>
using namespace axelynx;


class my_Cam{
public:
Camera *cam;
Scene *s;


my_Cam(Scene *sc){
s=sc;
Camera *cam = s->AddCamera();

}

void Update(){
cam->Move(0.1,0,0);
}

};

int main()
{
        Engine *eng = Engine::Init();
        Window *wnd = eng->AddWindow(800,600);
        //TODO: Place your resource loading and scene creating code here

        Scene *s = eng->AddScene();
        //Camera *cam = s->AddCamera();
        my_Cam *cam= new my_Cam(s);
        Surface *cube = StandartSurfaces::Cube();
        Entity *body = s->Add(cube);
	StandartShaders::Render::OnlyNormals()->SetUniform(Shader::SU_LIGHTPOS,vec3(0,5,7));
        body->SetShader(StandartShaders::Render::OnlyNormals());
        body->SetPosition(0,0,-6);

        Entity *turret = s->Add(cube);
        turret->SetParent(body);
        turret->SetShader(StandartShaders::Render::OnlyNormals());
        turret->SetPosition(0,0.0,-1.25);
        turret->SetScale(0.25);

        turret = turret->Copy();
        turret->SetPosition(0,0,1.25);

        turret = turret->Copy();
        turret->SetPosition(0,-1.25,0);

        turret = turret->Copy();
        turret->SetPosition(0,1.25,0);

        turret = turret->Copy();
        turret->SetPosition(-1.25,0,0);

        turret = turret->Copy();
        turret->SetPosition(1.25,0,0);

        float dx=0,dy=0;

        while(wnd->isRunning())
        {
                if(KeyDown('A'))
                        dx -= 1.0;
                if(KeyDown('D'))
                        dx += 1.0;
                if(KeyDown('W'))
                        dy -= 1.0;
                if(KeyDown('S'))
                        dy += 1.0;
                //TODO: Place your rendering code here
                float dt = Timer::Delta() * 0.01;

                dx *= 0.95;
                dy *= 0.95;
                body->Turn(dt*dy,dt*dx,0);
                cam->Update();

                s->Render();
                wnd->Flip();
        }
        //TODO: Place your deinitalize code here
        eng->Free();
}
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
HolyDel (20.07.2012)