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); }
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; }