示例#1
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);
            }
        }
 void spawn(ref LockTarget lt,
            ref float3 pos,
            ref quaternion rot,
            ref RandomLocal random,
            int i,
            Entity entity,
            float arrive_period)
 {
     ECSLaserManager.spawn(command_buffer_,
                           ref lt,
                           ref pos,
                           ref rot,
                           ref random,
                           i,
                           entity,
                           arrive_period);
 }
 public static void spawn(EntityCommandBuffer.Concurrent command_buffer,
                          ref LockTarget lt,
                          ref float3 position,
                          ref quaternion rotation,
                          ref RandomLocal random,
                          int index,
                          Entity target,
                          float arrive_period)
 {
     Instance.spawn_internal(command_buffer,
                             ref lt,
                             ref position,
                             ref rotation,
                             ref random,
                             index,
                             target,
                             arrive_period);
 }
 protected override void OnCreateManager(int capacity)
 {
     base.OnCreateManager(capacity);
     random_     = RandomMaker.create();
     enumerator_ = act();
 }