Skip to content

Run First Scene

Radomiej edited this page Jun 3, 2016 · 12 revisions
  1. Before start you must setup in all platforms run scene. Example for Desktop it look this:
import org.javity.engine.ext.JavityApplication;

import com.badlogic.gdx.backends.lwjgl.LwjglApplication;
import com.badlogic.gdx.backends.lwjgl.LwjglApplicationConfiguration;
import com.badlogic.gdx.backends.lwjgl.LwjglGraphics;

import pl.radomiej.test.Scene0Bulider;

public class DesktopLauncher {
	public static void main (String[] arg) {
		LwjglApplicationConfiguration config = new LwjglApplicationConfiguration();
		new LwjglApplication(new JavityApplication(new Scene0Bulider()), config);
	}
}
  1. Create SceneBulider in core project which allow you to create prefabs object and instantiate them on the scene:
import org.javity.components.Camera;
import org.javity.components.RectangleCollider;
import org.javity.components.Rigidbody;
import org.javity.components.SpineRenderer;
import org.javity.components.SpriteRenderer;
import org.javity.engine.CustomScene;
import org.javity.engine.GameObject;
import org.javity.engine.Prefabs;
import org.javity.engine.Scene;
import org.javity.engine.SceneBulider;
import org.javity.engine.SceneManager;

import com.badlogic.gdx.math.Vector2;

public class Scene0Bulider implements SceneBulider{
	@Override
	public String getSceneJson() {
		GameObject ground = Prefabs.createGameObject();
		Prefabs.addComponent(ground, new SpriteRenderer("badlogic.jpg"));
		Prefabs.addComponent(ground, new Rigidbody(true));
		Prefabs.addComponent(ground, new RectangleCollider(1000000, 10));
		ground.getTransform().setScale(new Vector2(1000, 0.1f));;
		
		GameObject logo = Prefabs.createGameObject();
		Prefabs.addComponent(logo, new SpriteRenderer("resources/atlas/images.atlas#babel"));
		Prefabs.addComponent(logo, new Rigidbody());
		Prefabs.addComponent(logo, new RectangleCollider());
		Prefabs.addComponent(logo, new Camera());
		
		GameObject logo3 = Prefabs.createGameObject();
		Prefabs.addComponent(logo3, new SpineRenderer("resources/animations/skeleton.json"));
		Prefabs.addComponent(logo3, new Rigidbody());
		Prefabs.addComponent(logo3, new RectangleCollider());
		Prefabs.addComponent(logo3, new Camera());
		
		GameObject logo2 = Prefabs.createGameObject();
		Prefabs.addComponent(logo2, new SpriteRenderer("badlogic.jpg"));
		Prefabs.addComponent(logo2, new Rigidbody());
		Prefabs.addComponent(logo2, new RectangleCollider());
		MyComponent myComponent = new MyComponent();
		myComponent.parent = logo;
		Prefabs.addComponent(logo2, myComponent);
		
		
//		GameObject logoJson = Prefabs.createGameObjectFromResource("resources/prefabs/logo.prefab");
		
		Scene scene = new CustomScene();
		scene.instantiateGameObject(logo, new Vector2(100, 400));
		scene.instantiateGameObject(logo2, new Vector2(250, 300));
		scene.instantiateGameObject(logo3, new Vector2(50, 500));
		scene.instantiateGameObject(ground, new Vector2(250, 0));
		
		String sceneJson = SceneManager.saveToJson(scene);
		System.out.println(sceneJson);
		return sceneJson;
	}
}

This above code emulated manual scene creation via Unity Editor. You can use Prefab class to create custom new GameObject prefabs and add to them new components and set custom values to variable in them:

GameObject logo = Prefabs.createGameObject();
Prefabs.addComponent(logo, new SpriteRenderer("resources/atlas/images.atlas#babel"));
Prefabs.addComponent(logo, new Rigidbody());
Prefabs.addComponent(logo, new RectangleCollider());
Prefabs.addComponent(logo, new Camera());

You must create scene object too, and put all GameObject which you need to one:

Scene scene = new CustomScene();
scene.instantiateGameObject(logo, new Vector2(100, 400));
scene.instantiateGameObject(logo2, new Vector2(250, 300));
scene.instantiateGameObject(logo3, new Vector2(50, 500));
scene.instantiateGameObject(ground, new Vector2(250, 0));

Next parse scene to json string and return it:

String sceneJson = SceneManager.saveToJson(scene);		
return sceneJson;

Go to Basic Concepts for more details.

Clone this wiki locally