2010-05-06 00:08:41 +00:00
|
|
|
#include "stdafx.h"
|
|
|
|
#include "nel_patch_paint.h"
|
|
|
|
|
|
|
|
// ------------------------------------------------------------------------------------------------------------------------------------------------------
|
|
|
|
|
2010-09-01 11:44:01 +00:00
|
|
|
INT_PTR CALLBACK PatchOpsDlgProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);
|
2010-05-06 00:08:41 +00:00
|
|
|
|
|
|
|
extern void CancelEditPatchModes(IObjParam *ip);
|
|
|
|
|
|
|
|
// ------------------------------------------------------------------------------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
void CancelEditPatchModes(IObjParam *ip)
|
|
|
|
{
|
|
|
|
switch (ip->GetCommandMode()->ID())
|
|
|
|
{
|
|
|
|
case CID_STDPICK:
|
|
|
|
ip->SetStdCommandMode(CID_OBJMOVE);
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// ------------------------------------------------------------------------------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
// --------------------------------------------------------------------
|
|
|
|
// IPatchSelect and IPatchOps interfaces (JBW 2/2/99)
|
|
|
|
void* PaintPatchMod::GetInterface(ULONG id)
|
|
|
|
{
|
|
|
|
switch (id)
|
|
|
|
{
|
|
|
|
case I_PATCHSELECT:
|
|
|
|
return (IPatchSelect*)this;
|
|
|
|
case I_PATCHSELECTDATA:
|
|
|
|
return (IPatchSelectData*)this;
|
|
|
|
case I_PATCHOPS:
|
|
|
|
return (IPatchOps*)this;
|
|
|
|
case I_SUBMTLAPI:
|
|
|
|
return (ISubMtlAPI*)this;
|
|
|
|
}
|
|
|
|
return Modifier::GetInterface(id);
|
|
|
|
}
|
|
|
|
|
|
|
|
// ------------------------------------------------------------------------------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
void PaintPatchMod::BeginEditParams(IObjParam *ip, ULONG flags, Animatable *prev)
|
|
|
|
{
|
|
|
|
this->ip = ip;
|
|
|
|
|
|
|
|
CreatePatchDataTempData();
|
|
|
|
|
|
|
|
hOpsPanel = ip->AddRollupPage(hInstance, MAKEINTRESOURCE(IDD_EDPATCH_OPS),
|
|
|
|
PatchOpsDlgProc, "Geometry", (LPARAM) this, rsOps ? 0 : APPENDROLL_CLOSED);
|
|
|
|
|
|
|
|
// Create sub object editing modes.
|
|
|
|
paintMode = new EPM_PaintCMode(this, ip);
|
|
|
|
|
|
|
|
// Disable show end result.
|
|
|
|
ip->EnableShowEndResult(FALSE);
|
|
|
|
|
|
|
|
// Setup named selection sets
|
|
|
|
SetupNamedSelDropDown();
|
|
|
|
|
|
|
|
TimeValue t = ip->GetTime();
|
|
|
|
NotifyDependents(Interval(t, t), PART_ALL, REFMSG_BEGIN_EDIT);
|
|
|
|
NotifyDependents(Interval(t, t), PART_ALL, REFMSG_MOD_DISPLAY_ON);
|
|
|
|
SetAFlag(A_MOD_BEING_EDITED);
|
|
|
|
}
|
|
|
|
|
|
|
|
// ------------------------------------------------------------------------------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
void PaintPatchMod::EndEditParams(IObjParam *ip, ULONG flags, Animatable *next)
|
|
|
|
{
|
|
|
|
if (hOpsPanel)
|
|
|
|
{
|
|
|
|
rsOps = IsRollupPanelOpen(hOpsPanel);
|
|
|
|
ip->DeleteRollupPage(hOpsPanel);
|
|
|
|
hOpsPanel = NULL;
|
|
|
|
}
|
|
|
|
|
|
|
|
// Enable show end result
|
|
|
|
ip->EnableShowEndResult(TRUE);
|
|
|
|
|
|
|
|
CancelEditPatchModes(ip);
|
|
|
|
|
|
|
|
if (ip->GetCommandMode()->ID()==CID_EP_PAINT)
|
|
|
|
ip->SetStdCommandMode(CID_OBJMOVE);
|
|
|
|
|
|
|
|
TimeValue t = ip->GetTime();
|
|
|
|
NotifyDependents(Interval(t, t), PART_ALL, REFMSG_END_EDIT);
|
|
|
|
NotifyDependents(Interval(t, t), PART_ALL, REFMSG_MOD_DISPLAY_OFF);
|
|
|
|
ClearAFlag(A_MOD_BEING_EDITED);
|
|
|
|
|
|
|
|
DeletePatchDataTempData();
|
|
|
|
this->ip = NULL;
|
|
|
|
|
|
|
|
ip->DeleteMode(paintMode);
|
|
|
|
|
|
|
|
if (paintMode)
|
|
|
|
delete paintMode;
|
|
|
|
paintMode = NULL;
|
|
|
|
}
|
|
|
|
|
|
|
|
// ------------------------------------------------------------------------------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
PaintPatchMod::PaintPatchMod()
|
|
|
|
{
|
|
|
|
channelModified = EDITPAT_CHANNELS;
|
|
|
|
// 3-18-99 to suport render steps and removal of the mental tesselator
|
|
|
|
|
|
|
|
includeMeshes=false;
|
|
|
|
preloadTiles=false;
|
|
|
|
// meshAdaptive = FALSE; // Future use (Not used now)
|
|
|
|
}
|
|
|
|
|
|
|
|
PaintPatchMod::~PaintPatchMod()
|
|
|
|
{
|
|
|
|
}
|