void Init() { string configPath = SceneTools.getConfigPath(); System.Reflection.PropertyInfo[] proInfo; ConfHelper.LoadFromExcel <BaseItem>(configPath + "BaseItem.xlsx", 0, out baseItemsData, out proInfo); Scene scene = SceneManager.GetActiveScene(); if (scene == null) { return; } sceneName = scene.name; dataDir = Application.streamingAssetsPath + "/SceneData/" + sceneName + "/"; string lightJsonStr = SceneTools.getJsonFile(dataDir + "lightData/" + sceneName + "_0_light.json"); //object ooo = fastJSON.JSON.Parse(lightJsonStr); //objLightData = (SceneObjLightData)fastJSON.JSON.Parse(lightJsonStr); objLightData = fastJSON.JSON.ToObject <SceneObjLightData>(lightJsonStr); string itemJsonStr = SceneTools.getJsonFile(dataDir + sceneName + "_0.json"); sceneItem = fastJSON.JSON.ToObject <SceneItemJson>(itemJsonStr); //sceneItem = (SceneItemJson)fastJSON.JSON.ToObject(itemJsonStr); for (int i = 0; i < sceneItem.items.Count; i++) { itemState.Add(false); } tex = AssetDatabase.LoadAssetAtPath <Texture2D>("Assets/Res/Scene/" + sceneName + "/Lightmap-0_comp_light.exr"); }
public void SetData(SceneItemJson json) { m_lightMapName = json.lightMapName; m_data = new List <LightMapData>(); for (int i = 0; i < json.items.Count; i++) { LightMapData mapdata = new LightMapData(); mapdata.m_data = new List <SingleLightMapData>(); ItemInfoJson itemjson = json.items[i]; mapdata.itemID = itemjson.itemID; mapdata.itemName = itemjson.itemName; for (int j = 0; j < itemjson.itemPos.Count; j++) { SingleLightMapData singleData = new SingleLightMapData(); ItemPosInfoJson posJson = itemjson.itemPos[j]; singleData.lightIndex = posJson.lightIndex; singleData.offsetX = posJson.offsetX; singleData.offsetY = posJson.offsetY; singleData.tilingX = posJson.tilingX; singleData.tilingY = posJson.tilingY; mapdata.m_data.Add(singleData); } m_data.Add(mapdata); } }
private void CopyToDestLightMap(SceneItemJson srcItemJson, SceneItemJson destItemJson) { destItemJson.lightMapName = srcItemJson.lightMapName; for (int i = 0; i < srcItemJson.items.Count; i++) { for (int j = 0; j < destItemJson.items.Count; j++) { if (srcItemJson.items[i].itemID == destItemJson.items[j].itemID) { for (int k = 0; k < destItemJson.items[j].itemPos.Count; k++) { if (srcItemJson.items.Count > k) { ItemPosInfoJson srcJson = srcItemJson.items[i].itemPos[k]; ItemPosInfoJson destJson = destItemJson.items[i].itemPos[k]; destJson.lightIndex = srcJson.lightIndex; destJson.offsetX = srcJson.offsetX; destJson.offsetY = srcJson.offsetY; destJson.tilingX = srcJson.tilingX; destJson.tilingY = srcJson.tilingY; } } break; } } } }
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); } } }
void OnGUI() { if (GUILayout.Button("Check")) { OnCheck(); } EditorGUILayout.LabelField("======================================================================"); scrollPos = EditorGUILayout.BeginScrollView(scrollPos); for (int i = 0; i < missLightmap.Count; i++) { string lightmap = missLightmap[i].lightMapPath; if (string.IsNullOrEmpty(missLightmap[i].lightMapPath)) { lightmap = "miss lightMap"; } if (GUILayout.Button(lightmap + " -- " + missLightmap[i].sceneName + " -- " + missLightmap[i].groupName)) { StreamReader reader = new StreamReader(missLightmap[i].lightConfigPath); string fileContent = reader.ReadToEnd(); reader.Close(); SceneItemJson itemjson = fastJSON.JSON.ToObject <SceneItemJson>(fileContent); itemjson.lightMapName = missLightmap[i].lightMapPath; string jsonContent = fastJSON.JSON.ToJSON(itemjson); SceneLightHelper.CreateJson(missLightmap[i].lightConfigPath, jsonContent); } } EditorGUILayout.EndScrollView(); }
public static void LightMapRecover() { //string dirPath = Application.dataPath + "/Res/SceneConfig"; Object[] objs = Selection.GetFiltered(typeof(Object), SelectionMode.Assets); for (int i = 0; i < objs.Length; i++) { string objName = objs[i].name; string dirFullPath = Application.dataPath.Substring(0, Application.dataPath.LastIndexOf('/')) + "/" + AssetDatabase.GetAssetPath(objs[i]); string[] filePaths = Directory.GetFiles(dirFullPath); if (!File.Exists(dirFullPath + "/" + objName + ".exr")) { continue; } Debug.Log("name : " + objName); for (int j = 0; j < filePaths.Length; j++) { if (filePaths[j].Contains(".meta") || filePaths[j].Contains(".exr")) { continue; } Debug.Log(filePaths[j]); StreamReader reader = new StreamReader(filePaths[j]); string fileContent = reader.ReadToEnd(); reader.Close(); SceneItemJson itemjson = fastJSON.JSON.ToObject <SceneItemJson>(fileContent); itemjson.lightMapName = objName + ".exr"; string jsonContent = fastJSON.JSON.ToJSON(itemjson); SceneLightHelper.CreateJson(filePaths[j], jsonContent); } } }
private static void GetData(string path, SceneDataJson serverJson) { string[] dirs = Directory.GetDirectories(path); for (int i = 0; i < dirs.Length; i++) { GetData(dirs[i], serverJson); } string[] files = Directory.GetFiles(path); for (int i = 0; i < files.Length; i++) { if (!files[i].Contains(".json") || files[i].Contains("meta")) { continue; } FileInfo fileinfo = new FileInfo(files[i]); StreamReader reader = new StreamReader(files[i]); string jsonStr = reader.ReadToEnd(); reader.Close(); SceneItemJson groupData = fastJSON.JSON.ToObject <SceneItemJson>(jsonStr); string fileName = fileinfo.Name.Replace(".json", ""); long groupID = -1; long.TryParse(fileName, out groupID); if (groupID > 0) { SceneItemServerJson itemServerJson = new SceneItemServerJson(groupData); itemServerJson.groupId = groupID; serverJson.sceneDatas.Add(itemServerJson); } } }
private void PickUpLightMap() { string srcJsonStr = GetJsonString(rootPath + srcPath); SceneItemJson groupData = fastJSON.JSON.ToObject <SceneItemJson>(srcJsonStr); CopyLightMap(groupData); }
void LoadAllItemData() { ClearItemObj(); items.Clear(); string mSceneConfigPath = sceneConfigPath + m_sceneName; if (!Directory.Exists(mSceneConfigPath)) { return; } string[] files = Directory.GetFiles(mSceneConfigPath); for (int i = 0; i < files.Length; i++) { if (!files[i].Contains(".json") || files[i].Contains("meta")) { continue; } StreamReader reader = new StreamReader(files[i]); string jsonStr = reader.ReadToEnd(); reader.Close(); SceneItemJson groupData = fastJSON.JSON.ToObject <SceneItemJson>(jsonStr); if (!items.ContainsKey(files[i])) { items.Add(files[i], groupData); } } }
private void CopyLightMap(SceneItemJson itemJson) { TotalLightMapData destJson = new TotalLightMapData(); destJson.SetData(itemJson); string jsonStr = fastJSON.JSON.ToJSON(destJson); string newSingleName = GetLightName(srcPath); SceneLightHelper.CreateJson(rootPath + newSingleName, jsonStr); }
public void AddExhibitData(string groupName, SceneItemJson exhibitData) { if (!m_allExhibitData.ContainsKey(groupName)) { m_allExhibitData.Add(groupName, exhibitData); } else { m_allExhibitData[groupName] = exhibitData; } }
/// <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); }
private void GetObjNumber() { string srcJsonStr = GetJsonString(rootPath + srcPath); SceneItemJson groupData = fastJSON.JSON.ToObject <SceneItemJson>(srcJsonStr); string destJsonStr = GetJsonString(rootPath + destPath); SceneItemJson destGroupData = fastJSON.JSON.ToObject <SceneItemJson>(destJsonStr); srcNumber = GetObjNumber(groupData).ToString(); destNumber = GetObjNumber(destGroupData).ToString(); }
void LoadAllItemData() { //ClearItemObj(); items.Clear(); if (groupFilePaths.Count > groupSelectIndex) { StreamReader reader = new StreamReader(groupFilePaths[groupSelectIndex]); string jsonStr = reader.ReadToEnd(); reader.Close(); m_currentItemJson = fastJSON.JSON.ToObject <SceneItemJson>(jsonStr); } }
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); }
private int GetObjNumber(SceneItemJson groupData) { int count = 0; for (int i = 0; i < groupData.items.Count; i++) { for (int j = 0; j < groupData.items[i].itemPos.Count; j++) { count++; } } return(count); }
private void TransLightMap() { string srcJsonStr = GetJsonString(rootPath + srcPath); SceneItemJson groupData = fastJSON.JSON.ToObject <SceneItemJson>(srcJsonStr); string destJsonStr = GetJsonString(rootPath + destPath); SceneItemJson destGroupData = fastJSON.JSON.ToObject <SceneItemJson>(destJsonStr); CopyToDestLightMap(groupData, destGroupData); string newJson = fastJSON.JSON.ToJSON(destGroupData); SceneLightHelper.CreateJson(rootPath + destPath, newJson); }
private void OnCheck() { missLightmap.Clear(); string[] dirtorys = Directory.GetDirectories(this.SceneConfig); for (int i = 0; i < dirtorys.Length; i++) { int dirLast = dirtorys[i].LastIndexOf("\\"); string DirName = dirtorys[i].Substring(dirLast + 1, dirtorys[i].Length - dirLast - 1); string[] files = Directory.GetFiles(dirtorys[i]); for (int j = 0; j < files.Length; j++) { if (files[j].Contains(".json") && !files[j].Contains(".meta")) { StreamReader reader = new StreamReader(files[j]); string fileContent = reader.ReadToEnd(); reader.Close(); SceneItemJson itemjson = fastJSON.JSON.ToObject <SceneItemJson>(fileContent); if (string.IsNullOrEmpty(itemjson.lightMapName)) { LightMapMissData missData = new LightMapMissData(); missData.lightConfigPath = files[j]; int jsonLast = files[j].LastIndexOf("\\"); string jsonName = files[j].Substring(jsonLast + 1, files[j].Length - jsonLast - 1); missData.groupName = jsonName; if (File.Exists(this.SceneConfig + "/" + DirName + "/" + DirName + ".exr")) { missData.lightMapPath = DirName + ".exr"; } else { missData.lightMapPath = string.Empty; } missData.sceneName = DirName; missLightmap.Add(missData); } } } } }
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 void LoadConfigData() { string sceneConfigPath = m_data.sceneConfigPath; if (!Directory.Exists(sceneConfigPath)) { return; } string[] files = Directory.GetFiles(sceneConfigPath); for (int i = 0; i < files.Length; i++) { if (!files[i].Contains(".json") || files[i].Contains("meta")) { continue; } StreamReader reader = new StreamReader(files[i]); string jsonStr = reader.ReadToEnd(); reader.Close(); SceneItemJson groupData = fastJSON.JSON.ToObject <SceneItemJson>(jsonStr); string fileName = Path.GetFileName(files[i]); m_data.AddExhibitData(fileName, groupData); } }
private static void SetSceneData(string path) { string[] dirs = Directory.GetDirectories(path); for (int i = 0; i < dirs.Length; i++) { SetSceneData(dirs[i]); } string[] files = Directory.GetFiles(path); for (int i = 0; i < files.Length; i++) { if (!files[i].Contains(".json") || files[i].Contains("meta")) { continue; } //FileInfo fileinfo = new FileInfo(files[i]); StreamReader reader = new StreamReader(files[i]); string jsonStr = reader.ReadToEnd(); reader.Close(); SceneItemJson groupData = fastJSON.JSON.ToObject <SceneItemJson>(jsonStr); for (int j = 0; j < groupData.items.Count; j++) { groupData.items[j].itemPercent = 100; } string groupDataJson = fastJSON.JSON.ToJSON(groupData); SceneLightHelper.CreateJson(files[i], groupDataJson); //string fileName = fileinfo.Name.Replace(".json", ""); //long groupID = -1; //long.TryParse(fileName, out groupID); //if (groupID > 0) //{ // SceneItemServerJson itemServerJson = new SceneItemServerJson(groupData); // itemServerJson.groupId = groupID; // serverJson.sceneDatas.Add(itemServerJson); //} } }
/// <summary> /// 载入场景物件 /// </summary> /// <param name="decoratorList"></param> /// <param name="taskObjectList"></param> protected virtual void LoadSceneObjects(IList <long> decoratorList, IList <long> taskObjectList) { EngineCoreEvents.ResourceEvent.GetAssetEvent.SafeInvoke(this.m_sceneData.exhibitGroupId, (assetName, assetObject) => { m_sceneInfo = JSON.ToObject <SceneItemJson>(assetObject.ToString()); EngineCoreEvents.ResourceEvent.ReleaseAssetEvent.SafeInvoke(m_sceneData.exhibitGroupId, assetObject); Dictionary <long, ItemInfoJson> sceneItemConfigDict = new Dictionary <long, ItemInfoJson>(); //临时修改加载lightmap GOGUI.GOGUITools.GetAssetAction.SafeInvoke(m_sceneInfo.lightMapName, (prefabName, obj) => { this.m_isLightMapReady = true; //Texture lightTex = null; if (StringUtils.IsNullEmptyOrWhiteSpace(m_sceneInfo.lightMapName) || obj == null) { Debug.LogWarning($"can't find lightmap in {assetName}"); } if (obj != null) { this.m_sceneExtraLightTex = obj as Texture; } for (int i = 0; i < m_sceneInfo.items.Count; ++i) { ItemInfoJson itemInfo = m_sceneInfo.items[i]; if (!sceneItemConfigDict.ContainsKey(itemInfo.itemID)) { sceneItemConfigDict.Add(itemInfo.itemID, itemInfo); } else { Debug.LogError("item id duplicate ,item id:" + itemInfo.itemID + ", config info :" + assetName); } } //todo:之后重构 2018-7-26 20:25:39 for (int i = 0; i < decoratorList.Count; ++i) { long itemID = decoratorList[i]; if (!sceneItemConfigDict.ContainsKey(itemID)) { Debug.LogError("no item :" + itemID + " in " + assetName); } ItemInfoJson itemInfo = sceneItemConfigDict[itemID]; EntityBase sceneItemEntity = EntityManager.Instance.AllocEntity(EntityType.Scene_Decoration); Confexhibit confItem = Confexhibit.Get(itemInfo.itemID); if (confItem == null || string.IsNullOrEmpty(confItem.assetName)) { Debug.Log("can't find item:" + itemInfo.itemID); continue; } sceneItemEntity.SetAssetName(confItem.assetName); sceneItemEntity.SetEntityData(itemInfo); sceneItemEntity.SetLightTexture(m_sceneExtraLightTex); sceneItemEntity.PreloadAsset(); AddSceneEntity(sceneItemEntity); } for (int i = 0; i < taskObjectList.Count; ++i) { long itemID = taskObjectList[i]; if (!sceneItemConfigDict.ContainsKey(itemID)) { Debug.LogError("no item :" + itemID + " in " + assetName); } ItemInfoJson itemInfo = sceneItemConfigDict[itemID]; EntityBase sceneItemEntity = EntityManager.Instance.AllocEntity(EntityType.Scene_Object); Confexhibit confItem = Confexhibit.Get(itemInfo.itemID); if (confItem == null || string.IsNullOrEmpty(confItem.assetName)) { Debug.Log("can't find item:" + itemInfo.itemID); continue; } sceneItemEntity.SetAssetName(confItem.assetName); sceneItemEntity.SetEntityData(itemInfo); sceneItemEntity.SetLightTexture(m_sceneExtraLightTex); sceneItemEntity.PreloadAsset(); AddSceneEntity(sceneItemEntity); } InitFindingEntityItems(); }, LoadPriority.Default); /////// }, LoadPriority.Prior); }