public void Convert(Entity entity, EntityManager dstManager, GameObjectConversionSystem conversionSystem) { dstManager.AddComponentData(entity, new SpawnerParameters { level = level, groupId = groupId, simple = new OneSpawnParameter() { spawnTime = spawnTime, spawnTimer = 0, maxEntity = maxEntity, currentEntity = 0, }, master = new OneSpawnParameter() { spawnTime = spawnTime * 2, spawnTimer = 0, maxEntity = maxEntity, currentEntity = 0, }, offset = transform.TransformDirection(offset.localPosition), }); ShortestPathSystem.AddGoalPoint(offset.position); }
public void Execute(ref PathFindingData pathFindingData, [ReadOnly] ref Walker walker, [ReadOnly] ref Translation translation) { if (math.length(pathFindingData.decidedGoal - translation.Value) < pathFindingData.radius) { pathFindingData.decidedForce = -walker.direction; return; } if (pathFindingData.pathFindingMethod != PathFindingMethod.AStar) { pathFindingData.decidedForce = math.normalizesafe(pathFindingData.decidedGoal - translation.Value); return; } var minvalue = ShortestPathSystem.GetMinValue(translation.Value, values, pathFindingData.decidedGoal, matrix); var distance = math.length(minvalue.goalPoint - pathFindingData.decidedGoal); if (math.length(pathFindingData.decidedGoal - translation.Value) < pathFindingData.radius + distance) { pathFindingData.decidedForce = math.normalizesafe(pathFindingData.decidedGoal - translation.Value); return; } if (math.length(minvalue.offsetVector) < 0.01f) { pathFindingData.decidedForce = -walker.direction; } else { pathFindingData.decidedForce = math.normalizesafe(minvalue.offsetVector); } }
public static void SelectedSetGoalPoint(float3 goalPoint) { var em = World.DefaultGameObjectInjectionWorld.EntityManager; var all = em.GetAllEntities(Unity.Collections.Allocator.Temp); var count = 0; foreach (var entity in all) { if (!em.HasComponent <Selectable>(entity)) { continue; } var selection = em.GetComponentData <Selectable>(entity); if (!selection.Selected) { continue; } if (!em.HasComponent <Fighter>(entity)) { continue; } count++; var fighter = em.GetComponentData <Fighter>(entity); fighter.goalPos = goalPoint; em.SetComponentData(entity, fighter); } var radius = math.sqrt(count / math.PI); DrawSphere(goalPoint, radius); foreach (var entity in all) { if (!em.HasComponent <Selectable>(entity)) { continue; } var selection = em.GetComponentData <Selectable>(entity); if (!selection.Selected) { continue; } if (!em.HasComponent <Fighter>(entity)) { continue; } var fighter = em.GetComponentData <Fighter>(entity); fighter.goalRadius = radius; em.SetComponentData(entity, fighter); } if (count > 0) { ShortestPathSystem.AddGoalPoint(goalPoint); } }
private void GetMin(ref float tmp, int index, float distance = 1) { var small = index % values.LayerSize; if (ShortestPathSystem.IsIn(index, values) && !collisionMatrix[small]) { var next = readArray[index]; if (!(next < 0f) && (tmp < 0f || next + 1f < tmp)) { tmp = next + distance; } } }
private void ChangeState() { var em = World.DefaultGameObjectInjectionWorld.EntityManager; foreach (var list in entities.Values) { foreach (var entity in list) { if (!em.Exists(entity)) { continue; } var data = em.GetComponentData <Fighter>(entity); data.goalPos = new float3(0, 2, 0); em.SetComponentData(entity, data); } } ShortestPathSystem.AddGoalPoint(new float3(0, 2, 0)); }