Upload
waveengineteam
View
2.382
Download
0
Tags:
Embed Size (px)
DESCRIPTION
Review of the WaveEngine 2D components
Citation preview
WaveEngine Team@waveengineteam
http://waveengine.net
WaveEngine Components
Component Based Game Engine
Component types
Componentes
Drawables
Behaviors
2D Components
Components Behavior Drawable
• Transform2D• Sprite• SpriteAtlas• Material2D• ParticleSystem2D• Joint2D
• TouchGestures• SkeletalAnimation• Animation2D• AnimationUI• Collider2D• RigidBody2D
• SpriteRenderer• SpriteAtlasRenderer• QuadRenderer• AnimatedSpriteRenderer• ParticleSystemRenderer2d
Entity
To draw a sprite
Transform2D
Sprite
SpriteRenderer
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);
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
})
Sprite
.AddComponent(new Sprite(“Content/texture.wpk”)
{
IsGlobalAsset = true, // Default: False
TintColor = Color.Red, //Default Color.White
SourceRectangle = new Rectangle(0, 0, 100, 100);
})
Opaque
AlphaAdditive
GUI
SpriteRenderer
.AddComponent(new SpriteRenderer(DefaultLayers.Opaque))
Debug
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);
Simple property animation
var move = new SingleAnimation(0,100, TimeSpan.FromSeconds(2f), EasingFunctions.Back);
PropertyValue = 0 PropertyValue = 100
2 seconds
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);
Collision detection
Collider2D
• RectangleCollider• CircleCollider• PerPixelCollider
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);
To draw an animated character(SpriteSheet)
Texture Packer (SpriteSheet)
http://www.codeandweb.com/texturepacker
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);
To draw an animated character (Skeleton)
To draw an animated character (Skeleton)
http://esotericsoftware.com/
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);
2D Particle system
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);
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,
})
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.
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);
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 })
2D physics components
Joint2D
• AngleJoint2D• DistanceJoint2D• FixedJoint• FixedMouseJoint2D• PrismaticJoint2D• RevoluteJoint2D
UI Components
UIBase
• Button• CheckBox• Grid• Image• Panel• ProgressBar• RadioButton• Slider• Stack
• TextBlock• TextBox• ToggleSwitch• Wrap
Thank you
WaveEngine Team@waveengineteam
http://waveengine.net