Browse Source

Particle2D example

Josh Engebretson 11 years ago
parent
commit
5a6c154496

+ 0 - 0
Particles2D/Particles2D.atomic


+ 23 - 0
Particles2D/Resources/Components/ParticleSystem.js

@@ -0,0 +1,23 @@
+var game = Atomic.game;
+var node = self.node;
+
+var emitter;
+
+self.setEffect = function(name) {
+
+    emitter.effect = game.cache.getResource("ParticleEffect2D", "Particles/" + name + ".pex");
+
+}
+
+function start() {
+
+	emitter = node.createComponent("ParticleEmitter2D");
+	
+	self.setEffect("love");
+	
+}
+
+function update(timeStep) {	
+
+
+}

+ 67 - 0
Particles2D/Resources/Components/UI.js

@@ -0,0 +1,67 @@
+// Atomic Component
+
+var game = Atomic.game;
+var node = self.node;
+
+var ui = game.ui;
+var root = ui.getRoot();
+
+var font = game.cache.getResource("Font", "Fonts/Anonymous Pro.ttf");
+
+var uiStyle = game.cache.getResource("XMLFile", "UI/DefaultStyle.xml");
+root.defaultStyle = uiStyle;
+
+var container = new Atomic.UIElement();
+container.horizontalAlignment = Atomic.HA_RIGHT;
+container.verticalAlignment = Atomic.VA_CENTER;
+container.layoutMode = Atomic.LM_VERTICAL;
+
+root.addChild(container);
+
+var buttons = {};
+
+function addButton(name, text, callback) {
+
+    var button = new Atomic.Button();
+    
+    button.setName(name);
+    button.setMinWidth(120);
+    button.setMinHeight(24);
+
+    var buttonText = new Atomic.Text();
+    buttonText.text = text;
+    buttonText.setFont(font, 12);
+    buttonText.color = [0, 1, 0, 1];
+
+    buttonText.horizontalAlignment = Atomic.HA_CENTER;
+    buttonText.verticalAlignment = Atomic.VA_CENTER;
+    button.addChild(buttonText); 
+    container.addChild(button);
+    button.setStyleAuto();   
+    
+    buttons[name] = callback;       
+   
+}
+
+addButton("Explosion", "Explosion", function() { ParticleSystem.setEffect("explode"); }); 
+addButton("Hearts", "Hearts", function() { ParticleSystem.setEffect("love"); }); 
+addButton("Snow", "Snow", function() { ParticleSystem.setEffect("snow"); }); 
+
+function start() {
+
+}
+
+self.onMouseClick = function(element) {
+
+    var name = element.name;
+    
+    buttons[name]();
+    
+}
+
+
+function update(timeStep) {
+
+    self.listenToEvent(null, "UIMouseClick", self.onMouseClick );
+
+}

+ 1 - 0
Particles2D/Resources/Particles/explode.pex

@@ -0,0 +1 @@
+<particleEmitterConfig><texture name="spark.png"></texture><sourcePosition x="182.30" y="397.58"></sourcePosition><sourcePositionVariance x="0.86" y="30.00"></sourcePositionVariance><speed value="195.79"></speed><speedVariance value="59.21"></speedVariance><particleLifeSpan value="0.0000"></particleLifeSpan><particleLifespanVariance value="0.4281"></particleLifespanVariance><angle value="0.00"></angle><angleVariance value="360.00"></angleVariance><gravity x="0.00" y="0.00"></gravity><radialAcceleration value="10.00"></radialAcceleration><tangentialAcceleration value="0.00"></tangentialAcceleration><radialAccelVariance value="0.00"></radialAccelVariance><tangentialAccelVariance value="0.00"></tangentialAccelVariance><startColor red="1.00" green="1.00" blue="1.00" alpha="0.00"></startColor><startColorVariance red="0.00" green="0.00" blue="0.00" alpha="0.82"></startColorVariance><finishColor red="1.00" green="1.00" blue="1.00" alpha="1.00"></finishColor><finishColorVariance red="0.00" green="0.00" blue="0.00" alpha="0.74"></finishColorVariance><maxParticles value="100"></maxParticles><startParticleSize value="5.00"></startParticleSize><startParticleSizeVariance value="20.39"></startParticleSizeVariance><finishParticleSize value="20.00"></finishParticleSize><FinishParticleSizeVariance value="0.00"></FinishParticleSizeVariance><duration value="0.20"></duration><emitterType value="0"></emitterType><maxRadius value="100.00"></maxRadius><maxRadiusVariance value="0.00"></maxRadiusVariance><minRadius value="0.00"></minRadius><rotatePerSecond value="0.00"></rotatePerSecond><rotatePerSecondVariance value="0.00"></rotatePerSecondVariance><blendFuncSource value="770"></blendFuncSource><blendFuncDestination value="1"></blendFuncDestination><rotationStart value="0.00"></rotationStart><rotationStartVariance value="0.00"></rotationStartVariance><rotationEnd value="180.00"></rotationEnd><rotationEndVariance value="0.00"></rotationEndVariance></particleEmitterConfig>

BIN
Particles2D/Resources/Particles/heart.png


+ 39 - 0
Particles2D/Resources/Particles/love.pex

@@ -0,0 +1,39 @@
+<?xml version="1.0" ?>
+<particleEmitterConfig>
+  <texture name="heart.png"/>
+  <sourcePosition x="300.00" y="300.00"/>
+  <sourcePositionVariance x="20.00" y="0.00"/>
+  <speed value="60.00"/>
+  <speedVariance value="0.00"/>
+  <particleLifeSpan value="2.0000"/>
+  <particleLifespanVariance value="1.000"/>
+  <angle value="90.00"/>
+  <angleVariance value="20.00"/>
+  <gravity x="0.00" y="0.00"/>
+  <radialAcceleration value="0.00"/>
+  <tangentialAcceleration value="0.00"/>
+  <radialAccelVariance value="0.00"/>
+  <tangentialAccelVariance value="0.00"/>
+  <startColor red="1.00" green="1.00" blue="1.00" alpha="1.00"/>
+  <startColorVariance red="0.00" green="0.00" blue="0.00" alpha="0.00"/>
+  <finishColor red="1.00" green="1.00" blue="1.00" alpha="0.00"/>
+  <finishColorVariance red="0.00" green="0.00" blue="0.00" alpha="0.00"/>
+  <maxParticles value="20"/>
+  <startParticleSize value="30.00"/>
+  <startParticleSizeVariance value="0"/>
+  <finishParticleSize value="10.00"/>
+  <FinishParticleSizeVariance value="5.00"/>
+  <duration value="-1.00"/>
+  <emitterType value="0"/>
+  <maxRadius value="100.00"/>
+  <maxRadiusVariance value="0.00"/>
+  <minRadius value="0.00"/>
+  <rotatePerSecond value="0.00"/>
+  <rotatePerSecondVariance value="0.00"/>
+  <blendFuncSource value="770"/>
+  <blendFuncDestination value="1"/>
+  <rotationStart value="0.00"/>
+  <rotationStartVariance value="0.00"/>
+  <rotationEnd value="0.00"/>
+  <rotationEndVariance value="40.00"/>
+</particleEmitterConfig>

+ 1 - 0
Particles2D/Resources/Particles/snow.pex

@@ -0,0 +1 @@
+<particleEmitterConfig><texture name="snow.png"></texture><sourcePosition x="0.00" y="0.0"></sourcePosition><sourcePositionVariance x="200.00" y="-64.00"></sourcePositionVariance><speed value="457.13"></speed><speedVariance value="0.00"></speedVariance><particleLifeSpan value="3.7500"></particleLifeSpan><particleLifespanVariance value="8.8816"></particleLifespanVariance><angle value="239.18"></angle><angleVariance value="27.12"></angleVariance><gravity x="7.00" y="-38.00"></gravity><radialAcceleration value="0.00"></radialAcceleration><tangentialAcceleration value="0.00"></tangentialAcceleration><radialAccelVariance value="0.00"></radialAccelVariance><tangentialAccelVariance value="0.00"></tangentialAccelVariance><startColor red="1.00" green="1.00" blue="1.00" alpha="1.00"></startColor><startColorVariance red="0.00" green="0.00" blue="0.00" alpha="0.00"></startColorVariance><finishColor red="1.00" green="1.00" blue="1.00" alpha="0.09"></finishColor><finishColorVariance red="0.00" green="0.00" blue="0.00" alpha="0.24"></finishColorVariance><maxParticles value="200"></maxParticles><startParticleSize value="24.00"></startParticleSize><startParticleSizeVariance value="16.42"></startParticleSizeVariance><finishParticleSize value="39.89"></finishParticleSize><FinishParticleSizeVariance value="0.00"></FinishParticleSizeVariance><duration value="-1.00"></duration><emitterType value="0"></emitterType><maxRadius value="100.00"></maxRadius><maxRadiusVariance value="0.00"></maxRadiusVariance><minRadius value="0.00"></minRadius><rotatePerSecond value="0.00"></rotatePerSecond><rotatePerSecondVariance value="0.00"></rotatePerSecondVariance><blendFuncSource value="770"></blendFuncSource><blendFuncDestination value="1"></blendFuncDestination><rotationStart value="0.00"></rotationStart><rotationStartVariance value="5.18"></rotationStartVariance><rotationEnd value="0.00"></rotationEnd><rotationEndVariance value="180.00"></rotationEndVariance></particleEmitterConfig>

BIN
Particles2D/Resources/Particles/snow.png


BIN
Particles2D/Resources/Particles/spark.png


+ 28 - 0
Particles2D/Resources/Scripts/main.js

@@ -0,0 +1,28 @@
+
+// This script is the main entry point of the game
+require("AtomicGame");
+
+Atomic.game.init(start, update);
+
+
+// called at the start of play
+function start() {
+
+	var game = Atomic.game;
+
+	// create a 2D scene
+	game.createScene2D();
+
+    var ui = game.scene.createChild("UI");
+    ui.createJSComponent("UI");
+    
+    var node = game.scene.createChild("ParticleSystem");
+    ParticleSystem = node.createJSComponent("ParticleSystem");
+
+}
+
+// called per frame
+function update(timeStep) {
+
+
+}