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); } } }
/* * 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; } } } }
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)); }
// 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; }
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; }
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)); }
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); }
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];
/// <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> >()); }
// 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()); }
private void SaveButtonClick(object sender, RoutedEventArgs e) { var commandBus = MicroMap.GetInstance <ICommandBus>(); commandBus.PublishCommand(new SaveShortCodeCommand()); }
public AddPage() { InitializeComponent(); DataContext = MicroMap.GetInstance <IAddPageViewModel>(); }