public void Convert(Entity _entity, EntityManager dstManager, GameObjectConversionSystem _conversionSystem) { Translation t = new Translation(); t.Value = new float3(0f, 0f, 0.0f); var moveData = new ObjectMoveData() { Speed = 1.0f, Direction = t, }; var playerData = new PlayerData() { Life = m_life, PrevScreenPos = new float2(Screen.width * 0.5f, Screen.height * 0.5f), }; var bulletFactoryData = new BulletFactoryData() { ParentEntity = _entity, PositionOffset = float3.zero, RotationOffset = float3.zero, SpawnCycle = m_spawnCycle, SpawnTimer = m_spawnCycle, /* バレットパラメーター */ Speed = 0.1f, MoveDirection = new float3(0f, 0f, 1f), Damage = 1, BulletType = 0, }; var bulletFactorySys = World.Active.GetOrCreateSystem <BulletFactorySystem>(); if (bulletFactorySys != null) { Camera cam = Camera.main; float frustumHeight = cam.transform.position.y * Mathf.Tan(cam.fieldOfView * 0.5f * Mathf.Deg2Rad); float frustumWidth = frustumHeight / Screen.height * Screen.width; float maxSize = math.max(frustumHeight * 2.0f, frustumWidth * 2.0f); int count = BulletFactorySystem.CalcPreloadObjectCount(maxSize, bulletFactoryData.Speed, 1.0f, bulletFactoryData.SpawnCycle); bulletFactoryData.BulletListHandler = bulletFactorySys.CreateBulletObject(count, m_bulletObjectPrefab, "MyBullet"); } dstManager.AddComponentData(_entity, moveData); dstManager.AddComponentData(_entity, playerData); dstManager.AddComponentData(_entity, bulletFactoryData); BulletCollisionSystem bulletSys = World.Active.GetOrCreateSystem <BulletCollisionSystem>(); bulletSys.Initialize(_entity); GAME.UI.UISystemManager.I.SetPlayerEntity(_entity); World.Active.GetOrCreateSystem <BulletComponentSystem>().Initialize(Camera.main); }
void CreateEnemy(EnemyScriptableObject _data, World _currentWorld, int index) { EntityManager manager = _currentWorld.EntityManager; Entity model = manager.Instantiate(GameObjectConversionUtility.ConvertGameObjectHierarchy(_data.ObjectModel, _currentWorld)); #if UNITY_EDITOR manager.SetName(model, $"Enemy_{index:D4}"); #endif // Entity 管理に登録 EnemyComponentSystem enemySys = _currentWorld.GetOrCreateSystem <EnemyComponentSystem>(); int enemyId = enemySys.GetInstanceId(); enemySys.AddEnemyEntity(enemyId, model); // Enemy の基本データ EnemyData enemyData = new EnemyData() { Id = enemyId, HP = _data.HP, Score = _data.Score }; manager.AddComponentData(model, enemyData); Translation initPos = new Translation(); initPos.Value = new float3(_data.DefaultPosition); manager.SetComponentData <Translation>(model, initPos); Translation t = new Translation(); t.Value = new float3(0f, 0f, 0.0f); var moveData = new ObjectMoveData() { Speed = 0.0f, Direction = t, }; manager.AddComponentData(model, moveData); var bulletFactorySys = _currentWorld.GetOrCreateSystem <BulletFactorySystem>(); Camera cam = Camera.main; float frustumHeight = cam.transform.position.y * Mathf.Tan(cam.fieldOfView * 0.5f * Mathf.Deg2Rad); float frustumWidth = frustumHeight / Screen.height * Screen.width; float maxSize = math.max(frustumHeight * 2.0f, frustumWidth * 2.0f); for (int i = 0; i < _data.Nway; i++) { var factoryEntity = manager.CreateEntity(); var bulletFactoryData = new BulletFactoryData() { ParentEntity = model, PositionOffset = float3.zero, RotationOffset = float3.zero, SpawnCycle = _data.SpawnCycle, SpawnTimer = _data.SpawnCycle, /* バレットパラメーター */ Speed = _data.BuleltSpeed, MoveDirection = Utils.CalcDirection(i, _data.Nway - 1, new float3(0f, 0f, -1f), _data.Angle), Damage = 1, BulletType = 1, }; if (bulletFactorySys != null) { int count = BulletFactorySystem.CalcPreloadObjectCount(maxSize, bulletFactoryData.Speed, 1.0f, bulletFactoryData.SpawnCycle); bulletFactoryData.BulletListHandler = bulletFactorySys.CreateBulletObject(count, _data.BulletModel); manager.AddComponentData(factoryEntity, bulletFactoryData); // Enemy 管理システムにも登録 enemySys?.AddBulletFactoryRelation(enemyData.Id, factoryEntity); } } }
void CreatePlayer(PlayerScriptableObject _data, World _currentWorld) { EntityManager manager = _currentWorld.EntityManager; m_playerEntity = manager.Instantiate(GameObjectConversionUtility.ConvertGameObjectHierarchy(_data.ObjectModel, _currentWorld)); Translation t = new Translation(); t.Value = new float3(_data.DefaultPosition); var moveData = new ObjectMoveData() { Speed = 1.0f, Direction = t, }; var playerData = new PlayerData() { Life = _data.HP, PrevScreenPos = new float2(Screen.width * 0.5f, Screen.height * 0.5f), }; var bulletFactoryData = new BulletFactoryData() { ParentEntity = m_playerEntity, PositionOffset = float3.zero, RotationOffset = float3.zero, SpawnCycle = _data.SpawnCycle, SpawnTimer = _data.SpawnCycle, /* バレットパラメーター */ Speed = _data.BuleltSpeed, MoveDirection = new float3(0f, 0f, 1f), Damage = _data.BulletDamage, BulletType = 0, }; var bulletFactorySys = _currentWorld.GetOrCreateSystem <BulletFactorySystem>(); if (bulletFactorySys != null) { Camera cam = Camera.main; float frustumHeight = cam.transform.position.y * Mathf.Tan(cam.fieldOfView * 0.5f * Mathf.Deg2Rad); float frustumWidth = frustumHeight / Screen.height * Screen.width; float maxSize = math.max(frustumHeight * 2.0f, frustumWidth * 2.0f); int count = BulletFactorySystem.CalcPreloadObjectCount(maxSize, bulletFactoryData.Speed, 1.0f, bulletFactoryData.SpawnCycle); bulletFactoryData.BulletListHandler = bulletFactorySys.CreateBulletObject(count, _data.BulletModel, "MyBullet"); } manager.SetComponentData <Translation>(m_playerEntity, t); manager.AddComponentData(m_playerEntity, moveData); manager.AddComponentData(m_playerEntity, playerData); manager.AddComponentData(m_playerEntity, bulletFactoryData); BulletCollisionSystem bulletSys = _currentWorld.GetOrCreateSystem <BulletCollisionSystem>(); bulletSys.Initialize(m_playerEntity); _currentWorld.GetOrCreateSystem <BulletComponentSystem>().Initialize(Camera.main); }
public void Convert(Entity _entity, EntityManager dstManager, GameObjectConversionSystem _conversionSystem) { Entity model = dstManager.Instantiate(GameObjectConversionUtility.ConvertGameObjectHierarchy(m_objectModel, World.Active)); // Entity 管理に登録 EnemyComponentSystem enemySys = World.Active.GetOrCreateSystem <EnemyComponentSystem>(); int enemyId = enemySys.GetInstanceId(); enemySys.AddEnemyEntity(enemyId, model); // Enemy の基本データ EnemyData enemyData = new EnemyData() { Id = enemyId, HP = m_hitPoint, Score = m_score }; dstManager.AddComponentData(model, enemyData); Translation initPos = new Translation(); initPos.Value = new float3(this.transform.position.x, this.transform.position.y, this.transform.position.z); dstManager.SetComponentData <Translation>(model, initPos); Translation t = new Translation(); t.Value = new float3(0f, 0f, 0.0f); var moveData = new ObjectMoveData() { Speed = 0.0f, Direction = t, }; dstManager.AddComponentData(model, moveData); var bulletFactorySys = World.Active.GetOrCreateSystem <BulletFactorySystem>(); Camera cam = Camera.main; float frustumHeight = cam.transform.position.y * Mathf.Tan(cam.fieldOfView * 0.5f * Mathf.Deg2Rad); float frustumWidth = frustumHeight / Screen.height * Screen.width; float maxSize = math.max(frustumHeight * 2.0f, frustumWidth * 2.0f); for (int i = 0; i < m_nway; i++) { var factoryEntity = dstManager.CreateEntity(); var bulletFactoryData = new BulletFactoryData() { ParentEntity = model, PositionOffset = float3.zero, RotationOffset = float3.zero, SpawnCycle = m_spawnCycle, SpawnTimer = m_spawnCycle, /* バレットパラメーター */ Speed = m_buleltSpeed, MoveDirection = CalcDirection(i, m_nway - 1, new float3(0f, 0f, -1f), m_angle), Damage = 1, BulletType = 1, }; if (bulletFactorySys != null) { int count = BulletFactorySystem.CalcPreloadObjectCount(maxSize, bulletFactoryData.Speed, 1.0f, bulletFactoryData.SpawnCycle); bulletFactoryData.BulletListHandler = bulletFactorySys.CreateBulletObject(count, m_bulletModel); dstManager.AddComponentData(factoryEntity, bulletFactoryData); // Enemy 管理システムにも登録 enemySys?.AddBulletFactoryRelation(enemyData.Id, factoryEntity); } } }