コード例 #1
0
        private void CreateGemsScene()
        {
            // crates of the layer
            if (this.tiledMap.ObjectLayers.ContainsKey(GameConstants.LAYERBONUS))
            {
                var bonusLayer = this.tiledMap.ObjectLayers[GameConstants.LAYERBONUS];
                foreach (var gem in bonusLayer.Objects)
                {
                    var colliderEntity = TiledMapUtils.CollisionEntityFromObject(gem.Name, gem);
                    colliderEntity.Tag = GameConstants.TAGBONUS;
                    colliderEntity.AddComponent(new RigidBody2D()
                    {
                        PhysicBodyType = RigidBodyType2D.Static
                    });

                    var collider = colliderEntity.FindComponent <Collider2D>(false);
                    if (collider != null)
                    {
                        collider.IsSensor            = true;
                        collider.CollisionCategories = ColliderCategory2D.Cat5;
                        collider.CollidesWith        = ColliderCategory2D.All;
                    }

                    Sprite         sprite         = new Sprite(WaveContent.Assets.Gui.gem_png);
                    SpriteRenderer spriteRenderer = new SpriteRenderer(DefaultLayers.Alpha, AddressMode.PointWrap);

                    colliderEntity.AddComponent(sprite);
                    colliderEntity.AddComponent(spriteRenderer);
                    colliderEntity.AddComponent(new BonusComponent());

                    this.EntityManager.Add(colliderEntity);
                }
            }
        }
コード例 #2
0
        private void CreateCratesScene()
        {
            // crates of the layer
            if (this.tiledMap.ObjectLayers.ContainsKey(GameConstants.LAYERBOXPHYSICLAYER))
            {
                var physicLayer = this.tiledMap.ObjectLayers[GameConstants.LAYERBOXPHYSICLAYER];
                foreach (var physic in physicLayer.Objects)
                {
                    var colliderEntity = TiledMapUtils.CollisionEntityFromObject(physic.Name, physic);
                    colliderEntity.Tag = GameConstants.TAGCOLLIDER;
                    colliderEntity.AddComponent(new RigidBody2D());

                    var collider = colliderEntity.FindComponent <Collider2D>(false);
                    if (collider != null)
                    {
                        collider.CollisionCategories = ColliderCategory2D.Cat4;
                        collider.CollidesWith        = ColliderCategory2D.All;
                        collider.Friction            = 1.0f;
                        collider.Restitution         = 0.4f;
                    }

                    Sprite         sprite         = new Sprite(WaveContent.Assets.Other.crate_png);
                    SpriteRenderer spriteRenderer = new SpriteRenderer(DefaultLayers.Alpha, AddressMode.PointWrap);

                    colliderEntity.AddComponent(sprite);
                    colliderEntity.AddComponent(spriteRenderer);

                    this.EntityManager.Add(colliderEntity);
                }
            }
        }
コード例 #3
0
        /// <summary>
        /// Add physics crates
        /// </summary>
        private void AddCrates()
        {
            var cratesLayer = this.tiledMap.ObjectLayers["Crates"];

            var sceneTiles      = this.tiledMap.Tilesets.Where(t => t.Name == "sceneTiles").First();
            var createRectangle = TiledMapUtils.GetRectangleTileByID(sceneTiles, CrateTileID);

            int i = 0;

            foreach (var obj in cratesLayer.Objects)
            {
                Entity crateEntity = new Entity("crate_" + (i++))
                {
                    Tag = "crate"
                }
                .AddComponent(new Transform2D()
                {
                    LocalPosition = new Vector2(obj.X, obj.Y), Rotation = (float)obj.Rotation, DrawOrder = -9
                })
                .AddComponent(new Sprite(WaveContent.Assets.tilesets.sceneTiles_png)
                {
                    SourceRectangle = createRectangle
                })
                .AddComponent(new SpriteRenderer(DefaultLayers.Alpha, AddressMode.PointWrap))
                .AddComponent(new RectangleCollider2D()
                {
                    Density = 0.3f,
                })
                .AddComponent(new RigidBody2D());

                this.EntityManager.Add(crateEntity);
            }
        }
コード例 #4
0
        private void AddEnd()
        {
            var endLayer  = this.tiledMap.ObjectLayers["End"];
            var endObj    = endLayer.Objects[0];
            var endEntity = TiledMapUtils.CollisionEntityFromObject("End", endObj);

            this.EntityManager.Add(endEntity);
        }
コード例 #5
0
        /// <summary>
        /// Add traps
        /// </summary>
        private void AddTraps()
        {
            var collisionLayer = this.tiledMap.ObjectLayers["Traps"];

            int i = 0;

            foreach (var obj in collisionLayer.Objects)
            {
                var colliderEntity = TiledMapUtils.CollisionEntityFromObject("trap_" + (i++), obj);
                colliderEntity.Tag = "trap";

                this.EntityManager.Add(colliderEntity);
            }
        }
コード例 #6
0
        /// <summary>
        /// Add Collision entities from TMX object layer
        /// </summary>
        private void AddSceneColliders()
        {
            var collisionLayer = this.tiledMap.ObjectLayers["Collisions"];

            int i = 0;

            foreach (var obj in collisionLayer.Objects)
            {
                var colliderEntity = TiledMapUtils.CollisionEntityFromObject("collider_" + (i++), obj);
                colliderEntity.Tag = "collider";

                colliderEntity.AddComponent(new RigidBody2D()
                {
                    PhysicBodyType = WaveEngine.Common.Physics2D.RigidBodyType2D.Static
                });

                this.EntityManager.Add(colliderEntity);
            }
        }
コード例 #7
0
        private Entity CreateMouseOverEntity(Color color, int tileId)
        {
            var sceneTileSet  = this.tiledMap.Tilesets.First(ts => ts.Name == "Default");
            var tileRectangle = TiledMapUtils.GetRectangleTileByID(sceneTileSet, tileId);

            return(new Entity()
            {
                IsVisible = false
            }
                   .AddComponent(new Transform2D()
            {
                LocalDrawOrder = -1f,
                Opacity = 0.5f
            })
                   .AddComponent(new Sprite(sceneTileSet.Image.AssetPath)
            {
                SourceRectangle = tileRectangle,
                TintColor = color
            })
                   .AddComponent(new SpriteRenderer(DefaultLayers.Alpha, AddressMode.PointWrap)));
        }
コード例 #8
0
        private void CreatePhysicScene()
        {
            // invisible slingshot anchor entity
            this.SlingshotAnchorEntity = new Entity()
                                         .AddComponent(new Transform2D()
            {
                Position = this.GetAnchorPosition(GameConstants.ANCHORSLINGSHOT),
            })
                                         .AddComponent(new RigidBody2D()
            {
                PhysicBodyType = RigidBodyType2D.Static
            });
            this.EntityManager.Add(this.SlingshotAnchorEntity);

            // invisible physic ground and walls
            var physicLayer = this.tiledMap.ObjectLayers[GameConstants.LAYERPHYSIC];

            foreach (var physic in physicLayer.Objects)
            {
                var colliderEntity = TiledMapUtils.CollisionEntityFromObject(physic.Name, physic);
                colliderEntity.Tag = GameConstants.TAGCOLLIDER;
                colliderEntity.AddComponent(new RigidBody2D()
                {
                    PhysicBodyType = RigidBodyType2D.Static
                });

                var collider = colliderEntity.FindComponent <Collider2D>(false);
                if (collider != null)
                {
                    collider.CollisionCategories = ColliderCategory2D.Cat3;
                    collider.CollidesWith        = ColliderCategory2D.All;
                    collider.Friction            = 1.0f;
                    collider.Restitution         = 0.2f;
                }

                this.EntityManager.Add(colliderEntity);
            }
        }