blob: 1504a52ae6445301c0c53351489b2cd710130635 (
plain) (
tree)
|
|
//Constant
global int $gMAX_LANES = 4;
global string $gSelectedName;
global string $gOriginField;
global string $gRoadField;
global string $gTopField;
global string $gBottomField;
global string $gLanesField;
global string $gShoulderField;
global int $gSelectionScriptJob;
global string $gSelectedObjectName;
global proc teOpenEditorWindow()
{
global string $gSelectedName;
global string $gOriginField;
global string $gRoadField;
global string $gTopField;
global string $gBottomField;
global string $gLanesField;
global string $gShoulderField;
global int $gMAX_LANES;
if ( `window -exists TE_TileEditor` )
{
deleteUI -window TE_TileEditor;
}
window -rtf true -title "TE Tile Editor" TE_TileEditor;
columnLayout -adjustableColumn true;
string $selectedRow = `rowLayout -numberOfColumns 3 -columnWidth 1 170`;
$gSelectedName = `textField -editable false -text "" -width 170`;
string $selectedButton = `button -label "Select Mesh" -command ("teSelectMesh()")`;
string $doneButton = `button -label "Done" -command ("teDoneEditingMesh()")`;
setParent ..;
string $originRow = `rowLayout -numberOfColumns 2`;
string $originButton = `button -label "Set Origin" -command ("teSelectOrigin()")`;
$gOriginField = `intField -value -1 -editable false`;
setParent ..;
string $roadRow = `rowLayout -numberOfColumns 2`;
string $roadButton = `button -label "Set Road Dir" -command ("teSelectRoadDir()")`;
$gRoadField = `intField -value -1 -editable false`;
setParent ..;
string $topRow = `rowLayout -numberOfColumns 2`;
string $topButton = `button -label "Set TOP" -command ("teSelectTOP()")`;
$gTopField = `intField -value -1 -editable false`;
setParent ..;
string $bottomRow = `rowLayout -numberOfColumns 2`;
string $bottomButton = `button -label "Set BOTTOM" -command ("teSelectBOTTOM()")`;
$gBottomField = `intField -value -1 -editable false`;
setParent ..;
//The following #1 is a trick that the scripting system converts into the value of the field/control...
string $laneRow = `rowLayout -numberOfColumns 2`;
string $laneLabel = `text -label "Num. Lanes" -align "center"`;
$gLanesField = `intField -value 1 -min 0 -max $gMAX_LANES -step 1 -editable true -changeCommand ("teSetNumLanes(#1)")`;
setParent ..;
$gShoulderField = `checkBox -label "Has Shoulder" -value true -changeCommand ("teSetShoulder(#1)")`;
setParent ..; //columnLayout
showWindow;
}
global proc teCloseEditorWindow()
{
global string $gSelectedName;
global string $gOriginField;
global string $gRoadField;
global string $gTopField;
global string $gBottomField;
global string $gLanesField;
global string $gShoulderField;
global int $gSelectionScriptJob;
if ( `window -exists TE_TileEditor` )
{
deleteUI -window TE_TileEditor;
}
$gSelectedName = "";
$gOriginField = "";
$gRoadField = "";
$gTopField = "";
$gBottomField = "";
$gLanesField = "";
$gShoulderField = "";
$gSelectionScriptJob = 0;
}
global proc teSelectMesh()
{
global string $gSelectedName;
global int $gSelectionScriptJob;
global string $gSelectedObjectName;
//May want to inform the TrackEditor of this selection if it is good.
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.
$selectedObjectName = $selectedObjects[1];
}
if ( $selectedObjectName != "" )
{
$selectedNodeType = `nodeType $selectedObjectName `;
if ( $selectedNodeType == "mesh" )
{
//We're in business
textField -edit -text $selectedObjectName $gSelectedName;
teSwitchToVertexSelection( 1 ); //Turn on vertex selection.
teAddSettingsToObject( $selectedObjectName );
$gSelectedObjectName = $selectedObjectName;
teUpdateEditorWindow();
}
}
}
}
global proc teUpdateEditorWindow()
{
global string $gSelectedName;
global string $gOriginField;
global string $gRoadField;
global string $gTopField;
global string $gBottomField;
global string $gSelectedObjectName;
global string $gLanesField;
global string $gShoulderField;
//Update the fields according to the selected object.
int $valsSet = false;
if ( $gSelectedObjectName != "" )
{
string $attr[] = `listAttr -st teOrigin $gSelectedObjectName`;
if ( $attr[0] != "" )
{
textField -edit -text $gSelectedObjectName $gSelectedName;
float $origin = `getAttr ($gSelectedObjectName + ".teOrigin")`;
intField -edit -value $origin $gOriginField;
float $road = `getAttr ($gSelectedObjectName + ".teRoad")`;
intField -edit -value $road $gRoadField;
float $top = `getAttr ($gSelectedObjectName + ".teTop")`;
intField -edit -value $top $gTopField;
float $bottom = `getAttr ($gSelectedObjectName + ".teBottom")`;
intField -edit -value $bottom $gBottomField;
int $lanes = `getAttr ($gSelectedObjectName + ".teLanes")`;
intField -edit -value $lanes $gLanesField;
int $hasShoulder = `getAttr ($gSelectedObjectName + ".teShoulder")`;
checkBox -edit -value $hasShoulder $gShoulderField;
$valsSet = 1;
}
}
if ( !$valsSet )
{
textField -edit -text "" $gSelectedName;
intField -edit -value -1 $gOriginField;
intField -edit -value -1 $gRoadField;
intField -edit -value -1 $gTopField;
intField -edit -value -1 $gBottomField;
intField -edit -value 0 $gLanesField;
checkBox -edit -value false $gShoulderField;
}
}
global proc teSwitchToVertexSelection( int $on )
{
if ( $on )
{
selectMode -component;
selectType -vertex true;
}
else
{
selectMode -object;
}
}
global proc teDoneEditingMesh()
{
global string $gSelectedObjectName;
$gSelectedObjectName = ""; //Clear the selection.
teSwitchToVertexSelection( 0 ); //Turn on vertex selection.
teUpdateEditorWindow();
}
global proc teAddSettingsToObject( string $objectName )
{
string $attr[] = `listAttr -st teOrigin $objectName`;
if ( $attr[0] == "" )
{
addAttr -ln teOrigin -sn teO -at long -defaultValue -1 $objectName;
addAttr -ln teRoad -sn teR -at long -defaultValue -1 $objectName;
addAttr -ln teTop -sn teT -at long -defaultValue -1 $objectName;
addAttr -ln teBottom -sn teB -at long -defaultValue -1 $objectName;
addAttr -ln teLanes -sn teL -at long -defaultValue 1 $objectName;
addAttr -ln teShoulder -sn teS -at bool -defaultValue true $objectName;
//This is for connecting to roads
addAttr -ln teWhichRoad -sn teWR -at message $objectName;
//This is a hint of the type
addAttr -ln teTypeHint -sn teTH -at long -defaultValue -1 $objectName;
}
}
global proc teSelectOrigin()
{
global string $gSelectedObjectName;
int $pos = `TE_GetSelectedVertexIndex`;
if ( $pos >= 0 )
{
setAttr ( $gSelectedObjectName + ".teOrigin" ) $pos;
}
teUpdateEditorWindow();
}
global proc teSelectRoadDir()
{
global string $gSelectedObjectName;
int $pos = `TE_GetSelectedVertexIndex`;
if ( $pos >= 0 )
{
setAttr ( $gSelectedObjectName + ".teRoad" ) $pos;
}
teUpdateEditorWindow();
}
global proc teSelectTOP()
{
global string $gSelectedObjectName;
int $pos = `TE_GetSelectedVertexIndex`;
if ( $pos >= 0 )
{
setAttr ( $gSelectedObjectName + ".teTop" ) $pos;
}
teUpdateEditorWindow();
}
global proc teSelectBOTTOM()
{
global string $gSelectedObjectName;
int $pos = `TE_GetSelectedVertexIndex`;
if ( $pos >= 0 )
{
setAttr ( $gSelectedObjectName + ".teBottom" ) $pos;
}
teUpdateEditorWindow();
}
global proc teSetNumLanes( int $numLanes )
{
global string $gSelectedObjectName;
if ( $gSelectedObjectName != "" )
{
setAttr ( $gSelectedObjectName + ".teLanes" ) $numLanes;
}
}
global proc teSetShoulder( int $hasShoulder )
{
global string $gSelectedObjectName;
if ( $gSelectedObjectName != "" )
{
setAttr ( $gSelectedObjectName + ".teShoulder" ) $hasShoulder;
}
}
|