Dictionary<Material, List<MeshRendererTrait>> GroupMeshRenderersByMaterials(Scene scene, String pass)
        {
            // TODO, make this fast
            var grouping = new Dictionary<Material, List<MeshRendererTrait>> ();
            foreach (var go in scene.SceneGraph.GetAllObjects())
            {
                if (!go.Enabled) continue;

                var mr = go.GetTrait<MeshRendererTrait>();

                if (mr == null) continue;
                if (!mr.Active) continue;
                if (mr.Material == null) continue;

                // if the material is for this pass
                if (mr.Material.RenderPass == pass)
                {
                    if (!grouping.ContainsKey (mr.Material))
                        grouping [mr.Material] = new List<MeshRendererTrait> ();

                    grouping [mr.Material].Add (mr);
                }
            }

            return grouping;
        }
Exemple #2
0
        internal CameraManager(Scene scene)
        {
            var settings = scene.Configuration;

            foreach (var renderPass in settings.RenderPasses)
            {
                var go = scene.SceneGraph.CreateSceneObject("RenderPass(" + renderPass + ") Provided Camera");

                var cam = go.AddTrait<CameraTrait>();

                if (renderPass.Configuration.CameraProjectionType == CameraProjectionType.Perspective)
                {
                    go.Transform.Position = new Vector3(2, 1, 5);

                    var orbit = go.AddTrait<OrbitAroundSubjectTrait>();
                    orbit.CameraSubject = Transform.Origin;

                    var lookAtSub = go.AddTrait<LookAtSubjectTrait>();
                    lookAtSub.Subject = Transform.Origin;
                }
                else
                {
                    cam.Projection = CameraProjectionType.Orthographic;

                    go.Transform.Position = new Vector3(0, 0, 1f);
                    go.Transform.LookAt(Vector3.Zero);
                }

                _defaultCameras.Add(renderPass.Name, go);
                _activeCameras.Add(renderPass.Name, go);
            }
        }
Exemple #3
0
 public SceneManager(Platform platform, Engine engine, Scene startScene)
 {
     this.platform = platform;
     this.engine = engine;
     nextScene = startScene;
     sceneRenderer = new SceneRenderer(platform);
 }
        public override void Start()
        {
            this.Configuration.BackgroundColour = Rgba32.DarkSlateGrey;
            returnScene = this;

            ShaderAsset shaderAsset = this.Engine.Assets.Load<ShaderAsset> ("assets/unlit.bba");
            TextureAsset texAsset = this.Engine.Assets.Load <TextureAsset> ("assets/bg1.bba");

            SpriteTrait.SpriteShader = this.Platform.Graphics.CreateShader (shaderAsset);
            tex = this.Platform.Graphics.CreateTexture (texAsset);

            var cam = this.CameraManager.GetRenderPassCamera ("Default");
            cam.GetTrait <OrbitAroundSubjectTrait> ().Active = false;

            // create a sprite
            var so = this.SceneGraph.CreateSceneObject ("billboard");

            var spr = so.AddTrait <SpriteTrait> ();
            spr.Width = 256f;
            spr.Height = 256f;
            spr.Texture = tex;

            // TODO: Material Offset has not been implemented in Engine yet,
            //       if it were we could use it to adjust the UVs used to render
            //       this SpriteTrait's texture.
            //spr.Material.Offset = new Vector2 (0.5f, 0.5f);
            spr.Material.SetColour ("MaterialColour", Rgba32.Yellow);

            shader = this.Platform.Graphics.CreateShader (shaderAsset);

            this.Engine.InputEventSystem.DoubleTap += this.OnDoubleTap;
        }
Exemple #5
0
        public override void Start()
        {
            this.Configuration.BackgroundColour = Rgba32.Black;

            CommonDemoResources.Create (Platform, Engine);

            Entity camSo = SceneGraph.CreateSceneObject ("Scene 3 Camera");
            camSo.AddTrait <CameraTrait> ();
            var lookatTrait = camSo.AddTrait<LookAtSubjectTrait>();
            lookatTrait.Subject = Transform.Origin;
            var orbitTrait = camSo.AddTrait<OrbitAroundSubjectTrait>();
            orbitTrait.CameraSubject = Transform.Origin;

            camSo.Transform.LocalPosition = new Vector3(1f,0.5f,5f);

            this.RuntimeConfiguration.SetRenderPassCameraTo("Debug", camSo);
            this.RuntimeConfiguration.SetRenderPassCameraTo("Default", camSo);

            _returnScene = this;
            this.Engine.InputEventSystem.Tap += this.OnTap;

            teapotGPUMesh = new TeapotPrimitive(Platform.Graphics).Mesh;

            AddTeapot(0);
            AddTeapot(-1.5f);
            AddTeapot(1.5f);
        }
        internal void Render(Scene scene)
        {
            // Clear the background colour if the scene settings want us to.
            if (scene.Configuration.BackgroundColour.HasValue)
            {
                this.platform.Graphics.ClearColourBuffer(scene.Configuration.BackgroundColour.Value);
            }

            foreach (var renderPass in scene.Configuration.RenderPasses)
            {
                this.RenderPass(scene, renderPass);
            }
        }
Exemple #7
0
        public override void Start()
        {
            this.Configuration.BackgroundColour = Rgba32.LightSlateGrey;

            CommonDemoResources.Create (Platform, Engine);

            returnScene = this;

            // create a sprite
            var billboard = new BillboardPrimitive(this.Platform.Graphics);

            billboardGo = this.SceneGraph.CreateSceneObject("billboard");

            var mr = billboardGo.AddTrait<MeshRendererTrait>();
            mr.Mesh = billboard.Mesh;
            mr.Material = new Material("Default", CommonDemoResources.UnlitShader);
            mr.Material.SetColour("MaterialColour", RandomGenerator.Default.GetRandomColour());

            target = billboardGo.Transform;

            markerGo = this.SceneGraph.CreateSceneObject ("marker");

            markerGo.Transform.LocalScale = new Vector3 (0.05f, 0.05f, 0.05f);

            var markerMR = markerGo.AddTrait<MeshRendererTrait> ();
            markerMR.Mesh = new CubePrimitive(this.Platform.Graphics).Mesh;
            markerMR.Material = new Material("Default", CommonDemoResources.UnlitShader);
            markerMR.Material.SetColour("MaterialColour", Rgba32.Red);

            cam = this.CameraManager.GetRenderPassCamera ("Default");

            this.SceneGraph.DestroySceneObject(this.CameraManager.GetRenderPassCamera ("Debug"));
            this.SceneGraph.DestroySceneObject(this.CameraManager.GetRenderPassCamera ("Gui"));

            this.RuntimeConfiguration.SetRenderPassCameraTo ("Debug", cam);
            cam.Transform.Position = new Vector3(2, 1, 5);
            cam.RemoveTrait<OrbitAroundSubjectTrait> ();

            las = cam.GetTrait<LookAtSubjectTrait> ();
            las.Subject = billboardGo.Transform;

            this.Engine.InputEventSystem.Tap += this.OnTap;
        }
Exemple #8
0
 void OnTap(Gesture gesture)
 {
     returnScene = new Scene_Shapes3();
 }
        public override void Start()
        {
            this.Configuration.BackgroundColour = Rgba32.DarkSlateGrey;
            //var goBoardMesh = new CubePrimitive (this.Platform.Graphics).Mesh;

            MeshAsset mushMeshAsset0 = this.Engine.Assets.Load<MeshAsset> ("assets/big_mushroom.bba");
            vb0 = Platform.Graphics.CreateVertexBuffer (mushMeshAsset0.VertexDeclaration, mushMeshAsset0.VertexData.Length);
            ib0 = Platform.Graphics.CreateIndexBuffer (mushMeshAsset0.IndexData.Length);
            vb0.SetDataEx (mushMeshAsset0.VertexData);
            ib0.SetData (mushMeshAsset0.IndexData);
            var mushMesh0 = new Mesh (vb0, ib0);

            MeshAsset mushMeshAsset1 = this.Engine.Assets.Load<MeshAsset> ("assets/small_mushroom_1.bba");
            vb1 = Platform.Graphics.CreateVertexBuffer (mushMeshAsset1.VertexDeclaration, mushMeshAsset1.VertexData.Length);
            ib1 = Platform.Graphics.CreateIndexBuffer (mushMeshAsset1.IndexData.Length);
            vb1.SetDataEx (mushMeshAsset1.VertexData);
            ib1.SetData (mushMeshAsset1.IndexData);
            var mushMesh1 = new Mesh (vb1, ib1);

            MeshAsset mushMeshAsset2 = this.Engine.Assets.Load<MeshAsset> ("assets/small_mushroom_2.bba");
            vb2 = Platform.Graphics.CreateVertexBuffer (mushMeshAsset2.VertexDeclaration, mushMeshAsset2.VertexData.Length);
            ib2 = Platform.Graphics.CreateIndexBuffer (mushMeshAsset2.IndexData.Length);
            vb2.SetDataEx (mushMeshAsset2.VertexData);
            ib2.SetData (mushMeshAsset2.IndexData);
            var mushMesh2 = new Mesh (vb2, ib2);

            // set up the debug renderer
            ShaderAsset unlitShaderAsset = this.Engine.Assets.Load<ShaderAsset> ("assets/pixel_lit.bba");
            shader = this.Platform.Graphics.CreateShader (unlitShaderAsset);
            TextureAsset woodTexAsset = this.Engine.Assets.Load <TextureAsset> ("assets/toadstool_diffuse.bba");
            woodTex = this.Platform.Graphics.CreateTexture (woodTexAsset);

            mush0 = SceneGraph.CreateSceneObject ("mush0");
            mush0.Transform.LocalPosition = new Vector3 (0f, 0f, 0f);
            mush0.Transform.LocalScale = new Vector3 (1f, 1f, 1f);

            mush1 = SceneGraph.CreateSceneObject ("mush1");
            mush1.Transform.LocalPosition = new Vector3 (0.8f, 0f, 0.8f);
            mush1.Transform.LocalScale = new Vector3 (1f, 1f, 1f);

            mush2 = SceneGraph.CreateSceneObject ("mush2");
            mush2.Transform.LocalPosition = new Vector3 (0.5f, 0f, 0f);
            mush2.Transform.LocalScale = new Vector3 (1f, 1f, 1f);

            var mat = new Material ("Default", shader);
            mat.SetTexture ("TextureSampler", woodTex);

            MeshRendererTrait meshRendererTrait0 = mush0.AddTrait<MeshRendererTrait> ();
            meshRendererTrait0.Material = mat;
            meshRendererTrait0.Mesh = mushMesh0;
            meshRendererTrait0.CullMode = CullMode.None;

            MeshRendererTrait meshRendererTrait1 = mush1.AddTrait<MeshRendererTrait> ();
            meshRendererTrait1.Material = mat;
            meshRendererTrait1.Mesh = mushMesh1;
            meshRendererTrait1.CullMode = CullMode.None;

            MeshRendererTrait meshRendererTrait2 = mush2.AddTrait<MeshRendererTrait> ();
            meshRendererTrait2.Material = mat;
            meshRendererTrait2.Mesh = mushMesh2;
            meshRendererTrait2.CullMode = CullMode.None;

            returnScene = this;

            var t = SceneGraph.CreateSceneObject ("T");
            t.Transform.LocalPosition = new Vector3 (0, 1f, 0);
            Entity camSo = SceneGraph.CreateSceneObject ("Scene X Camera");
            camSo.AddTrait<CameraTrait>();
            var lookatTrait = camSo.AddTrait<LookAtSubjectTrait>();
            lookatTrait.Subject = t.Transform;
            var orbitTrait = camSo.AddTrait<OrbitAroundSubjectTrait>();
            orbitTrait.CameraSubject = Transform.Origin;

            camSo.Transform.LocalPosition = new Vector3(6f,3f,6f);

            this.RuntimeConfiguration.SetRenderPassCameraTo("Debug", camSo);
            this.RuntimeConfiguration.SetRenderPassCameraTo("Default", camSo);

            this.Engine.InputEventSystem.Tap += this.OnTap;
        }
        public override Scene Update(AppTime time)
        {
            this.Engine.DebugRenderer.AddGrid ("Debug", 1f, 10);

            if (Platform.Input.GenericGamepad.Buttons.East == ButtonState.Pressed ||
            Platform.Input.Keyboard.IsFunctionalKeyDown (FunctionalKey.Escape) ||
            Platform.Input.Keyboard.IsFunctionalKeyDown (FunctionalKey.Backspace))
            {
                returnScene = new Scene_MainMenu ();
            }

            return returnScene;
        }
Exemple #11
0
        public override void Start()
        {
            _alternateCamera = this.SceneGraph.CreateSceneObject("Alternate Camera");

            CommonDemoResources.Create (Platform, Engine);

            _alternateCamera.AddTrait<CameraTrait>();

            _alternateCamera.Transform.Position = new Vector3(0.65f, 1f, -2.50f) * 3;
            _alternateCamera.Transform.LookAt(Vector3.Zero);

            _objects = RandomObjectHelper.Generate(this);

            var landmarkGo = this.CreateLandmark();
            _objects.Add(landmarkGo);

            _returnScene = this;

            this.Engine.InputEventSystem.Tap += this.OnTap;
        }
Exemple #12
0
        public static List<Entity> Generate(Scene scene)
        {
            var objects = new List<Entity>();
            var cubeModel = new CubePrimitive(scene.Platform.Graphics);
            var billboardModel = new BillboardPrimitive(scene.Platform.Graphics);
            var teapotModel = new TeapotPrimitive(scene.Platform.Graphics);
            var cylinderModel = new CylinderPrimitive(scene.Platform.Graphics);
            var sphereModel = new SpherePrimitive(scene.Platform.Graphics);
            var torusModel = new TorusPrimitive(scene.Platform.Graphics);

            objects.Add(CreateShapeGO(scene, "Default", cubeModel.Mesh, 2));
            objects.Add(CreateShapeGO(scene, "Default", billboardModel.Mesh));
            objects.Add(CreateShapeGO(scene, "Default", teapotModel.Mesh, 1));
            objects.Add(CreateShapeGO(scene, "Default", cylinderModel.Mesh));
            objects.Add(CreateShapeGO(scene, "Default", sphereModel.Mesh));
            objects.Add(CreateShapeGO(scene, "Default", torusModel.Mesh, 1));
            objects.Add(CreateShapeGO(scene, "Default", torusModel.Mesh, 2));
            objects.Add(CreateShapeGO(scene, "Default", torusModel.Mesh, 0));
            return objects;
        }
Exemple #13
0
        public override void Start()
        {
            this.Configuration.BackgroundColour = Rgba32.DarkSlateGrey;

            TextAsset fntUvAsset = this.Engine.Assets.Load <TextAsset> ("assets/blimey_fnt_uv.bba");
            TextureAsset fntTexAsset = this.Engine.Assets.Load <TextureAsset> ("assets/blimey_fnt_tex.bba");

            fntTex = this.Platform.Graphics.CreateTexture (fntTexAsset);
            sprFnt = new SpriteFont (this.Platform, this.Engine, fntUvAsset, fntTexAsset);

            returnScene = this;

            this.CameraManager.GetRenderPassCamera ("Debug").GetTrait<CameraTrait> ().Projection = CameraProjectionType.Orthographic;
            this.CameraManager.GetRenderPassCamera ("Default").GetTrait<CameraTrait> ().Projection = CameraProjectionType.Orthographic;
            this.CameraManager.GetRenderPassCamera ("Gui").GetTrait<CameraTrait> ().Projection = CameraProjectionType.Orthographic;

            /*

            var newCamSo = this.SceneGraph.CreateSceneObject("ortho");
            newCamSo.Transform.LocalPosition = new Vector3(0, 0, 1);

            var orthoCam = newCamSo.AddTrait<CameraTrait>();
            orthoCam.NearPlaneDistance = 0;
            orthoCam.FarPlaneDistance = 2;
            orthoCam.Projection = CameraProjectionType.Orthographic;
            orthoCam.ortho_width = this.Platform.Status.Width;
            orthoCam.ortho_height = this.Platform.Status.Height;
            orthoCam.ortho_zoom = 8f;

            this.RuntimeConfiguration.SetRenderPassCameraTo("Default", newCamSo);
            this.RuntimeConfiguration.SetRenderPassCameraTo("Gui", newCamSo);
            this.RuntimeConfiguration.SetRenderPassCameraTo("Debug", newCamSo);

            */

            this.Engine.InputEventSystem.Tap += this.OnTap;
        }
        public override void Start()
        {
            CommonDemoResources.Create (Platform, Engine);

            var lines = Engine.Assets.Load <TextAsset> ("assets/airports.bba")
                .Text
                .Split ('\n')
                .ToList ();

            foreach (var line in lines)
            {
                string[] items = line.Split(',');

                if (items.Length == 11)
                {
                    airports.Add(new Airport(items));
                }
            }

            airports.Shuffle ();

            airports = airports.GetRange (0, 250);

            Console.WriteLine("num airports: " + airports.Count);

            this.Configuration.BackgroundColour = Rgba32.Red;

            returnScene = this;

            float radius = 1.5f;
            // create a sprite
            var sphereMesh = new SpherePrimitive(this.Platform.Graphics);

            var mat = new Material("Default",CommonDemoResources.VertexLitShader);
            mat.SetColour("MaterialColour", Rgba32.LightGrey);
            earthGo = this.SceneGraph.CreateSceneObject("earth");

            Entity camSo = SceneGraph.CreateSceneObject ("Scene 5 Camera");
            camSo.AddTrait<CameraTrait>();
            var lookatTrait = camSo.AddTrait<LookAtSubjectTrait>();
            lookatTrait.Subject = Transform.Origin;
            var orbitTrait = camSo.AddTrait<OrbitAroundSubjectTrait>();
            orbitTrait.CameraSubject = Transform.Origin;

            camSo.Transform.LocalPosition = new Vector3(10f,4f,10f);

            this.RuntimeConfiguration.SetRenderPassCameraTo("Debug", camSo);
            this.RuntimeConfiguration.SetRenderPassCameraTo("Default", camSo);

            earthGo.Transform.LocalScale = new Vector3(2 * radius, 2 * radius, 2 * radius);

            var mr = earthGo.AddTrait<MeshRendererTrait>();
            mr.Mesh = sphereMesh.Mesh;
            mr.Material = mat;

            //var mat2 = new Material("Default", CommonDemoResources.UnlitShader);
            //mat2.SetColour("MaterialColour", Rgba32.Blue);

            foreach (var airport in airports)
            {
                var so = this.SceneGraph.CreateSceneObject(airport.Iata);

                so.Transform.Parent = earthGo.Transform;

                var sodr = so.AddTrait<DebugRendererTrait>();
                //sodr.RenderPass = "******";
                sodr.Colour = Rgba32.Blue;
                //var somr = so.AddTrait<MeshRenderer>();
                //somr.Mesh = sphereMesh;
                //somr.Material = mat2;

                var lat = airport.Latitude;
                var lon = airport.Longitude;

                Vector3 pos = new Vector3(
                    radius * Maths.Cos(Maths.ToRadians(lat)),
                    radius * Maths.Sin(Maths.ToRadians(lat)),
                    0f);

                Single t = Maths.ToRadians (lon);

                Matrix44 rot; Matrix44.CreateRotationY(ref t, out rot);

                Vector3 r; Vector3.Transform(ref pos, ref rot, out r);
                so.Transform.Position = r;
                so.Transform.LocalScale = new Vector3(0.015f, 0.015f, 0.015f);

            }

            this.Engine.InputEventSystem.Tap += this.OnTap;
        }
Exemple #15
0
        public override void Start()
        {
            //var meshAsset = Engine.Assets.Load <MeshAsset> ();

            //var vb = Platform.Graphics.CreateVertexBuffer (meshAsset.VertexDeclaration, meshAsset.VertexCount);
            //vb.SetData <REFLECTION> ()

            var ta = Engine.Assets.Load <TextureAsset> ("assets/cvan01.bba");
            tex1 = Platform.Graphics.CreateTexture (ta);
            var tb = Engine.Assets.Load <TextureAsset> ("assets/bg2.bba");
            tex2 = Platform.Graphics.CreateTexture (tb);

            q = new Triple ();
            q.blend = BlendMode.Default;
            q.tex = tex1;
            q.v [0].Colour = Rgba32.Blue;
            q.v [0].Position.X = 0.0f;
            q.v [0].Position.Y = 0.0f;
            q.v [0].UV = new Vector2 (0, 0);
            q.v [1].Colour = Rgba32.Green;
            q.v [1].Position.X = 0.5f;
            q.v [1].Position.Y = 0.5f;
            q.v [1].UV = new Vector2 (1f, 1f);
            q.v [2].Colour = Rgba32.Red;
            q.v [2].Position.X = 0f;
            q.v [2].Position.Y = 0.5f;
            q.v [2].UV = new Vector2 (0, 1f);
            returnScene = this;

            s = new SpritePrimitive (this.Engine.PrimitiveRenderer, tex2, 64, 64, 256, 256);
            s.SetBlendMode (BlendMode.Default);

            var psi = new PrimitiveParticleSystemInfo ();
            psi.sprite = s;
            psi.fLifetime = 3f;
            psi.colColourStart = Rgba32.Red;
            psi.colColourEnd = Rgba32.Yellow;
            psi.nEmission = 10;
            psi.fSpinStart = 0.3f;
            psi.fRadialAccel = 0.1f;
            psi.fSpeed = 3f;
            psi.fSizeVar = 0.1f;

            ps = new PrimitiveParticleSystem (psi);
        }
Exemple #16
0
        public override Scene Update(AppTime time)
        {
            //this.Engine.PrimitiveRenderer.AddTriple ("Debug", q);
            //this.Engine.PrimitiveRenderer.AddTriple ("Gui", q);
            //s.Draw4V ("Gui",
            //    0.0f, 0.0f,
            //    0.5f, 0.0f,
            //    0.0f, 0.5f,
            //    0.5f, 0.5f);

            s.DrawEx ("Gui", 0f, 0f, 0.5f, 1f / 256f / 4f, 1f / 256f / 4f);

            //s.Draw ("Gui", 0f, 0f);
            ps.Fire ();
            ps.Draw ("Default");

            this.Engine.DebugRenderer.AddGrid ("Debug");
            if (Platform.Input.GenericGamepad.Buttons.East == ButtonState.Pressed ||
                Platform.Input.Keyboard.IsFunctionalKeyDown(FunctionalKey.Escape) ||
                Platform.Input.Keyboard.IsFunctionalKeyDown(FunctionalKey.Backspace))
            {
                returnScene = new Scene_MainMenu();
            }

            return returnScene;
        }
        public override void Start()
        {
            var ta = Engine.Assets.Load <TextureAsset> ("assets/blimey_fnt_tex.bba");
            tex = Platform.Graphics.CreateTexture (ta);
            q = new Triple ();
            q.blend = BlendMode.Default;
            q.tex = tex;
            q.v [0].Colour = Rgba32.Blue;
            q.v [0].Position.X = -0.5f;
            q.v [0].Position.Y = 0f;
            q.v [0].UV = new Vector2 (0, 1);
            q.v [1].Colour = Rgba32.Green;
            q.v [1].Position.X = 0f;
            q.v [1].Position.Y = 0.5f;
            q.v [1].UV = new Vector2 (1, 0);
            q.v [2].Colour = Rgba32.Red;
            q.v [2].Position.X = -0.5f;
            q.v [2].Position.Y = 0.5f;
            q.v [2].UV = new Vector2 (0, 0);

            _returnScene = this;

            CommonDemoResources.Create (Platform, Engine);

            this.Configuration.BackgroundColour = _startCol;
            var teaPotModel = new TeapotPrimitive(this.Platform.Graphics);

            var so1 = RandomObjectHelper.CreateShapeGO(this, "Gui", teaPotModel.Mesh, 1);
            var so2 = RandomObjectHelper.CreateShapeGO(this, "Gui", teaPotModel.Mesh, 1);
            var so3 = RandomObjectHelper.CreateShapeGO(this, "Gui", teaPotModel.Mesh, 1);
            var so4 = RandomObjectHelper.CreateShapeGO(this, "Gui", teaPotModel.Mesh, 1);
            var so5 = RandomObjectHelper.CreateShapeGO(this, "Gui", teaPotModel.Mesh, 1);
            var so6 = RandomObjectHelper.CreateShapeGO(this, "Gui", teaPotModel.Mesh, 1);
            var so7 = RandomObjectHelper.CreateShapeGO(this, "Gui", teaPotModel.Mesh, 1);
            var so8 = RandomObjectHelper.CreateShapeGO(this, "Gui", teaPotModel.Mesh, 1);

            so1.Transform.LocalPosition = new Vector3(-0.35f, 0f, 0f);
            so2.Transform.LocalPosition = new Vector3(-0.25f, 0f, 0f);
            so3.Transform.LocalPosition = new Vector3(-0.15f, 0f, 0f);
            so4.Transform.LocalPosition = new Vector3(-0.05f, 0f, 0f);
            so5.Transform.LocalPosition = new Vector3(+0.05f, 0f, 0f);
            so6.Transform.LocalPosition = new Vector3(+0.15f, 0f, 0f);
            so7.Transform.LocalPosition = new Vector3(+0.25f, 0f, 0f);
            so8.Transform.LocalPosition = new Vector3(+0.35f, 0f, 0f);

            _menuItemMaterials.Add(so1.GetTrait<MeshRendererTrait>().Material);
            _menuItemMaterials.Add(so2.GetTrait<MeshRendererTrait>().Material);
            _menuItemMaterials.Add(so3.GetTrait<MeshRendererTrait>().Material);
            _menuItemMaterials.Add(so4.GetTrait<MeshRendererTrait>().Material);
            _menuItemMaterials.Add(so5.GetTrait<MeshRendererTrait>().Material);
            _menuItemMaterials.Add(so6.GetTrait<MeshRendererTrait>().Material);
            _menuItemMaterials.Add(so7.GetTrait<MeshRendererTrait>().Material);
            _menuItemMaterials.Add(so8.GetTrait<MeshRendererTrait>().Material);

            _menuSceneObjects.Add(so1);
            _menuSceneObjects.Add(so2);
            _menuSceneObjects.Add(so3);
            _menuSceneObjects.Add(so4);
            _menuSceneObjects.Add(so5);
            _menuSceneObjects.Add(so6);
            _menuSceneObjects.Add(so7);
            _menuSceneObjects.Add(so8);

            this.Engine.InputEventSystem.Tap += this.OnTap;
            this.Engine.InputEventSystem.Flick += this.OnFlick;
        }
 void OnTap(Gesture gesture)
 {
     _returnScene = GetSceneForCurrentSelection();
 }
Exemple #19
0
 /// <summary>
 /// Initializes a new instance of the <see cref="Blimey.Blimey"/> class.
 /// </summary>
 public App(Scene startScene)
 {
     this.startScene = startScene;
 }
Exemple #20
0
        public override Scene Update(AppTime time)
        {
            if (Platform.Input.GenericGamepad.Buttons.East == ButtonState.Pressed ||
                Platform.Input.Keyboard.IsFunctionalKeyDown(FunctionalKey.Escape) ||
                    Platform.Input.Keyboard.IsFunctionalKeyDown(FunctionalKey.Backspace))
            {
                _returnScene = new Scene_MainMenu();
            }

            this.Engine.DebugRenderer.AddGrid ("Debug");

            this.Engine.DebugRenderer.AddLine(
                "Gui",
                new Vector3(-0.5f, -0.5f, 0),
                new Vector3(0.5f, 0.5f, 0),
                Rgba32.Yellow);

            return _returnScene;
        }
Exemple #21
0
        public static Entity CreateShapeGO(Scene scene, string renderPass,  Mesh modelpart, int shaderIndex = 0)
        {
            // create a game object
            Entity testGO = scene.SceneGraph.CreateSceneObject ("test-" + c++);

            Single scale = RandomGenerator.Default.GetRandomSingle(0.25f, 0.5f);

            // size it
            testGO.Transform.LocalPosition = new Vector3(
                RandomGenerator.Default.GetRandomSingle(-1.28f, 1.28f),
                RandomGenerator.Default.GetRandomSingle(-1.28f, 1.28f),
                RandomGenerator.Default.GetRandomSingle(-1.28f, 1.28f));

            testGO.Transform.LocalScale = new Vector3(scale, scale, scale);
            testGO.AddTrait<RandomLocalRotate>();

            // load a texture
            //Texture tex = null;//scene.Engine.Resources.Load<Texture> (new Uri("\\Textures\\recycle"));

            Shader shader = null;
            if (shaderIndex == 0) shader = CommonDemoResources.PixelLitShader;
            else if (shaderIndex == 1) shader = CommonDemoResources.VertexLitShader;
            else shader = CommonDemoResources.UnlitShader;

            // create a material on the fly
            var mat = new Material(renderPass, shader);
            //mat.SetTexture("_texture", tex);

            // add a mesh renderer
            MeshRendererTrait meshRendererTrait = testGO.AddTrait<MeshRendererTrait> ();

            // set the mesh renderer's material
            meshRendererTrait.Material = mat;

            // and it's model
            meshRendererTrait.Mesh = modelpart;

            testGO.AddTrait<ColourChanger>();

            return testGO;
        }
Exemple #22
0
 internal SceneRuntimeConfiguration(Scene parent)
 {
     this.parent = parent;
 }
Exemple #23
0
 void OnTap(Gesture gesture)
 {
     _returnScene = new Scene_MainMenu();
 }
Exemple #24
0
 public SceneSceneGraph(Scene parent)
 {
     this.parent = parent;
 }
Exemple #25
0
        public override Scene Update(AppTime time)
        {
            if (Platform.Input.GenericGamepad.Buttons.East == ButtonState.Pressed ||
                Platform.Input.Keyboard.IsFunctionalKeyDown(FunctionalKey.Escape) ||
                Platform.Input.Keyboard.IsFunctionalKeyDown(FunctionalKey.Backspace))
            {
                _returnScene = new Scene_MainMenu();
            }

            this.Engine.DebugRenderer.AddGrid ("Debug");

            _timer -= time.Delta;

            if( _timer < 0f )
            {
                _timer = _cameraChangeTime;

                if( _defaultCamIsCurrent )
                {
                    this.RuntimeConfiguration.SetRenderPassCameraTo("Default", _alternateCamera);
                }
                else
                {
                    this.RuntimeConfiguration.SetRenderPassCameraToDefault("Default");
                }

                _defaultCamIsCurrent = !_defaultCamIsCurrent;
            }

            return _returnScene;
        }
Exemple #26
0
        public override Scene Update(AppTime time)
        {
            AppWidth = this.Platform.Status.Width;
            AppHeight = this.Platform.Status.Height;

            bgSprite.DrawEx ("Debug", 0f, 0f, 0.0f, 1f / 100f, 1f / 100f);

            if (timer > 0f)
            {
                timer -= time.Delta;
            }

            if (timer <= 0f)
            {
                if (Platform.Input.GenericGamepad.Buttons.East == ButtonState.Pressed ||
                    Platform.Input.Keyboard.IsFunctionalKeyDown (FunctionalKey.Escape) ||
                    Platform.Input.Keyboard.IsFunctionalKeyDown (FunctionalKey.Backspace))
                {
                    returnScene = new Scene_MainMenu ();
                }

                if (Platform.Input.GenericGamepad.Buttons.North == ButtonState.Pressed ||
                    Platform.Input.Keyboard.IsCharacterKeyDown ('d'))
                {
                    debugLinesOn = !debugLinesOn;
                    hares.ForEach (x => x.EnabledDebugRenderer (debugLinesOn));
                }

                if (Platform.Input.GenericGamepad.Buttons.East == ButtonState.Pressed ||
                    Platform.Input.Keyboard.IsCharacterKeyDown ('b'))
                {
                    hares.ForEach (x => x.NextBlendMode ());
                }

                if (Platform.Input.GenericGamepad.Buttons.South == ButtonState.Pressed ||
                    Platform.Input.Keyboard.IsFunctionalKeyDown (FunctionalKey.Spacebar))
                {
                    ChangeNumHares ();
                }

                timer = 0.2f;
            }

            if (debugLinesOn)
                this.Engine.DebugRenderer.AddGrid ("Debug");

            if (debugLinesOn)
            {
                Single left = -(Single)(AppWidth / 2) * Settings.PixelToWorldSpace;
                Single right = (Single)(AppWidth / 2) * Settings.PixelToWorldSpace;
                Single top = (Single)(AppHeight / 2) * Settings.PixelToWorldSpace;
                Single bottom = -(Single)(AppHeight / 2) * Settings.PixelToWorldSpace;

                this.Engine.DebugRenderer.AddQuad (
                    "Default",
                    new Vector3 (left, bottom, 0),
                    new Vector3 (right, bottom, 0),
                    new Vector3 (right, top, 0),
                    new Vector3 (left, top, 0),
                    Rgba32.Yellow);
            }

            return returnScene;
        }
        void OnTap(Gesture gesture)
        {
            returnScene = new Scene_MainMenu ();

            woodTex.Dispose ();
            // Clean up the things we allocated on the GPU.
            this.Platform.Graphics.DestroyShader (shader);
            shader = null;
        }
Exemple #28
0
        public override Scene Update(AppTime time)
        {
            this.Engine.DebugRenderer.AddGrid ("Debug", 1f, 10);

            timer -= time.Delta;

            if (timer < 0f)
            {
                timer = timeWindow;

                goOut = !goOut;

                if (goOut)
                    x = !x;
            }

            float f = timer / timeWindow;

            if (goOut)
                f = 1f - f;

            f = f * 2f;

            target.Position = new Vector3 (
                x ? f : 0f,
                0,
                x ? 0f : f);

            this.Engine.DebugRenderer.AddLine (
                "Default",
                target.Position,
                target.Position + new Vector3 (0f, 10f, 0f),
                Rgba32.Orange);

            this.Engine.DebugRenderer.AddLine (
                "Default",
                las.Subject.Position,
                new Vector3(cam.Transform.Position.X, 0f, cam.Transform.Position.Z),
                Rgba32.Lime);

            markerGo.Transform.Position = target.Position + new Vector3 (0f, 0.2f, 0f);

            if (Platform.Input.GenericGamepad.Buttons.East == ButtonState.Pressed ||
                Platform.Input.Keyboard.IsFunctionalKeyDown(FunctionalKey.Escape) ||
                    Platform.Input.Keyboard.IsFunctionalKeyDown(FunctionalKey.Backspace))
            {
                returnScene = new Scene_Shapes3();
            }

            return returnScene;
        }
Exemple #29
0
 public Scene_Sprites()
 {
     returnScene = this;
 }
        void OnDoubleTap(Gesture gesture)
        {
            returnScene = new Scene_MainMenu ();

            // Clean up the things we allocated on the GPU.
            this.Platform.Graphics.DestroyShader (shader);
            this.Platform.Graphics.DestroyTexture (tex);
            shader = null;
        }