示例#1
0
        public override void LookAtSelf(IEntityManager manager)
        {
            var           combinedBox = new BoundingBox();
            GraphicEntity entity      = null;

            foreach (var tag in Tags)
            {
                entity = manager.GetEntity(tag);
                if (entity.GetComponents <IRenderableComponent>().Any(x => x.CanRender))
                {
                    var geos = entity.GetComponents <IGeometryComponent>();
                    if (geos.Any())
                    {
                        var geo = geos.First();
                        combinedBox = combinedBox.Merge(geo.Box);
                    }
                }
            }

            var com = new MoveCameraToTargetComponent {
                Target = entity.Tag, TargetPosition = combinedBox.GetCenter()
            };

            entity.AddComponent(com);
        }
示例#2
0
        protected void MoveTo(IEntityManager manager, ElementTag targetEntity)
        {
            var com = new MoveCameraToTargetComponent {
                Target = targetEntity
            };

            manager.GetEntity(targetEntity).AddComponent(com);
        }
示例#3
0
        public override void LookAtSelf(IEntityManager manager)
        {
            var entity = manager.GetEntity(Tag);
            var l      = entity.GetComponent <LightComponent>();

            var com = new MoveCameraToTargetComponent {
                Target = Tag, TargetPosition = l.Position
            };

            manager.GetEntity(Tag).AddComponent(com);
        }
示例#4
0
            public void Execute(MoveCameraToTargetComponent component)
            {
                //detect that camera should be moved to new position

                //created camera movement component
                var movecom = new CameraMoveToPositionComponent {
                    TargetPosition = component.TargetPosition
                };

                //just put com to camera entity
                //camera moving is job for Camera system
                emanager
                .GetEntity(snapshot.CurrentCameraTag)
                .AddComponent(movecom);

                entity.RemoveComponent(component);
            }
示例#5
0
        public override void LookAtSelf(IEntityManager manager)
        {
            var entity            = manager.GetEntity(Tag);
            var geos              = entity.GetComponents <IGeometryComponent>();
            var hasTransformation = entity.GetComponents <TransformComponent>();

            if (geos.Any())
            {
                var geo   = geos.First();
                var local = geo.Box.GetCenter();

                if (hasTransformation.Any())
                {
                    local = Vector3.TransformNormal(local, hasTransformation.First().MatrixWorld);
                }

                var com = new MoveCameraToTargetComponent {
                    Target = Tag, TargetPosition = local
                };
                entity.AddComponent(com);
            }
        }