public static void ImportWater(EntityManager em, EntityArchetype waterArchetype, InitializeSettings initSettings) { var waterEntity = em.CreateEntity(waterArchetype); em.SetComponentData(waterEntity, initSettings.waterStats.position); em.SetComponentData(waterEntity, initSettings.waterStats.scale); em.SetComponentData(waterEntity, initSettings.waterStats.rotation); em.AddSharedComponentData(waterEntity, initSettings.waterStats.render); }
public static void InitializeWithScene() { initSettings = InitializeSettings.LoadFromResources(); entityManager = World.Active.GetOrCreateManager <EntityManager>(); LevelGenerator.ImportWater(entityManager, waterArchetype, initSettings); LevelGenerator.ImportMap(entityManager, blockArchetype, initSettings); GameObjectsGenerator.ImportPlayer(entityManager, playerArchetype, initSettings); GameObjectsGenerator.ImportEnemy(entityManager, enemyArchetype, initSettings); GameObjectsGenerator.ImportItem(entityManager, itemArchetype, initSettings); }
public static void ImportItem(EntityManager em, EntityArchetype itemArchetype, InitializeSettings initSettings) { var itemEntity = em.CreateEntity(itemArchetype); em.SetComponentData(itemEntity, initSettings.itemStats.position); em.SetComponentData(itemEntity, initSettings.itemStats.scale); em.SetComponentData(itemEntity, initSettings.itemStats.rotation); em.SetComponentData(itemEntity, new AABBCollider { Size = initSettings.itemStats.aabbcollider }); em.SetComponentData(itemEntity, new RigidbodyComponent { Mass = initSettings.itemStats.rigidbody }); em.AddSharedComponentData(itemEntity, initSettings.itemStats.render); }
/// <summary> /// Методы Добавления объектов мира /// </summary> /// <param name="em"></param> /// <param name="blockArchetype"></param> /// <param name="initSettings"></param> #region // Метод импорта карты ImportMap(); public static void ImportMap(EntityManager em, EntityArchetype blockArchetype, InitializeSettings initSettings) { int levelLength = initSettings.levelLength; int levelHeight = initSettings.levelHeight; int k = 0; Position startPosition = initSettings.blockStats.position; Position spawnPosition; Scale scale = initSettings.blockStats.scale; MeshInstanceRenderer renderBlock = initSettings.blockStats.render; NativeArray <Entity> sector = new NativeArray <Entity>(BlocksCount(levelLength, levelHeight), Allocator.Temp); bool[] sectorStatus = new bool[BlocksCount(levelLength, levelHeight)]; for (int i = 0; i < BlocksCount(levelLength, levelHeight); i++) { sectorStatus[i] = false; } em.CreateEntity(blockArchetype, sector); for (int _y = 0; _y < levelHeight; _y++) { for (int _z = 0; _z < levelLength; _z++) { for (int _x = 0; _x < levelLength; _x++) { spawnPosition = NextPosition(_x, _y, _z, scale, startPosition); em.SetComponentData(sector[k], spawnPosition); em.SetComponentData(sector[k], scale); k = AddSector(em, sector[k], scale, renderBlock, levelLength, _y, k, sectorStatus); } } } Debug.Log("K: " + k); sector.Dispose(); }
public static void ImportEnemy(EntityManager em, EntityArchetype enemyArchetype, InitializeSettings initSettings) { var enemyEntity = em.CreateEntity(enemyArchetype); em.SetComponentData(enemyEntity, initSettings.enemyStats.position); em.SetComponentData(enemyEntity, initSettings.enemyStats.scale); em.SetComponentData(enemyEntity, initSettings.enemyStats.rotation); em.SetComponentData(enemyEntity, new AABBCollider { Size = initSettings.playerStats.aabbcollider }); em.SetComponentData(enemyEntity, new RigidbodyComponent { Mass = initSettings.playerStats.rigidbody }); em.SetComponentData(enemyEntity, new Velocity { Value = initSettings.playerStats.velocity }); em.SetComponentData(enemyEntity, new Health { Value = initSettings.playerStats.health }); em.SetComponentData(enemyEntity, new Damage { Value = initSettings.playerStats.damage }); em.AddSharedComponentData(enemyEntity, initSettings.enemyStats.render); }
public void ReLoadScene() { EntityManager em = World.Active.GetOrCreateManager <EntityManager>(); InitializeSettings initSettings = InitializeSettings.LoadFromResources(); EntityArchetype playerArchetype; EntityArchetype enemyArchetype; EntityArchetype itemArchetype; EntityArchetype blockArchetype; EntityArchetype waterArchetype; int levelLength = initSettings.levelLength; int levelHeight = initSettings.levelHeight; NativeArray <Entity> sector = new NativeArray <Entity>(500, Allocator.Temp); sector = em.GetAllEntities(Allocator.Temp); for (int i = 0; i < sector.Length; i++) { em.DestroyEntity(sector[i]); } playerArchetype = ObjectsEntityFactory.CreatePlayerArchetype(em); enemyArchetype = ObjectsEntityFactory.CreateEnemyArchetype(em); itemArchetype = ObjectsEntityFactory.CreateItemArchetype(em); blockArchetype = ObjectsEntityFactory.CreateBlockArchetype(em); waterArchetype = ObjectsEntityFactory.CreateWaterArchetype(em); LevelGenerator.ImportWater(em, waterArchetype, initSettings); LevelGenerator.ImportMap(em, blockArchetype, initSettings); GameObjectsGenerator.ImportPlayer(em, playerArchetype, initSettings); GameObjectsGenerator.ImportEnemy(em, enemyArchetype, initSettings); GameObjectsGenerator.ImportItem(em, itemArchetype, initSettings); }