Пример #1
0
void MorphObject::SetupTargetList()
   {
   if (!morphCont) return;
   SendMessage(GetDlgItem(hParams2,IDC_MORPHTARG_LIST),LB_RESETCONTENT,0,0);
   for (int i=0; i<morphCont->NumMorphTargs(); i++) {
      SendMessage(GetDlgItem(hParams2,IDC_MORPHTARG_LIST),
         LB_ADDSTRING,0,(LPARAM)(const TCHAR*)SubAnimName(i));
      }
   if (sel>=0) {
      SendMessage(GetDlgItem(hParams2,IDC_MORPHTARG_LIST),
         LB_SETCURSEL,sel,0);
      EnableWindow(GetDlgItem(hParams2,IDC_CREATE_MORPHKEY),TRUE);
      EnableWindow(GetDlgItem(hParams2,IDC_DELETE_MORPHTARG),TRUE);

      ICustEdit *edit = GetICustEdit(GetDlgItem(hParams2,IDC_MORPHTARG_NAME));
      edit->Enable();
      edit->SetText(SubAnimName(sel));
      ReleaseICustEdit(edit);
   } else {
      EnableWindow(GetDlgItem(hParams2,IDC_CREATE_MORPHKEY),FALSE);
      EnableWindow(GetDlgItem(hParams2,IDC_DELETE_MORPHTARG),FALSE);
      
      ICustEdit *edit = GetICustEdit(GetDlgItem(hParams2,IDC_MORPHTARG_NAME));
      edit->Disable();
      edit->SetText(_T(""));
      ReleaseICustEdit(edit);
      }
   }
Пример #2
0
void SceneViewer::IEnableSetupControls(bool enable)
{
    ICustEdit *edit = GetICustEdit(GetDlgItem(fhDlg, IDC_CLIENT_PATH));
    edit->Enable(enable);

    EnableWindow(GetDlgItem(fhDlg, IDC_DIR), enable);
    EnableWindow(GetDlgItem(fhDlg, IDC_EXE), enable);
    EnableWindow(GetDlgItem(fhDlg, IDC_REUSE_DATA), enable);

    SetWindowText(GetDlgItem(fhDlg, IDC_START), enable ? "Start" : "Stop");
}
Пример #3
0
void
FooControl::set_enable()
{
	if (parent_rollout != NULL && parent_rollout->page != NULL)
	{
		// set spinner enable
		ISpinnerControl *spin = GetISpinner(GetDlgItem(parent_rollout->page, control_ID));
		if (enabled) spin->Enable();
		else spin->Disable();
		ReleaseISpinner(spin);
		// set editbox enable
		ICustEdit *edit = GetICustEdit(GetDlgItem(parent_rollout->page, control_ID+2));
		if (enabled) edit->Enable();
		else edit->Disable();
		ReleaseICustEdit(edit);
		// set caption enable
		HWND ctrl = GetDlgItem(parent_rollout->page, control_ID+1);
		if (ctrl)
			EnableWindow(ctrl, enabled);
	}
}
Пример #4
0
BOOL SceneViewer::DlgProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
{
    switch (msg)
    {
    case WM_INITDIALOG:
        {
            fhDlg = hDlg;

            // Set the exe to use
            HWND hExeCombo = GetDlgItem(hDlg, IDC_EXE);
            ComboBox_AddString(hExeCombo, "Release");
            ComboBox_AddString(hExeCombo, "Debug");
            ComboBox_SetCurSel(hExeCombo, fReleaseExe ? 0 : 1);

            // Set the client path
            const char *path = plMaxConfig::GetClientPath(false, true);
            ICustEdit *edit = GetICustEdit(GetDlgItem(hDlg, IDC_CLIENT_PATH));
            edit->SetText((char*)path);

            // Set the "Load old data" checkbox
            HWND hLoadOld = GetDlgItem(hDlg, IDC_REUSE_DATA);
            Button_SetCheck(hLoadOld, fLoadOld ? BST_CHECKED : BST_UNCHECKED);
            Button_Enable(hLoadOld, SceneSync::Instance().CanLoadOldResMgr());

            // Set the update controls
            float val = float(fUpdateFreq) / 1000.f;
            ISpinnerControl *spin = SetupFloatSpinner(hDlg, IDC_SPINNER, IDC_EDIT, 0.1, 1.f, val);
            spin->Enable(fUpdate);
            CheckDlgButton(hDlg, IDC_UPDATE, fUpdate ? BST_CHECKED : BST_UNCHECKED);

            IEnableSetupControls(!SceneSync::Instance().IsClientRunning());
        }
        return TRUE;

    case WM_COMMAND:
        // Start/Stop SceneViewer
        if (HIWORD(wParam) == BN_CLICKED && LOWORD(wParam) == IDC_START)
        {
            IToggleRunning();
            IEnableSetupControls(!SceneSync::Instance().IsClientRunning());
            return TRUE;
        }
        // Close dialog
        else if (HIWORD(wParam) == BN_CLICKED && LOWORD(wParam) == IDCANCEL)
        {
            DestroyWindow(hDlg);
            fhDlg = NULL;
            return TRUE;
        }
        // Browse for directory
        else if (HIWORD(wParam) == BN_CLICKED && LOWORD(wParam) == IDC_DIR)
        {
            const char *path = plMaxConfig::GetClientPath(true);
            if (path)
            {
                ICustEdit *edit = GetICustEdit(GetDlgItem(hDlg, IDC_CLIENT_PATH));
                edit->SetText((char*)path);
            }

            return TRUE;
        }
        // "Load old data" selection changed
        else if (HIWORD(wParam) == BN_CLICKED && LOWORD(wParam) == IDC_REUSE_DATA)
        {
            fLoadOld = (Button_GetCheck((HWND)lParam) == BST_CHECKED);
            return TRUE;
        }
        // Release/Debug exe selection changed
        else if (HIWORD(wParam) == CBN_SELCHANGE && LOWORD(wParam) == IDC_EXE)
        {
            int sel = ComboBox_GetCurSel((HWND)lParam);
            fReleaseExe = (sel == 0);
            return TRUE;
        }
        else if (HIWORD(wParam) == BN_CLICKED && LOWORD(wParam) == IDC_UPDATE)
        {
            fUpdate = (SendMessage((HWND)lParam, BM_GETCHECK, 0, 0) == BST_CHECKED);

            ISpinnerControl *spin = GetISpinner(GetDlgItem(hDlg, IDC_SPINNER));
            spin->Enable(fUpdate);
            ReleaseISpinner(spin);

            // If update was turned on, send out an update message so any dirty objects
            // will be reconverted right away
            if (fUpdate)
                SceneSync::Instance().SetUpdateFreq(fUpdateFreq);

            return TRUE;
        }
        break;
        
    // Update frequency changed
    case CC_SPINNER_CHANGE:
        if (LOWORD(wParam) == IDC_SPINNER)
        {
            ISpinnerControl *spin = (ISpinnerControl*)lParam;
            float val = spin->GetFVal();
            fUpdateFreq = int(val*1000.f);
            SceneSync::Instance().SetUpdateFreq(fUpdateFreq);
        }
        return TRUE;

    // Type in directory
    case WM_CUSTEDIT_ENTER:
        if (wParam == IDC_CLIENT_PATH)
        {
            ICustEdit *edit = GetICustEdit((HWND)lParam);

            char path[MAX_PATH];
            edit->GetText(path, sizeof(path));
            plMaxConfig::SetClientPath(path);
        }
        return TRUE;
    }

    return FALSE;
}
Пример #5
0
static INT_PTR CALLBACK MorphParamDlgProc2( 
      HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
   {
   MorphObject *mo = DLGetWindowLongPtr<MorphObject*>(hWnd);
   if (!mo && message!=WM_INITDIALOG) return FALSE;

   switch (message) {
      case WM_INITDIALOG: {
         mo = (MorphObject*)lParam;
         DLSetWindowLongPtr(hWnd, lParam);
         mo->hParams2 = hWnd;
         mo->SetupTargetList();        
         break;
         }

      case WM_COMMAND:
         switch(LOWORD(wParam)) {
            case IDC_CREATE_MORPHKEY: {
               TSTR name;
               Matrix3 tm = mo->morphCont->GetMorphTargTM(mo->sel);
               SetMorphTargetPacket pckt(
                  mo->morphCont->GetMorphTarg(mo->sel),name,
                  tm,TRUE);
               theHold.Begin();
               mo->morphCont->SetValue(mo->ip->GetTime(),&pckt);
               theHold.Accept(GetString(IDS_RB_CREATEMORPHKEY));
               mo->ip->RedrawViews(mo->ip->GetTime());
               break;
               }

            case IDC_MORPHTARG_LIST:
               if (HIWORD(wParam)==LBN_SELCHANGE) {
                  mo->sel = SendMessage(
                     GetDlgItem(mo->hParams2,IDC_MORPHTARG_LIST),
                     LB_GETCURSEL,0,0);                  
                  if (mo->sel < 0) {
                     EnableWindow(GetDlgItem(hWnd,IDC_CREATE_MORPHKEY),FALSE);
                     EnableWindow(GetDlgItem(hWnd,IDC_DELETE_MORPHTARG),FALSE);
                     ICustEdit *edit = GetICustEdit(GetDlgItem(hWnd,IDC_MORPHTARG_NAME));
                     edit->Disable();
                     edit->SetText(_T(""));
                     ReleaseICustEdit(edit);
                  } else {
                     EnableWindow(GetDlgItem(hWnd,IDC_CREATE_MORPHKEY),TRUE);
                     EnableWindow(GetDlgItem(hWnd,IDC_DELETE_MORPHTARG),TRUE);
                     ICustEdit *edit = GetICustEdit(GetDlgItem(hWnd,IDC_MORPHTARG_NAME));
                     edit->Enable();
                     edit->SetText(mo->SubAnimName(mo->sel));
                     ReleaseICustEdit(edit);
                     }
                  mo->NotifyDependents(FOREVER,(PartID) mo,REFMSG_BRANCHED_HISTORY_CHANGED);
                  }
               break;

            case IDC_DELETE_MORPHTARG:
               if (mo->sel>=0) {
                  theHold.Begin();
                  mo->morphCont->DeleteMorphTarg(mo->sel);
                  theHold.Accept(GetString(IDS_RB_DELETEMORPHTARG));
                  mo->sel = -1;
                  mo->SetupTargetList();
                  mo->ip->RedrawViews(mo->ip->GetTime());
                  //GetSystemSetting(SYSSET_CLEAR_UNDO);
                  }
               break;               
            }
         break;

      case WM_CUSTEDIT_ENTER:
         if (LOWORD(wParam)==IDC_MORPHTARG_NAME && mo->sel >= 0) {
            ICustEdit *edit = GetICustEdit(GetDlgItem(hWnd,IDC_MORPHTARG_NAME));
            TCHAR buf[256];
            edit->GetText(buf,256);
            mo->morphCont->SetMorphTargName(mo->sel,TSTR(buf));
            mo->SetupTargetList();
            mo->NotifyDependents(FOREVER,0,REFMSG_SUBANIM_STRUCTURE_CHANGED);
            ReleaseICustEdit(edit);          
            }
         break;

      case WM_LBUTTONDOWN:
      case WM_LBUTTONUP:
      case WM_MOUSEMOVE:
         mo->ip->RollupMouseMessage(hWnd,message,wParam,lParam);
         return FALSE;
      
      default:
         return FALSE;
      }
   return TRUE;
   }
Пример #6
0
void plResponderWaitProc::LoadPoint(bool force)
{
    int who = fWaitPB->GetInt(kWaitWho);
    const char *point = fWaitPB->GetStr(kWaitPoint);
    if (point && *point == '\0')
        point = nil;

    CheckRadioButton(fhDlg, IDC_RADIO_FINISH, IDC_RADIO_POINT, point || force ? IDC_RADIO_POINT : IDC_RADIO_FINISH);

    BOOL enableAll = (who != -1);
    EnableWindow(GetDlgItem(fhDlg, IDC_RADIO_FINISH), enableAll);
    EnableWindow(GetDlgItem(fhDlg, IDC_RADIO_POINT), enableAll);

    BOOL enablePoint = ((point != nil) || force) && enableAll;
    EnableWindow(GetDlgItem(fhDlg, IDC_WAIT_POINT), enablePoint);
    ComboBox_ResetContent(GetDlgItem(fhDlg, IDC_WAIT_POINT));

    if (enableAll)
    {
        IParamBlock2 *pb = (IParamBlock2*)fStatePB->GetReferenceTarget(kStateCmdParams, 0, who);
        plResponderCmd *cmd = plResponderCmd::Find(pb);

        // KLUDGE - stupid one-shot needs editable box
        if (cmd == &(plResponderCmdOneShot::Instance()))
        {
            ShowWindow(GetDlgItem(fhDlg, IDC_WAIT_POINT), SW_HIDE);

            HWND hEdit = GetDlgItem(fhDlg, IDC_MARKER_EDIT);
            ShowWindow(hEdit, SW_SHOW);
            ICustEdit *custEdit = GetICustEdit(hEdit);
            custEdit->SetText(point ? (char*)point : "");
        }
        else
        {
            ShowWindow(GetDlgItem(fhDlg, IDC_WAIT_POINT), SW_SHOW);

            HWND hEdit = GetDlgItem(fhDlg, IDC_MARKER_EDIT);
            ShowWindow(hEdit, SW_HIDE);

            plResponderCmd::WaitPoints waitPoints;
            cmd->GetWaitPoints(pb, waitPoints);

            HWND hCombo = GetDlgItem(fhDlg, IDC_WAIT_POINT);
            ComboBox_ResetContent(hCombo);

            if (waitPoints.size() == 0)
            {
                EnableWindow(GetDlgItem(fhDlg, IDC_RADIO_POINT), FALSE);
                EnableWindow(GetDlgItem(fhDlg, IDC_WAIT_POINT), FALSE);
            }
            else
            {
                for (int i = 0; i < waitPoints.size(); i++)
                {
                    const char *marker = waitPoints[i].c_str();
                    int idx = ComboBox_AddString(hCombo, marker);
                    if (point && !strcmp(point, marker))
                        ComboBox_SetCurSel(hCombo, idx);
                }
            }
        }
    }
}
Пример #7
0
BOOL plResponderWaitProc::DlgProc(TimeValue t, IParamMap2 *pm, HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
{
    switch (msg)
    {
        case WM_INITDIALOG:
        {
            fhDlg = hDlg;

            fWaitPB = pm->GetParamBlock();

            ResponderWait::FixupWaitBlock(fWaitPB);

            IParamBlock2 *pb = GetCmdParams(fCurCmd);
            plResponderCmd *cmd = plResponderCmd::Find(pb);
            pm->Enable(kWaitMe, cmd->IsWaitable(pb));

            LoadWho();
            LoadPoint();
            return TRUE;
        }

        case WM_CUSTEDIT_ENTER:
            if (wParam == IDC_MARKER_EDIT)
            {
                ICustEdit *edit = GetICustEdit((HWND)lParam);
                char buf[256];
                edit->GetText(buf, sizeof(buf));
                fWaitPB->SetValue(kWaitPoint, 0, buf);

                return TRUE;
            }
            break;

        case WM_COMMAND:
        {
            int code = HIWORD(wParam);
            int id = LOWORD(wParam);

            if (id == IDC_CHECK_WAIT && code == BN_CLICKED)
            {
                BOOL checked = (IsDlgButtonChecked(hDlg, IDC_CHECK_WAIT) == BST_CHECKED);
                if (!checked)
                {
                    fWaitPB->SetValue(kWaitWho, 0, -1);
                    fWaitPB->SetValue(kWaitPoint, 0, "");

                    LoadPoint();

                    HWND hWho = GetDlgItem(hDlg, IDC_WAIT_WHO);
                    EnableWindow(hWho, FALSE);
                    ComboBox_ResetContent(hWho);
                }
                else
                {
                    LoadWho(true);
                    LoadPoint();
                }

                return TRUE;
            }
            else if (id == IDC_WAIT_WHO && code == CBN_SELCHANGE)
            {
                HWND hWho = (HWND)lParam;
                int who = ComboBox_GetCurSel(hWho);
                int idx = ComboBox_GetItemData(hWho, who);
                fWaitPB->SetValue(kWaitWho, 0, idx);

                LoadPoint();
                return TRUE;
            }
            else if (id == IDC_RADIO_FINISH && code == BN_CLICKED)
            {
                fWaitPB->SetValue(kWaitPoint, 0, "");
                LoadPoint();
                return TRUE;
            }
            else if (id == IDC_RADIO_POINT && code == BN_CLICKED)
            {
                LoadPoint(true);
                return TRUE;
            }
            else if (id == IDC_WAIT_POINT && code == CBN_SELCHANGE)
            {
                HWND hPoint = (HWND)lParam;
                if (ComboBox_GetCurSel(hPoint) != CB_ERR)
                {
                    char buf[256];
                    ComboBox_GetText(hPoint, buf, sizeof(buf));
                    fWaitPB->SetValue(kWaitPoint, 0, buf);
                }
                return TRUE;
            }
            break;
        }
    }

    return FALSE;
}
Пример #8
0
// --[  Method  ]---------------------------------------------------------------
//
//  - Class     : CStravaganzaMaxTools
//
//  - prototype : void ReadConfig(bool bLoadDefaults = false)
//
//  - Purpose   : Initializes the tool parameters, reading the previous
//                configuration from a cfg file or creating default values.
//                If bLoadDefaults is true, the config file won't be read and
//                default values will be assigned.
//
// -----------------------------------------------------------------------------
void CStravaganzaMaxTools::ReadConfig(bool bLoadDefaults)
{
	if(!m_hPanel) return;

	ISpinnerControl* pMaxSpin;
	ICustEdit*       pMaxEdit;
	CInputFile cfgFile;

	m_bPreprocessMesh         = true;
	m_bUseLights              = true;
	m_eAnimType               = ANIMATION_SAMPLING;
	m_nAnimCheckStep          = 20;
	m_nNumPosSamplesPerSec    = 30;
	m_nNumSclSamplesPerSec    = 30;
	m_nNumRotSamplesPerSec    = 30;
	m_nNumCamSettingsPerSec   = 15;
	m_nNumLightSettingsPerSec = 15;

	m_strFile                 = "";
	m_bCopyTextures           = true;
	m_strTexturePath          = "";	

	m_ePreviewType            = CRenderVisitor::MODE_SOLID;
	m_bFullscreen             = false;
	m_bLoop                   = true;
	m_nPreviewResX            = 800;
	m_nPreviewResY            = 600;
	m_fViewportHeight         = 1.0f;
	m_bShowStats              = true;
	m_bRenderToAvi            = false;
	m_strAviFile              = "";
	m_strPreviewCamera        = "";

	if(cfgFile.Open(m_strCfgFile, false) && !bLoadDefaults)
	{
		int nValue;

		// Common options

		cfgFile.ReadInt(&nValue);
		m_bPreprocessMesh = nValue ? true : false;

		cfgFile.ReadInt(&nValue);
		m_bUseLights = nValue ? true : false;

		m_fStartTime = TICKS_TO_SECONDS(m_pMaxInterface->GetAnimRange().Start());
		m_fEndTime   = TICKS_TO_SECONDS(m_pMaxInterface->GetAnimRange().End());

		cfgFile.ReadInt(&m_nAnimCheckStep);
		cfgFile.ReadInt(&m_nNumPosSamplesPerSec);
		cfgFile.ReadInt(&m_nNumSclSamplesPerSec);
		cfgFile.ReadInt(&m_nNumRotSamplesPerSec);
		cfgFile.ReadInt(&m_nNumCamSettingsPerSec);
		cfgFile.ReadInt(&m_nNumLightSettingsPerSec);

		cfgFile.ReadInt(&nValue);

		switch(nValue)
		{
		case ANIMATION_SAMPLING: m_eAnimType = ANIMATION_SAMPLING; break;
		case ANIMATION_MAXKEYS:  m_eAnimType = ANIMATION_MAXKEYS;  break;
		}

		// Export options

		cfgFile.ReadStringZero(&m_strFile);
		cfgFile.ReadInt(&nValue);
		m_bCopyTextures = nValue ? true : false;
		cfgFile.ReadStringZero(&m_strTexturePath);

		// Preview options

		cfgFile.ReadStringZero(&m_strPreviewCamera);
		FillCameraCombobox(GetDlgItem(m_hPanel, IDC_COMBO_CAMERA), m_pMaxInterface->GetRootNode());

		cfgFile.ReadInt(&nValue);
		switch(nValue)
		{
		case CRenderVisitor::MODE_WIREFRAME:  m_ePreviewType = CRenderVisitor::MODE_WIREFRAME;  break;
		case CRenderVisitor::MODE_SOLID:      m_ePreviewType = CRenderVisitor::MODE_SOLID;      break;
		case CRenderVisitor::MODE_FULLDETAIL: m_ePreviewType = CRenderVisitor::MODE_FULLDETAIL; break;
		}

		cfgFile.ReadInt(&nValue);
		m_bFullscreen = nValue ? true : false;

		cfgFile.ReadInt(&nValue);
		m_bLoop = nValue ? true : false;

		cfgFile.ReadInt  (&m_nPreviewResX);
		cfgFile.ReadInt  (&m_nPreviewResY);
		cfgFile.ReadFloat(&m_fViewportHeight);
		cfgFile.ReadInt  (&nValue);
		m_bShowStats = nValue ? true : false;
		cfgFile.ReadInt  (&nValue);
		m_bRenderToAvi = nValue ? true : false;
		cfgFile.ReadStringZero(&m_strAviFile);
	}

	cfgFile.Close();

	// Common

	CheckDlgButton(m_hPanel, IDC_CHECK_PREPROCESSMESHES, m_bPreprocessMesh ? BST_CHECKED : BST_UNCHECKED);
	CheckDlgButton(m_hPanel, IDC_CHECK_USELIGHTS,        m_bUseLights      ? BST_CHECKED : BST_UNCHECKED);

	EnableWindow(GetDlgItem(m_hPanel, IDC_RADIO_USEMAXKEYS), FALSE);

	switch(m_eAnimType)
	{
	case ANIMATION_SAMPLING:

		CheckRadioButton(m_hPanel, IDC_RADIO_USESAMPLING, IDC_RADIO_USEMAXKEYS, IDC_RADIO_USESAMPLING);
		break;

	case ANIMATION_MAXKEYS:

		CheckRadioButton(m_hPanel, IDC_RADIO_USESAMPLING, IDC_RADIO_USEMAXKEYS, IDC_RADIO_USEMAXKEYS);
		break;
	}

	pMaxSpin = GetISpinner(GetDlgItem(m_hPanel, IDC_SPIN_STARTTIME));
	pMaxSpin->LinkToEdit(GetDlgItem(m_hPanel, IDC_EDIT_STARTTIME), EDITTYPE_FLOAT);
	pMaxSpin->SetLimits(m_fStartTime, m_fEndTime, TRUE);
	pMaxSpin->SetScale(0.01f);
	pMaxSpin->SetValue(m_fStartTime, FALSE);
	ReleaseISpinner(pMaxSpin);

	pMaxSpin = GetISpinner(GetDlgItem(m_hPanel, IDC_SPIN_ENDTIME));
	pMaxSpin->LinkToEdit(GetDlgItem(m_hPanel, IDC_EDIT_ENDTIME), EDITTYPE_FLOAT);
	pMaxSpin->SetLimits(m_fStartTime, m_fEndTime, TRUE);
	pMaxSpin->SetScale(0.01f);
	pMaxSpin->SetValue(m_fEndTime, FALSE);
	ReleaseISpinner(pMaxSpin);

	pMaxSpin = GetISpinner(GetDlgItem(m_hPanel, IDC_SPIN_ANIMCHECKSTEP));
	pMaxSpin->LinkToEdit(GetDlgItem(m_hPanel, IDC_EDIT_ANIMCHECKSTEP), EDITTYPE_INT);
	pMaxSpin->SetLimits(0, 100, TRUE);
	pMaxSpin->SetScale(1);
	pMaxSpin->SetValue(m_nAnimCheckStep, FALSE);
	ReleaseISpinner(pMaxSpin);

	pMaxSpin = GetISpinner(GetDlgItem(m_hPanel, IDC_SPIN_POSSAMPLINGFREQ));
	pMaxSpin->LinkToEdit(GetDlgItem(m_hPanel, IDC_EDIT_POSSAMPLINGFREQ), EDITTYPE_INT);
	pMaxSpin->SetLimits(0, 100, TRUE);
	pMaxSpin->SetScale(1);
	pMaxSpin->SetValue(m_nNumPosSamplesPerSec, FALSE);
	ReleaseISpinner(pMaxSpin);

	pMaxSpin = GetISpinner(GetDlgItem(m_hPanel, IDC_SPIN_SCLSAMPLINGFREQ));
	pMaxSpin->LinkToEdit(GetDlgItem(m_hPanel, IDC_EDIT_SCLSAMPLINGFREQ), EDITTYPE_INT);
	pMaxSpin->SetLimits(0, 100, TRUE);
	pMaxSpin->SetScale(1);
	pMaxSpin->SetValue(m_nNumSclSamplesPerSec, FALSE);
	ReleaseISpinner(pMaxSpin);

	pMaxSpin = GetISpinner(GetDlgItem(m_hPanel, IDC_SPIN_ROTSAMPLINGFREQ));
	pMaxSpin->LinkToEdit(GetDlgItem(m_hPanel, IDC_EDIT_ROTSAMPLINGFREQ), EDITTYPE_INT);
	pMaxSpin->SetLimits(0, 100, TRUE);
	pMaxSpin->SetScale(1);
	pMaxSpin->SetValue(m_nNumRotSamplesPerSec, FALSE);
	ReleaseISpinner(pMaxSpin);

	// Export

	pMaxEdit = GetICustEdit(GetDlgItem(m_hPanel, IDC_EDIT_DESTINATIONFILE));
	pMaxEdit->SetText((char*)m_strFile.data());
	pMaxEdit->SetLeading(2);
	ReleaseICustEdit(pMaxEdit);

	CheckDlgButton(m_hPanel, IDC_CHECK_COPYTEXTURES, m_bCopyTextures ? BST_CHECKED : BST_UNCHECKED);

	pMaxEdit = GetICustEdit(GetDlgItem(m_hPanel, IDC_EDIT_TEXTUREFOLDER));
	pMaxEdit->SetText((char*)m_strTexturePath.data());
	pMaxEdit->SetLeading(2);
	ReleaseICustEdit(pMaxEdit);

	EnableWindow(GetDlgItem(m_hPanel, IDC_EDIT_TEXTUREFOLDER),   m_bCopyTextures ? TRUE : FALSE);
	EnableWindow(GetDlgItem(m_hPanel, IDC_BUTTON_TEXTUREFOLDER), m_bCopyTextures ? TRUE : FALSE);

	// Preview

	switch(m_ePreviewType)
	{
	case CRenderVisitor::MODE_WIREFRAME:
		
		CheckRadioButton(m_hPanel, IDC_RADIO_WIREFRAME, IDC_RADIO_FULLDETAIL, IDC_RADIO_WIREFRAME);
		break;

	case CRenderVisitor::MODE_SOLID:
		
		CheckRadioButton(m_hPanel, IDC_RADIO_WIREFRAME, IDC_RADIO_FULLDETAIL, IDC_RADIO_SOLID);
		break;

	case CRenderVisitor::MODE_FULLDETAIL:
		
		CheckRadioButton(m_hPanel, IDC_RADIO_WIREFRAME, IDC_RADIO_FULLDETAIL, IDC_RADIO_FULLDETAIL);
		break;
	}

	CheckDlgButton(m_hPanel, IDC_CHECK_FULLSCREEN, m_bFullscreen ? BST_CHECKED : BST_UNCHECKED);
	CheckDlgButton(m_hPanel, IDC_CHECK_LOOP,       m_bLoop       ? BST_CHECKED : BST_UNCHECKED);

	pMaxEdit = GetICustEdit(GetDlgItem(m_hPanel, IDC_EDIT_RESW));
	pMaxEdit->SetText(m_nPreviewResX);
	ReleaseICustEdit(pMaxEdit);

	pMaxEdit = GetICustEdit(GetDlgItem(m_hPanel, IDC_EDIT_RESH));
	pMaxEdit->SetText(m_nPreviewResY);
	ReleaseICustEdit(pMaxEdit);

	pMaxSpin = GetISpinner(GetDlgItem(m_hPanel, IDC_SPIN_VIEWPORTHEIGHT));
	pMaxSpin->LinkToEdit(GetDlgItem(m_hPanel, IDC_EDIT_VIEWPORTHEIGHT), EDITTYPE_FLOAT);
	pMaxSpin->SetLimits(0.0f, 1.0f, TRUE);
	pMaxSpin->SetScale(0.01f);
	pMaxSpin->SetValue(m_fViewportHeight, FALSE);
	ReleaseISpinner(pMaxSpin);

	CheckDlgButton(m_hPanel, IDC_CHECK_SHOWSTATS,   m_bShowStats   ? BST_CHECKED : BST_UNCHECKED);
	CheckDlgButton(m_hPanel, IDC_CHECK_RENDERTOAVI, m_bRenderToAvi ? BST_CHECKED : BST_UNCHECKED);

	pMaxEdit = GetICustEdit(GetDlgItem(m_hPanel, IDC_EDIT_AVIFILE));
	pMaxEdit->SetText((char*)m_strAviFile.data());
	pMaxEdit->SetLeading(2);
	ReleaseICustEdit(pMaxEdit);

	EnableWindow(GetDlgItem(m_hPanel, IDC_EDIT_AVIFILE),   m_bRenderToAvi ? TRUE : FALSE);
	EnableWindow(GetDlgItem(m_hPanel, IDC_BUTTON_AVIFILE), m_bRenderToAvi ? TRUE : FALSE);
}
Пример #9
0
// --[  Method  ]---------------------------------------------------------------
//
//  - Class     : CStravaganzaMaxTools
//
//  - prototype : void SaveConfig()
//
//  - Purpose   : Saves the panel parameters to a file.
//
// -----------------------------------------------------------------------------
void CStravaganzaMaxTools::SaveConfig()
{
	if(!m_hPanel) return;

	ISpinnerControl* pMaxSpin;
	ICustEdit*       pMaxEdit;

	int  nSelectedItem;
	char szAuxBuffer[MAX_PATH];
	COutputFile cfgFile;

	// GET SETTINGS FROM PANEL

	// Common

	m_bPreprocessMesh = IsDlgButtonChecked(m_hPanel, IDC_CHECK_PREPROCESSMESHES) == BST_CHECKED ? true : false;
	m_bUseLights      = IsDlgButtonChecked(m_hPanel, IDC_CHECK_USELIGHTS)        == BST_CHECKED ? true : false;

	pMaxSpin = GetISpinner(GetDlgItem(m_hPanel, IDC_SPIN_STARTTIME));
	m_fStartTime = pMaxSpin->GetFVal();
	ReleaseISpinner(pMaxSpin);

	pMaxSpin = GetISpinner(GetDlgItem(m_hPanel, IDC_SPIN_ENDTIME));
	m_fEndTime = pMaxSpin->GetFVal();
	ReleaseISpinner(pMaxSpin);

	if(IsDlgButtonChecked(m_hPanel, IDC_RADIO_USESAMPLING) == BST_CHECKED)
	{
		m_eAnimType = ANIMATION_SAMPLING;
	}
	else if(IsDlgButtonChecked(m_hPanel, IDC_RADIO_USEMAXKEYS) == BST_CHECKED)
	{
		m_eAnimType = ANIMATION_MAXKEYS;
	}

	pMaxSpin = GetISpinner(GetDlgItem(m_hPanel, IDC_SPIN_ANIMCHECKSTEP));
	m_nAnimCheckStep = pMaxSpin->GetIVal();
	ReleaseISpinner(pMaxSpin);

	pMaxSpin = GetISpinner(GetDlgItem(m_hPanel, IDC_SPIN_POSSAMPLINGFREQ));
	m_nNumPosSamplesPerSec = pMaxSpin->GetIVal();
	ReleaseISpinner(pMaxSpin);

	pMaxSpin = GetISpinner(GetDlgItem(m_hPanel, IDC_SPIN_SCLSAMPLINGFREQ));
	m_nNumSclSamplesPerSec = pMaxSpin->GetIVal();
	ReleaseISpinner(pMaxSpin);

	pMaxSpin = GetISpinner(GetDlgItem(m_hPanel, IDC_SPIN_ROTSAMPLINGFREQ));
	m_nNumRotSamplesPerSec = pMaxSpin->GetIVal();
	ReleaseISpinner(pMaxSpin);

	// Export

	pMaxEdit = GetICustEdit(GetDlgItem(m_hPanel, IDC_EDIT_DESTINATIONFILE));
	pMaxEdit->GetText(szAuxBuffer, MAX_PATH);
	ReleaseICustEdit(pMaxEdit);
	m_strFile = szAuxBuffer;

	m_bCopyTextures = IsDlgButtonChecked(m_hPanel, IDC_CHECK_COPYTEXTURES) == BST_CHECKED ? true : false;

	pMaxEdit = GetICustEdit(GetDlgItem(m_hPanel, IDC_EDIT_TEXTUREFOLDER));
	pMaxEdit->GetText(szAuxBuffer, MAX_PATH);
	ReleaseICustEdit(pMaxEdit);
	m_strTexturePath = szAuxBuffer;

	// Preview

	// Get selected combo box camera

	nSelectedItem = SendMessage(GetDlgItem(m_hPanel, IDC_COMBO_CAMERA), CB_GETCURSEL, 0, 0);

	if(nSelectedItem == CB_ERR) // Items?
	{
		m_strPreviewCamera = "";
	}
	else
	{
		// Get selected item

		memset(szAuxBuffer, 0, MAX_PATH);

		if(SendMessage(GetDlgItem(m_hPanel, IDC_COMBO_CAMERA), CB_GETLBTEXT, (WPARAM)nSelectedItem, (LPARAM)(LPCSTR)szAuxBuffer) == CB_ERR)
		{
			CLogger::ErrorWindow("Error getting camera selection");
		}
		else
		{
			m_strPreviewCamera = szAuxBuffer;
		}
	}

	if(IsDlgButtonChecked(m_hPanel, IDC_RADIO_SOLID) == BST_CHECKED)
	{
		m_ePreviewType = CRenderVisitor::MODE_SOLID;
	}
	else if(IsDlgButtonChecked(m_hPanel, IDC_RADIO_WIREFRAME) == BST_CHECKED)
	{
		m_ePreviewType = CRenderVisitor::MODE_WIREFRAME;
	}
	else if(IsDlgButtonChecked(m_hPanel, IDC_RADIO_FULLDETAIL) == BST_CHECKED)
	{
		m_ePreviewType = CRenderVisitor::MODE_FULLDETAIL;
	}

	m_bFullscreen = IsDlgButtonChecked(m_hPanel, IDC_CHECK_FULLSCREEN) == BST_CHECKED ? true : false;
	m_bLoop       = IsDlgButtonChecked(m_hPanel, IDC_CHECK_LOOP)       == BST_CHECKED ? true : false;

	int  nAux;
	BOOL valid;

	pMaxEdit = GetICustEdit(GetDlgItem(m_hPanel, IDC_EDIT_RESW));
	nAux = pMaxEdit->GetInt(&valid);
	if(valid) m_nPreviewResX = nAux; else pMaxEdit->SetText(m_nPreviewResX);
	ReleaseICustEdit(pMaxEdit);

	pMaxEdit = GetICustEdit(GetDlgItem(m_hPanel, IDC_EDIT_RESH));
	nAux = pMaxEdit->GetInt(&valid);
	if(valid) m_nPreviewResY = nAux; else pMaxEdit->SetText(m_nPreviewResY);
	ReleaseICustEdit(pMaxEdit);

	pMaxSpin = GetISpinner(GetDlgItem(m_hPanel, IDC_SPIN_VIEWPORTHEIGHT));
	m_fViewportHeight = pMaxSpin->GetFVal();
	ReleaseISpinner(pMaxSpin);

	m_bShowStats   = IsDlgButtonChecked(m_hPanel, IDC_CHECK_SHOWSTATS)   == BST_CHECKED ? true : false;
	m_bRenderToAvi = IsDlgButtonChecked(m_hPanel, IDC_CHECK_RENDERTOAVI) == BST_CHECKED ? true : false;

	pMaxEdit = GetICustEdit(GetDlgItem(m_hPanel, IDC_EDIT_AVIFILE));
	pMaxEdit->GetText(szAuxBuffer, MAX_PATH);
	ReleaseICustEdit(pMaxEdit);
	m_strAviFile = szAuxBuffer;

	// SAVE SETTINGS

	if(cfgFile.Open(m_strCfgFile, false, false) == false)
	{
		return;
	}

	cfgFile.WriteInt(m_bPreprocessMesh ? 1 : 0);
	cfgFile.WriteInt(m_bUseLights      ? 1 : 0);

	cfgFile.WriteInt(m_nAnimCheckStep);
	cfgFile.WriteInt(m_nNumPosSamplesPerSec);
	cfgFile.WriteInt(m_nNumSclSamplesPerSec);
	cfgFile.WriteInt(m_nNumRotSamplesPerSec);
	cfgFile.WriteInt(m_nNumCamSettingsPerSec);
	cfgFile.WriteInt(m_nNumLightSettingsPerSec);

	cfgFile.WriteInt(m_eAnimType);

	// Export options

	cfgFile.WriteStringZero(m_strFile);
	cfgFile.WriteInt(m_bCopyTextures ? 1 : 0);
	cfgFile.WriteStringZero(m_strTexturePath);

	// Preview options

	cfgFile.WriteStringZero(m_strPreviewCamera);
	cfgFile.WriteInt(m_ePreviewType);
	cfgFile.WriteInt(m_bFullscreen ? 1 : 0);
	cfgFile.WriteInt(m_bLoop       ? 1 : 0);
	cfgFile.WriteInt(m_nPreviewResX);
	cfgFile.WriteInt(m_nPreviewResY);
	cfgFile.WriteFloat(m_fViewportHeight);
	cfgFile.WriteInt(m_bShowStats   ? 1 : 0);
	cfgFile.WriteInt(m_bRenderToAvi ? 1 : 0);
	cfgFile.WriteStringZero(m_strAviFile);

	cfgFile.Close();
}