コード例 #1
0
    public void SaveTerrainEditFileList(TerrainEditorDataArray filedata, TerrainEditorData editorData)
    {
        if (null == filedata)
        {
            filedata          = new TerrainEditorDataArray();
            filedata.DataList = new System.Collections.Generic.List <TerrainEditorData>();
        }

        if (null != editorData)
        {
            bool bIsNeedAddNew = true;
            for (int i = 0; i < filedata.DataList.Count; ++i)
            {
                if (filedata.DataList[i].ID == editorData.ID)
                {
                    filedata.DataList[i] = editorData;
                    bIsNeedAddNew        = false;
                    break;
                }
            }
            if (bIsNeedAddNew)
            {
                filedata.DataList.Add(editorData);
            }
        }

        byte[] data = ThriftSerialize.Serialize(filedata);
        FileUtils.WriteByteFile(m_strDataPath, data);
    }
コード例 #2
0
    private void Copy(TerrainEditorData data)
    {
        int max = 0;

        for (int i = 0; i < m_DataList.DataList.Count; ++i)
        {
            if (m_DataList.DataList[i].ID > max)
            {
                max = m_DataList.DataList[i].ID;
            }
        }
        ++max;
        TerrainEditorData elem = new TerrainEditorData();

        elem.ID              = max;
        elem.MapName         = data.MapName;
        elem.MapResName      = data.MapResName;
        elem.MapSceneName    = data.MapSceneName;
        elem.NpcDataList     = data.NpcDataList;
        elem.PlayerInitPos   = data.PlayerInitPos;
        elem.TriggerDataList = data.TriggerDataList;

        m_DataList.DataList.Add(elem);

        Save();
    }
コード例 #3
0
 private void ChoiseMap(TerrainEditorData data)
 {
     m_Instance.Close();
     m_Instance = null;
     TerrainEditorWindow.Instance.OpenTerrain(data);
     EditorWindow.FocusWindowIfItsOpen(typeof(TerrainEditorWindow));
 }
コード例 #4
0
    private void SaveData()
    {
        if (null == m_TriggerList)
        {
            EditorUtility.DisplayDialog("保存失败", "!!!", "ok");
            return;
        }
        if (string.IsNullOrEmpty(m_CurrentEditiongMapName) || string.IsNullOrEmpty(m_CurrentMapResPath) || m_CurrentEditiongMapId <= 0)
        {
            EditorUtility.DisplayDialog("保存失败", "地图信息不完整", "ok");
            return;
        }
        if (null == m_PlayerChar)
        {
            EditorUtility.DisplayDialog("保存失败", "必须编辑玩家的出生位置", "ok");
            return;
        }
        m_OutputData            = new TerrainEditorData();
        m_OutputData.ID         = m_CurrentEditiongMapId;
        m_OutputData.MapName    = m_CurrentEditiongMapName;
        m_OutputData.MapResName = m_CurrentMapResPath;

        m_OutputData.TriggerDataList = new System.Collections.Generic.List <TerrainTriggerData>(m_TriggerList.Count);

        for (int i = 0; i < m_TriggerList.Count; ++i)
        {
            m_OutputData.TriggerDataList.Add(m_TriggerList[i].TriggerData);
        }

        m_OutputData.NpcDataList = new System.Collections.Generic.List <TerrainNpcData>(m_NpcList.Count);
        for (int i = 0; i < m_NpcList.Count; ++i)
        {
            m_OutputData.NpcDataList.Add(m_NpcList[i].m_NpcData);
        }
        m_OutputData.PlayerInitPos     = new PlayerInitPosData();
        m_OutputData.PlayerInitPos.Pos = new ThriftVector3();
        m_OutputData.PlayerInitPos.Rot = new ThriftVector3();
        m_OutputData.PlayerInitPos.Id  = m_PlayerChar.GetInstanceId();
        m_OutputData.PlayerInitPos.Pos.SetVector3(m_PlayerChar.GetTransformData().GetPosition());
        m_OutputData.PlayerInitPos.Rot.SetVector3(m_PlayerChar.GetTransformData().GetRotation());
        m_DataList = GetTerrainEditFileList();

        SaveTerrainEditFileList(m_DataList, m_OutputData);
    }
コード例 #5
0
    public void InitializeTerrain(int terrainId, bool IsShowTrigger, bool isInitNpcAI = true)
    {
        m_CurrentTerrainData = ConfigManager.Instance.GetTerrainEditorData(terrainId);
        if (null == m_CurrentTerrainData)
        {
            Debuger.LogError("error terrain id : " + terrainId);
            return;
        }
        if (null == m_TriggerMgr)
        {
            m_TriggerMgr = new TerrainTriggerManager();
        }
        m_TriggerMgr.InitTerrainTrigger(m_CurrentTerrainData.TriggerDataList, IsShowTrigger);

        if (null == m_NpcMap)
        {
            m_NpcMap = new Dictionary <int, Npc>(m_CurrentTerrainData.NpcDataList.Count);
        }

        //init npc
        for (int i = 0; i < m_CurrentTerrainData.NpcDataList.Count; ++i)
        {
            TerrainNpcData elem = m_CurrentTerrainData.NpcDataList[i];

            Npc newNpc = new Npc();
            newNpc.Initialize(elem.Id);
            newNpc.GetTransformData().SetPosition(elem.Pos.GetVector3());
            newNpc.GetTransformData().SetRotation(elem.Rot.GetVector3());
            newNpc.GetTransformData().SetScale(elem.Scale.GetVector3());
            newNpc.SetAIStatus(isInitNpcAI);
            m_NpcMap.Add(elem.Id, newNpc);
        }

        TerrainTickTask.Instance.RegisterToUpdateList(Update);
        TerrainTickTask.Instance.SetStatus(true);
        GameCamera.OpenClick = true;
        m_bIsActive          = true;
        m_ActionState        = new List <int>();
        MessageDispatcher.Instance.RegistMessage(ClientCustomMessageDefine.C_ACTION_START, OnActionStar);
        MessageDispatcher.Instance.RegistMessage(ClientCustomMessageDefine.C_ACTION_FININSH, OnActionFinish);
    }
コード例 #6
0
    public void OpenTerrain(TerrainEditorData data)
    {
        ClearData();

        m_bIsCreateNew           = true;
        m_CurrentEditiongMapId   = data.ID;
        m_CurrentEditiongMapName = data.MapName;
        m_MapNameInputBuffer     = m_CurrentEditiongMapId.ToString();

        m_ObjMap = ResourceManager.Instance.LoadBuildInResource <GameObject>(data.MapResName, AssetType.Map);

        for (int i = 0; data.TriggerDataList != null && i < data.TriggerDataList.Count; ++i)
        {
            TerrainTriggerData elem = data.TriggerDataList[i];

            AddTrigger
                (elem.AreaType,
                elem.Pos.GetVector3(),
                elem.Rot.GetVector3(),
                elem.Scale.GetVector3(),
                elem.TargetMethodId,
                elem.EnterLimitMethodId,
                elem.ExitLimitMethodId,
                elem.EnterFuncMethodId,
                elem.ExitFuncMethodId
                );
        }
        for (int i = 0; null != data.NpcDataList && i < data.NpcDataList.Count; ++i)
        {
            TerrainNpcData elem = data.NpcDataList[i];

            AddNpc(elem.Id, elem.Pos.GetVector3(), elem.Rot.GetVector3(), elem.Scale.GetVector3());
        }

        PlayerInitPosData pos = data.PlayerInitPos;

        if (null != pos)
        {
            CreatePlayerCharactor(pos.Id, pos.Pos.GetVector3(), pos.Rot.GetVector3());
        }
    }