void UnwrapMod::ActivateActionTable() { pCallback = new UnwrapActionCallback(); pCallback->SetUnwrap(this); if (GetCOREInterface()->GetActionManager()->ActivateActionTable(pCallback, kUnwrapActions) ) { ActionTable *actionTable = GetCOREInterface()->GetActionManager()->FindTable(kUnwrapActions); if (actionTable) { int actionCount = NumElements(spActions)/3; for (int i =0; i < actionCount; i++) { int id = spActions[i*3]; UnwrapAction *action = (UnwrapAction *) actionTable->GetAction(spActions[i*3]); if (action) { action->SetUnwrap(this); } } } } }
void WeightTableWindow::ActivateActionTable() { if (pCallback) DeActivateActionTable(); pCallback = new WeightTableActionCallback(); pCallback->SetWeightTable(this); if (GetCOREInterface()->GetActionManager()->ActivateActionTable(pCallback, kWeightTableActions) ) { ActionTable *actionTable = GetCOREInterface()->GetActionManager()->FindTable(kWeightTableActions); if (actionTable) { for (int i =0; i < actionCount; i++) { WeightTableAction *action = (WeightTableAction *) actionTable->GetAction(actionIDs[i]); if (action) { action->SetWeightTable(this); } } } } }
void AddPlasmaExportMenu() { IMenuManager* pMenuMan = GetCOREInterface()->GetMenuManager(); IMenu* fileMenu = pMenuMan->FindMenu("&File"); int i; bool plasmaExportFound = false; // Make sure our action isn't already in the menu TSTR ourName = GetString(IDS_PLASMA_EXPORT); for (i = 0; i < fileMenu->NumItems(); i++) { IMenuItem* fileMenuItem = fileMenu->GetItem(i); const TSTR& title = fileMenuItem->GetTitle(); if (title == ourName) plasmaExportFound = true; // KLUDGE - MaxAss didn't define the file submenu with an accelerator. // This fixes it. if (title == (CStr)"MAX File Operations") { fileMenuItem->SetUseCustomTitle(true); bool custom = fileMenuItem->GetUseCustomTitle(); fileMenuItem->SetTitle("MAX File Opera&tions"); pMenuMan->UpdateMenuBar(); } } if (!plasmaExportFound) { // Menu item isn't there, add it for (i = 0; i < fileMenu->NumItems(); i++) { IMenuItem* fileMenuItem = fileMenu->GetItem(i); const TSTR& title = fileMenuItem->GetTitle(); // We want to add it after the "Export Selected" menu item if (title == (CStr)"Export Selected...") { ActionTable* pActionTable = GetCOREInterface()->GetActionManager()->FindTable(kActionId); if (!pActionTable) { hsAssert(0, "Action table not found"); return; } IMenuItem* menuItem = GetIMenuItem(); menuItem->SetActionItem(pActionTable->GetAction(kActionExport)); fileMenu->AddItem(menuItem, i+1); pMenuMan->UpdateMenuBar(); return; } } } }
void WeightTableWindow::DeActivateActionTable() { ActionTable *actionTable = GetCOREInterface()->GetActionManager()->FindTable(kWeightTableActions); if (actionTable) { for (int i =0; i < actionCount; i++) { WeightTableAction *action = (WeightTableAction *) actionTable->GetAction(actionIDs[i]); if (action) { action->SetWeightTable(NULL); } } } GetCOREInterface()->GetActionManager()->DeactivateActionTable(pCallback, kWeightTableActions); delete pCallback; pCallback = NULL; }
//action Table methods void UnwrapMod::DeActivateActionTable() { ActionTable *actionTable = GetCOREInterface()->GetActionManager()->FindTable(kUnwrapActions); if (actionTable) { int actionCount = NumElements(spActions)/3; for (int i =0; i < actionCount; i++) { UnwrapAction *action = (UnwrapAction *) actionTable->GetAction(spActions[i*3]); if (action) { action->SetUnwrap(NULL); } } } if (pCallback) { GetCOREInterface()->GetActionManager()->DeactivateActionTable(pCallback, kUnwrapActions); delete pCallback; pCallback = NULL; } }
void plCreateMenu() { #if MAX_VERSION_MAJOR <= 11 AddPlasmaExportMenu(); #endif IMenuManager* pMenuMan = GetCOREInterface()->GetMenuManager(); bool newlyRegistered = pMenuMan->RegisterMenuBarContext(kMyMenuContextId, kMenuName); // Is the Max menu version the most recent? bool wrongVersion = GetPrivateProfileIntW(L"Menu", L"Version", 0, plMaxConfig::GetPluginIni().WideString().data()) < kMenuVersion; if (wrongVersion) { // Delete the old version of the menu IMenu *oldMenu = pMenuMan->FindMenu(kMenuName); if (oldMenu) pMenuMan->UnRegisterMenu(oldMenu); // Update the menu version wchar_t buf[12]; snwprintf(buf, arrsize(buf), L"%d", kMenuVersion); WritePrivateProfileStringW(L"Menu", L"Version", buf, plMaxConfig::GetPluginIni().WideString().data()); } if (wrongVersion || newlyRegistered) { IMenu *pMainMenu = pMenuMan->GetMainMenuBar(); if (!pMainMenu) { hsAssert(0, "Main menu not found"); return; } // Get our action table ActionTable* pActionTable = GetCOREInterface()->GetActionManager()->FindTable(kActionId); if (!pActionTable) { hsAssert(0, "Action table not found"); return; } // Create the Plasma menu IMenu* pPlasmaMenu = GetIMenu(); pPlasmaMenu->SetTitle(kMenuName); // Register the new menu with the system pMenuMan->RegisterMenu(pPlasmaMenu, 0); ///////////////////////////////////////////////// // Add the menu items // IMenuItem* pMenuItem; #if MAX_VERSION_MAJOR >= 12 // Add the export action to the menu pMenuItem = GetIMenuItem(); pMenuItem->SetActionItem(pActionTable->GetAction(kActionExport)); pPlasmaMenu->AddItem(pMenuItem); #endif // Add the save selected action to the menu pMenuItem = GetIMenuItem(); pMenuItem->SetActionItem(pActionTable->GetAction(kActionSaveSel)); pPlasmaMenu->AddItem(pMenuItem); // Add the merge action to the menu pMenuItem = GetIMenuItem(); pMenuItem->SetActionItem(pActionTable->GetAction(kActionMerge)); pPlasmaMenu->AddItem(pMenuItem); // Add the component copy action to the menu pMenuItem = GetIMenuItem(); pMenuItem->SetActionItem(pActionTable->GetAction(kActionCompCopy)); pPlasmaMenu->AddItem(pMenuItem); // Add a separator pMenuItem = GetIMenuItem(); pMenuItem->ActAsSeparator(); pPlasmaMenu->AddItem(pMenuItem); // Add the component manager to the menu pMenuItem = GetIMenuItem(); pMenuItem->SetActionItem(pActionTable->GetAction(kActionComponent)); pPlasmaMenu->AddItem(pMenuItem); // Add the resource collector to the menu pMenuItem = GetIMenuItem(); pMenuItem->SetActionItem(pActionTable->GetAction(kActionResCollect)); pPlasmaMenu->AddItem(pMenuItem); // Add the texture search to the menu pMenuItem = GetIMenuItem(); pMenuItem->SetActionItem(pActionTable->GetAction(kActionTexSearch)); pPlasmaMenu->AddItem(pMenuItem); // Add the age description to the menu pMenuItem = GetIMenuItem(); pMenuItem->SetActionItem(pActionTable->GetAction(kActionAgeDesc)); pPlasmaMenu->AddItem(pMenuItem); // Add a separator pMenuItem = GetIMenuItem(); pMenuItem->ActAsSeparator(); pPlasmaMenu->AddItem(pMenuItem); // Add the Lock Selected to the menu pMenuItem = GetIMenuItem(); pMenuItem->SetActionItem(pActionTable->GetAction(kActionLock)); pPlasmaMenu->AddItem(pMenuItem); // Add the Unlock Selected to the menu pMenuItem = GetIMenuItem(); pMenuItem->SetActionItem(pActionTable->GetAction(kActionUnlock)); pPlasmaMenu->AddItem(pMenuItem); // Add the Reset Selected to the menu pMenuItem = GetIMenuItem(); pMenuItem->SetActionItem(pActionTable->GetAction(kActionReset)); pPlasmaMenu->AddItem(pMenuItem); // Add the SelectNonRenderables to the menu pMenuItem = GetIMenuItem(); pMenuItem->SetActionItem(pActionTable->GetAction(kActionSelectNonRenderables)); pPlasmaMenu->AddItem(pMenuItem); // Create a new menu item to hold the sub-menu IMenuItem* pSubMenuItem1 = GetIMenuItem(); //menu in menu bar... pSubMenuItem1->SetSubMenu(pPlasmaMenu); pMainMenu->AddItem(pSubMenuItem1); pMenuMan->UpdateMenuBar(); // Save the dang menu, in case Max crashes const char *uiDir = GetCOREInterface()->GetDir(APP_UI_DIR); char path[MAX_PATH]; sprintf(path, "%s\\%s", uiDir, "MaxMenus.mnu"); pMenuMan->SaveMenuFile(path); } }
ActionTable* GetEditPolyActions() { TSTR name = GetString (IDS_EDITPOLY_EDIT_POLY); HACCEL hAccel = LoadAccelerators (hInstance, MAKEINTRESOURCE (IDR_ACCEL_EPOLY)); ActionTable* pTab = NULL; pTab = new ActionTable (kEditPolyActionID, kEditPolyActionID, name, hAccel, kNumEPolyActions, epolyActions, hInstance); GetCOREInterface()->GetActionManager()->RegisterActionContext (kEditPolyActionID, name.data()); IActionItemOverrideManager *actionOverrideMan = static_cast<IActionItemOverrideManager*>(GetCOREInterface(IACTIONITEMOVERRIDEMANAGER_INTERFACE )); if(actionOverrideMan) { //register the action items TSTR desc; ActionItem *item = pTab->GetAction(ID_EP_SEL_LEV_OBJ); if(item) { item->GetDescriptionText(desc); actionOverrideMan->RegisterActionItemOverride(item,desc); } /* Kelcey said don't do these guys only the object.. leave in case she changes her mind.. item = pTab->GetAction(ID_EP_SEL_LEV_VERTEX); if(item) { item->GetDescriptionText(desc); actionOverrideMan->RegisterActionItemOverride(item,desc); } item = pTab->GetAction(ID_EP_SEL_LEV_EDGE); if(item) { item->GetDescriptionText(desc); actionOverrideMan->RegisterActionItemOverride(item,desc); } item = pTab->GetAction(ID_EP_SEL_LEV_BORDER); if(item) { item->GetDescriptionText(desc); actionOverrideMan->RegisterActionItemOverride(item,desc); } item = pTab->GetAction(ID_EP_SEL_LEV_FACE); if(item) { item->GetDescriptionText(desc); actionOverrideMan->RegisterActionItemOverride(item,desc); } item = pTab->GetAction(ID_EP_SEL_LEV_ELEMENT); if(item) { item->GetDescriptionText(desc); actionOverrideMan->RegisterActionItemOverride(item,desc); } */ //command overrides item = pTab->GetAction(ID_EP_EDIT_CUT); if(item) { item->GetDescriptionText(desc); actionOverrideMan->RegisterActionItemOverride(item,desc); } //new edit soft selection mode item = pTab->GetAction(ID_EP_EDIT_SS); if(item) { item->GetDescriptionText(desc); actionOverrideMan->RegisterActionItemOverride(item,desc); } item = pTab->GetAction(ID_EP_EDIT_QUICKSLICE); if(item) { item->GetDescriptionText(desc); actionOverrideMan->RegisterActionItemOverride(item,desc); } /* item = pTab->GetAction(ID_EP_EDIT_SLICEPLANE); if(item) { item->GetDescriptionText(desc); actionOverrideMan->RegisterActionItemOverride(item,desc); } */ //face command mdoes item = pTab->GetAction(ID_EP_SUB_BEVEL); if(item) { item->GetDescriptionText(desc); actionOverrideMan->RegisterActionItemOverride(item,desc); } item = pTab->GetAction(ID_EP_SUB_OUTLINE); if(item) { item->GetDescriptionText(desc); actionOverrideMan->RegisterActionItemOverride(item,desc); } item = pTab->GetAction(ID_EP_SUB_INSET); if(item) { item->GetDescriptionText(desc); actionOverrideMan->RegisterActionItemOverride(item,desc); } item = pTab->GetAction(ID_EP_SUB_HINGE); if(item) { item->GetDescriptionText(desc); actionOverrideMan->RegisterActionItemOverride(item,desc); } //less than edge item = pTab->GetAction(ID_EP_SUB_WELD); if(item) { item->GetDescriptionText(desc); actionOverrideMan->RegisterActionItemOverride(item,desc); } //greater edge item = pTab->GetAction(ID_EP_TURN); if(item) { item->GetDescriptionText(desc); actionOverrideMan->RegisterActionItemOverride(item,desc); } item = pTab->GetAction(ID_EP_SURF_EDITTRI); if(item) { item->GetDescriptionText(desc); actionOverrideMan->RegisterActionItemOverride(item,desc); } //chamfer item = pTab->GetAction(ID_EP_SUB_CHAMFER); if(item) { item->GetDescriptionText(desc); actionOverrideMan->RegisterActionItemOverride(item,desc); } //create item = pTab->GetAction(ID_EP_EDIT_CREATE); if(item) { item->GetDescriptionText(desc); actionOverrideMan->RegisterActionItemOverride(item,desc); } //insert item = pTab->GetAction(ID_EP_SUB_INSERTVERT); if(item) { item->GetDescriptionText(desc); actionOverrideMan->RegisterActionItemOverride(item,desc); } //bridge item = pTab->GetAction(ID_EP_SUB_BRIDGE); if(item) { item->GetDescriptionText(desc); actionOverrideMan->RegisterActionItemOverride(item,desc); } //extrude item = pTab->GetAction(ID_EP_SUB_EXTRUDE); if(item) { item->GetDescriptionText(desc); actionOverrideMan->RegisterActionItemOverride(item,desc); } //none constrain item = pTab->GetAction(ID_EP_NONE_CONSTRAINT); if(item) { item->GetDescriptionText(desc); actionOverrideMan->RegisterActionItemOverride(item,desc); } //normal constrain item = pTab->GetAction(ID_EP_NORMAL_CONSTRAINT); if(item) { item->GetDescriptionText(desc); actionOverrideMan->RegisterActionItemOverride(item,desc); } //edge constrain item = pTab->GetAction(ID_EP_EDGE_CONSTRAINT); if(item) { item->GetDescriptionText(desc); actionOverrideMan->RegisterActionItemOverride(item,desc); } //face constrain item = pTab->GetAction(ID_EP_FACE_CONSTRAINT); if(item) { item->GetDescriptionText(desc); actionOverrideMan->RegisterActionItemOverride(item,desc); } //paint item = pTab->GetAction(ID_EP_SS_PAINT); if(item) { item->GetDescriptionText(desc); actionOverrideMan->RegisterActionItemOverride(item,desc); } //paint push/pull item = pTab->GetAction(ID_EP_SS_PAINTPUSHPULL); if(item) { item->GetDescriptionText(desc); actionOverrideMan->RegisterActionItemOverride(item,desc); } //paint relax item = pTab->GetAction(ID_EP_SS_PAINTRELAX); if(item) { item->GetDescriptionText(desc); actionOverrideMan->RegisterActionItemOverride(item,desc); } } return pTab; }