khanat-opennel-code/code/nel/tools/3d/plugin_max/scripts/nel_copy_biped_figure_mode.ms
2010-05-06 02:08:41 +02:00

109 lines
2.6 KiB
Text

-- Roll out
source_node = undefined
dest_node = undefined
source_root_name = undefined
dest_root_name = undefined
-- This function look for a child with its name
fn getChildByName node name =
(
local i
-- Sourcename
source_name = substring name (1+source_root_name.count) (name.count-source_root_name.count)
-- For each children
for i = 1 to node.children.count do
(
-- This child ?
dest_name = substring node.children[i].name (1+dest_root_name.count) (node.children[i].name.count-dest_root_name.count)
if dest_name == source_name then
(
return node.children[i]
)
)
return undefined
)
-- This function copy the bones
fn copy_node my_source_node my_dest_node =
(
local i
-- Scale using offset value
scale my_dest_node (my_source_node.objectOffsetScale / my_dest_node.objectOffsetScale)
-- For each children
for i = 1 to my_source_node.children.count do
(
local child
-- Get the node
child = getChildByName my_dest_node my_source_node.children[i].name
if (child != undefined) then
(
copy_node my_source_node.children[i] child
)
else
)
)
rollout copy_biped_figure_mode "Properties"
(
Pickbutton SourceNode "Pick source biped" align:#left width:250
Pickbutton DestNode "Pick destination biped" align:#left width:250
Button Go "Go" align:#left width:250
on SourceNode picked obj do
(
source_node = obj.controller.rootNode
SourceNode.text = source_node.name
)
on DestNode picked obj do
(
dest_node = obj.controller.rootNode
DestNode.text = dest_node.name
)
on Go pressed do
(
local state_source_fm
local state_dest_fm
-- Root names
source_root_name = source_node.name
dest_root_name = dest_node.name
-- Backup figure mode state
state_source_fm = source_node.controller.figureMode
state_dest_fm = dest_node.controller.figureMode
-- Set the biped in figure mode
source_node.controller.figureMode = true
dest_node.controller.figureMode = true
-- Copy height
dest_node.controller.height = source_node.controller.height
-- Copy root node
copy_node source_node dest_node
-- Restaure figure mode state
source_node.controller.figureMode = state_source_fm
dest_node.controller.figureMode = state_dest_fm
)
)
-- Go
gc ()
if copy_biped_figure_mode_floater != undefined do
(
closerolloutfloater copy_biped_figure_mode_floater
)
copy_biped_figure_mode_floater = newRolloutFloater "NeL Copy Biped Figure Mode" 300 145
addrollout copy_biped_figure_mode copy_biped_figure_mode_floater rolledUp:false