예제 #1
0
        public static Entity CreateEntity(EntityManager entity_manager,
                                          UnityEngine.Vector3 localPos,
                                          UnityEngine.Quaternion localRot,
                                          ref AtomicFloat life,
                                          Entity parent_entity,
                                          ref RandomLocal random)
        {
            var entity = entity_manager.CreateEntity(archetype_);

            entity_manager.SetComponentData(entity, LockTarget.Create(ref life));
            entity_manager.SetComponentData(entity, new Position {
                Value = localPos,
            });
            entity_manager.SetComponentData(entity, new Rotation {
                Value = localRot,
            });
            entity_manager.SetComponentData(entity, random.create());

            var attach_entity = entity_manager.CreateEntity(typeof(Attach));

            entity_manager.SetComponentData(attach_entity, new Attach {
                Parent = parent_entity, Child = entity,
            });

            return(entity);
        }
예제 #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);
            }
        }
예제 #3
0
 public static RandomLocal create()
 {
     return(base_random_.create());
 }