212 lines
6.3 KiB
Plaintext
212 lines
6.3 KiB
Plaintext
//-----------------------------------------------------------------------------
|
|
// Copyright (C) 2001 Radical Entertainment Ltd. All rights reserved.
|
|
//
|
|
// te_IntersectionContext.mel
|
|
//
|
|
// Description: Defines all the scripts required by the IntersectionContext tool
|
|
// As a convention all Terrain Editor global procedures
|
|
// and global variables are prefixed with "te_". All commands
|
|
// exposed through TE plugins are prefixed with "TE_".
|
|
//
|
|
// MCB = Menu Call Back
|
|
// BCB = Button Call Back
|
|
//
|
|
// Modification History:
|
|
// + Created -- CBrisebois
|
|
//-----------------------------------------------------------------------------
|
|
|
|
//This is the global instance of the bv context tool.
|
|
|
|
global proc te_MCB_StartIntersection()
|
|
{
|
|
//Start the Intersection context...
|
|
if ( ! `contextInfo -exists IntersectionCtx` )
|
|
{
|
|
IntersectionContext IntersectionCtx;
|
|
}
|
|
|
|
setToolTo IntersectionCtx;
|
|
}
|
|
|
|
global string $gSelectedIntersection = "";
|
|
global int $gIntersectionSelectionCallbackID = 0;
|
|
global string $gSelectedName;
|
|
global string $gTypeField;
|
|
global string $gIntersectionTypes[] = { "NoStop", "NWay", "FourWay", "NoStopN", "NWayN" };
|
|
|
|
global proc te_MCB_EditIntersection()
|
|
{
|
|
global string $gSelectedName;
|
|
global int $gIntersectionSelectionCallbackID;
|
|
global string $gIntersectionTypes[];
|
|
global string $gTypeField;
|
|
|
|
if ( `window -exists TE_InteresctionEditor` )
|
|
{
|
|
deleteUI -window TE_IntersectionEditor;
|
|
}
|
|
|
|
window -rtf true -title "TE Road / Intersection Editor" TE_IntersectionEditor;
|
|
|
|
columnLayout -adjustableColumn true;
|
|
|
|
$gSelectedName = `textField -editable false -text "" -width 170`;
|
|
|
|
$gTypeField = `optionMenu -label "Type" -width 170 -changeCommand ("te_MCB_IntersectionTypeChange( \"#1\" )")`;
|
|
|
|
int $index;
|
|
int $size = size($gIntersectionTypes);
|
|
for ( $index = 0; $index < $size; $index++ )
|
|
{
|
|
menuItem -label $gIntersectionTypes[ $index ];
|
|
}
|
|
setParent ..;
|
|
|
|
button -label "Create Road" -command ( "te_MCB_CreateRoadFromSelected()" );
|
|
button -label "Show Whole Road" -command ( "te_MCB_ShowRoadFromSelected()" );
|
|
button -label "Destroy Road" -command ( "te_MCB_DestroyRoadFromSelected()" );
|
|
button -label "Set Intersection Start" -command ( "te_MCB_AddSelectedIntersectionToRoad( 0 )" );
|
|
button -label "Set Intersection End" -command ( "te_MCB_AddSelectedIntersectionToRoad( 1 )" );
|
|
separator;
|
|
button -label "Create Intersections" -command "te_MCB_StartIntersection()";
|
|
|
|
setParent ..;
|
|
|
|
showWindow;
|
|
|
|
//Create the selection change callback.
|
|
$gIntersectionSelectionCallbackID = `scriptJob -parent "TE_IntersectionEditor" -event "SelectionChanged" "te_UpdateIntersectionEditor()"`;
|
|
|
|
}
|
|
|
|
global proc te_MCB_IntersectionTypeChange( string $value )
|
|
{
|
|
global string $gSelectedIntersection;
|
|
|
|
if ( $gSelectedIntersection != "" )
|
|
{
|
|
setAttr ( $gSelectedIntersection + ".IntersectionType" ) -type "string" $value;
|
|
}
|
|
}
|
|
|
|
global proc te_CloseIntersectionEditorWindow()
|
|
{
|
|
global int $gIntersectionSelectionCallbackID;
|
|
|
|
if ( `window -exists TE_InteresctionEditor` )
|
|
{
|
|
deleteUI -window TE_IntersectionEditor;
|
|
}
|
|
|
|
$gIntersectionSelectionCallbackID = 0;
|
|
}
|
|
|
|
global proc te_UpdateIntersectionEditor()
|
|
{
|
|
global string $gSelectedIntersection;
|
|
global string $gSelectedName;
|
|
global string $gTypeField;
|
|
global string $gIntersectionTypes[];
|
|
|
|
string $selectedObjects[] = `ls -sl -dag`;
|
|
string $selectedObjectName = $selectedObjects[0];
|
|
string $selectedNodeType;
|
|
|
|
if ( $selectedObjectName != "" )
|
|
{
|
|
//There is something selected
|
|
|
|
$selectedNodeType = `nodeType $selectedObjectName `;
|
|
|
|
if ( $selectedNodeType == "transform" )
|
|
{
|
|
//We don't want the transform, we want the child node.
|
|
string $children[] = `listRelatives -c $selectedObjectName`;
|
|
$selectedObjectName = $children[0];
|
|
}
|
|
|
|
if ( $selectedObjectName != "" )
|
|
{
|
|
$selectedNodeType = `nodeType $selectedObjectName `;
|
|
|
|
if ( $selectedNodeType == "IntersectionLocatorNode" )
|
|
{
|
|
//We're in business
|
|
textField -edit -text $selectedObjectName $gSelectedName;
|
|
|
|
string $value = `getAttr ( $selectedObjectName + ".IntersectionType" )`;
|
|
|
|
//Which index is this string?
|
|
int $size = size( $gIntersectionTypes );
|
|
int $index;
|
|
|
|
for ( $index = 0; $index < $size; $index++ )
|
|
{
|
|
if ( $gIntersectionTypes[ $index ] == $value )
|
|
{
|
|
optionMenu -edit -sl ($index + 1) $gTypeField;
|
|
break;
|
|
}
|
|
}
|
|
|
|
if ( $index == $size )
|
|
{
|
|
//This node had no proper setting. Resetting it.
|
|
warning "Node had invalid type setting. Correcting to default type";
|
|
|
|
optionMenu -edit -sl 1 $gTypeField;
|
|
setAttr ( $selectedObjectName + ".IntersectionType" ) -type "string" $gIntersectionTypes[ 0 ];
|
|
}
|
|
|
|
$gSelectedIntersection = $selectedObjectName;
|
|
return;
|
|
}
|
|
else if ( $selectedNodeType == "mesh" )
|
|
{
|
|
//This is for adding road to the selected intersection. Do not unselect the intersection.
|
|
string $whichRoad[] = `listAttr -st teWhichRoad $selectedObjectName`;
|
|
|
|
if ( size( $whichRoad ) )
|
|
{
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
textField -edit -text "" $gSelectedName;
|
|
$gSelectedIntersection = "";
|
|
|
|
}
|
|
|
|
|
|
|
|
global proc te_MCB_CreateRoadFromSelected()
|
|
{
|
|
TE_CreateRoad();
|
|
}
|
|
|
|
global proc te_MCB_ShowRoadFromSelected()
|
|
{
|
|
TE_ShowRoad();
|
|
}
|
|
|
|
global proc te_MCB_DestroyRoadFromSelected()
|
|
{
|
|
TE_DestroyRoad();
|
|
}
|
|
|
|
global proc te_MCB_AddSelectedIntersectionToRoad( int $isEnd )
|
|
{
|
|
global string $gSelectedIntersection;
|
|
|
|
TE_AddIntersectionToRoad( $gSelectedIntersection, $isEnd );
|
|
}
|
|
|
|
global proc te_Delete_IntersectionContext()
|
|
{
|
|
if ( `contextInfo -exists IntersectionCtx` )
|
|
{
|
|
deleteUI -toolContext IntersectionCtx;
|
|
}
|
|
} |