--Manual
sphere1=Sphere pos:[50,0,0] radius:10
sphere2=Sphere pos:[100,0,0] radius:10
sphere3=Sphere pos:[150,0,0] radius:10
main_light=Sphere pos:[50,100,0] radius:10
main_light.name="main_light"
trigger_box=Box pos:[0,0,0] width:10 height:10 length:10
trigger_box.name="triggerBox"
animate on
(
at time 100 (trigger_box.pos=[200,0,0])
)
map1=standardMaterial(); map1.diffuse=color 0 144 0;map1.selfIllumAmount =0;map1.specularLevel=0;
map2=standardMaterial(); map2.diffuse=color 0 144 0;map2.selfIllumAmount =100;map2.specularLevel=100;
new_blend_material=Blend();
new_blend_material.map1=map1
new_blend_material.map2=map2
new_blend_material.mixAmount=0;
animate on
(
at time 1 (new_blend_material.mixAmount=100;)
at time 10 (new_blend_material.mixAmount=0;)
)
main_light.material=new_blend_material;
select #(sphere1,sphere2,sphere3)
--End Manual
--Auto
selected_objects_properties=#(); --#(animation_state,animation_current_frame,animation_total_frames)
selected_objects=selection as array
for i=1 to selected_objects.count do
( if(classof $main_light.material==Blend)then
(
new_blend_material=Blend(); new_blend_material.mixAmount=0;
new_blend_material.map1=$main_light.material.map1
new_blend_material.map2=$main_light.material.map2
selected_objects[i].material=new_blend_material;
main_light_frames_count=0;
if(classof $main_light.material.mixAmount.controller==bezier_float)then
(
main_light_keys_count=$main_light.material.mixAmount.controller.keys.count
if(main_light_keys_count>0)then
main_light_frames_count=int($main_light.material.mixAmount.controller.keys[main_light_keys_count].time.frame)
selected_objects_properties[i]=#(0,0,main_light_frames_count);
)))
if(selected_objects_properties.count!=0)then
(animate on
for t=0 to 100 do ( at time t
(
for i=1 to selected_objects.count do
(
qwer = Intersects $triggerBox selected_objects[i]
if (qwer==true and selected_objects_properties[i][1]==0)then selected_objects_properties[i][1]=1;--start playing
selected_objects[i].material.mixAmount=selected_objects[i].material.mixAmount+0--create keys in every frame
if(selected_objects_properties[i][1]==1)then --playing
(
main_light_mix_amount=0;
at time selected_objects_properties[i][2] (main_light_mix_amount=$main_light.material.mixAmount;)
selected_objects[i].material.mixAmount=main_light_mix_amount
selected_objects_properties[i][2]=selected_objects_properties[i][2]+1--next frame
if(selected_objects_properties[i][2]>selected_objects_properties[i][3])then selected_objects_properties[i][1]=2;--stop playing
)))))
--End Auto