public override int SetEntitas(IShipDockEntitas target) { int id = base.SetEntitas(target); if (id >= 0) { RoleCreated = target as ICommonRole; int campID = RoleCreated.Camp; List <int> list; if (mCampRoles.IsContainsKey(campID)) { list = mCampRoles[campID]; } else { list = new List <int>(); mCampRoles[campID] = list; } list.Add(id); if (!mAllRoles.Contains(id)) { mAllRoles.Add(id); } mDataServer.Delive <IParamNotice <ICommonRole> >(AddCampRoleResovlerName, CampRoleCreatedAlias); RoleCreated = default; } return(id); }
public override void Execute(int time, ref IShipDockEntitas target) { base.Execute(time, ref target); mRoleCheckinging = target as ICommonRole; int id; int max = mAllRoles.Count; for (int i = 0; i < max; i++) { id = mAllRoles[i]; mRoleTarget = GetEntitas(id) as ICommonRole; if (WillWalkForRoleEnemyTarget()) { BeforeAITargetEnemyCheck(); if (WillCheckAIRoleEnemyTarget()) { mRoleCheckinging.FindingPath = true; mRoleCheckinging.TargetTracking = mRoleTarget; AfterAITargetEnemyCheck(); break; } } } AfterAITargetEnemyCheck(); }
/// <summary> /// 检测群聚 /// </summary> private void CheckClustering(ref IShipDockEntitas target) { if ((mMovement != default) && IsWorldItemValid(ref mWorldItem)) { int id = mWorldItem.worldItemID; mClusteringData = ClusteringComp.GetEntitasData(ref target); if ((id != int.MaxValue) && (mClusteringData != default)) { if (mClusteringData.IsGroupCached) { mClusteringData.ClusteringMag = mMovement.ClusteringDirection.magnitude; "todo".Log("开发群聚功能"); } else { if (!mGroupsMapper.ContainsKey(id)) { mWorldItem.groupID = id; mClusteringData.IsGroupCached = true; mGroupsMapper[id] = mClusteringData; } } } } }
public void UpdateComponent(int time) { int id; int max = (mEntitasIDs != default) ? mEntitasIDs.Count : 0; for (int i = 0; i < max; i++) { id = mEntitasIDs[i]; mEntitasItem = GetEntitas(id); if (mEntitasItem != default) { if (mEntitasItem.WillDestroy || mEntitasIDsRemoved.Contains(id)) { if (!mEntitasIDsRelease.Contains(id)) { mEntitasIDsRelease.Add(id); } } else { Execute(time, ref mEntitasItem); } } else { if (!mEntitasIDsRemoved.Contains(id)) { mEntitasIDsRelease.Add(id); } } } mEntitasItem = default; }
public override void Execute(int time, ref IShipDockEntitas target) { base.Execute(time, ref target); mRole = target as ICommonRole; #if LOG_TRY_CATCH_ROLE && UNITY_EDITOR try { #endif mRoleInput = mRole.RoleInput; #if LOG_TRY_CATCH_ROLE && UNITY_EDITOR } catch (System.Exception error) { Testers.Tester.Instance.Log(TesterRPG.Instance, TesterRPG.LOG, "error:".Append(error.Message)); } #endif if (mRoleInput == default) { return; } int phaseName = mRoleInput.RoleInputPhase; switch (phaseName) { default: int allowCalled = mAllowCalleds.ContainsKey(phaseName) ? mAllowCalleds[phaseName] : 0; mRoleInput.AdvancedInputPhase(phaseName, allowCalled); break; } }
public override int SetEntitas(IShipDockEntitas target) { int id = base.SetEntitas(target); FillEntitasData(ref target, CreateData()); return(id); }
private void FinalUpdate(int time) { mQueueUpdateTime.Step(time); mQueueUpdateEntitas.Step(time); mQueueUpdateExecute.Step(time); mFinalUpdateEntitas = default; mFinalUpdateMethod = default; }
public override void Execute(int time, ref IShipDockEntitas target) { base.Execute(time, ref target); mRoleItem = target as IFWRole; if (mRoleItem != default) { } }
public override void Execute(int time, ref IShipDockEntitas target) { base.Execute(time, ref target); mRole = target as RoleEntitas; if (mRole.Gravity) { mRole.Gravity = true; } }
protected void ExecuteInFinal(int time, IShipDockEntitas entitas, Action <int, IShipDockEntitas> method) { if (ID == int.MaxValue) { return; } OnFinalUpdateForTime.Invoke(time); OnFinalUpdateForEntitas.Invoke(entitas); OnFinalUpdateForExecute(method); }
public virtual int SetEntitas(IShipDockEntitas target) { int id = mEntitas.Add(target, out int statu); if (statu == 0) { mEntitasIDs.Add(id); } return(id); }
protected override void FreeEntitas(int mid, ref IShipDockEntitas entitas, out int statu) { base.FreeEntitas(mid, ref entitas, out statu); mRoleItem = entitas as ICommonRole; RemoveSubgroupMap(ref mRigidbodySubgourp, ref mRoleItem); RemoveSubgroupMap(ref mRoleColliderSubgourp, ref mRoleItem); RemoveSubgroupMap(ref mAnimatorSubgourp, ref mRoleItem); RemoveSubgroupMap(ref mRoleColliderScanedSubgourp, ref mRoleItem); }
public virtual int SetEntitas(IShipDockEntitas target) { int aid = mEntitas.Add(target, out int statu); if (statu == 0) { mEntitasIDs.Add(aid); OnEntitasStretch?.Invoke(target, false); } return(aid); }
/// <summary> /// 组件中的实体数量发生变化的回调 /// </summary> public virtual void ComponentEntitasStretch(IShipDockEntitas entitas, bool isRemove) { if (isRemove) { entitas.RemoveComponent(this); } else { entitas.AddComponent(this); } }
public override void Execute(int time, ref IShipDockEntitas target) { base.Execute(time, ref target); mRole = target as ICommonRole; if (mRole != default && mRole.PositionEnabled) { CheckEnemyLockDown(); } }
public virtual int DropEntitas(IShipDockEntitas target, int entitasID) { if (mEntitasIDsRemoved.Contains(entitasID)) { return(1); } else { mEntitasIDsRemoved.Add(entitasID); } return(0); }
/// <summary> /// 检测世界交换物体的缓存 /// </summary> private void CheckWorldItemCaches(ref IShipDockEntitas target) { if (WorldComp.IsDataValid(ref target)) { mWorldItem = WorldComp.GetEntitasData(ref target); if (ShouldAddToWorldItems()) { mWorldItemMapper.Put(mWorldItem.worldItemID, mWorldItem); AfterWorldItemCached(ref target); } } }
private void CleanAllEntitas(ref List <int> list) { int id; int max = list.Count; for (int i = 0; i < max; i++) { id = list[i]; mEntitasItem = GetEntitas(id); mEntitasItem.RemoveComponent(this); } }
public override void Execute(int time, ref IShipDockEntitas target) { base.Execute(time, ref target); int blockID; mRole = target as ICommonRole; bool isGetEnemy = false; #if LOG_TRY_CATCH_TIRGGER && UNITY_EDITOR try { #endif mRoleColliding = mRole.CollidingRoles; #if LOG_TRY_CATCH_TIRGGER && UNITY_EDITOR } catch (System.Exception error) { Testers.Tester.Instance.Log(TesterRPG.Instance, TesterRPG.LOG, "error: role is null"); } #endif int max = mRoleColliding != default ? mRoleColliding.Count : 0; if (max > 0) { for (int i = 0; i < max; i++) { if (i >= mRoleColliding.Count) { break; } blockID = mRoleColliding[i]; mRoleCollidingTarget = mRoleColliderMapper[blockID]; if (mRoleCollidingTarget != default) { if (mRoleCollidingTarget == mRole.TargetTracking) { isGetEnemy = true; } } } if (isGetEnemy) { mRole.FindingPath = false; } //else //{ // mRole.EnemyMainLockDown = default; // mRole.FindngPath = true;//TODO 锁定最近的敌人 // mRole.SpeedCurrent = mRole.Speed; //} } }
/// <summary> /// 删除实体 /// </summary> public virtual int DropEntitas(IShipDockEntitas target, int entitasID) { if (mEntitasIDsRemoved.Contains(entitasID)) { return(1); } else { OnEntitasStretch?.Invoke(target, true); mEntitasIDsRemoved.Add(entitasID); } return(0); }
public override int DropEntitas(IShipDockEntitas target, int entitasID) { mWorldItem = WorldComp.GetEntitasData(ref target); if ((mWorldItem != default) && (mWorldItem.worldItemID != int.MaxValue)) { if (mWorldItemMapper.ContainsKey(mWorldItem.worldItemID)) { DropWorldItem(ref target); } } return(base.DropEntitas(target, entitasID)); }
protected override void FreeEntitas(int mid, ref IShipDockEntitas entitas, out int statu) { base.FreeEntitas(mid, ref entitas, out statu); if (statu == 0) { ICommonRole role = entitas as ICommonRole; int colliderID = role.RoleMustSubgroup.roleColliderID; mRoleColliderMapper.Remove(colliderID); colliderID = role.RoleMustSubgroup.roleScanedColliderID; mRoleColliderMapper.Remove(colliderID); } }
public override void Execute(int time, ref IShipDockEntitas target) { base.Execute(time, ref target); mMovement = GetMovmentData(ref target); CheckWorldItemCaches(ref target); if (ShouldWorldGroupable) { SetClusteringPosition(ref target); CheckClustering(ref target); } CheckAround(ref target); CheckWorldEvents(); }
public override int SetEntitas(IShipDockEntitas target) { int id = base.SetEntitas(target); if (id >= 0) { ICommonRole role = target as ICommonRole; int subgroupID = role.RoleMustSubgroup.roleColliderID; mRoleColliderMapper[subgroupID] = role; subgroupID = role.RoleMustSubgroup.roleScanedColliderID; mRoleColliderMapper[subgroupID] = role; } return(id); }
public virtual void Dispose() { CleanAllEntitas(ref mEntitasIDs); CleanAllEntitas(ref mEntitasIDsRelease); OnFinalUpdateForTime = default; OnFinalUpdateForEntitas = default; OnFinalUpdateForExecute = default; mEntitasItem = default; Utils.Reclaim(ref mEntitasIDs); Utils.Reclaim(ref mEntitasIDsRelease); Utils.Reclaim(mEntitas); ID = int.MaxValue; }
public void SetSubgroup(IShipDockEntitas entitas, ICommonOverlayMapper commonCollider) { bool hasData = commonCollider.IsDataValid(ref entitas); if (hasData) { BehaviourIDs ids = commonCollider.GetEntitasData(ref entitas); SubgroupID = ids.gameItemID; mCommonColliderMapper = commonCollider; mCommonColliderMapper.PhysicsChecked(SubgroupID, true); mBridge = new ComponentBridge(OnInit); mBridge.Start(); } }
public override int DropEntitas(IShipDockEntitas target, int entitasID) { if (mDatas.ContainsKey(target)) { mDataKeys.Remove(target); int index = mDataKeys.IndexOf(target); if (index != -1) { mInvalidDatasIndex.Remove(index); } T data = mDatas.Remove(target); DropData(ref data); } return(base.DropEntitas(target, entitasID)); }
public override int SetEntitas(IShipDockEntitas target) { int id = base.SetEntitas(target); if (id >= 0) { mRoleItem = target as ICommonRole; CommonRoleMustSubgroup subgroup = mRoleItem.RoleMustSubgroup; SetSubgroupMap(ref mRigidbodySubgourp, subgroup.rigidbodyID); SetSubgroupMap(ref mRoleColliderSubgourp, subgroup.roleColliderID); SetSubgroupMap(ref mAnimatorSubgourp, subgroup.animatorID); SetSubgroupMap(ref mRoleColliderScanedSubgourp, subgroup.roleScanedColliderID); } return(id); }
private void OnQueueUpdateExecute(int time, Action <int, IShipDockEntitas> current) { mFinalUpdateTime = mQueueUpdateTime.Current; mFinalUpdateEntitas = mQueueUpdateEntitas.Current; mFinalUpdateMethod = current; if (mFinalUpdateEntitas == default) { mFinalUpdateMethod.Invoke(mFinalUpdateTime, default); } else { if (!mFinalUpdateEntitas.WillDestroy && (mFinalUpdateEntitas.ID != int.MaxValue)) { mFinalUpdateMethod.Invoke(mFinalUpdateTime, mFinalUpdateEntitas); } } }
/// <summary> /// 检测组件中需要释放的实体 /// </summary> public void FreeComponent(int time) { int id; int max = (mEntitasIDsRelease != default) ? mEntitasIDsRelease.Count : 0; for (int i = 0; i < max; i++) { id = mEntitasIDsRelease[i]; mEntitasItem = GetEntitas(id); if (mEntitasItem != default) { FreeEntitas(id, ref mEntitasItem, out int statu); } mEntitasIDsRemoved.Remove(id); } mEntitasIDsRelease.Clear(); mEntitasItem = default; }