--// Local auxiliary functions - - - - - - - - - - - - - - - - - - - - - - - -

--// 1.	rename:					" -> '
--// 2. comment root composition with texture "createCompositionBackground01 = function()"
--// 3. add auxiliaru routines for managing animations: 
--		auxPlayVolcanoEnvAnimation(), 
--		auxGetVolcanoEnvAnimation(), 
--		auxCreateVolcanoEnvAnimations()
--// 4. replace CreateCompositionElement() with auxCreateCompositionElement() for some corrections ...

------------------------------------------------------------------------------
--
function auxPlayVolcanoEnvAnimation(compositionName)
    local composition = auxGetVolcanoEnvAnimation(compositionName);
    composition:SetVisible(true);
    composition:Play();
end

------------------------------------------------------------------------------
--
function auxHideVolcanoEnvAnimation(compositionName)
    local composition = auxGetVolcanoEnvAnimation(compositionName);
    composition:Stop();
    composition:SetVisible(false);
end

------------------------------------------------------------------------------
--
function auxGetVolcanoEnvAnimation(compositionName)
    assert(volcanoEnvCompositions ~= nil and compositionName ~= nil);
	assert(volcanoEnvCompositions[compositionName] ~= nil and 'Composition with specified name not exists !');

    return volcanoEnvCompositions[compositionName];
end

-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
--

function CreateComposition(parent, compositionRoutine, name, x,y,z, hotSpotX,hotSpotY, duration, isCyclic)
    assert(parent ~= nil and compositionRoutine ~= nil and name ~= nil and z ~= nil and duration ~= nil);

    local element = compositionRoutine();
    element:SetName(name);
    element:SetHotSpot(hotSpotX,hotSpotY);
    element:SetXY(x, y);
    assert(z - parent:GetZ());
    element:SetZ(z - parent:GetZ());
    element:AttachTo(parent);

    element:SetScaleX(1);
    element:SetScaleY(1);
    element:SetAngle(0);
    element:SetOpacity(1);
    
    if (isCyclic == true) then
        element:SetDuration(duration);
        element:SetCyclic(true);
    end
	element:Stop();
    element:SetVisible(false);
    element:AssignClippingRect(parent);
	element:SetConsiderParentOpacity(true);

	return element;
end

-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
function auxCreateCompositionElement1(resourceName)
	local element = CreateCompositionElement(resourceName);
    local texName = string.sub(resourceName, string.len('data/Texture/Scenes/21_Volcano/Animations/Env/') + 1);


    --// set additive alpha blending mode for light & flare objects without alpha chanel (*.jpg)
    if (texName == 'EF_blik01.jpg' or
		texName == 'EF_Dust_01.jpg' or
		texName == 'EF_eyes01.jpg' or
		texName == 'EF_Light03.jpg' or
		texName == 'EF_light1_01.jpg') then

        element:GetTexture():SetBlendMode(0);
    end
	return element;
end

------------------------------------------------------------------------------
--
function auxCreateVolcanoEnvAnimations(parent)
    assert(parent ~= nil);
    volcanoEnvCompositions = {};
    local CreateAndRegisterComposition = function (parent, compositionRoutine, name, x,y,z, hotSpotX,hotSpotY, duration, isCyclic)
        local element = CreateComposition(parent, compositionRoutine, name, x,y,z, hotSpotX,hotSpotY, duration, isCyclic);
        volcanoEnvCompositions[element:GetName()] = element;
    end
    
    CreateAndRegisterComposition(parent, createCompositionLanternLight, 'LanternLight',	0,0,108.0, 512,384, 10, true);
    CreateAndRegisterComposition(parent, createCompositionFrontEnv, 	'FrontEnv',		0,0,108.0, 512,384, 10, true);
end

------------------------------------------------------------------------------
--
--createCompositionBackground01 = function()
--
--    local compositionBackground01 = CreateCompositionSequence();
--    local compositionDuration = 10;
--    compositionBackground01:SetDuration(compositionDuration);
--
--
--    -- Layer Phonar_ON
--    local element = createCompositionLanternLight();
--    element:SetName('Phonar_ON');
--    compositionBackground01:AddElement(element);
--    element:SetHotSpot(512, 384);
--    element:SetParentElement(compositionBackground01);
--    element:SetXY(512, 384);
--
--    element:SetScaleX(1);
--    element:SetScaleY(1);
--    element:SetAngle(0);
--    element:SetOpacity(1);
--
--    effector = element:GetEffector();
--    effector:SetLifeTime(0, 10);
--
--
--    effector:Play();
--
--
--    -- Layer Layer_2
--    local element = createCompositionFrontEnv();
--    element:SetName('Layer_2');
--    compositionBackground01:AddElement(element);
--    element:SetHotSpot(512, 384);
--    element:SetParentElement(compositionBackground01);
--    element:SetXY(512, 384);
--
--    element:SetScaleX(1);
--    element:SetScaleY(1);
--    element:SetAngle(0);
--    element:SetOpacity(1);
--
--    effector = element:GetEffector();
--    effector:SetLifeTime(0, 10);
--
--
--    effector:Play();
--
--
--    -- Layer BG
--    local element = auxCreateCompositionElement1('data/Texture/Scenes/21_Volcano/Animations/Env/Background01.jpg');
--    element:SetName('BG');
--    compositionBackground01:AddElement(element);
--    element:SetHotSpot(512, 384);
--    element:SetParentElement(compositionBackground01);
--    element:SetXY(512, 384);
--
--    element:SetScaleX(1);
--    element:SetScaleY(1);
--    element:SetAngle(0);
--    element:SetOpacity(1);
--
--    effector = element:GetEffector();
--    effector:SetLifeTime(0, 10);
--
--
--    effector:Play();
--
--    compositionBackground01:Play();
--
--    return compositionBackground01;
--end

createCompositionAll_eyes = function()

    local compositionAll_eyes = CreateCompositionSequence();
    local compositionDuration = 10;
    compositionAll_eyes:SetDuration(compositionDuration);


    -- Layer Layer_1
    local element = createCompositionEF_eyes01();
    element:SetName('Layer_1');
    compositionAll_eyes:AddElement(element);
    element:SetHotSpot(20, 20);
    element:SetParentElement(compositionAll_eyes);
    element:SetXY(578.75, 506.75);

    element:SetScaleX(0.6);
    element:SetScaleY(0.475);
    element:SetAngle(0);
    element:SetOpacity(1);

    effector = element:GetEffector();
    effector:SetLifeTime(5.68, 7.04);


    effector:Play();


    -- Layer Layer_2
    local element = createCompositionEF_eyes01();
    element:SetName('Layer_2');
    compositionAll_eyes:AddElement(element);
    element:SetHotSpot(20, 20);
    element:SetParentElement(compositionAll_eyes);
    element:SetXY(613, 543.5);

    element:SetScaleX(0.6);
    element:SetScaleY(0.475);
    element:SetAngle(0);
    element:SetOpacity(1);

    effector = element:GetEffector();
    effector:SetLifeTime(1.64, 3);


    effector:Play();


    -- Layer Layer_3
    local element = createCompositionEF_eyes01();
    element:SetName('Layer_3');
    compositionAll_eyes:AddElement(element);
    element:SetHotSpot(20, 20);
    element:SetParentElement(compositionAll_eyes);
    element:SetXY(577.5, 540);

    element:SetScaleX(0.5);
    element:SetScaleY(0.4);
    element:SetAngle(0);
    element:SetOpacity(1);

    effector = element:GetEffector();
    effector:SetLifeTime(2.12, 3.48);


    effector:Play();


    -- Layer Layer_4
    local element = createCompositionEF_eyes01();
    element:SetName('Layer_4');
    compositionAll_eyes:AddElement(element);
    element:SetHotSpot(20, 20);
    element:SetParentElement(compositionAll_eyes);
    element:SetXY(577.5, 540);

    element:SetScaleX(0.5);
    element:SetScaleY(0.4);
    element:SetAngle(0);
    element:SetOpacity(1);

    effector = element:GetEffector();
    effector:SetLifeTime(8.2, 9.56);


    effector:Play();


    -- Layer Layer_5
    local element = createCompositionEF_eyes01();
    element:SetName('Layer_5');
    compositionAll_eyes:AddElement(element);
    element:SetHotSpot(20, 20);
    element:SetParentElement(compositionAll_eyes);
    element:SetXY(590.5, 470);

    element:SetScaleX(0.5);
    element:SetScaleY(0.4);
    element:SetAngle(0);
    element:SetOpacity(1);

    effector = element:GetEffector();
    effector:SetLifeTime(1.04, 2.4);


    effector:Play();


    -- Layer Layer_6
    local element = createCompositionEF_eyes01();
    element:SetName('Layer_6');
    compositionAll_eyes:AddElement(element);
    element:SetHotSpot(20, 20);
    element:SetParentElement(compositionAll_eyes);
    element:SetXY(577.5, 540);

    element:SetScaleX(0.5);
    element:SetScaleY(0.4);
    element:SetAngle(0);
    element:SetOpacity(1);

    effector = element:GetEffector();
    effector:SetLifeTime(0.72, 2.08);


    effector:Play();


    -- Layer Layer_7
    local element = createCompositionEF_eyes01();
    element:SetName('Layer_7');
    compositionAll_eyes:AddElement(element);
    element:SetHotSpot(20, 20);
    element:SetParentElement(compositionAll_eyes);
    element:SetXY(581.25, 320.25);

    element:SetScaleX(0.3625);
    element:SetScaleY(0.325);
    element:SetAngle(0);
    element:SetOpacity(1);

    effector = element:GetEffector();
    effector:SetLifeTime(6.08, 7.44);


    effector:Play();


    -- Layer Layer_8
    local element = createCompositionEF_eyes01();
    element:SetName('Layer_8');
    compositionAll_eyes:AddElement(element);
    element:SetHotSpot(20, 20);
    element:SetParentElement(compositionAll_eyes);
    element:SetXY(572.25, 386.75);

    element:SetScaleX(0.3625);
    element:SetScaleY(0.325);
    element:SetAngle(0);
    element:SetOpacity(1);

    effector = element:GetEffector();
    effector:SetLifeTime(2.48, 3.84);


    effector:Play();


    -- Layer Layer_9
    local element = createCompositionEF_eyes01();
    element:SetName('Layer_9');
    compositionAll_eyes:AddElement(element);
    element:SetHotSpot(20, 20);
    element:SetParentElement(compositionAll_eyes);
    element:SetXY(594.25, 270.75);

    element:SetScaleX(0.3625);
    element:SetScaleY(0.325);
    element:SetAngle(0);
    element:SetOpacity(1);

    effector = element:GetEffector();
    effector:SetLifeTime(4.24, 5.6);


    effector:Play();


    -- Layer Layer_10
    local element = createCompositionEF_eyes01();
    element:SetName('Layer_10');
    compositionAll_eyes:AddElement(element);
    element:SetHotSpot(20, 20);
    element:SetParentElement(compositionAll_eyes);
    element:SetXY(609.75, 307.75);

    element:SetScaleX(0.3625);
    element:SetScaleY(0.325);
    element:SetAngle(0);
    element:SetOpacity(1);

    effector = element:GetEffector();
    effector:SetLifeTime(3.76, 5.12);


    effector:Play();


    -- Layer Layer_11
    local element = createCompositionEF_eyes01();
    element:SetName('Layer_11');
    compositionAll_eyes:AddElement(element);
    element:SetHotSpot(20, 20);
    element:SetParentElement(compositionAll_eyes);
    element:SetXY(430.5, 336);

    element:SetScaleX(1);
    element:SetScaleY(1);
    element:SetAngle(0);
    element:SetOpacity(1);

    effector = element:GetEffector();
    effector:SetLifeTime(7.52, 8.88);


    effector:Play();


    -- Layer Layer_12
    local element = createCompositionEF_eyes01();
    element:SetName('Layer_12');
    compositionAll_eyes:AddElement(element);
    element:SetHotSpot(20, 20);
    element:SetParentElement(compositionAll_eyes);
    element:SetXY(430.5, 336);

    element:SetScaleX(1);
    element:SetScaleY(1);
    element:SetAngle(0);
    element:SetOpacity(1);

    effector = element:GetEffector();
    effector:SetLifeTime(0, 1.36);


    effector:Play();

    compositionAll_eyes:Play();

    return compositionAll_eyes;
end

createCompositionEF_eyes01 = function()

    local compositionEF_eyes01 = CreateCompositionSequence();
    local compositionDuration = 1.36;
    compositionEF_eyes01:SetDuration(compositionDuration);


    -- Layer Layer_1
    local element = auxCreateCompositionElement1('data/Texture/Scenes/21_Volcano/Animations/Env/EF_eyes01.jpg');
    element:SetName('Layer_1');
    compositionEF_eyes01:AddElement(element);
    element:SetHotSpot(18, 12);
    element:SetParentElement(compositionEF_eyes01);
    element:SetXY(20.375, 20.375);

    element:SetAngle(0);

    effector = element:GetEffector();
    effector:SetLifeTime(0, 1.36);

    effector:SetKey(_TRACK_SX, 0, 0.97222222222222);
    effector:SetKey(_TRACK_SY, 0, 0.26041666666667);
    effector:SetKey(_TRACK_SX, 0.28, 1);
    effector:SetKey(_TRACK_SY, 0.28, 0.82291666666666);
    effector:SetKey(_TRACK_SX, 0.52, 1);
    effector:SetKey(_TRACK_SY, 0.52, 0.72916666666666);
    effector:SetKey(_TRACK_SX, 0.96, 1);
    effector:SetKey(_TRACK_SY, 0.96, 0.82291666666666);
    effector:SetKey(_TRACK_SX, 1.32, 1);
    effector:SetKey(_TRACK_SY, 1.32, 0.19791666666666);
    effector:SetKey(_TRACK_O, 0, 0);
    effector:SetKey(_TRACK_O, 0.28, 1);
    effector:SetKey(_TRACK_O, 0.96, 1);
    effector:SetKey(_TRACK_O, 1.32, 0);

    effector:Play();

    compositionEF_eyes01:Play();

    return compositionEF_eyes01;
end

createCompositionFrontEnv = function()

    local compositionFrontEnv = CreateCompositionSequence();
    local compositionDuration = 10;
    compositionFrontEnv:SetDuration(compositionDuration);


    -- Layer dust1
    local element = auxCreateCompositionElement1('data/Texture/Scenes/21_Volcano/Animations/Env/EF_Dust_01.jpg');
    element:SetName('dust1');
    compositionFrontEnv:AddElement(element);
    element:SetHotSpot(130.5, 131);
    element:SetParentElement(compositionFrontEnv);
    element:SetScaleX(1.41666666666667);
    element:SetScaleY(1.41666666666667);

    effector = element:GetEffector();
    effector:SetLifeTime(0, 10);

    effector:SetKey(_TRACK_X, 0, 228.175010755861);
    effector:SetKey(_TRACK_Y, 0, 295.714080828165);
    effector:SetKey(_TRACK_X, 4.68, 239.850685194337);
    effector:SetKey(_TRACK_Y, 4.68, 136.146514910197);
    effector:SetKey(_TRACK_X, 4.76, 225.580421522462);
    effector:SetKey(_TRACK_Y, 4.76, 527.930297869181);
    effector:SetKey(_TRACK_X, 9.96, 228.175010755861);
    effector:SetKey(_TRACK_Y, 9.96, 295.714080828165);
    effector:SetKey(_TRACK_A, 0, -1.570796325);
    effector:SetKey(_TRACK_A, 4.64, -1.3962634);
    effector:SetKey(_TRACK_A, 4.76, 1.570796325);
    effector:SetKey(_TRACK_A, 9.96, 1.3962634);
    effector:SetKey(_TRACK_O, 0, 0);
    effector:SetKey(_TRACK_O, 1.12, 0.4);
    effector:SetKey(_TRACK_O, 1.96, 0);
    effector:SetKey(_TRACK_O, 2.84, 0.4);
    effector:SetKey(_TRACK_O, 3.72, 0);
    effector:SetKey(_TRACK_O, 4.28, 0.2);
    effector:SetKey(_TRACK_O, 4.68, 0);
    effector:SetKey(_TRACK_O, 4.76, 0);
    effector:SetKey(_TRACK_O, 5.6, 0.4);
    effector:SetKey(_TRACK_O, 6.68, 0);
    effector:SetKey(_TRACK_O, 7.48, 0.2);
    effector:SetKey(_TRACK_O, 8.16, 0);
    effector:SetKey(_TRACK_O, 8.96, 0.3);
    effector:SetKey(_TRACK_O, 9.96, 0);

    effector:Play();


    -- Layer dust2
    local element = auxCreateCompositionElement1('data/Texture/Scenes/21_Volcano/Animations/Env/EF_Dust_01.jpg');
    element:SetName('dust2');
    compositionFrontEnv:AddElement(element);
    element:SetHotSpot(130.5, 131);
    element:SetParentElement(compositionFrontEnv);

    effector = element:GetEffector();
    effector:SetLifeTime(0, 10);

    effector:SetKey(_TRACK_X, 0, 230.9189453125);
    effector:SetKey(_TRACK_Y, 0, 402.162170410156);
    effector:SetKey(_TRACK_X, 9.96, 238.702713012695);
    effector:SetKey(_TRACK_Y, 9.96, 146.594604492188);
    effector:SetKey(_TRACK_SX, 0, 1.5);
    effector:SetKey(_TRACK_SY, 0, 1.5);
    effector:SetKey(_TRACK_SX, 4.68, 1);
    effector:SetKey(_TRACK_SY, 4.68, 1);
    effector:SetKey(_TRACK_SX, 9.96, 1.5);
    effector:SetKey(_TRACK_SY, 9.96, 1.5);
    effector:SetKey(_TRACK_A, 0, -0.7853981625);
    effector:SetKey(_TRACK_A, 9.96, -0.7853981625);
    effector:SetKey(_TRACK_O, 0, 0);
    effector:SetKey(_TRACK_O, 1.36, 0.4);
    effector:SetKey(_TRACK_O, 2.56, 0);
    effector:SetKey(_TRACK_O, 3.6, 0.6);
    effector:SetKey(_TRACK_O, 4.52, 0);
    effector:SetKey(_TRACK_O, 5.72, 0.6);
    effector:SetKey(_TRACK_O, 7.08, 0.1);
    effector:SetKey(_TRACK_O, 7.88, 0.6);
    effector:SetKey(_TRACK_O, 8.68, 0);
    effector:SetKey(_TRACK_O, 9.32, 0.6);
    effector:SetKey(_TRACK_O, 9.96, 0);

    effector:Play();


    -- Layer Light2
    local element = auxCreateCompositionElement1('data/Texture/Scenes/21_Volcano/Animations/Env/EF_light1_01.jpg');
    element:SetName('Light2');
    compositionFrontEnv:AddElement(element);
    element:SetHotSpot(90.5388641357422, 77.7084808349609);
    element:SetParentElement(compositionFrontEnv);
    element:SetXY(621.405395507813, -7.78376770019531);


    effector = element:GetEffector();
    effector:SetLifeTime(0, 10);

    effector:SetKey(_TRACK_SX, 0, 2.5);
    effector:SetKey(_TRACK_SY, 0, 2.5);
    effector:SetKey(_TRACK_SX, 3.08, 3);
    effector:SetKey(_TRACK_SY, 3.08, 3);
    effector:SetKey(_TRACK_SX, 6.36, 2);
    effector:SetKey(_TRACK_SY, 6.36, 2);
    effector:SetKey(_TRACK_SX, 9.96, 2.5);
    effector:SetKey(_TRACK_SY, 9.96, 2.5);
    effector:SetKey(_TRACK_A, 0, 0.28458572653191);
    effector:SetKey(_TRACK_A, 0.8, 0.30672261406298);
    effector:SetKey(_TRACK_A, 1.56, 0.3689357669312);
    effector:SetKey(_TRACK_A, 2.64, 0.40013747803323);
    effector:SetKey(_TRACK_A, 3.88, 0.36618979923149);
    effector:SetKey(_TRACK_A, 5.08, 0.27594240560898);
    effector:SetKey(_TRACK_A, 6.28, 0.24168667856334);
    effector:SetKey(_TRACK_A, 8.12, 0.25535437306977);
    effector:SetKey(_TRACK_A, 9.96, 0.28458572653191);
    effector:SetKey(_TRACK_O, 0, 0.2);
    effector:SetKey(_TRACK_O, 0.88, 0.6);
    effector:SetKey(_TRACK_O, 1.96, 0.6);
    effector:SetKey(_TRACK_O, 3.28, 0.2);
    effector:SetKey(_TRACK_O, 4.4, 0.6);
    effector:SetKey(_TRACK_O, 5.64, 0.2);
    effector:SetKey(_TRACK_O, 7.04, 0.45);
    effector:SetKey(_TRACK_O, 8, 0.05);
    effector:SetKey(_TRACK_O, 9.04, 0.6);
    effector:SetKey(_TRACK_O, 9.96, 0.2);

    effector:Play();


    -- Layer Light1
    local element = auxCreateCompositionElement1('data/Texture/Scenes/21_Volcano/Animations/Env/EF_Light03.jpg');
    element:SetName('Light1');
    compositionFrontEnv:AddElement(element);
    element:SetHotSpot(112, 129);
    element:SetParentElement(compositionFrontEnv);
    element:SetXY(613.621612548828, 351.567565917969);

    element:SetAngle(0);

    effector = element:GetEffector();
    effector:SetLifeTime(0, 10);

    effector:SetKey(_TRACK_SX, 0, 3.07942764021004);
    effector:SetKey(_TRACK_SY, 0, 3.30169704588309);
    effector:SetKey(_TRACK_SX, 4, 2.7319372927197);
    effector:SetKey(_TRACK_SY, 4, 3.30169704588309);
    effector:SetKey(_TRACK_SX, 9.96, 3.07942764021004);
    effector:SetKey(_TRACK_SY, 9.96, 3.30169704588309);
    effector:SetKey(_TRACK_O, 0, 0.2);
    effector:SetKey(_TRACK_O, 1.4, 0.4);
    effector:SetKey(_TRACK_O, 2.52, 0.1);
    effector:SetKey(_TRACK_O, 4.04, 0.4);
    effector:SetKey(_TRACK_O, 5, 0.1);
    effector:SetKey(_TRACK_O, 6.2, 0.35);
    effector:SetKey(_TRACK_O, 7.44, 0.05);
    effector:SetKey(_TRACK_O, 8.68, 0.4);
    effector:SetKey(_TRACK_O, 9.96, 0.2);

    effector:Play();


    -- Layer Scary_eyes
    local element = createCompositionAll_eyes();
    element:SetName('Scary_eyes');
    compositionFrontEnv:AddElement(element);
    element:SetHotSpot(512, 384);
    element:SetParentElement(compositionFrontEnv);
    element:SetXY(512, 384);

    element:SetScaleX(1);
    element:SetScaleY(1);
    element:SetAngle(0);
    element:SetOpacity(1);

    effector = element:GetEffector();
    effector:SetLifeTime(0, 10);


    effector:Play();

    compositionFrontEnv:Play();

    return compositionFrontEnv;
end

createCompositionLanternLight = function()

    local compositionLanternLight = CreateCompositionSequence();
    local compositionDuration = 10;
    compositionLanternLight:SetDuration(compositionDuration);


    -- Layer Layer_1
    local element = auxCreateCompositionElement1('data/Texture/Scenes/21_Volcano/Animations/Env/EF_light1_01.jpg');
    element:SetName('Layer_1');
    compositionLanternLight:AddElement(element);
    element:SetHotSpot(90.1095428466797, 76.8498229980469);
    element:SetParentElement(compositionLanternLight);
    element:SetXY(521.513519287109, 561.729721069336);


    effector = element:GetEffector();
    effector:SetLifeTime(0, 10);

    effector:SetKey(_TRACK_SX, 0, 1.5);
    effector:SetKey(_TRACK_SY, 0, 1.5);
    effector:SetKey(_TRACK_SX, 2.24, 2);
    effector:SetKey(_TRACK_SY, 2.24, 2);
    effector:SetKey(_TRACK_SX, 5, 1.5);
    effector:SetKey(_TRACK_SY, 5, 1.5);
    effector:SetKey(_TRACK_SX, 7.32, 1.8);
    effector:SetKey(_TRACK_SY, 7.32, 1.8);
    effector:SetKey(_TRACK_SX, 9.96, 1.5);
    effector:SetKey(_TRACK_SY, 9.96, 1.5);
    effector:SetKey(_TRACK_A, 0, 0);
    effector:SetKey(_TRACK_A, 0.8, 0.03223733987994);
    effector:SetKey(_TRACK_A, 1.4, 0.08718686740442);
    effector:SetKey(_TRACK_A, 2.2, 0.12002525642009);
    effector:SetKey(_TRACK_A, 3.4, 0.10104448848839);
    effector:SetKey(_TRACK_A, 4.12, 0.0618869502191);
    effector:SetKey(_TRACK_A, 4.96, 0.04022441125306);
    effector:SetKey(_TRACK_A, 5.6, 0.05270179680944);
    effector:SetKey(_TRACK_A, 6.2, 0.08154065388381);
    effector:SetKey(_TRACK_A, 7.2, 0.10371113264948);
    effector:SetKey(_TRACK_A, 7.96, 0.08718686753695);
    effector:SetKey(_TRACK_A, 8.76, 0.03223734341857);
    effector:SetKey(_TRACK_A, 9.96, 0);
    effector:SetKey(_TRACK_O, 0, 1);
    effector:SetKey(_TRACK_O, 0.84, 0.8);
    effector:SetKey(_TRACK_O, 2.12, 1);
    effector:SetKey(_TRACK_O, 3.24, 0.7);
    effector:SetKey(_TRACK_O, 4.24, 1);
    effector:SetKey(_TRACK_O, 5.48, 0.8);
    effector:SetKey(_TRACK_O, 6.48, 1);
    effector:SetKey(_TRACK_O, 7.6, 0.7);
    effector:SetKey(_TRACK_O, 8.68, 1);
    effector:SetKey(_TRACK_O, 9.44, 0.8);
    effector:SetKey(_TRACK_O, 9.96, 1);

    effector:Play();

    compositionLanternLight:Play();

    return compositionLanternLight;
end

