private void CreateModelForPiece(int id)
        {
            Piece          piece      = board.Pieces[id];
            PiecePrototype behavior   = db.PiecePrototypes[piece.PrototypeID];
            int            modelIndex = 0;

            if (piece.OwnerPlayer == PlayerTurnOrder.First)
            {
                modelIndex = behavior.FirstModelIndex;
            }
            else if (piece.OwnerPlayer == PlayerTurnOrder.Second)
            {
                modelIndex = behavior.SecondModelIndex;
            }
            if (modelIndex > db.ModelPrefabs.Count)
            {
                modelIndex = 0;
            }
            GameObject gobj = (GameObject)Instantiate(db.ModelPrefabs[modelIndex]);

            gobj.layer = pieceLayer;
            foreach (var child in gobj.GetComponentsInChildren <Transform>())
            {
                child.gameObject.layer = pieceLayer;
            }
            PieceModel model = gobj.AddComponent <PieceModel>();

            model.PieceID           = id;
            gobj.transform.position = PiecePositionHelper.FigureCenter(db, piece.BoardPosition);
            gobj.transform.rotation = Quaternion.Euler(0, piece.OwnerPlayer == PlayerTurnOrder.Second ? 180 : 0, 0);
            modelGObjs[id]          = model;
        }
        private void OnPieceMove(int pieceIndex)
        {
            PieceModel model = models.GetModelObject(pieceIndex);
            Piece      data  = board.Pieces[pieceIndex];

            model.transform.position = PiecePositionHelper.FigureCenter(db, data.BoardPosition);
        }
Ejemplo n.º 3
0
        private void BuildPattern(ActionIndicatorPattern pattern)
        {
            foreach (var ind in pattern.indicators)
            {
                IntVector2 boardPos = ind.boardPosition;
                int        height   = heights[boardPos.x, boardPos.y];
                heights[boardPos.x, boardPos.y]++;
                int        modelIndex    = db.Indicators.GetIndexFor(ind.type, ind.strength);
                GameObject model         = GetModel(modelIndex);
                Vector3    basePosition  = PiecePositionHelper.FigureCenter(db, boardPos);
                Vector3    finalPosition = new Vector3(basePosition.x, basePosition.y + db.Indicators.StackingHeight * height, basePosition.z);
                model.transform.position = finalPosition;

                if (ind.decorationModel >= 0)
                {
                    GameObject decorModel = GetModel(ind.decorationModel);
                    decorModel.transform.position = finalPosition;
                    //decorModel.transform.rotation = Quaternion.Euler(90, 0, 90);
                }
            }
        }