public void SetData(List <SceneItemInfo> pagePath, long exhibitID, int exhibitIndex, GameObject srcObj, int mainPageIndex, string cameraPoint) { this.mainPageIndex = mainPageIndex; this.cameraPoint = cameraPoint; pageState = new bool[pagePath.Count]; selectItemIndex = new List <bool> [pagePath.Count]; m_allAssetPath = pagePath; this.m_exhibitID = exhibitID; this.m_exhibitIndex = exhibitIndex; this.m_srcObj = srcObj; for (int i = 0; i < pagePath.Count; i++) { SceneItemInfo itemInfo = m_allAssetPath[i];//AssetDatabase.LoadAssetAtPath<SceneItemInfo>(m_allAssetPath[i]); for (int j = 0; j < itemInfo.items.Count; j++) { if (itemInfo.items[j].itemID == exhibitID) { selectItemIndex[i] = new List <bool>(); for (int k = 0; k < itemInfo.items[j].itemPos.Count; k++) { if (k == m_exhibitIndex) { selectItemIndex[i].Add(true); } else { selectItemIndex[i].Add(false); } } } } } }
void SysncItem(long id, int index, Transform trans, string cameraPoint) //Vector3 pos,Vector3 scale,Vector3 rotation { List <SceneLogSyncData> logData = new List <SceneLogSyncData>(); SceneLogSyncData ld = new SceneLogSyncData(m_allAssetName[selectDataIndex], id, index); logData.Add(ld); for (int i = 0; i < m_allItemInfo.Count; i++) { SceneItemInfo scenePageData = m_allItemInfo[i]; //AssetDatabase.LoadAssetAtPath<SceneItemInfo>(m_allAssetPath[i]); for (int j = 0; j < scenePageData.items.Count; j++) { if (scenePageData.items[j].itemID == id) { if (scenePageData.items[j].itemPos.Count <= index) { Debug.LogError("sysnc error index : " + id + " " + index + " page:" + m_allItemInfo[i].jsonName); continue; } SceneLogSyncData ld1 = new SceneLogSyncData(m_allItemInfo[i].jsonName, id, index); logData.Add(ld1); scenePageData.items[j].itemPos[index].pos = trans.position; //pos; scenePageData.items[j].itemPos[index].rotate = trans.eulerAngles; //rotation; scenePageData.items[j].itemPos[index].scale = trans.localScale; //scale; scenePageData.items[j].itemPos[index].m_cameraNode = cameraPoint; break; } } } UserLog.SyncSceneLog(logData, trans.position, trans.eulerAngles, trans.localScale); }
static void setAssetData(SceneItemJson groupData, SceneItemInfo itemInfos) { itemInfos.lightMapName = groupData.lightMapName; itemInfos.items = new List <ItemInfo>(); for (int i = 0; i < groupData.items.Count; i++) { ItemInfoJson infoJson = groupData.items[i]; ItemInfo itemInfo = new ItemInfo(); itemInfo.itemID = infoJson.itemID; itemInfo.itemPercent = infoJson.itemPercent; itemInfo.itemName = infoJson.itemName; itemInfo.itemPos = new List <ItemPosInfo>(); itemInfos.items.Add(itemInfo); for (int j = 0; j < infoJson.itemPos.Count; j++) { ItemPosInfo posInfo = new ItemPosInfo(); posInfo.lightIndex = infoJson.itemPos[j].lightIndex; posInfo.offsetX = infoJson.itemPos[j].offsetX; posInfo.offsetY = infoJson.itemPos[j].offsetY; posInfo.percent = infoJson.itemPos[j].percent; posInfo.pos = new Vector3(infoJson.itemPos[j].pos.x, infoJson.itemPos[j].pos.y, infoJson.itemPos[j].pos.z); posInfo.rotate = new Vector3(infoJson.itemPos[j].rotate.x, infoJson.itemPos[j].rotate.y, infoJson.itemPos[j].rotate.z); posInfo.scale = new Vector3(infoJson.itemPos[j].scale.x, infoJson.itemPos[j].scale.y, infoJson.itemPos[j].scale.z); posInfo.m_cameraNode = infoJson.itemPos[j].cameraNode; posInfo.tilingX = infoJson.itemPos[j].tilingX; posInfo.tilingY = infoJson.itemPos[j].tilingY; posInfo.type = (ItemType)infoJson.itemPos[j].type; itemInfo.itemPos.Add(posInfo); } } }
public static List <SceneItemInfo> RevertAsset() { Scene scene = SceneManager.GetActiveScene(); if (scene == null) { return(null); } string sceneName = scene.name; string rootPath = Application.dataPath + "/Res/SceneConfig/" + sceneName; if (!Directory.Exists(rootPath)) { Directory.CreateDirectory(rootPath); } List <SceneItemInfo> itemInfos = new List <SceneItemInfo>(); string[] files = Directory.GetFiles(rootPath); for (int i = 0; i < files.Length; i++) { FileInfo fileInfo = new FileInfo(files[i]); if (fileInfo.Name.Contains(".json") && !fileInfo.Name.Contains(".meta")) { SceneItemInfo info = SetAssetDataJson(files[i]); info.jsonName = fileInfo.Name; itemInfos.Add(info); } } return(itemInfos); }
/// <summary> /// 第一次进场景的时候没有移动的时候,不会显示神圣晶石界面 /// </summary> void RefreshHolyFirstLogin() { if(GameCenter.activityMng.GetActivityState(ActivityType.HOLYSPAR) == ActivityState.ONGOING) { FDictionary itemList = GameCenter.sceneMng.SceneItemInfoDictionary; SceneItem holyStone = null; foreach(int key in itemList.Keys) { SceneItemInfo itemInfo = itemList[key] as SceneItemInfo; if(itemInfo.FunctionType == SceneFunctionType.HOLYSTONE) { holyStone = GameCenter.curGameStage.GetSceneItem(itemInfo.ServerInstanceID); break; } } if(holyStone != null) { int distance = (int)((GameCenter.curMainPlayer.transform.position - holyStone.transform.position).sqrMagnitude); if(distance < 144) { if(GameCenter.taskMng.CurSelectToggle != ToggleType.HOLYSTONE) { GameCenter.activityMng.C2S_ReqHolyInfo(); GameCenter.uIMng.CloseGUI(GUIType.TASK); GameCenter.taskMng.SetCurSelectToggle(ToggleType.HOLYSTONE); GameCenter.uIMng.GenGUI(GUIType.TASK,true); } } } } }
void OnShowPage() { //页签 EditorGUILayout.BeginVertical(GUILayout.Width(250), GUILayout.Height(580)); itemInfoBenginScroll = EditorGUILayout.BeginScrollView(itemInfoBenginScroll, GUILayout.Width(250), GUILayout.Height(580)); for (int i = 0; i < m_allAssetPath.Count; i++) { EditorGUILayout.BeginHorizontal(); pageState[i] = EditorGUILayout.Toggle("", pageState[i], GUILayout.Width(20), GUILayout.Height(30)); //string[] assetPathSplit = m_allAssetPath[i].Split('/'); string assetPathName = m_allAssetPath[i].jsonName;//assetPathSplit[assetPathSplit.Length - 1]; if (selectPageIndex == i) { if (GUILayout.Button(assetPathName, chooseStyle, GUILayout.Width(220), GUILayout.Height(30))) { selectPageIndex = i; currentItemInfo = m_allAssetPath[selectPageIndex];//AssetDatabase.LoadAssetAtPath<SceneItemInfo>(m_allAssetPath[selectPageIndex]); } } else { if (GUILayout.Button(assetPathName, style, GUILayout.Width(220), GUILayout.Height(30))) { selectPageIndex = i; currentItemInfo = m_allAssetPath[selectPageIndex];//AssetDatabase.LoadAssetAtPath<SceneItemInfo>(m_allAssetPath[selectPageIndex]); } } EditorGUILayout.EndHorizontal(); GUILayout.Button("", emptyStyle, GUILayout.Width(220), GUILayout.Height(5)); } EditorGUILayout.EndScrollView(); EditorGUILayout.EndVertical(); }
/// <summary> /// 保存位置数据 /// </summary> void SaveJsonData() { if (!Directory.Exists(jsonPath)) { Directory.CreateDirectory(jsonPath); } ///获取服务端数据 //SceneItemServerJson serverJson = fastJSON.JSON.ToObject<SceneItemServerJson>(); SceneDataJson serverJson = getServerData(); if (serverJson == null) { serverJson = new SceneDataJson(); //服务端数据 serverJson.sceneDatas = new List <SceneItemServerJson>(); } //SceneDataJson sceneDataJson = new SceneDataJson(); //服务端数据 //sceneDataJson.sceneDatas = new List<SceneItemServerJson>(); for (int i = 0; i < m_allItemInfo.Count; i++) { SceneItemInfo scenePageData = m_allItemInfo[i];//AssetDatabase.LoadAssetAtPath<SceneItemInfo>(m_allAssetPath[i]); if (scenePageData != null) { SceneItemJson itemJson = new SceneItemJson(scenePageData); //sceneDataJson.sceneDatas.Add(itemJson); string jsonStr = fastJSON.JSON.ToJSON(itemJson); SceneLightHelper.CreateJson(jsonPath + scenePageData.jsonName, jsonStr); int groupID = int.Parse(scenePageData.jsonName.Split('.')[0]); SceneItemServerJson itemServerJson = new SceneItemServerJson(scenePageData); itemServerJson.groupId = groupID; //sceneDataJson.sceneDatas.Add(itemServerJson); bool isexist = false; for (int j = 0; j < serverJson.sceneDatas.Count; j++) { SceneItemServerJson serverJson00 = serverJson.sceneDatas[j]; if (serverJson00.groupId == groupID) { serverJson.sceneDatas[j] = itemServerJson; isexist = true; break; } } if (!isexist) { serverJson.sceneDatas.Add(itemServerJson); } } } //服务端数据 string serverJsonStr = fastJSON.JSON.ToJSON(serverJson); SceneLightHelper.CreateJson(Application.streamingAssetsPath + "/SceneData/scenedata.json", serverJsonStr); }
static SceneItemInfo SetAssetDataJson(string jsonFullPath) { StreamReader reader = new StreamReader(jsonFullPath); string jsonStr = reader.ReadToEnd(); reader.Close(); SceneItemJson groupData = fastJSON.JSON.ToObject <SceneItemJson>(jsonStr); SceneItemInfo itemInfos = new SceneItemInfo(); setAssetData(groupData, itemInfos); return(itemInfos); }
//加载标签页数据 void LoadAssetData() { if (m_allItemInfo.Count > sceneDataIndex) { itemInfos = m_allItemInfo[sceneDataIndex];//AssetDatabase.LoadAssetAtPath<SceneItemInfo>(m_allAssetPath[sceneDataIndex]); selectDataIndex = sceneDataIndex; } selectIndex = -1; selectItem = null; DestoryItemObjs(); CreateItemObjs(); }
//添加新标签页 void AddDataPage() { string pageName = string.Empty; getNewDataPageName(m_allAssetName.Count, ref pageName); SceneItemInfo sceneInfo = new SceneItemInfo();//ScriptableObject.CreateInstance<SceneItemInfo>(); sceneInfo.items = new List <ItemInfo>(); sceneInfo.jsonName = pageName; m_allItemInfo.Add(sceneInfo); m_allAssetName.Add(pageName); UserLog.AddPageSceneLog(pageName); }
public void SyncPageItem(int index0, int index1) { SceneItemInfo scenePageData0 = m_allItemInfo[index0];//AssetDatabase.LoadAssetAtPath<SceneItemInfo>(m_allAssetPath[index0]); for (int i = 0; i < scenePageData0.items.Count; i++) { for (int j = 0; j < scenePageData0.items[i].itemPos.Count; j++) { SyncSinglePage(scenePageData0.items[i].itemID, j, scenePageData0.items[i].itemPos[j], index1); } } UserLog.SyncAllPageSceneLog(m_allAssetName[index0], m_allAssetName[index1]); }
/// <summary> /// 检测当前数据是否合法 /// </summary> /// <param name="itemInfo"></param> /// <param name="sceneObjs"></param> /// <returns></returns> public static bool CheckDataSafe(SceneItemInfo itemInfo, List <EditorSceneObj> sceneObjs) { int itemCount = 0; int objCount = 0; for (int i = 0; i < itemInfo.items.Count; i++) { itemCount += itemInfo.items[i].itemPos.Count; } for (int j = 0; j < sceneObjs.Count; j++) { objCount += sceneObjs[j].itemObj.Count; } return(itemCount == objCount); }
/// <summary> /// 开始读条交互表现 /// </summary> /// <param name="_info"></param> protected void StartCollect(SceneItemInfo _info) { if (IsActor) { return; } isCollecting = true; if (animFSM != null && _info.PlayerAnimName.Length > 0) { animFSM.Collect(_info.PlayerAnimName, 99); } if (headTextCtrl != null && _info.OpenTime > 0) { headTextCtrl.SetProgress(_info.OpenTime, _info.OpenDescription); } }
public static void createObjLightData(SceneItemInfo itemInfos, string dir, List <EditorSceneObj> itemObjs, Texture2D lightTex) { SceneObjLightData sceneLightData = new SceneObjLightData(); List <ObjLightMapDataGroup> groups = new List <ObjLightMapDataGroup>(); for (int i = 0; i < itemInfos.items.Count; i++) { ItemInfo itemInfo = itemInfos.items[i]; ObjLightMapDataGroup groupData = createObjLightData(itemObjs[i], itemInfo.itemID, lightTex); groups.Add(groupData); } sceneLightData.groups = groups.ToArray(); string jsonStr = fastJSON.JSON.ToJSON(sceneLightData); CreateJson(dir, jsonStr); //createObjLightData(); }
private void SyncSinglePage(long id, int index, ItemPosInfo posInfo, int pageIndex) { SceneItemInfo scenePageData = m_allItemInfo[pageIndex];//AssetDatabase.LoadAssetAtPath<SceneItemInfo>(m_allAssetPath[pageIndex]); for (int j = 0; j < scenePageData.items.Count; j++) { if (scenePageData.items[j].itemID == id) { if (scenePageData.items[j].itemPos.Count <= index) { continue; } scenePageData.items[j].itemPos[index].pos = posInfo.pos; scenePageData.items[j].itemPos[index].rotate = posInfo.rotate; scenePageData.items[j].itemPos[index].scale = posInfo.scale; scenePageData.items[j].itemPos[index].m_cameraNode = posInfo.m_cameraNode; break; } } }
public void CopySceneItemInfo(SceneItemInfo sceneItemInfo) { if (sceneItemInfo == null) { return; } items = new List <ItemInfoServerJson>(); for (int i = 0; i < sceneItemInfo.items.Count; i++) { ItemInfo itemInfo = sceneItemInfo.items[i]; ItemInfoServerJson infoJson = new ItemInfoServerJson(); infoJson.itemPos = new List <ItemPosInfoServerJson>(); infoJson.itemID = itemInfo.itemID; infoJson.itemName = itemInfo.itemName; for (int j = 0; j < itemInfo.itemPos.Count; j++) { ItemPosInfoServerJson posJson = new ItemPosInfoServerJson(itemInfo.itemPos[j]); infoJson.itemPos.Add(posJson); } items.Add(infoJson); } }
public static void setLightMapData(SceneItemInfo itemInfo, List <EditorSceneObj> sceneObjs) { if (!CheckDataSafe(itemInfo, sceneObjs)) { return; } for (int i = 0; i < sceneObjs.Count; i++) { for (int j = 0; j < sceneObjs[i].itemObj.Count; j++) { GameObject obj = sceneObjs[i].itemObj[j]; if (obj == null) { continue; } MeshRenderer render = obj.GetComponent <MeshRenderer>(); ItemPosInfo posInfo = itemInfo.items[i].itemPos[j]; SetLightData(render, posInfo); } } }
static void SetAssetData(string jsonFullPath) { StreamReader reader = new StreamReader(jsonFullPath); string jsonStr = reader.ReadToEnd(); reader.Close(); SceneItemJson groupData = fastJSON.JSON.ToObject <SceneItemJson>(jsonStr); SceneItemInfo itemInfos = ScriptableObject.CreateInstance <SceneItemInfo>(); setAssetData(groupData, itemInfos); FileInfo fileInfo = new FileInfo(jsonFullPath); Scene scene = SceneManager.GetActiveScene(); if (scene == null) { return; } string sceneName = scene.name;//fileInfo.Name.Substring(0, index); int dotIndex = fileInfo.Name.LastIndexOf('.'); string fileName = fileInfo.Name.Substring(0, dotIndex); int nameIndex = -1; int.TryParse(fileName, out nameIndex); if (nameIndex == -1) { return; } nameIndex = nameIndex % 100; //Debug.Log(sceneName); if (!Directory.Exists(Application.dataPath + "/Res/SceneData/" + sceneName)) { Directory.CreateDirectory(Application.dataPath + "/Res/SceneData/" + sceneName); } AssetDatabase.CreateAsset(itemInfos, "Assets/Res/SceneData/" + sceneName + "/" + sceneName + "_" + nameIndex + ".asset"); AssetDatabase.Refresh(); }
protected AssetMng.DownloadID Create(SceneItemInfo _info, System.Action <SceneItem, EResult> _callback) { return(exResources.GetSceneItem(_info.ConfigID, delegate(GameObject _asset, EResult _result) { if (GameCenter.IsDummyDestroyed(ObjectType.SceneItem, _info.ServerInstanceID)) { _callback(null, EResult.Failed); return; } if (_result != EResult.Success) { _callback(null, _result); return; } this.gameObject.name = "SceneItem[" + _info.ServerInstanceID + "]"; GameObject newGO = Instantiate(_asset) as GameObject; newGO.name = _asset.name; newGO.transform.parent = this.gameObject.transform; newGO.transform.localEulerAngles = Vector3.zero; newGO.transform.localPosition = Vector3.zero; if (_info.FunctionType == SceneFunctionType.BLOCK) //光墙放到地下去一点 谢凯要求 { newGO.transform.localPosition = new Vector3(0, -1, 0); } newGO.transform.localScale = Vector3.one * _info.ModelScale; newGO.AddComponent <FXCtrl>(); newGO.AddComponent <SceneItemAnimFSM>(); newGO.SetActive(false); newGO.SetActive(true); RefreshShader(newGO); isDummy_ = false; Init(); _callback(this, _result); })); }
/// <summary> /// 创建净数据对象 by吴江 /// </summary> /// <param name="_info"></param> /// <returns></returns> public static SceneItem CreateDummy(SceneItemInfo _info) { GameObject newGO = new GameObject("Dummy SceneItem[" + _info.ServerInstanceID + "]"); newGO.tag = "Monster"; if (_info.FunctionType == SceneFunctionType.BLOCK) { newGO.SetMaskLayer(LayerMask.NameToLayer("Block")); } else { newGO.SetMaskLayer(LayerMask.NameToLayer("SceneItem")); } SceneItem item = newGO.AddComponent <SceneItem>(); item.actorInfo = _info; item.isDummy_ = true; item.id = _info.ServerInstanceID; GameCenter.curGameStage.PlaceGameObjectFromServer(item, _info.ServerPos.x, _info.ServerPos.z, _info.Dir, _info.ServerPos.y); //人参果宴采集了人参果,在斜坡或地图边缘,其时间到达自动掉落,会掉落在地底 GameCenter.curGameStage.AddObject(item); item.IsActiveForMainplayer = true; //item.CheckIsActiveForMainplayer(); return(item); }
void SysncDeleteItem(long id, int index) { List <SceneLogSyncData> logData = new List <SceneLogSyncData>(); for (int i = 0; i < m_allItemInfo.Count; i++) { SceneItemInfo scenePageData = m_allItemInfo[i];//AssetDatabase.LoadAssetAtPath<SceneItemInfo>(m_allAssetPath[i]); for (int j = 0; j < scenePageData.items.Count; j++) { if (scenePageData.items[j].itemID == id) { if (scenePageData.items[j].itemPos.Count > index) { SceneLogSyncData ld = new SceneLogSyncData(m_allItemInfo[i].jsonName, id, index); logData.Add(ld); scenePageData.items[j].itemPos.RemoveAt(index); } break; } } } UserLog.RemovePageItemSceneLog(logData); }
void OnSysncItem() { if (GUILayout.Button("确认同步")) { List <SceneLogSyncData> logdata = new List <SceneLogSyncData>(); SceneLogSyncData ld = new SceneLogSyncData(m_allAssetPath[mainPageIndex].jsonName, m_exhibitID, m_exhibitIndex); logdata.Add(ld); for (int i = 0; i < selectItemIndex.Length; i++) { if (!pageState[i]) { continue; } SceneItemInfo scenePageData = m_allAssetPath[i];//AssetDatabase.LoadAssetAtPath<SceneItemInfo>(); for (int j = 0; j < scenePageData.items.Count; j++) { if (scenePageData.items[j].itemID == m_exhibitID) { for (int k = 0; k < scenePageData.items[j].itemPos.Count; k++) { if (selectItemIndex[i][k]) { SceneLogSyncData ld1 = new SceneLogSyncData(m_allAssetPath[i].jsonName, m_exhibitID, k); logdata.Add(ld1); scenePageData.items[j].itemPos[k].pos = m_srcObj.transform.position; scenePageData.items[j].itemPos[k].rotate = m_srcObj.transform.eulerAngles; scenePageData.items[j].itemPos[k].scale = m_srcObj.transform.localScale; scenePageData.items[j].itemPos[k].m_cameraNode = this.cameraPoint; } } } } } UserLog.SyncSingleSceneLog(logdata, m_srcObj.transform.position, m_srcObj.transform.eulerAngles, m_srcObj.transform.localScale); this.Close(); } }
public SceneItemServerJson(SceneItemInfo sceneItemInfo) { CopySceneItemInfo(sceneItemInfo); }
public SceneItemJson(SceneItemInfo sceneItemInfo) { CopySceneItemInfo(sceneItemInfo); }