void init(void)
{
    // initialize vector arrays
    Vector3D::arr = new float[3];
    Vector4D::arr = new float[4];
    Camera::viewMatrix = new float[16];

    /*************CAMERA****************/
    // initializam camera principala
    camera = new Camera();
    camera->type=CameraTypeFPS;
    camera->SetPosition(Vector3D(0,5,15));
    camera->SetForwardVector(Vector3D(0,0,-1));
    camera->SetUpVector(Vector3D(0,1,0));
    camera->SetRightVector(Vector3D(1,0,0));
    // pozitionare camera
    camera->Render();

    /*************OBIECTE****************/
    objects = new Object3D*[MAX_OBJECT_COUNT];
    Object3D *newObject;
    //TODO: Creaza obiecte

    // creaza si seteaza obiectul
    newObject = new Plane(10);
    newObject->setColor(Vector3D(0,0.2,0));
    newObject->setLevelOfDetail(1);
    newObject->setSelectable(true);
    objects[objectCount++]=newObject;

    /*************SISTEME PARTICULE****************/
    textura=LoadTextureBMP("snow.bmp",TEXTURA_FILTRARE_TRILINEAR_ANISOTROPIC);
    textura1=LoadTextureBMP("spark.bmp",TEXTURA_FILTRARE_TRILINEAR_ANISOTROPIC);
    pcamera=new MyParticleCamera(camera);
    pcamera->notifyCameraChange();
    manager=new ParticleManager();
    generateTest(currentTest);

    /*************INITIALIZARE SCENA****************/
    glClearColor(0.0, 0.0, 0.0, 0.0);	// stergem tot
    glEnable(GL_DEPTH_TEST);			// activam verificarea distantei fata de camera (a adancimii)
    glShadeModel(GL_SMOOTH);			// shading model: mod de desenare SMOOTH
    //glEnable(GL_LIGHTING);				// activam iluminarea
    glEnable(GL_NORMALIZE);				// activam normalizarea normalelor
    //glLightModelfv(GL_LIGHT_MODEL_AMBIENT,(Vector4D(0.1,0.1,0.1,1)).Array());	// lumina ambientala
    glEnable(GL_ALPHA_TEST);			// activam testarea parametrului alfa, pentru a permite transparenta
}
Esempio n. 2
0
GanttWidget::GanttWidget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::GanttWidget)
{
    ui->setupUi(this);

    if(layout())
    {
        layout()->setMargin(0);
        layout()->setSpacing(0);
    }

    ui->treeView->setContentsMargins(0,0,0,0);
    ui->treeView->setVerticalScrollMode(QAbstractItemView::ScrollPerPixel);
    ui->treeView->verticalScrollBar()->setStyleSheet("QScrollBar {width:0px;}");
//    ui->treeView->horizontalScrollBar()->setStyleSheet("QScrollBar {height:5px;}");

    ui->treeView->setGraphicsView(ui->ganttView);
    ui->ganttView->setTreeView(ui->treeView);

    m_scene = new GanttScene(this);
    m_model = new GanttTreeModel(NULL,this);

    ui->ganttView->setScene(m_scene);
    ui->treeView->setModel(m_model);

    ui->intervalSlider->setScene(m_scene);
    installEventFilter(ui->intervalSlider);

    connect(m_scene->slider(),SIGNAL(dtChanged(UtcDateTime)),ui->intervalSlider,SLOT(setCurrentTime(UtcDateTime)));

    connect(ui->ganttView, SIGNAL(viewResized(QSize)),m_scene,SLOT(onViewResize(QSize)));
    connect(ui->ganttView, SIGNAL(viewResized(QSize)),ui->intervalSlider,SLOT(updateRange()));
    connect(ui->ganttView, SIGNAL(viewResized(QSize)),ui->intervalSlider,SLOT(updateMinTimeSize(QSize)));


    connect(ui->treeView,SIGNAL(expanded(QModelIndex)), this,SLOT(expanded(QModelIndex)));
    connect(ui->treeView,SIGNAL(collapsed(QModelIndex)), this,SLOT(collapsed(QModelIndex)));
//    connect(m_scene->slider(),SIGNAL(sliderPosChanged(qreal)),this,SLOT(repaintDtHeader()));

    connect(ui->intervalSlider,SIGNAL(beginMoved(long long)),this, SLOT(onSliderMoved()));
    connect(ui->intervalSlider,SIGNAL(endMoved(long long)),this, SLOT(onSliderMoved()));

    connect(ui->intervalSlizedZoom,SIGNAL(increaseButtonClicked(bool)),this,SLOT(newLimits()));
    connect(ui->intervalSlizedZoom,SIGNAL(restoreButtonClicked(bool)),this,SLOT(prevLimits()));

    connect(ui->playerControl,SIGNAL(makeStep(long long)),m_scene,SLOT(makeStep(long long)));
    connect(m_scene,SIGNAL(currentDtChanged(UtcDateTime)),ui->treeView,SLOT(repaintHeader()));


//    GanttInfoNode *test1 = new GanttInfoNode
//            ,*test3 = new GanttInfoNode;
//    GanttInfoLeaf *item11 = new GanttInfoLeaf
//            ,*item12 = new GanttInfoLeaf
//            ,*item21 = new GanttInfoLeaf
//            ,*item31 = new GanttInfoLeaf
//            ,*item32 = new GanttInfoLeaf;

//    item11->setStart(UtcDateTime(QDate(2015,01,29)));
//    item11->setFinish(UtcDateTime(QDate(2015,01,29),QTime(5,0)));
//    item11->setColor(Qt::yellow);
//    item11->setTitle("leaf11");

//    item12->setStart(UtcDateTime(QDate(2015,01,29),QTime(10,0)));
//    item12->setFinish(UtcDateTime(QDate(2015,01,30),QTime(5,0)));
//    item12->setColor(Qt::yellow);
//    item12->setTitle("leaf12");

//    item21->setStart(UtcDateTime(QDate(2015,01,30),QTime(11,0)));
//    item21->setFinish(UtcDateTime(QDate(2015,01,30),QTime(14,0)));
//    item21->setColor(Qt::red);
//    item21->setTitle("leaf21");

//    item31->setStart(UtcDateTime(QDate(2015,01,31),QTime(10,0)));
//    item31->setFinish(UtcDateTime(QDate(2015,02,02),QTime(5,0)));
//    item31->setColor(Qt::green);
//    item31->setTitle("leaf31");

//    item32->setStart(UtcDateTime(QDate(2015,02,02),QTime(10,0)));
//    item32->setFinish(UtcDateTime(QDate(2015,02,02),QTime(20,0)));
//    item32->setColor(Qt::green);
//    item32->setTitle("leaf32");

    QList<GanttInfoItem*> testList = generateTest();



//    item11->setStart(UtcDateTime(QDate(2015,02,02)));
//    item11->setFinish(UtcDateTime(QDate(2015,02,02),QTime(1,30)));
//    item11->setColor(Qt::yellow);
//    item11->setTitle("leaf11");

//    item12->setStart(UtcDateTime(QDate(2015,02,02),QTime(1,30,30)));
//    item12->setFinish(UtcDateTime(QDate(2015,02,02),QTime(1,32)));
//    item12->setColor(Qt::yellow);
//    item12->setTitle("leaf12");

//    item21->setStart(UtcDateTime(QDate(2015,02,02),QTime(1,45)));
//    item21->setFinish(UtcDateTime(QDate(2015,02,02),QTime(2,0)));
//    item21->setColor(Qt::red);
//    item21->setTitle("leaf21");

//    item31->setStart(UtcDateTime(QDate(2015,02,02),QTime(3,0)));
//    item31->setFinish(UtcDateTime(QDate(2015,02,02),QTime(4,0)));
//    item31->setColor(Qt::green);
//    item31->setTitle("leaf31");

//    item32->setStart(UtcDateTime(QDate(2015,02,02),QTime(4,30)));
//    item32->setFinish(UtcDateTime(QDate(2015,02,02),QTime(5,0)));
//    item32->setColor(Qt::green);
//    item32->setTitle("leaf32");

//    test1->append(item11);
//    test1->append(item12);
//    test1->setTitle("node1");

////    test2->append(item21);
//    test3->append(item31);
//    test3->append(item32);
//    test3->setTitle("node2");

//    QList<GanttInfoItem*> testL;
//    testL.append(test1);
//    testL.append(item21);
//    testL.append(test3);

    addItems(testList);
}
// functia pentru procesarea evenimentelor de la tastatura
void keyboard(unsigned char key, int x, int y)
{
    switch(key)
    {
    // cu W A S D 8 2 observatorul se misca prin scena
    case 'w' :
    case 'W' :
    case '8':
        camera->MoveForward(1);
        camera->Render();
        pcamera->notifyCameraChange();
        manager->notifyCameraChange();
        break;
    case 's' :
    case 'S' :
    case '2':
        camera->MoveBackward(1);
        camera->Render();
        pcamera->notifyCameraChange();
        manager->notifyCameraChange();
        break;
    case 'a' :
    case 'A' :
    case '4':
        camera->MoveLeft(1);
        camera->Render();
        pcamera->notifyCameraChange();
        manager->notifyCameraChange();
        break;
    case 'd' :
    case 'D' :
    case '6':
        camera->MoveRight(1);
        camera->Render();
        pcamera->notifyCameraChange();
        manager->notifyCameraChange();
        break;
    case 'f' :
    case 'F' :
        if(animationRunning==true)
        {
            glutIdleFunc(NULL);
            animationRunning=false;
        }
        else
        {
            glutIdleFunc(update);
            animationRunning=true;
        }
        break;
    case '.':
    case '>':
        currentTest=(currentTest+1)%testCount;
        generateTest(currentTest);
        break;
    case ',':
    case '<':
        currentTest=(currentTest-1);
        if(currentTest<0)
            currentTest=testCount-1;
        generateTest(currentTest);
        break;
    case '7':
        camera->MoveUpward(2);
        break;
    case '1':
        camera->MoveDownward(2);
        break;
    //cu ESC se iese din aplicatie
    case ESC:
        exit(0);
        break;
    }
    glutPostRedisplay();
}