public override void Initialize()
        {
            base.Initialize();

            // Camera
            var camera = new CameraPrefab("camera");

            camera.AddComponent <OrbitController>();
            camera.AddComponent <DemoBehaviour>();
            Add(camera);

            // Light
            var lightPrefab = new LightPrefab("lightPrefab", LightType.Directional);

            lightPrefab.Transform.Rotation = new Vector3(-1, 1, 0);
            Add(lightPrefab);

            var sceneObject = new SceneObject("HexaGrid");

            sceneObject.AddComponent <HexaGridBuilder>();
            Add(sceneObject);

            // Skybox
            RenderSettings.Skybox.Generate(Application.GraphicsDevice, Application.Content, DemoGame.StarsSkybox);

            Screen.ShowCursor = true;
        }
Exemple #2
0
        private void InternalAddSceneObject(string type)
        {
            GameObject sceneObject = null;

            switch (type)
            {
            case "Cube": sceneObject = new MeshPrefab(type, new CubeGeometry()); break;

            case "Cylinder": sceneObject = new MeshPrefab(type, new CylinderGeometry()); break;

            case "Quad": sceneObject = new MeshPrefab(type, new QuadGeometry()); break;

            case "Plane": sceneObject = new MeshPrefab(type, new PlaneGeometry()); break;

            case "Pyramid": sceneObject = new MeshPrefab(type, new PyramidGeometry()); break;

            case "Sphere": sceneObject = new MeshPrefab(type, new SphereGeometry()); break;

            case "Torus": sceneObject = new MeshPrefab(type, new TorusGeometry()); break;

            case "Terrain":
                var terrain = new TerrainPrefab(type);
                terrain.Flatten();
                terrain.Renderer.Material = DefaultMaterial;
                sceneObject = terrain;
                break;

            case "Water":
                var water = new WaterPrefab(type);
                Add(water);
                water.Generate(string.Empty, string.Empty, new Vector3(10));
                water.Renderer.Material = GetMaterialByName("WaterMaterial");
                sceneObject             = water;
                break;

            case "Directional": sceneObject = CreateLightNode(type, LightType.Directional); break;

            case "Point": sceneObject = CreateLightNode(type, LightType.Point); break;

            case "Spot": sceneObject = CreateLightNode(type, LightType.Spot); break;

            case "Camera":
                sceneObject = new CameraPrefab(type);
                sceneObject.AddComponent <EDBoxCollider>();

                var camRenderer = sceneObject.AddComponent <EDMeshRenderer>();
                camRenderer.CastShadow    = false;
                camRenderer.ReceiveShadow = false;
                camRenderer.Geometry      = new QuadGeometry();
                camRenderer.Geometry.Build();
                camRenderer.Material = GetMaterialByName("Camera");
                break;

            default: break;
            }

            InternalAddSceneObject(sceneObject);
        }
        public override void Initialize()
        {
            base.Initialize();

            // Skybox
            RenderSettings.Skybox.Generate(Application.GraphicsDevice, Application.Content, DemoGame.BlueSkybox);

            // Camera
            var camera = new CameraPrefab("camera");

            camera.AddComponent <ControllerSwitcher>();
            camera.AddComponent <DemoBehaviour>();
            Add(camera);

            // Light
            var lightPrefab = new LightPrefab("light", LightType.Directional);

            lightPrefab.Transform.Translate(0, 10, 0);
            lightPrefab.Light.Range        = 25;
            lightPrefab.Light.Intensity    = 1.0f;
            lightPrefab.Light.FallOf       = 5f;
            lightPrefab.Transform.Rotation = new Vector3(-1, 1, 0);
            lightPrefab.Light.Angle        = MathHelper.PiOver4;
            lightPrefab.Light.ShadowGenerator.ShadowStrength = 0.6f;
            lightPrefab.Light.ShadowGenerator.SetShadowMapSize(Application.GraphicsDevice, 1024);
            lightPrefab.EnableShadows = true;
            Add(lightPrefab);

            // Finally a terrain
            var terrainMat = new TerrainMaterial(scene);

            var terrain = new TerrainPrefab("terrain");

            terrain.Randomize(4, 12);
            terrain.Renderer.Material = terrainMat;
            terrain.Transform.Translate(-terrain.Width >> 1, 0, -terrain.Depth / 2);
            Add(terrain);

            terrain.SetWeightData(0.5f, 4, 15, 30);

            terrainMat.Texture       = Application.Content.Load <Texture2D>("Textures/Terrain/Grass");
            terrainMat.SandTexture   = Application.Content.Load <Texture2D>("Textures/Terrain/Sand");
            terrainMat.SnowTexture   = Application.Content.Load <Texture2D>("Textures/Terrain/Snow");
            terrainMat.RockTexture   = Application.Content.Load <Texture2D>("Textures/Terrain/Rock");
            terrainMat.WeightTexture = terrain.GenerateWeightMap();
            terrainMat.Tiling        = new Vector2(4);

            // Water !
            var water = new WaterPrefab("water");

            Add(water);
            water.Generate("Textures/water", "Textures/wavesbump", new Vector3(terrain.Width * 0.5f));

            var waterMat = water.Renderer.Material as WaterMaterial;

            waterMat.ReflectiveMap     = scene.RenderSettings.Skybox.Texture;
            waterMat.WaterTransparency = 0.6f;
        }
Exemple #4
0
        public override void Initialize()
        {
            base.Initialize();

            var camera = new CameraPrefab("Camera");

            camera.AddComponent <UIWidgetDemo>();
            camera.AddComponent <DemoBehaviour>();
            Add(camera);
        }
Exemple #5
0
        public override void Initialize()
        {
            base.Initialize();

            // Add a camera with a FPS controller
            var camera = new CameraPrefab("camera");

            camera.Setup(new Vector3(0, 2, -10), new Vector3(0, 0, 0), Vector3.Up);
            camera.AddComponent <ControllerSwitcher>();
            Add(camera);

            // And a light
            var lightPrefab = new LightPrefab("light", LightType.Directional);

            Add(lightPrefab);
            lightPrefab.Transform.Rotation = new Vector3(-1, 1, 0);
            lightPrefab.Light.Color        = Color.LightSkyBlue;
            lightPrefab.Light.Intensity    = 1.0f;
            lightPrefab.AddComponent <DemoBehaviour>();
            lightPrefab.EnableShadows = true;

            // Finally a terrain
            var terrainMat = new TerrainMaterial(scene);

            var terrain = new TerrainPrefab("terrain");

            scene.Add(terrain);
            terrain.LoadHeightmap("Textures/heightmap");
            terrain.Renderer.Material = terrainMat;
            terrain.Transform.Translate(-terrain.Width >> 1, -10, -terrain.Depth >> 1);
            terrain.AddComponent <WeightMapViewer>();
            var map = terrain.GenerateWeightMap();

            terrainMat.Texture       = Application.Content.Load <Texture2D>("Textures/Terrain/Grass");
            terrainMat.SandTexture   = Application.Content.Load <Texture2D>("Textures/Terrain/Sand");
            terrainMat.SnowTexture   = Application.Content.Load <Texture2D>("Textures/Terrain/Snow");
            terrainMat.RockTexture   = Application.Content.Load <Texture2D>("Textures/Terrain/Rock");
            terrainMat.WeightTexture = map;
            terrainMat.Tiling        = new Vector2(4);

            // With water !
            var water = new WaterPrefab("water");

            scene.Add(water);
            water.Generate("Textures/water", "Textures/wavesbump", new Vector3(terrain.Width * 0.5f));

            Screen.ShowCursor = true;

            // Don't miss the Skybox ;)
            RenderSettings.Skybox.Generate(Application.GraphicsDevice, Application.Content, DemoGame.BlueSkybox);

            // And fog
            RenderSettings.FogDensity = 0.0085f;
            RenderSettings.FogMode    = FogMode.Exp2;
        }
Exemple #6
0
        public override void Initialize()
        {
            base.Initialize();

            GUI.Skin = DemoGame.CreateSkin(Application.Content, false);

            var camera = new CameraPrefab("cam");

            camera.AddComponent <MenuBehaviour>();
            camera.AddComponent <PointerCoordDebug>();
            Add(camera);
        }
        public override void Initialize()
        {
            base.Initialize();

            // First we add a Skybox
            RenderSettings.Skybox.Generate(Application.GraphicsDevice, Application.Content, DemoGame.StarsSkybox);

            // And a camera with some components
            var camera = new CameraPrefab("camera");

            camera.AddComponent <ControllerSwitcher>();
            camera.AddComponent <DemoBehaviour>();
            Add(camera);

            // A light is required to illuminate objects.
            var lightPrefab = new LightPrefab("light", LightType.Directional);

            lightPrefab.Transform.Rotation = new Vector3(-1, 1, 0);
            lightPrefab.Light.ShadowGenerator.SetShadowMapSize(Application.GraphicsDevice, 1024);
            lightPrefab.EnableShadows = true;
            Add(lightPrefab);

            // A terrain with its material.
            var terrainMaterial = new StandardMaterial(scene);

            terrainMaterial.Texture   = Application.Content.Load <Texture2D>("Textures/Terrain/Rock");
            terrainMaterial.Shininess = 150;
            terrainMaterial.Tiling    = new Vector2(8);

            var terrain = new TerrainPrefab("terrain");

            terrain.Renderer.Geometry.Size = new Vector3(2);
            terrain.Renderer.ReceiveShadow = true;
            terrain.Randomize(4, 12);
            terrain.Renderer.Material = terrainMaterial;
            terrain.Transform.Translate(-terrain.Width >> 1, 0, -terrain.Depth / 2);
            Add(terrain);

            // Lava !
            var lavaMaterial = new LavaMaterial(this);

            lavaMaterial.Texture   = Application.Content.Load <Texture2D>("Textures/lava_texture");
            lavaMaterial.NormalMap = Application.Content.Load <Texture2D>("Textures/lava_bump");

            var lava = new WaterPrefab("water");

            lava.Renderer.Material      = lavaMaterial;
            lava.Renderer.ReceiveShadow = true;
            lava.Renderer.Geometry.Size = new Vector3(terrain.Width * 0.5f);
            lava.Renderer.Geometry.Build();
            Add(lava);
        }
Exemple #8
0
        protected override void LoadContent()
        {
#if USE_KINECT
            _kinectChooser.LoadContent();
#endif

            PrefabRepository.Instance.RegisterPrefab("Robot", RobotPrefab.CreatePrefab());
            PrefabRepository.Instance.RegisterPrefab("DamagedRobot1", DamagedRobot1Prefab.CreatePrefab());
            PrefabRepository.Instance.RegisterPrefab("Crate", CratePrefab.CreatePrefab());
            PrefabRepository.Instance.RegisterPrefab("Mesh", SimpleMeshPrefab.CreatePrefab());
            PrefabRepository.Instance.RegisterPrefab("Camera", CameraPrefab.CreatePrefab());
            PrefabRepository.Instance.RegisterPrefab(MenuCubePrefab.PrefabName, MenuCubePrefab.CreatePrefab());
            PrefabRepository.Instance.RegisterPrefab("Button", ButtonPrefab.CreatePrefab());
            PrefabRepository.Instance.RegisterPrefab("Floor", FloorPrefab.CreatePrefab());
            PrefabRepository.Instance.RegisterPrefab("Wall", WallPrefab.CreatePrefab());
            PrefabRepository.Instance.RegisterPrefab("LiftedDoor", LiftedDoorPrefab.CreatePrefab());
            PrefabRepository.Instance.RegisterPrefab("Trigger", TriggerPrefab.CreatePrefab());
            PrefabRepository.Instance.RegisterPrefab("Saf", SafPrefab.CreatePrefab());
            PrefabRepository.Instance.RegisterPrefab("FloorBridge", FloorBridgePrefab.CreatePrefab());
            PrefabRepository.Instance.RegisterPrefab("UpgradePlatform", UpgradePlatformPrefab.CreatePrefab());
            PrefabRepository.Instance.RegisterPrefab("Pipe", PipePrefab.CreatePrefab());
            PrefabRepository.Instance.RegisterPrefab("SafCollectible", SafCollectiblePrefab.CreatePrefab());

            PrefabRepository.Instance.RegisterPrefab("WallBackground", SimpleMeshPrefab.CreatePrefab("models/quad", "WallMaterial", "wall-node"));
            PrefabRepository.Instance.RegisterPrefab("WallMenu", SimpleMeshPrefab.CreatePrefab("models/quad", "WallMenuMaterial", "wall-node-2"));
            PrefabRepository.Instance.RegisterPrefab("WallMenu2", SimpleMeshPrefab.CreatePrefab("models/quad", "WallMenuMaterial2", "wall-node-3"));

            MaterialRepository.Instance.RegisterMaterial("MenuCubeMaterial", args => MenuCubeMaterial.CreateMaterial(args));
            MaterialRepository.Instance.RegisterMaterial("SafMaterial", args => SafMaterial.CreateMaterial());
            MaterialRepository.Instance.RegisterMaterial("HighlightMaterial", args => HighlightMaterial.CreateMaterial());

            // Unlit materials for style2.0
            MaterialRepository.Instance.RegisterMaterial("ButtonMaterial", args => TexturedMaterial.CreateMaterial("color_button"));
            MaterialRepository.Instance.RegisterMaterial("RobotMaterial", args => TexturedMaterial.CreateMaterial("color_robo"));
            MaterialRepository.Instance.RegisterMaterial("UPlatformMaterial", args => TexturedMaterial.CreateMaterial("color_uplatform"));
            MaterialRepository.Instance.RegisterMaterial("CrateMaterial", args => TexturedMaterial.CreateMaterial("color_crate"));
            MaterialRepository.Instance.RegisterMaterial("CelShadingMaterial", args => TexturedMaterial.CreateMaterial("color_crate"));
            MaterialRepository.Instance.RegisterMaterial("InnerDoorMaterial", args => TexturedMaterial.CreateMaterial("color_door_inner"));
            MaterialRepository.Instance.RegisterMaterial("OuterDoorMaterial", args => TexturedMaterial.CreateMaterial("color_door_outer"));
            MaterialRepository.Instance.RegisterMaterial("WallMaterial", args => TexturedMaterial.CreateMaterial("empty_gray"));
            MaterialRepository.Instance.RegisterMaterial("TileMaterial", args => TexturedMaterial.CreateMaterial("empty_dark_gray"));
            MaterialRepository.Instance.RegisterMaterial("FloorBridgeMaterial", args => TexturedMaterial.CreateMaterial("color_bridge"));
            MaterialRepository.Instance.RegisterMaterial("PipeMaterial", args => TexturedMaterial.CreateMaterial("color_pipe"));
            MaterialRepository.Instance.RegisterMaterial("PowerupSphereMaterial", args => TexturedMaterial.CreateMaterial("empty_dark_gray"));
        }
Exemple #9
0
    protected override void OnTriggerEnter2D(Collider2D _col)
    {
        if (!IsLaunching)
        {
            return;
        }
        base.OnTriggerEnter2D(_col);
        switch (_col.gameObject.tag)
        {
        case "Player":
            MyAudio.PlaySound(HitAduio);
            EffectEmitter.EmitParticle("bloodEffect", transform.position, new Vector3(0, 0, 180 - MyMath.GetAngerFormTowPoint2D(BattleManager.MyPlayerRole.transform.position, transform.position)), null);
            BattleManager.MyPlayerRole.BeStruck(Damage);
            SelfDestroy();
            break;

        case "PlayerShield":
            MyAudio.PlaySound(HitShieldAduio);
            EffectEmitter.EmitParticle("shieldhit", transform.position, new Vector3(0, 0, 180 - MyMath.GetAngerFormTowPoint2D(BattleManager.MyPlayerRole.transform.position, transform.position)), null);
            BattleManager.MyPlayerRole.ShieldBeSruck(Damage);
            SelfDestroy();
            break;


        case "LeftCol":
            MyAudio.PlaySound(HitWallAduio);
            EffectEmitter.EmitParticle("bounceEffect", transform.position, new Vector3(0, 0, 180), null);
            CameraPrefab.DoAction("Shake", 0);
            if (CurBounceTimes == 0)
            {
                MyRigi.velocity = _col.GetComponent <NormalWallObj>().GetDragForce(MyRigi.velocity, 0);
            }
            if (Bounce())
            {
                MyRigi.velocity = _col.GetComponent <NormalWallObj>().GetVelocity(MyRigi.velocity);
                Vector2 dir   = MyRigi.velocity;
                float   angle = Mathf.Atan2(dir.y, dir.x) * Mathf.Rad2Deg + 180;
                AmmoSR.transform.rotation      = Quaternion.Euler(AmmoSR.transform.localRotation.x, AmmoSR.transform.localRotation.y, angle);
                TrailEffect.transform.rotation = Quaternion.Euler(AmmoSR.transform.localRotation.x, AmmoSR.transform.localRotation.y, angle);
            }

            break;

        case "RightCol":
            MyAudio.PlaySound(HitWallAduio);
            EffectEmitter.EmitParticle("bounceEffect", transform.position, Vector3.zero, null);
            CameraPrefab.DoAction("Shake", 0);
            if (CurBounceTimes == 0)
            {
                MyRigi.velocity = _col.GetComponent <NormalWallObj>().GetDragForce(MyRigi.velocity, 0);
            }
            if (Bounce())
            {
                MyRigi.velocity = _col.GetComponent <NormalWallObj>().GetVelocity(MyRigi.velocity);
                Vector2 dir   = MyRigi.velocity;
                float   angle = Mathf.Atan2(dir.y, dir.x) * Mathf.Rad2Deg + 180;
                AmmoSR.transform.rotation      = Quaternion.Euler(AmmoSR.transform.localRotation.x, AmmoSR.transform.localRotation.y, angle);
                TrailEffect.transform.rotation = Quaternion.Euler(AmmoSR.transform.localRotation.x, AmmoSR.transform.localRotation.y, angle);
            }
            break;

        case "TopCol":
            MyAudio.PlaySound(HitWallAduio);
            EffectEmitter.EmitParticle("bounceEffect", transform.position, new Vector3(0, 0, 90), null);
            CameraPrefab.DoAction("Shake", 0);
            if (CurBounceTimes == 0)
            {
                MyRigi.velocity = _col.GetComponent <NormalWallObj>().GetDragForce(MyRigi.velocity, 0);
            }
            if (Bounce())
            {
                MyRigi.velocity = _col.GetComponent <NormalWallObj>().GetVelocity(MyRigi.velocity);
                Vector2 dir   = MyRigi.velocity;
                float   angle = Mathf.Atan2(dir.y, dir.x) * Mathf.Rad2Deg + 180;
                AmmoSR.transform.rotation      = Quaternion.Euler(AmmoSR.transform.localRotation.x, AmmoSR.transform.localRotation.y, angle);
                TrailEffect.transform.rotation = Quaternion.Euler(AmmoSR.transform.localRotation.x, AmmoSR.transform.localRotation.y, angle);
            }

            break;

        case "BotCol":
            MyAudio.PlaySound(HitWallAduio);
            EffectEmitter.EmitParticle("bounceEffect", transform.position, new Vector3(0, 0, 270), null);
            CameraPrefab.DoAction("Shake", 0);
            if (CurBounceTimes == 0)
            {
                MyRigi.velocity = _col.GetComponent <NormalWallObj>().GetDragForce(MyRigi.velocity, 0);
            }
            if (Bounce())
            {
                MyRigi.velocity = _col.GetComponent <NormalWallObj>().GetVelocity(MyRigi.velocity);
                Vector2 dir   = MyRigi.velocity;
                float   angle = Mathf.Atan2(dir.y, dir.x) * Mathf.Rad2Deg + 180;
                AmmoSR.transform.rotation      = Quaternion.Euler(AmmoSR.transform.localRotation.x, AmmoSR.transform.localRotation.y, angle);
                TrailEffect.transform.rotation = Quaternion.Euler(AmmoSR.transform.localRotation.x, AmmoSR.transform.localRotation.y, angle);
            }
            break;

        default:
            break;
        }
    }
Exemple #10
0
        public override void Initialize()
        {
            base.Initialize();

            // Camera
            var camera = new CameraPrefab("camera");

            camera.AddComponent <OrbitController>();
            camera.AddComponent <RayPickingTester>();
            Add(camera);

            // Light
            var lightPrefab = new LightPrefab("lightPrefab", LightType.Point);

            Add(lightPrefab);
            lightPrefab.Transform.Position = new Vector3(0, 15, 15);
            lightPrefab.Light.Range        = 105;
            lightPrefab.Light.Intensity    = 2.0f;
            lightPrefab.Light.FallOf       = 5f;
            lightPrefab.Light.Color        = Color.Violet;
            lightPrefab.Transform.Rotation = new Vector3(-1, 1, 0);
            lightPrefab.Light.Angle        = 0.1f;
            lightPrefab.Light.ShadowGenerator.ShadowStrength = 0.6f; // FIXME need to be inverted
            lightPrefab.Light.ShadowGenerator.SetShadowMapSize(Application.GraphicsDevice, 1024);
            lightPrefab.EnableShadows = true;
            lightPrefab.AddComponent <LightSwitcher>();
            lightPrefab.AddComponent <LightMover>();
            lightPrefab.AddComponent <DemoBehaviour>();

            var lightPrefabSphere = lightPrefab.AddComponent <MeshRenderer>();

            lightPrefabSphere.Geometry = new SphereGeometry(2f, 4);
            lightPrefabSphere.Geometry.Build();
            lightPrefabSphere.CastShadow       = false;
            lightPrefabSphere.ReceiveShadow    = false;
            lightPrefabSphere.Material         = new SimpleMaterial(scene);
            lightPrefabSphere.Material.Texture = GraphicsHelper.CreateTexture(Color.Yellow, 1, 1);

            // Terrain
            var terrainMaterial = new StandardMaterial(scene);

            terrainMaterial.Texture   = GraphicsHelper.CreateBorderTexture(Color.LightGreen, Color.LightSeaGreen, 128, 128, 4);
            terrainMaterial.Shininess = 10;
            terrainMaterial.Tiling    = new Vector2(16);

            var terrain = new TerrainPrefab("terrain");

            terrain.Renderer.Geometry.Size = new Vector3(4);
            terrain.Renderer.Geometry.Build();
            terrain.Flatten();
            terrain.Renderer.Material = terrainMaterial;
            terrain.Transform.Translate(-terrain.Width >> 1, 0, -terrain.Depth / 2);
            Add(terrain);

            // Cube
            var cubeSuperMaterial = new StandardMaterial(scene);

            cubeSuperMaterial.Texture       = GraphicsHelper.CreateCheckboardTexture(Color.FloralWhite, Color.DodgerBlue);
            cubeSuperMaterial.DiffuseColor  = Color.WhiteSmoke;
            cubeSuperMaterial.SpecularColor = new Color(0.8f, 0.8f, 0.8f, 1.0f);
            cubeSuperMaterial.Shininess     = 10;
            cubeSuperMaterial.EmissiveColor = new Color(0f, 0.0f, 0.2f, 1.0f);

            var cubeScene = new SceneObject();

            cubeScene.Transform.Translate(0, 6f, 0);
            cubeScene.Transform.LocalScale = new Vector3(4.0f);
            cubeScene.Transform.Rotate((float)Math.PI / 4, 0, (float)Math.PI / 4);
            var autoRot = cubeScene.AddComponent <AutoRotation>();

            autoRot.Rotation = new Vector3(0, 0.01f, 0);
            Add(cubeScene);

            var cube = cubeScene.AddComponent <MeshRenderer>();

            cube.ReceiveShadow = false;
            cube.Geometry      = new CubeGeometry();
            cube.Geometry.Build();
            cube.Material = cubeSuperMaterial;

            cubeScene.AddComponent <BoxCollider>();

            // Skybox
            RenderSettings.Skybox.Generate(Application.GraphicsDevice, Application.Content, DemoGame.StarsSkybox, 500);

            Screen.ShowCursor = true;
        }
Exemple #11
0
 public virtual void BeStruck(int _dmg)
 {
     EffectEmitter.EmitParticle("hitEffect", transform.position, Vector3.zero, null);
     CameraPrefab.DoAction("Shake2", 0);
     ReceiveDmg(_dmg);
 }
Exemple #12
0
        public override void Initialize()
        {
            base.Initialize();

            Application.Engine.Renderer = new PreLightRenderer();

            // Camera
            var camPrefab = new CameraPrefab("camera");

            camPrefab.AddComponent <DemoBehaviour>();
            var camera = camPrefab.GetComponent <Camera>();

            camera.Far = 50000;

            var orbit = camPrefab.AddComponent <OrbitController>();

            orbit.MaxDistance = 250;
            Add(camPrefab);

            // Terrain
            var groundMaterial = new PreLightMaterial(scene);

            groundMaterial.Texture = GraphicsHelper.CreateCheckboardTexture(Color.LightGreen, Color.LightSeaGreen, 128, 128);
            groundMaterial.Tiling  = new Vector2(16);

            var ground = new TerrainPrefab("terrain");

            ground.Renderer.Geometry.Size = new Vector3(4, 1, 4);
            ground.Flatten();
            ground.Renderer.Material = groundMaterial;
            ground.Transform.Translate(-ground.Width >> 1, 0, -ground.Depth / 2);
            Add(ground);

            MeshRenderer cube     = null;
            var          maxCubes = 24;
            var          limits   = 250;

            for (int i = 0; i < maxCubes; i++)
            {
                var size = RandomHelper.GetVector3(0.5f, 0.5f, 0.5f, 16, 16, 16);
                cube                  = CreateCube(size, RandomHelper.GetVector3(-limits, size.Y, -limits, limits, size.Y, limits));
                cube.Material         = new PreLightMaterial(this);
                cube.Material.Texture = GraphicsHelper.CreateCheckboardTexture(RandomHelper.GetColor(), RandomHelper.GetColor());
                Add(cube.SceneObject);
            }

            for (int i = 0; i < 4; i++)
            {
                AddObject();
            }

            // Skybox
            RenderSettings.AmbientColor = new Color(0.15f, 0.15f, 0.15f, 1.0f);
            RenderSettings.Skybox.Generate(Application.GraphicsDevice, Application.Content, DemoGame.StarsSkybox, 1500.0f);

            Screen.ShowCursor = true;

            var margin = 80;

            AddBackedLight(new Vector3(0, 15, 0), Color.DarkCyan, 35);
            AddBackedLight(new Vector3(margin, 15, margin), Color.Red);
            AddBackedLight(new Vector3(-margin, 15, margin), Color.Blue);
            AddBackedLight(new Vector3(margin, 15, -margin), Color.Green);
            AddBackedLight(new Vector3(-margin, 15, -margin), Color.Yellow);
        }
Exemple #13
0
 void Start()
 {
     MyCameraPrefab = this.GetComponent <CameraPrefab>();
 }
Exemple #14
0
        public override void Initialize()
        {
            base.Initialize();

            // Skybox
            RenderSettings.Skybox.Generate(Application.GraphicsDevice, Application.Content, DemoGame.StarsSkybox);

            // Camera
            var camera = new CameraPrefab("camera");

            camera.Transform.Translate(0, 25, 0);
            camera.AddComponent <DemoBehaviour>();
            camera.AddComponent <PostProcessSwitcher>();
            Add(camera);

            var orbitController = camera.AddComponent <OrbitController>();

            // Light
            var lightPrefab = new LightPrefab("light", LightType.Directional);

            lightPrefab.Transform.Rotation = new Vector3(-1, 1, 0);
            lightPrefab.Light.ShadowGenerator.SetShadowMapSize(Application.GraphicsDevice, 1024);
            lightPrefab.EnableShadows   = true;
            lightPrefab.Light.Intensity = 0.5f;
            lightPrefab.Light.FallOf    = 5.0f;
            Add(lightPrefab);

            // Terrain
            var terrainMaterial = new StandardMaterial(scene);

            terrainMaterial.Texture   = Application.Content.Load <Texture2D>("Textures/Terrain/Rock");
            terrainMaterial.Shininess = 50;
            terrainMaterial.Tiling    = new Vector2(8);

            var terrain = new TerrainPrefab("terrain");

            terrain.Renderer.Geometry.Size = new Vector3(2);
            terrain.Renderer.ReceiveShadow = true;
            terrain.Randomize(4, 15, 0.086, 0.25, true);
            terrain.Renderer.Material = terrainMaterial;
            terrain.Transform.Translate(-terrain.Width >> 1, 0, -terrain.Depth / 2);
            Add(terrain);

            // Lava
            var lava = new LavaPrefab("water");

            Add(lava);

            lava.Generate("Textures/lava_texture", "Textures/lava_bump", new Vector3(terrain.Width * 0.5f));

            var jack = new ModelPrefab("Jack");

            jack.Transform.Rotate(-MathHelper.PiOver2, MathHelper.Pi, 0);
            jack.Transform.Translate(0, 35, 0);
            jack.Transform.LocalScale = new Vector3(4);
            jack.LoadModel("Models/Jack/JackOLantern");
            var jackMaterial = new StandardMaterial(this);

            jackMaterial.EmissiveColor = new Color(0.2f, 0.005f, 0);
            jackMaterial.Texture       = Application.Content.Load <Texture2D>("Models/Jack/PumpkinColor");
            jack.Renderer.Material     = jackMaterial;
            Add(jack);

            orbitController.LookAt(jack.Transform);
            orbitController.Distance = 150.0f;
        }
Exemple #15
0
    protected override void OnTriggerEnter2D(Collider2D _col)
    {
        base.OnTriggerEnter2D(_col);
        switch (_col.gameObject.tag)
        {
        case "BounceWall":
            MyAudio.PlaySound(HitHardWallAduio);
            PowerUp();
            MyRigi.velocity = _col.GetComponent <BounceWallObj>().GetVelocity(MyRigi.velocity);
            break;

        case "LeftCol":
            MyAudio.PlaySound(HitWallAduio);
            EffectEmitter.EmitParticle("bounceEffect", transform.position, new Vector3(0, 0, 180), null);
            CameraPrefab.DoAction("Shake", 0);
            if (CurBounceTimes == 0)
            {
                MyRigi.velocity = _col.GetComponent <NormalWallObj>().GetDragForce(MyRigi.velocity, Dragproportion);
            }
            if (Bounce())
            {
                MyRigi.velocity = _col.GetComponent <NormalWallObj>().GetVelocity(MyRigi.velocity);
            }
            break;

        case "RightCol":
            MyAudio.PlaySound(HitWallAduio);
            EffectEmitter.EmitParticle("bounceEffect", transform.position, Vector3.zero, null);
            CameraPrefab.DoAction("Shake", 0);
            if (CurBounceTimes == 0)
            {
                MyRigi.velocity = _col.GetComponent <NormalWallObj>().GetDragForce(MyRigi.velocity, Dragproportion);
            }
            if (Bounce())
            {
                MyRigi.velocity = _col.GetComponent <NormalWallObj>().GetVelocity(MyRigi.velocity);
            }
            break;

        case "TopCol":
            MyAudio.PlaySound(HitWallAduio);
            EffectEmitter.EmitParticle("bounceEffect", transform.position, new Vector3(0, 0, 90), null);
            CameraPrefab.DoAction("Shake", 0);
            if (CurBounceTimes == 0)
            {
                MyRigi.velocity = _col.GetComponent <NormalWallObj>().GetDragForce(MyRigi.velocity, Dragproportion);
            }
            if (Bounce())
            {
                MyRigi.velocity = _col.GetComponent <NormalWallObj>().GetVelocity(MyRigi.velocity);
            }
            break;

        case "BotCol":
            MyAudio.PlaySound(HitWallAduio);
            EffectEmitter.EmitParticle("bounceEffect", transform.position, new Vector3(0, 0, 270), null);
            CameraPrefab.DoAction("Shake", 0);
            if (CurBounceTimes == 0)
            {
                MyRigi.velocity = _col.GetComponent <NormalWallObj>().GetDragForce(MyRigi.velocity, Dragproportion);
            }
            if (Bounce())
            {
                MyRigi.velocity = _col.GetComponent <NormalWallObj>().GetVelocity(MyRigi.velocity);
            }
            break;

        case "EnemyShield":
            if (IsHitTarget)
            {
                return;
            }
            MyAudio.PlaySound(HitShieldAduio);
            Vector2 effectPos = Vector2.Lerp(BattleManager.MyEnemyRole.transform.position, transform.position, 0.8f);
            EffectEmitter.EmitParticle("shieldhit", effectPos, new Vector3(0, 0, 180 - MyMath.GetAngerFormTowPoint2D(BattleManager.MyEnemyRole.transform.position, transform.position)), null);
            BattleManager.MyEnemyRole.ShieldBeSruck(Damage);

            AmmoHitCondition = HitCondition.HitShell;
            SelfDestroy();
            IsHitTarget = true;
            break;

        case "Monster":
            if (IsHitTarget)
            {
                return;
            }
            MyAudio.PlaySound(HitAduio);
            EffectEmitter.EmitParticle("bloodEffect", transform.position, new Vector3(0, 0, 180 - MyMath.GetAngerFormTowPoint2D(BattleManager.MyEnemyRole.transform.position, transform.position)), null);
            BattleManager.MyEnemyRole.BeStruck(Damage);

            AmmoHitCondition = HitCondition.Hit;
            SelfDestroy();
            IsHitTarget = true;
            break;

        default:
            break;
        }
    }