mirror of
https://github.com/Heretek-AI/GDevelop.git
synced 2026-07-25 20:35:52 -04:00
12c5df67fa
The object is looking for a maintainer! https://github.com/4ian/GDevelop/pull/1138 Flagged as experimental and added warning about this
189 lines
6.2 KiB
JavaScript
189 lines
6.2 KiB
JavaScript
|
|
/**
|
|
GDevelop - Skeleton Object Extension
|
|
Copyright (c) 2017-2018 Franco Maciel (francomaciel10@gmail.com)
|
|
This project is released under the MIT License.
|
|
*/
|
|
|
|
gdjs.sk.CocosDataLoader = function()
|
|
{
|
|
this.textures = {};
|
|
};
|
|
gdjs.sk.DataLoader = gdjs.sk.CocosDataLoader;
|
|
|
|
gdjs.sk.CocosDataLoader.prototype.getData = function(dataName){
|
|
return cc.loader.getRes("res/"+dataName);
|
|
};
|
|
|
|
/**
|
|
* Load the textures from DragonBones data
|
|
* @param {gdjs.RuntimeScene} runtimeScene
|
|
* @param {Object} objectData
|
|
*/
|
|
gdjs.sk.CocosDataLoader.prototype.loadDragonBones = function(runtimeScene, objectData){
|
|
var jsonManager = runtimeScene.getGame().getJsonManager();
|
|
if (!jsonManager.isJsonLoaded(objectData.textureDataFilename)) {
|
|
console.error("Tried to load DragonBones textures from \"" + objectData.textureDataFilename + "\" but this resource is not loaded.");
|
|
return;
|
|
}
|
|
|
|
var textureData = jsonManager.getLoadedJson(objectData.textureDataFilename);
|
|
var texture = runtimeScene.getGame().getImageManager().getTexture(objectData.textureName);
|
|
if(!textureData || !texture._textureLoaded) {
|
|
console.error("Tried to load DragonBones textures from \"" + objectData.textureDataFilename + "\" resource but the texture or the texture data could not be loaded properly.");
|
|
return;
|
|
}
|
|
|
|
for(var i=0; i<textureData.SubTexture.length; i++){
|
|
var subTex = textureData.SubTexture[i];
|
|
var frame = new cc.rect(subTex.x, subTex.y, subTex.width, subTex.height);
|
|
if(subTex.hasOwnProperty("frameWidth")){
|
|
frame.width = subTex.frameWidth;
|
|
}
|
|
if (subTex.hasOwnProperty("frameHeight")){
|
|
frame.height = subTex.frameHeight;
|
|
}
|
|
|
|
this.textures[subTex.name] = {"texture": texture, "frame": frame};
|
|
}
|
|
};
|
|
|
|
|
|
|
|
gdjs.sk.ArmatureCocosRenderer = function()
|
|
{
|
|
this.layer = new cc.Layer();
|
|
this.slotsRenderers = new cc.Layer();
|
|
this.layer.addChild(this.slotsRenderers);
|
|
this.debugRenderers = new cc.Layer();
|
|
this.layer.addChild(this.debugRenderers);
|
|
this._convertYPosition = function(y){ return y; };
|
|
};
|
|
gdjs.sk.ArmatureRenderer = gdjs.sk.ArmatureCocosRenderer;
|
|
|
|
gdjs.sk.ArmatureCocosRenderer.prototype.putInScene = function(runtimeObject, runtimeScene){
|
|
var layerRenderer = runtimeScene.getLayer("").getRenderer();
|
|
layerRenderer.addRendererObject(this.layer, runtimeObject.getZOrder());
|
|
this._convertYPosition = layerRenderer.convertYPosition;
|
|
};
|
|
|
|
gdjs.sk.ArmatureCocosRenderer.prototype.getRendererObject = function(){
|
|
return this.layer;
|
|
};
|
|
|
|
gdjs.sk.ArmatureCocosRenderer.prototype.addRenderer = function(renderer){
|
|
this.slotsRenderers.addChild(renderer.getRendererObject());
|
|
renderer._convertYPosition = this._convertYPosition;
|
|
|
|
};
|
|
|
|
gdjs.sk.ArmatureCocosRenderer.prototype.sortRenderers = function(){
|
|
this.slotsRenderers.children.sort(function(a, b){ return a.z - b.z; });
|
|
};
|
|
|
|
gdjs.sk.ArmatureCocosRenderer.prototype.addDebugRenderer = function(renderer){
|
|
this.debugRenderers.addChild(renderer.getRendererObject());
|
|
renderer._convertYPosition = this._convertYPosition;
|
|
};
|
|
|
|
gdjs.sk.ArmatureCocosRenderer.prototype.extraInitialization = function(parentArmatureRenderer){
|
|
this._convertYPosition = parentArmatureRenderer._convertYPosition;
|
|
};
|
|
|
|
|
|
|
|
gdjs.sk.SlotCocosRenderer = function()
|
|
{
|
|
this.renderer = null;
|
|
this._convertYPosition = function(y){ return y; };
|
|
};
|
|
gdjs.sk.SlotRenderer = gdjs.sk.SlotCocosRenderer;
|
|
|
|
gdjs.sk.SlotCocosRenderer.prototype.getRendererObject = function(){
|
|
return this.renderer;
|
|
};
|
|
|
|
gdjs.sk.SlotCocosRenderer.prototype.loadAsSprite = function(texture){
|
|
if(!texture)
|
|
this.renderer = new cc.Sprite();
|
|
else
|
|
this.renderer = new cc.Sprite.createWithTexture(texture.texture, texture.frame);
|
|
this.renderer.z = 0;
|
|
};
|
|
|
|
gdjs.sk.SlotCocosRenderer.prototype.loadAsMesh = function(texture, vertices, uvs, triangles){
|
|
// Meshes not supported, load as sprites
|
|
this.loadAsSprite(texture);
|
|
};
|
|
|
|
gdjs.sk.SlotCocosRenderer.prototype.getWidth = function(){
|
|
return this.renderer.width;
|
|
};
|
|
|
|
gdjs.sk.SlotCocosRenderer.prototype.getHeight = function(){
|
|
return this.renderer.height;
|
|
};
|
|
|
|
gdjs.sk.SlotCocosRenderer.prototype.setTransform = function(transform){
|
|
this.renderer.setPositionX(transform.x);
|
|
this.renderer.setPositionY(this._convertYPosition(transform.y));
|
|
this.renderer.setScaleX(transform.sx);
|
|
this.renderer.setScaleY(transform.sy);
|
|
this.renderer.setRotationX(-transform.skx*180.0/Math.PI);
|
|
this.renderer.setRotationY( transform.sky*180.0/Math.PI);
|
|
};
|
|
|
|
gdjs.sk.SlotCocosRenderer.prototype.setZ = function(z){
|
|
this.renderer.z = z;
|
|
};
|
|
|
|
gdjs.sk.SlotCocosRenderer.prototype.setColor = function(color){
|
|
this.renderer.setColor(cc.color(color[0], color[1], color[2]));
|
|
};
|
|
|
|
gdjs.sk.SlotCocosRenderer.prototype.setAlpha = function(alpha){
|
|
this.renderer.setOpacity(255*alpha);
|
|
};
|
|
|
|
gdjs.sk.SlotCocosRenderer.prototype.setVisible = function(visible){
|
|
this.renderer.setVisible(visible);
|
|
};
|
|
|
|
// Meshes not supported
|
|
gdjs.sk.SlotCocosRenderer.prototype.setVertices = function(vertices, updateList){
|
|
};
|
|
|
|
|
|
gdjs.sk.DebugCocosRenderer = function()
|
|
{
|
|
this.renderer = new cc.DrawNode();
|
|
this._convertYPosition = function(y){ return y; };
|
|
};
|
|
gdjs.sk.DebugRenderer = gdjs.sk.DebugCocosRenderer;
|
|
|
|
gdjs.sk.DebugCocosRenderer.prototype.getRendererObject = function(){
|
|
return this.renderer;
|
|
};
|
|
|
|
gdjs.sk.DebugCocosRenderer.prototype.loadVertices = function(verts, color, fill){
|
|
var fillAlpha = fill ? 100 : 0;
|
|
var fillColor = new cc.Color(color[0], color[1], color[2], fillAlpha);
|
|
var lineColor = new cc.Color(color[0], color[1], color[2], 225);
|
|
for(var i=0; i<verts.length; i++){
|
|
var vertices = [];
|
|
for(var i=0; i<verts.length; i++){
|
|
vertices.push(cc.p(verts[i][0], -verts[i][1]));
|
|
}
|
|
this.renderer.drawPoly(vertices, fillColor, 3, lineColor);
|
|
}
|
|
};
|
|
|
|
gdjs.sk.DebugCocosRenderer.prototype.setTransform = function(transform){
|
|
this.renderer.setPositionX(transform.x);
|
|
this.renderer.setPositionY(this._convertYPosition(transform.y));
|
|
this.renderer.setScaleX(transform.sx);
|
|
this.renderer.setScaleY(transform.sy);
|
|
this.renderer.setRotationX(-transform.skx*180.0/Math.PI);
|
|
this.renderer.setRotationY( transform.sky*180.0/Math.PI);
|
|
};
|