Beispiel #1
0
    void Start()
    {
        _terrian              = new Terrian(size);
        Game.Instance.Planet  = this;
        Game.Instance.Terrian = _terrian;

        chunks = GetComponent <Chunks> ();
        Debug.Assert(chunks != null);

        water = GetComponent <Water> ();
        Debug.Assert(water != null);

        var center = new Vector3(-size / 2, -size / 2, -size / 2) + (new Vector3() * 0.5f);

        gameObject.transform.position = center;

        Terrian.Generate();

        trees          = new Trees(this, _terrian);
        trees.treesNum = treesNum;

        if (!hideTrees)
        {
            trees.Generate();
        }

        loadData();

        chunks.UpdateMesh();
        water.Load(chunks);
    }
Beispiel #2
0
 public Perlin(IListener <IGameObject> scoreListener, IListener <ISoundable> soundListener) : base(scoreListener, soundListener)
 {
     perlinNoiseGenerator = new PerlinNoiseGenerator(5120);
     noiseConverter       = new NoiseConverter();
     noiseConverter.SetSize(40, 16);
     terrian = new Terrian(scoreListener, soundListener, noiseConverter);
     noiseConverter.NewData();
 }
Beispiel #3
0
        /// <summary>
        /// Draws everything that has been created
        /// </summary>
        public void RenderScene()
        {
            while (!shutdown)
            {
                if (!IsDeviceLost())
                {
                    DeviceManager.LocalDevice.Clear(ClearFlags.Target | ClearFlags.ZBuffer, Color.Black, 1.0f, 0);
                    DeviceManager.LocalDevice.BeginScene();

                    lock (Meshes)
                    {
                        foreach (var item in Meshes)
                        {
                            item.RenderMesh();

                            if (Gravity)
                            {
                                float speed       = (gravityTimer.ElapsedMilliseconds * .05f) / 1000;
                                float newPosition = item.ObjectPosition.Y - speed;

                                if (Terrian != null && item.ObjectPosition.X >= 0 && item.ObjectPosition.X < Terrian.Height.Length)
                                {
                                    float terrainHeight = Terrian.Height[(int)item.ObjectPosition.X, (int)item.ObjectPosition.Z] + (item.ObjectScale.Y / 2);
                                    newPosition = newPosition < terrainHeight ? terrainHeight : newPosition;
                                }


                                item.Translate(item.ObjectPosition.X, newPosition, item.ObjectPosition.Z);
                            }
                        }
                    }

                    lock (Lights)
                    {
                        if (!IsGlobalLightOn)
                        {
                            foreach (var item in Lights)
                            {
                                item.Render();
                            }
                        }
                    }

                    if (Terrian != null)
                    {
                        Terrian.Render();
                    }

                    DeviceManager.LocalDevice.EndScene();
                    DeviceManager.LocalDevice.Present();
                }
            }
        }
Beispiel #4
0
    /*
     *  public void set_type(int _type){
     *  type = _type;
     *
     *  blocksprite.set_sprite(BlockSprites.get().dungeonSprite[type]);
     *  //spriteRenderer.sprite = BlockSprites.get().dungeonSprite[type];
     * }
     */
    public void set_terrian(Terrian _terrian)
    {
        if (terrian != null)
        {
            Destroy(terrian.transform.gameObject);
            terrian = null;
        }
        terrian = _terrian;//TerrianCreator.create_terrian(type)

        terrian.transform.SetParent(gameObject.transform);
        terrian.transform.position = gameObject.transform.position;

        terrian.transform.localScale = gameObject.transform.localScale;
    }
Beispiel #5
0
    public void init(int x, int y)
    {
        cur_obj  = gameObject;
        pos_x    = x;
        pos_y    = y;
        building = null;
        terrian  = null;
        //Debug.Log("name="+cur_obj.name);

        //GameObject obj = GameObject.Find("Front");
        //if (obj != null)front = obj.GetComponent<Front>();

        /*
         * for(int i = 0; i < cur_obj.transform.childCount; i++){
         *  GameObject obj = gameObject.transform.GetChild(i).gameObject;
         *  if (obj.name == "Front"){
         *      front = obj.GetComponent<Front>();
         *      Debug.Log("init front");
         *      break;
         *  }
         * }
         * type = Random.Range(0, BlockSprites.get().frontSprite.Length);
         * front.set_sprite(BlockSprites.get().frontSprite[type]);
         */
        midsprite = SpriteR.new_sprite();
        midsprite.set_sorting_layer("mid");
        midsprite.transform.SetParent(cur_obj.transform);
        mid_type = Random.Range(0, BlockSprites.get().midSprite.Length);
        midsprite.set_sprite(BlockSprites.get().midSprite[mid_type]);

        frontsprite = SpriteR.new_sprite();
        frontsprite.set_sorting_layer("front");
        frontsprite.transform.SetParent(cur_obj.transform);
        front_type = Random.Range(0, BlockSprites.get().frontSprite.Length);
        frontsprite.set_sprite(BlockSprites.get().frontSprite[front_type]);

        front2sprite = SpriteR.new_sprite();
        front2sprite.set_sorting_layer("front2");
        front2sprite.transform.SetParent(cur_obj.transform);
        //front2_type = Random.Range(0, BlockSprites.get().front2Sprite.Length);
        front2_type = 1;
        front2sprite.set_sprite(BlockSprites.get().front2Sprite[front2_type]);

        front3sprite = SpriteR.new_sprite();
        front3sprite.set_sorting_layer("front3");
        front3sprite.transform.SetParent(cur_obj.transform);
        front3sprite.set_sprite(BlockSprites.get().transparent);
    }
Beispiel #6
0
    public static Terrian create_terrian(int i)
    {
        Terrian ins = Instantiate(instance.terrians[i].GetComponent <Terrian>()) as Terrian;

        return(ins);
    }