protected override string GetModelPath() { if (!string.IsNullOrEmpty(m_ModelPath)) { return(m_ModelPath); } NpcVO vo = ConfigVO <NpcVO> .Instance.GetData(m_NpcId); if (vo != null) { int modelId = vo.Model; string assetName = ""; ModelVO modelVo = ConfigVO <ModelVO> .Instance.GetData(modelId); if (modelVo != null) { assetName = modelVo.assetName; } if (!string.IsNullOrEmpty(assetName)) { if (!assetName.Contains("Assets")) { string[] resAssets = AssetDatabase.FindAssets(string.Format("{0} t:Prefab", assetName)); if (resAssets != null && resAssets.Length > 0) { for (int iRes = 0; iRes < resAssets.Length; iRes++) { string path = AssetDatabase.GUIDToAssetPath(resAssets[iRes]); string[] resSplit = path.Split('/'); if (resSplit != null && resSplit.Length > 0) { string lastName = resSplit[resSplit.Length - 1]; if (lastName.Equals(string.Format("{0}.prefab", assetName))) { assetName = path; break; } } } } } } m_ModelPath = assetName; return(assetName); } return(GamingMapEditorUtility.GetCreatureTempletePath()); }
private IEnumerator ExportUpdate() { ConfigVO <ModelVO> .Instance.GetList(); yield return(null); ConfigVO <ModShipDecorateVO> .Instance.GetList(); ConfigVO <ModShipDecorateVO> .Instance.ResetData(); yield return(null); List <ModelVO> shipModelList = new List <ModelVO>(); List <ModelVO> modelList = ConfigVO <ModelVO> .Instance.GetList(); if (modelList != null && modelList.Count > 0) { for (int iModel = 0; iModel < modelList.Count; iModel++) { ModelVO modelVo = modelList[iModel]; if (modelVo.type == (int)EditorGamingMapData.ModelType.WarShip) { shipModelList.Add(modelVo); } } } yield return(null); if (shipModelList != null && shipModelList.Count > 0) { for (int iShip = 0; iShip < shipModelList.Count; iShip++) { ModelVO modelVo = shipModelList[iShip]; string assetName = modelVo.assetName; if (!string.IsNullOrEmpty(assetName)) { string[] resAssets = AssetDatabase.FindAssets(string.Format("{0} t:Prefab", assetName)); if (resAssets != null && resAssets.Length > 0) { for (int iRes = 0; iRes < resAssets.Length; iRes++) { assetName = AssetDatabase.GUIDToAssetPath(resAssets[iRes]); string[] assetSplit = assetName.Split('/'); if (assetSplit != null && assetSplit.Length > 0) { if (assetSplit[assetSplit.Length - 1].Equals(string.Format("{0}.prefab", modelVo.assetName))) { break; } } } GameObject assetObj = AssetDatabase.LoadAssetAtPath <GameObject>(assetName); if (assetObj != null) { GameObject shipObj = GameObject.Instantiate(assetObj); JudegeShipCollider(shipObj); shipObj.transform.SetParent(transform); shipObj.transform.localPosition = Vector3.zero; CapsuleCollider shipCollider = EditorGamingMapData.CalculateCapsuleCollider(shipObj); EditorGamingMapData.CorrectCollider(shipCollider); yield return(null); yield return(null); Quaternion shipRot = shipCollider.transform.rotation; shipCollider.transform.rotation = Quaternion.identity; yield return(null); EditorDecorate decorate = EditorGamingMapData.SaveColliderData(shipCollider, shipRot); yield return(null); shipCollider.transform.rotation = shipRot; ModShipDecorateVO shipDecorateVo = ConfigVO <ModShipDecorateVO> .Instance.GetData(modelVo.ID); if (shipDecorateVo != null) { shipDecorateVo.colliderMax = decorate.dirMax; shipDecorateVo.colliderMin = decorate.dirMin; // shipDecorateVo.colliderMax = new float[3] { CalcuateRound(decorate.dirmax.x, 3), CalcuateRound(decorate.dirmax.y, 3), CalcuateRound(decorate.dirmax.z, 3) }; // shipDecorateVo.colliderMin = new float[3] { CalcuateRound(decorate.dirmin.x, 3), CalcuateRound(decorate.dirmin.y, 3), CalcuateRound(decorate.dirmin.z, 3) }; } else { ModShipDecorateVO decorateVo = new ModShipDecorateVO(); decorateVo.ID = modelVo.ID; decorateVo.unitId = modelVo.ID; decorateVo.type = (int)EditorGamingMapData.COLLIDER_TYPE.PX_CAPSULE; //decorateVo.colliderMax = new float[3] { CalcuateRound(decorate.dirmax.x, 3), CalcuateRound(decorate.dirmax.y, 3), CalcuateRound(decorate.dirmax.z, 3) }; //decorateVo.colliderMin = new float[3] { CalcuateRound(decorate.dirmin.x, 3), CalcuateRound(decorate.dirmin.y, 3), CalcuateRound(decorate.dirmin.z, 3) }; decorateVo.colliderMax = decorate.dirMax; decorateVo.colliderMin = decorate.dirMin; ConfigVO <ModShipDecorateVO> .Instance.AddData(decorateVo); } yield return(null); if (shipObj != null) { GameObject.DestroyImmediate(shipObj); } yield return(null); } } } } } yield return(null); ConfigVO <ModShipDecorateVO> .Instance.SaveCSV(); bool isConfirm = EditorUtility.DisplayDialog("提示", "战舰碰撞信息导出成功", "确定"); if (isConfirm) { GameObject.DestroyImmediate(gameObject); } }