# http://docs.daz3d.com/doku.php/public/dson_spec/object_definitions/daz/start
# Most of these paths are not documented and have been found by observation

# Many paths may be missing. It would be better to use the last attribute name only to search for,
# but with jsonpath-ng, this is too slow.
#
# Scanning my saved scenes with this list takes several minutes. Using $..last_attribute_only took 3+ days
# - Omni 2023-01-01

# TODO expand this list

# Format is X JSONPath
# X is 1 if value is URL encoded, 0 otherwise

0 $.[geometry_library, modifier_library][*].legacy_source_info.location
0 $.scene.modifiers[*].legacy_source_info.location
0 $.scene.nodes[*].geometries[*].legacy_source_info.location
0 $.scene.nodes[*].legacy_alternate_geometries[*].geometries[*].legacy_source_info.location

0 $.scene.nodes[*].extra[*].source_file
0 $.scene.nodes[*].geometries[*].extra[*].source_file
0 $.scene.nodes[*].geometries[*].legacy_source_info.location
0 $.scene.nodes[*].legacy_alternate_geometries[*].geometries[*].extra[*].source_file

0 $.material_library[*].extra[*].brick_settings.BrickSetup.value.Bricks.value.*.value.Parameters.value.*.value.*.value.MapImage
0 $.scene.materials[*].extra[*].brick_settings.BrickSetup.value.Bricks.value.*.value.Parameters.value.*.value.*.value.MapImage.value

0 $.scene.nodes[*].extra[*].settings.Callbacks.value.*

0 $.[material_library, node_library][*].extra[*].channels[?(@.channel.type =~ "^(image|file)$")].channel.current_value

0 $.scene.extra[*].settings.PostLoadAddons.value.*.value.AssetFile
0 $.scene.nodes[*].extra[*].settings.PostLoadScriptSettings.value.AssetFile
0 $.scene.nodes[*].extra[*].settings.PostLoadScriptSettings.value.PostLoadAddons.value.*.value.AssetFile

0 $.scene.extra[*].settings.PostLoadAddons.value.*.value.Presets.value.Mat.value.PresetFile
0 $.scene.nodes[*].extra[*].settings.PostLoadScriptSettings.value.Presets.value.Mat.value.PresetFile
0 $.scene.nodes[*].extra[*].settings.PostLoadScriptSettings.value.PostLoadAddons.value.*.value.Presets.value.Mat.value.PresetFile

0 $.scene.nodes[*].extra[*].settings.PostLoadScriptPath

0 $.scene.extra[*].script
0 $.scene.[materials, nodes][*].extra[*].script



1 $.geometry_library[*].default_uv_set

1 $.material_library[*].uv_set
1 $.scene.materials[*].uv_set

1 $.[geometry_library, image_library, material_library, modifier_library, node_library, uvset_library][*].source

1 $.material_library[*].*.image
1 $.scene.nodes[*].extra[*].layers[*].poses[*].image

1 $.scene.[animations, materials, modifiers, nodes, uvs][*].url
1 $.[modifier_library, node_library][*].formulas[*].operations[*].url
1 $.material_library[*].*.map[*].url
1 $.[image_library, material_library][*].map[*].url
1 $.scene.materials[*].*.map[*].url
1 $.material_library[*].extra[*].property_settings.*.map[*].url
1 $.scene.materials[*].extra[*].property_settings.*.map[*].url
1 $.scene.nodes[*].geometries[*].url
1 $.image_library[*].map[*].mask.url
1 $.scene.nodes[*].legacy_alternate_geometries[*].geometries[*].url

1 $.modifier_library[*].channel.legacy_link
1 $.scene.modifiers[*].channel.legacy_link
1 $.[material_library, node_library][*].extra[*].channels[*].channel.legacy_link

1 $.[material_library, modifier_library][*].channel.target_channel
1 $.scene.modifiers[*].channel.target_channel

1 $.modifier_library[*].extra.smoothing.collision_node

1 $.[modifier_library, node_library][*].formulas[*].output

1 $.modifier_library[*].skin.joints[*].node
1 $.modifier_library[*].skin.[geometry, node]

1 $.modifier_library[*].[skin, legacy_skin].geometry
1 $.scene.materials[*].geometry

1 $.modifier_library[*].morph.hd_url

1 $.[modifier_library, node_library][*].parent
1 $.scene.[modifiers, nodes, uvs][*].parent
1 $.scene.nodes[*].[conform_target, parent_in_place]

1 $.[modifier_library, node_library][*].presentation.[icon_large, icon_small]
1 $.scene.presentation.[icon_large, icon_small]

1 $.scene.extra[*].objects.*.materials.*.textures[*].fileName

1 $.scene.extra[*].objects.*.origShaders.*

1 $.scene.backdrop.image_file
1 $.scene.extra[*].render_options.render_elements[*].channels[*].channel.image_file
1 $.scene.extra[*].render_options.render_elements[*].children[*].channels[*].channel.image_file
1 $.scene.materials[*].*.channel.image_file
1 $.scene.[materials, modifiers, nodes][*].extra[*].channels[*].channel.image_file
1 $.node_library[*].extra[*].channels[*].channel.image_file

1 $.scene.extra[*].settings.*.*.Diffuse.diffuseTexture
1 $.scene.nodes[*].extra[*].settings.*.*.[Velvet, Diffuse].diffuseTexture

1 $.scene.nodes[*].extra[*].settings.*.*.Opacity.alphaMapTexture

1 $.scene.nodes[*].extra[*].settings.*.*.Transparency.transparencyTransTexture

1 $.scene.extra[*].settings.*.Modifiers.bumpMap
1 $.scene.nodes[*].extra[*].settings.*.*.Modifiers.bumpMap

1 $.scene.animations[?(@.url =~ ":.*\?(uv_set|.*/image_file)$")].keys[*][1]



# These need url encoding verified

#0 $.image_library[*].map[*].label - not really a path, ignore
#$..type - not a path, ignore
0 $.modifier_library[*].channel.value

1 $.material_library[*].extra[*].definition
1 $.modifier_library[*].extra.smoothing.collision_node
1 $.modifier_library[*].presentation.label

1 $.scene.nodes[*].extra[*].clone_info_path
1 $.scene.nodes[*].extra[*].file
1 $.scene.nodes[*].extra[*].settings.RealityEngine.iblMapFilename
1 $.scene.nodes[*].extra[*].settings.SaveSettings
1 $.scene.nodes[*].extra[*].settings.data
1 $.scene.nodes[*].extra[*].addons[*].folders[*]