diff --git a/Sources/Tools/MaxComponent/CMakeLists.txt b/Sources/Tools/MaxComponent/CMakeLists.txt
index 4baff985..f99f8ae7 100644
--- a/Sources/Tools/MaxComponent/CMakeLists.txt
+++ b/Sources/Tools/MaxComponent/CMakeLists.txt
@@ -161,7 +161,6 @@ set(MaxComponent_SOURCES
plPickMaterialMap.cpp
plPickNode.cpp
plPickNodeBase.cpp
- plPickNodeComp.cpp
plPythonFileComponent.cpp
plRepComponent.cpp
plResponderAnim.cpp
diff --git a/Sources/Tools/MaxComponent/plPickNodeComp.cpp b/Sources/Tools/MaxComponent/plPickNodeComp.cpp
deleted file mode 100644
index 905229ee..00000000
--- a/Sources/Tools/MaxComponent/plPickNodeComp.cpp
+++ /dev/null
@@ -1,271 +0,0 @@
-/*==LICENSE==*
-
-CyanWorlds.com Engine - MMOG client, server and tools
-Copyright (C) 2011 Cyan Worlds, Inc.
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 3 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see .
-
-Additional permissions under GNU GPL version 3 section 7
-
-If you modify this Program, or any covered work, by linking or
-combining it with any of RAD Game Tools Bink SDK, Autodesk 3ds Max SDK,
-NVIDIA PhysX SDK, Microsoft DirectX SDK, OpenSSL library, Independent
-JPEG Group JPEG library, Microsoft Windows Media SDK, or Apple QuickTime SDK
-(or a modified version of those libraries),
-containing parts covered by the terms of the Bink SDK EULA, 3ds Max EULA,
-PhysX SDK EULA, DirectX SDK EULA, OpenSSL and SSLeay licenses, IJG
-JPEG Library README, Windows Media SDK EULA, or QuickTime SDK EULA, the
-licensors of this Program grant you additional
-permission to convey the resulting work. Corresponding Source for a
-non-source form of such a combination shall include the source code for
-the parts of OpenSSL and IJG JPEG Library used as well as that of the covered
-work.
-
-You can contact Cyan Worlds, Inc. by email legal@cyan.com
- or by snail mail at:
- Cyan Worlds, Inc.
- 14617 N Newport Hwy
- Mead, WA 99021
-
-*==LICENSE==*/
-
-#include "HeadSpin.h"
-#include
-
-#include "plComponentBase.h"
-#include "MaxMain/plMaxNode.h"
-#include "resource.h"
-#pragma hdrstop
-
-#include "plPickNodeBase.h"
-#include "MaxMain/plMaxAccelerators.h"
-
-plPickNodeBase::plPickNodeBase(IParamBlock2* pb, int nodeParamID) : fPB(pb), fNodeParamID(nodeParamID)
-{
-}
-
-
-bool plPickNodeBase::DoPick()
-{
- plMaxAccelerators::Disable();
-
- // Create Dlg
- BOOL ret = DialogBoxParam(hInstance,
- MAKEINTRESOURCE(IDD_PICK_NODE),
- GetCOREInterface()->GetMAXHWnd(),
- IDlgProc,
- (LPARAM)this);
-
- plMaxAccelerators::Enable();
-
- return (ret != 0);
-}
-
-void plPickNodeBase::IInitDlg(HWND hDlg)
-{
- HWND hList = GetDlgItem(hDlg, IDC_NODE_LIST);
-
-// int idx = ListBox_AddString(hList, kUserTypeNone);
-// ListBox_SetCurSel(hList, idx);
-
- IAddUserType(hList);
-
-// LONG style = GetWindowLong(hList, GWL_STYLE);
-// SetWindowLong(hList, GWL_STYLE, style | LBS_MULTIPLESEL);
-
- plMaxNode* curSelNode = nil;
- ParamType2 type = fPB->GetParameterType(fNodeParamID);
- if (type == TYPE_REFTARG)
- curSelNode = (plMaxNode*)fPB->GetReferenceTarget(fNodeParamID);
- else if (type == TYPE_INODE)
- curSelNode = (plMaxNode*)fPB->GetINode(fNodeParamID);
-
- IGetNodesRecur((plMaxNode*)GetCOREInterface()->GetRootNode(), hList, curSelNode);
-}
-
-BOOL plPickNodeBase::IDlgProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
-{
- static plPickNodeBase* pthis = nil;
-
- switch (msg)
- {
- case WM_INITDIALOG:
- pthis = (plPickNodeBase*)lParam;
- pthis->IInitDlg(hDlg);
- return TRUE;
-
- case WM_COMMAND:
- // For 'OK' or double-click, get the selected node and exit
- if ((HIWORD(wParam) == BN_CLICKED && LOWORD(wParam) == IDOK) ||
- (HIWORD(wParam) == LBN_DBLCLK && LOWORD(wParam) == IDC_NODE_LIST))
- {
- pthis->IGetSelNode(GetDlgItem(hDlg, IDC_NODE_LIST));
- EndDialog(hDlg, 1);
- return TRUE;
- }
- else if (HIWORD(wParam) == BN_CLICKED && LOWORD(wParam) == IDCANCEL)
- {
- EndDialog(hDlg, 0);
- return TRUE;
- }
- break;
- }
-
- return FALSE;
-}
-
-void plPickNodeBase::IGetNodesRecur(plMaxNode* node, HWND hList, plMaxNode* curSelNode)
-{
- if (node)
- {
- if (ICheckNode(node))
- {
- int idx = ListBox_AddString(hList, node->GetName());
- ListBox_SetItemData(hList, idx, node);
-
- if (node == curSelNode)
- ListBox_SetCurSel(hList, idx);
- }
-
- int numChildren = node->NumberOfChildren();
- for (int i = 0; i < numChildren; i++)
- {
- IGetNodesRecur((plMaxNode*)node->GetChildNode(i), hList, curSelNode);
- }
- }
-}
-
-void plPickNodeBase::ISetNodeValue(plMaxNode* node)
-{
- ParamType2 type = fPB->GetParameterType(fNodeParamID);
- if (type == TYPE_REFTARG)
- {
- fPB->SetValue(fNodeParamID, 0, (ReferenceTarget*)node);
- }
-// else if (type == TYPE_REFTARG_TAB)
-// {
-// }
- else if (type == TYPE_INODE)
- {
- fPB->SetValue(fNodeParamID, 0, (INode*)node);
- }
-// else if (type == TYPE_INODE_TAB)
-// {
-// }
-}
-
-void plPickNodeBase::IGetSelNode(HWND hList)
-{
- int sel = ListBox_GetCurSel(hList);
- if (sel == LB_ERR)
- return;
-
- plMaxNode* node = (plMaxNode*)ListBox_GetItemData(hList, sel);
-
- if (node)
- {
- ISetNodeValue(node);
- ISetUserType(node, nil);
- }
- else
- {
- int len = ListBox_GetTextLen(hList, sel);
- char* buf = new char[len+1];
- ListBox_GetText(hList, sel, buf);
-
-/* if (!strcmp(buf, kUserTypeNone))
- {
- ISetNodeValue(nil);
- ISetUserType(nil, nil);
- }
- else
-*/ ISetUserType(nil, buf);
-
- delete [] buf;
- }
-}
-
-/////////////////////////////////////////////////////////////////
-
-plPickNode::plPickNode(IParamBlock2* pb, int nodeParamID) :
- plPickNodeBase(pb, nodeParamID)
-{
-}
-
-bool plPickNode::ICanConvertToType(Object *obj)
-{
- for (int i = 0; i < fCIDs.size(); i++)
- {
- if (obj->CanConvertToType(fCIDs[i]))
- return true;
- }
-
- return false;
-}
-
-bool plPickNode::ICheckNode(plMaxNode* node)
-{
- if (node->GetObjectRef())
- {
- // Not filtering by ClassID and node is hidden or frozen
- if (fCIDs.size() == 0 && (node->IsHidden() || node->IsFrozen()))
- return false;
-
- // We aren't filtering by ClassID or we are and we found a match
- if (fCIDs.size() == 0 ||
- (fCanConvertToType && ICanConvertToType(node->GetObjectRef()) ||
- std::find(fCIDs.begin(), fCIDs.end(), node->GetObjectRef()->ClassID()) != fCIDs.end()))
- {
- // Don't allow a ref to ourselves (a cyclical reference)
- if (fPB->GetOwner() == node)
- return false;
-
- // Approved and not in the list, add it
- return true;
- }
- }
-
- return false;
-}
-
-///////////////////////////////////////////////////////////////
-
-plPickMtlNode::plPickMtlNode(IParamBlock2* pb, int nodeParamID, Mtl* mtl) :
- plPickNodeBase(pb, nodeParamID), fMtl(mtl)
-{
-}
-
-bool plPickMtlNode::ICheckNode(plMaxNode* node)
-{
- // Filtering by nodes with a specific material on them
- if (fMtl && node->GetMtl() == fMtl)
- return true;
- return false;
-}
-
-/////////////////////////////////////////////////////
-
-plPickCompNode::plPickCompNode(IParamBlock2* pb, int nodeParamID, plComponentBase* comp) :
- plPickNodeBase(pb, nodeParamID), fComp(comp)
-{
-}
-
-bool plPickCompNode::ICheckNode(plMaxNode* node)
-{
- // Filtering by nodes a component is attached to
- if (fComp && fComp->IsTarget((plMaxNodeBase*)node))
- return true;
-
- return false;
-}