WaveEngine 2D components

29
WaveEngine Team @waveengineteam http://waveengine.net WaveEngine Components

description

Review of the WaveEngine 2D components

Transcript of WaveEngine 2D components

Page 1: WaveEngine 2D components

WaveEngine Team@waveengineteam

http://waveengine.net

WaveEngine Components

Page 2: WaveEngine 2D components

Component Based Game Engine

Page 3: WaveEngine 2D components

Component types

Componentes

Drawables

Behaviors

Page 4: WaveEngine 2D components

2D Components

Components Behavior Drawable

• Transform2D• Sprite• SpriteAtlas• Material2D• ParticleSystem2D• Joint2D

• TouchGestures• SkeletalAnimation• Animation2D• AnimationUI• Collider2D• RigidBody2D

• SpriteRenderer• SpriteAtlasRenderer• QuadRenderer• AnimatedSpriteRenderer• ParticleSystemRenderer2d

Page 5: WaveEngine 2D components

Entity

To draw a sprite

Transform2D

Sprite

SpriteRenderer

Page 6: WaveEngine 2D components

To draw a sprite

Entity sprite = new Entity("mySprite") .AddComponent(new Transform2D()) .AddComponent(new Sprite("Content/texture.wpk")) .AddComponent(new SpriteRenderer(DefaultLayers.Opaque));EntityManager.Add(sprite);

Page 7: WaveEngine 2D components

Transfom2D

.AddComponent(new Transform2D()

{

Origin = Vector2.Center // [0,0] – [1,1]

X = 100, //0 Default

Y = 100, // 0 Default

XScale = 1.5f, // 1 Default

YScale = 1.5f, // 1 Default

Rotation = Math.PI, // 0 Default

Opacity = 0.6f, // [0-1] 0 Alpha, 1 Opaque (default)

DrawOrder = 0.3f, //[0-1] 0 Front, 1 Back Default:0.5f

})

Page 8: WaveEngine 2D components

Sprite

.AddComponent(new Sprite(“Content/texture.wpk”)

{

IsGlobalAsset = true, // Default: False

TintColor = Color.Red, //Default Color.White

SourceRectangle = new Rectangle(0, 0, 100, 100);

})

Page 9: WaveEngine 2D components

Opaque

AlphaAdditive

GUI

SpriteRenderer

.AddComponent(new SpriteRenderer(DefaultLayers.Opaque))

Debug

Page 10: WaveEngine 2D components

To draw a sprite from Atlas

Entity sprite = new Entity("mySprite") .AddComponent(new Transform2D()) .AddComponent(new SpriteAtlas("Content/atlas.wpk", “textureInAtlas”)) .AddComponent(new SpriteAtlasRenderer(DefaultLayers.Opaque));EntityManager.Add(sprite);

Page 11: WaveEngine 2D components

Simple property animation

var move = new SingleAnimation(0,100, TimeSpan.FromSeconds(2f), EasingFunctions.Back);

PropertyValue = 0 PropertyValue = 100

2 seconds

Page 12: WaveEngine 2D components

Simple entity animation

Entity sprite = new Entity("mySprite") .AddComponent(new Transform2D())

.AddComponent(new AnimationUI()) .AddComponent(new Sprite("Content/texture.wpk")) .AddComponent(new SpriteRenderer(DefaultLayers.Opaque));EntityManager.Add(sprite);

AnimationUI animation = sprite.FindComponent<AnimationUI>(); animation.BeginAnimation(Transform2D.XProperty, move);

Page 13: WaveEngine 2D components

Collision detection

Collider2D

• RectangleCollider• CircleCollider• PerPixelCollider

Page 14: WaveEngine 2D components

Collision detection

Entity sprite = new Entity("mySprite") .AddComponent(new Transform2D())

.AddComponent(new RectangleCollider()) .AddComponent(new Sprite("Content/texture.wpk")) .AddComponent(new SpriteRenderer(DefaultLayers.Opaque));EntityManager.Add(sprite);

Collider2D collider = sprite.FindComponent<RectangleCollider>(); collider.Intersects(otherCollider);

Page 15: WaveEngine 2D components

To draw an animated character(SpriteSheet)

Page 16: WaveEngine 2D components

Texture Packer (SpriteSheet)

http://www.codeandweb.com/texturepacker

Page 17: WaveEngine 2D components

To draw an animated character(SpriteSheet)

Entity player= new Entity(“myPlayer")

.AddComponent(new Transform2D())

.AddComponent(new Sprite("Content/spriteSheet.wpk"))

.AddComponent(Animation2D.Create<TexturePackerGenericXml>(“Content/spriteSheet.xml")

.Add("idle", new SpriteSheetAnimationSequence() { First = 1, Length = 8}))

.Add("run", new SpriteSheetAnimationSequence() { First = 9, Length = 8}))

.AddComponent(new AnimatedSpriteRenderer(DefaultLayers.Opaque));

EntityManager.Add(player);

Page 18: WaveEngine 2D components

To draw an animated character (Skeleton)

Page 19: WaveEngine 2D components

To draw an animated character (Skeleton)

http://esotericsoftware.com/

Page 20: WaveEngine 2D components

To draw an animated character (Skeleton)

Entity player = new Entity(“myPlayer") .AddComponent(new Transform2D()) .AddComponent(new SkeletalData("Content/spriteSheet.atlas")) .AddComponent(new SkeletalAnimation("Content/spriteSheet.json")) .AddComponent(new SkeletalRenderer());EntityManager.Add(player);

Page 21: WaveEngine 2D components

2D Particle system

Page 22: WaveEngine 2D components

2D Particle system

Entity smokeParticles= new Entity(“myPlayer")

.AddComponent(new Transform2D())

.AddComponent(new ParticleSystem2D() { //Parameters })

.AddComponent(new Material2D(new BasicMaterial2D("Content/particleTexture.wpk")))

.AddComponent(new ParticleSystemRenderer2D(“smoke", DefaultLayers.Alpha));

EntityManager.Add(smokeParticles);

Page 23: WaveEngine 2D components

2D Particle system.AddComponent(new ParticleSystem2D()

{ //Parameters

NumParticles = 100,

EmitRate = 1500,

MinLife = TimeSpan.FromSeconds(1f), MaxLife = TimeSpan.FromSeconds(3f),

LocalVelocity = new Vector2(0f, 0f),

RandomVelocity = new Vector2(3f, 2.5f),

MinSize = 15, MaxSize = 40,

MinRotateSpeed = 0.03f, MaxRotateSpeed = -0.03f,

EndDeltaScale = 0f,

EmitterSize = new Vector2(30),

Gravity = new Vector2(0, 0.03f),

EmitterShape = ParticleSystem2D.Shape.FillCircle,

Emit = false,

})

Page 24: WaveEngine 2D components

2D physics components

• WaveEngine integrates the Box2D implementation in C# called FarseerPhysics.• Offers a component based interface• Not all Box2D feature are available in the current version, but the

most important ones are.

Page 25: WaveEngine 2D components

2D physics components

Entity sprite = new Entity("mySprite") .AddComponent(new Transform2D())

.AddComponent(new RectangleCollider()) .AddComponent(new RigidBody2D() { //Parameters}) .AddComponent(new Sprite("Content/texture.wpk")) .AddComponent(new SpriteRenderer(DefaultLayers.Opaque));EntityManager.Add(sprite);

Page 26: WaveEngine 2D components

2D physics components

.AddComponent(new RigidBody2D() { //Parameters Mass = 4f, // Default: 2f Friction = 1f, // Default: 0.5f Damping = 0.8f, // Default: 0.4f Restitution = 0.5f, // Default: 0.3f CollisionCategories = Physic2DCategory.Cat1, CollidesWith = Physic2DCategory.Cat2, IsKinematic = true, // Default: false })

Page 27: WaveEngine 2D components

2D physics components

Joint2D

• AngleJoint2D• DistanceJoint2D• FixedJoint• FixedMouseJoint2D• PrismaticJoint2D• RevoluteJoint2D

Page 28: WaveEngine 2D components

UI Components

UIBase

• Button• CheckBox• Grid• Image• Panel• ProgressBar• RadioButton• Slider• Stack

• TextBlock• TextBox• ToggleSwitch• Wrap

Page 29: WaveEngine 2D components

Thank you

WaveEngine Team@waveengineteam

http://waveengine.net