Пример #1
0
        private void SyncTelescope(Telescope scope, SyncSystem syncer)
        {
            float rotRad = MathHelper.DegreesToRadians(syncer.GetTrackValue(telescopeRotation));

            scope.tower.Transform.SetRotation(rotRad);

            float elevRad = MathHelper.DegreesToRadians(syncer.GetTrackValue(telescopeElevation));

            scope.antenna.Transform.SetRotation(elevRad);
        }
Пример #2
0
        // SYNC AND DRAW

        public void Sync(SyncSystem syncer)
        {
            SyncCamera(syncer);
            SyncFadeout(syncer);
            SyncSkybox(syncer);

            int s = syncer.Scene;

            if (s == mountainsNumber)
            {
                SyncTelescope(telescope, syncer);
                SyncGreets(syncer, title);
                lightController.syncing = false;
            }
            else if (s == moonNumber)
            {
                SyncMonolith(syncer);
                SyncGreets(syncer, group_greetings);
                lightController.syncing = false;
            }
            else if (s == bunnyNumber)
            {
                // Sync lights
                SyncBunny(syncer);
                SyncLightMeshList(bunnyLights, syncer.GetTrackValue(bunnyLightProgress));
                lightController.syncing = true;
                lightController.SyncLightList(bunnyLights);
            }
            else if (s == warpNumber)
            {
                SyncBunny(syncer);
                SyncLightMeshList(bunnyLights, syncer.GetTrackValue(bunnyLightProgress));
                lightController.syncing = true;
                lightController.SyncLightList(bunnyLights);
            }
            else if (s == seaNumber || s == crystalsNumber)
            {
                SyncMonolith(syncer);
                SyncGreets(syncer, credits);

                // Turn down lights
                SyncLightMeshList(bunnyLights, syncer.GetTrackValue(bunnyLightProgress));
                lightController.syncing = true;
                lightController.SyncLightList(bunnyLights);
            }
            if (s == crystalsNumber)
            {
                lightController.syncing = false;
                // Crystals
                SyncCrystals(syncer);
            }
        }
Пример #3
0
        private void SyncSkybox(SyncSystem syncer)
        {
            // Rotate star sphere world matrix
            // Rotate lighting
            float rot = syncer.GetTrackValue(skyRotation) * MathHelper.TwoPi;

            starSkyBox.Transform.SetRotation(rot);
            mountainLight.Direction = new Vector3(new Vector4(0, 0, 1, 0) * starSkyBox.Transform.rotationTransformMatrix);
        }
Пример #4
0
        public void SyncMonolith(SyncSystem syncer)
        {
            float rotations = syncer.GetTrackValue(monolithRotation);

            // Skip half of turn so that it seems that text is on both sides
            // 0.0 is facing camera
            // Pi. is 180d
            // start is -90
            while (rotations > 1.0f)
            {
                rotations -= 1.0f;
            }

            monolith.Transform.SetRotation(rotations * MathHelper.Pi - MathHelper.PiOver2);
            Vector3 monoPos = monolith.Transform.GetWorldPosition();

            monolith.Transform.Translation = new Vector4(monoPos.X, syncer.GetTrackValue(monolithElevation), monoPos.Z, 1.0f);
        }
Пример #5
0
        // SYNC FUNCTIONS

        private void SyncCamera(SyncSystem syncer)
        {
            Renderer renderer = Renderer.GetSingleton();

            renderer.SyncCameraFrame();
            CameraComponent camera = renderer.GetCamera();

            camera.FOV = 90 + syncer.GetTrackValue(cameraFOV);
            camera.CreateMatrices();
        }
Пример #6
0
        public void SyncGreets(SyncSystem syncer, List <GreetPage> greetPages)
        {
            float alphaPerPage = 1.0f / greetPages.Count;
            float wholeAlpha   = syncer.GetTrackValue(textAlpha);

            for (int pi = 0; pi < greetPages.Count; pi++)
            {
                GreetPage p = greetPages[pi];
                p.progress = DivideToPages(alphaPerPage, pi, wholeAlpha);
                float alphaPerGreet = 1.0f / p.greets.Count;
                for (int gi = 0; gi < p.greets.Count; gi++)
                {
                    Greeting g = p.greets[gi];
                    g.alpha = DivideToItems(alphaPerGreet, gi, p.progress);
                }
            }
        }
Пример #7
0
 void SyncBunny(SyncSystem syncer)
 {
     bunnyMesh.Transform.SetRotation(syncer.GetTrackValue(bunnyRotation) * MathHelper.Pi);
 }
Пример #8
0
 private void SyncFadeout(SyncSystem syncer)
 {
     fadeAlpha = syncer.GetTrackValue(fadeoutAlpha);
 }