public static void SetPoemByTag(List <string> difficultys, List <string> poemTypes) { s_poemList.Clear(); for (int j = 0; j < s_poemdata.TableIDs.Count; j++) { string id = s_poemdata.TableIDs[j]; for (int i = 0; i < difficultys.Count; i++) { bool isBreak = false; if (id.Contains(difficultys[i])) { for (int k = 0; k < poemTypes.Count; k++) { if (id.Contains(poemTypes[k])) { s_poemList.Add(DataGenerateManager <poemDataGenerate> .GetData(id)); isBreak = true; break; } } } if (isBreak) { break; } } } }
public static void SetPoemByName(string poemID) { s_poemList.Clear(); poemDataGenerate poem = DataGenerateManager <poemDataGenerate> .GetData(poemID); s_poemList.Add(poem); }
List <Dictionary <string, object> > GetShopData() { List <Dictionary <string, object> > data = new List <Dictionary <string, object> >(); DataTable itemData = DataManager.GetData("item"); for (int i = 0; i < itemData.TableIDs.Count; i++) { //SingleData singleData = itemData.GetLineFromKey(itemData.TableIDs[i]); //string itemName = singleData.GetString("ItemName"); //int cost = singleData.GetInt("Cost"); Dictionary <string, object> tmp = new Dictionary <string, object>(); tmp.Add("Name", DataGenerateManager <itemGenerate> .GetData(itemData.TableIDs[i]).m_ItemName); tmp.Add("Cost", DataGenerateManager <itemGenerate> .GetData(itemData.TableIDs[i]).m_key); data.Add(tmp); } //itemGenerate data = DataGenerateManager<itemGenerate>.GetData("1"); //string itemName = data.m_ItemName; //int cost = data.m_Cost; return(data); }
public override void FixedUpdate(int deltaTime) { List <EntityBase> list = GetEntityList(); for (int i = 0; i < list.Count; i++) { CommandComponent cc = (CommandComponent)list[i].GetComp("CommandComponent"); SkillStatusComponent ssc = (SkillStatusComponent)list[i].GetComp("SkillStatusComponent"); PlayerComponent pc = (PlayerComponent)list[i].GetComp("PlayerComponent"); MoveComponent mc = (MoveComponent)list[i].GetComp("MoveComponent"); LifeComponent lc = (LifeComponent)list[i].GetComp("LifeComponent"); //CD for (int j = 0; j < ssc.m_skillList.Count; j++) { ssc.m_CDList[j] -= deltaTime; } if (ssc.skillDirCache.ToVector() != Vector3.zero && cc.isFire && !pc.GetIsDizziness() && lc.Life > 0 && cc.skillDir.ToVector() == Vector3.zero ) { string skillID = SkillUtils.GetSkillName(cc); SkillData data = ssc.GetSkillData(skillID); if (ssc.GetSkillCDFinsih(skillID)) { //Debug.Log("FIRE!!! --> " + skillID); ssc.m_skillTime = 0; ssc.m_skillStstus = SkillStatusEnum.Before; ssc.m_isTriggerSkill = false; ssc.m_currentSkillData = data; ssc.m_currentSkillData.UpdateInfo(); ssc.SetSkillCD(skillID, data.CDSpace); ssc.skillDir = ssc.skillDirCache.DeepCopy(); AreaDataGenerate areaData = DataGenerateManager <AreaDataGenerate> .GetData(ssc.m_currentSkillData.SkillInfo.m_EffectArea); float distance = ssc.skillDir.ToVector().magnitude; distance = areaData.m_SkewDistance + Mathf.Clamp(distance, 0, areaData.m_distance); Vector3 aimPos = mc.pos.ToVector() + ssc.skillDir.ToVector().normalized *distance; if (areaData.m_Shape != AreaType.Rectangle) { ssc.skillPos.FromVector(aimPos); } else { ssc.skillPos.FromVector(mc.pos.ToVector() + ssc.skillDir.ToVector().normalized *(areaData.m_SkewDistance - areaData.m_Length / 2)); } } } ssc.skillDirCache = cc.skillDir.DeepCopy(); } }
public void CreateRandomItem(ItemCreatePointComponent comp) { //创建一个可以捡的道具 CollisionComponent colc = new CollisionComponent(); colc.area.direction = new Vector3(1, 0, 0); colc.area.position = comp.pos.ToVector(); colc.area.areaType = AreaType.Circle; colc.area.radius = 0.5f; //colc.isStatic = true; ItemComponent ic = new ItemComponent(); AssetComponent assert = new AssetComponent(); TransfromComponent tc = new TransfromComponent(); tc.pos = comp.pos; int r = m_world.GetRandom() % comp.randomList.Count; //Debug.Log("r " + r + " comp.randomList.Count " + comp.randomList.Count); string itemID = comp.randomList[r]; ic.ItemData = DataGenerateManager <ItemsDataGenerate> .GetData(itemID); assert.m_assetName = ic.ItemData.m_modelid; ic.ItemID = int.Parse(itemID); string identify = comp.Entity.ID + "Item" + comp.pos.ToVector(); //通过标识符保证唯一ID m_world.CreateEntity(identify, colc, ic, assert, tc); }
public void RecveviceBuyCharacter(SyncSession session, PlayerBuyCharacter_s msg) { for (int i = 0; i < session.player.OwnCharacter.Count; i++) { if (session.player.OwnCharacter[i] == msg.characterID) { PlayerBuyCharacter_c result = new PlayerBuyCharacter_c(); result.code = ServiceErrorCode.c_HasOwnCharacter; ProtocolAnalysisService.SendMsg(session, result); return; } } ShopDataGenerate data = DataGenerateManager <ShopDataGenerate> .GetData(msg.characterID); if (data.m_cost <= session.player.Diamond) { session.player.Diamond -= (int)data.m_cost; session.player.OwnCharacter.Add(data.m_item_id.ToString()); PlayerBuyCharacter_c result = new PlayerBuyCharacter_c(); result.code = ServiceErrorCode.c_Success; ProtocolAnalysisService.SendMsg(session, result); } else { PlayerBuyCharacter_c result = new PlayerBuyCharacter_c(); result.code = ServiceErrorCode.c_NotEnoughDiamond; ProtocolAnalysisService.SendMsg(session, result); } }
/// <summary> /// 检查是否要直接登录,如果是那就直接登录(默认选择筛选后的第0个登录) /// </summary> /// <param name="datas">返回可登录选项</param> /// <returns></returns> public static bool CheckAutoLoginOrGetLoginPlatforms(out List <LoginConfigData> datas) { datas = new List <LoginConfigData>(); List <LoginConfigData> allConfigs = DataGenerateManager <LoginConfigData> .GetAllDataList(); string sdkStr = SDKManager.GetProperties(SDKInterfaceDefine.PropertiesKey_LoginPlatform, ""); if (!string.IsNullOrEmpty(sdkStr)) { string[] arrStr = sdkStr.Split('|'); foreach (var item in arrStr) { LoginConfigData con = DataGenerateManager <LoginConfigData> .GetData(item); if (con != null) { datas.Add(con); } else { Debug.LogError("获取登录配置失败:" + item); } } } else { //Debug.LogError("获取登录配置失败:" + item); foreach (var d in allConfigs) { List <string> platforms = null; if (d.m_SupportPlatform == null) { platforms = new List <string>(); } else { platforms = new List <string>(d.m_SupportPlatform); } if (d.m_UseItem || platforms.Contains(Application.platform.ToString())) { datas.Add(d); } } } string directlyLoginStr = SDKManager.GetProperties(SDKInterfaceDefine.PropertiesKey_DirectlyLogin, "false"); bool directlyLogin = bool.Parse(directlyLoginStr); if (directlyLogin) { LoginConfigData d = datas[0]; Login(d.m_loginName, "", "", d.m_CustomInfo); return(true); } return(false); }
/// <summary> /// 构造谜题库 /// </summary> static void CreatePuzzleLibrary() { s_poemdata = DataManager.GetData("poemData"); for (int i = 0; i < s_poemdata.TableIDs.Count; i++) { PutPoem(DataGenerateManager <poemDataGenerate> .GetData(s_poemdata.TableIDs[i])); } }
public static void SetPoemByFavorite(List <string> favoriteList) { s_poemList.Clear(); for (int i = 0; i < favoriteList.Count; i++) { s_poemList.Add(DataGenerateManager <poemDataGenerate> .GetData(favoriteList[i])); } }
public static void SetPoemByAllPoem() { s_poemList.Clear(); for (int i = 0; i < s_poemdata.TableIDs.Count; i++) { s_poemList.Add(DataGenerateManager <poemDataGenerate> .GetData(s_poemdata.TableIDs[i])); } }
public void StartSelectServer(GameServerAreaData gameServerArea) { Debug.Log("开始选服"); if (ApplicationManager.Instance.m_AppMode == AppMode.Release) { RuntimePlatform platform = Application.platform; //if (Application.isEditor) //{ // if (platform == RuntimePlatform.OSXEditor) // platform = RuntimePlatform.IPhonePlayer; // else // { // platform = RuntimePlatform.Android; // } //} string defaultChannel = "GameCenter"; string channel = SDKManager.GetProperties(SDKInterfaceDefine.PropertiesKey_ChannelName, defaultChannel); GameInfoCollecter.AddNetworkStateInfoValue("渠道", channel); string selectNetworkPath = gameServerArea.m_SelectServerURL; SelectSeverController.Start(selectNetworkPath, Application.version, platform, channel, (data) => { SelectNetworkData select = null; bool isSelectRight = false; if (data == null || data.Count == 0) { Debug.LogError("没有合适的服务器!"); //return; string networkID = SDKManager.GetProperties("NetworkID", "3"); select = DataGenerateManager <SelectNetworkData> .GetData(networkID); } else { int r = UnityEngine.Random.Range(0, data.Count); select = data[r]; isSelectRight = true; } GameInfoCollecter.AddNetworkStateInfoValue("是否正确匹配服务器", isSelectRight); GameInfoCollecter.AddNetworkStateInfoValue("匹配服务器", select.m_serverIP + ":" + select.m_port); GameInfoCollecter.AddNetworkStateInfoValue("服务器描述", select.m_description); SelectServerCompleted(select); }); } else { if (OnSelectServerLocal != null) { OnSelectServerLocal(SelectServerCompleted); } } }
public void UpdateInfo() { if (m_skillID != "" && m_skillID != "null") { SkillInfo = DataGenerateManager <SkillDataGenerate> .GetData(m_skillID); BeforeInfo = DataGenerateManager <SkillStatusDataGenerate> .GetData(SkillInfo.m_BeforeStatus); CurrentInfo = DataGenerateManager <SkillStatusDataGenerate> .GetData(SkillInfo.m_CurrentStatus); LaterInfo = DataGenerateManager <SkillStatusDataGenerate> .GetData(SkillInfo.m_LaterStatus); } }
void CreateFlyObject(SkillDataGenerate skillData, EntityBase skiller) { CampComponent campComp = skiller.GetComp <CampComponent>(); //Debug.Log("CreateFlyObject " + skiller.ID + " " + campComp.creater); if (skillData.m_FlyObjectName.Length != 0) { List <CreatPostionInfo> poss = GetCreatePostionInfos(skillData, skiller, skillData.m_FlyObjectName.Length); for (int i = 0; i < poss.Count; i++) { FlyDataGenerate flyData = DataGenerateManager <FlyDataGenerate> .GetData(skillData.m_FlyObjectName[i]); TransfromComponent tc = new TransfromComponent(); tc.pos = poss[i].m_pos; tc.dir = poss[i].m_dir; MoveComponent mc = new MoveComponent(); mc.pos = poss[i].m_pos; mc.dir = poss[i].m_dir; mc.m_velocity = flyData.m_Speed; LifeSpanComponent lsc = new LifeSpanComponent(); lsc.lifeTime = flyData.m_LiveTime; AssetComponent ac = new AssetComponent(); ac.m_assetName = flyData.m_ModelName; CampComponent cp = new CampComponent(); cp.camp = campComp.camp; cp.creater = campComp.creater; CollisionComponent cc = new CollisionComponent(); cc.area.areaType = AreaType.Circle; cc.area.radius = flyData.m_Radius / 1000; FlyObjectComponent fc = new FlyObjectComponent(); fc.createrID = skiller.ID; fc.damage = skillData.m_FlyDamageValue; fc.flyObjectID = skillData.m_FlyObjectName[i]; string identify = skiller.ID + "FlyObject" + i + poss[i].m_pos; m_world.CreateEntity(identify, tc, mc, ac, cp, lsc, cc, fc); } } }
public void StartSelectServer(GameServerAreaDataGenerate gameServerArea) { Debug.Log("开始选服"); if (ApplicationManager.Instance.m_AppMode == AppMode.Release) { RuntimePlatform platform = Application.platform; if (Application.isEditor) { if (platform == RuntimePlatform.OSXEditor) { platform = RuntimePlatform.IPhonePlayer; } else { platform = RuntimePlatform.Android; } } string channel = SDKManager.GetProperties(SDKInterfaceDefine.PropertiesKey_ChannelName, "GameCenter"); string selectNetworkPath = gameServerArea.m_SelectServerURL; SelectSeverController.Start(selectNetworkPath, Application.version, platform, channel, (data) => { SelectNetworkData select = null; if (data == null || data.Count == 0) { Debug.LogError("没有合适的服务器!"); //return; string networkID = SDKManager.GetProperties("NetworkID", "3"); select = DataGenerateManager <SelectNetworkData> .GetData(networkID); } else { int r = UnityEngine.Random.Range(0, data.Count); select = data[r]; } SelectServerCompleted(select); }); } else { if (OnSelectServerLocal != null) { OnSelectServerLocal(SelectServerCompleted); } } }
List <Dictionary <string, object> > GetShopData() { var data = new List <Dictionary <string, object> >(); DataTable itemData = DataManager.GetData("item"); for (int i = 0; i < itemData.TableIDs.Count; i++) { Dictionary <string, object> tmp = new Dictionary <string, object>(); tmp.Add("Name", DataGenerateManager <itemGenerate> .GetData(itemData.TableIDs[i]).m_ItemName); tmp.Add("Cost", DataGenerateManager <itemGenerate> .GetData(itemData.TableIDs[i]).m_key); data.Add(tmp); } return(data); }
void SetData() { List <string> list = FavoritesService.GetFavoritesList(); List <Dictionary <string, object> > data = new List <Dictionary <string, object> >(); for (int i = 0; i < list.Count; i++) { Dictionary <string, object> item = new Dictionary <string, object>(); poemDataGenerate poemData = DataGenerateManager <poemDataGenerate> .GetData(list[i]); item.Add("poemData", poemData); data.Add(item); } GetReusingScrollRect("scrollRect").SetData(data); }
public static string GetSkillName(CommandComponent cmd) { if (s_comboData == null) { s_comboData = DataManager.GetData("CombineData"); } if (cmd.element1 == Element_NoChoice && cmd.element2 == Element_NoChoice) { return(DataGenerateManager <CombineDataGenerate> .GetData(s_comboData.TableIDs[0]).m_key); } for (int i = 0; i < s_comboData.TableIDs.Count; i++) { CombineDataGenerate data = DataGenerateManager <CombineDataGenerate> .GetData(s_comboData.TableIDs[i]); if (data.m_ele_1 != Element_NoChoice && data.m_ele_2 != Element_NoChoice ) { if ((data.m_ele_1 == cmd.element1 && data.m_ele_2 == cmd.element2) || (data.m_ele_2 == cmd.element1 && data.m_ele_1 == cmd.element2) ) { return(data.m_key); } } else { if ((data.m_ele_1 == cmd.element1 && data.m_ele_2 == 0) || (data.m_ele_2 == cmd.element2 && data.m_ele_1 == 0) ) { return(data.m_key); } } } return(null); //Error! throw new System.Exception("Not Find SkillName!"); }
public static void UpdateArea(Area area, string areaID, EntityBase skiller, EntityBase aim = null) { MoveComponent smc = skiller.GetComp <MoveComponent>(); AreaDataGenerate areaData = DataGenerateManager <AreaDataGenerate> .GetData(areaID); Vector3 dir = GetAreaDir(area, areaData, skiller, aim); area.areaType = areaData.m_Shape; area.length = areaData.m_Length; area.Width = areaData.m_Width; area.angle = areaData.m_Angle; area.radius = areaData.m_Radius; area.direction = dir.normalized; area.position = smc.pos.ToVector() + area.direction * areaData.m_SkewDistance; //Debug.Log( "skiller forward"+skiller.transform.forward); }
////判断CD结束 //public bool CDFinished() //{ // if (GetCDResidueTime() <= 0) // { // return true; // } // else // { // return false; // } //} ///// <summary> ///// 获取CD剩余时间 ///// </summary> //public float GetCDResidueTime() //{ // if (m_lastExecuteTime < 0) // { // return 0; // } // float result = m_CDSpace - (SyncService.CurrentServiceTime - m_lastExecuteTime); // if (result < 0) // { // result = 0; // } // return result; //} #endregion public void UpdateInfo() { if (m_skillID != "" && m_skillID != "null") { m_skillInfo = DataGenerateManager <SkillDataGenerate> .GetData(m_skillID); m_beforeInfo = DataGenerateManager <SkillStatusDataGenerate> .GetData(m_skillInfo.m_BeforeStatus); m_currentInfo = DataGenerateManager <SkillStatusDataGenerate> .GetData(m_skillInfo.m_CurrentStatus); m_laterInfo = DataGenerateManager <SkillStatusDataGenerate> .GetData(m_skillInfo.m_LaterStatus); m_beforeTime = m_beforeInfo.m_Time; m_hitTime = m_beforeTime + m_skillInfo.m_HitTime; m_currentTime = m_beforeTime + m_currentInfo.m_Time; m_laterTime = m_currentTime + m_laterInfo.m_Time; m_CDSpace = m_skillInfo.m_CD; } }
public void UpdateInfo() { if (m_skillID != "" && m_skillID != "null") { SkillInfo = DataGenerateManager <SkillDataGenerate> .GetData(m_skillID); BeforeInfo = DataGenerateManager <SkillStatusDataGenerate> .GetData(SkillInfo.m_BeforeStatus); CurrentInfo = DataGenerateManager <SkillStatusDataGenerate> .GetData(SkillInfo.m_CurrentStatus); LaterInfo = DataGenerateManager <SkillStatusDataGenerate> .GetData(SkillInfo.m_LaterStatus); BeforeTime = BeforeInfo.m_Time; HitTime = BeforeTime + SkillInfo.m_HitTime; CurrentTime = BeforeTime + CurrentInfo.m_Time; LaterTime = CurrentTime + LaterInfo.m_Time; CDSpace = SkillInfo.m_CD; } }
void CreateFlyObject(SkillDataGenerate skillData, EntityBase skiller) { CampComponent campComp = skiller.GetComp <CampComponent>(); if (skillData.m_FlyObjectName.Length != 0) { List <CreatPostionInfo> poss = GetCreatePostionInfos(skillData, skiller, skillData.m_FlyObjectName.Length); for (int i = 0; i < poss.Count; i++) { FlyDataGenerate flyData = DataGenerateManager <FlyDataGenerate> .GetData(skillData.m_FlyObjectName[i]); MoveComponent mc = new MoveComponent(); mc.pos.FromVector(poss[i].m_pos); mc.dir.FromVector(poss[i].m_dir); mc.m_velocity = (int)(flyData.m_Speed * 1000); LifeSpanComponent lsc = new LifeSpanComponent(); lsc.lifeTime = (int)(flyData.m_LiveTime * 1000); AssetComponent ac = new AssetComponent(); ac.m_assetName = flyData.m_ModelName; CampComponent cp = new CampComponent(); cp.camp = campComp.camp; CollisionComponent cc = new CollisionComponent(); cc.area.areaType = AreaType.Circle; cc.area.radius = flyData.m_Radius; FlyObjectComponent fc = new FlyObjectComponent(); fc.createrID = skiller.ID; fc.damage = skillData.m_DamageValue; m_world.CreateEntity(mc, ac, cp, lsc, cc, fc); Debug.Log(poss[i].m_pos.ToString()); } } }
public void SetMesh(EntityBase entity, string areaID, bool isEnemy, string textureID) { MoveComponent mc = entity.GetComp <MoveComponent>(); AreaDataGenerate areaData = DataGenerateManager <AreaDataGenerate> .GetData(areaID); Area Area = new Area(); Vector3 AreaDir = SkillUtils.GetAreaDir(Area, areaData, entity, null); //Debug.Log("areaData.m_SkewDistance " + areaData.m_SkewDistance); Vector3 pos = mc.pos.ToVector(); pos.y += 0.1f; transform.position = pos + AreaDir * areaData.m_SkewDistance; if (areaData.m_Shape == AreaType.Rectangle) { transform.position = pos + AreaDir * areaData.m_SkewDistance - AreaDir * areaData.m_Length / 2; } transform.right = AreaDir.normalized; //轴向不同,RangeTip 的前方为x轴,而player的为Z轴 shapeType = areaData.m_Shape; radius = areaData.m_Radius; angleDegree = areaData.m_Angle; segments = 40; high = (int)Math.Ceiling(areaData.m_Length); width = (int)Math.Ceiling(areaData.m_Width); isMonster = isEnemy; side = 0.5f; SetTexture(textureID); creator.verticesTmp = null; creator.uvsTmp = null; creator.trianglesTmp = null; }
public static string GetRhythmID(string content) { try { string tmp = content.Substring(content.Length - 1, 1); for (int i = 0; i < s_rhythmData.TableIDs.Count; i++) { if (DataGenerateManager <RhythmDataGenerate> .GetData(s_rhythmData.TableIDs[i]).m_Content.Contains(tmp)) { return(s_rhythmData.TableIDs[i]); } } //Debug.Log("查无此韵 " + content); } catch (Exception e) { Debug.LogError("GetRhythmID Error :->" + content + "<- Exception : " + e.ToString()); } return("未知"); }
List <CreatPostionInfo> GetCreatePostionInfos(SkillDataGenerate skillData, EntityBase skiller, int Length) { MoveComponent mc = skiller.GetComp <MoveComponent>(); PlayerComponent pc = skiller.GetComp <PlayerComponent>(); List <CreatPostionInfo> result = new List <CreatPostionInfo>(); result.Clear(); if (Length == 0) { return(result); } HardPointEnum l_FXCreatPoint = skillData.m_FlyCreatPoint; Vector3 forward = pc.faceDir.ToVector(); Vector3 dir = forward; Vector3 pos = Vector3.zero; //获取散射区域 Area skillArea = UpdatSkillArea(areaCache, skillData, skiller, null); //TODO 寻敌方法 //CharacterBase enemy = GetRecentlyEnemy(skillArea, skiller.m_camp, false); //CharacterBase enemy = null; MoveComponent emc = null; if (l_FXCreatPoint != HardPointEnum.enemy) { pos = mc.pos.ToVector(); } else { if (emc == null) { return(result); } else { pos = emc.pos.ToVector(); } } Vector3 leftBorder = Vector3.zero; Vector3 leftDir = Vector3.zero; Vector3 leftPos = Vector3.zero; float sectorStep = 0; float rectangleStep = 0; AreaDataGenerate area = DataGenerateManager <AreaDataGenerate> .GetData(skillData.m_FlyObjectArea); switch (area.m_SkewDirection) { case DirectionEnum.Forward: break; case DirectionEnum.Backward: forward *= -1; break; case DirectionEnum.Close: forward = (emc.pos.ToVector() - mc.pos.ToVector()).normalized; break; case DirectionEnum.Leave: forward = (mc.pos.ToVector() - emc.pos.ToVector()).normalized; break; } switch (area.m_Shape) { case AreaType.Circle: leftBorder = forward.Vector3RotateInXZ(360 * 0.5f); sectorStep = 360 / (Length + 1); break; case AreaType.Sector: leftBorder = forward.Vector3RotateInXZ(area.m_Angle * 0.5f); sectorStep = area.m_Angle / (Length + 1); break; case AreaType.Rectangle: leftDir = forward.Vector3RotateInXZ(90); leftPos = pos + leftDir * area.m_Width * 0.5f; rectangleStep = area.m_Width / (Length + 1); break; } for (int i = 0; i < Length; i++) { switch (area.m_Shape) { case AreaType.Circle: case AreaType.Sector: dir = leftBorder.Vector3RotateInXZ2((i + 1) * sectorStep); pos = pos + forward * area.m_SkewDistance; break; case AreaType.Rectangle: pos = leftPos - leftDir * rectangleStep * (i + 1); break; } CreatPostionInfo cpi = new CreatPostionInfo(); cpi.m_pos = pos; cpi.m_dir = dir; result.Add(cpi); } return(result); }
List <CreatPostionInfo> GetCreatePostionInfos(SkillDataGenerate skillData, EntityBase skiller, int Length) { MoveComponent mc = skiller.GetComp <MoveComponent>(); SkillStatusComponent ssc = skiller.GetComp <SkillStatusComponent>(); List <CreatPostionInfo> result = new List <CreatPostionInfo>(); //result.Clear(); if (Length == 0) { return(result); } HardPointEnum l_FXCreatPoint = skillData.m_FlyCreatPoint; SyncVector3 forward = new SyncVector3().FromVector(ssc.skillDir.ToVector().normalized); SyncVector3 dir = forward; SyncVector3 pos = mc.pos; SyncVector3 leftBorder = new SyncVector3(); SyncVector3 leftDir = new SyncVector3(); SyncVector3 leftPos = new SyncVector3(); float sectorStep = 0; float rectangleStep = 0; AreaDataGenerate area = DataGenerateManager <AreaDataGenerate> .GetData(skillData.m_FlyObjectArea); switch (area.m_SkewDirection) { case DirectionEnum.Forward: break; case DirectionEnum.Backward: forward *= -1; break; //case DirectionEnum.Close: forward = (emc.pos - mc.pos); break; //case DirectionEnum.Leave: forward = (mc.pos - emc.pos); break; } switch (area.m_Shape) { case AreaType.Circle: leftBorder = forward.RotateInXZ(360 * 0.5f); sectorStep = 360 / (Length + 1); break; case AreaType.Sector: leftBorder = forward.RotateInXZ(area.m_Angle * 0.5f); sectorStep = area.m_Angle / (Length + 1); pos = pos + forward * area.m_SkewDistance; break; case AreaType.Rectangle: leftDir = forward.RotateInXZ(90); leftPos = pos + leftDir * area.m_Width * 0.5f; rectangleStep = area.m_Width / (Length + 1); break; } for (int i = 0; i < Length; i++) { switch (area.m_Shape) { case AreaType.Circle: case AreaType.Sector: dir = leftBorder.RotateInXZ2((i + 1) * sectorStep); break; case AreaType.Rectangle: pos = leftPos - leftDir * rectangleStep * (i + 1); break; } CreatPostionInfo cpi = new CreatPostionInfo(); pos.y = 0; dir.y = 0; cpi.m_pos = pos; cpi.m_dir = dir; result.Add(cpi); //CreatPostionInfo cpi = new CreatPostionInfo(); //cpi.m_pos = mc.pos.DeepCopy(); //cpi.m_dir.FromVector( ssc.skillDir.DeepCopy().ToVector().normalized); //result.Add(cpi); } return(result); }