Changed: Minor changes

--HG--
branch : develop
This commit is contained in:
kervala 2018-01-02 16:31:50 +01:00
parent 189ed246b1
commit 584621fe2f
3 changed files with 272 additions and 272 deletions

View file

@ -63,7 +63,7 @@ TCHAR *_EnvironmentNames[] =
_T("PSYCHOTIC"),
NULL
};
TCHAR *_MaterialNames[] =
TCHAR *_MaterialNames[] =
{
_T(""),
_T("no occlusion"),
@ -85,7 +85,7 @@ const std::set<INode*> *listNodeCallBack;
// ***************************************************************************
class addSubLodNodeHitCallBack : public HitByNameDlgCallback
class addSubLodNodeHitCallBack : public HitByNameDlgCallback
{
public:
INodeTab NodeTab;
@ -154,7 +154,7 @@ public:
((CRGBA*)this)->operator= (col);
return *this;
}
void setDifferentValuesMode()
{
DifferentValues= true;
@ -174,7 +174,7 @@ public:
SubDlg[i] = NULL;
for (i=0; i<VP_COUNT; i++)
SubVPDlg[i] = NULL;
InterfaceThreshold = 0.1f;
InterfaceThreshold = 0.1f;
GetInterfaceNormalsFromSceneObjects = 0;
LMCEnabled= 0;
}
@ -224,7 +224,7 @@ public:
std::string InterfaceFileName;
int GetInterfaceNormalsFromSceneObjects;
float InterfaceThreshold;
int DontAddToScene;
int DontAddToScene;
int DontExport;
// Lighting
@ -235,7 +235,7 @@ public:
// VertexProgram.
int VertexProgramId;
bool VertexProgramBypassed;
bool VertexProgramBypassed;
// WindTree VertexProgram.
CVPWindTreeAppData VertexProgramWindTree;
@ -258,8 +258,8 @@ public:
// Compression term for 8Bits LightMap Compression
CRGBAProp LMCAmbient[NumLightGroup];
CRGBAProp LMCDiffuse[NumLightGroup];
// Misc
int FloatingObject;
int SWT;
@ -360,7 +360,7 @@ void LightingStateChanged (HWND hwndDlg, CLodDialogBoxParam *currentParam)
EnableWindow(GetDlgItem (hwndDlg, IDC_USE_LIGHT_LOCAL_ATTENUATION), currentParam->VertexProgramBypassed ? FALSE : TRUE);
// Enable AmbientAddSun for realTime Ambient only
EnableWindow(GetDlgItem (hwndDlg, IDC_REALTIME_LIGHT_AMBIENT_ADD_SUN),
EnableWindow(GetDlgItem (hwndDlg, IDC_REALTIME_LIGHT_AMBIENT_ADD_SUN),
SendMessage (GetDlgItem (hwndDlg, IDC_EXPORT_REALTIME_LIGHT), BM_GETCHECK, 0, 0)!=BST_UNCHECKED);
}
@ -382,14 +382,14 @@ void VegetableStateChanged (HWND hwndDlg)
{
// Vegetable ?
bool enable = ( SendMessage (GetDlgItem (hwndDlg, IDC_VEGETABLE), BM_GETCHECK, 0, 0)!=BST_UNCHECKED );
// Enable alpha blend button
EnableWindow (GetDlgItem (hwndDlg, IDC_VEGETABLE_ALPHA_BLEND_ON), enable);
EnableWindow (GetDlgItem (hwndDlg, IDC_VEGETABLE_ALPHA_BLEND_OFF), enable);
EnableWindow (GetDlgItem (hwndDlg, IDC_CENTER_Z), enable);
EnableWindow (GetDlgItem (hwndDlg, IDC_CENTER_NULL), enable);
EnableWindow (GetDlgItem (hwndDlg, IDC_VEGETABLE_BEND_FACTOR), enable);
// Alpha blend ?
bool alphaBlend = IsDlgButtonChecked (hwndDlg, IDC_VEGETABLE_ALPHA_BLEND_ON)!=BST_UNCHECKED;
@ -407,7 +407,7 @@ void VegetableStateChanged (HWND hwndDlg)
precomputed= IsDlgButtonChecked (hwndDlg, IDC_VEGETABLE_AB_ON_LIGHTED_PRECOMPUTED)!=BST_UNCHECKED;
else
precomputed= IsDlgButtonChecked (hwndDlg, IDC_VEGETABLE_AB_OFF_LIGHTED_PRECOMPUTED)!=BST_UNCHECKED;
// Force Best Sided Lighting only if precomputed
EnableWindow (GetDlgItem (hwndDlg, IDC_VEGETABLE_FORCE_BEST_SIDED_LIGHTING), enable && precomputed);
@ -456,7 +456,7 @@ void exploreNode(INode *node)
if (soundGroup != "no sound")
_KnownSoundGroups.insert(soundGroup);
for (int i= 0; i<node->NumChildren(); ++i)
{
exploreNode(node->GetChildNode(i));
@ -473,7 +473,7 @@ INT_PTR CALLBACK AccelDialogCallback (
{
CLodDialogBoxParam *currentParam=(CLodDialogBoxParam *)GetWindowLongPtr(hwndDlg, GWLP_USERDATA);
switch (uMsg)
switch (uMsg)
{
case WM_INITDIALOG:
{
@ -543,7 +543,7 @@ INT_PTR CALLBACK AccelDialogCallback (
// nlassert(false);
}
// SendMessage(GetDlgItem(hwndDlg, IDC_SOUND_GROUP), WM_SETTEXT, 0, (LONG)(currentParam->SoundGroup.c_str()));
bool accelerator = (currentParam->AcceleratorType != -1);
CheckRadioButton (hwndDlg, IDC_RADIOACCELNO, IDC_RADIOACCELCLUSTER, accelerator?(IDC_RADIOACCELNO+(currentParam->AcceleratorType&NEL3D_APPDATA_ACCEL_TYPE)):0);
AccelStateChanged (hwndDlg);
@ -554,7 +554,7 @@ INT_PTR CALLBACK AccelDialogCallback (
if( HIWORD(wParam) == BN_CLICKED )
{
HWND hwndButton = (HWND) lParam;
switch (LOWORD(wParam))
switch (LOWORD(wParam))
{
case IDCANCEL:
EndDialog(hwndDlg, IDCANCEL);
@ -644,7 +644,7 @@ INT_PTR CALLBACK MRMDialogCallback (
{
CLodDialogBoxParam *currentParam=(CLodDialogBoxParam *)GetWindowLongPtr(hwndDlg, GWLP_USERDATA);
switch (uMsg)
switch (uMsg)
{
case WM_INITDIALOG:
{
@ -668,7 +668,7 @@ INT_PTR CALLBACK MRMDialogCallback (
EnableWindow (GetDlgItem (hwndDlg, IDC_REMOVE), currentParam->ListActived);
EnableWindow (GetDlgItem (hwndDlg, IDC_UP), currentParam->ListActived);
EnableWindow (GetDlgItem (hwndDlg, IDC_DOWN), currentParam->ListActived);
SetWindowText (GetDlgItem (hwndDlg, IDC_DIST_MAX), utf8ToTStr(currentParam->DistMax));
SetWindowText (GetDlgItem (hwndDlg, IDC_BLEND_LENGTH), utf8ToTStr(currentParam->BlendLength));
@ -704,7 +704,7 @@ INT_PTR CALLBACK MRMDialogCallback (
if( HIWORD(wParam) == BN_CLICKED )
{
HWND hwndButton = (HWND) lParam;
switch (LOWORD(wParam))
switch (LOWORD(wParam))
{
case IDCANCEL:
EndDialog(hwndDlg, IDCANCEL);
@ -716,7 +716,7 @@ INT_PTR CALLBACK MRMDialogCallback (
currentParam->BlendOut=SendMessage (GetDlgItem (hwndDlg, IDC_BLEND_OUT), BM_GETCHECK, 0, 0);
currentParam->CoarseMesh=SendMessage (GetDlgItem (hwndDlg, IDC_COARSE_MESH), BM_GETCHECK, 0, 0);
currentParam->DynamicMesh=SendMessage (GetDlgItem (hwndDlg, IDC_DYNAMIC_MESH), BM_GETCHECK, 0, 0);
TCHAR tmp[512];
GetWindowText (GetDlgItem (hwndDlg, IDC_DIST_MAX), tmp, 512);
currentParam->DistMax = tStrToUtf8(tmp);
@ -912,7 +912,7 @@ INT_PTR CALLBACK InstanceDialogCallback (
{
CLodDialogBoxParam *currentParam=(CLodDialogBoxParam *)GetWindowLongPtr(hwndDlg, GWLP_USERDATA);
switch (uMsg)
switch (uMsg)
{
case WM_INITDIALOG:
{
@ -934,7 +934,7 @@ INT_PTR CALLBACK InstanceDialogCallback (
bool colOk = currentParam->CollisionMeshGeneration>=0 && currentParam->CollisionMeshGeneration<4;
CheckRadioButton (hwndDlg, IDC_CAMERA_COL_RADIO1, IDC_CAMERA_COL_RADIO4, colOk?(IDC_CAMERA_COL_RADIO1+(currentParam->CollisionMeshGeneration)):0);
InstanceStateChanged(hwndDlg);
}
break;
@ -943,7 +943,7 @@ INT_PTR CALLBACK InstanceDialogCallback (
if( HIWORD(wParam) == BN_CLICKED )
{
HWND hwndButton = (HWND) lParam;
switch (LOWORD(wParam))
switch (LOWORD(wParam))
{
case IDCANCEL:
EndDialog(hwndDlg, IDCANCEL);
@ -956,7 +956,7 @@ INT_PTR CALLBACK InstanceDialogCallback (
GetWindowText (GetDlgItem (hwndDlg, IDC_EDIT_INSTANCE_NAME), tmp, 512);
currentParam->InstanceName = tStrToUtf8(tmp);
currentParam->DontAddToScene=SendMessage (GetDlgItem (hwndDlg, IDC_DONT_ADD_TO_SCENE), BM_GETCHECK, 0, 0);
GetWindowText (GetDlgItem (hwndDlg, IDC_EDIT_INSTANCE_GROUP_NAME), tmp, 512);
currentParam->InstanceGroupName = tStrToUtf8(tmp);
@ -1028,7 +1028,7 @@ INT_PTR CALLBACK LightmapDialogCallback (
{
CLodDialogBoxParam *currentParam=(CLodDialogBoxParam *)GetWindowLongPtr(hwndDlg, GWLP_USERDATA);
switch (uMsg)
switch (uMsg)
{
case WM_INITDIALOG:
{
@ -1050,7 +1050,7 @@ INT_PTR CALLBACK LightmapDialogCallback (
SendMessage (GetDlgItem (hwndDlg, IDC_LIGHT_DONT_CAST_SHADOW_EXTERIOR), BM_SETCHECK, currentParam->LightDontCastShadowExterior, 0);
SetWindowText (GetDlgItem (hwndDlg, IDC_EXPORT_LIGHTMAP_NAME), utf8ToTStr(currentParam->ExportLightMapName));
SendMessage (GetDlgItem (hwndDlg, IDC_REALTIME_LIGHT_AMBIENT_ADD_SUN), BM_SETCHECK, currentParam->RealTimeAmbientLightAddSun, 0);
// Set enable disable
LightingStateChanged (hwndDlg, currentParam);
@ -1062,7 +1062,7 @@ INT_PTR CALLBACK LightmapDialogCallback (
if( HIWORD(wParam) == BN_CLICKED )
{
HWND hwndButton = (HWND) lParam;
switch (LOWORD(wParam))
switch (LOWORD(wParam))
{
case IDC_RESET_NAME:
SetWindowText (GetDlgItem (hwndDlg, IDC_EXPORT_LIGHTMAP_NAME), _T("GlobalLight"));
@ -1092,7 +1092,7 @@ INT_PTR CALLBACK LightmapDialogCallback (
GetWindowText (GetDlgItem (hwndDlg, IDC_EXPORT_LIGHTMAP_NAME), tmp, 512);
currentParam->ExportLightMapName = tStrToUtf8(tmp);
currentParam->RealTimeAmbientLightAddSun= SendMessage (GetDlgItem (hwndDlg, IDC_REALTIME_LIGHT_AMBIENT_ADD_SUN), BM_GETCHECK, 0, 0);
// Get the acceleration type
if (IsDlgButtonChecked (hwndDlg, IDC_LIGHT_GROUP_ALWAYS) == BST_CHECKED)
currentParam->LightGroup = 0;
@ -1154,7 +1154,7 @@ INT_PTR CALLBACK LightmapDialogCallback (
EndDialog(hwndDlg,1);
break;
case WM_DESTROY:
case WM_DESTROY:
break;
@ -1180,7 +1180,7 @@ void Lightmap2StateChanged (HWND hwndDlg, CLodDialogBoxParam *currentParam)
EnableWindow (GetDlgItem(hwndDlg, IDC_LMC_AUTO_SETUP), enabled);
EnableWindow (GetDlgItem(hwndDlg, IDC_LMC_AUTO_SETUP_VISIBLEONLY), enabled);
EnableWindow (GetDlgItem(hwndDlg, IDC_LMC_COPY_FROM), enabled);
// MAX enable/disable
uint i;
for(i=0;i<CLodDialogBoxParam::NumLightGroup;i++)
@ -1190,14 +1190,14 @@ void Lightmap2StateChanged (HWND hwndDlg, CLodDialogBoxParam *currentParam)
}
// Static Enable / Disable
uint staticItems[]= {IDC_LMC_STATIC0, IDC_LMC_STATIC1, IDC_LMC_STATIC2, IDC_LMC_STATIC3,
uint staticItems[]= {IDC_LMC_STATIC0, IDC_LMC_STATIC1, IDC_LMC_STATIC2, IDC_LMC_STATIC3,
IDC_LMC_STATIC4, IDC_LMC_STATIC5, IDC_LMC_STATIC6, IDC_LMC_STATIC7, IDC_LMC_STATIC8, };
uint numStaticItems= sizeof(staticItems) / sizeof(staticItems[0]);
for(i=0;i<numStaticItems;i++)
{
EnableWindow (GetDlgItem(hwndDlg, staticItems[i]), enabled);
}
}
// ***************************************************************************
@ -1208,7 +1208,7 @@ void lmcAutoSetup(CLodDialogBoxParam *currentParam, bool visibleOnly)
// get all lightmap lights
std::vector<SLightBuild> lights;
getLightmapLightBuilds(lights, theCNelExport._Ip->GetTime(), *theCNelExport._Ip, visibleOnly);
// mean all light, by lightgroup
CRGBAF sumAmbient[CLodDialogBoxParam::NumLightGroup];
CRGBAF sumDiffuse[CLodDialogBoxParam::NumLightGroup];
@ -1258,7 +1258,7 @@ void lmcAutoSetup(CLodDialogBoxParam *currentParam, bool visibleOnly)
sumDiffuse[i]/= float(countDiffuse[i]);
diff= sumDiffuse[i];
}
// change the control and value
currentParam->LMCAmbient[i]= amb;
currentParam->LMCAmbient[i].Ctrl->SetColor(RGB(amb.R, amb.G, amb.B));
@ -1269,7 +1269,7 @@ void lmcAutoSetup(CLodDialogBoxParam *currentParam, bool visibleOnly)
// ***************************************************************************
struct CLMCParamFrom
struct CLMCParamFrom
{
bool AmbFilter[CLodDialogBoxParam::NumLightGroup];
bool DiffFilter[CLodDialogBoxParam::NumLightGroup];
@ -1278,7 +1278,7 @@ struct CLMCParamFrom
std::vector<INode*> Nodes;
// true if the user has clicked at least one item
bool SelectionDone;
CLMCParamFrom()
{
SelectionDone= false;
@ -1311,8 +1311,8 @@ INT_PTR CALLBACK LMCCopyFromDialogCallback(
{
CLMCParamFrom *lmcParam=(CLMCParamFrom *)GetWindowLongPtr(hwndDlg, GWLP_USERDATA);
uint i;
switch (uMsg)
switch (uMsg)
{
case WM_INITDIALOG:
{
@ -1336,7 +1336,7 @@ INT_PTR CALLBACK LMCCopyFromDialogCallback(
lmcParam->AmbValue[i].Ctrl->SetColor(RGB(a.R, a.G, a.B));
lmcParam->DiffValue[i].Ctrl->SetColor(RGB(d.R, d.G, d.B));
}
// init the filters.
nlctassert(CLodDialogBoxParam::NumLightGroup==3);
SendMessage (GetDlgItem (hwndDlg, IDC_LMC_COPY_ALWAYS_AMBIENT_FILTER), BM_SETCHECK, lmcParam->AmbFilter[0]?BST_CHECKED:BST_UNCHECKED, 0);
@ -1345,7 +1345,7 @@ INT_PTR CALLBACK LMCCopyFromDialogCallback(
SendMessage (GetDlgItem (hwndDlg, IDC_LMC_COPY_ALWAYS_DIFFUSE_FILTER), BM_SETCHECK, lmcParam->DiffFilter[0]?BST_CHECKED:BST_UNCHECKED, 0);
SendMessage (GetDlgItem (hwndDlg, IDC_LMC_COPY_SUN_DIFFUSE_FILTER), BM_SETCHECK, lmcParam->DiffFilter[1]?BST_CHECKED:BST_UNCHECKED, 0);
SendMessage (GetDlgItem (hwndDlg, IDC_LMC_COPY_NIGHT_DIFFUSE_FILTER), BM_SETCHECK, lmcParam->DiffFilter[2]?BST_CHECKED:BST_UNCHECKED, 0);
// init the list
HWND hwndList=GetDlgItem (hwndDlg, IDC_LMC_COPY_LIST);
for(i=0;i<lmcParam->Nodes.size();i++)
@ -1355,7 +1355,7 @@ INT_PTR CALLBACK LMCCopyFromDialogCallback(
// Insert string
SendMessage (hwndList, LB_ADDSTRING, 0, (LPARAM) str.c_str());
}
// gray the OK button
EnableWindow( GetDlgItem(hwndDlg, IDOK), FALSE);
}
@ -1365,7 +1365,7 @@ INT_PTR CALLBACK LMCCopyFromDialogCallback(
if( HIWORD(wParam) == BN_CLICKED )
{
HWND hwndButton = (HWND) lParam;
switch (LOWORD(wParam))
switch (LOWORD(wParam))
{
case IDCANCEL:
EndDialog(hwndDlg, IDCANCEL);
@ -1380,7 +1380,7 @@ INT_PTR CALLBACK LMCCopyFromDialogCallback(
lmcParam->DiffFilter[0]= SendMessage (GetDlgItem (hwndDlg, IDC_LMC_COPY_ALWAYS_DIFFUSE_FILTER), BM_GETCHECK, 0, 0) == BST_CHECKED;
lmcParam->DiffFilter[1]= SendMessage (GetDlgItem (hwndDlg, IDC_LMC_COPY_SUN_DIFFUSE_FILTER), BM_GETCHECK, 0, 0) == BST_CHECKED;
lmcParam->DiffFilter[2]= SendMessage (GetDlgItem (hwndDlg, IDC_LMC_COPY_NIGHT_DIFFUSE_FILTER), BM_GETCHECK, 0, 0) == BST_CHECKED;
// get colors
for(i=0;i<CLodDialogBoxParam::NumLightGroup;i++)
{
@ -1434,7 +1434,7 @@ INT_PTR CALLBACK LMCCopyFromDialogCallback(
// Get the node name
TCHAR name[512];
SendMessage (GetDlgItem (hwndDlg, IDC_LMC_COPY_LIST), LB_GETTEXT, wID, (LPARAM) (LPCTSTR) name);
// Find the node
INode *nodeClk=theCNelExport._Ip->GetINodeByName(name);
if (nodeClk)
@ -1454,17 +1454,17 @@ INT_PTR CALLBACK LMCCopyFromDialogCallback(
// ungray the OK button
EnableWindow( GetDlgItem(hwndDlg, IDOK), TRUE);
}
}
break;
case WM_CLOSE:
EndDialog(hwndDlg,IDCANCEL);
break;
case WM_DESTROY:
case WM_DESTROY:
break;
default:
return FALSE;
}
@ -1479,7 +1479,7 @@ void lmcCopyFrom(CLodDialogBoxParam *currentParam, HWND parentDlg)
// static to save filter between calls
static CLMCParamFrom paramLMCFrom;
// **** get all nodes
// get all nodes
std::vector<INode*> nodes;
@ -1532,7 +1532,7 @@ INT_PTR CALLBACK Lightmap2DialogCallback (
{
CLodDialogBoxParam *currentParam=(CLodDialogBoxParam *)GetWindowLongPtr(hwndDlg, GWLP_USERDATA);
switch (uMsg)
switch (uMsg)
{
case WM_INITDIALOG:
{
@ -1540,7 +1540,7 @@ INT_PTR CALLBACK Lightmap2DialogCallback (
LONG_PTR res = SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (LONG_PTR)lParam);
currentParam=(CLodDialogBoxParam *)GetWindowLongPtr(hwndDlg, GWLP_USERDATA);
// retrieve the color choosing Ctrl
// retrieve the color choosing Ctrl
nlctassert(CLodDialogBoxParam::NumLightGroup==3);
nlverify(currentParam->LMCAmbient[0].Ctrl= GetIColorSwatch(GetDlgItem(hwndDlg, IDC_LM_ALWAYS_AMBIENT)));
nlverify(currentParam->LMCAmbient[1].Ctrl= GetIColorSwatch(GetDlgItem(hwndDlg, IDC_LM_DAY_AMBIENT)));
@ -1548,7 +1548,7 @@ INT_PTR CALLBACK Lightmap2DialogCallback (
nlverify(currentParam->LMCDiffuse[0].Ctrl= GetIColorSwatch(GetDlgItem(hwndDlg, IDC_LM_ALWAYS_DIFFUSE)));
nlverify(currentParam->LMCDiffuse[1].Ctrl= GetIColorSwatch(GetDlgItem(hwndDlg, IDC_LM_DAY_DIFFUSE)));
nlverify(currentParam->LMCDiffuse[2].Ctrl= GetIColorSwatch(GetDlgItem(hwndDlg, IDC_LM_NIGHT_DIFFUSE)));
// set color, and color state
for(uint i=0;i<CLodDialogBoxParam::NumLightGroup;i++)
{
@ -1560,7 +1560,7 @@ INT_PTR CALLBACK Lightmap2DialogCallback (
// the enable button
SendMessage (GetDlgItem (hwndDlg, IDC_LM_COMPRESS_8BIT), BM_SETCHECK, currentParam->LMCEnabled, 0);
// Set enable disable
Lightmap2StateChanged (hwndDlg, currentParam);
}
@ -1570,7 +1570,7 @@ INT_PTR CALLBACK Lightmap2DialogCallback (
if( HIWORD(wParam) == BN_CLICKED )
{
HWND hwndButton = (HWND) lParam;
switch (LOWORD(wParam))
switch (LOWORD(wParam))
{
case IDCANCEL:
EndDialog(hwndDlg, IDCANCEL);
@ -1616,7 +1616,7 @@ INT_PTR CALLBACK Lightmap2DialogCallback (
{
nlctassert(CLodDialogBoxParam::NumLightGroup==3);
CRGBAProp *propEdited;
switch(LOWORD(wParam))
switch(LOWORD(wParam))
{
case IDC_LM_ALWAYS_AMBIENT: propEdited= &currentParam->LMCAmbient[0]; break;
case IDC_LM_DAY_AMBIENT: propEdited= &currentParam->LMCAmbient[1]; break;
@ -1635,7 +1635,7 @@ INT_PTR CALLBACK Lightmap2DialogCallback (
EndDialog(hwndDlg,1);
break;
case WM_DESTROY:
case WM_DESTROY:
break;
default:
@ -1655,7 +1655,7 @@ INT_PTR CALLBACK VegetableDialogCallback (
{
CLodDialogBoxParam *currentParam=(CLodDialogBoxParam *)GetWindowLongPtr(hwndDlg, GWLP_USERDATA);
switch (uMsg)
switch (uMsg)
{
case WM_INITDIALOG:
{
@ -1664,19 +1664,19 @@ INT_PTR CALLBACK VegetableDialogCallback (
currentParam=(CLodDialogBoxParam *)GetWindowLongPtr(hwndDlg, GWLP_USERDATA);
SendMessage (GetDlgItem (hwndDlg, IDC_VEGETABLE), BM_SETCHECK, currentParam->Vegetable, 0);
// Yoyo: enable like this. Crappy CheckRadioButton method...
SendMessage (GetDlgItem (hwndDlg, IDC_VEGETABLE_ALPHA_BLEND_ON), BM_SETCHECK, currentParam->VegetableAlphaBlend==0, 0 );
SendMessage (GetDlgItem (hwndDlg, IDC_VEGETABLE_ALPHA_BLEND_OFF), BM_SETCHECK, currentParam->VegetableAlphaBlend==1, 0 );
CheckRadioButton(hwndDlg, IDC_VEGETABLE_AB_ON_LIGHTED_PRECOMPUTED, IDC_VEGETABLE_AB_ON_UNLIGHTED, IDC_VEGETABLE_AB_ON_LIGHTED_PRECOMPUTED+currentParam->VegetableAlphaBlendOnLighted);
CheckRadioButton(hwndDlg, IDC_VEGETABLE_AB_OFF_LIGHTED_PRECOMPUTED, IDC_VEGETABLE_AB_OFF_UNLIGHTED, IDC_VEGETABLE_AB_OFF_LIGHTED_PRECOMPUTED+currentParam->VegetableAlphaBlendOffLighted);
SendMessage (GetDlgItem (hwndDlg, IDC_VEGETABLE_AB_OFF_DOUBLE_SIDED), BM_SETCHECK, currentParam->VegetableAlphaBlendOffDoubleSided, 0);
SendMessage (GetDlgItem (hwndDlg, IDC_VEGETABLE_FORCE_BEST_SIDED_LIGHTING), BM_SETCHECK, currentParam->VegetableForceBestSidedLighting, 0);
CheckRadioButton(hwndDlg, IDC_CENTER_NULL, IDC_CENTER_Z, IDC_CENTER_NULL+currentParam->VegetableBendCenter);
SetWindowText (GetDlgItem (hwndDlg, IDC_VEGETABLE_BEND_FACTOR), utf8ToTStr(currentParam->VegetableBendFactor));
@ -1689,7 +1689,7 @@ INT_PTR CALLBACK VegetableDialogCallback (
if( HIWORD(wParam) == BN_CLICKED )
{
HWND hwndButton = (HWND) lParam;
switch (LOWORD(wParam))
switch (LOWORD(wParam))
{
case IDCANCEL:
EndDialog(hwndDlg, IDCANCEL);
@ -1702,25 +1702,25 @@ INT_PTR CALLBACK VegetableDialogCallback (
currentParam->VegetableAlphaBlend = 0;
else if (IsDlgButtonChecked (hwndDlg, IDC_VEGETABLE_ALPHA_BLEND_OFF) == BST_CHECKED)
currentParam->VegetableAlphaBlend = 1;
else
else
currentParam->VegetableAlphaBlend = -1;
if (IsDlgButtonChecked (hwndDlg, IDC_VEGETABLE_AB_ON_LIGHTED_PRECOMPUTED) == BST_CHECKED)
currentParam->VegetableAlphaBlendOnLighted = 0;
else if (IsDlgButtonChecked (hwndDlg, IDC_VEGETABLE_AB_ON_UNLIGHTED) == BST_CHECKED)
currentParam->VegetableAlphaBlendOnLighted = 1;
else
else
currentParam->VegetableAlphaBlendOnLighted = -1;
if (IsDlgButtonChecked (hwndDlg, IDC_VEGETABLE_AB_OFF_LIGHTED_PRECOMPUTED) == BST_CHECKED)
currentParam->VegetableAlphaBlendOffLighted = 0;
else if (IsDlgButtonChecked (hwndDlg, IDC_VEGETABLE_AB_OFF_LIGHTED_DYNAMIC) == BST_CHECKED)
currentParam->VegetableAlphaBlendOffLighted = 1;
else if (IsDlgButtonChecked (hwndDlg, IDC_VEGETABLE_AB_OFF_UNLIGHTED) == BST_CHECKED)
currentParam->VegetableAlphaBlendOffLighted = 2;
else
else
currentParam->VegetableAlphaBlendOffLighted = -1;
currentParam->VegetableAlphaBlendOffDoubleSided = SendMessage (GetDlgItem (hwndDlg, IDC_VEGETABLE_AB_OFF_DOUBLE_SIDED), BM_GETCHECK, 0, 0);
currentParam->VegetableForceBestSidedLighting= SendMessage (GetDlgItem (hwndDlg, IDC_VEGETABLE_FORCE_BEST_SIDED_LIGHTING), BM_GETCHECK, 0, 0);
@ -1729,9 +1729,9 @@ INT_PTR CALLBACK VegetableDialogCallback (
currentParam->VegetableBendCenter = 0;
else if (IsDlgButtonChecked (hwndDlg, IDC_CENTER_Z) == BST_CHECKED)
currentParam->VegetableBendCenter = 1;
else
else
currentParam->VegetableBendCenter = -1;
TCHAR tmp[512];
GetWindowText (GetDlgItem (hwndDlg, IDC_VEGETABLE_BEND_FACTOR), tmp, 512);
currentParam->VegetableBendFactor = tStrToUtf8(tmp);
@ -1775,7 +1775,7 @@ INT_PTR CALLBACK VertexProgramDialogCallBack (
{
CLodDialogBoxParam *currentParam=(CLodDialogBoxParam *)GetWindowLongPtr(hwndDlg, GWLP_USERDATA);
switch (uMsg)
switch (uMsg)
{
case WM_INITDIALOG:
{
@ -1847,7 +1847,7 @@ INT_PTR CALLBACK VertexProgramDialogCallBack (
if( HIWORD(wParam) == BN_CLICKED )
{
HWND hwndButton = (HWND) lParam;
switch (LOWORD(wParam))
switch (LOWORD(wParam))
{
case IDCANCEL:
EndDialog(hwndDlg, IDCANCEL);
@ -1933,7 +1933,7 @@ void updateVPWTStatic(HWND hwndDlg, uint type, uint depth, const CVPWindTreeAppD
TCHAR stmp[256];
float nticks= CVPWindTreeAppData::NumTicks;
float scale;
// which scale??
switch(type)
{
@ -1951,27 +1951,27 @@ void updateVPWTStatic(HWND hwndDlg, uint type, uint depth, const CVPWindTreeAppD
// update static according to type.
switch(type)
{
case 0:
case 0:
sliderValue= SendDlgItemMessage(hwndDlg, VPWTFreqSliderId[depth], TBM_GETPOS, 0, 0);
_stprintf(stmp, _T("%.2f"), scale * float(sliderValue)/nticks);
SetWindowText( GetDlgItem(hwndDlg, VPWTFreqStaticId[depth]), stmp );
break;
case 1:
case 1:
sliderValue= SendDlgItemMessage(hwndDlg, VPWTFreqWDSliderId[depth], TBM_GETPOS, 0, 0);
_stprintf(stmp, _T("%.2f"), scale * float(sliderValue)/nticks);
SetWindowText( GetDlgItem(hwndDlg, VPWTFreqWDStaticId[depth]), stmp );
break;
case 2:
case 2:
sliderValue= SendDlgItemMessage(hwndDlg, VPWTDistXYSliderId[depth], TBM_GETPOS, 0, 0);
_stprintf(stmp, _T("%.2f"), scale * float(sliderValue)/nticks);
SetWindowText( GetDlgItem(hwndDlg, VPWTDistXYStaticId[depth]), stmp );
break;
case 3:
case 3:
sliderValue= SendDlgItemMessage(hwndDlg, VPWTDistZSliderId[depth], TBM_GETPOS, 0, 0);
_stprintf(stmp, _T("%.2f"), scale * float(sliderValue)/nticks);
SetWindowText( GetDlgItem(hwndDlg, VPWTDistZStaticId[depth]), stmp );
break;
case 4:
case 4:
sliderValue= SendDlgItemMessage(hwndDlg, VPWTBiasSliderId[depth], TBM_GETPOS, 0, 0);
// expand to -2 to 2.
float biasVal= 4 * float(sliderValue)/nticks - 2;
@ -2041,10 +2041,10 @@ INT_PTR CALLBACK VPWindTreeCallback (
{
CLodDialogBoxParam *currentParam=(CLodDialogBoxParam *)GetWindowLongPtr(hwndDlg, GWLP_USERDATA);
switch (uMsg)
switch (uMsg)
{
case WM_INITDIALOG:
{
{
// Param pointers
LONG_PTR res = SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (LONG_PTR)lParam);
currentParam=(CLodDialogBoxParam *)GetWindowLongPtr(hwndDlg, GWLP_USERDATA);
@ -2108,7 +2108,7 @@ INT_PTR CALLBACK VPWindTreeCallback (
if( HIWORD(wParam) == BN_CLICKED )
{
HWND hwndButton = (HWND) lParam;
switch (LOWORD(wParam))
switch (LOWORD(wParam))
{
case IDCANCEL:
EndDialog(hwndDlg, IDCANCEL);
@ -2175,9 +2175,9 @@ INT_PTR CALLBACK VPWindTreeCallback (
// EditBox change: ...
if( HIWORD(wParam) == EN_KILLFOCUS || EnChangeReturn)
{
switch (LOWORD(wParam))
{
{
switch (LOWORD(wParam))
{
case IDC_EDIT_VPWT_FREQ_SCALE:
{
// Read FreqScale
@ -2220,7 +2220,7 @@ INT_PTR CALLBACK VPWindTreeCallback (
SetWindowText( GetDlgItem(hwndDlg, IDC_EDIT_VPWT_DIST_SCALE), stmp );
}
break;
}
}
}
}
break;
@ -2279,10 +2279,10 @@ INT_PTR CALLBACK MiscDialogCallback (
{
CLodDialogBoxParam *currentParam=(CLodDialogBoxParam *)GetWindowLongPtr(hwndDlg, GWLP_USERDATA);
switch (uMsg)
switch (uMsg)
{
case WM_INITDIALOG:
{
{
// Param pointers
LONG_PTR res = SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (LONG_PTR)lParam);
currentParam=(CLodDialogBoxParam *)GetWindowLongPtr(hwndDlg, GWLP_USERDATA);
@ -2302,12 +2302,12 @@ INT_PTR CALLBACK MiscDialogCallback (
// Mesh interfaces
SetWindowText (GetDlgItem (hwndDlg, IDC_EDIT_INTERFACE_FILE), utf8ToTStr(currentParam->InterfaceFileName));
SetWindowText (GetDlgItem (hwndDlg, IDC_EDIT_INTERFACE_THRESHOLD),
SetWindowText (GetDlgItem (hwndDlg, IDC_EDIT_INTERFACE_THRESHOLD),
currentParam->InterfaceThreshold != -1.f ? utf8ToTStr(toStringMax(currentParam->InterfaceThreshold))
: _T("")
);
SendMessage(GetDlgItem(hwndDlg, IDC_GET_INTERFACE_NORMAL_FROM_SCENE_OBJECTS), BM_SETCHECK, currentParam->GetInterfaceNormalsFromSceneObjects, 0);
// Skeleton Scale
SendMessage( GetDlgItem(hwndDlg, IDC_EXPORT_BONE_SCALE), BM_SETCHECK, currentParam->ExportBoneScale, 0);
SetWindowText (GetDlgItem (hwndDlg, IDC_EXPORT_BONE_SCALE_NAME_EXT), utf8ToTStr(currentParam->ExportBoneScaleNameExt));
@ -2325,7 +2325,7 @@ INT_PTR CALLBACK MiscDialogCallback (
if( HIWORD(wParam) == BN_CLICKED )
{
HWND hwndButton = (HWND) lParam;
switch (LOWORD(wParam))
switch (LOWORD(wParam))
{
case IDCANCEL:
EndDialog(hwndDlg, IDCANCEL);
@ -2358,10 +2358,10 @@ INT_PTR CALLBACK MiscDialogCallback (
currentParam->InterfaceFileName = tStrToUtf8(tmp);
GetWindowText (GetDlgItem (hwndDlg, IDC_EDIT_INTERFACE_THRESHOLD), tmp, 512);
if (_tcslen(tmp) != 0)
currentParam->InterfaceThreshold = toFloatMax(tmp);
currentParam->InterfaceThreshold = toFloatMax(tmp);
currentParam->GetInterfaceNormalsFromSceneObjects = SendMessage (GetDlgItem (hwndDlg, IDC_GET_INTERFACE_NORMAL_FROM_SCENE_OBJECTS), BM_GETCHECK, 0, 0);
// Skeleton Scale
currentParam->ExportBoneScale= SendMessage( GetDlgItem(hwndDlg, IDC_EXPORT_BONE_SCALE), BM_GETCHECK, 0, 0);
GetWindowText (GetDlgItem (hwndDlg, IDC_EXPORT_BONE_SCALE_NAME_EXT), tmp, 512);
@ -2414,10 +2414,10 @@ INT_PTR CALLBACK AnimationDialogCallback (
{
CLodDialogBoxParam *currentParam=(CLodDialogBoxParam *)GetWindowLongPtr(hwndDlg, GWLP_USERDATA);
switch (uMsg)
switch (uMsg)
{
case WM_INITDIALOG:
{
{
// Param pointers
LONG_PTR res = SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (LONG_PTR)lParam);
currentParam=(CLodDialogBoxParam *)GetWindowLongPtr(hwndDlg, GWLP_USERDATA);
@ -2434,7 +2434,7 @@ INT_PTR CALLBACK AnimationDialogCallback (
if( HIWORD(wParam) == BN_CLICKED )
{
HWND hwndButton = (HWND) lParam;
switch (LOWORD(wParam))
switch (LOWORD(wParam))
{
case IDCANCEL:
EndDialog(hwndDlg, IDCANCEL);
@ -2483,7 +2483,7 @@ INT_PTR CALLBACK LodDialogCallback (
{
CLodDialogBoxParam *currentParam=(CLodDialogBoxParam *)GetWindowLongPtr(hwndDlg, GWLP_USERDATA);
switch (uMsg)
switch (uMsg)
{
case WM_INITDIALOG:
{
@ -2551,7 +2551,7 @@ INT_PTR CALLBACK LodDialogCallback (
{
case TCN_SELCHANGE:
{
uint curSel=SendMessage (pnmh->hwndFrom, TCM_GETCURSEL, 0, 0);
for (uint tab=0; tab<TAB_COUNT; tab++)
{
@ -2568,7 +2568,7 @@ INT_PTR CALLBACK LodDialogCallback (
if( HIWORD(wParam) == BN_CLICKED )
{
HWND hwndButton = (HWND) lParam;
switch (LOWORD(wParam))
switch (LOWORD(wParam))
{
case IDCANCEL:
EndDialog(hwndDlg, IDCANCEL);
@ -2593,9 +2593,9 @@ INT_PTR CALLBACK LodDialogCallback (
EndDialog(hwndDlg,1);
break;
case WM_DESTROY:
case WM_DESTROY:
break;
default:
return FALSE;
}
@ -2607,7 +2607,7 @@ INT_PTR CALLBACK LodDialogCallback (
void CNelExport::OnNodeProperties (const std::set<INode*> &listNode)
{
// Get
// Get
uint nNumSelNode=(uint)listNode.size();
if (nNumSelNode)
@ -2780,13 +2780,13 @@ void CNelExport::OnNodeProperties (const std::set<INode*> &listNode)
param.LMCAmbient[i]= CExportNel::getScriptAppData (node, NEL3D_APPDATA_EXPORT_LMC_AMBIENT_START+i, CRGBA::Black);
param.LMCDiffuse[i]= CExportNel::getScriptAppData (node, NEL3D_APPDATA_EXPORT_LMC_DIFFUSE_START+i, CRGBA::White);
}
// CollisionMeshGeneration
param.CollisionMeshGeneration=CExportNel::getScriptAppData (node, NEL3D_APPDATA_CAMERA_COLLISION_MESH_GENERATION, 0);
// RealTimeAmbientLightAddSun
param.RealTimeAmbientLightAddSun= CExportNel::getScriptAppData (node, NEL3D_APPDATA_REALTIME_AMBIENT_ADD_SUN, BST_UNCHECKED);
// Something selected ?
std::set<INode*>::const_iterator ite=listNode.begin();
ite++;
@ -2902,7 +2902,7 @@ void CNelExport::OnNodeProperties (const std::set<INode*> &listNode)
param.RemanenceRollupRatio = -1.f;
if (CExportNel::getScriptAppData (node, NEL3D_APPDATA_REMANENCE_SLICE_NUMBER, 64)!=param.RemanenceSliceNumber)
param.RemanenceSliceNumber = -1;
// Radial normals
for (uint smoothGroup=0; smoothGroup<NEL3D_RADIAL_NORMAL_COUNT; smoothGroup++)
@ -3004,9 +3004,9 @@ void CNelExport::OnNodeProperties (const std::set<INode*> &listNode)
if (CExportNel::getScriptAppData (node, NEL3D_APPDATA_LIGHT_DONT_CAST_SHADOW_EXTERIOR, BST_UNCHECKED) != param.LightDontCastShadowExterior)
param.LightDontCastShadowExterior= BST_INDETERMINATE;
// VertexProgram
// simply disable VertexProgram edition of multiple selection...
// simply disable VertexProgram edition of multiple selection...
param.VertexProgramId= -1;
// Collision
@ -3037,15 +3037,15 @@ void CNelExport::OnNodeProperties (const std::set<INode*> &listNode)
if(CExportNel::getScriptAppData (node, NEL3D_APPDATA_EXPORT_LMC_DIFFUSE_START+i, CRGBA::White) != param.LMCDiffuse[i])
param.LMCDiffuse[i].setDifferentValuesMode();
}
// CollisionMeshGeneration
if (CExportNel::getScriptAppData (node, NEL3D_APPDATA_CAMERA_COLLISION_MESH_GENERATION, 0)!=param.CollisionMeshGeneration)
param.CollisionMeshGeneration = -1;
// RealTimeAmbientLightAddSun
if (CExportNel::getScriptAppData (node, NEL3D_APPDATA_REALTIME_AMBIENT_ADD_SUN, BST_UNCHECKED) != param.RealTimeAmbientLightAddSun)
param.RealTimeAmbientLightAddSun= BST_INDETERMINATE;
// Next sel
ite++;
}
@ -3154,22 +3154,22 @@ void CNelExport::OnNodeProperties (const std::set<INode*> &listNode)
}
if ( (param.InstanceShape != DIFFERENT_VALUE_STRING) || (listNode.size()==1))
CExportNel::setScriptAppData (node, NEL3D_APPDATA_INSTANCE_SHAPE, param.InstanceShape);
CExportNel::setScriptAppData (node, NEL3D_APPDATA_INSTANCE_SHAPE, param.InstanceShape);
if (param.InstanceName != DIFFERENT_VALUE_STRING)
CExportNel::setScriptAppData (node, NEL3D_APPDATA_INSTANCE_NAME, param.InstanceName);
CExportNel::setScriptAppData (node, NEL3D_APPDATA_INSTANCE_NAME, param.InstanceName);
if (param.DontAddToScene != BST_INDETERMINATE)
CExportNel::setScriptAppData (node, NEL3D_APPDATA_DONT_ADD_TO_SCENE, param.DontAddToScene);
if (param.AutomaticAnimation != BST_INDETERMINATE)
CExportNel::setScriptAppData (node, NEL3D_APPDATA_AUTOMATIC_ANIMATION, param.AutomaticAnimation);
if (param.InstanceGroupName != DIFFERENT_VALUE_STRING)
CExportNel::setScriptAppData (node, NEL3D_APPDATA_IGNAME, param.InstanceGroupName);
CExportNel::setScriptAppData (node, NEL3D_APPDATA_IGNAME, param.InstanceGroupName);
if (param.InterfaceFileName != "")
CExportNel::setScriptAppData (node, NEL3D_APPDATA_INTERFACE_FILE, param.InterfaceFileName);
if (param.InterfaceThreshold != -1)
CExportNel::setScriptAppData (node, NEL3D_APPDATA_INTERFACE_THRESHOLD, param.InterfaceThreshold);
if (param.GetInterfaceNormalsFromSceneObjects != BST_INDETERMINATE)
CExportNel::setScriptAppData (node, NEL3D_APPDATA_GET_INTERFACE_NORMAL_FROM_SCENE_OBJECTS, param.GetInterfaceNormalsFromSceneObjects);
if (param.LightGroup != -1)
CExportNel::setScriptAppData (node, NEL3D_APPDATA_LM_LIGHT_GROUP, param.LightGroup);
@ -3195,7 +3195,7 @@ void CNelExport::OnNodeProperties (const std::set<INode*> &listNode)
CExportNel::setScriptAppData (node, NEL3D_APPDATA_RADIAL_NORMAL_SM+smoothGroup, param.RadialNormals[smoothGroup]);
}
if (param.LumelSizeMul != DIFFERENT_VALUE_STRING)
CExportNel::setScriptAppData (node, NEL3D_APPDATA_LUMELSIZEMUL, param.LumelSizeMul);
if (param.SoftShadowRadius != DIFFERENT_VALUE_STRING)
@ -3228,7 +3228,7 @@ void CNelExport::OnNodeProperties (const std::set<INode*> &listNode)
// Write size of the list
uint sizeList=std::min ((uint)param.ListLodName.size(), (uint)NEL3D_APPDATA_LOD_NAME_COUNT_MAX);
CExportNel::setScriptAppData (node, NEL3D_APPDATA_LOD_NAME_COUNT, (int)sizeList);
// Write the strings
uint stringIndex=0;
std::list<std::string>::iterator ite=param.ListLodName.begin();
@ -3289,7 +3289,7 @@ void CNelExport::OnNodeProperties (const std::set<INode*> &listNode)
if (param.VertexProgramId!=-1)
{
CExportNel::setScriptAppData (node, NEL3D_APPDATA_VERTEXPROGRAM_ID, param.VertexProgramId);
// according to VertexProgram, change setup
// according to VertexProgram, change setup
if(param.VertexProgramId==1)
{
CExportNel::setScriptAppDataVPWT(node, param.VertexProgramWindTree);
@ -3346,15 +3346,15 @@ void CNelExport::OnNodeProperties (const std::set<INode*> &listNode)
CExportNel::setScriptAppData (node, NEL3D_APPDATA_EXPORT_LMC_DIFFUSE_START+i, col);
}
}
// CollisionMeshGeneration
if (param.CollisionMeshGeneration != -1)
CExportNel::setScriptAppData (node, NEL3D_APPDATA_CAMERA_COLLISION_MESH_GENERATION, param.CollisionMeshGeneration);
// RealTimeAmbientLightAddSun.
if (param.RealTimeAmbientLightAddSun != BST_INDETERMINATE)
CExportNel::setScriptAppData (node, NEL3D_APPDATA_REALTIME_AMBIENT_ADD_SUN, param.RealTimeAmbientLightAddSun);
// Next node
ite++;
}

View file

@ -95,9 +95,9 @@ Matrix3 CExportNel::viewMatrix2CameraMatrix (const Matrix3& viewMatrix)
// ConvertMatrix a 3dsmax vector in NeL matrix
void CExportNel::convertVector (CVector& nelVector, const Point3& maxVector)
{
nelVector.x = maxVector.x;
nelVector.y = maxVector.y;
nelVector.z = maxVector.z;
nelVector.x = maxVector.x;
nelVector.y = maxVector.y;
nelVector.z = maxVector.z;
}
@ -409,7 +409,7 @@ bool getValueByNameUsingParamBlock2Internal (Animatable& node, const char* sName
}
else
{
nlwarning("Invalid type specified for pblock2 value with name '%s', given type '%u', found '%u'",
nlwarning("Invalid type specified for pblock2 value with name '%s', given type '%u', found '%u'",
sName, (uint32)type, (uint32)paramType);
}
}
@ -476,12 +476,12 @@ Modifier* CExportNel::getModifier (INode* pNode, Class_ID modCID)
int m;
int nNumMods = pDObj->NumModifiers();
// Step through all modififers and verify the class id
for (m=0; m<nNumMods; ++m)
for (m=0; m<nNumMods; ++m)
{
Modifier* pMod = pDObj->GetModifier(m);
if (pMod)
if (pMod)
{
if (pMod->ClassID() == modCID)
if (pMod->ClassID() == modCID)
{
// Match! Return it
return pMod;
@ -528,22 +528,22 @@ std::string CExportNel::getNelObjectName (INode& node)
if (obj)
{
Class_ID clid = obj->ClassID();
// is the object a particle system ? (we do this defore meshs, because for now there is a mesh in max scenes to say where a particle system is...)
// is the object a particle system ? (we do this defore meshs, because for now there is a mesh in max scenes to say where a particle system is...)
if (clid.PartA() == NEL_PARTICLE_SYSTEM_CLASS_ID)
{
std::string shapeName;
if (CExportNel::getValueByNameUsingParamBlock2(node, "ps_file_name", (ParamType2) TYPE_STRING, &shapeName, 0))
{
return NLMISC::CFile::getFilename(shapeName);
}
}
}
}
// Try to get an APPDATA for the name of the object
// Try to get an APPDATA for the name of the object
AppDataChunk *ad = node.GetAppDataChunk (MAXSCRIPT_UTILITY_CLASS_ID, UTILITY_CLASS_ID, NEL3D_APPDATA_INSTANCE_SHAPE);
if (ad&&ad->data)
{
if (::strlen((const char *) ad->data) != 0)
{
{
// Get the name of the object in the APP data
return (const char*)ad->data;
}
@ -562,7 +562,7 @@ std::string CExportNel::getNelObjectName (INode& node)
if (ad&&ad->data)
{
if (_tcslen((const TCHAR *) ad->data) != 0)
{
{
// get file name only
return NLMISC::CFile::getFilename(tStrToUtf8((const TCHAR*)ad->data));
}
@ -578,7 +578,7 @@ std::string CExportNel::getNelObjectName (INode& node)
}
}
else
{
{
// Extract the node name
return tStrToUtf8(node.GetName());
}
@ -587,7 +587,7 @@ std::string CExportNel::getNelObjectName (INode& node)
// --------------------------------------------------
void CExportNel::decompMatrix (NLMISC::CVector& nelScale, NLMISC::CQuat& nelRot, NLMISC::CVector& nelPos,
void CExportNel::decompMatrix (NLMISC::CVector& nelScale, NLMISC::CQuat& nelRot, NLMISC::CVector& nelPos,
const Matrix3& maxMatrix)
{
// Use decomp part of the max SDK
@ -601,7 +601,7 @@ void CExportNel::decompMatrix (NLMISC::CVector& nelScale, NLMISC::CQuat& nelRot,
parts.q.MakeMatrix(rtm);
parts.u.MakeMatrix(srtm);
stm = ScaleMatrix(parts.k);
ftm = ScaleMatrix(Point3(parts.f,parts.f,parts.f));
ftm = ScaleMatrix(Point3(parts.f,parts.f,parts.f));
Matrix3 mat = Inverse(srtm) * stm * srtm * rtm * ftm * ptm;
// Set the translation
@ -841,7 +841,7 @@ void CExportNel::addParentLodNode (INode &child, std::set<INode*> &lodListToExcl
if (parent == NULL)
parent = _Ip->GetRootNode();
// Get its child lod
// Get its child lod
uint lodCount = getScriptAppData (parent, NEL3D_APPDATA_LOD_NAME_COUNT, 0);
for (uint lod=0; lod<lodCount; lod++)
{
@ -894,13 +894,13 @@ void CExportNel::uvMatrix2NelUVMatrix (const Matrix3& maxMatrix, NLMISC::CMatrix
dest.identity();
// Set the rotation part
dest.setRot(I, J, K);
dest.setRot(I, J, K);
// Set the position part
dest.setPos(P);
dest.setPos(P);
// transfo matrix
CMatrix convert;
convert.setRot(CVector::I, -CVector::J, CVector::K);
convert.setPos(CVector::J);
@ -967,7 +967,7 @@ struct CMaxMeshSeg
uint V0, V1;
// for map insertion
bool operator<(const CMaxMeshSeg &other) const
{
{
uint lv0 = std::min(V0, V1);
uint lv1 = std::max(V0, V1);
@ -983,8 +983,8 @@ struct CMaxMeshSeg
return !(*this < other) && !(other < *this);
}
CMaxMeshSeg(uint v0, uint v1) : V0(v0),
V1(v1)
{
V1(v1)
{
}
};
@ -993,7 +993,7 @@ struct CPredNextSegOf
{
uint Prev;
CPredNextSegOf(uint prev) : Prev(prev) {}
bool operator()(const CMaxMeshSeg &value) const { return value.V0 == Prev || value.V1 == Prev; }
bool operator()(const CMaxMeshSeg &value) const { return value.V0 == Prev || value.V1 == Prev; }
};
/// Get normal of a max triangle in nel format
@ -1009,7 +1009,7 @@ static NLMISC::CVector getMaxFaceNormal(const Mesh &m, const NLMISC::CMatrix &ba
normal.normalize();
return normal;
}
@ -1017,11 +1017,11 @@ static NLMISC::CVector getMaxFaceNormal(const Mesh &m, const NLMISC::CMatrix &ba
// This convert a polygon expressed as a max mesh into a list of ordered vectors
void CExportNel::maxPolygonMeshToOrderedPoly(Mesh &mesh, std::vector<NLMISC::CVector> &dest, const NLMISC::CMatrix &basis, NLMISC::CVector &avgNormal)
{
/// We use a very simple (but slow) algo : examine for each segment how many tris share it. If it is one then it is a border seg
/// We use a very simple (but slow) algo : examine for each segment how many tris share it. If it is one then it is a border seg
/// Then, just order segments
typedef std::map<CMaxMeshSeg, uint> TSegMap;
typedef std::map<CMaxMeshSeg, uint> TSegMap;
avgNormal.set(0, 0, 0);
/////////////////////////////////////////////////////////////
@ -1056,15 +1056,15 @@ void CExportNel::maxPolygonMeshToOrderedPoly(Mesh &mesh, std::vector<NLMISC::CVe
// keep segments for which nbref is 1 //
////////////////////////////////////////
typedef std::list<CMaxMeshSeg> TSegList;
TSegList borderSegs;
typedef std::list<CMaxMeshSeg> TSegList;
TSegList borderSegs;
for(TSegMap::const_iterator it = segs.begin(); it != segs.end(); ++it)
{
if (it->second == 1) borderSegs.push_back(it->first);
}
dest.clear();
if (borderSegs.empty()) return;
@ -1081,9 +1081,9 @@ void CExportNel::maxPolygonMeshToOrderedPoly(Mesh &mesh, std::vector<NLMISC::CVe
for(;;)
{
TSegList::iterator nextSeg = std::find_if(borderSegs.begin(), borderSegs.end(), CPredNextSegOf(nextToFind));
if (nextSeg == borderSegs.end()) return;
if (nextSeg == borderSegs.end()) return;
CExportNel::convertVector(pos, mesh.verts[nextSeg->V0 == nextToFind ? nextSeg->V0 : nextSeg->V1]);
dest.push_back(basis * pos);
dest.push_back(basis * pos);
nextToFind = (nextSeg->V0 == nextToFind) ? nextSeg->V1 : nextSeg->V0;
borderSegs.erase(nextSeg);
}
@ -1096,14 +1096,14 @@ void CExportNel::maxPolygonMeshToOrderedPoly(Mesh &mesh, std::vector<NLMISC::CVe
static std::string OldDecimalSeparatorLocale;
static void setDecimalSeparatorAsPoint()
{
{
OldDecimalSeparatorLocale = ::setlocale(LC_NUMERIC, NULL);
::setlocale(LC_NUMERIC, "C");
}
static void restoreDecimalSeparator()
{
::setlocale(LC_NUMERIC, OldDecimalSeparatorLocale.c_str());
{
::setlocale(LC_NUMERIC, OldDecimalSeparatorLocale.c_str());
}
@ -1128,7 +1128,7 @@ bool toFloatMax(const TCHAR *src, float &dest)
}
bool toFloatMax(const std::string &src, float &dest)
{
{
setDecimalSeparatorAsPoint();
std::string str(src);
std::string::size_type pointPos = str.find_first_of(",");
@ -1158,17 +1158,17 @@ bool toFloatMax(const std::string &src, float &dest)
result += (float) (*src - '0');
++src;
}
if (!(*src == '.' || *src == ','))
{
if (!(*src == '.' || *src == ','))
{
if (numberFound)
{
{
dest = sgn * result;
return true;
}
else
return false;
}
++src;
++src;
if (!::isdigit(*src))
{
if (!numberFound)
@ -1176,9 +1176,9 @@ bool toFloatMax(const std::string &src, float &dest)
return false;
}
}
float addValue = 0.1f;
float addValue = 0.1f;
while (::isdigit(*src))
{
{
result += addValue * (float) (*src - '0');
addValue *= 0.1f;
++ src;
@ -1217,15 +1217,15 @@ std::string toStringMax(float value)
do
{
value *= 10.f;
frac = (float) ::modf((double) value, &intPart);
result += toString((int) intPart % 10);
frac = (float) ::modf((double) value, &intPart);
result += toString((int) intPart % 10);
}
while (frac != 0.f);
return positive ? result : "-" + result;*/
}
///=======================================================================
std::string toStringMax(int value)
{
{
char result[256];
setDecimalSeparatorAsPoint();
::sprintf(result, "%d", value);
@ -1233,7 +1233,7 @@ std::string toStringMax(int value)
return result;
/*char str[256];
::sprintf(str, "%d", value);
::sprintf(str, "%d", value);
return str;*/
}
///=======================================================================

View file

@ -153,7 +153,7 @@ void drawVertexColorBox (float x0, float y0, float x1, float y1, CRGBA color, fl
{
// Draw a white frame behind
CDRU::drawQuad (x0, y0, x1, y1, driver, CRGBA (0x40, 0x40, 0x40), CViewport());
// Compute the colors with alpha to show the hardness
CRGBA fullFull=color;
CRGBA full=color;
@ -222,9 +222,9 @@ void drawInterface (TModeMouse select, TModePaint mode, PaintPatchMod *pobj, IDr
CDRU::drawBitmap ( (float)(t%MOD_WIDTH)/(float)MOD_WIDTH, (float)(t/MOD_WIDTH)/(float)MOD_HEIGHT, 1.f/(float)MOD_WIDTH,
1.f/(float)MOD_HEIGHT, *texture, driver, CViewport(), false);
else
CDRU::drawQuad ( (float)(t%MOD_WIDTH)/(float)MOD_WIDTH, (float)(t/MOD_WIDTH)/(float)MOD_HEIGHT,
CDRU::drawQuad ( (float)(t%MOD_WIDTH)/(float)MOD_WIDTH, (float)(t/MOD_WIDTH)/(float)MOD_HEIGHT,
(float)(t%MOD_WIDTH)/(float)MOD_WIDTH+1.f/(float)MOD_WIDTH,
(float)(t/MOD_WIDTH)/(float)MOD_HEIGHT+1.f/(float)MOD_HEIGHT, driver,
(float)(t/MOD_WIDTH)/(float)MOD_HEIGHT+1.f/(float)MOD_HEIGHT, driver,
CRGBA (128, 128, 128), CViewport());
}
}
@ -394,7 +394,7 @@ void drawInterface (TModeMouse select, TModePaint mode, PaintPatchMod *pobj, IDr
if ((pobj->CurrentTileSet!=-1)&&(mode==ModeTile))
{
// *** Draw the current group
ITexture* group[NL3D_CTILE_NUM_GROUP+1]={bankCont->allBitmap, bankCont->_0Bitmap, bankCont->_1Bitmap, bankCont->_2Bitmap, bankCont->_3Bitmap,
ITexture* group[NL3D_CTILE_NUM_GROUP+1]={bankCont->allBitmap, bankCont->_0Bitmap, bankCont->_1Bitmap, bankCont->_2Bitmap, bankCont->_3Bitmap,
bankCont->_4Bitmap, bankCont->_5Bitmap, bankCont->_6Bitmap, bankCont->_7Bitmap, bankCont->_8Bitmap, bankCont->_9Bitmap,
bankCont->_10Bitmap, bankCont->_11Bitmap};
@ -450,7 +450,7 @@ void makeVectMesh (std::vector<EPM_Mesh>& vectMesh, INodeTab& nodes, ModContextL
for (int i = 0; i < mcList.Count (); i++)
{
//
//
PaintPatchData *patchData = (PaintPatchData*)mcList[i]->localData;
if (!patchData)
continue;
@ -496,7 +496,7 @@ void transformDesc (tileDesc &desc, bool symmetry, uint rotate, uint mesh, uint
CTileBank::TTileType type;
bank.getTileXRef (tile, tileSet, number, type);
// Transform the transfo
// Transform the transfo
CPatchInfo::getTileSymmetryRotate (bank, desc.getLayer(0).Tile, tileSymmetry, tileRotate);
// Get the state of the layer 0
@ -579,7 +579,7 @@ void transformInvDesc (tileDesc &desc, bool symmetry, uint rotate, uint mesh, ui
transformDesc (desc, symmetry, 0, mesh, tile, vectMesh);
}
void EPM_PaintMouseProc::SetTile (int mesh, int tile, const tileDesc& desc, std::vector<EPM_Mesh>& vectMesh, CLandscape* land,
void EPM_PaintMouseProc::SetTile (int mesh, int tile, const tileDesc& desc, std::vector<EPM_Mesh>& vectMesh, CLandscape* land,
CNelPatchChanger& nelPatchChg, std::vector<CBackupValue>* backupStack, bool undo, bool updateDisplace)
{
// Undo: get old value
@ -600,7 +600,7 @@ void EPM_PaintMouseProc::SetTile (int mesh, int tile, const tileDesc& desc, std:
maxDesc.setDisplace (oldDesc.getDisplace());
}
// Transform tile
// Transform tile
tileDesc copyDesc=maxDesc;
transformInvDesc (maxDesc, vectMesh[mesh].Symmetry, 4-vectMesh[mesh].Rotate, mesh, tile, vectMesh);
transformInvDesc (copyDesc, vectMesh[mesh].Symmetry, 0, mesh, tile, vectMesh);
@ -805,7 +805,7 @@ bool EPM_PaintMouseProc::isLocked256 (PaintPatchMod *pobj, EPM_PaintTile* pTile)
return false;
}
bool EPM_PaintMouseProc::ClearATile ( EPM_PaintTile* pTile, std::vector<EPM_Mesh>& vectMesh,
bool EPM_PaintMouseProc::ClearATile ( EPM_PaintTile* pTile, std::vector<EPM_Mesh>& vectMesh,
CLandscape* land, CNelPatchChanger& nelPatchChg, bool _256, bool _force128)
{
// ** 1) Backup of the tile
@ -864,7 +864,7 @@ bool EPM_PaintMouseProc::ClearATile ( EPM_PaintTile* pTile, std::vector<EPM_Mesh
// Check locked
if (isLocked (pobj, pTile))
return false;
// Cleared descriptor
tileDesc desc;
desc.setTile (0, 0, 0, tileIndex (0,0), tileIndex (0,0), tileIndex (0,0));
@ -882,8 +882,8 @@ bool EPM_PaintMouseProc::ClearATile ( EPM_PaintTile* pTile, std::vector<EPM_Mesh
return true;
}
bool EPM_PaintMouseProc::PutATile ( EPM_PaintTile* pTile, int tileSet, int curRotation, const CTileBank& bank,
bool selectCycle, std::set<EPM_PaintTile*>& visited, std::vector<EPM_Mesh>& vectMesh,
bool EPM_PaintMouseProc::PutATile ( EPM_PaintTile* pTile, int tileSet, int curRotation, const CTileBank& bank,
bool selectCycle, std::set<EPM_PaintTile*>& visited, std::vector<EPM_Mesh>& vectMesh,
CLandscape* land, CNelPatchChanger& nelPatchChg, bool _256)
{
// If tile 256, must have delta pos aligned on 2x2
@ -912,7 +912,7 @@ bool EPM_PaintMouseProc::PutATile ( EPM_PaintTile* pTile, int tileSet, int curRo
int patch=pTile->tile/NUM_TILE_SEL;
// Check if we are in patch subobject and if this patch is selected
if ((vectMesh[pTile->Mesh].PMesh->selLevel==EP_PATCH)&&(!vectMesh[pTile->Mesh].PMesh->patchSel[patch]))
return false;
@ -986,7 +986,7 @@ bool EPM_PaintMouseProc::PutATile ( EPM_PaintTile* pTile, int tileSet, int curRo
desc.setTile (1, 1+((-curRotation-1)&3), 0, tileIndex (nTile, (curRotation-nRot)&3), tileIndex (0,0), tileIndex (0,0));
nlassert (other);
SetTile (other->Mesh, other->tile, desc, vectMesh, land, nelPatchChg, &backupStack);
// Add to visited tile set
visited.insert (other);
@ -995,7 +995,7 @@ bool EPM_PaintMouseProc::PutATile ( EPM_PaintTile* pTile, int tileSet, int curRo
desc.setTile (1, 1+((-curRotation+1)&3), 0, tileIndex (nTile, (curRotation-nRot)&3), tileIndex (0,0), tileIndex (0,0));
nlassert (other);
SetTile (other->Mesh, other->tile, desc, vectMesh, land, nelPatchChg, &backupStack);
// Add to visited tile set
visited.insert (other);
@ -1005,7 +1005,7 @@ bool EPM_PaintMouseProc::PutATile ( EPM_PaintTile* pTile, int tileSet, int curRo
nlassert (other);
nlassert (other==pTile->getBottomRight256 (0, nRot));
SetTile (other->Mesh, other->tile, desc, vectMesh, land, nelPatchChg, &backupStack);
// Add to visited tile set
visited.insert (other);
}
@ -1037,14 +1037,14 @@ bool EPM_PaintMouseProc::PutATile ( EPM_PaintTile* pTile, int tileSet, int curRo
case 0:
// Main
if (pTile->voisins[3])
if (!PropagateBorder (pTile->voisins[3], (pTile->rotate[3]+curRotation)&3, tileSet, visited, bank,
if (!PropagateBorder (pTile->voisins[3], (pTile->rotate[3]+curRotation)&3, tileSet, visited, bank,
vectMesh, land, nelPatchChg, backupStack))
{
bContinue=false;
goto zap;
}
if (pTile->voisins[0])
if (!PropagateBorder (pTile->voisins[0], (pTile->rotate[0]+curRotation)&3, tileSet, visited, bank,
if (!PropagateBorder (pTile->voisins[0], (pTile->rotate[0]+curRotation)&3, tileSet, visited, bank,
vectMesh, land, nelPatchChg, backupStack))
{
bContinue=false;
@ -1212,13 +1212,13 @@ zap:;
for (uint corner=0; corner<4; corner++)
{
finalCorner[corner].TileSet = -1;
// All the same or empty ?
for (uint layer=0; layer<4; layer++)
{
// Compatible ?
if ( ( finalCorner[corner].TileSet == -1 )
|| ( tileSetCases[layer][corner].TileSet == -1 )
if ( ( finalCorner[corner].TileSet == -1 )
|| ( tileSetCases[layer][corner].TileSet == -1 )
|| ( tileSetCases[layer][corner] == finalCorner[corner] ) )
{
// Copy the tile
@ -1265,7 +1265,7 @@ zap:;
bFind=true;
}
}
// no, ok push it back.
if (!bFind)
setIndex.push_back (finalCorner[v]);
@ -1369,7 +1369,7 @@ zap:;
finalIndex[l].Tile=tileTrans->getTile();
}
}
// Set the border desc
tileDesc desc;
GetTile (pTile->Mesh, pTile->tile, desc, vectMesh, land);
@ -1403,8 +1403,8 @@ zap:;
/*-------------------------------------------------------------------*/
void EPM_PaintMouseProc::PutADisplacetile ( EPM_PaintTile* pTile, const CTileBank& bank,
std::vector<EPM_Mesh>& vectMesh,
void EPM_PaintMouseProc::PutADisplacetile ( EPM_PaintTile* pTile, const CTileBank& bank,
std::vector<EPM_Mesh>& vectMesh,
CLandscape* land, CNelPatchChanger& nelPatchChg)
{
// Get tile description
@ -1431,8 +1431,8 @@ void EPM_PaintMouseProc::PutADisplacetile ( EPM_PaintTile* pTile, const CTileBan
/*-------------------------------------------------------------------*/
bool EPM_PaintMouseProc::GetBorderDesc (EPM_PaintTile* tile, tileSetIndex *pVoisinCorner, CTileSet::TFlagBorder pBorder[4][3],
tileDesc *pVoisinIndex, const CTileBank& bank, std::vector<EPM_Mesh>& vectMesh,
bool EPM_PaintMouseProc::GetBorderDesc (EPM_PaintTile* tile, tileSetIndex *pVoisinCorner, CTileSet::TFlagBorder pBorder[4][3],
tileDesc *pVoisinIndex, const CTileBank& bank, std::vector<EPM_Mesh>& vectMesh,
CNelPatchChanger& nelPatchChg, CLandscape *land)
{
// Tile info
@ -1445,7 +1445,7 @@ bool EPM_PaintMouseProc::GetBorderDesc (EPM_PaintTile* tile, tileSetIndex *pVois
tileIndex pIndexx[3];
for (int nL=0; nL<nLayer; nL++)
{
// GetTileIndex
// GetTileIndex
tileIndex index=backup.getLayer (nL);
pIndexx[nL]=index;
@ -1515,7 +1515,7 @@ const CTileSetTransition* EPM_PaintMouseProc::FindTransition (int nTileSet, int
}
// Look for good tile..
CTileSet::TTransition nTransition=CTileSet::getTransitionTile
CTileSet::TTransition nTransition=CTileSet::getTransitionTile
(pBorderConverted[3], pBorderConverted[1], pBorderConverted[0], pBorderConverted[2]);
//nlassert (nTransition!=CTileSet::notfound);
if (nTransition==CTileSet::notfound)
@ -1537,7 +1537,7 @@ int EPM_PaintMouseProc::getLayer (EPM_PaintTile* tile, int border, int tileSet,
tileIndex index=desc.getLayer(o);
index.Rotate-=tile->rotate[border];
index.Rotate&=3;
CTileBank::TTileType type;
int TileSet, number;
@ -1554,8 +1554,8 @@ int EPM_PaintMouseProc::getLayer (EPM_PaintTile* tile, int border, int tileSet,
/*-------------------------------------------------------------------*/
bool EPM_PaintMouseProc::PropagateBorder (EPM_PaintTile* tile, int curRotation, int curTileSet, std::set<EPM_PaintTile*>& visited,
const CTileBank& bank, std::vector<EPM_Mesh>& vectMesh,
bool EPM_PaintMouseProc::PropagateBorder (EPM_PaintTile* tile, int curRotation, int curTileSet, std::set<EPM_PaintTile*>& visited,
const CTileBank& bank, std::vector<EPM_Mesh>& vectMesh,
CLandscape* land, CNelPatchChanger& nelPatchChg, std::vector<CBackupValue>& backupStack, bool recurseNoDiff)
{
// 1) Already visited
@ -1698,7 +1698,7 @@ bool EPM_PaintMouseProc::PropagateBorder (EPM_PaintTile* tile, int curRotation,
}
extraOrdinary[v]++;
bDiff=true;
}
}
}
else
{
@ -1799,7 +1799,7 @@ bool EPM_PaintMouseProc::PropagateBorder (EPM_PaintTile* tile, int curRotation,
(desc1.isEmpty())||
(desc1.getCase()!=(1+((nCase+3)&3)))||
(desc1.getLayer(0).Tile!=backup.getLayer(0).Tile)||
(desc1.getLayer(0).Rotate!=((backup.getLayer(0).Rotate-rot)&3))
(desc1.getLayer(0).Rotate!=((backup.getLayer(0).Rotate-rot)&3))
)
bDiff=true;
}
@ -1868,7 +1868,7 @@ bool EPM_PaintMouseProc::PropagateBorder (EPM_PaintTile* tile, int curRotation,
bFind=true;
}
}
// no, ok push it back.
if (!bFind)
setIndex.push_back (nCorner[v]);
@ -1877,7 +1877,7 @@ bool EPM_PaintMouseProc::PropagateBorder (EPM_PaintTile* tile, int curRotation,
std::sort (setIndex.begin(), setIndex.end());
// Check validity
// A) Check for more than 3 materials
if (setIndex.size()>3)
return false;
@ -1981,18 +1981,18 @@ bool EPM_PaintMouseProc::PropagateBorder (EPM_PaintTile* tile, int curRotation,
// Last on the stack ?
if (*ite<nCorner[c])
{
// no,
// no,
wanted=CTileSet::_1000;
invWanted=CTileSet::_1110;
}
else
{
// yes,
// yes,
wanted=CTileSet::_1110;
invWanted=CTileSet::_1000;
}
border[c]=wanted;
// If voisin already visited, force his transition to 3/4
if (tile->voisins[c])
{
@ -2034,7 +2034,7 @@ bool EPM_PaintMouseProc::PropagateBorder (EPM_PaintTile* tile, int curRotation,
return false;
// Set the tile..
SetTile (tile->voisins[c]->Mesh, tile->voisins[c]->tile, pVoisinIndex, vectMesh,
SetTile (tile->voisins[c]->Mesh, tile->voisins[c]->tile, pVoisinIndex, vectMesh,
land, nelPatchChg, &backupStack);
}
/*if (pBorder[edge][nLayer]==CTileSet::_0001)
@ -2045,11 +2045,11 @@ bool EPM_PaintMouseProc::PropagateBorder (EPM_PaintTile* tile, int curRotation,
}
}
}
// Normal,
// Normal,
else
{
// Voisin visited or frozen ?
if (tile->voisins[c]&&((visited.find (tile->voisins[c])!=visited.end()) /*||
if (tile->voisins[c]&&((visited.find (tile->voisins[c])!=visited.end()) /*||
(vectMesh[tile->voisins[c]->Mesh].Node->IsFrozen())*/ ))
{
// Yes, visited. Copy the border
@ -2057,7 +2057,7 @@ bool EPM_PaintMouseProc::PropagateBorder (EPM_PaintTile* tile, int curRotation,
CTileSet::TFlagBorder pBorder[4][3];
tileDesc pVoisinIndex;
bool bOk=GetBorderDesc (tile->voisins[c], pVoisinCorner, pBorder, &pVoisinIndex, bank, vectMesh, nelPatchChg, land);
// Should not be empty
nlassert (bOk);
int edge=(2+c+tile->rotate[c])&3;
@ -2075,7 +2075,7 @@ bool EPM_PaintMouseProc::PropagateBorder (EPM_PaintTile* tile, int curRotation,
else
{
// No, not yet visited
// Choose transition by random
bool bComputed=false;
if ((bVisited[c]||!recurseNoDiff)&&bSameEdge[c])
@ -2086,7 +2086,7 @@ bool EPM_PaintMouseProc::PropagateBorder (EPM_PaintTile* tile, int curRotation,
CTileSet::TFlagBorder pBorder[4][3];
tileDesc pVoisinIndex;
bool bOk=GetBorderDesc (tile->voisins[c], pVoisinCorner, pBorder, &pVoisinIndex, bank, vectMesh, nelPatchChg, land);
// ok voisin is here ?
if (bOk)
{
@ -2140,18 +2140,18 @@ bool EPM_PaintMouseProc::PropagateBorder (EPM_PaintTile* tile, int curRotation,
// Last on the stack ?
if (*ite<nCorner[c])
{
// no,
// no,
wanted=CTileSet::_0001;
invWanted=CTileSet::_0111;
}
else
{
// yes,
// yes,
wanted=CTileSet::_0111;
invWanted=CTileSet::_0001;
}
border[c]=wanted;
// If voisin already visited, force his transition to 3/4
if (tile->voisins[c])//&&visited.find (tile->voisins[c])!=visited.end())
{
@ -2193,7 +2193,7 @@ bool EPM_PaintMouseProc::PropagateBorder (EPM_PaintTile* tile, int curRotation,
return false;
// Set the tile..
SetTile (tile->voisins[c]->Mesh, tile->voisins[c]->tile, pVoisinIndex, vectMesh,
SetTile (tile->voisins[c]->Mesh, tile->voisins[c]->tile, pVoisinIndex, vectMesh,
land, nelPatchChg, &backupStack);
}
/*if (pBorder[edge][nLayer]==CTileSet::_1000)
@ -2205,7 +2205,7 @@ bool EPM_PaintMouseProc::PropagateBorder (EPM_PaintTile* tile, int curRotation,
}
}
// Normal,
// Normal,
else
{
// Voisin visited ?
@ -2216,7 +2216,7 @@ bool EPM_PaintMouseProc::PropagateBorder (EPM_PaintTile* tile, int curRotation,
CTileSet::TFlagBorder pBorder[4][3];
tileDesc pVoisinIndex;
bool bOk=GetBorderDesc (tile->voisins[c], pVoisinCorner, pBorder, &pVoisinIndex, bank, vectMesh, nelPatchChg, land);
// Should not be empty
nlassert (bOk);
int edge=(2+c+tile->rotate[c])&3;
@ -2235,7 +2235,7 @@ bool EPM_PaintMouseProc::PropagateBorder (EPM_PaintTile* tile, int curRotation,
else
{
// No, not yet visited
// Choose transition by random
bool bComputed=false;
if ((bVisited[c]||!recurseNoDiff)&&bSameEdge[c])
@ -2246,7 +2246,7 @@ bool EPM_PaintMouseProc::PropagateBorder (EPM_PaintTile* tile, int curRotation,
CTileSet::TFlagBorder pBorder[4][3];
tileDesc pVoisinIndex;
bool bOk=GetBorderDesc (tile->voisins[c], pVoisinCorner, pBorder, &pVoisinIndex, bank, vectMesh, nelPatchChg, land);
// ok voisin is here ?
if (bOk)
{
@ -2293,7 +2293,7 @@ bool EPM_PaintMouseProc::PropagateBorder (EPM_PaintTile* tile, int curRotation,
}
ite++;
}
// Set the border desc
tileDesc desc;
GetTile (tile->Mesh, tile->tile, desc, vectMesh, land);
@ -2341,22 +2341,22 @@ bool EPM_PaintMouseProc::PropagateBorder (EPM_PaintTile* tile, int curRotation,
{
// Voisin not already visited and not frozen ?
if ((tile->voisins[v]) && (visited.find (tile->voisins[v])==visited.end()) /* && (vectMesh[tile->voisins[v]->Mesh].Node->IsFrozen()==0)*/)
{
{
// ok.. not visited, border with modified corner ?
if (bModified[v]||bModified[(v+1)&3]||(!bSameEdge[v]))
if (!PropagateBorder (tile->voisins[v], (tile->rotate[v]+curRotation)&3, curTileSet, visited, bank, vectMesh, land, nelPatchChg,
if (!PropagateBorder (tile->voisins[v], (tile->rotate[v]+curRotation)&3, curTileSet, visited, bank, vectMesh, land, nelPatchChg,
backupStack, false))
{
bContinue=false;
break;
}
}
}
}
if (!bContinue)
{
{
return false;
}
return true;
}
@ -2413,8 +2413,8 @@ uint8 EPM_PaintMouseProc::CalcRotPath (EPM_PaintTile* from, EPM_PaintTile* to, i
static TModePaint nModeTexture=ModeTile;
static TModeMouse modeSelect=ModePaint;
void EPM_PaintMouseProc::RecursTile (EPM_PaintTile* pTile, const CTileBank& bank, int tileSet, std::vector<EPM_Mesh>& vectMesh, CLandscape* land,
int recurs, std::set<EPM_PaintTile*>& alreadyRecursed, bool first, int rotation,
void EPM_PaintMouseProc::RecursTile (EPM_PaintTile* pTile, const CTileBank& bank, int tileSet, std::vector<EPM_Mesh>& vectMesh, CLandscape* land,
int recurs, std::set<EPM_PaintTile*>& alreadyRecursed, bool first, int rotation,
CNelPatchChanger& nelPatchChg, bool _256)
{
if (alreadyRecursed.find (pTile)==alreadyRecursed.end())
@ -2437,20 +2437,20 @@ void EPM_PaintMouseProc::RecursTile (EPM_PaintTile* pTile, const CTileBank& bank
if (_256)
{
if (pTile->get2Voisin(i))
RecursTile (pTile->get2Voisin(i), bank, tileSet, vectMesh, land, recurs-2, alreadyRecursed, false,
RecursTile (pTile->get2Voisin(i), bank, tileSet, vectMesh, land, recurs-2, alreadyRecursed, false,
(rotation+pTile->get2VoisinRotate(i))&3, nelPatchChg, true);
}
else
{
if (pTile->voisins[i])
RecursTile (pTile->voisins[i], bank, tileSet, vectMesh, land, recurs-1, alreadyRecursed, false, (rotation+pTile->rotate[i])&3,
RecursTile (pTile->voisins[i], bank, tileSet, vectMesh, land, recurs-1, alreadyRecursed, false, (rotation+pTile->rotate[i])&3,
nelPatchChg, false);
}
}
}
}
BOOL EPM_PaintMouseProc::PutDisplace (int tile, int mesh, const CTileBank& bank, std::vector<EPM_Mesh>& vectMesh, CLandscape* land,
BOOL EPM_PaintMouseProc::PutDisplace (int tile, int mesh, const CTileBank& bank, std::vector<EPM_Mesh>& vectMesh, CLandscape* land,
int recurs, std::set<EPM_PaintTile*>& alreadyRecursed, CNelPatchChanger& nelPatchChg)
{
static sint32 MeshOld=-1;
@ -2460,7 +2460,7 @@ BOOL EPM_PaintMouseProc::PutDisplace (int tile, int mesh, const CTileBank& bank,
EPM_PaintTile* pTile=&metaTile[mesh][tile];
// Ok recurse tiles
RecursTile (pTile, bank, 0, vectMesh, land, brushValue[PaintPatchMod::brushSize], alreadyRecursed, true,
RecursTile (pTile, bank, 0, vectMesh, land, brushValue[PaintPatchMod::brushSize], alreadyRecursed, true,
EPM_PaintMouseProc::Rotation, nelPatchChg, false);
MeshOld=mesh;
@ -2469,7 +2469,7 @@ BOOL EPM_PaintMouseProc::PutDisplace (int tile, int mesh, const CTileBank& bank,
return TRUE;
}
BOOL EPM_PaintMouseProc::PutTile (int tile, int mesh, bool first, const CTileBank& bank, int tileSet, std::vector<EPM_Mesh>& vectMesh, CLandscape* land,
BOOL EPM_PaintMouseProc::PutTile (int tile, int mesh, bool first, const CTileBank& bank, int tileSet, std::vector<EPM_Mesh>& vectMesh, CLandscape* land,
int recurs, std::set<EPM_PaintTile*>& alreadyRecursed, CNelPatchChanger& nelPatchChg, bool _256)
{
static sint32 MeshOld=-1;
@ -2523,7 +2523,7 @@ BOOL EPM_PaintMouseProc::PutTile (int tile, int mesh, bool first, const CTileBan
std::set<EPM_PaintTile*> alreadyRecursed;
// Ok recurse tiles
RecursTile (pTile, bank, tileSet, vectMesh, land, brushValue[PaintPatchMod::brushSize], alreadyRecursed, first,
RecursTile (pTile, bank, tileSet, vectMesh, land, brushValue[PaintPatchMod::brushSize], alreadyRecursed, first,
EPM_PaintMouseProc::Rotation, nelPatchChg, _256);
}
MeshOld=mesh;
@ -2815,7 +2815,7 @@ void mainproc(CScene& scene, CEventListenerAsync& AsyncListener, CEvent3dMouseLi
if (AsyncListener.isKeyPushed ((TKey)PainterKeys[SelectColorBrush]))
{
// Create a dialog filter
static TCHAR szFilter[] =
static TCHAR szFilter[] =
_T("Targa Files (*.tga)\0*.tga\0")
_T("All Files (*.*)\0*.*\0\0");
@ -2837,7 +2837,7 @@ void mainproc(CScene& scene, CEventListenerAsync& AsyncListener, CEvent3dMouseLi
// Open the dialog
if (GetOpenFileName(&openFile))
{
{
// Load the file
paintColor.loadBrush (tStrToUtf8(buffer));
paintColor.setBrushMode (true);
@ -2991,7 +2991,7 @@ void mainproc(CScene& scene, CEventListenerAsync& AsyncListener, CEvent3dMouseLi
t0= t1;
}
// Draw interface
drawInterface (modeSelect, nModeTexture, pData->pobj, driver, landscape, paintColor);
@ -3016,7 +3016,7 @@ public:
bool WindowActive;
CPaintColor PaintColor;
public:
MouseListener (IObjParam *ip, CCamera *camera, CViewport *viewport, PaintPatchMod *pobj, EPM_PaintMouseProc *eproc, CLandscape* land,
MouseListener (IObjParam *ip, CCamera *camera, CViewport *viewport, PaintPatchMod *pobj, EPM_PaintMouseProc *eproc, CLandscape* land,
CEventListenerAsync* async, CEvent3dMouseListener* mouseList, std::vector<EPM_Mesh>& vectMesh, TimeValue t)
: PaintColor (pobj, land, &bankCont->Undo, eproc), _FillTile (pobj, land, &bankCont->Undo, eproc), _VectMesh(vectMesh)
{
@ -3063,7 +3063,7 @@ private:
if (pressed&&((mouse->Button&rightButton)&&((mouse->Button&(ctrlButton|shiftButton|altButton))==0)))
{
pressed=false;
// Undo step
bankCont->Undo.pushUndo ();
@ -3099,13 +3099,13 @@ private:
if (nModeTexture==ModeTile)
{
// Put the tile
_Eproc->PutTile (tile1, mesh1, true, bank, _Pobj->CurrentTileSet, _VectMesh, _Land, brushValue[PaintPatchMod::brushSize],
_Eproc->PutTile (tile1, mesh1, true, bank, _Pobj->CurrentTileSet, _VectMesh, _Land, brushValue[PaintPatchMod::brushSize],
alreadyRecursed, nelPatchChg, _Pobj->tileSize!=0);
}
else // (nModeTexture==ModeDisplace)
{
{
// Put the tile
_Eproc->PutDisplace (tile1, mesh1, bank, _VectMesh, _Land, brushValue[PaintPatchMod::brushSize],
_Eproc->PutDisplace (tile1, mesh1, bank, _VectMesh, _Land, brushValue[PaintPatchMod::brushSize],
alreadyRecursed, nelPatchChg);
}
@ -3141,7 +3141,7 @@ private:
// Paint mode
if (nModeTexture==ModeTile)
// Fill this patch with the current tile
_FillTile.fillTile (mesh1, patch, _VectMesh, _Pobj->CurrentTileSet, _Pobj->TileFillRotation, _Pobj->TileGroup, _Pobj->tileSize!=0,
_FillTile.fillTile (mesh1, patch, _VectMesh, _Pobj->CurrentTileSet, _Pobj->TileFillRotation, _Pobj->TileGroup, _Pobj->tileSize!=0,
bank);
else if (nModeTexture==ModeColor)
// Fill this patch with the current color
@ -3188,7 +3188,7 @@ private:
{
pressed = false;
_Pobj->ShowCurrentState = false;
// Undo step
bankCont->Undo.pushUndo ();
}
@ -3222,13 +3222,13 @@ private:
if (nModeTexture==ModeTile)
{
// Put the tile
_Eproc->PutTile (tile2, mesh2, false, bank, _Pobj->CurrentTileSet, _VectMesh, _Land,
_Eproc->PutTile (tile2, mesh2, false, bank, _Pobj->CurrentTileSet, _VectMesh, _Land,
brushValue[PaintPatchMod::brushSize], alreadyRecursed, nelPatchChg, _Pobj->tileSize!=0);
}
else // (nModeTexture==ModeDisplace)
{
{
// Put the tile
_Eproc->PutDisplace (tile2, mesh2, bank, _VectMesh, _Land, brushValue[PaintPatchMod::brushSize],
_Eproc->PutDisplace (tile2, mesh2, bank, _VectMesh, _Land, brushValue[PaintPatchMod::brushSize],
alreadyRecursed, nelPatchChg);
}
@ -3299,7 +3299,7 @@ private:
_Pobj->CurrentTileSet=tileSetSelector.getTileSet (tile-1);
_Pobj->DisplaceTileSet=_Pobj->CurrentTileSet;
}
}
}
}
// Mode displace ?
@ -3308,7 +3308,7 @@ private:
if ((tile>=0)&&(tile<CTileSet::CountDisplace))
{
_Pobj->DisplaceTile=tile;
}
}
}
}
}
@ -3345,7 +3345,7 @@ void MouseListener::pick (int mesh, int tile, const CVector& hit, TModePaint mod
// Pickup a displace ?
else
{
// Get the displace tile index
// Get the displace tile index
_Pobj->DisplaceTile=desc.getDisplace ();
_Pobj->DisplaceTileSet=tileSet;
}
@ -3577,7 +3577,7 @@ void EPM_PaintCMode::DoPaint ()
int nV=1<<rpatch->getUIPatch (p).NbTilesV;
for (int u=0; u<=nU; u++)
for (int v=0; v<=nV; v++)
{
{
Point3 pos=patch->patches[p].interp (patch, (float)u/(float)(nU), (float)v/(float)(nV));
pos=pos*(vectMesh[i].Node->GetObjectTM (t));
if (fMaxX<pos.x)
@ -3643,7 +3643,7 @@ void EPM_PaintCMode::DoPaint ()
pTile->rotate[2]=0;
pTile->u=u;
pTile->v=v;
// Compute bouding box of the tile
fMinX=FLT_MAX;
fMinY=FLT_MAX;
@ -3665,7 +3665,7 @@ void EPM_PaintCMode::DoPaint ()
pTile->Center=(maxToNel (pos[0])+maxToNel (pos[1])+maxToNel (pos[2])+maxToNel (pos[3]))/4.f;
// Store its radius
pTile->Radius=std::max
pTile->Radius=std::max
(
std::max ( (maxToNel (pos[0])-pTile->Center).norm(), (maxToNel (pos[1])-pTile->Center).norm() ),
std::max ( (maxToNel (pos[2])-pTile->Center).norm(), (maxToNel (pos[3])-pTile->Center).norm() )
@ -3958,7 +3958,7 @@ void EPM_PaintCMode::DoPaint ()
pTile->locked = 0;
// Check that neighbor tiles are not frozen
uint neighbor;
uint neighbor;
for (neighbor=0; neighbor<4; neighbor++)
{
// Neighbor exist ?
@ -4009,7 +4009,7 @@ void EPM_PaintCMode::DoPaint ()
pData->pobj=pobj;
pData->center=center;
pData->T=t;
myThread (pData); // Do it without thread
// Invalidate all objects
@ -4082,9 +4082,9 @@ bool loadLigoConfigFile (CLigoConfig& config, Interface& it)
// Can't found the module
return false;
}
DWORD WINAPI myThread (LPVOID vData)
{
{
// Mega try
try
{
@ -4109,7 +4109,7 @@ DWORD WINAPI myThread (LPVOID vData)
}
// The scene
// Loaf cfg files
LoadKeyCfg ();
LoadVarCfg ();
@ -4155,7 +4155,7 @@ DWORD WINAPI myThread (LPVOID vData)
{
// Build skined ?
bool skined=false;
// Export the shape
IShape *pShape;
pShape=export_.buildShape (*pNode, pData->T, NULL, true);
@ -4193,7 +4193,7 @@ DWORD WINAPI myThread (LPVOID vData)
CMatrix mat;
mat.identity();
CVector I,J,K,P;
Matrix3 matInvert;
matInvert.SetRow (0, Point3(1.f, 0.f, 0.f));
matInvert.SetRow (1, Point3(0.f, 0.f, 1.f));
@ -4275,7 +4275,7 @@ DWORD WINAPI myThread (LPVOID vData)
// Go.
//========
CEvent3dMouseListener mouseListener;
MouseListener listener (pData->eproc->ip, CNELU::Camera, &viewport, pData->pobj, pData->eproc, &TheLand->Landscape,
MouseListener listener (pData->eproc->ip, CNELU::Camera, &viewport, pData->pobj, pData->eproc, &TheLand->Landscape,
&CNELU::AsyncListener, &mouseListener, pData->VectMesh, pData->T);
// Mouse listener
@ -4303,7 +4303,7 @@ DWORD WINAPI myThread (LPVOID vData)
{
// For all the tileset selected
for (sint tss=0; tss<(sint)tileSetSelector.getTileCount (); tss++)
{
{
// Get the tileset index
sint ts=tileSetSelector.getTileSet (tss);
@ -4434,7 +4434,7 @@ BOOL EPM_PaintMouseProc::HitATile(ViewExp *vpt, IPoint2 *p, int *tile, int *mesh
return FALSE;
}
BOOL EPM_PaintMouseProc::HitATile(const CViewport& viewport, const CCamera& camera, float x, float y, int *tile, int *mesh, TimeValue t,
BOOL EPM_PaintMouseProc::HitATile(const CViewport& viewport, const CCamera& camera, float x, float y, int *tile, int *mesh, TimeValue t,
std::vector<EPM_Mesh>& vectMesh, NLMISC::CVector& hit, NLMISC::CVector &topVector)
{
// Get a world ray with the mouse 2d point
@ -4581,10 +4581,10 @@ bool EPM_PaintTile::intersect (const Ray& ray, std::vector<EPM_Mesh>& vectMesh,
/*-------------------------------------------------------------------*/
int EPM_PaintMouseProc::proc(
HWND hwnd,
int msg,
int point,
int flags,
HWND hwnd,
int msg,
int point,
int flags,
IPoint2 m)
{
#if MAX_VERSION_MAJOR >= 19
@ -4611,10 +4611,10 @@ int EPM_PaintMouseProc::proc(
case MOUSE_MOVE:
break;
case MOUSE_FREEMOVE:
break;
case MOUSE_ABORT:
ip->SetStdCommandMode(CID_OBJMOVE);
break;