示例#1
0
        public async ValueTask CreateScene()
        {
            var canvas = await Canvas.GetElementById(
                "game-window"
                );

            var engine = await Engine.NewEngine(
                canvas,
                true
                );

            var scene = await Scene.NewScene(
                engine
                );

            var light0 = await PointLight.NewPointLight(
                "Omni",
                await Vector3.NewVector3(
                    0,
                    100,
                    8
                    ),
                scene
                );

            var light1 = await HemisphericLight.NewHemisphericLight(
                "HemisphericLight",
                await Vector3.NewVector3(
                    0,
                    100,
                    8
                    ),
                scene
                );

            var house = await SceneLoader.ImportMesh(
                null,
                "assets/",
                "House.gltf",
                scene
                );

            var freeCamera = await FreeCamera.NewFreeCamera(
                "FreeCamera",
                await Vector3.NewVector3(
                    0,
                    0,
                    -100
                    ),
                scene
                );

            await freeCamera.set_rotation(await Vector3.NewVector3(
                                              0,
                                              0,
                                              0
                                              ));

            await scene.set_activeCamera(freeCamera);

            await freeCamera.attachControl(
                canvas,
                false
                );

            await engine.runRenderLoop(() => Task.Run(() => scene.render(true, false)));

            _engine = engine;
        }
示例#2
0
        /// <summary>
        /// Creates the scene.
        /// </summary>
        /// <remarks>
        /// This method is called before all
        /// <see cref="T:WaveEngine.Framework.Entity" /> instances in this instance are initialized.
        /// </remarks>
        protected override void CreateScene()
        {
            // Insert your scene definition here.
            #region Simple test

            // Creates a 3D camera
            var camera3D = new FreeCamera("Camera3D", new Vector3(0, 2, 2), Vector3.Zero)
            {
                BackgroundColor = Color.CornflowerBlue
            };
            this.EntityManager.Add(camera3D);

            var kinectService = WaveServices.GetService <KinectService>();
            kinectService.StartSensor(KinectSources.Color | KinectSources.Depth | KinectSources.Body | KinectSources.Face);

            // Draw cubes
            // Color Sensor Cube
            Entity cube = new Entity()
                          .AddComponent(new Transform3D()
            {
                LocalPosition = new Vector3(-1, 0, 0)
            })
                          .AddComponent(Model.CreateCube())
                          .AddComponent(new Spinner()
            {
                AxisTotalIncreases = new Vector3(1, 2, 3) / 10
            })
                          .AddComponent(new MaterialsMap(new BasicMaterial(kinectService.ColorTexture)))
                          .AddComponent(new ModelRenderer());
            this.EntityManager.Add(cube);

            // Depth Sensor Cube
            Entity cube2 = new Entity()
                           .AddComponent(new Transform3D()
            {
                LocalPosition = new Vector3(1, 0, 0)
            })
                           .AddComponent(Model.CreateCube())
                           .AddComponent(new Spinner()
            {
                AxisTotalIncreases = new Vector3(1, 2, 3) / 10
            })
                           .AddComponent(new MaterialsMap(new BasicMaterial(kinectService.DepthTexture)))
                           .AddComponent(new ModelRenderer());
            this.EntityManager.Add(cube2);

            // Create a 2D camera
            var camera2D = new FixedCamera2D("Camera2D")
            {
                ClearFlags = ClearFlags.DepthAndStencil
            };                                                                                        // Transparent background need this clearFlags.
            this.EntityManager.Add(camera2D);

            // Skeleton Control
            Entity skeletonEntity = new Entity()
                                    .AddComponent(new Transform2D())
                                    .AddComponent(new KinectSkeletonsBehavior()
            {
                CurrentSource = KinectSources.Color
            })
                                    .AddComponent(new KinectSkeletonsDrawable());
            this.EntityManager.Add(skeletonEntity);

            // Face control
            Entity faceEntity = new Entity()
                                .AddComponent(new Transform2D())
                                .AddComponent(new KinectFaceBehavior()
            {
                CurrentSource = KinectSources.Color
            })
                                .AddComponent(new KinectFaceDrawable2D());
            this.EntityManager.Add(faceEntity);
            #endregion
        }
示例#3
0
        protected override void LoadContent()
        {
            spriteBatch = new SpriteBatch(GraphicsDevice);
            Random rnd = new Random();
            input = new Input();
            font = Content.Load<SpriteFont>("fonts/font");
            shootEffect = Content.Load<SoundEffect>("sounds/fire");
            mineEffect = Content.Load<SoundEffect>("sounds/bangSmall");
            shipDeadEffect = Content.Load<SoundEffect>("sounds/bangLarge");
            enemyDeadEffect = Content.Load<SoundEffect>("sounds/bangMedium");
            background2 = Content.Load<Song>("sounds/Enter Sandman");

            level = new Level(Content.Load<Map>("maps/" + mapNames[lev]), Content, GraphicsDevice, shootEffect, mineEffect, shipDeadEffect, enemyDeadEffect);

            MediaPlayer.IsRepeating = true;
            //MediaPlayer.Play(background2);
            freeCamera = new FreeCamera(GraphicsDevice, new Vector3(level.Columns / 2, 10, level.Rows / 2), new Vector3(0, 5, 0), Vector3.Up, MathHelper.PiOver4, 0.1f, 1000f);

            Matrix shipWorld = level.ship.World;
            Vector3 look = shipWorld.Forward;
            look.Normalize();

            camera1 = new Camera(GraphicsDevice, shipWorld.Translation + (1.2f * -look) + (0.3f * shipWorld.Up), shipWorld.Translation + shipWorld.Forward, shipWorld.Up, MathHelper.PiOver4, 0.1f, 1000f);
            camera2 = new Camera(GraphicsDevice, shipWorld.Translation + camera2Offset, shipWorld.Translation, Vector3.Up, MathHelper.ToRadians(40), 0.1f, 100f);

            if(drawGrid)
                grid = new Grid(level.Rows, level.Columns, GraphicsDevice);
            if (drawXYZ)
                xyz = new XYZ(level.Rows, level.Columns, GraphicsDevice);
            if (drawPaths)
                paths = new Paths(level.Rows, level.Columns, level.graph.GetLinks(), GraphicsDevice);
            if (drawPath)
                path = new Path(level.getEnemyPath(), GraphicsDevice);
        }
示例#4
0
        public void CreateScene()
        {
            var canvas = Canvas.GetElementById(
                "game-window"
                );
            var engine = new Engine(
                canvas,
                true
                );
            var scene = new Scene(
                engine
                );
            var light0 = new PointLight(
                "Omni",
                new Vector3(
                    0,
                    100,
                    8
                    ),
                scene
                );
            var light1 = new HemisphericLight(
                "HemisphericLight",
                new Vector3(
                    0,
                    100,
                    8
                    ),
                scene
                );
            var house = SceneLoader.ImportMesh(
                null,
                "assets/",
                "House.gltf",
                scene
                );
            var freeCamera = new FreeCamera(
                "FreeCamera",
                new Vector3(
                    0,
                    0,
                    -100
                    ),
                scene
                )
            {
                rotation = new Vector3(
                    0,
                    0,
                    0
                    ),
            };

            scene.activeCamera = freeCamera;
            freeCamera.attachControl(
                false
                );
            engine.runRenderLoop(new ActionCallback(
                                     () => Task.Run(() => scene.render(true, false))
                                     ));

            _engine = engine;
        }
示例#5
0
 /// <inheritdoc />
 public override void Initialize()
 {
     Camera = new FreeCamera(GraphicsDevice.Viewport.AspectRatio, new Vector3(0f, 50f, 400f));
     time   = 0;
     base.Initialize();
 }
        public void CreateScene()
        {
            var canvas = Canvas.GetElementById(
                "game-window"
                );
            var engine = new Engine(
                canvas,
                true
                );
            var scene = new Scene(
                engine
                );
            var light0 = new PointLight(
                "Omni",
                new Vector3(
                    0,
                    100,
                    8
                    ),
                scene
                );
            var light1 = new HemisphericLight(
                "HemisphericLight",
                new Vector3(
                    0,
                    100,
                    8
                    ),
                scene
                );
            var advancedTexture = AdvancedDynamicTexture.CreateFullscreenUI("UI");
            var button          = Button.CreateSimpleButton(
                "button", "Click Me"
                );

            button.width      = "90%";
            button.height     = "90%";
            button.color      = "white";
            button.background = "green";
            button.onPointerClickObservable.add(async(Vector2WithInfo arg1, EventState state) =>
            {
                var x      = arg1.x.ToString();
                var fds    = arg1.buttonIndex;
                var vector = new Vector3(2.1m, 3.2m, 4.1m);
                Console.WriteLine(
                    $"Clicked: {arg1.x}, {arg1.y}"
                    );
                var xx        = vector.getClassName();
                ClickPosition = arg1;
                await InvokeAsync(StateHasChanged);
            });
            advancedTexture.addControl(
                button
                );
            var freeCamera = new FreeCamera(
                "FreeCamera",
                new Vector3(
                    0,
                    0,
                    -100
                    ),
                scene
                )
            {
                rotation = new Vector3(
                    0,
                    0,
                    0
                    ),
            };

            scene.activeCamera = freeCamera;
            freeCamera.attachControl(
                canvas,
                false
                );
            engine.runRenderLoop(() => Task.Run(() => scene.render(true, false)));

            _engine = engine;
        }
示例#7
0
 public SelectCamera(FreeCamera freeCamera, FixedCamera fixedCamera) : base("SelectCameraBehavior")
 {
     this.freeCamera  = freeCamera;
     this.fixedCamera = fixedCamera;
 }
示例#8
0
 /// <summary>
 /// Här drawar Enemy
 /// </summary>
 /// <param name="spriteBatch"></param>
 /// <param name="cam"></param>
 public void Draw(SpriteBatch spriteBatch, FreeCamera cam)
 {
     Enemy.ForEach(x => x.Draw(spriteBatch, cam));
 }
示例#9
0
 public void SetCamera(CameraType cameraType)
 {
     switch (cameraType)
     {
         case CameraType.FreeCamera:
             Camera = new FreeCamera(this, Settings);
             break;
         case CameraType.StaticCamera:
             Camera = new StaticCamera(this, Settings);
             break;
         case CameraType.TestCamera:
             Camera = new TestCamera(this, Settings);
             break;
         default:
             throw new ArgumentOutOfRangeException(SystemResources.InvalidCameraType);
     }
     currentCameraType = cameraType;
     Camera.Initialize();
 }
示例#10
0
        /// <summary>
        /// Allows the game to run logic such as updating the world,
        /// checking for collisions, gathering input, and playing audio.
        /// </summary>
        /// <param name="gameTime">Provides a snapshot of timing values.</param>
        protected override void Update(GameTime gameTime)
        {
            MouseState    mouseState    = Mouse.GetState();
            KeyboardState keyboardState = Keyboard.GetState();

            // Allows the game to exit
            if (keyboardState.IsKeyDown(Keys.Escape))
            {
                this.Exit();
            }

            //Change camera mode
            if (keyboardState.IsKeyDown(Keys.D1))
            {
                CameraMode = ECameraMode.Target;
            }
            if (keyboardState.IsKeyDown(Keys.D2))
            {
                CameraMode = ECameraMode.Free;
            }
            if (keyboardState.IsKeyDown(Keys.D3))
            {
                CameraMode = ECameraMode.ArcBall;
            }
            if (keyboardState.IsKeyDown(Keys.D4))
            {
                CameraMode = ECameraMode.Chase;
            }

            //mouseState
            float deltaX      = (float)LastMouseState.X - (float)mouseState.X;
            float deltaY      = (float)LastMouseState.Y - (float)mouseState.Y;
            float scrollDelta = (float)LastMouseState.ScrollWheelValue - (float)mouseState.ScrollWheelValue;

            //Update camera base on mod and input
            switch (CameraMode)
            {
            case ECameraMode.Free:
                FreeCamera fc = (FreeCamera)Cam;

                //handle camera rotation
                fc.Rotate(deltaX * CAMERA_MOVE_FACTOR, deltaY * CAMERA_MOVE_FACTOR);

                //Handle camera movement
                Vector3 translation = Vector3.Zero;
                if (keyboardState.IsKeyDown(Keys.W))
                {
                    translation += Vector3.Forward;
                }
                if (keyboardState.IsKeyDown(Keys.S))
                {
                    translation += Vector3.Backward;
                }
                if (keyboardState.IsKeyDown(Keys.A))
                {
                    translation += Vector3.Left;
                }
                if (keyboardState.IsKeyDown(Keys.D))
                {
                    translation += Vector3.Right;
                }

                //move 3 units per millisecond
                translation *= 1.5f * (float)gameTime.ElapsedGameTime.TotalMilliseconds;

                fc.Move(translation);

                break;

            case ECameraMode.ArcBall:
                ArcBallCamera abc = (ArcBallCamera)Cam;

                //rotate cam
                abc.Rotate(deltaX * CAMERA_MOVE_FACTOR, deltaY * CAMERA_MOVE_FACTOR);

                //move cam
                abc.Move(scrollDelta);

                break;

            case ECameraMode.Chase:
                ChaseCamera cc   = (ChaseCamera)Cam;
                BasicActor  ship = Actors[1];

                //Handle rotation
                Vector3 rotationChange = Vector3.Zero;
                if (keyboardState.IsKeyDown(Keys.W))
                {
                    rotationChange += new Vector3(-1, 0, 0);
                }
                if (keyboardState.IsKeyDown(Keys.S))
                {
                    rotationChange += new Vector3(1, 0, 0);
                }
                if (keyboardState.IsKeyDown(Keys.A))
                {
                    rotationChange += new Vector3(0, 1, 0);
                }
                if (keyboardState.IsKeyDown(Keys.D))
                {
                    rotationChange += new Vector3(0, -1, 0);
                }

                ship.Rotation += rotationChange * 0.025f;

                //handle movement
                if (keyboardState.IsKeyDown(Keys.Space))
                {
                    Matrix rotation = Matrix.CreateFromYawPitchRoll(ship.Rotation.Y, ship.Rotation.X, ship.Rotation.Z);
                    ship.Position += Vector3.Transform(Vector3.Forward, rotation) * (float)gameTime.ElapsedGameTime.TotalMilliseconds * 4;
                }

                //Update camera
                cc.Move(ship.Position, ship.Rotation);

                break;
            }

            //Update camera
            Cam.Update();


            LastMouseState = mouseState;

            base.Update(gameTime);
        }
 void Start()
 {
     freecam = GameObject.FindGameObjectWithTag("Helper").GetComponent <FreeCamera>();
 }
示例#12
0
        protected override void CreateScene()
        {
            WaveServices.ScreenLayers.SetDiagnosticsActive(true);
            //RenderManager.DebugLines = true;

            RenderManager.BackgroundColor = Color.CornflowerBlue;

            //Create the camera
            FreeCamera camera = new FreeCamera("freeCamera", new Vector3(42.60071f, 10.3373f, -45.83459f), new Vector3(41.77419f, 10.37616f, -45.27303f))
            {
                Speed = 10
            };

            //Add some light!
            PointLight light = new PointLight("light", Vector3.Zero)
            {
                Position    = new Vector3(0, 5, 0),
                Attenuation = 750,
                Color       = new Color(1, 0.6f, 0.4f),
                IsVisible   = true
            };

            EntityManager.Add(light);
            EntityManager.Add(camera);

            Material columnMaterialA = new NormalMappingMaterial("Content/column1.wpk", "Content/column1_normal_spec.wpk")
            {
                AmbientColor = Color.White * 0.3f
            };
            Material columnMaterialB = new NormalMappingMaterial("Content/column2.wpk", "Content/column2_normal_spec.wpk")
            {
                AmbientColor = Color.White * 0.3f
            };

            bool  isStatic      = true;
            float columnSpacing = 8;
            int   nCols         = 10;
            int   nColumns      = 0;

            for (int i = 0; i < 2; i++)
            {
                for (int j = 0; j < nCols; j++)
                {
                    Entity column = new Entity("column_" + nColumns++)
                    {
                        IsStatic = isStatic
                    }
                    .AddComponent(new Transform3D()
                    {
                        Position = new Vector3(-j * columnSpacing, 0, (i - 1) * columnSpacing),
                        Rotation = new Vector3(0, (WaveServices.Random.NextInt() % 4) * MathHelper.PiOver4, 0)
                    })
                    .AddComponent(new ModelRenderer())
                    .AddComponent(new Model("Content/mainColumn.wpk"))
                    .AddComponent(new MaterialsMap(columnMaterialB));

                    EntityManager.Add(column);
                }
            }

            for (int i = 0; i < 3; i++)
            {
                for (int j = 0; j < nCols; j++)
                {
                    Entity column = new Entity("column_" + nColumns++)
                    {
                        IsStatic = isStatic
                    }
                    .AddComponent(new Transform3D()
                    {
                        Position = new Vector3(-j * columnSpacing, 0, (i - 4) * columnSpacing),
                        Rotation = new Vector3(0, (WaveServices.Random.NextInt() % 4) * MathHelper.PiOver2, 0)
                    })
                    .AddComponent(new ModelRenderer())
                    .AddComponent(new Model("Content/column.wpk"))
                    .AddComponent(new MaterialsMap(columnMaterialA));

                    EntityManager.Add(column);
                }
            }

            for (int i = 0; i < 3; i++)
            {
                for (int j = 0; j < nCols; j++)
                {
                    Entity column = new Entity("column_" + nColumns++)
                    {
                        IsStatic = isStatic
                    }
                    .AddComponent(new Transform3D()
                    {
                        Position = new Vector3(-j * columnSpacing, 0, (i + 1) * columnSpacing)
                    })
                    .AddComponent(new ModelRenderer())
                    .AddComponent(new Model("Content/column.wpk"))
                    .AddComponent(new MaterialsMap(columnMaterialA));

                    EntityManager.Add(column);
                }
            }
        }
示例#13
0
    private MovementManager getMovementFor(Train train, bool isLocalTrain, NetworkTrainPlayer networkPlayer, GuiPlayersPointsElement playersPoints, NetworkEntityPlaying network)
    {
        float     rotationSpeed    = train.RotationSpeed;
        float     translationSpeed = train.TranslationSpeed * GameMapSizeFactor.GetFactorForCurrentMapRelativeToFirstMap();
        int       maxPassengers    = train.MaxPassengers;
        Transform mover            = train.transform.parent ?? train.transform;

        TransformOperations.To(mover).SetRotationTo(FirstStation.transform.position);

        Route route = new Route();

        route.Add(null);
        route.Add(FirstStation);

        if (isLocalTrain)
        {
            FirstStation.StartHighlight();
        }

        Player player = networkPlayer == null?PlayerFactory.CreateLocal(train) : networkPlayer;

        TrainPassengersLimit trainPassengersLimit = TrainPassengersLimitFactory.Get(TrainPassengersLimitType);

        trainPassengersLimit.SetLimit(maxPassengers);
        TrainPassengers passengers = new TrainPassengers(trainPassengersLimit, player);

        TimeCounter timeCounter = new TimeCounter();

        timeCounters.Add(timeCounter);

        CurrentPoints points = new CurrentPoints(CurrentMap.GetCurrentMap(), passengers, timeCounter);

        playersPoints.AddPoints(player, points);

        GuiButtonRendererControl backToMenuButton  = null;
        GuiButtonRendererControl showRankingButton = null;

        Movement firstMovement, normalMovement, goOutMovement;

        if (isLocalTrain)
        {
            Camera  camera       = Camera.main;
            Vector3 cameraOffset = -(mover.position - camera.transform.position);

            firstMovement = new ParallelMovement()
                            .AddMovement(new TranslationMovement(mover, translationSpeed, TranslationStartStepType, TERRESTRIAL))
                            .AddMovement(new TranslationMovement(camera.transform, translationSpeed, TranslationStartStepType, TERRESTRIAL, cameraOffset));
            //firstMovement.Update(FirstStation.transform.position);

            normalMovement = new SequentialMovement()
                             .AddMovement(new RotationMovement(mover, rotationSpeed, RotationDefaultStepType, TERRESTRIAL))
                             .AddMovement(new ParallelMovement()
                                          .AddMovement(new TranslationMovement(mover, translationSpeed, TranslationDefaultStepType, TERRESTRIAL))
                                          .AddMovement(new TranslationMovement(camera.transform, translationSpeed, TranslationDefaultStepType, TERRESTRIAL, cameraOffset)));

            goOutMovement = new SequentialMovement()
                            .AddMovement(new RotationMovement(mover, rotationSpeed, RotationDefaultStepType, TERRESTRIAL))
                            .AddMovement(new TranslationMovement(mover, translationSpeed, TranslationDefaultStepType, TERRESTRIAL));

            MapCamera     trainCamera   = new TrainCamera(Camera.main);
            MapCamera     freeCamera    = new FreeCamera(Camera.main);
            CameraManager cameraManager = new CameraManager(trainCamera);

            backToMenuButton  = new GuiButtonRendererControl(() => Application.LoadLevel(SceneNames.MENU));
            showRankingButton = new GuiButtonRendererControl(() => SocialManager.ForegroundActions.ShowLeaderboard(CurrentMap.GetCurrentMap()));
            GuiButtonRendererControl setTrainCameraButton = new GuiButtonRendererControl(() => cameraManager.SetCamera(trainCamera));
            GuiButtonRendererControl setFreeCameraButton  = new GuiButtonRendererControl(() => cameraManager.SetCamera(freeCamera));

            gui.AddElement(new GuiHudElement(passengers, timeCounter));
            gui.AddElement(GuiElementFactory.GetSwitchCameraElement("Train\nCam", GuiPosition.DOWN_LEFT, setTrainCameraButton));
            gui.AddElement(GuiElementFactory.GetSwitchCameraElement("Free\nCam", GuiPosition.DOWN_RIGHT, setFreeCameraButton));

            input.AddLocal(route, cameraManager);
            input.AddButtons(backToMenuButton, showRankingButton, setTrainCameraButton, setFreeCameraButton);
        }
        else
        {
            firstMovement = new TranslationMovement(mover, translationSpeed, TranslationStartStepType, TERRESTRIAL);
            //firstMovement.Update(FirstStation.transform.position);

            goOutMovement = normalMovement = new SequentialMovement()
                                             .AddMovement(new RotationMovement(mover, rotationSpeed, RotationDefaultStepType, TERRESTRIAL))
                                             .AddMovement(new TranslationMovement(mover, translationSpeed, TranslationDefaultStepType, TERRESTRIAL));

            networkPlayer.SetRoute(route);
        }

        return(new MovementManager(FirstStation, LastStation, route, firstMovement, normalMovement, goOutMovement, passengers, timeCounter, points, gui, backToMenuButton, showRankingButton, isLocalTrain, playersPoints, network));
    }
示例#14
0
        /// <summary>
        /// Load content here.
        /// </summary>
        protected override void LoadContent()
        {
            // Load our teapot and ground models.
            Model teapotModel = Game.Content.Load<Model>("Model\\teapot");
            Model groundModel = Game.Content.Load<Model>("Model\\ground");
            Texture2D bricks = Game.Content.Load<Texture2D>("Texture\\brick");
            Texture2D checkers = Game.Content.Load<Texture2D>("Texture\\checker");

            mEffect = Game.Content.Load<Effect>("Effect\\Model");
            mEffect.Parameters["t_Basic"].SetValue(bricks);
            mEffect.Parameters["TextureEnabled"].SetValue(true);

            mCamera = new FreeCamera("Main", MathHelper.PiOver4,
                                     this.GraphicsDevice.Viewport.AspectRatio,
                                     new Vector3(1000f, 650f, 1000f),
                                     MathHelper.ToRadians(-50f), MathHelper.ToRadians(-5f));

            ModelInstance teapot = new ModelInstance(teapotModel, Vector3.Zero, Vector3.Zero, new Vector3(60f));
            teapot.SetModelMaterial(new Material());
            teapot.SetModelEffect(mEffect, true);
            teapot.SetSingleParameter("t_Basic", bricks);
            teapot.SetSingleParameter("TextureEnabled", true);

            ModelInstance ground = new ModelInstance(groundModel, Vector3.Zero, Vector3.Zero, Vector3.One);
            ground.SetModelMaterial(new Material());
            ground.SetModelEffect(mEffect, true);

            // Create a single teapot and just one instance of the ground model.
            mModels.Add(teapot);
            mModels.Add(ground);

            foreach (ModelInstance modelInstance in mModels) { modelInstance.SetModelEffect(mEffect, true); }

            mRenderer = new PrePassRenderer(this.Game, this.GraphicsDevice, this.Game.Content);

            mLights.Add(new PrePointLight(new Vector3(-1000, 1000, 0), Color.Red, 1500));
            mLights.Add(new PrePointLight(new Vector3(1000, 1000, 0), Color.Orange, 1500));
            mLights.Add(new PrePointLight(new Vector3(0, 1000, 1000), Color.Yellow, 1500));
            mLights.Add(new PrePointLight(new Vector3(0, 1000, -1000), Color.Green, 1500));
            mLights.Add(new PrePointLight(new Vector3(1000, 1000, 1000), Color.Blue, 1500));
            mLights.Add(new PrePointLight(new Vector3(-1000, 1000, 1000), Color.Indigo, 1500));
            mLights.Add(new PrePointLight(new Vector3(1000, 1000, -1000), Color.Violet, 1500));
            mLights.Add(new PrePointLight(new Vector3(-1000, 1000, -1000), Color.White, 1500));

            // Input.
            mCamera.Update();

            mX = -MathHelper.Pi / 10f;
            mY = MathHelper.PiOver2;

            Mouse.SetPosition(this.GraphicsDevice.Viewport.Width / 2,
                              this.GraphicsDevice.Viewport.Height / 2);
            mPrevMouse = Mouse.GetState();

            base.LoadContent();
        }
示例#15
0
        public async Task CreateScene()
        {
            var canvas = await Canvas.GetElementById(
                "game-window"
                );

            var engine = await Engine.NewEngine(
                canvas,
                true
                );

            var scene = await Scene.NewScene(
                engine
                );

            var light0 = await PointLight.NewPointLight(
                "Omni",
                await Vector3.NewVector3(
                    0,
                    100,
                    8
                    ),
                scene
                );

            var light1 = await HemisphericLight.NewHemisphericLight(
                "HemisphericLight",
                await Vector3.NewVector3(0, 100, 8),
                scene
                );

            var advancedTexture = await AdvancedDynamicTexture.CreateFullscreenUI("UI");

            var button = await Button.CreateSimpleButton(
                "button", "Click Me"
                );

            await button.set_width("90%");

            await button.set_height("90%");

            await button.set_color("white");

            await button.set_background("green");

            await(await button.get_onPointerClickObservable()).add(async(Vector2WithInfo arg1, EventState state) =>
            {
                var x      = (await arg1.get_x()).ToString();
                var fds    = await arg1.get_buttonIndex();
                var vector = await Vector3.NewVector3(2.1m, 3.2m, 4.1m);
                //Console.WriteLine(
                //    $"Clicked: {await arg1.get_x()}, {await arg1.get_y()}"
                //);
                var xx          = await vector.getClassName();
                ClickPosition   = arg1;
                ClickPosition_X = await ClickPosition.get_x();
                ClickPosition_Y = await ClickPosition.get_y();
                await InvokeAsync(StateHasChanged);
                //Console.WriteLine("Clicked: ");
            });
            await advancedTexture.addControl(
                button
                );

            var freeCamera = await FreeCamera.NewFreeCamera(
                "FreeCamera",
                await Vector3.NewVector3(
                    0,
                    0,
                    -100
                    ),
                scene
                );

            await freeCamera.set_rotation(
                await Vector3.NewVector3(
                    0,
                    0,
                    0
                    )
                );

            await scene.set_activeCamera(freeCamera);

            await freeCamera.attachControl(false);

            await engine.runRenderLoop(new ActionCallback(() => Task.Run(() => scene.render(true, false))));

            _engine = engine;

            await Canvas.RemoveBlur(
                "game-window"
                );
        }
示例#16
0
 public void Draw(SpriteBatch spriteBatch, FreeCamera cam)
 {
     model.Draw(cam.View, cam.Projection, cam.Position);
 }
示例#17
0
        protected override void CreateScene()
        {
            FreeCamera camera = new FreeCamera("camera", new Vector3(-3.8f, 2.2f, 5.6f), new Vector3(0, 0.8f, 2.2f))
            {
                Speed     = 5,
                NearPlane = 0.1f
            };

            EntityManager.Add(camera);

            this.Video1 = WaveServices.VideoPlayer.VideoInfoFromPath("Content/Video/bunny.mp4");
            this.Video2 = WaveServices.VideoPlayer.VideoInfoFromPath("Content/Video/bear.mp4");

            WaveServices.VideoPlayer.IsLooped = true;
            WaveServices.VideoPlayer.Play(this.Video1);

            Entity tvRoomEntity = new Entity("tvRoom")
                                  .AddComponent(new Transform3D())
                                  .AddComponent(new Model("Content/TvRoom.wpk"))
                                  .AddComponent(new ModelRenderer())
                                  .AddComponent(new MaterialsMap(new System.Collections.Generic.Dictionary <string, Material>
            {
                { "floor", new DualTextureMaterial("Content/parketFloor_Diffuse.wpk", "Content/TvRoomLightingMap.wpk", DefaultLayers.Opaque) },
                { "tv", new DualTextureMaterial("Content/Tv_Diffuse.wpk", "Content/TvRoomLightingMap.wpk", DefaultLayers.Opaque) },
                { "table", new DualTextureMaterial("Content/table_Diffuse.wpk", "Content/TvRoomLightingMap.wpk", DefaultLayers.Opaque) },
                { "chair", new DualTextureMaterial("Content/Chair_Diffuse.wpk", "Content/TvRoomLightingMap.wpk", DefaultLayers.Opaque) },
                { "tv_screen", new BasicMaterial(WaveServices.VideoPlayer.VideoTexture) }
            }
                                                                 ));

            EntityManager.Add(tvRoomEntity);

            StackPanel controlPanel = new StackPanel()
            {
                VerticalAlignment   = WaveEngine.Framework.UI.VerticalAlignment.Bottom,
                HorizontalAlignment = WaveEngine.Framework.UI.HorizontalAlignment.Right,
                Margin      = new WaveEngine.Framework.UI.Thickness(0, 0, 30, 30),
                BorderColor = Color.White,
                IsBorder    = true,
            };

            ToggleSwitch muteToggle = new ToggleSwitch()
            {
                OnText  = "Mute",
                OffText = "Mute",
                Margin  = new WaveEngine.Framework.UI.Thickness(5, 5, 5, 10)
            };

            muteToggle.Toggled += (e, s) =>
            {
                WaveServices.VideoPlayer.IsMuted = muteToggle.IsOn;
            };

            controlPanel.Add(muteToggle);

            RadioButton radioButton1 = new RadioButton()
            {
                GroupName = "Videos",
                Text      = "Channel 1",
                Margin    = new WaveEngine.Framework.UI.Thickness(5, 0, 5, 0),
                IsChecked = true
            };

            radioButton1.Checked += (e, s) =>
            {
                WaveServices.VideoPlayer.Play(this.Video1);
            };
            controlPanel.Add(radioButton1);

            RadioButton radioButton2 = new RadioButton()
            {
                GroupName = "Videos",
                Text      = "Channel 2",
                Margin    = new WaveEngine.Framework.UI.Thickness(5, 0, 5, 10)
            };

            radioButton2.Checked += (e, s) =>
            {
                WaveServices.VideoPlayer.Play(this.Video2);
            };
            controlPanel.Add(radioButton2);

            PlayBtn = new Button("playBtn")
            {
                Text    = "Play",
                Opacity = 0.5f,
                Margin  = new WaveEngine.Framework.UI.Thickness(5, 0, 5, 0),
                Width   = 170
            };

            PlayBtn.Click += (e, s) =>
            {
                WaveServices.VideoPlayer.Resume();
                PlayBtn.Opacity  = 0.5f;
                PauseBtn.Opacity = 1f;
            };

            controlPanel.Add(PlayBtn);

            PauseBtn = new Button("pauseBtn")
            {
                Text   = "Pause",
                Width  = 170,
                Margin = new WaveEngine.Framework.UI.Thickness(5, 0, 5, 5),
            };

            PauseBtn.Click += (e, s) =>
            {
                WaveServices.VideoPlayer.Pause();
                PlayBtn.Opacity  = 1f;
                PauseBtn.Opacity = 0.5f;
            };

            controlPanel.Add(PauseBtn);

            EntityManager.Add(controlPanel);
        }
 private void Awake()
 {
     _freeCam = GetComponent <FreeCamera>();
     _zCam    = GetComponent <TargetingCamera>();
     _fCam    = GetComponent <FirstPersonCamera>();
 }
示例#19
0
 // Update is called once per frame
 private void Start()
 {
     _freeCamera = GetComponent <FreeCamera>();
 }
示例#20
0
    private MovementManager getMovementFor(Train train, bool isLocalTrain, NetworkTrainPlayer networkPlayer, GuiPlayersPointsElement playersPoints, NetworkEntityPlaying network)
    {
        float rotationSpeed = train.RotationSpeed;
        float translationSpeed = train.TranslationSpeed * GameMapSizeFactor.GetFactorForCurrentMapRelativeToFirstMap();
        int maxPassengers = train.MaxPassengers;
        Transform mover = train.transform.parent ?? train.transform;

        TransformOperations.To(mover).SetRotationTo(FirstStation.transform.position);

        Route route = new Route();
        route.Add(null);
        route.Add(FirstStation);

        if (isLocalTrain) {
            FirstStation.StartHighlight();
        }

        Player player = networkPlayer == null ? PlayerFactory.CreateLocal(train) : networkPlayer;

        TrainPassengersLimit trainPassengersLimit = TrainPassengersLimitFactory.Get(TrainPassengersLimitType);
        trainPassengersLimit.SetLimit(maxPassengers);
        TrainPassengers passengers = new TrainPassengers(trainPassengersLimit, player);

        TimeCounter timeCounter = new TimeCounter();
        timeCounters.Add(timeCounter);

        CurrentPoints points = new CurrentPoints(CurrentMap.GetCurrentMap(), passengers, timeCounter);
        playersPoints.AddPoints(player, points);

        GuiButtonRendererControl backToMenuButton = null;
        GuiButtonRendererControl showRankingButton = null;

        Movement firstMovement, normalMovement, goOutMovement;
        if (isLocalTrain) {
            Camera camera = Camera.main;
            Vector3 cameraOffset = -(mover.position - camera.transform.position);

            firstMovement = new ParallelMovement()
                .AddMovement(new TranslationMovement(mover, translationSpeed, TranslationStartStepType, TERRESTRIAL))
                .AddMovement(new TranslationMovement(camera.transform, translationSpeed, TranslationStartStepType, TERRESTRIAL, cameraOffset));
            //firstMovement.Update(FirstStation.transform.position);

            normalMovement = new SequentialMovement()
                .AddMovement(new RotationMovement(mover, rotationSpeed, RotationDefaultStepType, TERRESTRIAL))
                .AddMovement(new ParallelMovement()
                    .AddMovement(new TranslationMovement(mover, translationSpeed, TranslationDefaultStepType, TERRESTRIAL))
                    .AddMovement(new TranslationMovement(camera.transform, translationSpeed, TranslationDefaultStepType, TERRESTRIAL, cameraOffset)));

            goOutMovement = new SequentialMovement()
                .AddMovement(new RotationMovement(mover, rotationSpeed, RotationDefaultStepType, TERRESTRIAL))
                .AddMovement(new TranslationMovement(mover, translationSpeed, TranslationDefaultStepType, TERRESTRIAL));

            MapCamera trainCamera = new TrainCamera(Camera.main);
            MapCamera freeCamera = new FreeCamera(Camera.main);
            CameraManager cameraManager = new CameraManager(trainCamera);

            backToMenuButton = new GuiButtonRendererControl(() => Application.LoadLevel(SceneNames.MENU));
            showRankingButton = new GuiButtonRendererControl(() => SocialManager.ForegroundActions.ShowLeaderboard(CurrentMap.GetCurrentMap()));
            GuiButtonRendererControl setTrainCameraButton = new GuiButtonRendererControl(() => cameraManager.SetCamera(trainCamera));
            GuiButtonRendererControl setFreeCameraButton = new GuiButtonRendererControl(() => cameraManager.SetCamera(freeCamera));

            gui.AddElement(new GuiHudElement(passengers, timeCounter));
            gui.AddElement(GuiElementFactory.GetSwitchCameraElement("Train\nCam", GuiPosition.DOWN_LEFT, setTrainCameraButton));
            gui.AddElement(GuiElementFactory.GetSwitchCameraElement("Free\nCam", GuiPosition.DOWN_RIGHT, setFreeCameraButton));

            input.AddLocal(route, cameraManager);
            input.AddButtons(backToMenuButton, showRankingButton, setTrainCameraButton, setFreeCameraButton);
        } else {
            firstMovement = new TranslationMovement(mover, translationSpeed, TranslationStartStepType, TERRESTRIAL);
            //firstMovement.Update(FirstStation.transform.position);

            goOutMovement = normalMovement = new SequentialMovement()
                .AddMovement(new RotationMovement(mover, rotationSpeed, RotationDefaultStepType, TERRESTRIAL))
                .AddMovement(new TranslationMovement(mover, translationSpeed, TranslationDefaultStepType, TERRESTRIAL));

            networkPlayer.SetRoute(route);
        }

        return new MovementManager(FirstStation, LastStation, route, firstMovement, normalMovement, goOutMovement, passengers, timeCounter, points, gui, backToMenuButton, showRankingButton, isLocalTrain, playersPoints, network);
    }
示例#21
0
        protected override void CreateScene()
        {
            FreeCamera camera = new FreeCamera("MainCamera", new Vector3(0, 4, 12), new Vector3(0, 4, 0))
            {
                Speed           = 5,
                BackgroundColor = Color.Black,
            };

            EntityManager.Add(camera.Entity);

            PointLight Light0 = new PointLight("Light0", new Vector3(-5, 8, 10))
            {
                Color       = Color.White,
                Attenuation = 20,
            };

            Light0.Entity.AddComponent(new MoveBehavior()
            {
                Speed = 0.2f
            });

            EntityManager.Add(Light0.Entity);

            float value = 0.0f;
            Color c     = new Color(value, value, value, 1);

            Entity cubeModel = new Entity("Cube")
                               .AddComponent(new Transform3D()
            {
                Scale = new Vector3(6)
            })
                               //.AddComponent(new Spinner() { IncreaseY = 0.02f })
                               .AddComponent(new BoxCollider())
                               .AddComponent(new Model("Content/Cube.wpk"))
                               .AddComponent(new MaterialsMap(new NormalMappingMaterial("Content/floor.wpk", "Content/floor_normal_spec.wpk", "Content/lightmap.wpk")
            {
                AmbientColor = c
            }))                                                                                                                                                                // "Content/lightmap.wpk"
                               .AddComponent(new ModelRenderer());

            EntityManager.Add(cubeModel);

            #region UI
            Slider slider1 = new Slider()
            {
                Margin  = new Thickness(10, 90, 0, 0),
                Width   = 500,
                Minimum = 4,
                Maximum = 40,
                Value   = 30
            };

            slider1.RealTimeValueChanged += (s, e) =>
            {
                var entity    = EntityManager.Find("Light0");
                var component = entity.FindComponent <PointLightProperties>();
                component.Attenuation = e.NewValue;
            };

            EntityManager.Add(slider1);

            Slider slider2 = new Slider()
            {
                Margin  = new Thickness(10, 140, 0, 0),
                Width   = 500,
                Minimum = 1,
                Maximum = 100
            };

            slider2.RealTimeValueChanged += (s, e) =>
            {
                var entity    = EntityManager.Find("Cube");
                var component = entity.FindComponent <MaterialsMap>();
                var material  = (component.DefaultMaterial as NormalMappingMaterial);

                float v  = (float)e.NewValue / 100.0f;
                Color c1 = new Color(v, v, v, 1);
                material.AmbientColor = c1;
            };

            EntityManager.Add(slider2);

            ToggleSwitch lightmapEnabled = new ToggleSwitch()
            {
                Margin  = new Thickness(10, 10, 0, 0),
                IsOn    = true,
                OnText  = "LightMap On",
                OffText = "LightMap Off",
            };

            lightmapEnabled.Toggled += (s, e) =>
            {
                var entity    = EntityManager.Find("Cube");
                var component = entity.FindComponent <MaterialsMap>();
                var material  = (component.DefaultMaterial as NormalMappingMaterial);
                material.LightMapEnabled = !material.LightMapEnabled;
            };

            EntityManager.Add(lightmapEnabled);

            ToggleSwitch textureEnabled = new ToggleSwitch()
            {
                Margin  = new Thickness(10, 40, 0, 0),
                IsOn    = true,
                OnText  = "Texture On",
                OffText = "Texture Off"
            };

            textureEnabled.Toggled += (s, o) =>
            {
                var entity    = EntityManager.Find("Cube");
                var component = entity.FindComponent <MaterialsMap>();
                var material  = (component.DefaultMaterial as NormalMappingMaterial);
                material.TextureEnabled = !material.TextureEnabled;
            };

            EntityManager.Add(textureEnabled);

            ToggleSwitch normalMapEnabled = new ToggleSwitch()
            {
                Margin  = new Thickness(300, 10, 0, 0),
                IsOn    = true,
                OnText  = "NormalMap On",
                OffText = "NormalMap Off"
            };

            normalMapEnabled.Toggled += (s, o) =>
            {
                var entity    = EntityManager.Find("Cube");
                var component = entity.FindComponent <MaterialsMap>();
                var material  = (component.DefaultMaterial as NormalMappingMaterial);
                material.NormalMappingEnabled = !material.NormalMappingEnabled;
            };

            EntityManager.Add(normalMapEnabled);
            #endregion
        }
示例#22
0
        protected override void CreateScene()
        {
            FreeCamera camera = new FreeCamera("camera", new Vector3(-1.3f, 1.6f, 2.5f), new Vector3(-0.25f, 1.375f, 1.275f))
            {
                Speed     = 5,
                NearPlane = 0.1f
            };

            EntityManager.Add(camera);

            this.TvRoomEntity = new Entity("tvRoom")
                                .AddComponent(new Transform3D())
                                .AddComponent(new Model("Content/TvRoom.wpk"))
                                .AddComponent(new ModelRenderer())
                                .AddComponent(new MaterialsMap(new System.Collections.Generic.Dictionary <string, Material>
            {
                { "floor", new DualTextureMaterial("Content/parketFloor_Diffuse.wpk", "Content/TvRoomLightingMap.wpk", DefaultLayers.Opaque) },
                { "tv", new DualTextureMaterial("Content/Tv_Diffuse.wpk", "Content/TvRoomLightingMap.wpk", DefaultLayers.Opaque) },
                { "table", new DualTextureMaterial("Content/table_Diffuse.wpk", "Content/TvRoomLightingMap.wpk", DefaultLayers.Opaque) },
                { "chair", new DualTextureMaterial("Content/Chair_Diffuse.wpk", "Content/TvRoomLightingMap.wpk", DefaultLayers.Opaque) },

                // Camera preview texture used in a basic material
                { "tv_screen", new BasicMaterial(Color.Black) }
            }
                                                               ));

            EntityManager.Add(this.TvRoomEntity);

            if (WaveServices.CameraCapture.IsConnected)
            {
                StackPanel controlPanel = new StackPanel()
                {
                    VerticalAlignment   = WaveEngine.Framework.UI.VerticalAlignment.Bottom,
                    HorizontalAlignment = WaveEngine.Framework.UI.HorizontalAlignment.Right,
                    Margin      = new WaveEngine.Framework.UI.Thickness(0, 0, 30, 30),
                    BorderColor = Color.White,
                    IsBorder    = true,
                };

                this.RecBtn = new Button("RecBtn")
                {
                    Text   = "Start Rec",
                    Margin = new WaveEngine.Framework.UI.Thickness(5, 5, 5, 0),
                    Width  = 170
                };

                controlPanel.Add(this.RecBtn);

                this.PlayRecordedBtn = new Button("PlayRecordedBtn")
                {
                    Text    = "Play",
                    Width   = 170,
                    Margin  = new WaveEngine.Framework.UI.Thickness(5, 0, 5, 5),
                    Opacity = 0.5f
                };

                controlPanel.Add(this.PlayRecordedBtn);

                this.RecBtn.Click += (e, s) =>
                {
                    if (!this.isRecording)
                    {
                        this.StartRecording();
                    }
                    else
                    {
                        this.StopRecording();
                    }
                };

                this.PlayRecordedBtn.Click += (e, s) =>
                {
                    if (!this.isVideoPlaying)
                    {
                        this.PlayVideo();
                    }
                    else
                    {
                        this.StopVideo();
                    }
                };

                EntityManager.Add(controlPanel);
            }
            else
            {
                TextBlock text = new TextBlock()
                {
                    Text                = "There is no connected camera",
                    Width               = 300,
                    VerticalAlignment   = WaveEngine.Framework.UI.VerticalAlignment.Bottom,
                    HorizontalAlignment = WaveEngine.Framework.UI.HorizontalAlignment.Right,
                    Margin              = new WaveEngine.Framework.UI.Thickness(0, 0, 30, 30)
                };

                EntityManager.Add(text);
            }
        }
示例#23
0
 public void AsyRAMG(int z_cam, FreeCamera Camera)
 {
 }
示例#24
0
 /// <summary>
 /// Rulare inainte de start
 /// </summary>
 void Awake()
 {
     playPause   = GameObject.Find("Buttons/UtilityButtons/PlayPause").GetComponent <Button>();
     utilButtons = GameObject.Find("Buttons/UtilityButtons").GetComponent <UitilityButtons>();
     freeCamera  = GameObject.Find("/Main Camera").GetComponent <FreeCamera>();
 }
示例#25
0
        public override void LoadContent()
        {
            //colors for debug
            rndColors = new Color[20];

            for (int i = 0; i < 20; i++)
            {
                rndColors[i] = new Color((float)RandomManager.TheRandom.NextDouble(), (float)RandomManager.TheRandom.NextDouble(), (float)RandomManager.TheRandom.NextDouble());
            }

            //Content manager
            if (Content == null)
            {
                Content = new ContentManager(ScreenManager.Game.Services, "Content");
                screenContentManager = new ScreenContentManager(Content);
            }


            DebugDrawer = new DebugDrawer(ScreenManager.Game, this);
            ScreenManager.Game.Components.Add(DebugDrawer);

            //Load models
            screenContentManager.AddModel("ground", @"Models\Ground");
            screenContentManager.AddModel("ship", @"Models\ship");
            screenContentManager.AddModel("teapot", @"Models\teapot");

            //Set graphics
            graphics                   = ScreenManager.GraphicsDevice;
            graphics.BlendState        = BlendState.Opaque;
            graphics.DepthStencilState = DepthStencilState.Default;

            //Load fonts
            screenContentManager.AddFont("kootenay14", @"Fonts\kootenay14");

            //setup camera
            if (Cam == null)
            {
                Cam = new FreeCamera(new Vector3(0, 100, -250),
                                     MathHelper.ToRadians(180),
                                     MathHelper.ToRadians(5),
                                     graphics);
            }

            //set mouse to invisible
            ScreenManager.Game.IsMouseVisible = false;

            //set up game state

            foreach (Entity e in GameStateManager.GameManager.Entities)
            {
                Actors.Add(new BasicActor(e, screenContentManager.GetModel(e.Name)));
            }

            screenContentManager.AddEffect("lightingEffect", @"Models\LightingEffect");

            LightingMaterial mat = new LightingMaterial();

            //mat.LightColor = Color.Red.ToVector3();
            mat.AmbientColor = new Vector3(0.1f, 0.1f, 0.1f);


            foreach (BasicActor actor in Actors)
            {
                actor.SetModelEffect(screenContentManager.GetEffect("lightingEffect"), true);
                actor.Material = mat;
            }

            //setup overlays
            Overlays.Add(new DebugOverlay(this));
            Overlays[0].IsActive = true;
        }
示例#26
0
        protected override void CreateScene()
        {
            //Create a 3D camera
            var camera3D = new FreeCamera("Camera3D", new Vector3(0, 2, 4), Vector3.Zero)
            {
                BackgroundColor = Color.CornflowerBlue,
                Speed           = 2,
                NearPlane       = 0.1f
            };

            EntityManager.Add(camera3D);

            // Ground
            Entity cube = new Entity()
                          .AddComponent(new Transform3D())
                          .AddComponent(Model.CreatePlane())
                          .AddComponent(new MaterialsMap(new BasicMaterial("Content/ground.png")
            {
                SamplerMode = AddressMode.PointClamp
            }))
                          .AddComponent(new ModelRenderer());

            EntityManager.Add(cube);

            // Tree Billboard
            Entity tree = new Entity()
                          .AddComponent(new Transform3D()
            {
                LocalPosition = new Vector3(0, 0.75f, 0),
                LocalScale    = new Vector3(1.5f, 1.5f, 1.5f)
            })
                          .AddComponent(new Billboard("Content/tree.png")
            {
                BillboardType = BillboardType.Axial_Orientation
            })
                          .AddComponent(new BillboardRenderer(DefaultLayers.Alpha, AddressMode.PointClamp));

            EntityManager.Add(tree);


            // Flares
            int nflares = 6;

            for (int i = 0; i < nflares; i++)
            {
                float angle = ((float)i / 6) * MathHelper.TwoPi;

                Entity flare = new Entity()
                               .AddComponent(new Transform3D()
                {
                    LocalPosition = new Vector3(0, 0.75f, 0),
                    LocalScale    = Vector3.One * 0.25f
                })
                               .AddComponent(new FlareBehavior(angle, 1))
                               .AddComponent(new Billboard("Content/flare.png")
                {
                    BillboardType = BillboardType.PointOrientation
                })
                               .AddComponent(new BillboardRenderer(DefaultLayers.Alpha, AddressMode.PointClamp));

                EntityManager.Add(flare);
            }
        }