Example #1
0
        public void spawn_internal(EntityCommandBuffer.Concurrent command_buffer,
                                   ref LockTarget lt,
                                   ref float3 position,
                                   ref quaternion rotation,
                                   ref RandomLocal random,
                                   int index,
                                   Entity target,
                                   float arrive_period,
                                   int job_index)
        {
            command_buffer.CreateEntity(job_index, archetype_);
            command_buffer.SetComponent(job_index, new Position {
                Value = position,
            });
            command_buffer.SetComponent(job_index, new LaserData {
                end_time_      = CV.MaxValue,
                target_entity_ = target,
                arrive_period_ = arrive_period,
                lock_target_   = lt,
            });
            var         rb            = new RigidbodyPosition(0f /* damper */);
            const float FIRE_VEL      = 8f;
            var         fire_velocity = new float3(index % 2 == 0 ? FIRE_VEL * 2f : -FIRE_VEL * 2f,
                                                   random.range(-FIRE_VEL, FIRE_VEL),
                                                   random.range(-FIRE_VEL, FIRE_VEL));

            rb.velocity_ = math.mul(rotation, fire_velocity);
            command_buffer.SetComponent(job_index, rb);
            var td = new TrailData {
                color_type_ = (int)TrailManager.ColorType.Green,
            };

            command_buffer.SetComponent(job_index, td);

            {
                var buffer = command_buffer.SetBuffer <TrailPoint>(job_index);
                for (var i = 0; i < buffer.Capacity; ++i)
                {
                    buffer.Add(new TrailPoint {
                        position_ = position, normal_ = new float3(0f, 0f, 1f),
                    });
                }
            }

            var material = TrailManager.Instance.getMaterial();
            var renderer = new TrailRenderer {
                material_ = material,
            };

            command_buffer.SetSharedComponent <TrailRenderer>(job_index, renderer);
        }
Example #2
0
        public void spawn(ref float3 position,
                          ref quaternion rotation,
                          ref RandomLocal random,
                          ref AtomicFloatResource float_resource)
        {
            var entity_manager = Unity.Entities.World.Active.GetOrCreateManager <Unity.Entities.EntityManager>();
            var entity         = entity_manager.CreateEntity(archetype_);

            entity_manager.SetComponentData(entity, new Position {
                Value = position,
            });
            entity_manager.SetComponentData(entity, new Rotation {
                Value = rotation,
            });
            entity_manager.SetComponentData(entity, new RigidbodyRotation(10f /* damper */));
            entity_manager.SetComponentData(entity, random.create());
            entity_manager.SetComponentData(entity, new SphereCollider {
                offset_position_ = new float3(0f, 0f, 0f),
                radius_          = 1f,
            });
            entity_manager.SetComponentData(entity, AlivePeriod.Create(Time.GetCurrent(), 6f /* period */));
            var enemy = Enemy.Create(ref float_resource);

            entity_manager.SetComponentData(entity, enemy);
            entity_manager.SetComponentData(entity, new Zako {
                target_position_ = new float3(random.range(-20f, 20f), random.range(-20f, 20f), 0f),
            });
            entity_manager.SetComponentData(entity, new MeshRenderBounds {
                Center = new float3(0f, 0f, 0f), Radius = 0.5f,
            });
            var renderer = new MeshInstanceRenderer {
                mesh           = mesh_,
                material       = material_,
                subMesh        = 0,
                castShadows    = UnityEngine.Rendering.ShadowCastingMode.On,
                receiveShadows = true,
            };

            entity_manager.SetSharedComponentData(entity, renderer);

            for (var i = 0; i < locktarget_list_.Length; ++i)
            {
                LockTargetManager.CreateEntity(entity_manager,
                                               locktarget_list_[i].localPosition,
                                               locktarget_list_[i].localRotation,
                                               ref enemy.life_,
                                               entity,
                                               ref random);
            }
        }
        private IEnumerator act()
        {
            yield return(null);

            for (;;)
            {
                for (var i = new WaitForSeconds(0.25f, Time.GetCurrent()); !i.end(Time.GetCurrent());)
                {
                    yield return(null);
                }
                for (var i = 0; i < 16; ++i)
                {
                    var pos            = new float3(random_.range(-15f, 15f), random_.range(-15f, 15f), -10f);
                    var rot            = quaternion.identity;
                    var float_resource = SystemManagerSystem.FloatResource;
                    ECSZakoManager.Instance.spawn(ref pos, ref rot, ref random_, ref float_resource);
                }
                yield return(null);
            }
            // for (;;) yield return null;
        }