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 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); } }
void Check() { if (tex == null) { return; } for (int i = 0; i < sceneItem.items.Count; i++) { if (itemState[i]) { ItemInfoJson itemInfo = sceneItem.items[i]; BaseItem baseItem = getBaseItemByID(itemInfo.itemID); for (int j = 0; j < itemInfo.itemPos.Count; j++) { ItemPosInfoJson posInfo = itemInfo.itemPos[j]; Object obj = AssetDatabase.LoadAssetAtPath("Assets/" + baseItem.model + ".prefab", typeof(Object)); GameObject gameObj = Instantiate(obj) as GameObject; gameObj.transform.position = new Vector3(posInfo.pos.x, posInfo.pos.y, posInfo.pos.z); gameObj.transform.eulerAngles = new Vector3(posInfo.rotate.x, posInfo.rotate.y, posInfo.rotate.z); gameObj.name = itemInfo.itemName; ObjLightMapData mapdata = objLightData.groups[i].objLightDatas[j]; MeshRenderer render = gameObj.GetComponent <MeshRenderer>(); render.lightmapIndex = (int)mapdata.lightIndex; render.lightmapScaleOffset = new Vector4(mapdata.tilingX, mapdata.tilingY, mapdata.offsetX, mapdata.offsetY); //MColor[] mc = mapdata.color; //creatNewLightMap(mapdata,tex); } } } }
public void LoadModel() { foreach (var kv in m_data.m_allExhibitData) { for (int i = 0; i < kv.Value.items.Count; i++) { ItemInfoJson itemInfo = kv.Value.items[i]; for (int j = 0; j < itemInfo.itemPos.Count; j++) { LoadModel(itemInfo.itemID, itemInfo.itemPos[j], j, i, kv.Key); } } } }
void CreateDataItem() { if (sceneItem == null) { return; } for (int i = 0; i < sceneItem.items.Count; i++) { ItemInfoJson itemInfo = sceneItem.items[i]; EditorGUILayout.BeginHorizontal(); itemState[i] = EditorGUILayout.Toggle(itemInfo.itemID + "/" + itemInfo.itemName + "/" + itemInfo.itemPos.Count, itemState[i]); EditorGUILayout.EndHorizontal(); } }
void LoadAllItemObj() { itemJsonObjs.Clear(); itemObjs.Clear(); foreach (var kv in items) { List <GameObject> objs = new List <GameObject>(); itemJsonObjs.Add(kv.Key, objs); for (int i = 0; i < kv.Value.items.Count; i++) { ItemInfoJson itemJson = kv.Value.items[i]; for (int j = 0; j < itemJson.itemPos.Count; j++) { objs.Add(LoadModel(itemJson.itemID, itemJson.itemPos[j], Path.GetFileName(kv.Key), j)); } } } }
void LoadAllItemObj() { ClearItemObj(); selectItemInfoJson.Clear(); for (int i = 0; i < filterItemCount; i++) { GetRandom(); } for (int j = 0; j < m_currentItemJson.items.Count; j++) { if (m_currentItemJson.items[j].itemPos[0].type == 1) { if (selectItemInfoJson.Contains(j)) { Debug.LogError("random error : task item"); continue; } selectItemInfoJson.Add(j); } } for (int i = 0; i < selectItemInfoJson.Count; i++) { ItemInfoJson itemJson = m_currentItemJson.items[selectItemInfoJson[i]]; int posRan = Random.Range(0, itemJson.itemPos.Count); currentItemobjs.Add(LoadModel(itemJson.itemID, itemJson.itemPos[posRan])); } //foreach (var kv in items) //{ // List<GameObject> objs = new List<GameObject>(); // itemJsonObjs.Add(kv.Key, objs); // for (int i = 0; i < kv.Value.items.Count; i++) // { // ItemInfoJson itemJson = kv.Value.items[i]; // for (int j = 0; j < itemJson.itemPos.Count; j++) // { // objs.Add(LoadModel(itemJson.itemID,itemJson.itemPos[j],Path.GetFileName(kv.Key),j)); // } // } //} }
public void SetLightMap() { for (int i = 0; i < m_allExhibitObj.Count; i++) { ExhibitObjData objData = m_allExhibitObj[i]; string groupFileName = objData.m_groupFileName; if (m_allExhibitData.ContainsKey(groupFileName)) { ItemInfoJson infoJson = m_allExhibitData[groupFileName].items[objData.m_itemIndex]; if (infoJson.itemID == objData.m_propId) { GetLightMapForGameObject(infoJson.itemPos[objData.m_posIndex], objData.gameObject); } else { Debug.LogError("lightmap error:" + objData.m_propId); } } } SaveLightMapToFile(); }
public void CopySceneItemInfo(SceneItemInfo sceneItemInfo) { if (sceneItemInfo == null) { return; } items = new List <ItemInfoJson>(); for (int i = 0; i < sceneItemInfo.items.Count; i++) { ItemInfo itemInfo = sceneItemInfo.items[i]; ItemInfoJson infoJson = new ItemInfoJson(); infoJson.itemPos = new List <ItemPosInfoJson>(); infoJson.itemID = itemInfo.itemID; infoJson.itemName = itemInfo.itemName; for (int j = 0; j < itemInfo.itemPos.Count; j++) { ItemPosInfoJson posJson = new ItemPosInfoJson(itemInfo.itemPos[j]); infoJson.itemPos.Add(posJson); } items.Add(infoJson); } }
/// <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); }