public void HasComponent() { const int entityId = 0; var mapper = new ComponentMapper <Transform2>(3, _ => { }); var component = new Transform2(); Assert.False(mapper.Has(entityId)); mapper.Put(entityId, component); Assert.True(mapper.Has(entityId)); }
public void PutAndGetComponent() { const int entityId = 3; var mapper = new ComponentMapper <Transform2>(1, _ => { }); var component = new Transform2(); mapper.Put(entityId, component); Assert.Equal(typeof(Transform2), mapper.ComponentType); Assert.True(mapper.Components.Count >= 1); Assert.Same(component, mapper.Get(entityId)); }
public void OnPut() { const int entityId = 3; var mapper = new ComponentMapper <Transform2>(1, _ => { }); var component = new Transform2(); mapper.OnPut += (entId) => { Assert.Equal(entityId, entId); Assert.Same(component, mapper.Get(entityId)); }; mapper.Put(entityId, component); }
public void OnDelete() { const int entityId = 1; var mapper = new ComponentMapper <Transform2>(2, _ => { }); var component = new Transform2(); mapper.OnDelete += (entId) => { Assert.Equal(entityId, entId); Assert.False(mapper.Has(entityId)); }; mapper.Put(entityId, component); mapper.Delete(entityId); }
public override void Update(GameTime gameTime) { var elapsedSeconds = gameTime.GetElapsedSeconds(); foreach (var entityId in ActiveEntities) { var transform = _transformMapper.Get(entityId); var raindrop = _raindropMapper.Get(entityId); raindrop.Velocity += new Vector2(0, 500) * elapsedSeconds; transform.Position += raindrop.Velocity * elapsedSeconds; if (transform.Position.Y >= 480 && !_expiryMapper.Has(entityId)) { for (var i = 0; i < 3; i++) { var velocity = new Vector2(_random.NextSingle(-100, 100), -raindrop.Velocity.Y * _random.NextSingle(0.1f, 0.2f)); var id = CreateRaindrop(transform.Position.SetY(479), velocity, (i + 1) * 0.5f); _expiryMapper.Put(id, new Expiry(1f)); } DestroyEntity(entityId); } } _spawnDelay -= gameTime.GetElapsedSeconds(); if (_spawnDelay <= 0) { for (var q = 0; q < 50; q++) { var position = new Vector2(_random.NextSingle(0, 800), _random.NextSingle(-240, -480)); CreateRaindrop(position); } _spawnDelay = _random.NextSingle(_minSpawnDelay, _maxSpawnDelay); } }