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));
        }
Esempio n. 4
0
    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)); });
        }
Esempio n. 8
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);
        }
Esempio n. 9
0
    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();
        }
    }
Esempio n. 10
0
        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);
            }
        }
Esempio n. 11
0
        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()));
 }
Esempio n. 13
0
 public ArrayGUI()
 {
     sceneGenerator = new SceneGenerator();
 }
Esempio n. 14
0
    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);
    }