public void LoadWall(int _originNumber, Item _loadItem, string _objectName, Vector3 _currentPosition, Vector3 _currentRotate, Vector3 _currentScale, int _placeNumber, float _tilingX, float _tilingY)
    {
        /* 게임 오브젝트 생성 */
        GameObject _loadObject = Instantiate(_loadItem.item3d);

        /* 부모 지정 */
        _loadObject.transform.SetParent(_inDoor.transform.GetChild(0));

        /* 자식으로 변경 */
        _loadObject = _loadObject.transform.GetChild(0).gameObject;

        /* ItemObject 스크립트 추가 */
        ItemObject _tmp = _loadObject.AddComponent <ItemObject>();

        /* 빠른 연결을 위한 캐싱 작업 */
        Item _tmpItem = new Item(_objectName, _itemListControl._wallDBIndex + 1, _originNumber, _loadObject);

        /* 추가한 ItemObject에 현재 Item의 정보를 담음 */
        _tmp._thisItem = _tmpItem;

        /* DB에 삽입 */
        _itemListControl.AddWall(_tmpItem);

        /* PlaceNumber 지정 */
        _tmp._placeNumber = _placeNumber;

        /* 이름 지정 */
        _loadObject.transform.parent.name = _loadObject.transform.parent.name.Substring(0, _loadObject.transform.parent.name.Length - 7);

        /* 위치 조정 */
        _loadObject.transform.parent.position = _currentPosition;

        /* 회전 조절*/
        _loadObject.transform.parent.Rotate(_currentRotate);

        /* 크기 지정*/
        _loadObject.transform.parent.localScale = _currentScale;

        /* Sprite 복사 */
        Sprite _tmpSprite = _itemListControl.GetImages(3, _placeNumber);

        /* Sprite가 존재하면 */
        if (_tmpSprite != null)
        {
            /* Texture 지정 */
            _loadObject.GetComponent <MeshRenderer>().material.mainTexture = Instantiate(_tmpSprite).texture;
        }

        /* Tiling 값 지정 */
        _loadObject.GetComponent <MeshRenderer>().material.mainTextureScale = new Vector2(_tilingX, _tilingY);
    }
Example #2
0
    /*이 장소를 클릭 했을 경우*/
    public void OnClickThisPlace()
    {
        if (_placeController._clickedPlace != null)
        {
            /* 클릭된 Place 객체의 MeshRenderer 컴포넌트를 담음 */
            MeshRenderer _clickedMeshRenderer = _placeController._clickedPlace.GetComponent <Transform>().GetChild(0).GetComponent <MeshRenderer>();

            /* Slot의 OriginNumber에 해당하는 Sprite 정보를 가져옴 */
            Sprite _tmp = _itemListControl.GetImages(3, _thisItem._originNumber);

            /* 존재하지 않는 Sprite이면 */
            if (_tmp == null)
            {
                /* 건물의 OriginNumber를 저장 */
                int _buildingOriginNumber = _placeController._clickedPlace.GetComponent <Transform>().GetChild(0).GetComponent <ItemObject>()._thisItem._originNumber;

                /* 건물들의 3DObject가 들어있는 디렉터리 경로 지정 */
                System.IO.DirectoryInfo _dir = new System.IO.DirectoryInfo(dir_path + "/Resources/Item/Wall/Build");

                /* 디렉터리 탐색 */
                foreach (System.IO.FileInfo _file in _dir.GetFiles())
                {
                    /* 파일의 OriginNumber와 일치하면 */
                    if (_file.Name.Split('_')[0] == _buildingOriginNumber.ToString() && _file.Extension.ToLower() == ".prefab")
                    {
                        /* Resource를 통해 건물 정보 저장 */
                        GameObject _building = Resources.Load <GameObject>("Item/Wall/Build/" + _file.Name.Substring(0, _file.Name.Length - 7));

                        /* 머터리얼을 복제해서 클릭된 건물의 머터리얼로 지정 */
                        _clickedMeshRenderer.material = Instantiate(_building.GetComponent <Transform>().GetChild(0).GetComponent <MeshRenderer>().sharedMaterial);

                        break; //반복문 빠져나옴
                    }
                }
            }

            /* 존재하는 Sprite이면 */
            else
            {
                /* Sprite 복제 */
                Sprite _tmpClone = Instantiate(_tmp);

                /* Texture로 적용 */
                _clickedMeshRenderer.material.mainTexture = _tmpClone.texture;
            }

            /* 클릭된 건물의 ItemObject에 PlaceNumber 지정 */
            HistoryController.pushTileHist(_placeController._clickedPlace.GetComponent <Transform>().GetChild(0).GetComponent <ItemObject>()._thisItem._originNumber, _placeController._clickedPlace.GetComponent <Transform>().GetChild(0).GetComponent <ItemObject>()._thisItem._objectNumber, _placeController._clickedPlace.transform.GetChild(0).GetComponent <ItemObject>()._placeNumber);
            _placeController._clickedPlace.GetComponent <Transform>().GetChild(0).GetComponent <ItemObject>()._placeNumber = _thisItem._originNumber;
        }
    }