Ejemplo n.º 1
0
        public void Generate()
        {
            Prepare();

            var template = new MacroTemplate(_random);

            Land = template;

            //Fully generate Macro Map
            Macro = template.CreateMacroMap(this);

            var microtimer = Stopwatch.StartNew();

            Micro = new MicroMap(Macro, this);

            foreach (var zone in Macro.Zones)
            {
                template.GenerateMicroZone(Macro, zone, Micro);
            }
            Micro.GenerateHeightmap();

            microtimer.Stop();

            Micro.Changed += MicroOnChanged;

            Debug.LogFormat("Created micromap in {0} msec", microtimer.ElapsedMilliseconds);
        }
        void Update()
        {
            if (Time.time - _lastOldCheck > 0.5f && (Position != _oldPosition || Rotation != _oldRotation))
            {
                _lastOldCheck = Time.time;
                _oldPosition  = Position;
                _oldRotation  = Rotation;
                Changed();
            }

            if (_microMap == null)
            {
                _microMap = GameObject.FindObjectOfType <TriRunner>().Micro;
            }
            else
            {
                var worldRay = _camera.ScreenPointToRay(UnityEngine.Input.mousePosition);
                var hitPoint = _microMap.RaycastHeightmap(worldRay);

                if (hitPoint.HasValue)
                {
                    DrawCursor(hitPoint.Value.Item1);
                }
                else
                {
                    DrawCursor(null);
                }
            }
        }
Ejemplo n.º 3
0
        /*
         * public void Render(MicroMap map, TriRunner renderSettings)
         * {
         *  //Break map to visualization chunks (rounded to ChunkSize)
         *  var microBounds = map.Bounds;
         *  var chunkMin = new Vector2i(SnapDown(microBounds.Min.X, ChunkSize), SnapDown(microBounds.Min.Z, ChunkSize));
         *  var chunkMax = new Vector2i(SnapUp(microBounds.Max.X, ChunkSize), SnapUp(microBounds.Max.Z, ChunkSize));
         *
         *  for (int x = chunkMin.X; x < chunkMax.X; x += ChunkSize)
         *  {
         *      for (int z = chunkMin.Z; z < chunkMax.Z; z += ChunkSize)
         *      {
         *          var meshGO = new GameObject("MicroMapChunk");
         *          var filter = meshGO.AddComponent<MeshFilter>();
         *          var renderer = meshGO.AddComponent<MeshRenderer>();
         *          meshGO.transform.SetParent(GetMeshRoot());
         *
         *          var chunkBound = new Bounds2i(new Vector2i(x, z), ChunkSize, ChunkSize );
         *          var chunkMesh = _mesher.CreateMesh(map, chunkBound, renderSettings);
         *
         *          filter.mesh = chunkMesh.Item1;
         *          var texturedMat = new Material(_textured);
         *          texturedMat.mainTexture = chunkMesh.Item2;
         *          renderer.material = texturedMat;
         *      }
         *  }
         * }
         */

        public void Render2(MicroMap map, TriRunner renderSettings)
        {
            Assert.IsTrue(renderSettings.RenderMode != TerrainRenderMode.Macro);

            //Break map to render chunks (rounded to ChunkSize)
            var microBounds = map.Bounds;
            var chunkMin    = new Vector2i(SnapDown(microBounds.Min.X, ChunkSize), SnapDown(microBounds.Min.Z, ChunkSize));
            var chunkMax    = new Vector2i(SnapUp(microBounds.Max.X, ChunkSize), SnapUp(microBounds.Max.Z, ChunkSize));

            //Iterate and generate render chunks
            for (int x = chunkMin.X; x < chunkMax.X; x += ChunkSize)
            {
                for (int z = chunkMin.Z; z < chunkMax.Z; z += ChunkSize)
                {
                    var meshGO = new GameObject("MicroMapChunk");
                    meshGO.transform.SetParent(GetMeshRoot());

                    var chunkBound  = new Bounds2i(new Vector2i(x, z), ChunkSize, ChunkSize);
                    var chunkMeshes = renderSettings.RenderMode == TerrainRenderMode.Blocks
                        ? _mesher.CreateMinecraftMesh(map, chunkBound, renderSettings)
                        : _mesher.CreateTerrainMesh(map, chunkBound, renderSettings);

                    //optimize todo implement single mesh mode for simple chunk (no caves)
                    {
                        var baseMeshGO   = new GameObject("BaseMesh");
                        var baseFilter   = baseMeshGO.AddComponent <MeshFilter>();
                        var baseRenderer = baseMeshGO.AddComponent <MeshRenderer>();
                        baseMeshGO.transform.SetParent(meshGO.transform);

                        var underMeshGO   = new GameObject("UnderMesh");
                        var underFilter   = underMeshGO.AddComponent <MeshFilter>();
                        var underRenderer = underMeshGO.AddComponent <MeshRenderer>();
                        underMeshGO.transform.SetParent(meshGO.transform);

                        var mainMeshGO   = new GameObject("MainMesh");
                        var mainFilter   = mainMeshGO.AddComponent <MeshFilter>();
                        var mainRenderer = mainMeshGO.AddComponent <MeshRenderer>();
                        mainMeshGO.transform.SetParent(meshGO.transform);

                        baseFilter.mesh = chunkMeshes.Base.Item1;
                        var baseTexturedMat = new Material(_textured);
                        baseTexturedMat.mainTexture = chunkMeshes.Base.Item2;
                        baseRenderer.material       = baseTexturedMat;

                        underFilter.mesh = chunkMeshes.Under.Item1;
                        var underTexturedMat = new Material(_textured);
                        underTexturedMat.mainTexture = chunkMeshes.Under.Item2;
                        underRenderer.material       = underTexturedMat;

                        mainFilter.mesh = chunkMeshes.Main.Item1;
                        var mainTexturedMat = new Material(_textured);
                        mainTexturedMat.mainTexture = chunkMeshes.Main.Item2;
                        mainRenderer.material       = mainTexturedMat;
                    }
                }
            }
        }
Ejemplo n.º 4
0
        public void can_add_and_retrive_basic_class()
        {
            MicroMap.Initialize();
            MicroMap.Register <Interface1, Class1>();

            var instance = MicroMap.GetInstance <Interface1>();

            Assert.AreEqual(instance.GetType(), typeof(Class1));
        }
Ejemplo n.º 5
0
        // Constructor
        public MainPage()
        {
            InitializeComponent();

            _commandBus = MicroMap.GetInstance <ICommandBus>();

            // Set the data context of the listbox control to the sample data
            DataContext = MicroMap.GetInstance <IMainViewModel>();
            Loaded     += MainPageLoaded;
        }
Ejemplo n.º 6
0
        public void can_build_up_single_depenancy()
        {
            MicroMap.Initialize();
            MicroMap.Register <Interface1, Class1>();
            MicroMap.Register <Interface2, Class2>();

            var instance = MicroMap.GetInstance <Interface2>();

            Assert.AreEqual(instance.GetType(), typeof(Class2));

            Assert.AreEqual(instance.Class1.GetType(), typeof(Class1));
        }
        void Start()
        {
            Changed();

            var input = GetComponent <Input>();

            input.Move   += InputOnMove;
            input.Rotate += InputOnRotate;
            input.Fire   += InputOnFire;
            input.Build  += InputOnBuild;

            _microMap = GameObject.FindObjectOfType <TriRunner>().Micro;
        }
Ejemplo n.º 8
0
        public void can_add_and_retreive_from_func_definition()
        {
            MicroMap.Initialize();
            MicroMap.Register <Interface1>(x =>
            {
                var class1 = new Class1();
                return(class1);
            });

            var instance = MicroMap.GetInstance <Interface1>();

            Assert.AreEqual(instance.GetType(), typeof(Class1));
        }
Ejemplo n.º 9
0
        public void can_add_and_retrieve_static_class()
        {
            var staticClass = new Class1();

            MicroMap.Initialize();
            MicroMap.Register <Interface1>(staticClass);

            var instance  = MicroMap.GetInstance <Interface1>();
            var instance2 = MicroMap.GetInstance <Interface1>();

            Assert.AreEqual(instance, staticClass);
            Assert.AreEqual(instance2, staticClass);
        }
Ejemplo n.º 10
0
        public void builds_up_complex_dependancy()
        {
            MicroMap.Initialize();
            MicroMap.Register <Interface1, Class1>();
            MicroMap.Register <Interface2>(x => new Class2(x.GetInstance <Interface1>()));
            MicroMap.Register <Interface3, Class3>();

            var instance = MicroMap.GetInstance <Interface3>();

            Assert.AreEqual(instance.GetType(), typeof(Class3));

            Assert.AreEqual(instance.Class1.GetType(), typeof(Class1));
            Assert.AreEqual(instance.Class2.GetType(), typeof(Class2));
        }
        /// <summary>
        /// Generate micro-presentation for given macro zone and place it to Micromap
        /// </summary>
        /// <param name="zone"></param>
        /// <param name="outputMap"></param>
        public void GenerateMicroZone(MacroMap inputMap, Zone zone, MicroMap outputMap)
        {
            //Get generator for this zone
            var mainGenerator             = inputMap.Generators.Find(g => g.Zone == zone);
            var additionalGeneratorsCache = new List <BaseZoneGenerator> ();

            foreach (var cell in zone.Cells)
            {
                var microcell = outputMap.Cells.First(c => c.Macro == cell);

                //Prepare buffers for microcell
                var bufferSize     = microcell.Bounds;
                var cellMixBuffer  = new CellMixVertex[bufferSize.Size.X + 1, bufferSize.Size.Z + 1];
                var heightBuffer   = new List <Heights>(microcell.VertexPositions.Length);
                var blockBuffer    = new (Blocks, Heights)[bufferSize.Size.X, bufferSize.Size.Z];
Ejemplo n.º 12
0
        /// <summary>
        /// Constructor for the Application object.
        /// </summary>
        public App()
        {
            // Global handler for uncaught exceptions.
            UnhandledException += Application_UnhandledException;

            // Show graphics profiling information while debugging.
            if (System.Diagnostics.Debugger.IsAttached)
            {
                // Display the current frame rate counters
                //Application.Current.Host.Settings.EnableFrameRateCounter = true;

                // Show the areas of the app that are being redrawn in each frame.
                //Application.Current.Host.Settings.EnableRedrawRegions = true;

                // Enable non-production analysis visualization mode,
                // which shows areas of a page that are being GPU accelerated with a colored overlay.
                //Application.Current.Host.Settings.EnableCacheVisualization = true;
            }

            // Standard Silverlight initialization
            InitializeComponent();

            // Phone-specific initialization
            InitializePhoneApplication();

            // setup container
            var state      = new ApplicationState();
            var commandBus = new CommandBus();

            var mainViewModel    = new MainViewModel();
            var addPageViewModel = new AddPageViewModel();

            _initializationAction = (IContainer x) =>
            {
                x.Register <ISettingsManager, SettingsManager>();
                x.Register <IStorageManager, StorageManager>();
                x.Register <IUIThreadInvoker, UIThreadInvoker>();
                x.Register <ICommandBus>(commandBus);
                x.Register <IApplicationState>(state);

                x.Register <INavigationServiceWrapper, NavigationServiceWrapper>();
                x.Register <IDialogService, DialogService>();
                x.Register <ITrialService, TrialService>();

                x.Register <ICommandHandler <ApplicationLoadedCommand>, ApplicationLoadedCommandHandler>();
                x.Register <ICommandHandler <MainPageLoadedCommand>, MainPageLoadedCommandHandler>();
                x.Register <ICommandHandler <AddNewShortCodeCommand>, AddNewShortCodeCommandHandler>();
                x.Register <ICommandHandler <EditShortCodeCommand>, EditShortCodeCommandHandler>();
                x.Register <ICommandHandler <SaveShortCodeCommand>, SaveShortCodeCommandHandler>();
                x.Register <ICommandHandler <DeleteShortCodeCommand>, DeleteShortCodeCommandHandler>();
                x.Register <ICommandHandler <SendSmsCommand>, SendSmsCommandHandler>();
                x.Register <ICommandHandler <DataLoadedMessage>, DataLoadedCommandHandler>();

                x.Register <IValidator <ShortCode>, ShortCodeValidator>();

                x.Register <IMainViewModel>(mainViewModel);
                x.Register <IAddPageViewModel>(addPageViewModel);
            };
            MicroMap.Initialize(_initializationAction);

            commandBus.RegisterHandler(MicroMap.GetInstance <ICommandHandler <ApplicationLoadedCommand> >());
            commandBus.RegisterHandler(MicroMap.GetInstance <ICommandHandler <MainPageLoadedCommand> >());
            commandBus.RegisterHandler(MicroMap.GetInstance <ICommandHandler <AddNewShortCodeCommand> >());
            commandBus.RegisterHandler(MicroMap.GetInstance <ICommandHandler <EditShortCodeCommand> >());
            commandBus.RegisterHandler(MicroMap.GetInstance <ICommandHandler <SaveShortCodeCommand> >());
            commandBus.RegisterHandler(MicroMap.GetInstance <ICommandHandler <DeleteShortCodeCommand> >());
            commandBus.RegisterHandler(MicroMap.GetInstance <ICommandHandler <SendSmsCommand> >());
            commandBus.RegisterHandler(MicroMap.GetInstance <ICommandHandler <DataLoadedMessage> >());
        }
Ejemplo n.º 13
0
        // Code to execute when the application is activated (brought to foreground)
        // This code will not execute when the application is first launched
        private void Application_Activated(object sender, ActivatedEventArgs e)
        {
            var commandBus = MicroMap.GetInstance <ICommandBus>();

            commandBus.PublishCommand(new ApplicationLoadedCommand());
        }
Ejemplo n.º 14
0
        private void SaveButtonClick(object sender, RoutedEventArgs e)
        {
            var commandBus = MicroMap.GetInstance <ICommandBus>();

            commandBus.PublishCommand(new SaveShortCodeCommand());
        }
Ejemplo n.º 15
0
 public AddPage()
 {
     InitializeComponent();
     DataContext = MicroMap.GetInstance <IAddPageViewModel>();
 }