addResourceAndKeyByPath = function (path, resource, key) {
  if (path && resource && key) {
    // path to resources map
    if (!_.isArray(resourcesByPath[path])) {
      resourcesByPath[path] = [];
    }
    resourcesByPath[path].push(resource);

    // path to keys map
    if (!_.isArray(resourceKeysByPath[path])) {
      resourceKeysByPath[path] = [];
    }
    resourceKeysByPath[path].push(key);
  }
}
resource.js - map of resource usage data to resources.
@example
// example texture
texture_alias: {name: "texture_alias", img: "path"},

// example 16-bit texture
texture_alias: {name: "texture_alias", img: "path", is16Bit: true},

// example texture that does not need multiple resolutions
texture_alias: {name: "texture_alias", img: "path", noScale: true},

// example cubemap texture
texture_alias: {name: "texture_alias",
  imgPosX: "path",
  imgNegX: "path",
  imgPosY: "path",
  imgNegY: "path",
  imgPosZ: "path",
  imgNegZ: "path"
},

// example texture in a spritesheet
texture_alias: {name: "texture_alias", frame: "texture_file_name", img: "path", plist: "path"},

// example animation
animation_alias: {name: "animation_alias", framePrefix: "animation_frame_name_", frameDelay: 0.08, img: "path", plist: "path"},

// example particles
particles_alias: {name: "particles_alias", img: "path", plist: "path"},

// example audio file
sfx_alias: {name: "sfx_alias", audio: "path"},

// example bitmap font
font_alias: {name: "font_alias", img: "path", font: "path"},

// example ttf font
font_alias: {name: "font_alias", font: "path"},