From 75486be2839494c9b54833aff8f5eef3f9542151 Mon Sep 17 00:00:00 2001 From: Nivesh Rajbhandari Date: Mon, 6 Feb 2012 15:41:48 -0800 Subject: Support toggling between 2d and 3d canvas context. This requires us to create a new canvas with all the same values as the canvas being replaced and copying over all the shape data. Signed-off-by: Nivesh Rajbhandari --- js/controllers/elements/shapes-controller.js | 11 +++++++---- js/mediators/element-mediator.js | 7 +++++++ js/preloader/Preloader.js | 1 + 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/js/controllers/elements/shapes-controller.js b/js/controllers/elements/shapes-controller.js index 74c88084..ed45710d 100644 --- a/js/controllers/elements/shapes-controller.js +++ b/js/controllers/elements/shapes-controller.js @@ -5,7 +5,8 @@ No rights, expressed or implied, whatsoever to this software are provided by Mot */ var Montage = require("montage/core/core").Montage, - CanvasController = require("js/controllers/elements/canvas-controller").CanvasController; + CanvasController = require("js/controllers/elements/canvas-controller").CanvasController, + njModule = require("js/lib/NJUtils"); exports.ShapesController = Montage.create(CanvasController, { @@ -57,9 +58,11 @@ exports.ShapesController = Montage.create(CanvasController, { el.elementModel.shapeModel.GLGeomObj.buildBuffers(); break; case "useWebGl": -// this.toggleWebGlMode(el, value); -// el.elementModel.shapeModel.GLGeomObj.buildBuffers(); - el.elementModel.shapeModel.useWebGl = value; + var canvas = njModule.NJUtils.makeNJElement("canvas", "Canvas", "shape", el.className, true); + this.application.ninja.elementMediator.replaceElement(el, canvas); + el = canvas; + this.toggleWebGlMode(el, value); + el.elementModel.shapeModel.GLGeomObj.buildBuffers(); break; default: CanvasController.setProperty(el, p, value); diff --git a/js/mediators/element-mediator.js b/js/mediators/element-mediator.js index c44e1cb5..9aefbca6 100644 --- a/js/mediators/element-mediator.js +++ b/js/mediators/element-mediator.js @@ -112,6 +112,13 @@ exports.ElementMediator = Montage.create(NJComponent, { } }, + replaceElement: { + value: function(el, el2) { + el2.elementModel = el.elementModel; + this.application.ninja.currentDocument.documentRoot.replaceChild(el2, el); + } + }, + getNJProperty: { value: function(el, p) { if(el.elementModel) { diff --git a/js/preloader/Preloader.js b/js/preloader/Preloader.js index 93d71e8f..42460093 100755 --- a/js/preloader/Preloader.js +++ b/js/preloader/Preloader.js @@ -60,6 +60,7 @@ exports.Preloader = Montage.create(Component, { {"type":"js", "url":"js/helper-classes/RDGE/src/core/script/util/dbgpanel.js"}, /* */ + {"type":"js", "url":"js/helper-classes/3D/ParseUtils.js"}, {"type":"js", "url":"js/helper-classes/RDGE/GLLine.js"}, {"type":"js", "url":"js/helper-classes/RDGE/GLMaterial.js"}, {"type":"js", "url":"js/helper-classes/RDGE/GLLight.js"}, -- cgit v1.2.3