public void EmptyEntity_LocalIdentity() { var entity = new Entity(); var result = TransformationUtils.GetTransformation(entity); Assert.AreEqual(Matrix.Identity, result.LocalTransformMatrix); }
public void HaveSelfValues_LocalMatrixFilled() { var entity = new Entity(); entity.AddComponent(new PositionComponent(2, 3)); entity.AddComponent(new ScaleComponent(4, 5)); var result = TransformationUtils.GetTransformation(entity); Assert.AreEqual( new Matrix { M11 = 4, M12 = 0, M13 = 0, M14 = 0, M21 = 0, M22 = 5, M23 = 0, M24 = 0, M31 = 0, M32 = 0, M33 = 1, M34 = 0, M41 = 2, M42 = 3, M43 = 0, M44 = 1 }, result.LocalTransformMatrix); }
protected override void DoAction(Entity entity, TimeSpan gameTime) { base.DoAction(entity, gameTime); var sprite = entity.GetComponent <SpriteComponent>(); var effect = entity.GetComponent <SpriteEffectsComponent>()?.SpriteEffects ?? SpriteEffects.None; var color = entity.GetComponent <ColorComponent>()?.Color ?? Color.White; var depth = entity.GetComponent <DepthLayerComponent>()?.Depth ?? 0; if (sprite.Drawable == null) { entity.RemoveComponent <FinalRenderComponent>(); return; } var finalRender = entity.GetOrCreateComponent <FinalRenderComponent>(); finalRender.Batch.Clear(); sprite.Drawable.DrawInto(color, depth, finalRender.Batch); var transformation = TransformationUtils.GetTransformation(entity).LocalTransformMatrix; foreach (var mesh in finalRender.Batch.Meshes) { mesh.ApplyEffectToMesh(effect); mesh.ApplyTransformMesh(transformation); } }
private void UpdateFollow(Entity entity) { var follow = entity.GetComponent <FollowCameraComponent>(); follow.DesiredPosition.X = follow.DesiredPosition.Y = 0; var transform = TransformationUtils.GetTransformation(entity); follow.DesiredPosition.X = transform.Position.X; follow.DesiredPosition.Y = transform.Position.Y; }
protected override void DoAction(Entity entity, TimeSpan gameTime) { base.DoAction(entity, gameTime); var field = entity.GetComponent <FieldComponent>(); var finalRender = entity.GetOrCreateComponent <FinalRenderComponent>(); var effect = entity.GetComponent <SpriteEffectsComponent>()?.SpriteEffects ?? SpriteEffects.None; var depth = entity.GetComponent <DepthLayerComponent>()?.Depth ?? 0; if (finalRender.Batch.Meshes.Count != field.Map.GetLength(0) * field.Map.GetLength(1)) { finalRender.Batch.Clear(); var texture = field.Texture; for (var x = 0; x < field.Map.GetLength(0); x++) { for (var y = 0; y < field.Map.GetLength(1); y++) { finalRender.Batch.Draw( texture, new RectangleF( x * (field.BlockSize + field.BlockInterval), y * (field.BlockSize + field.BlockInterval), field.BlockSize, field.BlockSize), texture.Bounds, this.ConvertMapToColor(field.Map[x, y]), depth); } } var transformation = TransformationUtils.GetTransformation(entity).LocalTransformMatrix; foreach (var mesh in finalRender.Batch.Meshes) { mesh.ApplyEffectToMesh(effect); mesh.ApplyTransformMesh(transformation); } } else { for (var x = 0; x < field.Map.GetLength(0); x++) { for (var y = 0; y < field.Map.GetLength(1); y++) { finalRender.Batch.Meshes[x * field.Map.GetLength(1) + y].SetColor(this.ConvertMapToColor(field.Map[x, y])); } } } }
protected override void DoAction(Entity entity, TimeSpan gameTime) { base.DoAction(entity, gameTime); var map = entity.GetComponent <TiledMapComponent>(); var depth = entity.GetComponent <DepthLayerComponent>()?.Depth ?? 0; var finalRender = entity.GetComponent <FinalRenderComponent>(); if (finalRender == null) { finalRender = entity.AddComponent <FinalRenderComponent>(); } finalRender.Batch.Clear(); var transformMatrix = TransformationUtils.GetTransformation(entity).LocalTransformMatrix; this.Draw(map, depth, finalRender.Batch, transformMatrix); }
protected override void DoAction(Entity entity, TimeSpan gameTime) { base.DoAction(entity, gameTime); var mouse = entity.GetComponent <InputMouseComponent>(); var clickable = entity.GetComponent <CursorOverComponent>(); var mousePosition = this.scene.Camera.ScreenToWorldPoint(mouse.MousePosition); var entityPosition = TransformationUtils.GetTransformation(entity); var matrix = entityPosition.LocalTransformMatrix; Matrix.Invert(ref matrix, out matrix); Vector2.Transform(ref mousePosition, ref matrix, out mousePosition); var rect = clickable.OverRegion; clickable.IsMouseOver = rect.Contains(mousePosition); }
public void HaveParentTranslation_LocalMatrixMoved() { var parent = new Entity(); parent.AddComponent(new PositionComponent(2, 3)); parent.AddComponent(new ScaleComponent(4, 5)); var entity = new Entity(); entity.AddComponent(new PositionComponent(2, 3)); entity.AddComponent(new ScaleComponent(4, 5)); entity.AddComponent(new ParentComponent(parent)); var result = TransformationUtils.GetTransformation(entity); Assert.AreEqual( new Matrix { M11 = 16, M12 = 0, M13 = 0, M14 = 0, M21 = 0, M22 = 25, M23 = 0, M24 = 0, M31 = 0, M32 = 0, M33 = 1, M34 = 0, M41 = 10, M42 = 18, M43 = 0, M44 = 1 }, result.LocalTransformMatrix); }
public void EntityNull_NullResponse() { var result = TransformationUtils.GetTransformation(null); Assert.IsNull(result); }