//--------------------------------------------------------------R-------------
//  nnPointLightAttribute.mel
//
//  Copyright (C) 2002 - 2009 SEGA Corporation CS R&D Support Department
//  All Rights Reserved.
//
//  Module  : nnPointLightAttribute
//  File    : nnPointLightAttribute.mel
//  Create  : 2002/03/06
//  Modify  : 2003/03/07
//          : 2003/10/21 : XBOX対応
//          : 2003/12/27 : Maya6.0対応
//          : 2005/03/16 : 多機種対応
//          : 2008/07/28 : DirectX G2.0版対応
//          : 2009/11/05 : OpenGL ES 1.1版対応
//  Version : 1.20.00
//  Note    : nnPointLightAttribute
//
//---------------------------------------------------------------------------

global string $nnPointLightAttributeVersion = "1.20.00";

// NN プラグインロード情報取得
proc int nnGetPluginInfoMayaNNExporter()
{
	int $info = (`pluginInfo -query -loaded "MAYA85toHND"`           ||
				 `pluginInfo -query -loaded "MAYA85x64toHND"`        ||
				 `pluginInfo -query -loaded "MAYA2008toHND2"`        ||
				 `pluginInfo -query -loaded "MAYA2008x64toHND2"`     ||
				 `pluginInfo -query -loaded "MAYA2009toHND2"`        ||
				 `pluginInfo -query -loaded "MAYA2009x64toHND2"`     ||
				 `pluginInfo -query -loaded "MAYA2010toHND2"`        ||
				 `pluginInfo -query -loaded "MAYA2010x64toHND2"`     ||

				 `pluginInfo -query -loaded "MAYA85toHND2"`          ||
				 `pluginInfo -query -loaded "MAYA85x64toHND2"`       ||
				 `pluginInfo -query -loaded "MAYA2008toHND2"`        ||
				 `pluginInfo -query -loaded "MAYA2008x64toHND2"`     ||
				 `pluginInfo -query -loaded "MAYA2009toHND2"`        ||
				 `pluginInfo -query -loaded "MAYA2009x64toHND2"`     ||
				 `pluginInfo -query -loaded "MAYA2010toHND2"`        ||
				 `pluginInfo -query -loaded "MAYA2010x64toHND2"`     ||

				 `pluginInfo -query -loaded "MAYA85toNNPS2"`         ||
				 `pluginInfo -query -loaded "MAYA85x64toNNPS2"`      ||
				 `pluginInfo -query -loaded "MAYA2008toNNPS2"`       ||
				 `pluginInfo -query -loaded "MAYA2008x64toNNPS2"`    ||
				 `pluginInfo -query -loaded "MAYA2009toNNPS2"`       ||
				 `pluginInfo -query -loaded "MAYA2009x64toNNPS2"`    ||
				 `pluginInfo -query -loaded "MAYA2010toNNPS2"`       ||
				 `pluginInfo -query -loaded "MAYA2010x64toNNPS2"`    ||

				 `pluginInfo -query -loaded "MAYA85toNNGC"`          ||
				 `pluginInfo -query -loaded "MAYA85x64toNNGC"`       ||
				 `pluginInfo -query -loaded "MAYA2008toNNGC"`        ||
				 `pluginInfo -query -loaded "MAYA2008x64toNNGC"`     ||
				 `pluginInfo -query -loaded "MAYA2009toNNGC"`        ||
				 `pluginInfo -query -loaded "MAYA2009x64toNNGC"`     ||
				 `pluginInfo -query -loaded "MAYA2010toNNGC"`        ||
				 `pluginInfo -query -loaded "MAYA2010x64toNNGC"`     ||

				 `pluginInfo -query -loaded "MAYA85toNNXB"`          ||
				 `pluginInfo -query -loaded "MAYA85x64toNNXB"`       ||
				 `pluginInfo -query -loaded "MAYA2008toNNXB"`        ||
				 `pluginInfo -query -loaded "MAYA2008x64toNNXB"`     ||
				 `pluginInfo -query -loaded "MAYA2009toNNXB"`        ||
				 `pluginInfo -query -loaded "MAYA2009x64toNNXB"`     ||
				 `pluginInfo -query -loaded "MAYA2010toNNXB"`        ||
				 `pluginInfo -query -loaded "MAYA2010x64toNNXB"`     ||

				 `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"`     ||

				 `pluginInfo -query -loaded "MAYA85toNNPSP"`         ||
				 `pluginInfo -query -loaded "MAYA85x64toNNPSP"`      ||
				 `pluginInfo -query -loaded "MAYA2008toNNPSP"`       ||
				 `pluginInfo -query -loaded "MAYA2008x64toNNPSP"`    ||
				 `pluginInfo -query -loaded "MAYA2009toNNPSP"`       ||
				 `pluginInfo -query -loaded "MAYA2009x64toNNPSP"`    ||
				 `pluginInfo -query -loaded "MAYA2010toNNPSP"`       ||
				 `pluginInfo -query -loaded "MAYA2010x64toNNPSP"`    ||

				 `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"`  ||

				 `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"`    ||

				 `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"`   ||

				 `pluginInfo -query -loaded "MAYA85toNNGLES11"`      ||
				 `pluginInfo -query -loaded "MAYA85x64toNNGLES11"`   ||
				 `pluginInfo -query -loaded "MAYA2008toNNGLES11"`    ||
				 `pluginInfo -query -loaded "MAYA2008x64toNNGLES11"` ||
				 `pluginInfo -query -loaded "MAYA2009toNNGLES11"`    ||
				 `pluginInfo -query -loaded "MAYA2009x64toNNGLES11"` ||
				 `pluginInfo -query -loaded "MAYA2010toNNGLES11"`    ||
				 `pluginInfo -query -loaded "MAYA2010x64toNNGLES11"` ||

				 `pluginInfo -query -loaded "MAYA85toNNGLES20"`      ||
				 `pluginInfo -query -loaded "MAYA85x64toNNGLES20"`   ||
				 `pluginInfo -query -loaded "MAYA2008toNNGLES20"`    ||
				 `pluginInfo -query -loaded "MAYA2008x64toNNGLES20"` ||
				 `pluginInfo -query -loaded "MAYA2009toNNGLES20"`    ||
				 `pluginInfo -query -loaded "MAYA2009x64toNNGLES20"` ||
				 `pluginInfo -query -loaded "MAYA2010toNNGLES20"`    ||
				 `pluginInfo -query -loaded "MAYA2010x64toNNGLES20"`  );
	return $info;
}

//--------------------------------------------------------------------------//
//			nnPointLightAttributeVersion									//
//--------------------------------------------------------------------------//
global proc nnPointLightAttributeVersionNew( string $attrName )
{
	// アトリビュート名を"."で文字列を分割する。
	string $list[];
	tokenize( $attrName, ".", $list );
	// アトリビュート名を取得
	string $attr 		= $list[1];
	// ノード名を取得
	string $nodeName 	= $list[0];
	// ノードにアトリビュートがなければ新規にアトリビュート作成
	if ( !`attributeQuery -exists -node $nodeName $attr` ) {
		global string $nnPointLightAttributeVersion;
		addAttr
			-dataType		"string"
			-longName		$attr
			-hidden			true
			$nodeName;
		// バージョン情報をセット
		setAttr $attrName -type "string" $nnPointLightAttributeVersion;
		setAttr $attrName -lock true;
	}
	// hiddenフラグがTRUEでなければ一度アトリビュートを削除する
	else if( !`addAttr -query -hidden $attrName` ) {
		deleteAttr $attrName;
		nnPointLightAttributeVersionNew( $attrName );
	}
}

global proc nnPointLightAttributeVersionReplace( string $attrName )
{
	// アトリビュート名を"."で文字列を分割する。
	string $list[];
	tokenize( $attrName, ".", $list );
	// アトリビュート名を取得
	string $attr 		= $list[1];
	// ノード名を取得
	string $nodeName 	= $list[0];
	// ノードにアトリビュートがなければ新規にアトリビュート作成
	if ( !`attributeQuery -exists -node $nodeName $attr` ) {
		nnPointLightAttributeVersionNew( $attrName );
	}
	// hiddenフラグがTRUEでなければ一度アトリビュートを削除する
	else if( !`addAttr -query -hidden $attrName` ) {
		deleteAttr $attrName;
		nnPointLightAttributeVersionNew( $attrName );
	}
}

//--------------------------------------------------------------------------//
//			nnPointLightAttributeFrameLayout								//
//--------------------------------------------------------------------------//
global proc nnPointLightAttributeFrameLayoutNew( string $attrName )
{
	string $list[];
	// アトリビュート名を"."で文字列を分割する。
	tokenize( $attrName, ".", $list );
	// アトリビュート名を取得
	string $attr 		= $list[1];
	// ノード名を取得
	string $nodeName 	= $list[0];
	// ノードタイプを取得
	string $nodeType 	= `nodeType $nodeName`;
	// レイアウト名を作成
	string $grpName 	= $attr + $nodeType;
	// レイアウトがなければ新規にレイアウトを作成
	if ( !`frameLayout -exists $grpName` ) {
		// NnNodeAttributeEditorTemplateをセット
		setUITemplate -pushTemplate attributeEditorTemplate;
			frameLayout
				-collapsable	true
				-collapse		true
				-label 			"NN Point Light Attributes"
				-borderVisible 	true
				-borderStyle	"etchedIn"
				-marginWidth	5
				-marginHeight	5
				$grpName;
		setUITemplate -popTemplate;
	}
	// GUIの表示設定を変更
	frameLayout -edit -visible ( nnGetPluginInfoMayaNNExporter() ) $grpName;
}

global proc nnPointLightAttributeFrameLayoutReplace( string $attrName )
{
	string $list[];
	// アトリビュート名を"."で文字列を分割する。
	tokenize( $attrName, ".", $list);
	// アトリビュート名を取得
	string $attr		= $list[1];
	// ノード名を取得
	string $nodeName 	= $list[0];
	// ノードタイプを取得
	string $nodeType 	= `nodeType $nodeName`;
	// レイアウト名を作成
	string $grpName 	= $attr + $nodeType;
	// レイアウトがなければ新規にレイアウトを作成
	if ( !`frameLayout -exists $grpName` ) {
		nnPointLightAttributeFrameLayoutNew( $attrName );
	}
	// GUIの表示設定を変更
	else {
		frameLayout -edit -visible ( nnGetPluginInfoMayaNNExporter() ) $grpName;
	}
}

//--------------------------------------------------------------------------//
//			nnPointLightAttributeColumnLayout								//
//--------------------------------------------------------------------------//
global proc nnPointLightAttributeColumnLayoutNew( string $attrName )
{
	string $list[];
	// アトリビュート名を"."で文字列を分割する。
	tokenize( $attrName, ".", $list);
	// アトリビュート名を取得
	string $attr		= $list[1];
	// ノード名を取得
	string $nodeName 	= $list[0];
	// ノードタイプを取得
	string $nodeType 	= `nodeType $nodeName`;
	// レイアウト名を作成
	string $grpName 	= $attr + $nodeType;
	// レイアウトがなければ新規にレイアウトを作成
	if ( !`columnLayout -exists $grpName` ) {
		setUITemplate -pushTemplate attributeEditorTemplate;
			setParent ( "nnPointLightAttributeFrameLayout" + $nodeType );
				columnLayout
					-adjustableColumn true
					$grpName;
			setParent ..;
		setUITemplate -popTemplate;
	}
}

global proc nnPointLightAttributeColumnLayoutReplace( string $attrName )
{
	string $list[];
	// アトリビュート名を"."で文字列を分割する。
	tokenize( $attrName, ".", $list);
	// アトリビュート名を取得
	string $attr		= $list[1];
	// ノード名を取得
	string $nodeName 	= $list[0];
	// ノードタイプを取得
	string $nodeType 	= `nodeType $nodeName`;
	// レイアウト名を作成
	string $grpName 	= $attr + $nodeType;
	// レイアウトがなければ新規にレイアウトを作成
	if ( !`columnLayout -exists $grpName` ) {
		nnPointLightAttributeColumnLayoutNew( $attrName );
	}
}

//--------------------------------------------------------------------------//
//			nnFarRangeFalloffStart										//
//--------------------------------------------------------------------------//
global proc nnFarRangeFalloffStartNew( string $attrName )
{
	// アトリビュート名を"."で文字列を分割する。
	string $list[];
	tokenize( $attrName, ".", $list);
	// アトリビュート名を取得
	string $attr		= $list[1];
	// ノード名を取得
	string $nodeName 	= $list[0];
	// ノードタイプを取得
	string $nodeType 	= `nodeType $nodeName`;
	// コントロール名を作成
	string $grpName 	= $attr + $nodeType;

	// ノードにアトリビュートがなければ新規にアトリビュート作成
	if ( !`attributeQuery -exists -node $nodeName $attr` ) {
		addAttr
			-attributeType	"float"
			-longName		$attr
			-keyable		true
			-minValue 		0
			-maxValue 		2147483647
			-softMaxValue	10.0
			-defaultValue	0.0
			$nodeName;
	}
	// アトリビュートに接続するコントロールがなければ新規にコントロール作成
	if ( !`attrFieldSliderGrp -exists $grpName` ) {
		setParent ("nnPointLightAttributeColumnLayout" + $nodeType);
		setUITemplate -pushTemplate attributeEditorTemplate;
			attrFieldSliderGrp
				-label			"Far Range Falloff Start"
				$grpName;
		setUITemplate -popTemplate;
		setParent ..;
	}
	// アトリビュートとコントロールを接続する
	attrFieldSliderGrp -edit -attribute $attrName $grpName;
	attrFieldSliderGrp -edit -changeCommand	("nnCheckValueFarRangeFalloffStart "+$attrName) $grpName;
}

global proc nnFarRangeFalloffStartReplace( string $attrName )
{
	// アトリビュート名を"."で文字列を分割する。
	string $list[];
	tokenize( $attrName, ".", $list);
	// アトリビュート名を取得
	string $attr		= $list[1];
	// ノード名を取得
	string $nodeName 	= $list[0];
	// ノードタイプを取得
	string $nodeType 	= `nodeType $nodeName`;
	// コントロール名を作成
	string $grpName 	= $attr + $nodeType;

	// アトリビュートに接続するコントロールがなければ新規にコントロール作成
	if ( !`attrFieldSliderGrp -exists $grpName` ) {
		nnFarRangeFalloffStartNew( $attrName );
	}
	// ノードにアトリビュートがなければ新規にアトリビュート作成
	else if ( !`attributeQuery -exists -node $nodeName $attr` ) {
		nnFarRangeFalloffStartNew( $attrName );
	}
	// アトリビュートとコントロールを接続する
	else {
		attrFieldSliderGrp -edit -attribute $attrName $grpName;
		attrFieldSliderGrp -edit -changeCommand	("nnCheckValueFarRangeFalloffStart "+$attrName) $grpName;
	}
}

global proc nnCheckValueFarRangeFalloffStart( string $attrName )
{
	// アトリビュート名を"."で文字列を分割する。
	string $list[];
	tokenize( $attrName, ".", $list);
	// アトリビュート名を取得
	string $attr		= $list[1];
	// ノード名を取得
	string $nodeName 	= $list[0];
	// ノードタイプを取得
	string $nodeType 	= `nodeType $nodeName`;
	// コントロール名を作成
	string $grpName 	= $attr + $nodeType;

	string $farRangeFalloffStart  = $nodeName + ".nnFarRangeFalloffStart";
	string $farRangeFalloffMiddle = $nodeName + ".nnFarRangeFalloffMiddle";
	string $farRangeFalloffEnd    = $nodeName + ".nnFarRangeFalloffEnd";

	if( `getAttr $farRangeFalloffStart` > `getAttr $farRangeFalloffMiddle` ) {
		setAttr $farRangeFalloffStart `getAttr $farRangeFalloffMiddle`;
	}
}

//--------------------------------------------------------------------------//
//			nnFarRangeFalloffMiddle										//
//--------------------------------------------------------------------------//
global proc nnFarRangeFalloffMiddleNew( string $attrName )
{
	// アトリビュート名を"."で文字列を分割する。
	string $list[];
	tokenize( $attrName, ".", $list);
	// アトリビュート名を取得
	string $attr		= $list[1];
	// ノード名を取得
	string $nodeName 	= $list[0];
	// ノードタイプを取得
	string $nodeType 	= `nodeType $nodeName`;
	// コントロール名を作成
	string $grpName 	= $attr + $nodeType;

	// ノードにアトリビュートがなければ新規にアトリビュート作成
	if ( !`attributeQuery -exists -node $nodeName $attr` ) {
		addAttr
			-attributeType	"float"
			-longName		$attr
			-keyable		true
			-minValue 		0
			-maxValue 		2147483647
			-softMaxValue	10.0
			-defaultValue	5.0
			$nodeName;
	}
	// アトリビュートに接続するコントロールがなければ新規にコントロール作成
	if ( !`attrFieldSliderGrp -exists $grpName` ) {
		setParent ("nnPointLightAttributeColumnLayout" + $nodeType);
		setUITemplate -pushTemplate attributeEditorTemplate;
			attrFieldSliderGrp
				-label			"Far Range Falloff Middle"
				$grpName;
		setUITemplate -popTemplate;
		setParent ..;
	}
	// アトリビュートとコントロールを接続する
	attrFieldSliderGrp -edit -attribute $attrName $grpName;
	attrFieldSliderGrp -edit -changeCommand	("nnCheckValueFarRangeFalloffMiddle "+$attrName) $grpName;
}

global proc nnFarRangeFalloffMiddleReplace( string $attrName )
{
	// アトリビュート名を"."で文字列を分割する。
	string $list[];
	tokenize( $attrName, ".", $list);
	// アトリビュート名を取得
	string $attr		= $list[1];
	// ノード名を取得
	string $nodeName 	= $list[0];
	// ノードタイプを取得
	string $nodeType 	= `nodeType $nodeName`;
	// コントロール名を作成
	string $grpName 	= $attr + $nodeType;

	// アトリビュートに接続するコントロールがなければ新規にコントロール作成
	if ( !`attrFieldSliderGrp -exists $grpName` ) {
		nnFarRangeFalloffMiddleNew( $attrName );
	}
	// ノードにアトリビュートがなければ新規にアトリビュート作成
	else if ( !`attributeQuery -exists -node $nodeName $attr` ) {
		nnFarRangeFalloffMiddleNew( $attrName );
	}
	// アトリビュートとコントロールを接続する
	else {
		attrFieldSliderGrp -edit -attribute $attrName $grpName;
		attrFieldSliderGrp -edit -changeCommand	("nnCheckValueFarRangeFalloffMiddle "+$attrName) $grpName;
	}
}

global proc nnCheckValueFarRangeFalloffMiddle( string $attrName )
{
	// アトリビュート名を"."で文字列を分割する。
	string $list[];
	tokenize( $attrName, ".", $list);
	// アトリビュート名を取得
	string $attr		= $list[1];
	// ノード名を取得
	string $nodeName 	= $list[0];
	// ノードタイプを取得
	string $nodeType 	= `nodeType $nodeName`;
	// コントロール名を作成
	string $grpName 	= $attr + $nodeType;

	string $farRangeFalloffStart  = $nodeName + ".nnFarRangeFalloffStart";
	string $farRangeFalloffMiddle = $nodeName + ".nnFarRangeFalloffMiddle";
	string $farRangeFalloffEnd    = $nodeName + ".nnFarRangeFalloffEnd";

	if( `getAttr $farRangeFalloffMiddle` < `getAttr $farRangeFalloffStart` ) {
		setAttr $farRangeFalloffMiddle `getAttr $farRangeFalloffStart`;
	}
	else if( `getAttr $farRangeFalloffMiddle` > `getAttr $farRangeFalloffEnd` ) {
		setAttr $farRangeFalloffMiddle `getAttr $farRangeFalloffEnd`;
	}
}

//--------------------------------------------------------------------------//
//			nnFarRangeFalloffEnd											//
//--------------------------------------------------------------------------//
global proc nnFarRangeFalloffEndNew( string $attrName )
{
	// アトリビュート名を"."で文字列を分割する。
	string $list[];
	tokenize( $attrName, ".", $list);
	// アトリビュート名を取得
	string $attr		= $list[1];
	// ノード名を取得
	string $nodeName 	= $list[0];
	// ノードタイプを取得
	string $nodeType 	= `nodeType $nodeName`;
	// コントロール名を作成
	string $grpName 	= $attr + $nodeType;

	// ノードにアトリビュートがなければ新規にアトリビュート作成
	if ( !`attributeQuery -exists -node $nodeName $attr` ) {
		addAttr
			-attributeType	"float"
			-longName		$attr
			-keyable		true
			-minValue 		0
			-maxValue 		2147483647
			-softMaxValue	10.0
			-defaultValue	10.0
			$nodeName;
	}
	// アトリビュートに接続するコントロールがなければ新規にコントロール作成
	if ( !`attrFieldSliderGrp -exists $grpName` ) {
		setParent ("nnPointLightAttributeColumnLayout" + $nodeType);
		setUITemplate -pushTemplate attributeEditorTemplate;
			attrFieldSliderGrp
				-label			"Far Range Falloff End"
				$grpName;
		setUITemplate -popTemplate;
		setParent ..;
	}
	// アトリビュートとコントロールを接続する
	attrFieldSliderGrp -edit -attribute $attrName $grpName;
	attrFieldSliderGrp -edit -changeCommand	("nnCheckValueFarRangeFalloffEnd "+$attrName) $grpName;
}

global proc nnFarRangeFalloffEndReplace( string $attrName )
{
	// アトリビュート名を"."で文字列を分割する。
	string $list[];
	tokenize( $attrName, ".", $list);
	// アトリビュート名を取得
	string $attr		= $list[1];
	// ノード名を取得
	string $nodeName 	= $list[0];
	// ノードタイプを取得
	string $nodeType 	= `nodeType $nodeName`;
	// コントロール名を作成
	string $grpName 	= $attr + $nodeType;

	// アトリビュートに接続するコントロールがなければ新規にコントロール作成
	if ( !`attrFieldSliderGrp -exists $grpName` ) {
		nnFarRangeFalloffEndNew( $attrName );
	}
	// ノードにアトリビュートがなければ新規にアトリビュート作成
	else if ( !`attributeQuery -exists -node $nodeName $attr` ) {
		nnFarRangeFalloffEndNew( $attrName );
	}
	// アトリビュートとコントロールを接続する
	else {
		attrFieldSliderGrp -edit -attribute $attrName $grpName;
		attrFieldSliderGrp -edit -changeCommand	("nnCheckValueFarRangeFalloffEnd "+$attrName) $grpName;
	}
}

global proc nnCheckValueFarRangeFalloffEnd( string $attrName )
{
	// アトリビュート名を"."で文字列を分割する。
	string $list[];
	tokenize( $attrName, ".", $list);
	// アトリビュート名を取得
	string $attr		= $list[1];
	// ノード名を取得
	string $nodeName 	= $list[0];
	// ノードタイプを取得
	string $nodeType 	= `nodeType $nodeName`;
	// コントロール名を作成
	string $grpName 	= $attr + $nodeType;

	string $farRangeFalloffStart  = $nodeName + ".nnFarRangeFalloffStart";
	string $farRangeFalloffMiddle = $nodeName + ".nnFarRangeFalloffMiddle";
	string $farRangeFalloffEnd    = $nodeName + ".nnFarRangeFalloffEnd";

	if( `getAttr $farRangeFalloffEnd` < `getAttr $farRangeFalloffMiddle` ) {
		setAttr $farRangeFalloffEnd `getAttr $farRangeFalloffMiddle`;
	}
}

//--------------------------------------------------------------------------//
//																			//
//			nnPointLightAttribute											//
//																			//
//--------------------------------------------------------------------------//
global proc nnPointLightAttribute( string $nodeName )
{
	// nnPointLightAttributeVersion
	editorTemplate
		-callCustom "nnPointLightAttributeVersionNew"
					"nnPointLightAttributeVersionReplace"
					"nnPointLightAttributeVersion";

	// nnPointLightAttributeFrameLayout
	editorTemplate
		-callCustom "nnPointLightAttributeFrameLayoutNew"
					"nnPointLightAttributeFrameLayoutReplace"
					"nnPointLightAttributeFrameLayout";

	// nnPointLightAttributeColumnLayout
	editorTemplate
		-callCustom "nnPointLightAttributeColumnLayoutNew"
					"nnPointLightAttributeColumnLayoutReplace"
					"nnPointLightAttributeColumnLayout";

	// nnFarRangeFalloffStart
	editorTemplate
		-callCustom "nnFarRangeFalloffStartNew"
					"nnFarRangeFalloffStartReplace"
					"nnFarRangeFalloffStart";
	editorTemplate
		-suppress	"nnFarRangeFalloffStart";

	// nnFarRangeFalloffMiddle
	editorTemplate
		-callCustom "nnFarRangeFalloffMiddleNew"
					"nnFarRangeFalloffMiddleReplace"
					"nnFarRangeFalloffMiddle";
	editorTemplate
		-suppress	"nnFarRangeFalloffMiddle";

	// nnFarRangeFalloffEnd
	editorTemplate
		-callCustom "nnFarRangeFalloffEndNew"
					"nnFarRangeFalloffEndReplace"
					"nnFarRangeFalloffEnd";
	editorTemplate
		-suppress	"nnFarRangeFalloffEnd";

}

// End of file
