SlideShare a Scribd company logo
1 of 29
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
Alpha
Additive
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

More Related Content

What's hot

Vielseitiges In-Memory Computing mit Apache Ignite und Kubernetes
Vielseitiges In-Memory Computing mit Apache Ignite und KubernetesVielseitiges In-Memory Computing mit Apache Ignite und Kubernetes
Vielseitiges In-Memory Computing mit Apache Ignite und KubernetesQAware GmbH
 
Appengine ja-night-sapporo#1 bt
Appengine ja-night-sapporo#1 btAppengine ja-night-sapporo#1 bt
Appengine ja-night-sapporo#1 btShinichi Ogawa
 
The Ring programming language version 1.4.1 book - Part 16 of 31
The Ring programming language version 1.4.1 book - Part 16 of 31The Ring programming language version 1.4.1 book - Part 16 of 31
The Ring programming language version 1.4.1 book - Part 16 of 31Mahmoud Samir Fayed
 
Getting Started with Datatsax .Net Driver
Getting Started with Datatsax .Net DriverGetting Started with Datatsax .Net Driver
Getting Started with Datatsax .Net DriverDataStax Academy
 
JCConf 2015 - 輕鬆學google的雲端開發 - Google App Engine入門(上)
JCConf 2015  - 輕鬆學google的雲端開發 - Google App Engine入門(上)JCConf 2015  - 輕鬆學google的雲端開發 - Google App Engine入門(上)
JCConf 2015 - 輕鬆學google的雲端開發 - Google App Engine入門(上)Simon Su
 
[Hatsune Miku] Shoot Frieza with Amazon Kinesis ! [EN]
[Hatsune Miku] Shoot Frieza with Amazon Kinesis ! [EN][Hatsune Miku] Shoot Frieza with Amazon Kinesis ! [EN]
[Hatsune Miku] Shoot Frieza with Amazon Kinesis ! [EN]崇之 清水
 
The Ring programming language version 1.5.2 book - Part 28 of 181
The Ring programming language version 1.5.2 book - Part 28 of 181The Ring programming language version 1.5.2 book - Part 28 of 181
The Ring programming language version 1.5.2 book - Part 28 of 181Mahmoud Samir Fayed
 
Fun Teaching MongoDB New Tricks
Fun Teaching MongoDB New TricksFun Teaching MongoDB New Tricks
Fun Teaching MongoDB New TricksMongoDB
 
The Ring programming language version 1.7 book - Part 32 of 196
The Ring programming language version 1.7 book - Part 32 of 196The Ring programming language version 1.7 book - Part 32 of 196
The Ring programming language version 1.7 book - Part 32 of 196Mahmoud Samir Fayed
 
Taller evento TestingUY 2017 - API Testing utilizando Chakram
Taller evento TestingUY 2017 - API Testing utilizando ChakramTaller evento TestingUY 2017 - API Testing utilizando Chakram
Taller evento TestingUY 2017 - API Testing utilizando ChakramTestingUy
 
The Ring programming language version 1.5.1 book - Part 27 of 180
The Ring programming language version 1.5.1 book - Part 27 of 180The Ring programming language version 1.5.1 book - Part 27 of 180
The Ring programming language version 1.5.1 book - Part 27 of 180Mahmoud Samir Fayed
 
Protocol Oriented JSON Parsing in Swift
Protocol Oriented JSON Parsing in SwiftProtocol Oriented JSON Parsing in Swift
Protocol Oriented JSON Parsing in SwiftJason Larsen
 
MySQL flexible schema and JSON for Internet of Things
MySQL flexible schema and JSON for Internet of ThingsMySQL flexible schema and JSON for Internet of Things
MySQL flexible schema and JSON for Internet of ThingsAlexander Rubin
 
The Ring programming language version 1.5.3 book - Part 29 of 184
The Ring programming language version 1.5.3 book - Part 29 of 184The Ring programming language version 1.5.3 book - Part 29 of 184
The Ring programming language version 1.5.3 book - Part 29 of 184Mahmoud Samir Fayed
 
Entity System Architecture with Unity - Unite Europe 2015
Entity System Architecture with Unity - Unite Europe 2015Entity System Architecture with Unity - Unite Europe 2015
Entity System Architecture with Unity - Unite Europe 2015Simon Schmid
 
Experienced Selenium Interview questions
Experienced Selenium Interview questionsExperienced Selenium Interview questions
Experienced Selenium Interview questionsarchana singh
 
TweenJS for Everything
TweenJS for EverythingTweenJS for Everything
TweenJS for Everythingyomotsu
 

What's hot (20)

Vielseitiges In-Memory Computing mit Apache Ignite und Kubernetes
Vielseitiges In-Memory Computing mit Apache Ignite und KubernetesVielseitiges In-Memory Computing mit Apache Ignite und Kubernetes
Vielseitiges In-Memory Computing mit Apache Ignite und Kubernetes
 
Appengine ja-night-sapporo#1 bt
Appengine ja-night-sapporo#1 btAppengine ja-night-sapporo#1 bt
Appengine ja-night-sapporo#1 bt
 
Functions
FunctionsFunctions
Functions
 
The Ring programming language version 1.4.1 book - Part 16 of 31
The Ring programming language version 1.4.1 book - Part 16 of 31The Ring programming language version 1.4.1 book - Part 16 of 31
The Ring programming language version 1.4.1 book - Part 16 of 31
 
Getting Started with Datatsax .Net Driver
Getting Started with Datatsax .Net DriverGetting Started with Datatsax .Net Driver
Getting Started with Datatsax .Net Driver
 
JCConf 2015 - 輕鬆學google的雲端開發 - Google App Engine入門(上)
JCConf 2015  - 輕鬆學google的雲端開發 - Google App Engine入門(上)JCConf 2015  - 輕鬆學google的雲端開發 - Google App Engine入門(上)
JCConf 2015 - 輕鬆學google的雲端開發 - Google App Engine入門(上)
 
[Hatsune Miku] Shoot Frieza with Amazon Kinesis ! [EN]
[Hatsune Miku] Shoot Frieza with Amazon Kinesis ! [EN][Hatsune Miku] Shoot Frieza with Amazon Kinesis ! [EN]
[Hatsune Miku] Shoot Frieza with Amazon Kinesis ! [EN]
 
The Ring programming language version 1.5.2 book - Part 28 of 181
The Ring programming language version 1.5.2 book - Part 28 of 181The Ring programming language version 1.5.2 book - Part 28 of 181
The Ring programming language version 1.5.2 book - Part 28 of 181
 
Fun Teaching MongoDB New Tricks
Fun Teaching MongoDB New TricksFun Teaching MongoDB New Tricks
Fun Teaching MongoDB New Tricks
 
The Ring programming language version 1.7 book - Part 32 of 196
The Ring programming language version 1.7 book - Part 32 of 196The Ring programming language version 1.7 book - Part 32 of 196
The Ring programming language version 1.7 book - Part 32 of 196
 
Game dev 101 part 3
Game dev 101 part 3Game dev 101 part 3
Game dev 101 part 3
 
Taller evento TestingUY 2017 - API Testing utilizando Chakram
Taller evento TestingUY 2017 - API Testing utilizando ChakramTaller evento TestingUY 2017 - API Testing utilizando Chakram
Taller evento TestingUY 2017 - API Testing utilizando Chakram
 
Game dev 101 part 2
Game dev 101   part 2Game dev 101   part 2
Game dev 101 part 2
 
The Ring programming language version 1.5.1 book - Part 27 of 180
The Ring programming language version 1.5.1 book - Part 27 of 180The Ring programming language version 1.5.1 book - Part 27 of 180
The Ring programming language version 1.5.1 book - Part 27 of 180
 
Protocol Oriented JSON Parsing in Swift
Protocol Oriented JSON Parsing in SwiftProtocol Oriented JSON Parsing in Swift
Protocol Oriented JSON Parsing in Swift
 
MySQL flexible schema and JSON for Internet of Things
MySQL flexible schema and JSON for Internet of ThingsMySQL flexible schema and JSON for Internet of Things
MySQL flexible schema and JSON for Internet of Things
 
The Ring programming language version 1.5.3 book - Part 29 of 184
The Ring programming language version 1.5.3 book - Part 29 of 184The Ring programming language version 1.5.3 book - Part 29 of 184
The Ring programming language version 1.5.3 book - Part 29 of 184
 
Entity System Architecture with Unity - Unite Europe 2015
Entity System Architecture with Unity - Unite Europe 2015Entity System Architecture with Unity - Unite Europe 2015
Entity System Architecture with Unity - Unite Europe 2015
 
Experienced Selenium Interview questions
Experienced Selenium Interview questionsExperienced Selenium Interview questions
Experienced Selenium Interview questions
 
TweenJS for Everything
TweenJS for EverythingTweenJS for Everything
TweenJS for Everything
 

Similar to WaveEngine 2D components

Converting Scene Data to DOTS – Unite Copenhagen 2019
Converting Scene Data to DOTS – Unite Copenhagen 2019Converting Scene Data to DOTS – Unite Copenhagen 2019
Converting Scene Data to DOTS – Unite Copenhagen 2019Unity Technologies
 
IntroToEngineDevelopment.pdf
IntroToEngineDevelopment.pdfIntroToEngineDevelopment.pdf
IntroToEngineDevelopment.pdfzakest1
 
a data driven game object system
a data driven game object systema data driven game object system
a data driven game object systemmaa77
 
We Love Performance! How Tic Toc Games Uses ECS in Mobile Puzzle Games
We Love Performance! How Tic Toc Games Uses ECS in Mobile Puzzle GamesWe Love Performance! How Tic Toc Games Uses ECS in Mobile Puzzle Games
We Love Performance! How Tic Toc Games Uses ECS in Mobile Puzzle GamesUnity Technologies
 
Secrets of JavaScript Libraries
Secrets of JavaScript LibrariesSecrets of JavaScript Libraries
Secrets of JavaScript Librariesjeresig
 
Integration of Image Processing Techniques into the Unity Game Engine
Integration of Image Processing Techniques into the Unity Game EngineIntegration of Image Processing Techniques into the Unity Game Engine
Integration of Image Processing Techniques into the Unity Game EngineMatthias Trapp
 
Tools for developing Android Games
 Tools for developing Android Games Tools for developing Android Games
Tools for developing Android GamesPlatty Soft
 
Magic of web components
Magic of web componentsMagic of web components
Magic of web componentsHYS Enterprise
 
Sword fighting with Dagger GDG-NYC Jan 2016
 Sword fighting with Dagger GDG-NYC Jan 2016 Sword fighting with Dagger GDG-NYC Jan 2016
Sword fighting with Dagger GDG-NYC Jan 2016Mike Nakhimovich
 
Unity Class 13 Presentation - .
Unity Class 13 Presentation -           .Unity Class 13 Presentation -           .
Unity Class 13 Presentation - .TaydeMCruz
 
How to Create Custom Shaders in Flutter?
How to Create Custom Shaders in Flutter?How to Create Custom Shaders in Flutter?
How to Create Custom Shaders in Flutter?Flutter Agency
 
OGRE v1.10 manual - The Core Objects
OGRE v1.10 manual - The Core ObjectsOGRE v1.10 manual - The Core Objects
OGRE v1.10 manual - The Core ObjectsRiver Wang
 
Modify the following source code so that when the mouse is clicked w.pdf
Modify the following source code so that when the mouse is clicked w.pdfModify the following source code so that when the mouse is clicked w.pdf
Modify the following source code so that when the mouse is clicked w.pdfarorastores
 
Angular 1.x vs. Angular 2.x
Angular 1.x vs. Angular 2.xAngular 1.x vs. Angular 2.x
Angular 1.x vs. Angular 2.xEyal Vardi
 

Similar to WaveEngine 2D components (20)

#JavaFX.forReal()
#JavaFX.forReal()#JavaFX.forReal()
#JavaFX.forReal()
 
Converting Scene Data to DOTS – Unite Copenhagen 2019
Converting Scene Data to DOTS – Unite Copenhagen 2019Converting Scene Data to DOTS – Unite Copenhagen 2019
Converting Scene Data to DOTS – Unite Copenhagen 2019
 
Unity3 d devfest-2014
Unity3 d devfest-2014Unity3 d devfest-2014
Unity3 d devfest-2014
 
IntroToEngineDevelopment.pdf
IntroToEngineDevelopment.pdfIntroToEngineDevelopment.pdf
IntroToEngineDevelopment.pdf
 
a data driven game object system
a data driven game object systema data driven game object system
a data driven game object system
 
We Love Performance! How Tic Toc Games Uses ECS in Mobile Puzzle Games
We Love Performance! How Tic Toc Games Uses ECS in Mobile Puzzle GamesWe Love Performance! How Tic Toc Games Uses ECS in Mobile Puzzle Games
We Love Performance! How Tic Toc Games Uses ECS in Mobile Puzzle Games
 
Secrets of JavaScript Libraries
Secrets of JavaScript LibrariesSecrets of JavaScript Libraries
Secrets of JavaScript Libraries
 
Shootting Game
Shootting GameShootting Game
Shootting Game
 
Integration of Image Processing Techniques into the Unity Game Engine
Integration of Image Processing Techniques into the Unity Game EngineIntegration of Image Processing Techniques into the Unity Game Engine
Integration of Image Processing Techniques into the Unity Game Engine
 
Tools for developing Android Games
 Tools for developing Android Games Tools for developing Android Games
Tools for developing Android Games
 
Magic of web components
Magic of web componentsMagic of web components
Magic of web components
 
Sword fighting with Dagger GDG-NYC Jan 2016
 Sword fighting with Dagger GDG-NYC Jan 2016 Sword fighting with Dagger GDG-NYC Jan 2016
Sword fighting with Dagger GDG-NYC Jan 2016
 
J Query Presentation of David
J Query Presentation of DavidJ Query Presentation of David
J Query Presentation of David
 
Unity Class 13 Presentation - .
Unity Class 13 Presentation -           .Unity Class 13 Presentation -           .
Unity Class 13 Presentation - .
 
How to Create Custom Shaders in Flutter?
How to Create Custom Shaders in Flutter?How to Create Custom Shaders in Flutter?
How to Create Custom Shaders in Flutter?
 
OGRE v1.10 manual - The Core Objects
OGRE v1.10 manual - The Core ObjectsOGRE v1.10 manual - The Core Objects
OGRE v1.10 manual - The Core Objects
 
Modify the following source code so that when the mouse is clicked w.pdf
Modify the following source code so that when the mouse is clicked w.pdfModify the following source code so that when the mouse is clicked w.pdf
Modify the following source code so that when the mouse is clicked w.pdf
 
Day3.pptx
Day3.pptxDay3.pptx
Day3.pptx
 
Introduction to Jquery
Introduction to JqueryIntroduction to Jquery
Introduction to Jquery
 
Angular 1.x vs. Angular 2.x
Angular 1.x vs. Angular 2.xAngular 1.x vs. Angular 2.x
Angular 1.x vs. Angular 2.x
 

Recently uploaded

Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
APIForce Zurich 5 April Automation LPDG
APIForce Zurich 5 April  Automation LPDGAPIForce Zurich 5 April  Automation LPDG
APIForce Zurich 5 April Automation LPDGMarianaLemus7
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 

Recently uploaded (20)

Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
APIForce Zurich 5 April Automation LPDG
APIForce Zurich 5 April  Automation LPDGAPIForce Zurich 5 April  Automation LPDG
APIForce Zurich 5 April Automation LPDG
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort ServiceHot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 

WaveEngine 2D components

  • 4. 2D Components Components Behavior Drawable • Transform2D • Sprite • SpriteAtlas • Material2D • ParticleSystem2D • Joint2D • TouchGestures • SkeletalAnimation • Animation2D • AnimationUI • Collider2D • RigidBody2D • SpriteRenderer • SpriteAtlasRenderer • QuadRenderer • AnimatedSpriteRenderer • ParticleSystemRenderer2d
  • 5. Entity To draw a sprite Transform2D Sprite SpriteRenderer
  • 6. 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);
  • 7. 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 })
  • 8. Sprite .AddComponent(new Sprite(“Content/texture.wpk”) { IsGlobalAsset = true, // Default: False TintColor = Color.Red, //Default Color.White SourceRectangle = new Rectangle(0, 0, 100, 100); })
  • 10. 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);
  • 11. Simple property animation var move = new SingleAnimation(0,100, TimeSpan.FromSeconds(2f), EasingFunctions.Back); PropertyValue = 0 PropertyValue = 100 2 seconds
  • 12. 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);
  • 13. Collision detection Collider2D • RectangleCollider • CircleCollider • PerPixelCollider
  • 14. 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);
  • 15. To draw an animated character(SpriteSheet)
  • 17. 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);
  • 18. To draw an animated character (Skeleton)
  • 19. To draw an animated character (Skeleton) http://esotericsoftware.com/
  • 20. 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);
  • 22. 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);
  • 23. 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, })
  • 24. 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.
  • 25. 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);
  • 26. 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 })
  • 27. 2D physics components Joint2D • AngleJoint2D • DistanceJoint2D • FixedJoint • FixedMouseJoint2D • PrismaticJoint2D • RevoluteJoint2D
  • 28. UI Components UIBase • Button • CheckBox • Grid • Image • Panel • ProgressBar • RadioButton • Slider • Stack • TextBlock • TextBox • ToggleSwitch • Wrap