AdrianArroyoCalle/gajse

View on GitHub
lib/gajse-api.js

Summary

Maintainability
A
1 hr
Test Coverage
/* gajse-api */
var loop=require("./gajse-loop");
var THREE=require("three");
var storage=require("./gajse-slim-storage");
var cutscene=require("./gajse-cutscene");
var { Item }=require("./gajse-item");
var { MeshActions }=require("./gajse-mesh-actions");
var { Light }=require("./gajse-light");
var { ScriptedText, Question, Answer }=require("./gajse-text");
var { Character }=require("./gajse-character");
var Action = require("./gajse-action").Action;
var version=require("./gajse-version");

module.exports={
    apiVersion: "0.0.3",
    Item: Item,
    Light: Light,
    Character: Character,
    Action: Action,
    ScriptedText: ScriptedText,
    Question: Question,
    Answer: Answer,
    version: version,
    storage: storage,
    MeshActions: MeshActions,
    addObject: function(resource,position,text){
        var objectFile=storage.getURLResourceAs(resource,"application/json");
        new THREE.JSONLoader().load(objectFile,function(geo,mat){
            var mesh=new THREE.Mesh(geo,new THREE.MeshFaceMaterial(mat));
            mesh.updateMatrix();
            mesh.gajse={};
            mesh.gajse.textCallback=text;
            var event=new CustomEvent("GAJSE_PushMesh",{"detail": {"mesh": mesh, "position": position}});
            document.dispatchEvent(event);
        });
        return this.MeshActions({position: position});
    },
    addManualObject: function(mesh,position,text){
        mesh.gajse={};
        mesh.gajse.textCallback=text;
        var event=new CustomEvent("GAJSE_PushMesh",{"detail": {"mesh": mesh,"position": position}});
        document.dispatchEvent(event);

        return this.MeshActions({position: position});
    },
    getResource: function(resource){
        return storage.getResource(resource);
    },
    setBackgroundMusic: function(resource){
        var event=new CustomEvent("GAJSE_SetBackgroundMusic",{"detail" : {"resource" : resource}});
        document.dispatchEvent(event);
    },
    playSFX: function(){
        
    },
    changeScene: function(file){
        var event=new CustomEvent("GAJSE_LoadScene",{"detail" : {"file" : file}});
        document.dispatchEvent(event);
    },
    /**
     * Plays a Cutscene using the GAJSE Cutscene API. Resources can be WebM, VP9, Ogg Theora (OGV). MP4 and other might be supported depending on the browser. 
     * Subtitles use WebVTT format and they are supported on the browsers that implement it.
     * @param resource - The resource name of the video
     * @param callback - The callback when the video finish (or is skipped)
     * @param subtitles - An array containing GAJSE Subtitles Objects
     * */
    playCutscene: function(resource,callback,subtitles){
        cutscene.playCutscene(resource,callback,subtitles);
    }
}