//---------------------------------------------------------------------------
//  nnTextureAttributeEditTool.mel
//
//  Copyright (C) 2002 - 2009 SEGA Corporation CS R&D Support Department
//  All Rights Reserved.
//
//  Module  : nnTextureAttributeEditTool
//  File    : nnTextureAttributeEditTool.mel
//  Create  : 2005/05/10
//  Modify  : 
//  Version : 0.80.00
//  Note    : nnTextureAttributeEditTool
//
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
// Static Area
//---------------------------------------------------------------------------

// NN Texture Attributeバージョン情報
global string $nnTextureAttributeEditToolVersion	= "0.80.00";

// window
global int $nnMainWindowWidth				= 600;
global int $nnMainWindowHeight				= 925;
// layout
global int $nnMainLayoutWidth;
global int $nnMainLayoutHeight;
global int $nnLayoutWidth;
global int $nnCommonLayoutHeight			= 110;
global int $nnLBLayoutHeight				= 430;
// rowLayout
global int $nnItemColPos					= 470;
global int $nnUpdateChkboxColPos;
global int $nnUnitColPos1					= 422;
global int $nnUnitColPos2					= 188;
global int $nnOutputTypeColPos1				= 285;
global int $nnOutputTypeColPos2				= 145;
global int $nnOutputTypeColPos3				= 100;

global int $nnLabelWidth					= 180;
global int $nnFieldWidth					= 280;

global int $nnColumWidth2					= 80;
global int $nnColumWidth3;

// Texture
global int $nnTexItemColPos;
global int $nnTexUnitColPos1;
global int $nnTexUnitColPos2;
global int $nnTexLayoutWidth;

global int $nnTexLabelWidth;
global int $nnTexFieldWidth;
global int $nnTexUpdateChkboxColPos;

global int $nnTexColumWidth2				= 80;
global int $nnTexColumWidth3;

global int $nnPS2TexLayoutHeight			= 600;
global int $nnGCTexLayoutHeight				= 600;
global int $nnXBTexLayoutHeight				= 600;

global string $nnUnitChar					= "Update (On/Off)";

global string $nnBeforeUserData;

global string $nnCommonTexFiledTable[];			// 共通テクスチャ属性フィールドテーブル
global string $nnLBTextFiledTable[];			// Lindbergh用テクスチャ属性フィールドテーブル

//---------------------------------------------------------------------------
// Function
//---------------------------------------------------------------------------

// NN Lindberghプラグインロード情報取得
global proc int mtntLBGetPluginInfoMayaNNExporter()
{
	int $info = (`pluginInfo -query -loaded "MAYA85toNNLB"`           ||
				 `pluginInfo -query -loaded "MAYA85x64toNNLB"`        ||
				 `pluginInfo -query -loaded "MAYA2008toNNLB"`         ||
				 `pluginInfo -query -loaded "MAYA2008x64toNNLB"`      ||
				 `pluginInfo -query -loaded "MAYA2009toNNLB"`         ||
				 `pluginInfo -query -loaded "MAYA2009x64toNNLB"`      ||
				 `pluginInfo -query -loaded "MAYA2010toNNLB"`         ||
				 `pluginInfo -query -loaded "MAYA2010x64toNNLB"`      );
	return $info;
}

// NN XENONプラグインロード情報取得
global proc int mtntXENONGetPluginInfoMayaNNExporter()
{
	int $info = (`pluginInfo -query -loaded "MAYA85toNNXB360"`        ||
				 `pluginInfo -query -loaded "MAYA85x64toNNXB360"`     ||
				 `pluginInfo -query -loaded "MAYA2008toNNXB360"`      ||
				 `pluginInfo -query -loaded "MAYA2008x64toNNXB360"`   ||
				 `pluginInfo -query -loaded "MAYA2009toNNXB360"`      ||
				 `pluginInfo -query -loaded "MAYA2009x64toNNXB360"`   ||
				 `pluginInfo -query -loaded "MAYA2010toNNXB360"`      ||
				 `pluginInfo -query -loaded "MAYA2010x64toNNXB360"`   );
	return $info;
}
// NN PS3プラグインロード情報取得
global proc int mtntPS3GetPluginInfoMayaNNExporter()
{
	int $info = (`pluginInfo -query -loaded "MAYA85toNNPS3"`          ||
				 `pluginInfo -query -loaded "MAYA85x64toNNPS3"`       ||
				 `pluginInfo -query -loaded "MAYA2008toNNPS3"`        ||
				 `pluginInfo -query -loaded "MAYA2008x64toNNPS3"`     ||
				 `pluginInfo -query -loaded "MAYA2009toNNPS3"`        ||
				 `pluginInfo -query -loaded "MAYA2009x64toNNPS3"`     ||
				 `pluginInfo -query -loaded "MAYA2010toNNPS3"`        ||
				 `pluginInfo -query -loaded "MAYA2010x64toNNPS3"`     );
	return $info;
}

// NN DirectX G2.0プラグインロード情報取得
global proc int mtntDXG2GetPluginInfoMayaNNExporter()
{
	int $info = (`pluginInfo -query -loaded "MAYA85toNNDXG2"`         ||
				 `pluginInfo -query -loaded "MAYA85x64toNNDXG2"`      ||
				 `pluginInfo -query -loaded "MAYA2008toNNDXG2"`       ||
				 `pluginInfo -query -loaded "MAYA2008x64toNNDXG2"`    ||
				 `pluginInfo -query -loaded "MAYA2009toNNDXG2"`       ||
				 `pluginInfo -query -loaded "MAYA2009x64toNNDXG2"`    ||
				 `pluginInfo -query -loaded "MAYA2010toNNDXG2"`       ||
				 `pluginInfo -query -loaded "MAYA2010x64toNNDXG2"`    );
	return $info;
}

//---------------------------------------------------------------------------
//  関数名 : nnTextureAttributeEditTool
//  機　能 : NN用テクスチャ属性の一括設定。
//  書　式 : global proc nnTextureAttributeEditTool()
//  引　数 : なし
//
//  戻り値 : なし
//  説　明 : NN用テクスチャ属性の一括設定をします。
//---------------------------------------------------------------------------
global proc nnTextureAttributeEditTool()
{
	global int $nnMainWindowWidth;
	global int $nnMainWindowHeight;
	global int $nnMainLayoutWidth;
	global int $nnMainLayoutHeight;

	int $nnlb    = mtntLBGetPluginInfoMayaNNExporter();
	int $nnx360  = mtntXENONGetPluginInfoMayaNNExporter();
	int $nnps3   = mtntPS3GetPluginInfoMayaNNExporter();
	int $nndxg2  = mtntDXG2GetPluginInfoMayaNNExporter();
	if( $nnx360 || $nnps3 || $nndxg2 )	$nnlb = true;

	if( !( $nnlb ) ) {
		warning( "nnTextureAttributeEditTool : NN Exporter plugin is unloaded ---- \n" );
		return;
	}

	mtntInitStaticArea();

	mtntCalcLayoutSize();

	// GUI用テンプレート作成
	mtntCreateAllTextureAttributeDialogTemplate();

	// windowがすでにある場合は一度削除
	if ( `window -exists MTN_TextureAttributeEditToolWindow` ){
		deleteUI -window MTN_TextureAttributeEditToolWindow;
	}

	// MTN_TextureAttributeEditTool作成
	window
		-title					`mtntGetTitleName`
		-menuBar				true
		-width					$nnMainWindowWidth
		-height					$nnMainWindowHeight
		-resizeToFitChildren	true
		-sizeable				true
		MTN_TextureAttributeEditToolWindow;

	// GUI用テンプレートをセット
	setUITemplate -pushTemplate MTN_AllTextureAttributeTemplate;

	// MTN_TextureAttributeEditToolWindowにメニューバーを追加
	mtntMakeLayoutAllTextureAttributeMenu ( "MTN_TextureAttributeEditToolWindow" );

	int $testMainLayoutWidth = $nnMainLayoutWidth + 10;

	formLayout
		-width	$nnMainLayoutWidth
		MTN_TextureAttributeEditToolMainFormLayout;
		paneLayout
			-width			$testMainLayoutWidth
			-height 		$nnMainLayoutHeight
			-configuration	"horizontal2"
			-paneSize		1 100 90
			-paneSize		2 100 10
			MTN_TextureAttributeEditToolMainPainLayout;

			// NNアトリビュート設定領域
			mtntMakeLayoutTextureAttribute("MTN_TextureAttributeEditToolMainPainLayout");

			// 実行ボタン領域
			mtntMakeLayoutExecuteBotton( "MTN_TextureAttributeEditToolMainPainLayout" );

		// ]] paneLayout
		setParent ..;
	// ]] formLayout
	setParent ..;

	formLayout
		-edit
		// MTN_TextureAttributeEditToolMainPainLayout
		-attachForm		MTN_TextureAttributeEditToolMainPainLayout 	top		5
		-attachForm		MTN_TextureAttributeEditToolMainPainLayout 	left	5
		-attachNone		MTN_TextureAttributeEditToolMainPainLayout 	bottom
		-attachForm		MTN_TextureAttributeEditToolMainPainLayout 	right	5
		MTN_TextureAttributeEditToolMainFormLayout;

	// テンプレート終了
	setUITemplate -popTemplate MTN_AllTextureAttributeTemplate;

	// ウィンドウを表示
	showWindow MTN_TextureAttributeEditToolWindow;
}

//---------------------------------------------------------------------------//
//---------------------------------------------------------------------------//
//					メニュー定義関連									 	 //
//---------------------------------------------------------------------------//
//---------------------------------------------------------------------------//
//---------------------------------------------------------------------------//
//  関数名 : mtntInitStaticArea
//  機　能 : 静的領域の初期化
//  書　式 : global proc mtntInitStaticArea()
//  引　数 : なし
//  戻り値 : なし
//  説　明 : 静的領域の初期化をします。。
//---------------------------------------------------------------------------
global proc mtntInitStaticArea()
{
	global string $nnCommonTexFiledTable[];			// 共通テクスチャ属性フィールドテーブル
	global string $nnLBTexFiledTable[];				// Lindberghテクスチャ属性フィールドテーブル


	$nnCommonTexFiledTable = {
	//	項目名						初期値				フィールドタイプ
		"nnSpaceType",				"TANGENT SPACE",	"optionMenuGrp",
		"nnReverseXAxis",			"0",				"checkBoxGrp",
		"nnNormalMapAXLY",			"0",				"checkBoxGrp"
	};

	// Lindbergh用テクスチャ属性フィールドテーブル
	$nnLBTexFiledTable = {
	//	項目名						初期値						フィールドタイプ
		"nnLBUserMap",				"NONE",						"optionMenuGrp",
		"nnLBEnviromentMap",		"0",						"checkBoxGrp",
		"nnLBEnviromentMapType",	"SPHERE",					"optionMenuGrp",
		"nnLBWrapTypeU",			"AUTO",						"optionMenuGrp",
		"nnLBWrapTypeV",			"AUTO",						"optionMenuGrp",
		"nnLBBorderColorRGB",		"0.0",						"colorSliderGrp",
		"nnLBBorderColorA",			"0.0",						"floatSliderGrp",
		"nnLBFilterMode",			"0",						"checkBoxGrp",
		"nnLBMagFilterMode",		"NEAREST",					"optionMenuGrp",
		"nnLBMinFilterMode",		"LINEAR MIPMAP NEAREST",	"optionMenuGrp",
		"nnLBAnisotopicFilter",		"NONE",						"optionMenuGrp",
		"nnLBMipmapBaseLevel",		"0",						"intSliderGrp",
		"nnLBMipmapMaxLevel",		"1000",						"intSliderGrp",
		"nnLBMinLOD",				"-1000.0",					"floatSliderGrp",
		"nnLBMaxLOD",				"1000.0",					"floatSliderGrp",
		"nnLBLODBias",				"0.0",						"floatSliderGrp"
	};

}
//---------------------------------------------------------------------------//
//  関数名 : mtntCalcLayoutSize
//  機　能 : レイアウト用のサイズの計算。
//  書　式 : global proc mtntCalcLayoutSize()
//  引　数 : なし
//  戻り値 : なし
//  説　明 : レイアウト用のサイズの計算します。
//---------------------------------------------------------------------------
global proc mtntCalcLayoutSize()
{
	// window
	global int $nnMainWindowWidth;
	global int $nnMainWindowHeight;
	// layout
	global int $nnMainLayoutWidth;
	global int $nnMainLayoutHeight;
	global int $nnLayoutWidth;
	global int $nnCommonLayoutHeight;
	// rowLayout
	global int $nnItemColPos;
	global int $nnUpdateChkboxColPos;
	global int $nnUnitColPos1;
	global int $nnUnitColPos2;
	global int $nnOutputTypeColPos1;
	global int $nnOutputTypeColPos2;
	global int $nnOutputTypeColPos3;
	global int $nnColumWidth2;
	global int $nnColumWidth3;

	global int $nnLabelWidth;
	global int $nnFieldWidth;

	global int $nnTexUnitColPos1;
	global int $nnTexUnitColPos2;
	global int $nnTexLayoutWidth;

	global int $nnTexItemColPos;
	global int $nnTexLabelWidth;
	global int $nnTexFieldWidth;
	global int $nnTexUpdateChkboxColPos;

	global int $nnTexColumWidth2;
	global int $nnTexColumWidth3;

	$nnMainLayoutWidth			= $nnMainWindowWidth - 50;
	$nnMainLayoutHeight			= $nnMainWindowHeight - 200;
	$nnLayoutWidth				= $nnMainLayoutWidth - 20;

	$nnUpdateChkboxColPos		= $nnLayoutWidth - $nnItemColPos;

	$nnTexUnitColPos1			= $nnUnitColPos1 - 12;
	$nnTexUnitColPos2			= $nnUnitColPos2 - 10;
	$nnTexLayoutWidth			= $nnLayoutWidth - 10;

	$nnTexItemColPos			= $nnItemColPos - 11;
	$nnTexLabelWidth			= $nnLabelWidth - 10;
	$nnTexFieldWidth			= $nnItemColPos - $nnTexLabelWidth - 10;
	$nnTexUpdateChkboxColPos	= $nnTexLayoutWidth - $nnItemColPos - 20;

	$nnColumWidth3 = ($nnItemColPos-($nnLabelWidth+$nnColumWidth2))/2;

	$nnTexColumWidth3 = ($nnTexItemColPos-($nnTexLabelWidth+$nnTexColumWidth2))/2;

}

//---------------------------------------------------------------------------
//  関数名 : mtntMakeLayoutTextureAttribute
//  機　能 : AllTextureAttributeテクスチャ属性レイアウトの定義。
//  書　式 : global proc mtntMakeLayoutTextureAttribute( string $parent )
//  引　数 : string $parent : 親のレイアウト名
//  戻り値 : なし
//  説　明 : AllTextureAttributeテクスチャ属性レイアウトを定義します。
//---------------------------------------------------------------------------
global proc mtntMakeLayoutTextureAttribute( string $parent )
{
	global int	$nnMainLayoutWidth;
	global int	$nnMainLayoutHeight;
	int	$nnlb    = mtntLBGetPluginInfoMayaNNExporter();
	int	$nnx360  = mtntXENONGetPluginInfoMayaNNExporter();
	int $nnps3   = mtntPS3GetPluginInfoMayaNNExporter();
	int $nndxg2  = mtntDXG2GetPluginInfoMayaNNExporter();
	if( $nnx360 || $nnps3 || $nndxg2 )	$nnlb = true;

	setParent $parent;

	// frameLayout
	frameLayout
		-width			$nnMainLayoutWidth
		-height			$nnMainLayoutHeight
		-label			"NN Texture Attribute"
		MTN_AllTextureAttributeFrameLayout;
	// scrollLayout
	scrollLayout
		-width			$nnMainLayoutWidth
		-height			$nnMainLayoutHeight
		MTN_AllTextureAttributeScrollLayout;

	formLayout MTN_AllTextureAttributeFormLayout;
	setParent ..;

	mtntMakeLayoutOutputType( "MTN_AllTextureAttributeFormLayout" );
	mtntMakeLayoutCommonTexture( "MTN_AllTextureAttributeFormLayout" );
	mtntMakeLayoutLBTexture( "MTN_AllTextureAttributeFormLayout" );

	formLayout
		-edit
		// MTN_CommonTextureLayout
		-attachForm		MTN_OutputTypeLayout 			top		5
		-attachForm		MTN_OutputTypeLayout 			left	5
		-attachNone		MTN_OutputTypeLayout 			bottom
		-attachForm		MTN_OutputTypeLayout 			right	5
		// MTN_CommonTextureLayout
		-attachControl	MTN_CommonTextureLayout			top		5	MTN_OutputTypeLayout
		-attachForm		MTN_CommonTextureLayout 		left	5
		-attachNone		MTN_CommonTextureLayout 		bottom
		-attachForm		MTN_CommonTextureLayout 		right	5
		MTN_AllTextureAttributeFormLayout;

		if( $nnlb ){
			formLayout
				-edit
				// MTN_LBTextureLayout
				-attachControl	MTN_LindberghTextureLayout	top		5	MTN_CommonTextureLayout
				-attachForm		MTN_LindberghTextureLayout	left	5
				-attachNone		MTN_LindberghTextureLayout	bottom
				-attachForm		MTN_LindberghTextureLayout	right	5
				MTN_AllTextureAttributeFormLayout;
		}

}

//---------------------------------------------------------------------------
//  関数名 : mtntMakeLayoutOutputType
//  機　能 : 出力タイプレイアウトの定義。
//  書　式 : global proc mtntMakeLayoutOutputType( string $parent )
//  引　数 : string $parent : 親のレイアウト名
//  戻り値 : なし
//  説　明 : 出力タイプレイアウトを定義します。
//---------------------------------------------------------------------------
global proc mtntMakeLayoutOutputType( string $parent )
{
	global int $nnLayoutWidth;
	global int $nnOutputTypeColPos1;
	global int $nnOutputTypeColPos2;
	global int $nnOutputTypeColPos3;

	setParent $parent;

	// frameLayout [[
	frameLayout
		-width			$nnLayoutWidth
		-height			50
		-marginWidth	5
		-marginHeight	5
		-label 			""
		-borderVisible	false
		MTN_OutputTypeLayout;

		// columnLayout
		columnLayout
			MTN_OutputTypeLayout;
			// rowLayout [[
			rowLayout
				-numberOfColumns	2;
				radioButtonGrp
					-label					"Update Target"
					-columnOffset3			0 15 0
					-columnWidth3 			$nnOutputTypeColPos1 $nnOutputTypeColPos2 $nnOutputTypeColPos3
					-numberOfRadioButtons	2
					-labelArray2			"  Selected Texture  " "  All  Texture  "
					-select 				1
					MTN_OutputType;
			// ]] rowLayout
			setParent ..;
		// ]] columnLayout
		setParent ..;
	setParent ..;
}

//---------------------------------------------------------------------------
//  関数名 : mtntMakeLayoutCommonTexture
//  機　能 : AllTextureAttribute共通テクスチャ属性レイアウトの定義。
//  書　式 : global proc mtntMakeLayoutCommonTexture( string $parent )
//  引　数 : string $parent : 親のレイアウト名
//  戻り値 : なし
//  説　明 : AllTextureAttribute共通テクスチャ属性レイアウトを定義します。
//---------------------------------------------------------------------------
global proc mtntMakeLayoutCommonTexture( string $parent )
{
	global int		$nnLayoutWidth;
	global int		$nnCommonLayoutHeight;
	global int		$nnItemColPos;
	global int		$nnUpdateChkboxColPos;
	global int		$nnUnitColPos1;
	global int		$nnUnitColPos2;
	global string	$nnUnitChar;
	global int		$nnLabelWidth;
	global int		$nnFieldWidth;
	global int		$nnColumWidth2;
	global int		$nnColumWidth3;
	global string	$nnCommonMatFiledTable[];

	setParent $parent;

	// frameLayout [[
	frameLayout
		-width			$nnLayoutWidth
		-height			$nnCommonLayoutHeight
		-collapsable	true
//		-collapse		false
		-marginWidth	5
		-marginHeight	5
		-label 			"Common Texture Attributes"
		-borderVisible	true
		-borderStyle	"etchedIn"
		MTN_CommonTextureLayout;

		// columnLayout
		columnLayout
			MTN_CommonTextureColumnLayout;
//----------------------------------------------------------------------------
//			Unit
//----------------------------------------------------------------------------
			// rowLayout [[
			rowLayout
				-numberOfColumns	2
				-columnWidth2		$nnUnitColPos1 $nnUnitColPos2;
				text	-label		"";
				text	-label		$nnUnitChar;
			// ]] rowLayout
			setParent ..;
//----------------------------------------------------------------------------
//			nnSpaceType
//----------------------------------------------------------------------------
			// rowLayout [[
			rowLayout
				-numberOfColumns	2
				-columnWidth2		$nnItemColPos $nnUpdateChkboxColPos;

				optionMenuGrp
					-label 			"Space Type"
					-columnWidth2 	$nnLabelWidth $nnFieldWidth
					-changeCommand	( "mtntSpaceTypeStatusEvent" )
					MTN_SpaceType;
					menuItem -label "TANGENT SPACE"		-data 0;
					menuItem -label "OBJECT SPACE"		-data 1;
				setParent -menu ..;
				// デフォルト値をセット
				optionMenuGrp
					-edit
					-value "TANGENT SPACE"
					MTN_SpaceType;

				mtntCreateUpdateCheckBox( "nnSpaceType", false );

			// ]] rowLayout
			setParent ..;
//----------------------------------------------------------------------------
//			nnReverseXAxis
//----------------------------------------------------------------------------
			// rowLayout [[
			rowLayout
				-numberOfColumns	2
				-columnWidth2		$nnItemColPos $nnUpdateChkboxColPos;

				checkBoxGrp
					-label			"Reverse X Axis"
					-columnWidth2 	$nnLabelWidth $nnFieldWidth
					-numberOfCheckBoxes 1
					-label1 			""
					-value1 			false
					MTN_ReverseXAxis;

				mtntCreateUpdateCheckBox( "nnReverseXAxis", false );

			// ]] rowLayout
			setParent ..;
//----------------------------------------------------------------------------
//			nnNormalMapAXLY
//----------------------------------------------------------------------------
			// rowLayout [[
			rowLayout
				-numberOfColumns	2
				-columnWidth2		$nnItemColPos $nnUpdateChkboxColPos;

				checkBoxGrp
					-label			"Normal Map AXLY"
					-columnWidth2 	$nnLabelWidth $nnFieldWidth
					-numberOfCheckBoxes 1
					-label1 			""
					-value1 			false
					MTN_NormalMapAXLY;

				mtntCreateUpdateCheckBox( "nnNormalMapAXLY", false );

			// ]] rowLayout
			setParent ..;
//----------------------------------------------------------------------------
//			End
//----------------------------------------------------------------------------
		// ]] columnLayout
		setParent ..;
		// ]] frameLayout
	setParent ..;

	mtntSpaceTypeStatusEvent();
}

//---------------------------------------------------------------------------
//  関数名 : mtntSpaceTypeStatusEvent
//  機　能 : SpaceTypeの状態変化後の処理。
//  書　式 : global proc mtntSpaceTypeStatusEvent()
//  引　数 : なし
//  戻り値 : なし
//  説　明 : SpaceTypeの状態変化後の処理を定義します。
//---------------------------------------------------------------------------
global proc mtntSpaceTypeStatusEvent()
{
	string	$spaceTypeName			= "nnSpaceType";
	string	$reverseXAxisName		= "nnReverseXAxis";
	string	$normalMapAXLYName		= "nnNormalMapAXLY";

	string $value	= mtntGetFieldData( $spaceTypeName, "optionMenuGrp" );

	if( $value == "TANGENT SPACE" ) {
		mtntSetEnableDataFiled( $reverseXAxisName, "checkBoxGrp", false );
		mtntSetEnableUpdateCheckBox( $reverseXAxisName, false );

		mtntSetEnableDataFiled( $normalMapAXLYName, "checkBoxGrp", true );
		mtntSetEnableUpdateCheckBox( $normalMapAXLYName, true );
	}
	else {
		mtntSetEnableDataFiled( $reverseXAxisName, "checkBoxGrp", true );
		mtntSetEnableUpdateCheckBox( $reverseXAxisName, true );

		mtntSetEnableDataFiled( $normalMapAXLYName, "checkBoxGrp", false );
		mtntSetEnableUpdateCheckBox( $normalMapAXLYName, false );
	}

}

//---------------------------------------------------------------------------
//  関数名 : mtntMakeLayoutLBTexture
//  機　能 : AllTextureAttribute Lindbergh用テクスチャ属性レイアウトの定義。
//  書　式 : global proc mtntMakeLayoutLBTexture( string $parent )
//  引　数 : string $parent : 親のレイアウト名
//  戻り値 : なし
//  説　明 : AllTextureAttribute Lindbergh用テクスチャ属性レイアウトを定義します。
//---------------------------------------------------------------------------
global proc mtntMakeLayoutLBTexture( string $parent )
{
	global int		$nnLayoutWidth;
	global int		$nnLBLayoutHeight;
	global int		$nnItemColPos;
	global int		$nnUpdateChkboxColPos;
	global int		$nnUnitColPos1;
	global int		$nnUnitColPos2;
	global string	$nnUnitChar;
	global int		$nnLabelWidth;
	global int		$nnFieldWidth;
	global int		$nnColumWidth2;
	global int		$nnColumWidth3;
	global string	$nnCommonMatFiledTable[];

	setParent $parent;

	// frameLayout [[
	frameLayout
		-width			$nnLayoutWidth
		-height			$nnLBLayoutHeight
		-collapsable	true
//		-collapse		false
		-marginWidth	5
		-marginHeight	5
		-label 			"Lindbergh Texture Attributes"
		-borderVisible	true
		-borderStyle	"etchedIn"
		MTN_LindberghTextureLayout;

		// columnLayout
		columnLayout
			MTN_LindberghTextureColumnLayout;
//----------------------------------------------------------------------------
//			Unit
//----------------------------------------------------------------------------
			// rowLayout [[
			rowLayout
				-numberOfColumns	2
				-columnWidth2		$nnUnitColPos1 $nnUnitColPos2;
				text	-label		"";
				text	-label		$nnUnitChar;
			// ]] rowLayout
			setParent ..;
//----------------------------------------------------------------------------
//			nnLBUserMap
//----------------------------------------------------------------------------
			// rowLayout [[
			rowLayout
				-numberOfColumns	2
				-columnWidth2		$nnItemColPos $nnUpdateChkboxColPos;

				optionMenuGrp
					-label 			"Custom User Map"
					-columnWidth2 	$nnLabelWidth $nnFieldWidth
					MTN_LBUserMap;
					menuItem -label "NONE"				-data 0;
					menuItem -label "USER MAP 1"		-data 1;
					menuItem -label "USER MAP 2"		-data 2;
					menuItem -label "USER MAP 3"		-data 3;
					menuItem -label "USER MAP 4"		-data 4;
					menuItem -label "USER MAP 5"		-data 5;
					menuItem -label "USER MAP 6"		-data 6;
					menuItem -label "USER MAP 7"		-data 7;
					menuItem -label "USER MAP 8"		-data 8;
				setParent -menu ..;
				// デフォルト値をセット
				optionMenuGrp
					-edit
					-value "NONE"
					MTN_LBUserMap;

				mtntCreateUpdateCheckBox( "nnLBUserMap", false );

			// ]] rowLayout
			setParent ..;
			separator -style "in";
//----------------------------------------------------------------------------
//			nnLBEnviromentMap
//----------------------------------------------------------------------------
			// rowLayout [[
			rowLayout
				-numberOfColumns	2
				-columnWidth2		$nnItemColPos $nnUpdateChkboxColPos;

				checkBoxGrp
					-label			"Enviroment Map"
					-columnWidth2 	$nnLabelWidth $nnFieldWidth
					-numberOfCheckBoxes 1
					-label1 			""
					-value1 			false
					-changeCommand	( "mtntLBEnviromentMapStatusEvent" )
					MTN_LBEnviromentMap;

				mtntCreateUpdateCheckBox( "nnLBEnviromentMap", false );

			// ]] rowLayout
			setParent ..;
//----------------------------------------------------------------------------
//			nnLBEnviromentMapType
//----------------------------------------------------------------------------
			// rowLayout [[
			rowLayout
				-numberOfColumns	2
				-columnWidth2		$nnItemColPos $nnUpdateChkboxColPos;

				optionMenuGrp
					-label 			"Texture Map Type"
					-columnWidth2 	$nnLabelWidth $nnFieldWidth
					MTN_LBEnviromentMapType;
					menuItem -label "SPHERE"			-data 0 MTN_LBEnviromentMapType_SPHERE;
					menuItem -label "DUAL PARABOLOID"	-data 1 MTN_LBEnviromentMapType_DUAL_PARABOLOID;
				setParent -menu ..;
				// デフォルト値をセット
				optionMenuGrp
					-edit
					-value "SPHERE"
					MTN_LBEnviromentMapType;

				mtntCreateUpdateCheckBox( "nnLBEnviromentMapType", false );

			// ]] rowLayout
			setParent ..;
			separator -style "in";
//----------------------------------------------------------------------------
//			nnLBWrapTypeU
//----------------------------------------------------------------------------
			// rowLayout [[
			rowLayout
				-numberOfColumns	2
				-columnWidth2		$nnItemColPos $nnUpdateChkboxColPos;

				optionMenuGrp
					-label 			"Wrap Type U"
					-columnWidth2 	$nnLabelWidth $nnFieldWidth
					MTN_LBWrapTypeU;
					menuItem -label "CLAMP"				-data 0;
					menuItem -label "REPEAT"			-data 1;
					menuItem -label "MIRRORED REPEAT"	-data 2;
					menuItem -label "CLAMP TO BORDER"	-data 3;
					menuItem -label "CLAMP TO EDGE"		-data 4;
					menuItem -label "AUTO"				-data 5;
				setParent -menu ..;
				// デフォルト値をセット
				optionMenuGrp
					-edit
					-value "AUTO"
					MTN_LBWrapTypeU;

				mtntCreateUpdateCheckBox( "nnLBWrapTypeU", false );

			// ]] rowLayout
			setParent ..;
//----------------------------------------------------------------------------
//			nnLBWrapTypeV
//----------------------------------------------------------------------------
			// rowLayout [[
			rowLayout
				-numberOfColumns	2
				-columnWidth2		$nnItemColPos $nnUpdateChkboxColPos;

				optionMenuGrp
					-label 			"Wrap Type V"
					-columnWidth2 	$nnLabelWidth $nnFieldWidth
					MTN_LBWrapTypeV;
					menuItem -label "CLAMP"				-data 0;
					menuItem -label "REPEAT"			-data 1;
					menuItem -label "MIRRORED REPEAT"	-data 2;
					menuItem -label "CLAMP TO BORDER"	-data 3;
					menuItem -label "CLAMP TO EDGE"		-data 4;
					menuItem -label "AUTO"				-data 5;
				setParent -menu ..;
				// デフォルト値をセット
				optionMenuGrp
					-edit
					-value "AUTO"
					MTN_LBWrapTypeV;

				mtntCreateUpdateCheckBox( "nnLBWrapTypeV", false );

			// ]] rowLayout
			setParent ..;
			separator -style "in";
//----------------------------------------------------------------------------
//			nnLBBorderColorRGB
//----------------------------------------------------------------------------
			// rowLayout [[
			rowLayout
				-numberOfColumns	2
				-columnWidth2		$nnItemColPos $nnUpdateChkboxColPos;

//				attrColorSliderGrp
				colorSliderGrp
					-label			"Border Color (RGB) "
					-columnOffset3	0 0 0
					-columnAlign3	right left left
					-columnWidth3 	($nnLabelWidth+5) ($nnFieldWidth/3-5) ($nnFieldWidth/2)
					-rgbValue		0.0 0.0 0.0
					MTN_LBBorderColorRGB;

				mtntCreateUpdateCheckBox( "nnLBBorderColorRGB", false );

			// ]] rowLayout
			setParent ..;
//----------------------------------------------------------------------------
//			nnLBBorderColorA
//----------------------------------------------------------------------------
			// rowLayout [[
			rowLayout
				-numberOfColumns	2
				-columnWidth2		$nnItemColPos $nnUpdateChkboxColPos;

				floatSliderGrp
					-label			"Border Color (Alpha) "
					-columnOffset3	0 5 0
					-columnAlign3	right left left
					-columnWidth3 	$nnLabelWidth ($nnFieldWidth/3) ($nnFieldWidth/2)
					-minValue		0.0
					-maxValue		1.0
					-value			0.0
					MTN_LBBorderColorA;

				mtntCreateUpdateCheckBox( "nnLBBorderColorA", false );

			// ]] rowLayout
			setParent ..;
			separator -style "in";
//----------------------------------------------------------------------------
//			nnLBFilterMode
//----------------------------------------------------------------------------
			// rowLayout [[
			rowLayout
				-numberOfColumns	2
				-columnWidth2		$nnItemColPos $nnUpdateChkboxColPos;

				checkBoxGrp
					-label			"Setup Filter Mode"
					-columnWidth2 	$nnLabelWidth $nnFieldWidth
					-numberOfCheckBoxes 1
					-label1 			""
					-value1 			false
					-changeCommand	( "mtntLBFilterModeStatusEvent" )
					MTN_LBFilterMode;

				mtntCreateUpdateCheckBox( "nnLBFilterMode", false );

			// ]] rowLayout
			setParent ..;
//----------------------------------------------------------------------------
//			nnLBMagFilterMode
//----------------------------------------------------------------------------
			// rowLayout [[
			rowLayout
				-numberOfColumns	2
				-columnWidth2		$nnItemColPos $nnUpdateChkboxColPos;

				optionMenuGrp
					-label 			"Filter Mode Mag"
					-columnWidth2 	$nnLabelWidth $nnFieldWidth
					MTN_LBMagFilterMode;
					menuItem -label "NEAREST"		-data 0;
					menuItem -label "LINEAR"		-data 1;
				setParent -menu ..;
				// デフォルト値をセット
				optionMenuGrp
					-edit
					-value "NEAREST"
					MTN_LBMagFilterMode;

				mtntCreateUpdateCheckBox( "nnLBMagFilterMode", false );

			// ]] rowLayout
			setParent ..;
//----------------------------------------------------------------------------
//			nnLBMinFilterMode
//----------------------------------------------------------------------------
			// rowLayout [[
			rowLayout
				-numberOfColumns	2
				-columnWidth2		$nnItemColPos $nnUpdateChkboxColPos;

				optionMenuGrp
					-label 			"Filter Mode Min"
					-columnWidth2 	$nnLabelWidth $nnFieldWidth
					MTN_LBMinFilterMode;
					menuItem -label "NEAREST"					-data 0;
					menuItem -label "LINEAR"					-data 1;
					menuItem -label "NEAREST MIPMAP NEAREST"	-data 2;
					menuItem -label "NEAREST MIPMAP LINEAR"		-data 3;
					menuItem -label "LINEAR MIPMAP NEAREST"		-data 4;
					menuItem -label "LINEAR MIPMAP LINEAR"		-data 5;
				setParent -menu ..;
				// デフォルト値をセット
				optionMenuGrp
					-edit
					-value "LINEAR MIPMAP NEAREST"
					MTN_LBMinFilterMode;

				mtntCreateUpdateCheckBox( "nnLBMinFilterMode", false );

			// ]] rowLayout
			setParent ..;
//----------------------------------------------------------------------------
//			nnLBAnisotopicFilter
//----------------------------------------------------------------------------
			// rowLayout [[
			rowLayout
				-numberOfColumns	2
				-columnWidth2		$nnItemColPos $nnUpdateChkboxColPos;

				optionMenuGrp
					-label 			"Anisotopic Filter"
					-columnWidth2 	$nnLabelWidth $nnFieldWidth
					MTN_LBAnisotopicFilter;
					menuItem -label "NONE"		-data 0;
					menuItem -label "2"			-data 1;
					menuItem -label "4"			-data 2;
					menuItem -label "8"			-data 3;
				setParent -menu ..;
				// デフォルト値をセット
				optionMenuGrp
					-edit
					-value "NONE"
					MTN_LBAnisotopicFilter;

				mtntCreateUpdateCheckBox( "nnLBAnisotopicFilter", false );

			// ]] rowLayout
			setParent ..;
			separator -style "in";
//----------------------------------------------------------------------------
//			nnLBMipmapBaseLevel
//----------------------------------------------------------------------------
			// rowLayout [[
			rowLayout
				-numberOfColumns	2
				-columnWidth2		$nnItemColPos $nnUpdateChkboxColPos;

				intSliderGrp
					-label			"Mipmap Base Level"
					-columnOffset3	0 5 0
					-columnAlign3	right left left
					-columnWidth3 	$nnLabelWidth ($nnFieldWidth/3) ($nnFieldWidth/2)
					-field			true
					-minValue		0
					-maxValue		100
					-fieldMaxValue	2147483647
					-value			0
					MTN_LBMipmapBaseLevel;

				mtntCreateUpdateCheckBox( "nnLBMipmapBaseLevel", false );

			// ]] rowLayout
			setParent ..;
//----------------------------------------------------------------------------
//			nnLBMipmapMaxLevel
//----------------------------------------------------------------------------
			// rowLayout [[
			rowLayout
				-numberOfColumns	2
				-columnWidth2		$nnItemColPos $nnUpdateChkboxColPos;

				intSliderGrp
					-label			"Mipmap Base Level"
					-columnOffset3	0 5 0
					-columnAlign3	right left left
					-columnWidth3 	$nnLabelWidth ($nnFieldWidth/3) ($nnFieldWidth/2)
					-field			true
					-minValue		0
					-maxValue		2000
					-fieldMaxValue	2147483647
					-value			1000
					MTN_LBMipmapMaxLevel;

				mtntCreateUpdateCheckBox( "nnLBMipmapMaxLevel", false );

			// ]] rowLayout
			setParent ..;
//----------------------------------------------------------------------------
//			nnLBMinLOD
//----------------------------------------------------------------------------
			// rowLayout [[
			rowLayout
				-numberOfColumns	2
				-columnWidth2		$nnItemColPos $nnUpdateChkboxColPos;

				floatSliderGrp
					-label			"Min LOD"
					-columnOffset3	0 5 0
					-columnAlign3	right left left
					-columnWidth3 	$nnLabelWidth ($nnFieldWidth/3) ($nnFieldWidth/2)
					-precision 		4
					-minValue		-2000
					-maxValue		0
					-fieldMinValue	-100000
					-fieldMaxValue	100000
					-value			-1000.0
					MTN_LBMinLOD;

				mtntCreateUpdateCheckBox( "nnLBMinLOD", false );

			// ]] rowLayout
			setParent ..;
//----------------------------------------------------------------------------
//			nnLBMaxLOD
//----------------------------------------------------------------------------
			// rowLayout [[
			rowLayout
				-numberOfColumns	2
				-columnWidth2		$nnItemColPos $nnUpdateChkboxColPos;

				floatSliderGrp
					-label			"Max LOD"
					-columnOffset3	0 5 0
					-columnAlign3	right left left
					-columnWidth3 	$nnLabelWidth ($nnFieldWidth/3) ($nnFieldWidth/2)
					-precision 		4
					-minValue		0
					-maxValue		2000
					-fieldMinValue	-100000
					-fieldMaxValue	100000
					-value			1000.0
					MTN_LBMaxLOD;

				mtntCreateUpdateCheckBox( "nnLBMaxLOD", false );

			// ]] rowLayout
			setParent ..;
//----------------------------------------------------------------------------
//			nnLBLODBias
//----------------------------------------------------------------------------
			// rowLayout [[
			rowLayout
				-numberOfColumns	2
				-columnWidth2		$nnItemColPos $nnUpdateChkboxColPos;

				floatSliderGrp
					-label			"LOD Bias"
					-columnOffset3	0 5 0
					-columnAlign3	right left left
					-columnWidth3 	$nnLabelWidth ($nnFieldWidth/3) ($nnFieldWidth/2)
					-minValue		0.0
					-maxValue		1.0
					-fieldMinValue	-100000
					-fieldMaxValue	100000
					-precision 		6
					-value			0.0
					MTN_LBLODBias;

				mtntCreateUpdateCheckBox( "nnLBLODBias", false );

			// ]] rowLayout
			setParent ..;
//----------------------------------------------------------------------------
//			End
//----------------------------------------------------------------------------
		// ]] columnLayout
		setParent ..;
		// ]] frameLayout
	setParent ..;

	// GUIの表示設定を変更
	int $nnlb    = mtntLBGetPluginInfoMayaNNExporter();
	int $nnx360  = mtntXENONGetPluginInfoMayaNNExporter();
	int $nnps3   = mtntPS3GetPluginInfoMayaNNExporter();
	int $nndxg2  = mtntDXG2GetPluginInfoMayaNNExporter();
	if( $nnx360 || $nnps3 || $nndxg2 )	$nnlb = true;

	frameLayout
		-edit
		-collapse		true
		-visible		$nnlb
		MTN_LindberghTextureLayout;

	mtntLBEnviromentMapStatusEvent();
	mtntLBFilterModeStatusEvent();

}

//---------------------------------------------------------------------------
//  関数名 : mtntLBEnviromentMapStatusEvent
//  機　能 : LBEnviromentMapの状態変化後の処理。
//  書　式 : global proc mtntLBEnviromentMapStatusEvent()
//  引　数 : なし
//  戻り値 : なし
//  説　明 : LBEnviromentMapの状態変化後の処理を定義します。
//---------------------------------------------------------------------------
global proc mtntLBEnviromentMapStatusEvent()
{
	string	$enviromentMapName		= "nnLBEnviromentMap";
	string	$enviromentMapTypeName	= "nnLBEnviromentMapType";

	string $value	= (int)(mtntGetFieldData( $enviromentMapName, "checkBoxGrp" ));

	mtntSetEnableDataFiled( $enviromentMapTypeName, "optionMenuGrp", $value );
	mtntSetEnableUpdateCheckBox( $enviromentMapTypeName, $value );

}

//---------------------------------------------------------------------------
//  関数名 : mtntLBFilterModeStatusEvent
//  機　能 : LBEnviromentMapの状態変化後の処理。
//  書　式 : global proc mtntLBFilterModeStatusEvent()
//  引　数 : なし
//  戻り値 : なし
//  説　明 : LBEnviromentMapの状態変化後の処理を定義します。
//---------------------------------------------------------------------------
global proc mtntLBFilterModeStatusEvent()
{
	string	$filterModeName				= "nnLBFilterMode";
	string	$magFilterModeName			= "nnLBMagFilterMode";
	string	$minFilterModeName			= "nnLBMinFilterMode";
	string	$anisotopicFilterModeName	= "nnLBAnisotopicFilter";

	string $value	= (int)(mtntGetFieldData( $filterModeName, "checkBoxGrp" ));

	mtntSetEnableDataFiled( $magFilterModeName, "optionMenuGrp", $value );
	mtntSetEnableUpdateCheckBox( $magFilterModeName, $value );

	mtntSetEnableDataFiled( $minFilterModeName, "optionMenuGrp", $value );
	mtntSetEnableUpdateCheckBox( $minFilterModeName, $value );

	mtntSetEnableDataFiled( $anisotopicFilterModeName, "optionMenuGrp", $value );
	mtntSetEnableUpdateCheckBox( $anisotopicFilterModeName, $value );

}

//---------------------------------------------------------------------------
//  関数名 : mtntMakeLayoutExecuteBotton
//  機　能 : 実行ボタンレイアウトの定義。
//  書　式 : global proc mtntMakeLayoutExecuteBotton( string $parent )
//  引　数 : string $parent : 親のレイアウト名
//  戻り値 : なし
//  説　明 : 実行ボタンレイアウトを定義します。
//---------------------------------------------------------------------------
global proc mtntMakeLayoutExecuteBotton( string $parent )
{
	global int $nnLayoutWidth;

	setParent $parent;

	// frameLayout [[
	frameLayout
		-width			$nnLayoutWidth
		-height			60
		-label 			""
		-borderVisible	true
		-borderStyle	"etchedIn"
		MTN_ExecuteBottonFrameLayout;
		// columnLayout
		columnLayout
			MTN_CommonTextureColumnLayout;
			// rowLayout [[
			rowLayout
				-width				$nnLayoutWidth
				-numberOfColumns	6
				-columnWidth6		85 85 85 85 85 85
				-columnAttach6		both both both both both both
				-columnOffset6		10 10 10 10 10 10
				-columnAlign6		center center center center center center
				MTNB_ExecuteRowLayout;
				// Execute
				button
					-label		"Apply"
					-command	"mtntUpdateNNTexAttr"
					-width		75
					MTN_ExecuteButton;
				// All Set
				button
					-label		"Set"
					-command	"mtntAllUpdateCheckBoxSet"
					-width		75
					MTN_AllSetButton;
				// All Reset
				button
					-label		"Reset"
					-command	"mtntAllUpdateCheckBoxReset"
					-width		75
					MTN_AllResetButton;
				// All Init
				button
					-label		"Init"
					-command	"mtntAllFieldInit"
					-width		75
					MTN_AllInitButton;
				// All Init
				button
					-label		"Copy"
					-command	"mtntCopyNNTexAttr"
					-width		75
					MTN_AllCopyButton;
				// Close Window
				button
					-label		"Close"
					-command	"mtntCloseWindow"
					-width		75
					MTN_CloseWindowButton;
			// ]] rowLayout
			setParent ..;
		// ]] columnLayout
		setParent ..;
	// ]] frameLayout
	setParent ..;

}

//---------------------------------------------------------------------------
//  関数名 : mtntMakeLayoutAllTextureAttributeMenu
//  機　能 : プルダウンメニューの定義。
//  書　式 : global proc mtntMakeLayoutAllTextureAttributeMenu( string $parent )
//  引　数 : string $parent : 親のレイアウト名
//  戻り値 : なし
//  説　明 : プルダウンメニューを定義します。
//---------------------------------------------------------------------------
global proc mtntMakeLayoutAllTextureAttributeMenu( string $parent )
{
	setParent $parent;

	// Execute
	menu
		-label		"Execute"
		-tearOff	true
		-mnemonic	"E"
		MTN_Menu_Execute;
		// Execute
		menuItem
			-label			"Apply"
			-command		"mtntUpdateNNTexAttr"
			MTN_MenuItem_Execute;
		// Close
		menuItem
			-label			"Close"
			-command		"mtntCloseWindow"
			MTN_MenuItem_Close;
	setParent -menu ..;

	// Edit
	menu
		-label		"Edit"
		-tearOff	true
		-mnemonic	"E"
		MTN_Menu_Edit;
		// All Set
		menuItem
			-label			"All Update Check Box Set"
			-command		"mtntAllUpdateCheckBoxSet"
			MTN_MenuItem_AllSet;
		// All Reset
		menuItem
			-label			"All Update Check Box Reset"
			-command		"mtntAllUpdateCheckBoxReset"
			MTN_MenuItem_AllReset;
		// All Init
		menuItem
			-label			"All Input Field Initialize"
			-command		"mtntAllFieldInit"
			MTN_MenuItem_AllInit;
		// Copy
		menuItem
			-label			"Copy NN Texture Attribute"
			-command		"mtntCopyNNTexAttr"
			MTN_MenuItem_CopyNNMatAttr;
	setParent -menu ..;

	// Help
	menu
		-label		"Help"
		-helpMenu	true
		-tearOff	true
		-mnemonic	"H"
		MTN_Menu_Version;
		// Version
		menuItem
			-label			"Version"
			-command		"mtntGetVersion"
			MTN_MenuItem_Version;
	setParent -menu ..;

}

//---------------------------------------------------------------------------
//  関数名 : mtntGetVersion
//  機　能 : バージョン情報を取得します。
//  書　式 : global proc mtntGetVersion()
//  引　数 :
//
//  戻り値 :
//  説　明 :
//---------------------------------------------------------------------------
global proc mtntGetVersion()
{
	string $copyright = "Copyright (C) 2002-2004 SEGA Creative Center Graphics Section";
	$verinfo = $copyright + "\n\n";
	$verinfo += `mtntGetTitleName` + "\n\n";

	confirmDialog
		-title			`mtntGetTitleName`
		-message		$verinfo
		-messageAlign	"center"
		-button			"OK"
		-defaultButton	"OK"
		-dismissString	"OK";
}
//---------------------------------------------------------------------------
//  関数名 : mtntAllFieldInit
//  機　能 : 全てのフィールドを初期化。
//  書　式 : global proc mtntAllFieldInit()
//  引　数 : なし
//  戻り値 : なし
//  説　明 : 全てのフィールドを初期化します。
//---------------------------------------------------------------------------
global proc mtntAllFieldInit()
{
	global string	$nnCommonTexFiledTable[];
	global string	$nnLBTexFiledTable[];
	int				$i;
	int 			$nnlb    = mtntLBGetPluginInfoMayaNNExporter();
	int 			$nnx360  = mtntXENONGetPluginInfoMayaNNExporter();
	int 			$nnps3   = mtntPS3GetPluginInfoMayaNNExporter();
	int 			$nndxg2  = mtntDXG2GetPluginInfoMayaNNExporter();
	if( $nnx360 || $nnps3 || $nndxg2 )	$nnlb = true;

	// 共通テクスチャ属性のフィールド値を初期化
	for( $i = 0; $i < size($nnCommonTexFiledTable); $i += 3 ) {
		// フィールドの初期化
		mtntSetFieldData( $nnCommonTexFiledTable[$i],
						  $nnCommonTexFiledTable[$i+1],
						  $nnCommonTexFiledTable[$i+2] );
	}

	// Lindbergh固有属性のフィールド値を初期化
	if( $nnlb ) {
		// Lindberghテクスチャ属性の設定
		for( $i = 0; $i < size($nnLBTexFiledTable); $i += 3 ) {
			// フィールドの初期化
			mtntSetFieldData( $nnLBTexFiledTable[$i],
							  $nnLBTexFiledTable[$i+1],
							  $nnLBTexFiledTable[$i+2] );
		}
	}
}

//---------------------------------------------------------------------------
//  関数名 : mtntAllCheckUpdateBoxSet
//  機　能 : 全ての更新項目チェックボックスをONに設定。
//  書　式 : global proc mtntAllUpdateCheckBoxSet()
//  引　数 : なし
//  戻り値 : なし
//  説　明 : 全ての更新項目チェックボックスをONに設定します。
//---------------------------------------------------------------------------
global proc mtntAllUpdateCheckBoxSet()
{
	global string	$nnCommonTexFiledTable[];
	global string	$nnLBTexFiledTable[];
	int				$i;
	int 			$nnlb    = mtntLBGetPluginInfoMayaNNExporter();
	int 			$nnx360  = mtntXENONGetPluginInfoMayaNNExporter();
	int 			$nnps3   = mtntPS3GetPluginInfoMayaNNExporter();
	int 			$nndxg2  = mtntDXG2GetPluginInfoMayaNNExporter();
	if( $nnx360 || $nnps3 || $nndxg2 )	$nnlb = true;

	// 共通テクスチャ属性の更新項目チェックボックスをONに設定
	for( $i = 0; $i < size($nnCommonTexFiledTable); $i += 3 ) {
		if( mtntGetEnableUpdateCheckBox( $nnCommonTexFiledTable[$i] ) ) {
			mtntSetUpdateCheckBox( $nnCommonTexFiledTable[$i], true );
		}
	}

	// Lindbergh固有属性の更新項目チェックボックスをONに設定
	if( $nnlb ) {
		// Lindberghテクスチャ属性の設定
		for( $i = 0; $i < size($nnLBTexFiledTable); $i += 3 ) {
			if( mtntGetEnableUpdateCheckBox( $nnLBTexFiledTable[$i] ) ) {
				mtntSetUpdateCheckBox( $nnLBTexFiledTable[$i], true );
			}
		}
	}
}

//---------------------------------------------------------------------------
//  関数名 : mtntAllUpdateCheckBoxReset
//  機　能 : 全てのチェックボックスをOFFに設定。
//  書　式 : global proc mtntAllUpdateCheckBoxReset()
//  引　数 : なし
//  戻り値 : なし
//  説　明 : 全てのチェックボックスをOFFに設定します。
//---------------------------------------------------------------------------
global proc mtntAllUpdateCheckBoxReset()
{
	global string	$nnCommonTexFiledTable[];
	global string	$nnLBTexFiledTable[];
	int				$i;
	int 			$nnlb    = mtntLBGetPluginInfoMayaNNExporter();
	int 			$nnx360  = mtntXENONGetPluginInfoMayaNNExporter();
	int 			$nnps3   = mtntPS3GetPluginInfoMayaNNExporter();
	int 			$nndxg2  = mtntDXG2GetPluginInfoMayaNNExporter();
	if( $nnx360 || $nnps3 || $nndxg2 )	$nnlb = true;

	// 共通テクスチャ属性の更新項目チェックボックスをONに設定
	for( $i = 0; $i < size($nnCommonTexFiledTable); $i += 3 ) {
		if( mtntGetEnableUpdateCheckBox( $nnCommonTexFiledTable[$i] ) ) {
			mtntSetUpdateCheckBox( $nnCommonTexFiledTable[$i], false );
		}
	}

	// Lindbergh固有属性の更新項目チェックボックスをONに設定
	if( $nnlb ) {
		// Lindberghテクスチャ属性の設定
		for( $i = 0; $i < size($nnLBTexFiledTable); $i += 3 ) {
			if( mtntGetEnableUpdateCheckBox( $nnLBTexFiledTable[$i] ) ) {
				mtntSetUpdateCheckBox( $nnLBTexFiledTable[$i], false );
			}
		}
	}
}

//---------------------------------------------------------------------------
//  関数名 : mtntCloseWindow
//  機　能 : TextureAttributeEditTool Windowを閉じます。
//  書　式 : global proc mtntCloseWindow()
//  引　数 : なし
//
//  戻り値 : なし
//  説　明 :
//---------------------------------------------------------------------------
global proc mtntCloseWindow()
{
	if ( `window -exists MTN_TextureAttributeEditToolWindow` == true ) {
		deleteUI -window MTN_TextureAttributeEditToolWindow;
	}
}

//---------------------------------------------------------------------------
//  関数名 : mtntUpdateNNTexAttr
//  機　能 : NNテクスチャ属性の更新。
//  書　式 : global proc mtntUpdateNNTexAttr()
//  引　数 : なし
//  戻り値 : なし
//  説　明 : NNテクスチャ属性の更新をします。
//---------------------------------------------------------------------------
global proc mtntUpdateNNTexAttr()
{
	global string	$nnCommonTexFiledTable[];
	global string	$nnLBTexFiledTable[];
	string			$texList[];
	string			$strValue;
	string			$attrCmd;
	int				$itemNo,$texNo;
	int 			$nnlb    = mtntLBGetPluginInfoMayaNNExporter();
	int 			$nnx360  = mtntXENONGetPluginInfoMayaNNExporter();
	int 			$nnps3   = mtntPS3GetPluginInfoMayaNNExporter();
	int 			$nndxg2  = mtntDXG2GetPluginInfoMayaNNExporter();
	if( $nnx360 || $nnps3 || $nndxg2 )	$nnlb = true;
	int 			$outputType = `radioButtonGrp -query -select MTN_OutputType`;

	// 選択FileテクスチャのNNテクスチャ属性を更新
	if( $outputType == 1 ) {
		$texList = `ls  -selection -type "file"`;
	}
	// 全てのFileテクスチャのNNテクスチャ属性を更新
	else {
		$texList = `ls  -type "file"`;
	}

	// 更新テクスチャがない場合、return
	if( size($texList) == 0 ) {
		warning( "nnTextureAttributeEditTool : Not found convert file texture ---- \n" );
		return;
	}
	else {
		print( "\nnnTextureAttributeEditTool : Convert NN Texture Attribute  List ---- \n" );
	}

	// テクスチャ属性の設定
	for( $crtTex in $texList ) {
		print( "\t[" + $crtTex + "]\n" );
		// 共通テクスチャ属性の設定
		for( $itemNo = 0; $itemNo < size($nnCommonTexFiledTable); $itemNo += 3 ) {
			if( mtntGetUpdateCheckBox( $nnCommonTexFiledTable[$itemNo] ) &&
				mtntGetEnableUpdateCheckBox( $nnCommonTexFiledTable[$itemNo] )) {
				$strValue = mtntGetInputFieldData( $nnCommonTexFiledTable[$itemNo],
												   $nnCommonTexFiledTable[$itemNo+2] );
				print( "\t\t"+ $nnCommonTexFiledTable[$itemNo] +" = "+ $strValue + "\n");
				// NN テクスチャ属性の更新
				mtntSetNNTextureAttr( $crtTex,
									  $nnCommonTexFiledTable[$itemNo],
									  $nnCommonTexFiledTable[$itemNo+2],
									  $strValue );
			}
		}

		// Lindbergh固有属性の設定
		if( $nnlb ) {
			// PlayStation2テクスチャ属性の設定
			for( $itemNo = 0; $itemNo < size($nnLBTexFiledTable); $itemNo += 3 ) {
				if( mtntGetUpdateCheckBox( $nnLBTexFiledTable[$itemNo] ) &&
					mtntGetEnableUpdateCheckBox( $nnLBTexFiledTable[$itemNo] ) ) {
					$strValue = mtntGetInputFieldData( $nnLBTexFiledTable[$itemNo],
													   $nnLBTexFiledTable[$itemNo+2] );
					print( "\t\t"+ $nnLBTexFiledTable[$itemNo] +" = "+ $strValue + "\n");
					// NN テクスチャ属性の更新
					mtntSetNNTextureAttr( $crtTex,
										  $nnLBTexFiledTable[$itemNo],
										  $nnLBTexFiledTable[$itemNo+2],
										  $strValue );
				}
			}
		}
	}
}

//---------------------------------------------------------------------------
//  関数名 : mtntCopyNNTexAttr
//  機　能 : NNテクスチャ属性の更新。
//  書　式 : global proc mtntCopyNNTexAttr()
//  引　数 : なし
//  戻り値 : なし
//  説　明 : NNテクスチャ属性の更新をします。
//---------------------------------------------------------------------------
global proc mtntCopyNNTexAttr()
{
	global string	$nnCommonTexFiledTable[];
	global string	$nnLBTexFiledTable[];
	string			$texList[];
	string			$strValue;
	string			$attrCmd;
	int				$itemNo,$texNo;
	int 			$nnlb    = mtntLBGetPluginInfoMayaNNExporter();
	int 			$nnx360  = mtntXENONGetPluginInfoMayaNNExporter();
	int 			$nnps3   = mtntPS3GetPluginInfoMayaNNExporter();
	int 			$nndxg2  = mtntDXG2GetPluginInfoMayaNNExporter();
	if( $nnx360 || $nnps3 || $nndxg2 )	$nnlb = true;
	int 			$outputType = `radioButtonGrp -query -select MTN_OutputType`;

	// 選択テクスチャのNNテクスチャ属性を更新
	$texList = `ls  -selection -type "file"`;

	// 更新テクスチャがない場合、return
	if( size($texList) == 0 ) {
		warning( "nnTextureAttributeEditTool : Not selected file texture ---- \n" );
		return;
	}
	else {
		print( "\nnnTextureAttributeEditTool : Copy from [" + $texList[0] + "] ---- \n" );
		// 共通テクスチャ属性の設定
		for( $itemNo = 0; $itemNo < size($nnCommonTexFiledTable); $itemNo += 3 ) {
			// NN テクスチャ属性の取得
			$strValue = mtntGetNNTextureAttr( $texList[0],
											  $nnCommonTexFiledTable[$itemNo],
											  $nnCommonTexFiledTable[$itemNo+2],
											  $nnCommonTexFiledTable[$itemNo+1] );
			// フィールドデータの更新
			mtntSetInputFieldData( $nnCommonTexFiledTable[$itemNo],
								   $strValue,
								   $nnCommonTexFiledTable[$itemNo+2] );
		}
		mtntSpaceTypeStatusEvent();

		// Lindbergh固有属性の設定
		if( $nnlb ) {
			// Lindberghテクスチャ属性の設定
			for( $itemNo = 0; $itemNo < size($nnLBTexFiledTable); $itemNo += 3 ) {
				if( $nnLBTexFiledTable[$itemNo+2] == "colorSliderGrp" ) {
					// NN テクスチャ属性の取得
					$strValue = mtntGetNNTextureAttrArray( $texList[0],
														   $nnLBTexFiledTable[$itemNo],
														   $nnLBTexFiledTable[$itemNo+2],
														   $nnLBTexFiledTable[$itemNo+1] );
				}
				else {
					// NN テクスチャ属性の取得
					$strValue = mtntGetNNTextureAttr( $texList[0],
													  $nnLBTexFiledTable[$itemNo],
													  $nnLBTexFiledTable[$itemNo+2],
													  $nnLBTexFiledTable[$itemNo+1] );
				}
				// フィールドデータの更新
				mtntSetInputFieldData( $nnLBTexFiledTable[$itemNo],
									   $strValue,
									   $nnLBTexFiledTable[$itemNo+2] );
			}
			mtntLBEnviromentMapStatusEvent();
			mtntLBFilterModeStatusEvent();
		}
	}

}

//---------------------------------------------------------------------------
//  関数名 : mtntGetInputFieldData
//  機  能 : フィールドのデータ取得。
//  書  式 : global proc string mtntGetInputFieldData( string $member, string $type )
//  引  数 : string $member  : メンバー名
//         : string $type    : フィールドタイプ
//  戻り値 : フィールドデータ
//  説　明 : フィールドのデータを文字列として取得します（optionMenuGrpはメニュー番号）。
//---------------------------------------------------------------------------
global proc string mtntGetInputFieldData( string $member, string $type )
{
	string	$filedData;
	string $menuName = `substitute "nn" $member "MTN_"`;

	if( $type == "optionMenuGrp") {
		$filedData = `optionMenuGrp		-query	-select		$menuName`-1;
	}
	else if( $type == "colorSliderGrp") {
		float $rgb[3]	 = `colorSliderGrp	-query	-rgbValue	$menuName`;
		string $rgbStr[3];
		int $i;
		for( $i=0; $i<3; $i++ ) {
			$rgbStr[$i] = (string)$rgb[$i];
		}
		
		$filedData = stringArrayToString( $rgbStr , " ");
	}
	else {
		$filedData = mtntGetFieldData( $member, $type );
	}

	return( $filedData );
}

//---------------------------------------------------------------------------
//  関数名 : mtntSetInputFieldData
//  機  能 : フィールドデータの設定。
//  書  式 : global proc mtntSetInputFieldData( string $member, string $data, string $type )
//  引  数 : string $member  : メンバー名
//         : string $data    : 設定データ
//         : string $type    : フィールドタイプ
//  戻り値 : なし
//  説  明 : フィールドデータの設定をします。
//---------------------------------------------------------------------------
global proc  mtntSetInputFieldData( string $member, string $data, string $type )
{
	string $menuName = `substitute "nn" $member "MTN_"`;


	// フィールドデータの取得
	switch ( $type ) {
		case "optionMenuGrp":
			int		$value = (int)$data;
			$value	+= 1;
			optionMenuGrp	-edit	-select	$value			$menuName;
			break;
		case "checkBoxGrp":
			checkBoxGrp		-edit	-value1	((int)$data)	$menuName;
			break;
		case "intSliderGrp":
			intSliderGrp	-edit	-value	((int)$data)	$menuName;
			break;
		case "intFieldGrp":
			intFieldGrp		-edit	-value1	((int)$data)	$menuName;
			break;
		case "floatSliderGrp":
			floatSliderGrp	-edit	-value	((float)$data)	$menuName;
			break;
		case "textField":
			textField		-edit	-text	$data			$menuName;
			break;
		case "colorSliderGrp":
			string $dataArray[] = stringToStringArray( $data, " " );
			colorSliderGrp	-edit	-rgbValue	((float)$dataArray[0]) ((float)$dataArray[1]) ((float)$dataArray[2])	$menuName;
			break;
	}

}

//---------------------------------------------------------------------------
//  関数名 : mtntInputDataNumericCheck
//  機　能 : 入力データの数値チェック
//  書　式 : global proc mtntInputDataNumericCheck( string $attrName )
//  引　数 : string $attrName : 属性名
//  戻り値 : なし
//  説　明 : 入力データの数値チェックをします。
//---------------------------------------------------------------------------
global proc mtntInputDataNumericCheck( string $attrName )
{
	global string	$nnBeforeUserData;
	string			$userdata;
	int			$errFlag = false;

	// 現在のフィールドデータを取得
	$userdata	= mtntGetFieldData( $attrName, "textField" );

	int $startindex;
	string $matchdata;
	// HEX
	if( substring( $userdata, 1, 1 ) == "0" && substring( $userdata, 2, 2 ) == "x" ) {
		$startindex = 3;
		$matchdata = "0123456789abcdefABCDEF";
	}
	// DEC
	else {
		$startindex = 1;
		$matchdata = "0123456789";
	}

	int $i;
	// 入力されたUserDataをチェック
	for( $i = $startindex; $i <= (size($userdata)); $i++ ) {
		// 8桁以上の場合
		if( $i >= $startindex + 8 ) {
			warning( $attrName+ " : input data [" + $userdata + "] is over eight figures!\n" );
			$errFlag = true;
			break;
		}
		string $charactor = substring( $userdata, $i, $i );
		// 不正な文字が入力された場合
		if( match( $charactor, $matchdata ) == "" ) {
			warning( $attrName+ " : input data [" + $userdata + "] is invalid valuable!\n" );
			$errFlag = true;
			break;
		}
	}

	// 入力エラー時、データを元に戻す。
	if( $errFlag ) {
		mtntSetFieldData( $attrName, $nnBeforeUserData, "textField" );
	}

}

//---------------------------------------------------------------------------
//  関数名 : mtntTempInputDataSave
//  機　能 : 入力データの一時保存。
//  書　式 : global proc mtntTempInputDataSave( string $attrName )
//  引　数 : string $attrName : 属性名
//  戻り値 : なし
//  説　明 : 入力データの一時保存をします。
//---------------------------------------------------------------------------
global proc mtntTempInputDataSave( string $attrName )
{
	global string $nnBeforeUserData;

	$nnBeforeUserData	= mtntGetFieldData( $attrName, "textField" );
}

//---------------------------------------------------------------------------
//  関数名 : mtntCreateAllTextureAttributeDialogTemplate
//  機　能 : nnTextureAttributeEditTool用DialogTemplateを作成します。
//  書　式 : global proc mtntCreateAllTextureAttributeDialogTemplate()
//  引　数 : なし
//
//  戻り値 : なし
//  説　明 : nnTextureAttributeEditToolで使用するレイアウトのテンプレートを定義します。
//---------------------------------------------------------------------------
global proc mtntCreateAllTextureAttributeDialogTemplate()
{
	// MTN_AllTextureAttributeTemplateがすでに存在している場合は一度削除する。
	if ( `uiTemplate -exists MTN_AllTextureAttributeTemplate` ) {
		deleteUI -uiTemplate MTN_AllTextureAttributeTemplate;
	}
	// MTN_AllTextureAttributeTemplateを作成
	uiTemplate MTN_AllTextureAttributeTemplate;

	// columnLayout
	columnLayout
		-defineTemplate		MTN_AllTextureAttributeTemplate
		-adjustableColumn	true
		-manage 			true
		;

	// frameLayout
	frameLayout
		-defineTemplate 	MTN_AllTextureAttributeTemplate

		-visible			true
		-collapsable		false
		-collapse			false
		-borderVisible		true
		-borderStyle		"etchedOut"
		-label				""
		-labelVisible		true
		-labelAlign 		"bottom"
		-labelIndent		5
		-marginWidth		5
		-marginHeight		5
		;

	// rowLayout
	rowLayout
		-defineTemplate		MTN_AllTextureAttributeTemplate

		-columnAttach1		both
		-columnOffset1		0
		-columnAlign1		left

		-columnAttach2		left left
		-columnOffset2		0 0
		-columnAlign2		left left

		-columnAttach3		both both both
		-columnOffset3		0 0 0
		-columnAlign3		left left left

		-columnAttach4		both both both both
		-columnOffset4		0 0 0 0
		-columnAlign4		center center center center
		;


	// scrollLayout
	scrollLayout
		-defineTemplate 	MTN_AllTextureAttributeTemplate
		-visible			true
		-childResizable		true
		;

	// textFieldButtonGrp
	textFieldButtonGrp
		-defineTemplate		MTN_AllTextureAttributeTemplate

		-rowAttach			1 bottom 10
		-label				""
		-text				""
		-buttonLabel		""
		-columnAttach		1 both 0
		-columnAttach		2 both 0
		-columnAttach		3 both 10
		-columnAlign		1 right
		-columnAlign		2 left
		-columnAlign		3 center
		;

	// optionMenuGrp
	optionMenuGrp
		-defineTemplate		MTN_AllTextureAttributeTemplate
		-label			""

		-columnAttach2		both both
		-columnOffset2		0 5
		-columnAlign2		right left
		-rowAttach			1 top 5
		;

	// checkBoxGrp
	checkBoxGrp
		-defineTemplate		MTN_AllTextureAttributeTemplate
		-label 				""

		-columnAttach2		both both
		-columnOffset2		0 5
		-columnAlign2		right left

		-columnAttach4		both both both both
		-columnOffset4		0 0 0 0
		-columnAlign4		right left left left

		-columnAttach5		both both both both both
		-columnOffset5		0 0 0 0 0
		-columnAlign5		right left left left left
		;

	// radioButtonGrp
	radioButtonGrp
		-defineTemplate		MTN_AllTextureAttributeTemplate
		-label				""

		-columnAttach3		both both both
		-columnOffset3		0 5 0
		-columnAlign3		right left left

		-columnAttach4		both both both both
		-columnOffset4		0 0 0 0
		-columnAlign4		right left left left
		;

	// button
	button
		-defineTemplate		MTN_AllTextureAttributeTemplate

		-label				""
		-align				center
		;

	// floatField
	floatField
		-defineTemplate		MTN_AllTextureAttributeTemplate
		-precision			6
		;

	// floatSliderGrp
	floatSliderGrp
		-defineTemplate 	MTN_AllTextureAttributeTemplate
		-label				""
		-field				true
		-precision			6
		-columnAttach2		both both
		-columnOffset2		0 5
		-columnAlign2		right left
		-columnAttach3		both both both
		-columnOffset3		0 5 0
		-columnAlign3		right left left
		;

	// intFieldGrp
	intFieldGrp
		-defineTemplate		MTN_AllTextureAttributeTemplate
		-columnAttach2		both both
		-columnOffset2		0 5
		-columnAlign2		right left
		;

	// intSliderGrp
	intSliderGrp
		-defineTemplate 	MTN_AllTextureAttributeTemplate
		-label				""
		-field				true
		-columnOffset2		0 5
		-columnAttach2		both both
		-columnAttach3		both both both
		-columnOffset3		0 5 0
		-columnAlign3		right left left
		;
}

//---------------------------------------------------------------------------
//  関数名 : mtntSetNNTextureAttr
//  機  能 : NNテクスチャ属性の設定。
//  書  式 : global proc mtntSetNNTextureAttr( string $texName, string $member, string $type, string $data )
//  引  数 : string $texName : テクスチャ名
//         : string $member  : メンバー名
//         : string $type    : フィールドタイプ
//         : string $data    : 値
//  戻り値 : なし
//  説  明 : NNテクスチャ属性の設定をします。
//---------------------------------------------------------------------------
global proc  mtntSetNNTextureAttr( string $texName, string $member, string $type, string $data )
{
	string		$attrName = $texName + "." + $member;

	// NN属性が存在しない場合は新規に作成
	if( !`attributeQuery -exists -node $texName $member` ) {
		mtntNewNNTextureAttr( $texName, $member, $data );
	}
	// NNテクスチャ属性設定コマンドの実行
	switch ( $type ) {
		case "textField":
			setAttr -type "string" $attrName $data;
			break;
		case "floatSliderGrp":
			setAttr $attrName ((float)$data);
			break;
		case "colorSliderGrp":
			string $dataArray[] = stringToStringArray( $data, " " );
			setAttr $attrName -type double3 ((float)$dataArray[0]) ((float)$dataArray[1]) ((float)$dataArray[2]);
			break;
		default:
			setAttr $attrName ((int)$data);
			break;
	}

}

//---------------------------------------------------------------------------
//  関数名 : mtntGetNNTextureAttr
//  機  能 : NNテクスチャ属性の設定。
//  書  式 : global proc string mtntGetNNTextureAttr( string $texName, string $member, string $type, string $data )
//  引  数 : string $texName : テクスチャ名
//         : string $member  : メンバー名
//         : string $type    : フィールドタイプ
//         : string $data    : 値
//  戻り値 : なし
//  説  明 : NNテクスチャ属性の設定をします。
//---------------------------------------------------------------------------
global proc string mtntGetNNTextureAttr( string $texName, string $member, string $type, string $data )
{
	string		$attrName = $texName + "." + $member;

	// NN属性が存在しない場合は新規に作成
	if( !`attributeQuery -exists -node $texName $member` ) {
		mtntNewNNTextureAttr( $texName, $member, $data );
	}

	string	$value = `getAttr $attrName`;

	return($value);
}

//---------------------------------------------------------------------------
//  関数名 : mtntGetNNTextureAttrArray
//  機  能 : NNテクスチャ属性の設定。
//  書  式 : global proc string mtntGetNNTextureAttrArray( string $texName, string $member, string $type, string $data )
//  引  数 : string $texName : テクスチャ名
//         : string $member  : メンバー名
//         : string $type    : フィールドタイプ
//         : string $data    : 値
//  戻り値 : なし
//  説  明 : NNテクスチャ属性の設定をします。
//---------------------------------------------------------------------------
global proc string mtntGetNNTextureAttrArray( string $texName, string $member, string $type, string $data )
{
	string		$attrName = $texName + "." + $member;

	// NN属性が存在しない場合は新規に作成
	if( !`attributeQuery -exists -node $texName $member` ) {
		mtntNewNNTextureAttr( $texName, $member, $data );
	}

	float	$value[] = `getAttr $attrName`;
	string	$valueStrArray[];
	int $i;
	for( $i=0; $i<3; $i++ ) {
		$valueStrArray[$i] = (string)$value[$i];
	}

	string $valueStr = stringArrayToString( $valueStrArray , " ");

	return($valueStr);
}

//---------------------------------------------------------------------------
//  関数名 : mtntNewNNTextureAttr
//  機  能 : NNテクスチャ属性の新規作成。
//  書  式 : global proc mtntNewNNTextureAttr( string $texName, string $member, string $data )
//  引  数 : string $texName : テクスチャ名
//         : string $member  : メンバー名
//         : string $data    : 値
//  戻り値 : なし
//  説  明 : NNテクスチャ属性の新規作成をします。
//---------------------------------------------------------------------------
global proc  mtntNewNNTextureAttr( string $texName, string $member, string $data )
{
	string		$attrName = $texName + "." + $member;

	switch ( $member ) {
// 共通テクスチャ属性
	case "nnSpaceType":
		addAttr -attributeType short -longName $member -minValue 0 -maxValue 1 $texName;
		break;
	case "nnReverseXAxis":
		addAttr -attributeType bool -longName $member $texName;
		break;
	case "nnNormalMapAXLY":
		addAttr -attributeType bool -longName $member $texName;
		break;

// Lindbergh テクスチャ属性
	case "nnLBUserMap":
		addAttr -attributeType short -longName $member -minValue 0 -maxValue 8 $texName;
		break;
	case "nnLBEnviromentMap":
		addAttr -attributeType bool -longName $member $texName;
		break;
	case "nnLBEnviromentMapType":
		addAttr -attributeType short -longName $member -minValue 0 -maxValue 1 $texName;
		break;
	case "nnLBWrapTypeU":
	case "nnLBWrapTypeV":
		addAttr -attributeType short -longName $member -minValue 0 -maxValue 5 $texName;
		break;
	case "nnLBBorderColorRGB":
		addAttr -attributeType "double3" -longName $member $texName;
		addAttr -attributeType "double" -parent $member -longName ($member+"R") $texName;
		addAttr -attributeType "double" -parent $member -longName ($member+"G") $texName;
		addAttr -attributeType "double" -parent $member -longName ($member+"B") $texName;
		break;
	case "nnLBBorderColorA":
		addAttr -attributeType "float" -longName $member -minValue 0 -maxValue 1 $texName;
		break;
	case "nnLBFilterMode":
		addAttr -attributeType bool -longName $member $texName;
		break;
	case "nnLBMagFilterMode":
		addAttr -attributeType short -longName $member -minValue 0 -maxValue 1 $texName;
		break;
	case "nnLBMinFilterMode":
		addAttr -attributeType short -longName $member -minValue 0 -maxValue 5 $texName;
		break;
	case "nnLBAnisotopicFilter":
		addAttr -attributeType short -longName $member -minValue 0 -maxValue 3 $texName;
		break;
	case "nnLBMipmapBaseLevel":
		addAttr -attributeType long -longName $member -minValue 0 $texName;
		break;
	case "nnLBMipmapMaxLevel":
		addAttr -attributeType long -longName $member -minValue 0 $texName;
		break;
	case "nnLBMinLOD":
	case "nnLBMaxLOD":
	case "nnLBLODBias":
		addAttr -attributeType "float" -longName $member $texName;
		break;
	}
}

//---------------------------------------------------------------------------
//  関数名 : mtntGetFieldData
//  機  能 : フィールドのデータ取得。
//  書  式 : global proc string mtntGetFieldData( string $member, string $type )
//  引  数 : string $member  : メンバー名
//         : string $type    : フィールドタイプ
//  戻り値 : フィールドデータ
//  説  明 : フィールドのデータを文字列として取得します。
//---------------------------------------------------------------------------
global proc  string mtntGetFieldData( string $member, string $type )
{
	string	$filedData;

	string $menuName = `substitute "nn" $member "MTN_"`;

	// フィールドデータの取得
	switch ( $type ) {
		case "optionMenuGrp":
			$filedData	= `optionMenuGrp			-query	-value	$menuName`;
			break;
		case "checkBoxGrp":
			$filedData	= ((string)`checkBoxGrp		-query	-value1	$menuName`);
			break;
		case "intSliderGrp":
			$filedData	= ((string)`intSliderGrp	-query	-value	$menuName`);
			break;
		case "intFieldGrp":
			$filedData	= ((string)`intFieldGrp		-query	-value1	$menuName`);
			break;
		case "floatSliderGrp":
			$filedData	= ((string)`floatSliderGrp	-query	-value	$menuName`);
			break;
		case "textField":
			$filedData	= `textField				-query	-text		$menuName`;
			break;
	}

	return( $filedData );
}

//---------------------------------------------------------------------------
//  関数名 : mtntSetFieldData
//  機  能 : フィールドデータの設定。
//  書  式 : global proc mtntSetFieldData( string $member, string $data, string $type )
//  引  数 : string $member  : メンバー名
//         : string $data    : 設定データ
//         : string $type    : フィールドタイプ
//  戻り値 : なし
//  説  明 : フィールドデータの設定をします。
//---------------------------------------------------------------------------
global proc  mtntSetFieldData( string $member, string $data, string $type )
{
	string $menuName = `substitute "nn" $member "MTN_"`;

	// フィールドデータの取得
	switch ( $type ) {
		case "optionMenuGrp":
			optionMenuGrp	-edit	-value	$data			$menuName;
			break;
		case "checkBoxGrp":
			checkBoxGrp		-edit	-value1	((int)$data)	$menuName;
			break;
		case "intSliderGrp":
			intSliderGrp	-edit	-value	((int)$data)	$menuName;
			break;
		case "intFieldGrp":
			intFieldGrp	-edit	-value1		((int)$data)	$menuName;
			break;
		case "floatSliderGrp":
			floatSliderGrp	-edit	-value	((float)$data)	$menuName;
			break;
		case "textField":
			textField		-edit	-text	$data			$menuName;
			break;
		case "colorSliderGrp":
			colorSliderGrp	-edit	-rgbValue	((float)$data)	((float)$data)	((float)$data)	$menuName;
			break;
	}

}

//---------------------------------------------------------------------------
//  関数名 : mtntSetEnableDataFiled
//  機  能 : データフィールドのEnable/Disable設定。
//  書  式 : global proc mtntSetEnableDataFiled( string $member, string $type, int $enable )
//  引  数 : string $member  : メンバー名
//           string $type    : フィールドタイプ
//           int $value      : Enable/Disable
//  戻り値 : タイトル文字列
//  説  明 : データフィールドのEnable/Disable設定を設定します。
//---------------------------------------------------------------------------
global proc mtntSetEnableDataFiled( string $member, string $type, int $enable )
{
	string $menuName = `substitute "nn" $member "MTN_"`;

	switch( $type ) {
	case "checkBox":
		checkBox		-edit	-enable	$enable	$menuName;
		break;
	case "checkBoxGrp":
		checkBoxGrp		-edit	-enable	$enable	$menuName;
		break;
	case "intSliderGrp":
		intSliderGrp	-edit	-enable	$enable	$menuName;
		break;
	case "intFieldGrp":
		intSliderGrp	-edit	-enable	$enable	$menuName;
		break;
	case "floatSliderGrp":
		floatSliderGrp	-edit	-enable	$enable	$menuName;
		break;
	case "optionMenuGrp":
		optionMenuGrp	-edit	-enable	$enable	$menuName;
		break;
	case "textField":
		textField		-edit	-enable	$enable	$menuName;
		break;
	}
}

//---------------------------------------------------------------------------
//  関数名 : mtntGetEnableUpdateCheckBox
//  機  能 : 更新項目チェックボックスのEnable/Disable状況の取得。
//  書  式 : global proc int mtntGetEnableUpdateCheckBox( string $member )
//  引  数 : string $member  : メンバー名
//  戻り値 : Enable/Disable
//  説  明 : 更新項目チェックボックスのEnable/Disable状況の取得を設定します。
//---------------------------------------------------------------------------
global proc int mtntGetEnableUpdateCheckBox( string $member )
{
	string	$menuName = `substitute "nn" $member "MTN_"`;
	$menuName	+= "Change";

	int		$enable	= `checkBox	-query	-enable	$menuName`;

	return( $enable );
}

//---------------------------------------------------------------------------
//  関数名 : mtntSetEnableUpdateCheckBox
//  機  能 : 更新項目チェックボックスのEnable/Disable設定。
//  書  式 : global proc mtntSetEnableUpdateCheckBox( string $member, int $enable )
//  引  数 : string $member  : メンバー名
//           int $value      : Enable/Disable
//  戻り値 : タイトル文字列
//  説  明 : 更新項目チェックボックスのEnable/Disable設定を設定します。
//---------------------------------------------------------------------------
global proc mtntSetEnableUpdateCheckBox( string $member, int $enable )
{
	string $menuName = `substitute "nn" $member "MTN_"`;
	$menuName	+= "Change";

	checkBox	-edit	-enable	$enable	$menuName;
}

//---------------------------------------------------------------------------
//  関数名 : mtntGetUpdateCheckBox
//  機  能 : 更新項目チェックボックスの作成。
//  書  式 : global proc int mtntGetUpdateCheckBox( string $member )
//  引  数 : string $member  : メンバー名
//  戻り値 : 設定値
//  説  明 : 更新項目チェックボックスを作成します。
//---------------------------------------------------------------------------
global proc int mtntGetUpdateCheckBox( string $member )
{
	string $menuName = `substitute "nn" $member "MTN_"`;
	$menuName	+= "Change";

	int		$value	= `checkBox	-query	-value	$menuName`;

	return( $value );
}

//---------------------------------------------------------------------------
//  関数名 : mtntSetUpdateCheckBox
//  機  能 : 更新項目チェックボックスの設定。
//  書  式 : global proc mtntSetUpdateCheckBox( string $member, int $value )
//  引  数 : string $member  : メンバー名
//           int $value      : 設定値
//  戻り値 : タイトル文字列
//  説  明 : 更新項目チェックボックスを設定します。
//---------------------------------------------------------------------------
global proc mtntSetUpdateCheckBox( string $member, int $value )
{
	string $menuName = `substitute "nn" $member "MTN_"`;
	$menuName	+= "Change";

	checkBox		-edit	-value	$value	$menuName;
}

//---------------------------------------------------------------------------
//  関数名 : mtntSetUpdateCheckBox
//  機  能 : 更新項目チェックボックスの設定。
//  書  式 : global proc mtntSetUpdateCheckBox( string $member, int $value )
//  引  数 : string $member  : メンバー名
//           int $value      : 設定値
//  戻り値 : タイトル文字列
//  説  明 : 更新項目チェックボックスを設定します。
//---------------------------------------------------------------------------
global proc mtntCreateUpdateCheckBox( string $member, int $value )
{
	string $menuName = `substitute "nn" $member "MTN_"`;
	$menuName	+= "Change";

	checkBox	-label	""	-value	$value	$menuName;
}

//---------------------------------------------------------------------------
//  関数名 : mtntGetTitleName
//  機  能 : タイトル名を取得します。
//  書  式 : global proc mtntGetTitleName( string $srcName, int $attrNo )
//  引  数 : string $srcName : 元の属性名
//           int $attrNo     : 属性番号
//  戻り値 : タイトル文字列
//  説  明 : タイトル名を取得します。
//---------------------------------------------------------------------------
global proc string mtntGetAttrName( string $srcName, int $attrNo )
{
	string $attrName;

	$attrName = $srcName;
	$attrName += $attrNo;

	return $attrName;
}

//---------------------------------------------------------------------------//
//---------------------------------------------------------------------------//
//					テクスチャ設定関連									 	 //
//---------------------------------------------------------------------------//
//---------------------------------------------------------------------------
//  関数名 : mtntGetTitleName
//  機  能 : タイトル名を取得します。
//  書  式 : global proc mtntGetTitleName()
//  引  数 : なし
//  戻り値 : タイトル文字列
//  説  明 : タイトル名を取得します。
//---------------------------------------------------------------------------
global proc string mtntGetTitleName()
{
	global string $nnTextureAttributeEditToolVersion;

	string $title = "NN Texture Attribute Edit Tool Ver. " + $nnTextureAttributeEditToolVersion;

	return $title;
}


