示例#1
0
        public static void Run(
            Ecs.Registry registry,
            ContentManager contentManager
            )
        {
            HashSet <Ecs.Entity> entities = registry.GetEntities(
                typeof(ItemComp)
                );

            foreach (Ecs.Entity entity in entities)
            {
                var itemComp = registry
                               .GetComponentUnsafe <ItemComp>(entity);

                VisibleComp sprite = CreateVisibleComp(
                    itemComp,
                    contentManager
                    );

                registry.AssignComponent(
                    entity,
                    sprite
                    );
            }
        }
示例#2
0
        public static void Run(
            Ecs.Registry registry,
            ContentManager contentManager
            )
        {
            HashSet <Ecs.Entity> entities = registry.GetEntities(
                typeof(Comps.Door)
                );

            foreach (Ecs.Entity entity in entities)
            {
                var obstacleComp = registry
                                   .GetComponentUnsafe <Comps.Door>(entity);

                CompsExt.Visibles.Sprite sprite = CreateVisibleComp(
                    obstacleComp,
                    contentManager
                    );

                registry.AssignComponent(
                    entity,
                    sprite
                    );
            }
        }
示例#3
0
        public static void Run(
            Ecs.Registry registry,
            ContentManager contentManager
            )
        {
            HashSet <Ecs.Entity> entities = registry.GetEntities(
                typeof(Comps.Character),
                typeof(Comps.Orientations.Cardinal)
                );

            foreach (Ecs.Entity entity in entities)
            {
                var characterComp = registry
                                    .GetComponentUnsafe <Comps.Character>(entity);

                var orientationComp = registry
                                      .GetComponentUnsafe <Comps.Orientations.Cardinal>(entity);

                CompsExt.Visibles.Sprite sprite = CreateVisibleComp(
                    characterComp,
                    orientationComp,
                    contentManager
                    );

                registry.AssignComponent(
                    entity,
                    sprite
                    );
            }
        }
示例#4
0
        public static void Run(
            Ecs.Registry ecsRegistry,
            SpriteBatch spriteBatch,
            Camera camera
            )
        {
            HashSet <Ecs.Entity> entities = ecsRegistry.GetEntities(
                typeof(SpriteComp),
                typeof(PositionComp)
                );

            foreach (Ecs.Entity entity in entities)
            {
                SpriteComp spriteComp = ecsRegistry
                                        .GetComponentUnsafe <SpriteComp>(entity);

                PositionComp positionComp = ecsRegistry
                                            .GetComponentUnsafe <PositionComp>(entity);

                if (camera.IsInRange(positionComp.data))
                {
                    Render(spriteComp, positionComp, spriteBatch, camera);
                }
            }
        }
示例#5
0
        // To optimize drawing performance, check that the sprite is in range
        // for the camera before calling this
        public static void Render(
            SpriteComp spriteComp,
            PositionComp positionComp,
            SpriteBatch spriteBatch,
            Camera camera
            )
        {
            var drawingPos =
                camera.GetDrawingPosition(positionComp.data) -
                spriteComp.destOffset;

            DrawingPosRectangle destPosRectangle = GetCenteredDrawingPosRectangle(
                drawingPos,
                camera.Scale(spriteComp.destRectangle)
                );

            // TODO: Figure out how to use origin with rotation

            spriteBatch.Draw(
                spriteComp.texture,
                destPosRectangle,
                spriteComp.texturePosRectangle,
                spriteComp.tint,
                spriteComp.rotation,
                new Vector2(0, 0),
                spriteComp.effects,
                1.0f
                );
        }
示例#6
0
        public static void Run(
            Ecs.Registry registry,
            ContentManager contentManager
            )
        {
            HashSet <Ecs.Entity> entities = registry.GetEntities(
                typeof(Comps.Projectile),
                typeof(Comps.Orientations.Cardinal)
                );

            foreach (Ecs.Entity entity in entities)
            {
                var projectileComp = registry
                                     .GetComponentUnsafe <Comps.Projectile>(entity);

                if (!IsVisible(projectileComp.kind))
                {
                    continue;
                }

                var orientationComp = registry
                                      .GetComponentUnsafe <Comps.Orientations.Cardinal>(entity);

                CompsExt.Visibles.Sprite sprite = CreateVisibleComp(
                    projectileComp,
                    orientationComp,
                    contentManager
                    );

                registry.AssignComponent(
                    entity,
                    sprite
                    );
            }
        }