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

--// 1.	rename:					" -> '
--// 2. comment root compositions routine:
--//	"createComposition11_AboriginalCamp_01 = function()"
--// 3. add auxiliaru routines for managing animations: 
--		auxPlayAboriginalCampAnimation(), 
--		auxGetAboriginalCampAnimation(), 
--		auxCreateAboriginalCampAnimations()
--// 4. replace CreateCompositionElement() with auxCreateCompositionElement() for some corrections ...

------------------------------------------------------------------------------
--
function auxPlayAboriginalCampAnimation(compositionName)
    local composition = auxGetAboriginalCampAnimation(compositionName);
    composition:SetVisible(true);
    composition:Play();
end

------------------------------------------------------------------------------
--
function auxHideAboriginalCampAnimation(compositionName)
    local composition = auxGetAboriginalCampAnimation(compositionName);
    composition:Stop();
    composition:SetVisible(false);
end

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

    return aboriginalCampCompositions[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);
	else
		element:SetDestroysOnEnd(false);
    end
	element:Stop();
    element:SetVisible(false);
    element:AssignClippingRect(parent);
	element:SetConsiderParentOpacity(true);

	return element;
end

-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
function auxCreateCompositionElement(resourceName)
	local element = CreateCompositionElement(resourceName);
    local texName = string.sub(resourceName, string.len('data/Texture/Scenes/11_AboriginalCamp/Animations/') + 1);

	--// set up flies animation
	if (texName == 'Env/Bug_fly[01-02].png') then
		local anim = element:GetTexture();
		anim:Stop();
		anim:SetTextureRect(0,0, 19,18);
		anim:SetFrames(2);
		anim:SetFrame(0);
		anim:SetSpeed(30.0);
		anim:SetMode(HGEANIM_FWD + HGEANIM_LOOP);
		anim:Play();
    end

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

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

------------------------------------------------------------------------------
--
function auxCreateAboriginalCampAnimations(parent)
    assert(parent ~= nil);

    aboriginalCampCompositions = {};
    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);
        aboriginalCampCompositions[element:GetName()] = element;
    end

	--//
    CreateAndRegisterComposition(parent, createCompositionEnvTop,	'EnvTop',	0,0,108.4, 512,384, 10, true);
    CreateAndRegisterComposition(parent, createCompositionFly1,		'Fly1',		0,0,108.3, 512,384, 10, false);
    CreateAndRegisterComposition(parent, createCompositionFly2,		'Fly2',		0,0,108.2, 512,384, 10, false);
    CreateAndRegisterComposition(parent, createCompositionDust,		'Dust',		0,0,108.1, 512,384, 10, true);
end

------------------------------------------------------------------------------
--createComposition11_AboriginalCamp_01 = function()
--
--    local composition11_AboriginalCamp_01 = CreateCompositionSequence();
--    local compositionDuration = 10;
--    composition11_AboriginalCamp_01:SetDuration(compositionDuration);
--
--
--    -- Layer Layer_1
--    local element = createCompositionEnvTop();
--    element:SetName('Layer_1');
--    composition11_AboriginalCamp_01:AddElement(element);
--    element:SetHotSpot(512, 384);
--    element:SetParentElement(composition11_AboriginalCamp_01);
--    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 = createCompositionFly1();
--    element:SetName('Layer_2');
--    composition11_AboriginalCamp_01:AddElement(element);
--    element:SetHotSpot(512, 384);
--    element:SetParentElement(composition11_AboriginalCamp_01);
--    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_3
--    local element = createCompositionFly2();
--    element:SetName('Layer_3');
--    composition11_AboriginalCamp_01:AddElement(element);
--    element:SetHotSpot(512, 384);
--    element:SetParentElement(composition11_AboriginalCamp_01);
--    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_4
--    local element = createCompositionDust();
--    element:SetName('Layer_4');
--    composition11_AboriginalCamp_01:AddElement(element);
--    element:SetHotSpot(512, 384);
--    element:SetParentElement(composition11_AboriginalCamp_01);
--    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_5
--    local element = auxCreateCompositionElement('data/Texture/Scenes/11_AboriginalCamp/Animations/Env/11_AboriginalCamp_01.jpg');
--    element:SetName('Layer_5');
--    composition11_AboriginalCamp_01:AddElement(element);
--    element:SetHotSpot(512, 384);
--    element:SetParentElement(composition11_AboriginalCamp_01);
--    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();
--
--    composition11_AboriginalCamp_01:Play();
--
--    return composition11_AboriginalCamp_01;
--end

createCompositionDust = function()

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


    -- Layer Layer_1
    local element = auxCreateCompositionElement('data/Texture/Scenes/11_AboriginalCamp/Animations/Env/EF_Dust_01.jpg');
    element:SetName('Layer_1');
    compositionDust:AddElement(element);
    element:SetHotSpot(130.5, 131);
    element:SetParentElement(compositionDust);
    element:SetScaleX(1.5);
    element:SetScaleY(1.5);

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

    effector:SetKey(_TRACK_X, 0, 521.513519287109);
    effector:SetKey(_TRACK_Y, 0, 299.675674438477);
    effector:SetKey(_TRACK_X, 9.96, 537.081085205078);
    effector:SetKey(_TRACK_Y, 9.96, 203.675674438477);
    effector:SetKey(_TRACK_A, 0, 0);
    effector:SetKey(_TRACK_A, 9.96, -0.7853981625);
    effector:SetKey(_TRACK_O, 0, 0);
    effector:SetKey(_TRACK_O, 0.8, 0.8);
    effector:SetKey(_TRACK_O, 1.36, 0);
    effector:SetKey(_TRACK_O, 1.96, 0.93234728698178);
    effector:SetKey(_TRACK_O, 2.64, 0);
    effector:SetKey(_TRACK_O, 3.24, 0.8792943491841);
    effector:SetKey(_TRACK_O, 3.88, 0);
    effector:SetKey(_TRACK_O, 4.72, 0.8);
    effector:SetKey(_TRACK_O, 5.56, 0);
    effector:SetKey(_TRACK_O, 6.28, 0.6);
    effector:SetKey(_TRACK_O, 6.92, 0);
    effector:SetKey(_TRACK_O, 7.64, 0.93234726822157);
    effector:SetKey(_TRACK_O, 8.36, 0);
    effector:SetKey(_TRACK_O, 9.04, 0.8);
    effector:SetKey(_TRACK_O, 9.96, 0);

    effector:Play();


    -- Layer Layer_2
    local element = auxCreateCompositionElement('data/Texture/Scenes/11_AboriginalCamp/Animations/Env/EF_Dust_01.jpg');
    element:SetName('Layer_2');
    compositionDust:AddElement(element);
    element:SetHotSpot(130.5, 131);
    element:SetParentElement(compositionDust);
    element:SetScaleX(1.5);
    element:SetScaleY(1.5);

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

    effector:SetKey(_TRACK_X, 0, 643.45947265625);
    effector:SetKey(_TRACK_Y, 0, 478.702697753906);
    effector:SetKey(_TRACK_X, 9.96, 659.027038574219);
    effector:SetKey(_TRACK_Y, 9.96, 382.702697753906);
    effector:SetKey(_TRACK_A, 0, 0);
    effector:SetKey(_TRACK_A, 9.96, -0.7853981625);
    effector:SetKey(_TRACK_O, 0, 0);
    effector:SetKey(_TRACK_O, 0.8, 0.8);
    effector:SetKey(_TRACK_O, 1.36, 0);
    effector:SetKey(_TRACK_O, 1.96, 0.93234728698178);
    effector:SetKey(_TRACK_O, 2.64, 0);
    effector:SetKey(_TRACK_O, 3.24, 0.8792943491841);
    effector:SetKey(_TRACK_O, 3.88, 0);
    effector:SetKey(_TRACK_O, 4.72, 0.8);
    effector:SetKey(_TRACK_O, 5.56, 0);
    effector:SetKey(_TRACK_O, 6.28, 0.6);
    effector:SetKey(_TRACK_O, 6.92, 0);
    effector:SetKey(_TRACK_O, 7.64, 0.93234726822157);
    effector:SetKey(_TRACK_O, 8.36, 0);
    effector:SetKey(_TRACK_O, 9.04, 0.8);
    effector:SetKey(_TRACK_O, 9.96, 0);

    effector:Play();

    compositionDust:Play();

    return compositionDust;
end

createCompositionEnvTop = function()

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


    -- Layer Layer_1
    local element = auxCreateCompositionElement('data/Texture/Scenes/11_AboriginalCamp/Animations/Env/EF_light02.jpg');
    element:SetName('Layer_1');
    compositionEnvTop:AddElement(element);
    element:SetHotSpot(107, 83);
    element:SetParentElement(compositionEnvTop);
    element:SetXY(551.082901000977, 497.116577148438);

    element:SetAngle(-7.00907123843869);

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

    effector:SetKey(_TRACK_SX, 0, -4.97795466826731);
    effector:SetKey(_TRACK_SY, 0, 9.08432817367676);
    effector:SetKey(_TRACK_SX, 1.88, -4.25623990218987);
    effector:SetKey(_TRACK_SY, 1.88, 9.22510868531591);
    effector:SetKey(_TRACK_SX, 3.88, -4.75204227435985);
    effector:SetKey(_TRACK_SY, 3.88, 8.21101426910869);
    effector:SetKey(_TRACK_SX, 5.84, -4.7546742053264);
    effector:SetKey(_TRACK_SY, 5.84, 7.95531748607152);
    effector:SetKey(_TRACK_SX, 8, -5.50586238285779);
    effector:SetKey(_TRACK_SY, 8, 8.71391603140133);
    effector:SetKey(_TRACK_SX, 9.96, -4.97795466826731);
    effector:SetKey(_TRACK_SY, 9.96, 9.08432817367676);
    effector:SetKey(_TRACK_O, 0, 0);
    effector:SetKey(_TRACK_O, 1.12, 0.41589057710788);
    effector:SetKey(_TRACK_O, 2.8, 0.1);
    effector:SetKey(_TRACK_O, 4.04, 0.60000000751202);
    effector:SetKey(_TRACK_O, 5.28, 0.29993845402644);
    effector:SetKey(_TRACK_O, 6.76, 0.89042050969051);
    effector:SetKey(_TRACK_O, 7.56, 0.2);
    effector:SetKey(_TRACK_O, 8.48, 0.6);
    effector:SetKey(_TRACK_O, 9.96, 0);

    effector:Play();

    compositionEnvTop:Play();

    return compositionEnvTop;
end

createCompositionFly1 = function()

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


    -- Layer Layer_1
    local element = auxCreateCompositionElement('data/Texture/Scenes/11_AboriginalCamp/Animations/Env/Bug_fly[01-02].png');
    element:SetName('Layer_1');
    compositionFly1:AddElement(element);
    element:SetHotSpot(9.5, 9);
    element:SetParentElement(compositionFly1);
    element:SetAngle(0);

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

    effector:SetKey(_TRACK_X, 0, 276);
    effector:SetKey(_TRACK_Y, 0, 787.270263671875);
    effector:SetKey(_TRACK_X, 0.2, 283.5);
    effector:SetKey(_TRACK_Y, 0.2, 754.270263671875);
    effector:SetKey(_TRACK_X, 0.4, 300);
    effector:SetKey(_TRACK_Y, 0.4, 724.770263671875);
    effector:SetKey(_TRACK_X, 0.64, 335.5);
    effector:SetKey(_TRACK_Y, 0.64, 697.270263671875);
    effector:SetKey(_TRACK_X, 0.92, 370);
    effector:SetKey(_TRACK_Y, 0.92, 688.270263671875);
    effector:SetKey(_TRACK_X, 1.12, 404);
    effector:SetKey(_TRACK_Y, 1.12, 670.270263671875);
    effector:SetKey(_TRACK_X, 1.4, 429);
    effector:SetKey(_TRACK_Y, 1.4, 631.270263671875);
    effector:SetKey(_TRACK_X, 1.64, 432);
    effector:SetKey(_TRACK_Y, 1.64, 593.270263671875);
    effector:SetKey(_TRACK_X, 1.92, 421);
    effector:SetKey(_TRACK_Y, 1.92, 564.770263671875);
    effector:SetKey(_TRACK_X, 2.16, 412.5);
    effector:SetKey(_TRACK_Y, 2.16, 536.270263671875);
    effector:SetKey(_TRACK_X, 2.32, 406);
    effector:SetKey(_TRACK_Y, 2.32, 504.770263671875);
    effector:SetKey(_TRACK_X, 2.76, 400.5);
    effector:SetKey(_TRACK_Y, 2.76, 425.770263671875);
    effector:SetKey(_TRACK_X, 3.08, 404);
    effector:SetKey(_TRACK_Y, 3.08, 364.770263671875);
    effector:SetKey(_TRACK_X, 3.36, 388);
    effector:SetKey(_TRACK_Y, 3.36, 338.270263671875);
    effector:SetKey(_TRACK_X, 3.52, 362.5);
    effector:SetKey(_TRACK_Y, 3.52, 334.270263671875);
    effector:SetKey(_TRACK_X, 4.8, 358.5);
    effector:SetKey(_TRACK_Y, 4.8, 463.770263671875);
    effector:SetKey(_TRACK_X, 4.84, 363);
    effector:SetKey(_TRACK_Y, 4.84, 466.270263671875);
    effector:SetKey(_TRACK_X, 5.04, 390);
    effector:SetKey(_TRACK_Y, 5.04, 469.770263671875);
    effector:SetKey(_TRACK_X, 5.24, 421);
    effector:SetKey(_TRACK_Y, 5.24, 463.770263671875);
    effector:SetKey(_TRACK_X, 5.48, 451.5);
    effector:SetKey(_TRACK_Y, 5.48, 442.270263671875);
    effector:SetKey(_TRACK_X, 5.76, 482.5);
    effector:SetKey(_TRACK_Y, 5.76, 424.770263671875);
    effector:SetKey(_TRACK_X, 6.08, 532.5);
    effector:SetKey(_TRACK_Y, 6.08, 412.770263671875);
    effector:SetKey(_TRACK_X, 6.32, 575);
    effector:SetKey(_TRACK_Y, 6.32, 411.770263671875);
    effector:SetKey(_TRACK_X, 6.56, 618.5);
    effector:SetKey(_TRACK_Y, 6.56, 423.270263671875);
    effector:SetKey(_TRACK_X, 6.84, 657);
    effector:SetKey(_TRACK_Y, 6.84, 459.270263671875);
    effector:SetKey(_TRACK_X, 7.16, 671);
    effector:SetKey(_TRACK_Y, 7.16, 508.770263671875);
    effector:SetKey(_TRACK_X, 7.48, 643);
    effector:SetKey(_TRACK_Y, 7.48, 550.270263671875);
    effector:SetKey(_TRACK_X, 7.76, 579.5);
    effector:SetKey(_TRACK_Y, 7.76, 544.270263671875);
    effector:SetKey(_TRACK_X, 8, 568);
    effector:SetKey(_TRACK_Y, 8, 506.770263671875);
    effector:SetKey(_TRACK_X, 8.24, 591);
    effector:SetKey(_TRACK_Y, 8.24, 479.770263671875);
    effector:SetKey(_TRACK_X, 8.52, 650);
    effector:SetKey(_TRACK_Y, 8.52, 481.270263671875);
    effector:SetKey(_TRACK_X, 8.76, 718);
    effector:SetKey(_TRACK_Y, 8.76, 473.270263671875);
    effector:SetKey(_TRACK_X, 9.04, 792);
    effector:SetKey(_TRACK_Y, 9.04, 453.770263671875);
    effector:SetKey(_TRACK_X, 9.28, 851.5);
    effector:SetKey(_TRACK_Y, 9.28, 416.770263671875);
    effector:SetKey(_TRACK_X, 9.48, 884);
    effector:SetKey(_TRACK_Y, 9.48, 342.270263671875);
    effector:SetKey(_TRACK_X, 9.76, 950.5);
    effector:SetKey(_TRACK_Y, 9.76, 267.270263671875);
    effector:SetKey(_TRACK_X, 9.96, 1049.5);
    effector:SetKey(_TRACK_Y, 9.96, 222.270263671875);
    effector:SetKey(_TRACK_SX, 0, 1.2);
    effector:SetKey(_TRACK_SY, 0, 1.2);
    effector:SetKey(_TRACK_SX, 3.52, 0.8);
    effector:SetKey(_TRACK_SY, 3.52, 0.8);
    effector:SetKey(_TRACK_SX, 4.8, 0.75);
    effector:SetKey(_TRACK_SY, 4.8, 0.75);
    effector:SetKey(_TRACK_SX, 7.08, 1);
    effector:SetKey(_TRACK_SY, 7.08, 1);
    effector:SetKey(_TRACK_SX, 8.68, 0.8);
    effector:SetKey(_TRACK_SY, 8.68, 0.8);
    effector:SetKey(_TRACK_SX, 9.96, 0.4);
    effector:SetKey(_TRACK_SY, 9.96, 0.4);
    effector:SetKey(_TRACK_O, 0, 1);
    effector:SetKey(_TRACK_O, 3.48, 1);
    effector:SetKey(_TRACK_O, 3.56, 0);
    effector:SetKey(_TRACK_O, 4.8, 0);
    effector:SetKey(_TRACK_O, 4.84, 1);

    effector:Play();

    compositionFly1:Play();

    return compositionFly1;
end

createCompositionFly2 = function()

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


    -- Layer Layer_1
    local element = auxCreateCompositionElement('data/Texture/Scenes/11_AboriginalCamp/Animations/Env/Bug_fly[01-02].png');
    element:SetName('Layer_1');
    compositionFly2:AddElement(element);
    element:SetHotSpot(9.5, 9);
    element:SetParentElement(compositionFly2);
    element:SetAngle(0);

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

    effector:SetKey(_TRACK_X, 0, 1043.4054107666);
    effector:SetKey(_TRACK_Y, 0, 452.405410766602);
    effector:SetKey(_TRACK_X, 0.28, 1001.4054107666);
    effector:SetKey(_TRACK_Y, 0.28, 464.405410766602);
    effector:SetKey(_TRACK_X, 0.56, 962.905410766602);
    effector:SetKey(_TRACK_Y, 0.56, 469.905410766602);
    effector:SetKey(_TRACK_X, 0.88, 896.905410766602);
    effector:SetKey(_TRACK_Y, 0.88, 467.405410766602);
    effector:SetKey(_TRACK_X, 1.16, 850.905410766602);
    effector:SetKey(_TRACK_Y, 1.16, 453.405410766602);
    effector:SetKey(_TRACK_X, 1.6, 794.905410766602);
    effector:SetKey(_TRACK_Y, 1.6, 421.405410766602);
    effector:SetKey(_TRACK_X, 1.96, 754.405410766602);
    effector:SetKey(_TRACK_Y, 1.96, 395.405410766602);
    effector:SetKey(_TRACK_X, 2.28, 714.905410766602);
    effector:SetKey(_TRACK_Y, 2.28, 378.905410766602);
    effector:SetKey(_TRACK_X, 2.68, 669.405410766602);
    effector:SetKey(_TRACK_Y, 2.68, 378.905410766602);
    effector:SetKey(_TRACK_X, 3.04, 620.405410766602);
    effector:SetKey(_TRACK_Y, 3.04, 389.405410766602);
    effector:SetKey(_TRACK_X, 3.36, 574.905410766602);
    effector:SetKey(_TRACK_Y, 3.36, 393.405410766602);
    effector:SetKey(_TRACK_X, 3.6, 532.905410766602);
    effector:SetKey(_TRACK_Y, 3.6, 381.405410766602);
    effector:SetKey(_TRACK_X, 3.84, 512.405410766602);
    effector:SetKey(_TRACK_Y, 3.84, 360.405410766602);
    effector:SetKey(_TRACK_X, 4.08, 511.405410766602);
    effector:SetKey(_TRACK_Y, 4.08, 339.405410766602);
    effector:SetKey(_TRACK_X, 4.32, 524.905410766602);
    effector:SetKey(_TRACK_Y, 4.32, 321.905410766602);
    effector:SetKey(_TRACK_X, 4.56, 555.405410766602);
    effector:SetKey(_TRACK_Y, 4.56, 302.405410766602);
    effector:SetKey(_TRACK_X, 4.8, 591.405410766602);
    effector:SetKey(_TRACK_Y, 4.8, 291.905410766602);
    effector:SetKey(_TRACK_X, 4.96, 627.405410766602);
    effector:SetKey(_TRACK_Y, 4.96, 288.405410766602);
    effector:SetKey(_TRACK_X, 5.24, 672.905410766602);
    effector:SetKey(_TRACK_Y, 5.24, 296.905410766602);
    effector:SetKey(_TRACK_X, 5.48, 707.905410766602);
    effector:SetKey(_TRACK_Y, 5.48, 314.405410766602);
    effector:SetKey(_TRACK_X, 5.72, 728.405410766602);
    effector:SetKey(_TRACK_Y, 5.72, 340.905410766602);
    effector:SetKey(_TRACK_X, 5.96, 733.905410766602);
    effector:SetKey(_TRACK_Y, 5.96, 373.405410766602);
    effector:SetKey(_TRACK_X, 6.2, 720.905410766602);
    effector:SetKey(_TRACK_Y, 6.2, 396.905410766602);
    effector:SetKey(_TRACK_X, 6.44, 695.905410766602);
    effector:SetKey(_TRACK_Y, 6.44, 413.405410766602);
    effector:SetKey(_TRACK_X, 6.64, 666.405410766602);
    effector:SetKey(_TRACK_Y, 6.64, 419.905410766602);
    effector:SetKey(_TRACK_X, 6.92, 618.905410766602);
    effector:SetKey(_TRACK_Y, 6.92, 413.405410766602);
    effector:SetKey(_TRACK_X, 7.28, 563.405410766602);
    effector:SetKey(_TRACK_Y, 7.28, 375.905410766602);
    effector:SetKey(_TRACK_X, 7.56, 536.905410766602);
    effector:SetKey(_TRACK_Y, 7.56, 329.405410766602);
    effector:SetKey(_TRACK_X, 7.96, 520.905410766602);
    effector:SetKey(_TRACK_Y, 7.96, 256.905410766602);
    effector:SetKey(_TRACK_X, 8.32, 524.905410766602);
    effector:SetKey(_TRACK_Y, 8.32, 190.405410766602);
    effector:SetKey(_TRACK_X, 8.72, 518.905410766602);
    effector:SetKey(_TRACK_Y, 8.72, 123.905410766602);
    effector:SetKey(_TRACK_X, 9.08, 500.405410766602);
    effector:SetKey(_TRACK_Y, 9.08, 70.4054107666016);
    effector:SetKey(_TRACK_X, 9.28, 476.905410766602);
    effector:SetKey(_TRACK_Y, 9.28, 56.9054107666016);
    effector:SetKey(_TRACK_X, 9.44, 449.905410766602);
    effector:SetKey(_TRACK_Y, 9.44, 49.9054107666016);
    effector:SetKey(_TRACK_X, 9.64, 433.905410766602);
    effector:SetKey(_TRACK_Y, 9.64, 32.9054107666016);
    effector:SetKey(_TRACK_X, 9.96, 412.405410766602);
    effector:SetKey(_TRACK_Y, 9.96, -18.0945892333984);
    effector:SetKey(_TRACK_SX, 0, 1.5);
    effector:SetKey(_TRACK_SY, 0, 1.5);
    effector:SetKey(_TRACK_SX, 3.24, 0.8);
    effector:SetKey(_TRACK_SY, 3.24, 0.8);
    effector:SetKey(_TRACK_SX, 4.92, 1);
    effector:SetKey(_TRACK_SY, 4.92, 1);
    effector:SetKey(_TRACK_SX, 6.88, 0.8);
    effector:SetKey(_TRACK_SY, 6.88, 0.8);
    effector:SetKey(_TRACK_SX, 9.96, 1.4);
    effector:SetKey(_TRACK_SY, 9.96, 1.4);
    effector:SetKey(_TRACK_O, 0, 1);
    effector:SetKey(_TRACK_O, 2.52, 1);
    effector:SetKey(_TRACK_O, 2.6, 0);
    effector:SetKey(_TRACK_O, 3.56, 0);
    effector:SetKey(_TRACK_O, 3.6, 1);
    effector:SetKey(_TRACK_O, 9.96, 1);

    effector:Play();

    compositionFly2:Play();

    return compositionFly2;
end

