Exemplo n.º 1
0
    /** 刷新选择的gameObject */
    private void refreshSelectGameObject()
    {
        if (_lastSelectionObject != Selection.activeGameObject)
        {
            if (Selection.activeGameObject != null)
            {
                SceneElementEditorData eData = findDataByGameObject(Selection.activeGameObject);

                if (eData != null)
                {
                    selectElement(eData);
                }
                else
                {
                    cancelSelect();
                }
            }
            else
            {
                cancelSelect();
            }

            _lastSelectionObject = Selection.activeGameObject;
        }

        //当前选择对象不为空
        if (_selectData != null && !_selectData.isTemp && !_selectData.isPicked)
        {
            setPosFromGameObject(_selectData);
        }
    }
Exemplo n.º 2
0
    /** 选择落下 */
    private bool pickDown()
    {
        if (_selectData == null)
        {
            return(false);
        }

        if (!_selectData.isPicked)
        {
            return(false);
        }

        _selectData.isPicked = false;

        if (_selectData.isTemp)
        {
            _tempData = null;
            //变实体
            _selectData.isTemp            = false;
            _selectData.config.instanceID = getOneElementInstanceID();
            _selectData.gameObject.name   = getElementName(_selectData);

            //写入
            _elementDic.put(_selectData.config.instanceID, _selectData);
            _elementDicByObj.put(_selectData.gameObject, _selectData);
        }

        // Ctrl.print("pickDown");

        setPosFromGameObject(_selectData);

        return(true);
    }
Exemplo n.º 3
0
    /** 通过game查找对象数据 */
    private SceneElementEditorData findDataByGameObject(GameObject obj)
    {
        Transform transform = obj.transform;

        while (true)
        {
            SceneElementEditorData data = toFindSceneElementEditorDataByGameObject(transform.gameObject);

            if (data != null)
            {
                return(data);
            }

            if (transform.parent != null)
            {
                transform = transform.parent;
            }
            else
            {
                return(null);
            }
        }

        return(null);
    }
Exemplo n.º 4
0
    /** 取消选中单位 */
    private bool cancelPick()
    {
        if (_selectData == null)
        {
            return(false);
        }

        if (!_selectData.isPicked)
        {
            return(false);
        }

        _selectData.isPicked = false;

        if (_selectData.isTemp)
        {
            _tempData = null;
            GameObject.DestroyImmediate(_selectData.gameObject);

            doCancelSelect();
        }
        else
        {
            setPosToGameObject(_selectData);
        }

        return(true);
    }
Exemplo n.º 5
0
    private void doCancelSelect()
    {
        if (Selection.activeGameObject == _selectData.gameObject)
        {
            Selection.activeGameObject = null;
        }

        _selectData = null;
    }
Exemplo n.º 6
0
 private void setPosToGameObject(SceneElementEditorData data)
 {
     if (data.gameObject != null)
     {
         if (data.config != null)
         {
             _tempPosDir.setByFArr(data.config.pos);
             data.gameObject.transform.position = _tempPosDir.pos.getVector();
             data.gameObject.transform.rotation = _tempPosDir.dir.getQuaternion();
         }
     }
 }
Exemplo n.º 7
0
    /** 选择怪物 */
    public void chooseOperation(OperationConfig config)
    {
        _chooseElementType     = SceneElementType.Operation;
        _chooseOperationConfig = config;

        cancelPick();
        cancelSelect();

        _tempData = createNewElement(SceneElementType.Operation, config.id);

        selectElement(_tempData);
        pickUpSelect();
    }
Exemplo n.º 8
0
    /** 选择怪物 */
    public void chooseMonster(MonsterConfig config)
    {
        _chooseElementType   = SceneElementType.Monster;
        _chooseMonsterConfig = config;

        cancelPick();
        cancelSelect();

        _tempData = createNewElement(SceneElementType.Monster, config.id);

        selectElement(_tempData);
        pickUpSelect();
    }
Exemplo n.º 9
0
    /** 选择掉落物品 */
    public void chooseFieldItem(ItemConfig config)
    {
        _chooseElementType = SceneElementType.FieldItem;
        _chooseItemConfig  = config;

        cancelPick();
        cancelSelect();

        _tempData = createNewElement(SceneElementType.FieldItem, config.id);
        _tempData.config.iArgs = new int[] { 1 };   //1个

        selectElement(_tempData);
        pickUpSelect();
    }
Exemplo n.º 10
0
    private void setPosFromGameObject(SceneElementEditorData data)
    {
        if (data.gameObject != null && data.gameObject.active)
        {
            if (data.config != null)
            {
                //更新位置
                Transform tt = data.gameObject.transform;

                _tempPosDir.pos.setByVector(tt.position);
                _tempPosDir.dir.setByQuaternion(tt.rotation);

                data.config.pos = _tempPosDir.getFArr();
            }
        }
    }
Exemplo n.º 11
0
    /** 删除单位 */
    private void deleteElement(SceneElementEditorData data)
    {
        GameObject gameObject = data.gameObject;

        _elementDicByObj.remove(gameObject);
        _elementDic.remove(data.config.instanceID);

        _elementInstanceID = -1;

        try
        {
            GameObject.DestroyImmediate(gameObject);
        }
        catch (Exception e)
        {
        }
    }
Exemplo n.º 12
0
    protected virtual SceneElementEditorData toFindSceneElementEditorDataByGameObject(GameObject gameObject)
    {
        //是临时数据
        if (_tempData != null && _tempData.gameObject == gameObject)
        {
            return(_tempData);
        }

        SceneElementEditorData eData = _elementDicByObj.get(gameObject);

        if (eData != null)
        {
            return(eData);
        }

        return(null);
    }
Exemplo n.º 13
0
    protected void selectElement(SceneElementEditorData data)
    {
        if (_selectData != data)
        {
            if (_selectData != null)
            {
                cancelSelect();
            }

            _selectData = data;
        }

        //更新选择
        if (data != null && data.gameObject != null)
        {
            Selection.activeGameObject = data.gameObject;
        }
    }
Exemplo n.º 14
0
    protected override SceneElementEditorData toFindSceneElementEditorDataByGameObject(GameObject gameObject)
    {
        SceneElementEditorData re = base.toFindSceneElementEditorDataByGameObject(gameObject);

        if (re != null)
        {
            return(re);
        }

        re = _gridShowsDicByObj.get(gameObject);

        if (re != null)
        {
            return(re);
        }

        return(null);
    }
Exemplo n.º 15
0
    /** 读取数据 */
    public void read()
    {
        string path = SceneEditorWindow.getScenePlaceFilePath(config.id);

        BytesReadStream stream = FileUtils.readFileForBytesReadStream(path);

        if (stream != null)
        {
            int len = stream.readLen();

            for (int i = 0; i < len; i++)
            {
                ScenePlaceElementConfig eConfig = new ScenePlaceElementConfig();
                eConfig.readBytesSimple(stream);

                SceneElementEditorData eData = new SceneElementEditorData();
                eData.config = eConfig;

                elements.put(eData.config.instanceID, eData);
            }
        }
    }
Exemplo n.º 16
0
    private string getElementName(SceneElementEditorData data)
    {
        switch (data.config.type)
        {
        case SceneElementType.Npc:
        {
        }
        break;

        case SceneElementType.Monster:
        {
            return("monster:" + data.config.instanceID);
        }

        case SceneElementType.FieldItem:
        {
            return("fieldItem:" + data.config.instanceID);
        }
        }

        return("");
    }
Exemplo n.º 17
0
    private GameObject createModel(int modelID, SceneElementEditorData eData)
    {
        ModelConfig config = ModelConfig.get(modelID);

        GameObject obj = new GameObject(getElementName(eData));

        SceneElementComponent component = obj.AddComponent <SceneElementComponent>();

        component.instanceID = eData.config.instanceID;

        if (config != null)
        {
            GameObject asset  = AssetDatabase.LoadAssetAtPath <GameObject>(ShineToolGlobal.assetSourceStr + "/" + config.source);
            GameObject newOne = GameObject.Instantiate(asset);
            newOne.transform.SetParent(obj.transform);
        }

        //TODO:根据type设置layer
        obj.transform.SetParent(_unitLayer.transform);

        return(obj);
    }
Exemplo n.º 18
0
    /** 创建新对象 */
    private SceneElementEditorData createNewElement(int type, int id)
    {
        SceneElementEditorData eData = new SceneElementEditorData();

        eData.isTemp = true;
        ScenePlaceElementConfig eConfig = eData.config = new ScenePlaceElementConfig();

        eConfig.sceneID    = _currentSceneData.config.id;
        eConfig.instanceID = 0;
        eConfig.type       = type;
        eConfig.id         = id;
        eConfig.level      = 1;
        eConfig.pos        = new float[5];
        eConfig.force      = 1;
        eConfig.isInitAdd  = true;     //默认初始添加
        eConfig.iArgs      = ObjectUtils.EmptyIntArr;
        eConfig.fArgs      = ObjectUtils.EmptyFloatArr;

        makeElementModel(eData);

        return(eData);
    }
Exemplo n.º 19
0
    private bool deleteSelect()
    {
        if (_selectData != null)
        {
            SceneElementEditorData selectData = _selectData;

            if (!selectData.isTemp)
            {
                cancelPick();
            }
            else
            {
                // cancelPick();
                cancelSelect();
                deleteElement(selectData);
            }

            return(true);
        }

        return(false);
    }
Exemplo n.º 20
0
    private void makeElementModel(SceneElementEditorData data)
    {
        switch (data.config.type)
        {
        case SceneElementType.Npc:
        {
        }
        break;

        case SceneElementType.Monster:
        {
            MonsterConfig monsterConfig = MonsterConfig.get(data.config.id);

            data.gameObject = createModel(FightUnitConfig.get(monsterConfig.fightUnitID).modelID, data);
        }
        break;

        case SceneElementType.Operation:
        {
            OperationConfig operationConfig = OperationConfig.get(data.config.id);

            data.gameObject = createModel(operationConfig.modelID, data);
        }
        break;

        case SceneElementType.FieldItem:
        {
            ItemConfig itemConfig = ItemConfig.get(data.config.id);

            data.gameObject = createModel(itemConfig.fieldItemModelID, data);
        }
        break;
        }

        setPosToGameObject(data);
    }