Exemple #1
0
        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);
        }
Exemple #2
0
        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);
            }
        }
Exemple #4
0
        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;
                }
            }
        }
Exemple #5
0
        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));
        }