void __fastcall TEQWindowDialog::EQBandwidthKnobMouseMove(TObject *Sender, TShiftState Shift, int X, int Y) { int KnobNr; char tempText[32]; int ObjectNr; union mbn_data data; if (Shift.Contains(ssLeft)) { strcpy(tempText, ((TKnob *)Sender)->Name.c_str()); sscanf(tempText, "EQ%dBandwidthKnob", &KnobNr); KnobNr--; ObjectNr = 1050+(KnobNr*7); int Position = ((TKnob *)Sender)->GetPositionFromXY(X,Y); data.Float = ((Position*9.9)/1023)+0.1; mbn_handler *mbn = ((TAxumSuperModuleForm *)Owner)->mbn; mbnUpdateSensorData(mbn, ObjectNr, data); } }
bool __fastcall TUI_ControlShapeAdd::Start(TShiftState Shift) { TfraShape* F = (TfraShape*)parent_tool->pFrame; if (F->ebAttachShape->Down){ CEditShape* from = dynamic_cast<CEditShape*>(Scene->RayPickObject(UI->ZFar(),UI->m_CurrentRStart, UI->m_CurrentRNorm, OBJCLASS_SHAPE, 0, 0)); if (from){ ObjectList lst; int cnt = Scene->GetQueryObjects(lst,OBJCLASS_SHAPE,1,1,0); if (1!=cnt) ELog.DlgMsg(mtError,"Select one shape."); else{ CEditShape* base = dynamic_cast<CEditShape*>(lst.back()); R_ASSERT(base); if (base!=from){ base->Attach(from); if (!Shift.Contains(ssAlt)){ F->ebAttachShape->Down = false; ResetActionToSelect (); } } } } }else DefaultAddObject(Shift,0,AfterAppendCallback); return false; }
/*-----------------------------------------------------------------*/ void __fastcall TFixeinzugForm::FormKeyDown(TObject *Sender, WORD &Key, TShiftState Shift) { switch (Key) { case VK_SPACE: { DeleteCursor(); DeleteRange(); short old = einzug[scrollx+cx]; if (old==cy+1) einzug[scrollx+cx] = 0; else einzug[scrollx+cx] = short(cy+1); CalcRange(); if (old!=0) { pbFixeinzug->Canvas->Pen->Color = clBtnFace; pbFixeinzug->Canvas->Brush->Color = clBtnFace; int x, y; if (frm->righttoleft) x = (maxx-cx-1)*dx; else x = cx*dx; if (frm->toptobottom) y = (old-1)*dy; else y = (maxy-old)*dy; pbFixeinzug->Canvas->Rectangle (x+2, y+2, x+dx-1, y+dy-1); } DrawData(pbFixeinzug, cx); DrawRange(); CurMove(); DrawCursor(); changed = true; break; } case VK_LEFT: if (Shift.Contains(ssCtrl) && Shift.Contains(ssAlt)) { if (frm->righttoleft) CurDirRight(); else CurDirLeft(); break; } if (frm->righttoleft) CurRight(Shift.Contains(ssCtrl)); else CurLeft (Shift.Contains(ssCtrl)); break; case VK_RIGHT: if (Shift.Contains(ssCtrl) && Shift.Contains(ssAlt)) { if (frm->righttoleft) CurDirLeft(); else CurDirRight(); break; } if (frm->righttoleft) CurLeft(Shift.Contains(ssCtrl)); else CurRight (Shift.Contains(ssCtrl)); break; case VK_UP: if (Shift.Contains(ssCtrl) && Shift.Contains(ssAlt)) { if (frm->toptobottom) CurDirDown(); else CurDirUp(); break; } if (frm->toptobottom) CurDown (Shift.Contains(ssCtrl)); else CurUp (Shift.Contains(ssCtrl)); break; case VK_DOWN: if (Shift.Contains(ssCtrl) && Shift.Contains(ssAlt)) { if (frm->toptobottom) CurDirUp(); else CurDirDown(); break; } if (frm->toptobottom) CurUp (Shift.Contains(ssCtrl)); else CurDown (Shift.Contains(ssCtrl)); break; } }
void __fastcall TForm1::Image1MouseMove(TObject *Sender, TShiftState Shift, int X, int Y) { float auxf; TColor C; char aux[20]; if((X >= BM1->Width) || (Y >= BM1->Height) || (X < 0) || (Y < 0)) { return; } if(Shift.Contains(ssRight )) { TRect R, R2; for(int c1 = 0; c1 < 7; c1++) { for(int c2 = 0; c2 < 7; c2++) { int cx, cy; cx = X - 3 + c2; cy = Y - 3 + c1; R = DG1->CellRect(c2,c1); R2 = DG2->CellRect(c2,c1); auxf = (float)x0 + (float)Foto[cy][cx] / (float)y0; if(auxf >= 256) DG2->Canvas->Brush->Color = (TColor)0x00FFFFFF; else DG2->Canvas->Brush->Color = (TColor)(0x00000000 | ((ULONG)auxf)&0x000000FF | (((ULONG)auxf) << 8)&0x0000FF00 | (((ULONG)auxf) << 16)&0x00FF0000); DG2->Canvas->FillRect(R2); if((cx == X) && (cy == Y)) DG1->Canvas->Font->Color = clRed; else DG1->Canvas->Font->Color = clBlack; if(RBH->Checked == true) wsprintf(aux, "%04X", Foto[cy][cx]); else wsprintf(aux, "%05u", Foto[cy][cx]); if((cx >= 0) && (cx < BM1->Width) && (cy >= 0) && (cy < BM1->Height)) { DG1->Canvas->TextRect(R, R.left + 1, R.top+1, aux); } else { DG1->Canvas->TextRect(DG1->CellRect(c2,c1),1,1, 0); } } } } PX->Caption = X; PY->Caption = Y; PP->Caption = Foto[Y][X]; if(rect == true) { points[0] = Point(X1,Y1); points[1] = Point(X2,Y1); points[2] = Point(X2,Y2); points[3] = Point(X1,Y2); points[4] = Point(X1,Y1); PB1->Canvas->Pen->Color = clWhite; PB1->Canvas->Pen->Mode = pmXor; PB1->Canvas->Polyline(points, 4); X2 = X2F = X; Y2 = Y2F = Y; PX2->Caption = X2; PY2->Caption = Y2; points[0] = Point(X1,Y1); points[1] = Point(X2,Y1); points[2] = Point(X2,Y2); points[3] = Point(X1,Y2); points[4] = Point(X1,Y1); PB1->Canvas->Pen->Color = clWhite; PB1->Canvas->Pen->Mode = pmXor; PB1->Canvas->Polyline(points, 4); } }
// --------------------------------------------------------------------------- // void __fastcall TForm1::FormKeyDown(TObject *Sender, WORD &Key, TShiftState Shift) { String code; code = code.sprintf(L"%1x%02x", Shift.ToInt(), Key); ExecAction(KeyConf->ReadString(L"key", code, NULL).LowerCase()); // Key = NULL; }
void __fastcall TFormVisual::pnlDrawMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) { // определ¤етс¤ позици¤ курсора мыши int ItoX = Mouse->CursorPos.x - Left - (Width - ClientWidth)/2 - pnlDraw->Left-2; int ItoY = Mouse->CursorPos.y - Top + (Width - ClientWidth)/2 - Height + ClientHeight - pnlDraw->Top-2; T2d point; point.x = ItoX; point.y = ItoY; TWork *wPrevSel = VController->selectedWork; VController->findSelectedWork(point); if (WorkMode<=0) { if (!VController->selectedWork || VController->selectedWork!=wPrevSel) WorkMode = -1; else WorkMode = 0; } VController->setNowCoord(ItoX, ItoY); VController->calcMoveShift(ItoX, ItoY); if(Shift.Contains(ssRight)) { // if (scrolled) // scrolled = false; // else { if(!VController->selectedConnection()) // выбрана стрелка { NPointAdd->Visible = true; NWorkPaste->Visible = true; NParallel->Visible = false; NEdit->Visible = false; NAdd->Visible = false; NDel->Visible = false; NCopy->Visible = false; NPaste->Visible = false; } else if (VController->selectedLink != NULL) { NPointAdd->Visible = false; NWorkPaste->Visible = false; NParallel->Visible = true; NEdit->Visible = true; NAdd->Visible = false; NDel->Visible = true; NCopy->Visible = false; NPaste->Visible = false; } else { NPointAdd->Visible = false; NWorkPaste->Visible = false; NParallel->Visible = true; NEdit->Visible = true; NAdd->Visible = true; NDel->Visible = true; NCopy->Visible = true; NPaste->Visible = true; } } } if(Shift.Contains(ssLeft)) { if(tbStage->Down) // добавление вехи { miStage->Click(); tbStage->Down = false; } else if(tbWork->Down) { miWork->Click(); tbWork->Down = false; } else if(tbPayment->Down) { miPay->Click(); tbPayment->Down = false; } else if(tbLink->Down) { miLink->Click(); tbLink->Down = false; } else if(tbConnect->Down) { if (VController->selectedWork != NULL || VController->selectedPayment != NULL) { if (isConnectOrigin) { // select origin connectFirst = VController->selectedWork->ulWorkNum; isConnectOrigin = false; } else { //select endpoint, make connection TDependance *dep=new TDependance; dep->ulWork = connectFirst; if (Shift.Contains(ssShift)) dep->bNeedToStart = false; else dep->bNeedToStart = true; VController->selectedWork->WorkDep.push_back(dep); if(!VController->Controller->checkWork(VController->khr, VController->selectedWork) && (VController->Controller->getWorkByNum(VController->khr, connectFirst))) { VController->selectedWork->WorkDep.pop_back(); ShowMessage("—в¤зи некорректны! "); } else { bool correct = true; for (int i=0; i < VController->selectedWork->WorkDep.size() - 1; i++) { if (VController->selectedWork->WorkDep[i]->ulWork == connectFirst) correct = false; } if (correct) { VController->addConnections(VController->khr, VController->selectedWork); } else { ShowMessage("—в¤зь уже существует!"); VController->selectedWork->WorkDep.pop_back(); } } tbConnect->Down = false; isConnectOrigin = true; connectFirst = 0; VController->cleanSelected(); } } else if (VController->selectedLink != NULL) { if (isConnectOrigin) { // select origin connectFirst = VController->selectedLink->ulWorkNum; isConnectOrigin = false; } else if(VController->Model->getLinkByNum(VController->Controller->selectedKHR, connectFirst) == NULL) { //select endpoint, make connection TDependance *dep=new TDependance; dep->ulWork = connectFirst; if (Shift.Contains(ssShift)) dep->bNeedToStart = false; else dep->bNeedToStart = true; VController->selectedLink->WorkDep.push_back(dep); tbConnect->Down = false; isConnectOrigin = true; connectFirst = 0; VController->Model->addConnections(VController->Controller->selectedKHR, VController->selectedLink); VController->cleanSelected(); } } else if (VController->selectedStage != NULL) { if (isConnectOrigin) { // select origin connectFirst = VController->selectedStage->ulStageNum; isConnectOrigin = false; } else if(VController->Model->getLinkByNum(VController->Controller->selectedKHR, connectFirst) == NULL) { // пока ничего не делаем. не умеем добавл¤ть стрелку в веху tbConnect->Down = false; isConnectOrigin = true; connectFirst = 0; VController->cleanSelected(); } } } } }
bool TUI_ControlWallmarkAdd::End(TShiftState _Shift) { if (!_Shift.Contains(ssAlt))ResetActionToSelect(); if (wm_cnt) Scene->UndoSave (); return true; }
void __fastcall TEQWindowDialog::EQWindowMouseMove(TObject *Sender, TShiftState Shift, int X, int Y) { mbn_handler *mbn = ((TAxumSuperModuleForm *)Owner)->mbn; if (Shift.Contains(ssLeft)) { switch (DragEQ) { case Band1: { float Gain; int Frequency; int ObjectNr; union mbn_data data; EQWindow->GetGainFreqFromXY(&Gain, &Frequency, X, Y); if (EQWindow->GainBand1 != Gain) { ObjectNr = 1048; data.Float = Gain; mbnUpdateSensorData(mbn, ObjectNr, data); } if (EQWindow->FrequencyBand1 != Frequency) { ObjectNr = 1049; data.UInt = Frequency; mbnUpdateSensorData(mbn, ObjectNr, data); } } break; case Band2: { float Gain; int Frequency; int ObjectNr; union mbn_data data; EQWindow->GetGainFreqFromXY(&Gain, &Frequency, X, Y); if (EQWindow->GainBand2 != Gain) { ObjectNr = 1055; data.Float = Gain; mbnUpdateSensorData(mbn, ObjectNr, data); } if (EQWindow->FrequencyBand2 != Frequency) { ObjectNr = 1056; data.UInt = Frequency; mbnUpdateSensorData(mbn, ObjectNr, data); } } break; case Band3: { float Gain; int Frequency; int ObjectNr; union mbn_data data; EQWindow->GetGainFreqFromXY(&Gain, &Frequency, X, Y); if (EQWindow->GainBand3 != Gain) { ObjectNr = 1062; data.Float = Gain; mbnUpdateSensorData(mbn, ObjectNr, data); } if (EQWindow->FrequencyBand3 != Frequency) { ObjectNr = 1063; data.UInt = Frequency; mbnUpdateSensorData(mbn, ObjectNr, data); } } break; case Band4: { float Gain; int Frequency; int ObjectNr; union mbn_data data; EQWindow->GetGainFreqFromXY(&Gain, &Frequency, X, Y); if (EQWindow->GainBand4 != Gain) { ObjectNr = 1069; data.Float = Gain; mbnUpdateSensorData(mbn, ObjectNr, data); } if (EQWindow->FrequencyBand4 != Frequency) { ObjectNr = 1070; data.UInt = Frequency; mbnUpdateSensorData(mbn, ObjectNr, data); } } break; case Band5: { float Gain; int Frequency; int ObjectNr; union mbn_data data; EQWindow->GetGainFreqFromXY(&Gain, &Frequency, X, Y); if (EQWindow->GainBand5 != Gain) { ObjectNr = 1076; data.Float = Gain; mbnUpdateSensorData(mbn, ObjectNr, data); } if (EQWindow->FrequencyBand5 != Frequency) { ObjectNr = 1077; data.UInt = Frequency; mbnUpdateSensorData(mbn, ObjectNr, data); } } break; case Band6: { float Gain; int Frequency; int ObjectNr; union mbn_data data; EQWindow->GetGainFreqFromXY(&Gain, &Frequency, X, Y); if (EQWindow->GainBand6 != Gain) { ObjectNr = 1083; data.Float = Gain; mbnUpdateSensorData(mbn, ObjectNr, data); } if (EQWindow->FrequencyBand6 != Frequency) { ObjectNr = 1084; data.UInt = Frequency; mbnUpdateSensorData(mbn, ObjectNr, data); } } break; } } }
} } mysql_free_result(result); }
bool TUI_ControlAIMapNodeAdd::End(TShiftState _Shift) { if (!_Shift.Contains(ssAlt)) ResetActionToSelect(); if (append_nodes) Scene->UndoSave(); return true; }
//--------------------------------------------------------------------------- void __fastcall TFwCalcMainDlg::FormKeyDown(TObject *Sender, WORD &Key, TShiftState Shift) { // Reset key processed flag m_key_processed = false; // Mark key as processed m_key_processed = true; // Process key switch(Key) { default: m_key_processed = false; // Default handler set the processed flag to false break; case VK_BACK: case VK_DELETE: case VK_ESCAPE: m_engine->ProcessKey(Shift, Key); break; case VK_DECIMAL: m_engine->EnterDecimalSeperator(); break; //case VK_ENTER: case VK_RETURN: m_engine->ProcessKey(Shift, Key); break; case VK_ADD: { if(Shift.Contains(ssShift)) { if(m_engine->SignificantDigits < 19) m_engine->SignificantDigits++; } else m_engine->ProcessChar('+'); } break; case VK_SUBTRACT: { if(Shift.Contains(ssShift)) { if(m_engine->SignificantDigits > 0) m_engine->SignificantDigits--; } else m_engine->ProcessChar('-'); } break; case 'h': case 'H': if(Shift.Contains(ssCtrl)) m_engine->SetBaseMode(eBaseHex); else m_key_processed = false; break; case 'o': case 'O': if(Shift.Contains(ssCtrl)) m_engine->SetBaseMode(eBaseOct); else m_key_processed = false; break; case 'd': case 'D': if(Shift.Contains(ssCtrl)) m_engine->SetBaseMode(eBaseDec); else if(Shift.Contains(ssShift)) m_engine->SetTrigMode(eTrigDeg); else m_key_processed = false; break; case 'G': if(Shift.Contains(ssShift)) m_engine->SetTrigMode(eTrigGrad); else m_key_processed = false; break; case 'R': if(Shift.Contains(ssShift)) m_engine->SetTrigMode(eTrigRad); else m_key_processed = false; break; case 'b': case 'B': if(Shift.Contains(ssCtrl)) m_engine->SetBaseMode(eBaseBin); else m_key_processed = false; break; case VK_CONTROL: AssignLayout(LayoutFromShift(Shift)); break; case VK_SHIFT: AssignLayout(LayoutFromShift(Shift)); break; case VK_F1: if(Shift.Contains(ssCtrl) || Shift.Contains(ssShift)) m_engine->Recall(0); else m_engine->Store(0); break; case VK_F2: if(Shift.Contains(ssCtrl) || Shift.Contains(ssShift)) m_engine->Recall(1); else m_engine->Store(1); break; case VK_F3: if(Shift.Contains(ssCtrl) || Shift.Contains(ssShift)) m_engine->Recall(2); else m_engine->Store(2); break; case VK_F4: if(Shift.Contains(ssCtrl) || Shift.Contains(ssShift)) m_engine->Recall(3); else m_engine->Store(3); break; case VK_F5: if(Shift.Contains(ssCtrl) || Shift.Contains(ssShift)) m_engine->Recall(4); else m_engine->Store(4); break; case VK_F6: if(Shift.Contains(ssCtrl) || Shift.Contains(ssShift)) m_engine->Recall(5); else m_engine->Store(5); break; case VK_F7: if(Shift.Contains(ssCtrl) || Shift.Contains(ssShift)) m_engine->Recall(6); else m_engine->Store(6); break; case VK_F8: if(Shift.Contains(ssCtrl) || Shift.Contains(ssShift)) m_engine->Recall(7); else m_engine->Store(7); break; case VK_F9: if(Shift.Contains(ssCtrl) || Shift.Contains(ssShift)) m_engine->Recall(8); else m_engine->Store(8); break; case VK_F10: if(Shift.Contains(ssCtrl) || Shift.Contains(ssShift)) m_engine->Recall(9); else m_engine->Store(9); break; } PaintBox->Invalidate(); }
//--------------------------------------------------------------------------- void __fastcall TOpenGL_Form::FormKeyDown(TObject *Sender, WORD &Key, TShiftState Shift) { WORD tk = Key; if (!Shift.Contains(ssShift)) tk += 32; // char buf[31]; unsigned char key = tk; static int gen = 30; static int labels = 1; static int sphere = 1; static int external = 1; static int orphan = 1; static int media = 1; static int group = 0; static int incoming = 0; static int selincoming = 0; static int subincoming = 0; static int outgoing = 0; static int seloutgoing = 0; static int suboutgoing = 0; static int rendstyle = 0; static int drawlinks = 1; static int drawnodes = 1; static int showcenter = 0; static int negativehide = 0; static int selsubtree = 0; static int labelright = 0; static int backcolor = 0; static int keepaspect = 0; hv->idle(0); if (key >= '0' && key <= '9') { gen = key-'0'; if (rendstyle) hv->setGenerationNodeLimit(gen); else hv->setGenerationLinkLimit(gen); } else if (key == '*') { hv->setGenerationNodeLimit(99); hv->setGenerationLinkLimit(99); } else if (key == 'l') { labels++; if (labels >= 3) labels = 0; hv->setLabels(labels); } else if (key == 'L') { labelright = !labelright; hv->setLabelToRight(labelright); } else if (key == 'b') { float labsize = hv->getLabelSize(); // fprintf(stderr, "labsize %f\n", labsize); --labsize; hv->setLabelSize(labsize); } else if (key == 'B') { float labsize = hv->getLabelSize(); // fprintf(stderr, "labsize %f\n", labsize); ++labsize; hv->setLabelSize(labsize); } else if (key == 's') { sphere = !(sphere); hv->setSphere(sphere); } else if (key == 'e') { external = !(external); hv->setEnableGroup(1, "external", external); } else if (key == 'o') { orphan = !(orphan); hv->setEnableGroup(1, "orphan", orphan); } else if (key == 'i') { incoming = !(incoming); hv->setDrawBackTo("HV_TOPNODE", incoming, 1); } else if (key == 'j') { selincoming = !(selincoming); hv->setDrawBackTo(prevsel, selincoming, 1); } else if (key == 'k') { subincoming = !(subincoming); hv->setDrawBackTo(prevsel, subincoming, 0); } else if (key == 'u') { outgoing = !(outgoing); hv->setDrawBackFrom("HV_TOPNODE", outgoing, 1); } else if (key == 'v') { seloutgoing = !(seloutgoing); hv->setDrawBackFrom(prevsel, seloutgoing, 1); } else if (key == 'w') { suboutgoing = !(suboutgoing); hv->setDrawBackFrom(prevsel, suboutgoing, 0); } else if (key == 'S') { selsubtree = !(selsubtree); hv->setSelectedSubtree(prevsel, selsubtree); } else if (key == 'c') { hv->gotoCenterNode(HV_ANIMATE); } else if (key == 'C') { showcenter = !(showcenter); hv->setCenterShow(showcenter); } else if (key == 'r') { rendstyle = !(rendstyle); } else if (key == 'R') { backcolor++; if (backcolor >= 3) backcolor = 0; if (backcolor == 0) { hv->setColorBackground(1.0, 1.0, 1.0); hv->setColorSphere(.89, .7, .6); hv->setColorLabel(0.0, 0.0, 0.0); } else if (backcolor == 1) { hv->setColorBackground(0.5, 0.5, 0.5); hv->setColorSphere(.5, .4, .3); hv->setColorLabel(0.0, 0.0, 0.0); } else { hv->setColorBackground(0.0, 0.0, 0.0); hv->setColorSphere(.25, .15, .1); hv->setColorLabel(1.0, 1.0, 1.0); } } else if (key == 'N') { drawlinks = !(drawlinks); hv->setDrawLinks(drawlinks); } else if (key == 'n') { drawnodes = !(drawnodes); hv->setDrawNodes(drawnodes); } else if (key == 'h') { negativehide = !(negativehide); hv->setNegativeHide(negativehide); // } else if (key == 'f') { // char buf[1024]; // if (gets(buf)) // hv->gotoNode(buf, HV_ANIMATE); } else if (key == 'K') { keepaspect = !(keepaspect); hv->setKeepAspect(keepaspect); } else if (key == 'm') { media = !(media); hv->setEnableGroup(0, "image", media); hv->setEnableGroup(0, "text", media); hv->setEnableGroup(0, "application", media); hv->setEnableGroup(0, "audio", media); hv->setEnableGroup(0, "audio", media); hv->setEnableGroup(0, "video", media); hv->setEnableGroup(0, "other", media); // hv->newLayout(NULL); } else if (key == 'g') { group = !(group); hv->setGroupKey(group); } hv->redraw(); // Close(); }
void __fastcall TTestBedForm::FormKeyDown(TObject *Sender, WORD &Key, System::WideChar &KeyChar, TShiftState Shift) { bool modCtrl = Shift.Contains(ssCtrl); switch(Key) { case vkEscape: // Quit Close(); break; case vkLeft: // Pan left if (modCtrl && test) { b2Vec2 newOrigin(2.0f, 0.0f); test->ShiftOrigin(newOrigin); } else { g_camera.m_center.x -= 0.5f; } break; case vkRight: // Pan right if (modCtrl && test) { b2Vec2 newOrigin(-2.0f, 0.0f); test->ShiftOrigin(newOrigin); } else { g_camera.m_center.x += 0.5f; } break; case vkDown: // Pan down if (modCtrl && test) { b2Vec2 newOrigin(0.0f, 2.0f); test->ShiftOrigin(newOrigin); } else { g_camera.m_center.y -= 0.5f; } break; case vkUp: // Pan up if (modCtrl && test) { b2Vec2 newOrigin(0.0f, -2.0f); test->ShiftOrigin(newOrigin); } else { g_camera.m_center.y += 0.5f; } break; case vkHome: // Reset view g_camera.m_zoom = 1.0f; g_camera.m_center.Set(0.0f, 20.0f); break; case vkSpace: // Launch a bomb. if (test) { test->LaunchBomb(); } break; default: switch (KeyChar) { case 'P': case 'p': // Pause settings.pause = !settings.pause; break; case ' ': // Launch a bomb. if (test) { test->LaunchBomb(); } break; case 'R': case 'r': // Reset test delete test; test = entry->createFcn(); break; default: if (test) { test->Keyboard(static_cast<int>(ToUpper(KeyChar))); } } } }
bool __fastcall TUI_ControlObjectAdd::Start(TShiftState Shift) { if (Shift==ssRBOnly){ ExecCommand(COMMAND_SHOWCONTEXTMENU,OBJCLASS_SCENEOBJECT); return false;} TfraObject* fraObject = (TfraObject*)parent_tool->pFrame; VERIFY(fraObject); Fvector p,n; if(!LUI->PickGround(p,UI->m_CurrentRStart,UI->m_CurrentRNorm,1,&n)) return false; { // pick already executed (see top) ESceneObjectTools* ot = dynamic_cast<ESceneObjectTools*>(parent_tool); LPCSTR N; if (ot->IsAppendRandomActive()&&ot->m_AppendRandomObjects.size()){ N = ot->m_AppendRandomObjects[Random.randI(ot->m_AppendRandomObjects.size())].c_str(); }else{ N = ((TfraObject*)parent_tool->pFrame)->Current(); if(!N){ ELog.DlgMsg(mtInformation,"Nothing selected."); return false; } } string256 namebuffer; Scene->GenObjectName(OBJCLASS_SCENEOBJECT, namebuffer, N); CSceneObject *obj = xr_new<CSceneObject>((LPVOID)0,namebuffer); CEditableObject* ref = obj->SetReference(N); if (!ref){ ELog.DlgMsg(mtError,"TUI_ControlObjectAdd:: Can't load reference object."); xr_delete(obj); return false; } /* if (ref->IsDynamic()){ ELog.DlgMsg(mtError,"TUI_ControlObjectAdd:: Can't assign dynamic object."); xr_delete(obj); return false; } */ if (ot->IsAppendRandomActive()){ Fvector S; if (ot->IsAppendRandomRotationActive()){ Fvector p; p.set( Random.randF(ot->m_AppendRandomMinRotation.x,ot->m_AppendRandomMaxRotation.x), Random.randF(ot->m_AppendRandomMinRotation.y,ot->m_AppendRandomMaxRotation.y), Random.randF(ot->m_AppendRandomMinRotation.z,ot->m_AppendRandomMaxRotation.z)); obj->PRotation = p; } if (ot->IsAppendRandomScaleActive()){ Fvector s; if (ot->IsAppendRandomScaleProportional()){ s.x = Random.randF(ot->m_AppendRandomMinScale.x,ot->m_AppendRandomMaxScale.x); s.set (s.x,s.x,s.x); }else{ s.set( Random.randF(ot->m_AppendRandomMinScale.x,ot->m_AppendRandomMaxScale.x), Random.randF(ot->m_AppendRandomMinScale.y,ot->m_AppendRandomMaxScale.y), Random.randF(ot->m_AppendRandomMinScale.z,ot->m_AppendRandomMaxScale.z)); } obj->PScale = s; } } obj->MoveTo(p,n); Scene->SelectObjects(false,OBJCLASS_SCENEOBJECT); Scene->AppendObject( obj ); if (Shift.Contains(ssCtrl)) ExecCommand(COMMAND_SHOW_PROPERTIES); if (!Shift.Contains(ssAlt)) ResetActionToSelect(); } return false; }