BabylonJS - tags

Mesh tags

by gwenaelhagenmuller

HTML

<script src="https://rawgithub.com/BabylonJS/Babylon.js/v1.9.0/babylon.1.9.0.js"></script>
<canvas id="renderCanvas"></canvas>

CSS

#renderCanvas {
    width: 100%;
    height: 100%;
    min-height: 100%;
}

JavaScript

BABYLON.Tools.IsEmpty = function (obj) {
  for(var i in obj) { 
      return false;
  }
  return true;
};

(function () {
    
    BABYLON.AndOrNotEvaluator = {};
    
    BABYLON.AndOrNotEvaluator.Eval = function (query, evaluateCallback) {
        if(!query.match(/\([^\(\)]*\)/g)) {
            query= BABYLON.AndOrNotEvaluator._HandleParenthesisContent(query, evaluateCallback);
        }
        else {
            query = query.replace(/\([^\(\)]*\)/g, function(r) { 
                // remove parenthesis
                r = r.slice(1, r.length - 1);
                return BABYLON.AndOrNotEvaluator._HandleParenthesisContent(r, evaluateCallback);
            });
        }
        
        if (query === "true") {
            return true;
        }
        
        if (query === "false") {
            return false;
        }
        
        return BABYLON.AndOrNotEvaluator.Eval(query, evaluateCallback);
    };
    
    BABYLON.AndOrNotEvaluator._HandleParenthesisContent = function (parenthesisContent, evaluateCallback) {
        evaluateCallback = evaluateCallback || function(r) {
            /*switch(r)
            {
                case "true":
                    return true;
                case "false":
                case "0":
                case "":
                case "undefined":
                case "null":
                default:
                    return false;
            }*/
            return r === "true" ? true : false;
        };
        
        var result;
        var or = parenthesisContent.split("||");
        
        for (var i in or) {
            var ori = BABYLON.AndOrNotEvaluator._SimplifyNegation(or[i].trim());
            var and = ori.split("&&");
            
            if (and.length > 1) {
                for (var j = 0; j < and.length; ++j) {
                    var andj = BABYLON.AndOrNotEvaluator._SimplifyNegation(and[j].trim());
                    if (andj !== "true" && andj !== "false") {
                        if...