public void SceneGeneratorTestEnvironment() { var sceneGenerator = new SceneGenerator(); Transform root = new GameObject().transform; string[] spriteEnvironmentNames = { "back_bg", "light_01_bg", "owl_01_bg", "owl_01_patch_bg", "sh_bg", }; string[] spriteRegularNames = { "owl_01", "owl_01_sh", "bg" }; sceneGenerator.BuildScene(CreateSprites(spriteEnvironmentNames.Concat(spriteRegularNames).ToArray()), root, new Vector2Int(0, 0)); Transform environmentFolder = GetChildByName(root, SceneDescriptorsHelper.EnvironmentFolderName); Assert.AreEqual(root.childCount, 3); // Environment, owl and bg Assert.AreEqual(environmentFolder.childCount, spriteEnvironmentNames.Length); for (int i = 0; i < environmentFolder.childCount; i++) { Assert.That(spriteEnvironmentNames, Has.Member(environmentFolder.GetChild(i).name)); } }
public void SceneGeneratorTestInvalidPlaceholdersNames() { var sceneGenerator = new SceneGenerator(); Transform root = new GameObject().transform; // Invalid names should be checked by programmer // so must to be moved to Error folder string[] spriteNames = { "_01", "", " ", "%6-%#", "\0", "\n" }; sceneGenerator.BuildScene(CreateSprites(spriteNames), root, new Vector2Int(0, 0)); Transform errorFolder = GetChildByName(root, SceneDescriptorsHelper.ErrorFolderName); Assert.That(root.childCount, Is.EqualTo(1)); // is Error folder Assert.That(errorFolder.childCount, Is.EqualTo(spriteNames.Length)); }
public void SceneGeneratorTestChildLayersWithoutPlaceholders() { var sceneGenerator = new SceneGenerator(); Transform root = new GameObject().transform; // Layers without placeholders should be checked by programmer // so must to be moved to Error folder string[] spriteNames = { "a_01_01", "a_02_01_sh", "hat_01_patch_sh", "hat_01_shadow_patch", "hat_02_hat_01", "hat_02_light_01_hat", "glow_light" }; sceneGenerator.BuildScene(CreateSprites(spriteNames), root, new Vector2Int(0, 0)); Transform errorFolder = GetChildByName(root, SceneDescriptorsHelper.ErrorFolderName); Assert.That(root.childCount, Is.EqualTo(1)); // is Error folder Assert.That(errorFolder.childCount, Is.EqualTo(spriteNames.Length)); }
public void PreviewBox(BoxJSON box) { if (go != null) { GameObject.Destroy(go); } go = new GameObject(); float shelf_size = box == null ? 1 : box.width; //if (shelf_size < 1) { shelf_size = 1; } ShelfJSON shelf_json = new ShelfJSON(); //shelf_json.front_index = new int[] { 3, 0, 1, 2, 3 }; shelf_json.front_index = new int[] { 3, 0 }; shelf_json.x_points = new float[] { -shelf_size, -shelf_size, shelf_size, shelf_size }; shelf_json.y_points = new float[] { -shelf_size, shelf_size, shelf_size, -shelf_size }; shelf_json.boxes = box == null ? new BoxJSON[0] : new BoxJSON[] { box }; shelf_json.thickness = shelf_size / 5.0f; ShelfJSON[] shj_array = new ShelfJSON[] { shelf_json }; StandJSON sj = new StandJSON(); sj.shelves = shj_array; sj.y_start = -1.0f; sj.wall_x = new float[0]; sj.wall_y = new float[0]; StandJSON[] sj_array = new StandJSON[] { sj }; SceneData sd = new SceneData(sj_array); SG = go.AddComponent <SceneGenerator>() as SceneGenerator; SG.transform.parent = this.transform; SG.transform.localPosition = new Vector3(0.0f, 0.0f, 0.0f); SG.GenerateScene(sd); shelf_json.boxes[0].cpr = 0.25f; shelf_json.boxes[0].cir = 0; //shelf_json.boxes[0].cil = 0; ShelfGenerator shg = SG.stands[0].shelves[0]; shg.cubes[0].SetStartingPosition(0, 0.25f); /* Camera needs to focus the new object, the position of the new object is not defined till the next * update cycle. Do the camera position update in the next lateupdate */ camera_pos_needs_update = true; }
public void SceneGeneratorTestSimplePlaceholdersNames() { var sceneGenerator = new SceneGenerator(); Transform root = new GameObject().transform; string[] spriteNames = { "spider", "hat_01", "hat_01_sh", "hat_01_shadow", "hat_02", "hat_02_light", "hat_02_glow", "ancient_book_01", "ancient_book_02", "ancient_book_02_patch", "ancient_book_02_someting_that_must_be_patch", "ancient_book_03", "ancient_book_silhouette", }; sceneGenerator.BuildScene(CreateSprites(spriteNames), root, new Vector2Int(0, 0)); Assert.That(root.childCount, Is.EqualTo(3)); // 3 scene items Transform sceneItem; Transform placeholder; sceneItem = TestSceneItem(root, "spider", 1, "Spider"); Assert.That(sceneItem.GetChild(0).name, Is.EqualTo("spider")); sceneItem = TestSceneItem(root, "hat", 2, "Hat"); placeholder = TestPlaceholder(sceneItem, 0, "hat_01", 2); TestSceneItemChildLayer(placeholder, 0, "hat_01_sh", SceneItemChildLayer.LayerType.Shadow); TestSceneItemChildLayer(placeholder, 1, "hat_01_shadow", SceneItemChildLayer.LayerType.Shadow); placeholder = TestPlaceholder(sceneItem, 1, "hat_02", 2); TestSceneItemChildLayer(placeholder, 0, "hat_02_light", SceneItemChildLayer.LayerType.Shadow); TestSceneItemChildLayer(placeholder, 1, "hat_02_glow", SceneItemChildLayer.LayerType.Shadow); sceneItem = TestSceneItem(root, "ancient_book", 3, "Ancient book"); Assert.That(sceneItem.GetComponent <SceneItem>().Silhouette, Is.Not.Null); placeholder = TestPlaceholder(sceneItem, 0, "ancient_book_01", 0); placeholder = TestPlaceholder(sceneItem, 1, "ancient_book_02", 2); TestSceneItemChildLayer(placeholder, 0, "ancient_book_02_patch", SceneItemChildLayer.LayerType.Patch); TestSceneItemChildLayer(placeholder, 1, "ancient_book_02_someting_that_must_be_patch", SceneItemChildLayer.LayerType.Patch); placeholder = TestPlaceholder(sceneItem, 2, "ancient_book_03", 0); }
public void SceneGeneratorTestZero() { var sceneGenerator = new SceneGenerator(); Transform root = new GameObject().transform; var sprites = new List <SpriteRenderer>(); sceneGenerator.BuildScene(sprites, root, new Vector2Int(42, 34)); Assert.AreEqual(root.childCount, 0); var sceneComponent = root.GetComponent <SceneComponent>(); Assert.That(sceneComponent.SceneSize, Is.EqualTo(new Vector2Int(42, 34))); }
public void SceneGeneratorTestNull() { var sceneGenerator = new SceneGenerator(); var sprites = new List <SpriteRenderer>(); Transform root = new GameObject().transform; Assert.Throws <NullReferenceException>(delegate { sceneGenerator.BuildScene(null, null, new Vector2Int(0, 0)); }); Assert.Throws <NullReferenceException>(delegate { sceneGenerator.BuildScene(sprites, null, new Vector2Int(0, 0)); }); Assert.Throws <NullReferenceException>(delegate { sceneGenerator.BuildScene(null, root, new Vector2Int(0, 0)); }); }
public void PacketStreamTests(bool collatedPackets, bool compressed) { Stream sceneStream = SceneGenerator.Generate(collatedPackets, compressed); Stopwatch timer = new Stopwatch(); timer.Start(); PacketStreamReader packetStream = new PacketStreamReader(sceneStream); PacketBuffer packet = null; // Reading Console.WriteLine("Reading to end of stream"); long bytesRead = 0; uint packetCount1 = 0; uint packetCount2 = 0; while (!packetStream.EndOfStream) { packet = packetStream.NextPacket(ref bytesRead); if (!packetStream.EndOfStream) { Assert.NotNull(packet); //, "Failed to extract packet."); Assert.Equal(PacketBufferStatus.Complete, packet.Status); //, "Unpexected packet status: {0}", packet.Status.ToString()); ++packetCount1; } } Console.WriteLine("Read {0} packets", packetCount1); Console.WriteLine("Resetting"); packetStream.Reset(); packetCount2 = 0; while (!packetStream.EndOfStream) { packet = packetStream.NextPacket(ref bytesRead); if (!packetStream.EndOfStream) { Assert.NotNull(packet); //, "Failed to extract packet."); Assert.Equal(PacketBufferStatus.Complete, packet.Status); //, "Unpexected packet status: {0}", packet.Status.ToString()); ++packetCount2; } } Console.WriteLine("Read {0} packets", packetCount2); Assert.Equal(packetCount2, packetCount1);//, "Packet count mismatch after reset and replay."); timer.Stop(); Console.WriteLine("Elapsed: {0}", timer.Elapsed); }
public override void OnInspectorGUI() { base.OnInspectorGUI(); SceneGenerator sg = target as SceneGenerator; GUILayout.Space(20); if (GUILayout.Button("Clear")) { sg.Clear(); } if (GUILayout.Button("Generate")) { sg.Generate(); } }
void IEventHandler<WarpEvent>.HandleEvent(object source, WarpEvent data) { if(source == ControlledShip.GameObj) { var objectsToTransfer = Scene.RootObjects.Where(o=>o.Name.StartsWith("@")).ToList(); objectsToTransfer.Add(ControlledShip.GameObj); Scene nextSystemScene = SceneGenerator.GenerateStarSystem(); foreach (var obj in objectsToTransfer) { Scene.RemoveObject(obj); nextSystemScene.AddObject(obj); } ControlledShip.GameObj.Transform.Pos = new Vector3(0, 0, ControlledShip.GameObj.Transform.Pos.Z); // change background GameObject bg = objectsToTransfer.FirstOrDefault(o => o.Name == "@background"); var bgc = bg.GetComponent<BackgroundRenderer>(); bgc.BackgroundIndex = rng.Next(0, bgc.Backgrounds.Length - 1); Scene.SwitchTo(nextSystemScene); } }
private void ResetGame(int difficulty) { PlayerStats = new PlayerStats { difficulty = difficulty, health = 100f, maxHealth = 100f, maxArmor = 100f, armor = 100f, armorProtection = 0.3f, dead = false, hit = false, floor = 1, seed = new Random().Next() }; SceneGenerator generator = SelectGenerator(1, PlayerStats.seed); Scene = generator.Generate(); Scene.Camera = new Camera(0.5f, 1000f, (float)Math.PI / 2.5f, 16f / 9f); Scene.Visited[SceneGenerator.size / 2, SceneGenerator.size / 2] = true; HUD.Scene = Scene; playerLogic = new PlayerLogic(this); }
public void Setup() { messageTranslator = new MessageTranslator(new WordTranslator(new CharacterTranslator())); sceneGenerator = new SceneGenerator(messageTranslator, new MorseFrameBuilder(new LightSectionBuilder(), new RumbleSectionBuilder())); }
public ArrayGUI() { sceneGenerator = new SceneGenerator(); }
private void CreateAtlasAndParse() { List <Texture2D> textures = new List <Texture2D>(); List <SpriteRenderer> spriteRenderers = new List <SpriteRenderer>(); LayerList = new List <string>(); int zOrder = 0; string assetPath = AssetDatabase.GetAssetPath(image); GameObject root = new GameObject(Path.GetFileNameWithoutExtension(assetPath) ?? "Scene"); Vector2Int imageSize = new Vector2Int((int)psd.BaseLayer.Rect.width, (int)psd.BaseLayer.Rect.height); // create Texture2D for each PSD layer foreach (var layer in psd.Layers) { if (layer.Visible && layer.Rect.width > 0 && layer.Rect.height > 0) { if (LayerList.IndexOf(layer.Name.Split('|').Last()) == -1) { LayerList.Add(layer.Name.Split('|').Last()); Texture2D tex = CreateTexture(layer, imageSize); if (tex == null) { continue; } textures.Add(tex); GameObject go = new GameObject(layer.Name); SpriteRenderer sr = go.AddComponent <SpriteRenderer>(); Debug.Log(layer.Name + ": " + layer.Rect.ToString()); go.transform.position = new Vector3((layer.Rect.width / 2 + layer.Rect.x - psd.BaseLayer.Rect.width / 2) / pixelsToUnitSize, (-layer.Rect.height / 2 - layer.Rect.y + psd.BaseLayer.Rect.height / 2) / pixelsToUnitSize, 0); spriteRenderers.Add(sr); sr.sortingOrder = zOrder++; go.transform.parent = root.transform; } } } // Create atlas and calculate metadata for each image Texture2D atlas = new Texture2D(atlassize, atlassize); Texture2D[] textureArray = textures.ToArray(); Rect[] rects = atlas.PackTextures(textureArray, 2, atlassize); List <SpriteMetaData> Sprites = new List <SpriteMetaData>(); for (int i = 0; i < rects.Length; i++) { SpriteMetaData smd = new SpriteMetaData(); smd.name = spriteRenderers[i].name.Split('|').Last(); smd.rect = new Rect(rects[i].xMin * atlas.width, rects[i].yMin * atlas.height, rects[i].width * atlas.width, rects[i].height * atlas.height); smd.pivot = new Vector2(0.5f, 0.5f); // Center is default otherwise layers will be misaligned smd.alignment = (int)SpriteAlignment.Center; Sprites.Add(smd); } // write atlas image to file string filePath = String.Format(atlasFilenamePattern, Path.GetFileNameWithoutExtension(assetPath)); File.WriteAllBytes(filePath, atlas.EncodeToPNG()); AssetDatabase.Refresh(); // load atlas image to memory atlas = (Texture2D)AssetDatabase.LoadAssetAtPath(filePath, typeof(Texture2D)); // configure atlas import options and import asset into project { var textureImporter = AssetImporter.GetAtPath(filePath) as TextureImporter; // Make sure the size is the same as our atlas then create the spritesheet textureImporter.maxTextureSize = atlassize; textureImporter.spritesheet = Sprites.ToArray(); textureImporter.textureType = TextureImporterType.Sprite; textureImporter.spriteImportMode = SpriteImportMode.Multiple; textureImporter.spritePivot = new Vector2(0.5f, 0.5f); textureImporter.spritePixelsPerUnit = pixelsToUnitSize; textureImporter.textureFormat = TextureImporterFormat.AutomaticTruecolor; AssetDatabase.ImportAsset(filePath, ImportAssetOptions.Default); } foreach (Texture2D tex in textureArray) { DestroyImmediate(tex); } AssetDatabase.Refresh(); // load atlas as separate images Sprite[] atlasSprites = AssetDatabase.LoadAllAssetsAtPath(filePath).Select(x => x as Sprite).Where(x => x != null).ToArray(); for (int i = 0; i < spriteRenderers.Count; ++i) { spriteRenderers[i].name = spriteRenderers[i].name.Split('|').Last(); spriteRenderers[i].sprite = atlasSprites.First(x => x.name == spriteRenderers[i].name); } // finally, generate scene from images var sceneGenerator = new SceneGenerator(); sceneGenerator.BuildScene(spriteRenderers, root.transform, imageSize); }