From f5008cb00d6bbed51ffd740683bb653ef5426376 Mon Sep 17 00:00:00 2001 From: kervala Date: Sun, 4 Dec 2016 19:35:47 +0100 Subject: [PATCH 1/4] Changed: Convert MSTR to UTF-8 --HG-- branch : develop --- code/nel/tools/3d/plugin_max/nel_mesh_lib/export_anim.cpp | 4 ++-- .../tools/3d/plugin_max/nel_mesh_lib/export_material.cpp | 4 ++-- .../3d/plugin_max/nel_mesh_lib/export_mesh_interface.cpp | 8 ++++---- code/nel/tools/3d/plugin_max/nel_mesh_lib/export_misc.cpp | 6 +++--- 4 files changed, 11 insertions(+), 11 deletions(-) diff --git a/code/nel/tools/3d/plugin_max/nel_mesh_lib/export_anim.cpp b/code/nel/tools/3d/plugin_max/nel_mesh_lib/export_anim.cpp index 30389d809..0ebf0161a 100644 --- a/code/nel/tools/3d/plugin_max/nel_mesh_lib/export_anim.cpp +++ b/code/nel/tools/3d/plugin_max/nel_mesh_lib/export_anim.cpp @@ -185,7 +185,7 @@ void CExportNel::addSSSTrack(CSSSBuild &ssBuilder, INode& node) if(note) { CSSSBuild::CKey ks; - ks.Value = std::string(note->note); + ks.Value = note->note.ToUTF8(); ks.Time= CExportNel::convertTime (note->time); bs.Track.push_back(ks); } @@ -224,7 +224,7 @@ NL3D::CTrackKeyFramerConstString* CExportNel::buildFromNoteTrack(INode& node) { firstDate = CExportNel::convertTime (note->time); } - ks.Value = std::string(note->note); + ks.Value = note->note.ToUTF8(); lastDate = CExportNel::convertTime (note->time); st->addKey(ks , lastDate ); diff --git a/code/nel/tools/3d/plugin_max/nel_mesh_lib/export_material.cpp b/code/nel/tools/3d/plugin_max/nel_mesh_lib/export_material.cpp index 8f7957175..f7c8135ad 100644 --- a/code/nel/tools/3d/plugin_max/nel_mesh_lib/export_material.cpp +++ b/code/nel/tools/3d/plugin_max/nel_mesh_lib/export_material.cpp @@ -768,7 +768,7 @@ void CExportNel::buildAMaterial (NL3D::CMaterial& material, CMaxMaterialInfo& ma // Set material name TSTR name=mtl.GetName(); - materialInfo.MaterialName = (const char*)name; + materialInfo.MaterialName = name.ToUTF8(); } else { @@ -1120,7 +1120,7 @@ void CExportNel::buildAMaterial (NL3D::CMaterial& material, CMaxMaterialInfo& ma // Set material name TSTR name=mtl.GetName(); - materialInfo.MaterialName = (const char*)name; + materialInfo.MaterialName = name.ToUTF8(); } } diff --git a/code/nel/tools/3d/plugin_max/nel_mesh_lib/export_mesh_interface.cpp b/code/nel/tools/3d/plugin_max/nel_mesh_lib/export_mesh_interface.cpp index 0a2e95242..6d0744dee 100644 --- a/code/nel/tools/3d/plugin_max/nel_mesh_lib/export_mesh_interface.cpp +++ b/code/nel/tools/3d/plugin_max/nel_mesh_lib/export_mesh_interface.cpp @@ -579,7 +579,7 @@ static bool BuildMeshInterfaces(const char *cMaxFileName, std::vectorGetName (); + string originalName = (*lib)[i]->GetName ().ToUTF8(); renameMap.insert (map::value_type (newName, originalName)); (*lib)[i]->SetName (utf8ToTStr(newName)); } @@ -604,7 +604,7 @@ static bool BuildMeshInterfaces(const char *cMaxFileName, std::vectorGetName (); + string key = (*lib)[i]->GetName ().ToUTF8(); map::iterator ite = renameMap.find (key); // Not found ? This is a merged material @@ -612,7 +612,7 @@ static bool BuildMeshInterfaces(const char *cMaxFileName, std::vectorGetName (); + string originalName = (*lib)[i]->GetName ().ToUTF8(); renameMap.insert (map::value_type (newName, originalName)); (*lib)[i]->SetName (utf8ToTStr(newName)); } @@ -622,7 +622,7 @@ static bool BuildMeshInterfaces(const char *cMaxFileName, std::vectorGetName (); + string key = (*lib)[i]->GetName ().ToUTF8(); map::iterator ite = renameMap.find (key); if (ite != renameMap.end ()) { diff --git a/code/nel/tools/3d/plugin_max/nel_mesh_lib/export_misc.cpp b/code/nel/tools/3d/plugin_max/nel_mesh_lib/export_misc.cpp index a7631c05a..908d87c6d 100644 --- a/code/nel/tools/3d/plugin_max/nel_mesh_lib/export_misc.cpp +++ b/code/nel/tools/3d/plugin_max/nel_mesh_lib/export_misc.cpp @@ -223,7 +223,7 @@ Animatable* CExportNel::getSubAnimByName (Animatable& node, const char* sName) TSTR sSubName=node.SubAnimName(nSub); // Good name? - if (strcmp (sSubName, sName)==0) + if (strcmp (sSubName.ToUTF8(), sName)==0) { // ok, return this subanim return node.SubAnim(nSub); @@ -288,7 +288,7 @@ Control* CExportNel::getControlerByName (Animatable& node, const char* sName) { // Sub anim name TSTR name=node.SubAnimName (s); - if (strcmp (name, sName)==0) + if (strcmp (name.ToUTF8(), sName)==0) { // Get the controller pointer of this sub anim Control* c=GetControlInterface (node.SubAnim(s)); @@ -502,7 +502,7 @@ std::string CExportNel::getName (MtlBase& mtl) // Return its name TSTR name; name=mtl.GetName(); - return std::string (name); + return std::string((const char*)name.ToUTF8()); } // -------------------------------------------------- From 9e22ece5b62cf9fe170348de49acd79f3c530540 Mon Sep 17 00:00:00 2001 From: kervala Date: Sun, 4 Dec 2016 19:59:25 +0100 Subject: [PATCH 2/4] Fixed: Support 3dsmax 2017 SDK --HG-- branch : develop --- .../plugin_max/nel_mesh_lib/export_script.cpp | 13 +++++++++++++ .../plugin_max/nel_patch_edit/np_epm_bevel.cpp | 9 ++++++++- .../nel_patch_edit/np_epm_extrude.cpp | 7 +++++++ .../nel_patch_edit/np_epm_remember.cpp | 17 +++++++++++++++++ .../plugin_max/nel_patch_lib/nel_patch_mesh.cpp | 15 ++++++++++++++- .../3d/plugin_max/nel_patch_paint/paint.cpp | 15 ++++++++++++--- .../plugin_max/nel_vertex_tree_paint/Paint.cpp | 12 ++++++++++++ .../nel_vertex_tree_paint/vertex_tree_paint.cpp | 7 +++++++ 8 files changed, 90 insertions(+), 5 deletions(-) diff --git a/code/nel/tools/3d/plugin_max/nel_mesh_lib/export_script.cpp b/code/nel/tools/3d/plugin_max/nel_mesh_lib/export_script.cpp index 1e6304d18..cf99e2c0c 100644 --- a/code/nel/tools/3d/plugin_max/nel_mesh_lib/export_script.cpp +++ b/code/nel/tools/3d/plugin_max/nel_mesh_lib/export_script.cpp @@ -38,9 +38,17 @@ bool CExportNel::scriptEvaluate (const char *script, void *out, TNelScriptValueT vl.parser = new Parser; vl.source = new StringStream (utf8ToTStr(script)); vl.source->log_to(NULL); + +#if MAX_VERSION_MAJOR < 19 save_current_frames(); +#endif + try { +#if MAX_VERSION_MAJOR >= 19 + ScopedSaveCurrentFrames currentFrames; +#endif + vl.source->flush_whitespace(); vl.code = vl.parser->compile_all(vl.source); vl.result = vl.code->eval(); @@ -66,11 +74,16 @@ bool CExportNel::scriptEvaluate (const char *script, void *out, TNelScriptValueT } catch (...) { +#if MAX_VERSION_MAJOR < 19 restore_current_frames(); +#endif result=FALSE; vl.source->close(); } + +#if MAX_VERSION_MAJOR < 19 pop_value_locals(); +#endif return (result!=FALSE); } diff --git a/code/nel/tools/3d/plugin_max/nel_patch_edit/np_epm_bevel.cpp b/code/nel/tools/3d/plugin_max/nel_patch_edit/np_epm_bevel.cpp index 0021d62f1..babcbea6c 100644 --- a/code/nel/tools/3d/plugin_max/nel_patch_edit/np_epm_bevel.cpp +++ b/code/nel/tools/3d/plugin_max/nel_patch_edit/np_epm_bevel.cpp @@ -12,8 +12,12 @@ // ------------------------------------------------------------------------------------------------------------------------------------------------------ int EPM_BevelMouseProc::proc(HWND hwnd, int msg, int point, int flags, IPoint2 m) -{ +{ +#if MAX_VERSION_MAJOR >= 19 + ViewExp *vpt = &ip->GetViewExp(hwnd); +#else ViewExp *vpt = ip->GetViewport(hwnd); +#endif Point3 p0, p1; ISpinnerControl *spin; int ln, ln2; @@ -114,8 +118,11 @@ int EPM_BevelMouseProc::proc(HWND hwnd, int msg, int point, int flags, IPoint2 m break; } +#if MAX_VERSION_MAJOR < 19 if (vpt) ip->ReleaseViewport(vpt); +#endif + return TRUE; } diff --git a/code/nel/tools/3d/plugin_max/nel_patch_edit/np_epm_extrude.cpp b/code/nel/tools/3d/plugin_max/nel_patch_edit/np_epm_extrude.cpp index c4c502de9..0995edef4 100644 --- a/code/nel/tools/3d/plugin_max/nel_patch_edit/np_epm_extrude.cpp +++ b/code/nel/tools/3d/plugin_max/nel_patch_edit/np_epm_extrude.cpp @@ -13,7 +13,11 @@ int EPM_ExtrudeMouseProc::proc(HWND hwnd, int msg, int point, int flags, IPoint2 m) { +#if MAX_VERSION_MAJOR >= 19 + ViewExp *vpt = &ip->GetViewExp(hwnd); +#else ViewExp *vpt = ip->GetViewport(hwnd); +#endif Point3 p0, p1; ISpinnerControl *spin; BOOL ln; @@ -66,8 +70,11 @@ int EPM_ExtrudeMouseProc::proc(HWND hwnd, int msg, int point, int flags, IPoint2 break; } +#if MAX_VERSION_MAJOR < 19 if (vpt) ip->ReleaseViewport(vpt); +#endif + return TRUE; } diff --git a/code/nel/tools/3d/plugin_max/nel_patch_edit/np_epm_remember.cpp b/code/nel/tools/3d/plugin_max/nel_patch_edit/np_epm_remember.cpp index 0fc1fabba..161187e35 100644 --- a/code/nel/tools/3d/plugin_max/nel_patch_edit/np_epm_remember.cpp +++ b/code/nel/tools/3d/plugin_max/nel_patch_edit/np_epm_remember.cpp @@ -35,8 +35,13 @@ int EditPatchMod::RememberPatchThere(HWND hWnd, IPoint2 m) ClearPatchDataFlag(mcList, EPD_BEENDONE); // See if we're over a patch +#if MAX_VERSION_MAJOR >= 19 + ViewExp *vpt = &ip->GetViewExp(hWnd); +#else ViewExp *vpt = ip->GetViewport(hWnd); +#endif GraphicsWindow *gw = vpt->getGW(); + HitRegion hr; MakeHitRegion(hr, HITTYPE_POINT, 1, 4, &m); gw->setHitRegion(&hr); @@ -110,8 +115,12 @@ int EditPatchMod::RememberPatchThere(HWND hWnd, IPoint2 m) finish: nodes.DisposeTemporary(); ClearPatchDataFlag(mcList, EPD_BEENDONE); + +#if MAX_VERSION_MAJOR < 19 if (vpt) ip->ReleaseViewport(vpt); +#endif + return result; } @@ -185,8 +194,13 @@ int EditPatchMod::RememberVertThere(HWND hWnd, IPoint2 m) ClearPatchDataFlag(mcList, EPD_BEENDONE); // See if we're over a vertex +#if MAX_VERSION_MAJOR >= 19 + ViewExp *vpt = &ip->GetViewExp(hWnd); +#else ViewExp *vpt = ip->GetViewport(hWnd); +#endif GraphicsWindow *gw = vpt->getGW(); + HitRegion hr; MakeHitRegion(hr, HITTYPE_POINT, 1, 4, &m); gw->setHitRegion(&hr); @@ -260,8 +274,11 @@ int EditPatchMod::RememberVertThere(HWND hWnd, IPoint2 m) finish: nodes.DisposeTemporary(); ClearPatchDataFlag(mcList, EPD_BEENDONE); + +#if MAX_VERSION_MAJOR < 19 if (vpt) ip->ReleaseViewport(vpt); +#endif return result; } diff --git a/code/nel/tools/3d/plugin_max/nel_patch_lib/nel_patch_mesh.cpp b/code/nel/tools/3d/plugin_max/nel_patch_lib/nel_patch_mesh.cpp index 5dd6cd5a7..4aae66304 100644 --- a/code/nel/tools/3d/plugin_max/nel_patch_lib/nel_patch_mesh.cpp +++ b/code/nel/tools/3d/plugin_max/nel_patch_lib/nel_patch_mesh.cpp @@ -2261,9 +2261,18 @@ BOOL RPatchMesh::SubObjectHitTest (GraphicsWindow *gw, Material *ma, HitRegion * gw->setRndLimits(gw->getRndLimits() & ~GW_BACKCULL); bRet=mesh.SubObjectHitTest (gw, ma, hr, nFlags, list); +#if MAX_VERSION_MAJOR < 19 MeshSubHitRec *rec=list.First(); + while (rec) { +#else + MeshSubHitRec::Iterator it = list.begin(), iend = list.end(); + + while(it != iend) + { + MeshSubHitRec *rec = &*it; +#endif if (flags&SUBHIT_PATCH_SELONLY) { int otot=0; @@ -2284,7 +2293,11 @@ BOOL RPatchMesh::SubObjectHitTest (GraphicsWindow *gw, Material *ma, HitRegion * hitList.AddHit (rec->dist, &patch, nRemapedIndex, PATCH_HIT_TILE); // Next hit - rec=rec->Next(); +#if MAX_VERSION_MAJOR < 19 + rec = rec->Next(); +#else + ++it; +#endif } } diff --git a/code/nel/tools/3d/plugin_max/nel_patch_paint/paint.cpp b/code/nel/tools/3d/plugin_max/nel_patch_paint/paint.cpp index b5894e9a8..95d48caeb 100644 --- a/code/nel/tools/3d/plugin_max/nel_patch_paint/paint.cpp +++ b/code/nel/tools/3d/plugin_max/nel_patch_paint/paint.cpp @@ -4095,10 +4095,13 @@ DWORD WINAPI myThread (LPVOID vData) nlassert (pData->eproc->ip); // Viewport parameters - ViewExp* vp; Matrix3 affineTM; float minx,maxx,miny,maxy; - vp=pData->eproc->ip->GetActiveViewport(); +#if MAX_VERSION_MAJOR >= 19 + ViewExp *vp = &pData->eproc->ip->GetActiveViewExp(); +#else + ViewExp *vp = pData->eproc->ip->GetActiveViewport(); +#endif vp->GetAffineTM(affineTM); if ( vp->IsPerspView() ) { @@ -4584,7 +4587,11 @@ int EPM_PaintMouseProc::proc( int flags, IPoint2 m) { - ViewExp *vpt = ip->GetViewport(hwnd); +#if MAX_VERSION_MAJOR >= 19 + ViewExp *vpt = &ip->GetViewExp(hwnd); +#else + ViewExp *vpt = ip->GetViewport(hwnd); +#endif int res = TRUE; static PatchMesh *shape1 = NULL; static int poly1, tile1, tile2, mesh1, mesh2, seg1; @@ -4613,8 +4620,10 @@ int EPM_PaintMouseProc::proc( break; } +#if MAX_VERSION_MAJOR < 19 if (vpt) ip->ReleaseViewport(vpt); +#endif return res; } diff --git a/code/nel/tools/3d/plugin_max/nel_vertex_tree_paint/Paint.cpp b/code/nel/tools/3d/plugin_max/nel_vertex_tree_paint/Paint.cpp index 37b1b891b..241037218 100644 --- a/code/nel/tools/3d/plugin_max/nel_vertex_tree_paint/Paint.cpp +++ b/code/nel/tools/3d/plugin_max/nel_vertex_tree_paint/Paint.cpp @@ -103,7 +103,11 @@ void PaintMouseProc::DoPainting(HWND hWnd, IPoint2 m) } VertexPaintData* d = (VertexPaintData*)mc->localData; +#if MAX_VERSION_MAJOR >= 19 + ViewExp* pView = &GetCOREInterface()->GetViewExp(hWnd); +#else ViewExp* pView = GetCOREInterface()->GetViewport(hWnd); +#endif Mesh* mesh = d->GetMesh(); if (mesh) { @@ -158,7 +162,9 @@ void PaintMouseProc::DoPainting(HWND hWnd, IPoint2 m) } } +#if MAX_VERSION_MAJOR < 19 GetCOREInterface()->ReleaseViewport(pView); +#endif } else { SetCursor(hNoPaintCursor); @@ -186,7 +192,11 @@ void PaintMouseProc::DoPickColor(HWND hWnd, IPoint2 m) SetCursor(hDropperCursor); TriObject *pTri = (TriObject *) os.obj; +#if MAX_VERSION_MAJOR >= 19 + ViewExp* pView = &GetCOREInterface()->GetViewExp(hWnd); +#else ViewExp* pView = GetCOREInterface()->GetViewport(hWnd); +#endif Mesh* mesh = &pTri->mesh; if (mesh) { @@ -234,7 +244,9 @@ void PaintMouseProc::DoPickColor(HWND hWnd, IPoint2 m) } } +#if MAX_VERSION_MAJOR < 19 GetCOREInterface()->ReleaseViewport(pView); +#endif } } else { diff --git a/code/nel/tools/3d/plugin_max/nel_vertex_tree_paint/vertex_tree_paint.cpp b/code/nel/tools/3d/plugin_max/nel_vertex_tree_paint/vertex_tree_paint.cpp index 3d58b8027..3a513683a 100644 --- a/code/nel/tools/3d/plugin_max/nel_vertex_tree_paint/vertex_tree_paint.cpp +++ b/code/nel/tools/3d/plugin_max/nel_vertex_tree_paint/vertex_tree_paint.cpp @@ -854,10 +854,17 @@ void VertexPaint::fillSelectionGradientColor() // Get Matrix to viewport. Matrix3 viewMat; { +#if MAX_VERSION_MAJOR >= 19 + ViewExp *ve = &GetCOREInterface()->GetActiveViewExp(); +#else ViewExp *ve = GetCOREInterface()->GetActiveViewport(); +#endif // The affine TM transforms from world coords to view coords ve->GetAffineTM(viewMat); + +#if MAX_VERSION_MAJOR < 19 GetCOREInterface()->ReleaseViewport(ve); +#endif } From 90b57e684b3b0b0c6e6571af0d1ea0d0970244c2 Mon Sep 17 00:00:00 2001 From: kervala Date: Sun, 4 Dec 2016 19:59:45 +0100 Subject: [PATCH 3/4] Changed: Catch constification --HG-- branch : develop --- code/nel/tools/3d/plugin_max/nel_patch_paint/paint.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/nel/tools/3d/plugin_max/nel_patch_paint/paint.cpp b/code/nel/tools/3d/plugin_max/nel_patch_paint/paint.cpp index 95d48caeb..f89604dc3 100644 --- a/code/nel/tools/3d/plugin_max/nel_patch_paint/paint.cpp +++ b/code/nel/tools/3d/plugin_max/nel_patch_paint/paint.cpp @@ -4360,7 +4360,7 @@ DWORD WINAPI myThread (LPVOID vData) //======== CNELU::release(); } - catch (EDru& druExcept) + catch (const EDru& druExcept) { MessageBox (NULL, utf8ToTStr(druExcept.what()), _T("NeL driver utility"), MB_OK|MB_ICONEXCLAMATION); } From 85b93986684aede5255b5253f107e8b7722bfb14 Mon Sep 17 00:00:00 2001 From: kervala Date: Sun, 4 Dec 2016 20:00:37 +0100 Subject: [PATCH 4/4] Changed: Use -200.f instead of float(-200) --HG-- branch : develop --- .../plugin_max/nel_patch_edit/np_epm_bevel.cpp | 16 ++++++++++------ .../plugin_max/nel_patch_edit/np_epm_extrude.cpp | 6 ++++-- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/code/nel/tools/3d/plugin_max/nel_patch_edit/np_epm_bevel.cpp b/code/nel/tools/3d/plugin_max/nel_patch_edit/np_epm_bevel.cpp index babcbea6c..c2e81e460 100644 --- a/code/nel/tools/3d/plugin_max/nel_patch_edit/np_epm_bevel.cpp +++ b/code/nel/tools/3d/plugin_max/nel_patch_edit/np_epm_bevel.cpp @@ -52,11 +52,13 @@ int EPM_BevelMouseProc::proc(HWND hwnd, int msg, int point, int flags, IPoint2 m case MOUSE_MOVE: if (point == 1) { - p0 = vpt->MapScreenToView(om, float(-200)); + p0 = vpt->MapScreenToView(om, -200.f); + // sca 1999.02.24: find worldspace point with om's x value and m's y value m2.x = om.x; m2.y = m.y; - p1 = vpt->MapScreenToView(m2, float(-200)); + p1 = vpt->MapScreenToView(m2, -200.f); + amount = Length(p1 - p0); ln = IsDlgButtonChecked(po->hOpsPanel, IDC_EM_EXTYPE_B); if (om.y < m.y) @@ -70,14 +72,16 @@ int EPM_BevelMouseProc::proc(HWND hwnd, int msg, int point, int flags, IPoint2 m ReleaseISpinner(spin); } ip->RedrawViews(ip->GetTime(), REDRAW_INTERACTIVE); - } + } else if (point == 2) - { - p0 = vpt->MapScreenToView(om, float(-200)); + { + p0 = vpt->MapScreenToView(om, -200.f); + // sca 1999.02.24: find worldspace point with om's x value and m's y value m2.x = om.x; m2.y = m.y; - p1 = vpt->MapScreenToView(m2, float(-200)); + p1 = vpt->MapScreenToView(m2, -200.f); + if (IsDlgButtonChecked(po->hOpsPanel, IDC_EP_SM_SMOOTH)) ln = 0; else if (IsDlgButtonChecked(po->hOpsPanel, IDC_EP_SM_SMOOTH2)) diff --git a/code/nel/tools/3d/plugin_max/nel_patch_edit/np_epm_extrude.cpp b/code/nel/tools/3d/plugin_max/nel_patch_edit/np_epm_extrude.cpp index 0995edef4..35d9986de 100644 --- a/code/nel/tools/3d/plugin_max/nel_patch_edit/np_epm_extrude.cpp +++ b/code/nel/tools/3d/plugin_max/nel_patch_edit/np_epm_extrude.cpp @@ -43,11 +43,13 @@ int EPM_ExtrudeMouseProc::proc(HWND hwnd, int msg, int point, int flags, IPoint2 break; case MOUSE_MOVE: - p0 = vpt->MapScreenToView(om, float(-200)); + p0 = vpt->MapScreenToView(om, -200.f); + // sca 1999.02.24: Find m's projection in om's vertical axis: m2.x = om.x; m2.y = m.y; - p1 = vpt->MapScreenToView(m2, float(-200)); + p1 = vpt->MapScreenToView(m2, -200.f); + amount = Length(p1 - p0); if (m.y > om.y) amount *= -1.0f;