blob: 54561ffc1a62cacdc9e00eb2167989e102a105cd (
plain) (
tree)
|
|
//-----------------------------------------------------------------------------
// 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;
}
}
|