protected override async void Start() { base.Start(); clientConnection = new ClientConnection(); clientConnection.Disconnected += ClientConnection_Disconnected; clientConnection.RegisterForRealtimeUpdate(GetCurrentPositionDto); clientConnection.RegisterFor<PointerPositionChangedDto>(OnClientPointerChanged); Zone.AmbientColor = new Color(0.3f, 0.3f, 0.3f); DirectionalLight.Brightness = 0.5f; environmentNode = Scene.CreateChild(); EnableGestureTapped = true; cubeNode = environmentNode.CreateChild(); cubeNode.SetScale(0.2f); cubeNode.Position = new Vector3(1000, 1000, 1000); var box = cubeNode.CreateComponent<Box>(); box.Color = Color.White; var moveAction = new MoveBy(0.5f, new Vector3(0, 0.005f, 0)); cubeNode.RunActions(new RepeatForever(new RotateBy(1f, 0, 120, 0))); cubeNode.RunActions(new RepeatForever(moveAction, moveAction.Reverse())); //material = Material.FromColor(Color.Gray); //-- debug mode material = Material.FromColor(Color.Transparent, true); await RegisterCortanaCommands(new Dictionary<string, Action> { { "stop spatial mapping", StopSpatialMapping} }); while (!await ConnectAsync()) { } }
protected override async void Start() { base.Start(); EnableGestureManipulation = true; EnableGestureTapped = true; Log.LogLevel = LogLevel.Warning; Log.LogMessage += l => { Debug.WriteLine(l.Level + ": " + l.Message); }; // Create a node for the Earth earthNode = Scene.CreateChild(); earthNode.Position = new Vector3(0, 0, 1.5f); earthNode.SetScale(0.3f); DirectionalLight.Brightness = 1f; DirectionalLight.Node.SetDirection(new Vector3(-1, 0, 0.5f)); var earth = earthNode.CreateComponent<Sphere>(); earthMaterial = ResourceCache.GetMaterial("Materials/Earth.xml"); earth.SetMaterial(earthMaterial); var moonNode = earthNode.CreateChild(); moonNode.SetScale(0.27f); moonNode.Position = new Vector3(1.2f, 0, 0); var moon = moonNode.CreateComponent<Sphere>(); moon.SetMaterial(ResourceCache.GetMaterial("Materials/Moon.xml")); // Run a few actions to spin the Earth, the Moon and the clouds. earthNode.RunActions(new RepeatForever(new RotateBy(duration: 1f, deltaAngleX: 0, deltaAngleY: -4, deltaAngleZ: 0))); }
protected override void Start() { // base.Start() creates a basic scene base.Start(); // Create a node for the Earth earthNode = Scene.CreateChild(); earthNode.Position = new Vector3(0, 0, 1); // One meter away earthNode.SetScale(0.2f); // 20cm // Create a static model component - Sphere: var earth = earthNode.CreateComponent<Sphere>(); // Materials are usually more complicated than just textures, but for such // simple cases we can use quick FromImage method to create a material from an image. earth.SetMaterial(Material.FromImage("Textures/Earth.jpg")); // Same steps for the Moon var moonNode = earthNode.CreateChild(); moonNode.SetScale(0.27f); // Relative size of the Moon is 1738.1km/6378.1km moonNode.Position = new Vector3(1.2f, 0, 0); var moon = moonNode.CreateComponent<Sphere>(); moon.SetMaterial(Material.FromImage("Textures/Moon.jpg")); // Run a an action to spin the Earth (5 degrees per second) earthNode.RunActions(new RepeatForever(new RotateBy(duration: 1f, deltaAngleX: 0, deltaAngleY: -5, deltaAngleZ: 0))); }
protected override async void Init() { var cache = Application.ResourceCache; var node = Node; var model = node.CreateComponent<StaticModel>(); model.Model = cache.GetModel(Assets.Models.Player); var material = cache.GetMaterial(Assets.Materials.Player).Clone(""); model.SetMaterial(material); node.SetScale(0.35f); node.Position = new Vector3(0f, -6f, 0f); node.Rotation = new Quaternion(0, 0, 180); //TODO: rotor should be defined in the model + animation rotor = node.CreateChild(); var rotorModel = rotor.CreateComponent<Box>(); rotorModel.Color = Color.White; rotor.Scale = new Vector3(0.1f, 1.5f, 0.1f); rotor.Position = new Vector3(0, -0.15f, -1.5f); rotor.RunActions(new RepeatForever(new RotateBy(1f, 0, 0, 360f * 4))); //RPM // Load weapons node.AddComponent(new MachineGun()); node.AddComponent(new Missile()); await node.RunActionsAsync(new EaseOut(new MoveBy(0.5f, new Vector3(0, 3, 0)), 2)); MoveRandomly(); // Do an alleron roll each 5 seconds Node.RunActions(new RepeatForever(new DelayTime(5), new EaseBackInOut(new RotateBy(1f, 0f, 0f, 360)))); }
public async Task ShowStartMenu(bool gameOver) { var cache = Application.ResourceCache; bigAircraft = Node.CreateChild(); var model = bigAircraft.CreateComponent<StaticModel>(); if (gameOver) { model.Model = cache.GetModel(Assets.Models.Enemy1); model.SetMaterial(cache.GetMaterial(Assets.Materials.Enemy1).Clone("")); bigAircraft.SetScale(0.3f); bigAircraft.Rotate(new Quaternion(180, 90, 20), TransformSpace.Local); } else { model.Model = cache.GetModel(Assets.Models.Player); model.SetMaterial(cache.GetMaterial(Assets.Materials.Player).Clone("")); bigAircraft.SetScale(1f); bigAircraft.Rotate(new Quaternion(0, 40, -50), TransformSpace.Local); } bigAircraft.Position = new Vector3(10, 2, 10); bigAircraft.RunActions(new RepeatForever(new Sequence(new RotateBy(1f, 0f, 0f, 5f), new RotateBy(1f, 0f, 0f, -5f)))); //TODO: rotor should be defined in the model + animation rotor = bigAircraft.CreateChild(); var rotorModel = rotor.CreateComponent<Box>(); rotorModel.Color = Color.White; rotor.Scale = new Vector3(0.1f, 1.5f, 0.1f); rotor.Position = new Vector3(0, 0, -1.3f); var rotorAction = new RepeatForever(new RotateBy(1f, 0, 0, 360f*6)); //RPM rotor.RunActions(rotorAction); menuLight = bigAircraft.CreateChild(); menuLight.Position = new Vector3(-3, 6, 2); menuLight.AddComponent(new Light { LightType = LightType.Point, Brightness = 0.3f }); await bigAircraft.RunActionsAsync(new EaseIn(new MoveBy(1f, new Vector3(-10, -2, -10)), 2)); textBlock = new Text(); textBlock.HorizontalAlignment = HorizontalAlignment.Center; textBlock.VerticalAlignment = VerticalAlignment.Bottom; textBlock.Value = gameOver ? "GAME OVER" : "TAP TO START"; textBlock.SetFont(cache.GetFont(Assets.Fonts.Font), Application.Graphics.Width / 15); Application.UI.Root.AddChild(textBlock); menuTaskSource = new TaskCompletionSource<bool>(); finished = false; await menuTaskSource.Task; }
protected override void Start() { base.Start(); EnableGestureManipulation = true; Zone.AmbientColor = new Color(0.8f, 0.8f, 0.8f); DirectionalLight.Brightness = 1; mutantNode = Scene.CreateChild(); mutantNode.Position = new Vector3(0, 0, 2f); mutantNode.SetScale(0.2f); var mutant = mutantNode.CreateComponent<AnimatedModel>(); mutant.Model = ResourceCache.GetModel("Models/Mutant.mdl"); mutant.SetMaterial(ResourceCache.GetMaterial("Materials/mutant_M.xml")); animation = mutantNode.CreateComponent<AnimationController>(); PlayAnimation(IdleAni); RegisterCortanaCommands(new Dictionary<string, Action> { //play animations using Cortana {"idle", () => PlayAnimation(IdleAni)}, {"die", () => PlayAnimation(KillAni)}, {"dance", () => PlayAnimation(HipHopAni)}, {"jump", () => PlayAnimation(JumpAni)}, {"jump attack", () => PlayAnimation(JumpAttack)}, {"kick", () => PlayAnimation(KickAni)}, {"punch", () => PlayAnimation(PunchAni)}, {"run", () => PlayAnimation(RunAni)}, {"swipe", () => PlayAnimation(SwipeAni)}, {"walk", () => PlayAnimation(WalkAni)}, {"bigger", () => mutantNode.ScaleNode(1.2f)}, {"smaller", () => mutantNode.ScaleNode(0.8f)}, {"increase the brightness", () => IncreaseBrightness(1.2f)}, {"decrease the brightness", () => IncreaseBrightness(0.8f)}, {"look at me", LookAtMe }, {"turn around", () => mutantNode.RunActions(new RotateBy(1f, 0, 180, 0))}, {"help", Help } }); }