void QCSTreeWidget::contextMenuEvent(QContextMenuEvent *event) { QMenu menu(this); if (QCSX_Settings.GetEdit()) { QMenu* primM = menu.addMenu(QIcon(":/images/edit_add.png"),tr("New Primitive")); primM->addAction(tr("Box"),this,SIGNAL(NewBox())); primM->addAction(tr("Multi-Box"),this,SIGNAL(NewMultiBox())); primM->addAction(tr("Sphere"),this,SIGNAL(NewSphere())); primM->addAction(tr("Cylinder"),this,SIGNAL(NewCylinder())); primM->addAction(tr("User Defined"),this,SIGNAL(NewUserDefined())); QMenu* propM = menu.addMenu(QIcon(":/images/edit_add.png"),tr("New Property")); propM->addAction(tr("Material"),this,SIGNAL(NewMaterial())); propM->addAction(tr("Metal"),this,SIGNAL(NewMetal())); propM->addAction(tr("Excitation"),this,SIGNAL(NewExcitation())); propM->addAction(tr("Probe-Box"),this,SIGNAL(NewChargeBox())); propM->addAction(tr("Res-Box"),this,SIGNAL(NewResBox())); propM->addAction(tr("Dump-Box"),this,SIGNAL(NewDumpBox())); menu.addSeparator(); menu.addAction(QIcon(":/images/edit.png"),tr("Edit"),this,SIGNAL(Edit())); menu.addAction(QIcon(":/images/editcopy.png"),tr("Copy"),this,SIGNAL(Copy())); menu.addAction(QIcon(":/images/edit_remove.png"),tr("Delete"),this,SIGNAL(Delete())); } else { menu.addAction(QIcon(":/images/edit.png"),tr("View"),this,SIGNAL(Edit())); } menu.exec(event->globalPos()); }
FBox FBox::TransformProjectBy(const FMatrix& ProjM) const { FVector Vertices[8] = { FVector(Min), FVector(Min.X, Min.Y, Max.Z), FVector(Min.X, Max.Y, Min.Z), FVector(Max.X, Min.Y, Min.Z), FVector(Max.X, Max.Y, Min.Z), FVector(Max.X, Min.Y, Max.Z), FVector(Min.X, Max.Y, Max.Z), FVector(Max) }; FBox NewBox(0); for (int32 VertexIndex = 0; VertexIndex < ARRAY_COUNT(Vertices); VertexIndex++) { FVector4 ProjectedVertex = ProjM.TransformPosition(Vertices[VertexIndex]); NewBox += ((FVector)ProjectedVertex) / ProjectedVertex.W; } return NewBox; }
FBox FBox::InverseTransformBy(const FTransform & M) const { FVector Vertices[8] = { FVector(Min), FVector(Min.X, Min.Y, Max.Z), FVector(Min.X, Max.Y, Min.Z), FVector(Max.X, Min.Y, Min.Z), FVector(Max.X, Max.Y, Min.Z), FVector(Max.X, Min.Y, Max.Z), FVector(Min.X, Max.Y, Max.Z), FVector(Max) }; FBox NewBox(0); for (int32 VertexIndex = 0; VertexIndex < ARRAY_COUNT(Vertices); VertexIndex++) { FVector4 ProjectedVertex = M.InverseTransformPosition(Vertices[VertexIndex]); NewBox += ProjectedVertex; } return NewBox; }
void GameClassic::RefreshClock() { GameTime * global_time = GameTime::GetInstance(); if (1000 < global_time->Read() - last_clock_update) { last_clock_update = global_time->Read(); switch (state) { case PLAYING: if (duration <= 1) { /* let the user release the key to shoot */ if (ActiveTeam().GetWeapon().IsLoading()) break; JukeBox::GetInstance()->Play("default", "end_turn"); SetState(END_TURN); } else { duration--; if (duration == 12) { countdown_sample.Play("default", "countdown-end_turn"); } if (duration > 10) { Interface::GetInstance()->UpdateTimer(duration, false, false); } else { Interface::GetInstance()->UpdateTimer(duration, true, false); } } break; case HAS_PLAYED: if (duration <= 1) { SetState(END_TURN); } else { duration--; Interface::GetInstance()->UpdateTimer(duration, false, false); } break; case END_TURN: if (duration <= 1) { if (IsAnythingMoving()) { duration = 1; // Hack to be sure that nothing is moving since long enough // it avoids giving hand to another team during the end of an explosion for example break; } if (IsGameFinished()) { duration--; break; } if (give_objbox && GetWorld().IsOpen()) { NewBox(); give_objbox = false; break; } else { SetState(PLAYING); break; } } else { duration--; } break; } // switch }// if }
void QCSXCAD::BuildToolBar() { QToolBar *mainTB = addToolBar(tr("General")); mainTB->setObjectName("General_ToolBar"); QSize TBIconSize(16,16); mainTB->setIconSize(TBIconSize); if (QCSX_Settings.GetEdit()) mainTB->addAction(QIcon(":/images/filenew.png"),tr("New"),this,SLOT(New())); if (QCSX_Settings.GetEdit()) mainTB->addAction(QIcon(":/images/down.png"),tr("Import"),this,SLOT(ImportGeometry())); mainTB->addAction(QIcon(":/images/up.png"),tr("Export"),this,SLOT(ExportGeometry())); QToolBar *ItemTB = addToolBar(tr("Item View")); ItemTB->setIconSize(TBIconSize); ItemTB->setObjectName("Item_View_ToolBar"); ItemTB->addAction(tr("CollapseAll"),CSTree,SLOT(collapseAll())); ItemTB->addAction(tr("ExpandAll"),CSTree,SLOT(expandAll())); ItemTB->addAction(QIcon(":/images/bulb.png"),tr("ShowAll"),this,SLOT(ShowAll())); ItemTB->addAction(QIcon(":/images/bulb_off.png"),tr("HideAll"),this,SLOT(HideAll())); QToolBar *newObjct = NULL; QAction* newAct = NULL; if (QCSX_Settings.GetEdit()) { newObjct = addToolBar(tr("add new Primitive")); newObjct->setObjectName("New_Primitive_ToolBar"); newAct = newObjct->addAction(tr("Box"),this,SLOT(NewBox())); newAct->setToolTip(tr("add new Box")); newAct = newObjct->addAction(tr("MultiBox"),this,SLOT(NewMultiBox())); newAct->setToolTip(tr("add new Multi-Box")); newAct = newObjct->addAction(tr("Sphere"),this,SLOT(NewSphere())); newAct->setToolTip(tr("add new Sphere")); newAct = newObjct->addAction(tr("Cylinder"),this,SLOT(NewCylinder())); newAct->setToolTip(tr("add new Cylinder")); newAct = newObjct->addAction(tr("Polygon"),this,SLOT(NewPolygon())); newAct->setToolTip(tr("add new Polygon")); newAct = newObjct->addAction(tr("User Defined"),this,SLOT(NewUserDefined())); newAct->setToolTip(tr("add new User Definied Primitive")); newObjct = addToolBar(tr("add new Property")); newObjct->setObjectName("New_Property_ToolBar"); newAct = newObjct->addAction(tr("Material"),this,SLOT(NewMaterial())); newAct->setToolTip(tr("add new Material-Property")); newAct = newObjct->addAction(tr("Metal"),this,SLOT(NewMetal())); newAct->setToolTip(tr("add new Metal-Property")); newAct = newObjct->addAction(tr("Excitation"),this,SLOT(NewExcitation())); newAct->setToolTip(tr("add new Excitation-Property")); newAct = newObjct->addAction(tr("ProbeBox"),this,SLOT(NewChargeBox())); newAct->setToolTip(tr("add new Probe-Box-Property")); newAct = newObjct->addAction(tr("ResBox"),this,SLOT(NewResBox())); newAct->setToolTip(tr("add new Res-Box-Property")); newAct = newObjct->addAction(tr("DumpBox"),this,SLOT(NewDumpBox())); newAct->setToolTip(tr("add new Dump-Box-Property")); } newObjct = addToolBar(tr("Zoom")); newObjct->setIconSize(TBIconSize); newObjct->setObjectName("Zoom_ToolBar"); newAct = newObjct->addAction(QIcon(":/images/viewmagfit.png"),tr("Zoom fit"),this,SLOT(BestView())); newAct->setToolTip("Zoom to best fit all objects"); viewPlane[0] = newObjct->addAction(GridEditor->GetNormName(0),this,SLOT(setYZ())); viewPlane[0]->setToolTip(tr("Switch to y-z-plane view (x-normal)")); viewPlane[1] = newObjct->addAction(GridEditor->GetNormName(1),this,SLOT(setZX())); viewPlane[1]->setToolTip(tr("Switch to z-x-plane view (y-normal)")); viewPlane[2] = newObjct->addAction(GridEditor->GetNormName(2),this,SLOT(setXY())); viewPlane[2]->setToolTip(tr("Switch to x-y-plane view (z-normal)")); addToolBarBreak(); QActionGroup* ActViewGrp = new QActionGroup(this); newAct = newObjct->addAction(tr("2D"),this,SLOT(View2D())); newAct->setToolTip(tr("Switch to 2D view mode")); ActViewGrp->addAction(newAct); newAct->setCheckable(true); newAct = newObjct->addAction(tr("3D"),this,SLOT(View3D())); newAct->setToolTip(tr("Switch to 3D view mode")); ActViewGrp->addAction(newAct); newAct->setCheckable(true); m_PPview = newObjct->addAction(tr("PP")); m_PPview->setToolTip(tr("Toggle parallel projection view mode")); QObject::connect(m_PPview,SIGNAL(toggled(bool)),this,SLOT(SetParallelProjection(bool))); m_PPview->setCheckable(true); if (QCSX_Settings.GetEdit()) addToolBar(GridEditor->BuildToolbar()); }
QCSXCAD::QCSXCAD(QWidget *parent) : QMainWindow(parent) { QStringList argList=qApp->arguments(); for (int i=1;i<argList.size();++i) { if (argList.at(i).startsWith("-")) QCSX_Settings.parseCommandLineArgument(argList.at(i)); } m_ViewDir = 2; m_RenderDiscModels = QCSX_Settings.GetRenderDiscMaterial(); StructureVTK = new QVTKStructure(); StructureVTK->SetGeometry(this); setCentralWidget(StructureVTK->GetVTKWidget()); CSTree = new QCSTreeWidget(this); QObject::connect(CSTree,SIGNAL(Edit()),this,SLOT(Edit())); QObject::connect(CSTree,SIGNAL(Copy()),this,SLOT(Copy())); QObject::connect(CSTree,SIGNAL(ShowHide()),this,SLOT(ShowHide())); QObject::connect(CSTree,SIGNAL(Delete()),this,SLOT(Delete())); QObject::connect(CSTree,SIGNAL(NewBox()),this,SLOT(NewBox())); QObject::connect(CSTree,SIGNAL(NewMultiBox()),this,SLOT(NewMultiBox())); QObject::connect(CSTree,SIGNAL(NewSphere()),this,SLOT(NewSphere())); QObject::connect(CSTree,SIGNAL(NewCylinder()),this,SLOT(NewCylinder())); QObject::connect(CSTree,SIGNAL(NewUserDefined()),this,SLOT(NewUserDefined())); QObject::connect(CSTree,SIGNAL(NewMaterial()),this,SLOT(NewMaterial())); QObject::connect(CSTree,SIGNAL(NewMetal()),this,SLOT(NewMetal())); QObject::connect(CSTree,SIGNAL(NewExcitation()),this,SLOT(NewExcitation())); QObject::connect(CSTree,SIGNAL(NewChargeBox()),this,SLOT(NewChargeBox())); QObject::connect(CSTree,SIGNAL(NewResBox()),this,SLOT(NewResBox())); QObject::connect(CSTree,SIGNAL(NewDumpBox()),this,SLOT(NewDumpBox())); QDockWidget *dock = new QDockWidget(tr("Properties and Structures"),this); dock->setAllowedAreas(Qt::LeftDockWidgetArea); dock->setWidget(CSTree); dock->setFeatures(QDockWidget::DockWidgetFloatable | QDockWidget::DockWidgetMovable); dock->setObjectName("Properties_and_Structures_Dock"); addDockWidget(Qt::LeftDockWidgetArea,dock); GridEditor = new QCSGridEditor(&clGrid); QObject::connect(GridEditor,SIGNAL(OpacityChange(int)),StructureVTK,SLOT(SetGridOpacity(int))); QObject::connect(GridEditor,SIGNAL(signalDetectEdges(int)),this,SLOT(DetectEdges(int))); QObject::connect(GridEditor,SIGNAL(GridChanged()),StructureVTK,SLOT(RenderGrid())); QObject::connect(GridEditor,SIGNAL(GridPlaneXChanged(int)),StructureVTK,SLOT(RenderGridX(int))); QObject::connect(GridEditor,SIGNAL(GridPlaneYChanged(int)),StructureVTK,SLOT(RenderGridY(int))); QObject::connect(GridEditor,SIGNAL(GridPlaneZChanged(int)),StructureVTK,SLOT(RenderGridZ(int))); dock = new QDockWidget(tr("Rectilinear Grid"),this); dock->setAllowedAreas(Qt::LeftDockWidgetArea); dock->setWidget(GridEditor); dock->setFeatures(QDockWidget::DockWidgetFloatable | QDockWidget::DockWidgetMovable); dock->setObjectName("Rectilinear_Grid_Dock"); addDockWidget(Qt::LeftDockWidgetArea,dock); QParaSet= new QParameterSet(); QObject::connect(QParaSet,SIGNAL(ParameterChanged()),this,SLOT(CheckGeometry())); QObject::connect(QParaSet,SIGNAL(ParameterChanged()),this,SLOT(setModified())); clParaSet=QParaSet; dock = new QDockWidget(tr("Rectilinear Grid - Plane Position"),this); dock->setAllowedAreas(Qt::LeftDockWidgetArea); dock->setWidget(GridEditor->BuildPlanePosWidget()); dock->setFeatures(QDockWidget::DockWidgetFloatable | QDockWidget::DockWidgetMovable); dock->setObjectName("Grid_Plane_Pos"); addDockWidget(Qt::LeftDockWidgetArea,dock); dock = new QDockWidget(tr("Parameter"),this); dock->setAllowedAreas(Qt::LeftDockWidgetArea); dock->setWidget(QParaSet); dock->setFeatures(QDockWidget::DockWidgetFloatable | QDockWidget::DockWidgetMovable); dock->setObjectName("Parameter_Dock"); addDockWidget(Qt::LeftDockWidgetArea,dock); BuildToolBar(); bModified=true; GridEditor->SetOpacity(30); Render(); }