Exemplo n.º 1
0
        protected override void Loaded(BehaviorLoadedEventArgs args)
        {
            args.TrackSubscription(Draw.Subscribe(OnDraw));
            args.TrackSubscription(CreateResources.Subscribe(e => e.Tasks.Add(OnCreateResourcesAsync(e))));

            _terrain = Entity.GetBehavior <TerrainBehavior>();
        }
Exemplo n.º 2
0
        public TerrainPage()
        {
            /*
             * HEIGHT MAP INFO:
             * - Kitzbüheler Alpen: 20x20 km, BaseHeight: 719 m, MaxHeight: 2328 m
             * - Wildkogel        :  8x8  km, BaseHeight: 779 m, MaxHeight: 2264 m
             * - Zillertal Arena  : 20x20 km, BaseHeight: 524 m, MaxHeight: 3049 m
             */

            InitializeComponent();

            Engine.Engine.Current.Attach(canvas);

            var level = new Level();

            var spriteManager = new SpriteManagerBehavior();

            spriteManager.Sprites.Add("Terrain.Grass", new Uri("ms-appx:///Assets/Sprites/Grass0202_1_S.jpg"), new Vector2(20, 20));
            spriteManager.Sprites.Add("Terrain.Snow", new Uri("ms-appx:///Assets/Sprites/Snow0080_1_S.jpg"), new Vector2(20, 20));
            spriteManager.Sprites.Add("Terrain.Rock", new Uri("ms-appx:///Assets/Sprites/terrain-cliffs-ground.png"), new Vector2(20, 20));
            spriteManager.Sprites.Add("Terrain.HeightMap", new Uri("ms-appx:///Assets/Sprites/HeightMaps/Wildkogel8x8 Height Map (Merged).png"), new Vector2(8000, 8000));
            spriteManager.Sprites.Add("Road", new Uri("ms-appx:///Assets/Sprites/Roads0059_1_S.jpg"), new Vector2(10, 10));

            var terrain = new TerrainBehavior
            {
                Height     = 2264,
                BaseHeight = 779,
                HeightMap  = "Terrain.HeightMap"
            };

            var terrainRenderer = new TerrainRendererBehavior
            {
                GrassSprite = "Terrain.Grass",
                SnowSprite  = "Terrain.Snow",
                RockSprite  = "Terrain.Rock"
            };

            level.RootEntity.AddBehavior(spriteManager);
            level.RootEntity.AddBehavior(terrain);
            level.RootEntity.AddBehavior(terrainRenderer);

            Engine.Engine.Current.AddFeature(new TrackTerrainMousePositionEngineFeature(terrain, true));

            Engine.Engine.Current.LoadLevel(level);
            Engine.Engine.Current.StartOrResume();

            Engine.Engine.Current.Events.CreateResources.Subscribe(Canvas_CreateResources);
        }
Exemplo n.º 3
0
        public TerrainTestPage()
        {
            InitializeComponent();

            Engine.Engine.Current.Attach(canvas);

            var level = new Level();

            Engine.Engine.Current.AddFeature(new TrackMousePositionEngineFeature(true));

            var terrain = new TerrainBehavior();

            Engine.Engine.Current.LoadLevel(level);

            Engine.Engine.Current.StartOrResume();
        }
Exemplo n.º 4
0
    public void Awake()
    {
        TerrainRandomNumber = UnityEngine.Random.Range(0, 100000);

        TerrainRandNum = Random.Range(1, 1000);
        ChildTransform = GetComponent <Transform>();
        TempObjects    = new List <GameObject>();
        TileHeight     = new float[] { 2f, 2f, 2f, 2f, 2f, 2f, 2f, 2f, 2f, 2f, 2f, 2f, 2f, 2f, 2f, 2f };
        PowValue       = 2.0f;

        TileProperties = new float[System.Enum.GetNames(typeof(BiomeManager.CellType)).Length + System.Enum.GetNames(typeof(BiomeManager.TowerType)).Length];
        for (int i = 0; i < TileProperties.Length; i++)
        {
            TileProperties[i] = 0;
        }

        InnerTileNoise = new float[10, 10];

        terrain = gameObject.GetComponent <TerrainBehavior>();
    }
Exemplo n.º 5
0
    public void LoadTerrain(TerrainBehavior terrain, float randNumber, GameObject TowersParent)
    {
        if (CurrentTerrainBehavior)
        {
            Destroy(CurrentTerrainBehavior.TowerMeshParent);
        }

        CurrentTerrainBehavior = terrain;
        //CurrentTerrainBehavior.Biome = GetComponent<CellBehaviour>().TileBiome;

        CurrentTerrainBehavior.TowerParent = TowersParent;
        CurrentTerrainBehavior.GenerateTerrain(randNumber, CellObjects, Cells, GridSize);

        if (MeshParent)
        {
            Destroy(MeshParent);
        }

        MeshParent = new GameObject();
        MeshParent.AddComponent <MeshRenderer>();
        MeshParent.AddComponent <MeshFilter>();
        MeshFilter[]      meshFilters = SmallCellsParent.GetComponentsInChildren <MeshFilter>();
        CombineInstance[] combine     = new CombineInstance[meshFilters.Length];

        int i = 0;

        while (i < meshFilters.Length)
        {
            combine[i].mesh      = meshFilters[i].sharedMesh;
            combine[i].transform = meshFilters[i].transform.localToWorldMatrix;
            meshFilters[i].gameObject.GetComponent <MeshRenderer>().enabled = false;

            i++;
        }
        MeshParent.transform.GetComponent <MeshFilter>().mesh = new Mesh();
        MeshParent.transform.GetComponent <MeshFilter>().mesh.CombineMeshes(combine);
        MeshParent.transform.GetComponent <Renderer>().material = meshFilters[0].gameObject.GetComponent <Renderer>().material;
        MeshParent.transform.gameObject.SetActive(true);
    }
Exemplo n.º 6
0
    private void Start()
    {
        TilePostition                     = new List <Vector2>();
        SmallCellsParent                  = new GameObject();
        SmallCellsParent.name             = "Inner Cells";
        SmallCellsParent.transform.parent = transform;
        CurrentTerrainBehavior            = null;
        CellObjects = new List <List <GameObject> >();
        Cells       = new List <List <Cell> >();
        CreateHexagon();

        for (int q = 0; q < GridSize * 2 + 1; q++)
        {
            Cells[q] = new List <Cell>();

            for (int r = 0; r < CellObjects[q].Count; r++)
            {
                Cells[q].Add(CellObjects[q][r].GetComponent <Cell>());
                Cells[q][r].TilePostition = TilePostition[tempint];
                tempint++;
            }
        }
    }
Exemplo n.º 7
0
    private void processBehavior(TerrainBehavior tb)
    {
        if (tb.fx != null)
        {
            Instantiate(tb.fx, transform.position, Quaternion.identity);
        }

        if (tb.sound != null && tb.sound != "")
        {
            SoundManager.instance.Play(tb.sound);
        }

        string seq  = tb.type.ToString().ToLower();
        Anim   anim = animLayers[tb.layer];

        if (anim.IsCached(seq))
        {
            if (seq == TerrainBehaviorType.OnStill.ToString().ToLower() && anim.sequenceName == seq)
            {
                return;
            }
            anim.Play(seq);
        }
    }