code: function(self, prefix, prop, setter) {
      var publicProp = prefix + prop;
      var privateProp = "_" + publicProp;
  
      var motionEvent = { key: "", oldValue: 0 };
      // getters & setters for public property
      if (setter) {
          Crafty.defineField(
              self,
              publicProp,
              function() {
                  return this[privateProp];
              },
              function(newValue) {
                  var oldValue = this[privateProp];
                  if (newValue !== oldValue) {
                      this[privateProp] = newValue;
  
                      motionEvent.key = publicProp;
                      motionEvent.oldValue = oldValue;
                      this.trigger("MotionChange", motionEvent);
                  }
              }
          );
      } else {
          Crafty.defineField(
              self,
              publicProp,
              function() {
                  return this[privateProp];
              },
              function(newValue) {}
          );
      }
  
      // hide private property
      Object.defineProperty(self, privateProp, {
          value: 0,
          writable: true,
          enumerable: false,
          configurable: false
      });
  }
docs: This is used to define getters and setters for Motion properties For instance __motionProp(entity, "a", "x", true) will define a getter for `ax` which accesses an underlying private property `_ax` If the `setter` property is false, setting a value will be a null-op