RUIC 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (90) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +21 -0
  3. data/README.md +201 -0
  4. data/bin/ruic +52 -0
  5. data/gui/MetaData.xml +387 -0
  6. data/gui/TODO +2 -0
  7. data/gui/appattributesmodel.rb +51 -0
  8. data/gui/appelementsmodel.rb +126 -0
  9. data/gui/launch.rb +20 -0
  10. data/gui/makefile +14 -0
  11. data/gui/resources.qrc +37 -0
  12. data/gui/resources/images/Objects-Behavior-Normal.png +0 -0
  13. data/gui/resources/images/Objects-Camera-Normal.png +0 -0
  14. data/gui/resources/images/Objects-Component-Normal.png +0 -0
  15. data/gui/resources/images/Objects-Effect-Normal.png +0 -0
  16. data/gui/resources/images/Objects-Group-Normal.png +0 -0
  17. data/gui/resources/images/Objects-Image-Normal.png +0 -0
  18. data/gui/resources/images/Objects-Layer-Normal.png +0 -0
  19. data/gui/resources/images/Objects-Light-Normal.png +0 -0
  20. data/gui/resources/images/Objects-Material-Normal.png +0 -0
  21. data/gui/resources/images/Objects-Model-Normal.png +0 -0
  22. data/gui/resources/images/Objects-Music-Normal.png +0 -0
  23. data/gui/resources/images/Objects-Property-Normal.png +0 -0
  24. data/gui/resources/images/Objects-References-Normal.png +0 -0
  25. data/gui/resources/images/Objects-Scene-Normal.png +0 -0
  26. data/gui/resources/images/Objects-Sound-Normal.png +0 -0
  27. data/gui/resources/images/Objects-Text-Normal.png +0 -0
  28. data/gui/resources/images/Objects-Unknown-Normal.png +0 -0
  29. data/gui/resources/images/Objects-Video-Normal.png +0 -0
  30. data/gui/resources/images/SCXML.ico +0 -0
  31. data/gui/resources/images/TSCXML.ico +0 -0
  32. data/gui/resources/images/UIA.ico +0 -0
  33. data/gui/resources/images/clipboard.png +0 -0
  34. data/gui/resources/images/console_arrow.png +0 -0
  35. data/gui/resources/images/cross.png +0 -0
  36. data/gui/resources/images/currentline.png +0 -0
  37. data/gui/resources/images/disk-black.png +0 -0
  38. data/gui/resources/images/disks-black.png +0 -0
  39. data/gui/resources/images/document--plus.png +0 -0
  40. data/gui/resources/images/document-copy.png +0 -0
  41. data/gui/resources/images/executable-actions-delete-active.png +0 -0
  42. data/gui/resources/images/executable-actions-delete-idle.png +0 -0
  43. data/gui/resources/images/executable-actions-enter-badge.png +0 -0
  44. data/gui/resources/images/executable-actions-exit-badge.png +0 -0
  45. data/gui/resources/images/folder-horizontal--plus.png +0 -0
  46. data/gui/resources/images/folder-horizontal-open.png +0 -0
  47. data/gui/resources/images/gear.png +0 -0
  48. data/gui/resources/images/invalid_breakpoint.png +0 -0
  49. data/gui/resources/images/scissors-blue.png +0 -0
  50. data/gui/resources/images/slide-16-active.png +0 -0
  51. data/gui/resources/images/slide-16-master.png +0 -0
  52. data/gui/resources/images/slide-16-normal.png +0 -0
  53. data/gui/resources/images/slide-32-active.png +0 -0
  54. data/gui/resources/images/slide-32-master.png +0 -0
  55. data/gui/resources/images/slide-32-normal.png +0 -0
  56. data/gui/resources/images/studio_architect32.ico +0 -0
  57. data/gui/resources/images/studio_architect32.png +0 -0
  58. data/gui/resources/images/textfile_icon.png +0 -0
  59. data/gui/resources/style/checkbox.png +0 -0
  60. data/gui/resources/style/dark.qss +459 -0
  61. data/gui/resources/style/down_arrow.png +0 -0
  62. data/gui/resources/style/handle.png +0 -0
  63. data/gui/window.rb +90 -0
  64. data/gui/window.ui +753 -0
  65. data/lib/ruic.rb +59 -0
  66. data/lib/ruic/application.rb +129 -0
  67. data/lib/ruic/asset_classes.rb +448 -0
  68. data/lib/ruic/behaviors.rb +31 -0
  69. data/lib/ruic/interfaces.rb +36 -0
  70. data/lib/ruic/presentation.rb +354 -0
  71. data/lib/ruic/statemachine.rb +111 -0
  72. data/lib/ruic/version.rb +3 -0
  73. data/ruic.gemspec +23 -0
  74. data/test/MetaData.xml +387 -0
  75. data/test/customclasses.ruic +21 -0
  76. data/test/filtering.ruic +39 -0
  77. data/test/nonmaster.ruic +21 -0
  78. data/test/projects/CustomClasses/Brush Strokes.effect +38 -0
  79. data/test/projects/CustomClasses/CustomClasses.uia +6 -0
  80. data/test/projects/CustomClasses/CustomClasses.uip +34 -0
  81. data/test/projects/CustomClasses/copper.material +194 -0
  82. data/test/projects/CustomClasses/maps/UV-Checker.png +0 -0
  83. data/test/projects/CustomClasses/maps/effects/brushnoise.dds +0 -0
  84. data/test/projects/CustomClasses/maps/materials/spherical_checker.png +0 -0
  85. data/test/projects/ReferencedMaterials/ReferencedMaterials.uia +6 -0
  86. data/test/projects/ReferencedMaterials/ReferencedMaterials.uip +39 -0
  87. data/test/properties.ruic +81 -0
  88. data/test/referencematerials.ruic +53 -0
  89. data/test/usage.ruic +20 -0
  90. metadata +166 -0
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 9cedef554fe79e1c76d028914357e410a7199799
4
+ data.tar.gz: 7462e76fe72621bb0985000630edea4daed2148c
5
+ SHA512:
6
+ metadata.gz: 340ca92ab34bcccce9605db54071ff11ad20294e6f9421a5e260bcfd5215574ece125f277a9f8d896a120d1dbcf8002e7c7521ecd3aa17e7ff40205729f313a3
7
+ data.tar.gz: 3eb97d8bafb8b1291929b7e34c6417316a472d313b189985057c892642c468395067bdbfa77ce2850c78a8dffbd1596fc3fff66a7d9e6f6ab1b74d0c1012ca9e
data/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2014 Gavin Kistner
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,201 @@
1
+ # What is RUIC?
2
+ RUIC is a Ruby API for reading, analyzing, and manipulating application assets created by NVIDIA's [UI Composer][1]. Among other things, it allows you to:
3
+
4
+ * See if an application is missing any assets (e.g. images or meshes) and what parts of the application are looking for those.
5
+ * See if there are any files in the application folder that you can delete (e.g. images or materials that are no longer being used).
6
+ * Read and modify the attributes of elements on different slides.
7
+ * Batch change attributes (e.g. change all usage of one font or color to another).
8
+ * Procedurally generate many models with automated placement in your scene.
9
+
10
+ _Some of the features above are planned, but not yet implemented; see Known Limitations below._
11
+
12
+ ## Table of Contents
13
+ * [Installing RUIC](#installing-ruic)
14
+ * [Using the RUIC DSL](#using-the-ruic-dsl)
15
+ * [Creating and Accessing Applications](#creating-and-accessing-applications)
16
+ * [Working with Presentations](#working-with-presentations)
17
+ * [Finding Many Assets](#finding-many-assets)
18
+ * [Working with References](#working-with-references)
19
+ * [Writing Assertions](#writing-assertions)
20
+ * [Locating MetaData.xml](#locating-metadataxml)
21
+ * [Known Limitations (aka TODO)](#known-limitations-aka-todo)
22
+ * [History](#history)
23
+ * [License & Contact](#license--contact)
24
+
25
+
26
+
27
+ # Installing RUIC
28
+ RUIC can be installed via RubyGems (part of Ruby) via the command:
29
+
30
+ gem install ruic # May need `sudo gem install ruic` depending on your setup
31
+
32
+ Although RUIC is a pure-Ruby library, it relies on [Nokogiri][2] for all the XML processing and manipulation. Installing RUIC will also automatically install Nokogiri, which may require some compilation.
33
+
34
+
35
+
36
+ # Using the RUIC DSL
37
+
38
+ RUIC scripts are pure Ruby with a few convenience methods added. You run them via the `ruic` command-line script, e.g.
39
+
40
+ ruic myscript.ruic # or .rb extension, for syntax highlighting while editing
41
+
42
+
43
+ ## Creating and Accessing Applications
44
+ RUIC scripts must start with `uia` commands to load an application and all its assets.
45
+ After this you can access the application as `app`:
46
+
47
+ ```ruby
48
+ uia '../MyApp.uia' # Relative to the ruic script file, or absolute
49
+
50
+ show app.file #=> /var/projects/UIC/MyApp/main/MyApp.uia
51
+ show app.filename #=> MyApp.uia
52
+
53
+ show app.assets.count #=> 7
54
+ # You can ask for app.behaviors, app.presentations, app.statemachines, and app.renderplugins
55
+ # for arrays of specific asset types
56
+ ```
57
+
58
+ _The `show` command prints the result; it is simply a nicer alias for `puts`._
59
+
60
+ If you need to load multiple applications in the same script, subsequent `uia` commands will create
61
+ `app2`, `app3`, etc. for you to use.
62
+
63
+ ```ruby
64
+ uia '../MyApp.uia' # Available as 'app'
65
+ uia '../../v1/MyApp.uia' # Available as 'app2'
66
+ ```
67
+
68
+
69
+ ## Working with Presentations
70
+
71
+ ```ruby
72
+ uia '../MyApp.uia'
73
+
74
+ main = app.main_presentation # The presentation displayed as the main presentation (regardless of id)
75
+ sub = app['#nav'] # You can ask for an asset based on the id in the .uia...
76
+ sub = app['Navigation.uip'] # or based on the path to the file (relative to the .uia)
77
+
78
+
79
+ car = sub/"Scene.Vehicle.Group.Car" # Find elements in a presentation by presentation path…
80
+ car = app/"nav:Scene.Vehicle.Group.Car" # …or absolute application path
81
+
82
+ show car.name #=> Car
83
+ show car.type #=> Model # Scene, Layer, Camera, Light, Group, Model, Material,
84
+ # Image, Behavior, Effect, ReferencedMaterial, Text,
85
+ # RenderPlugin, Component, (custom materials)
86
+
87
+ show car.component? #=> false # Ask if an element is a component
88
+ assert car.component==sub.scene # Ask for the owning component; may be the scene
89
+ ```
90
+
91
+ ## Finding Many Assets
92
+
93
+ ```ruby
94
+ uia 'MyApp.uia'
95
+ main = app.main_presentation
96
+
97
+ every_asset = main.find # Returns an array of matching assets
98
+ master_assets = main.find master:true # Test for master/non-master
99
+ models = main.find type:'Model' # Test based on type
100
+ slide2_assets = main.find slide:2 # Test based on slide presence
101
+ rectangles = main.find attributes:{sourcepath:'#Rectangle'} # Test based on attribute values
102
+ master_models = main.find type:'Model', master:true # Combine any tests
103
+ slide2_rects = main.find type:'Model', slide:2, attributes:{sourcepath:'#Rectangle'}
104
+ gamecovers = main.find name:'Game Cover'
105
+ pistons = main.find name:/^Piston/ # Regexes allow easy batch finding
106
+ bottom_row = main.find attributes:{position:[nil,-200,nil]}
107
+ red_materials = main.find type:'Material', attributes:{diffuse:[1,0,0] }
108
+
109
+ # Restricting the search to a sub-tree
110
+ group = main/"Scene.Layer.Group"
111
+ group_models = group.find type:'Model' # Original asset is never in the results
112
+ group_models = main.find under:group, type:'Model' # Alternative sub-tree limit using `under`
113
+
114
+ # Iterate the results as they are found
115
+ main.find type:'Model', name:/^Piston/ do |model, index|
116
+ show "Model #{index} is named #{model.name}"
117
+ end
118
+ ```
119
+
120
+ Notes:
121
+ * `nil` inside an array is a "wildcard" value, allowing you to test only specific values
122
+ * Numbers (both in vectors/colors/rotations and float/long values) must only be within `0.001` to match.
123
+ * _For example, `attributes:{diffuse:[1,0,0]}` will match a color with `diffuse=".9997 0.0003 0"`_
124
+ * Results of `find` are always in scene-graph order.
125
+
126
+
127
+ ## Working with References
128
+
129
+ ```ruby
130
+ uia 'MyApp.uia'
131
+ mat1 = app/"main:Scene.Layer.Sphere.Material" # A normal UIC Material
132
+ mat2 = app/"main:Scene.Layer.Cube.Material" # A normal UIC Material
133
+ p mat2.type #=> "Material"
134
+ ref = mat2.replace_with_referenced_material # A very specific method :)
135
+ p ref.properties['referencedmaterial'].type #=> "ObjectRef"
136
+ p ref['referencedmaterial',0].object #=> nil
137
+ p ref['referencedmaterial',0].type #=> :absolute
138
+ ref['referencedmaterial',0].object = mat1 #=> Sets an absolute reference
139
+ ref['referencedmaterial',0].type = :path #=> Use a relative path instead
140
+
141
+ # Alternatively, you can omit the .object when setting the reference:
142
+ # ref['referencedmaterial',0] = mat1
143
+
144
+ mat3 = ref['referencedmaterial',1].object #=> Get the asset pointed to
145
+ assert mat1 == mat3 #=> They are the same! It worked!
146
+
147
+ app.save_all! #=> Write presentations in place
148
+ ```
149
+
150
+ ## Writing Assertions
151
+
152
+
153
+ ## Locating MetaData.xml
154
+ RUIC needs access to a UIC `MetaData.xml` file to understand the properties in the various XML files.
155
+ By default RUIC will look in the location specified by `RUIC::DEFAULTMETADATA`, e.g.
156
+ `C:/Program Files (x86)/NVIDIA Corporation/UI Composer 8.0/res/DataModelMetadata/en-us/MetaData.xml`
157
+
158
+ If this file is in another location, you can tell the script where to find it either:
159
+
160
+ * on the command line: `ruic -m path/to/MetaData.xml myscript.ruic`
161
+ * in your ruic script: `metadata 'path/to/MetaData.xml' # before any 'app' commands`
162
+
163
+
164
+
165
+ # Known Limitations (aka TODO)
166
+ _In decreasing priority…_
167
+
168
+ - Report on image assets, their sizes
169
+ - Report used assets (and where they are used)
170
+ - Report unused assets (in a format suitable for automated destruction)
171
+ - Report missing assets (and who was looking for them)
172
+ - Gobs more unit tests
173
+ - Parse .material files
174
+ - Navigate through scene graph hierarchy (parent, children)
175
+ - Parse .lua files (in case one references an image)
176
+ - Parse render plugins
177
+ - Read/edit animation tracks
178
+ - Find all colors, and where they are used
179
+ - Path to element
180
+ - `element/'relative.path.resolving'`
181
+ - Visual actions for State Machines
182
+ - Create new presentation assets (e.g. add a new sphere)
183
+ - Modify the scene graph of presentations
184
+ - Create new presentations/applications from code
185
+ - Report on image asset file formats (e.g. find PNGs, find DXT1 vs DXT3 vs DXT Luminance…)
186
+
187
+
188
+ # History
189
+ * _In development, no releases yet._
190
+
191
+
192
+
193
+ # License & Contact
194
+ RUIC is copyright ©2014 by Gavin Kistner and is licensed under the [MIT License][3]. See the `LICENSE` file for more details.
195
+
196
+ For bugs or feature requests please open [issues on GitHub][4]. For other communication you can [email the author directly](mailto:!@phrogz.net?subject=RUIC).
197
+
198
+ [1]: http://uicomposer.nvidia.com
199
+ [2]: http://nokogiri.org
200
+ [3]: http://opensource.org/licenses/MIT
201
+ [4]: https://github.com/Phrogz/RUIC/issues
@@ -0,0 +1,52 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ begin
4
+ require 'ruic'
5
+ rescue LoadError
6
+ require 'rubygems'
7
+ require 'ruic'
8
+ end
9
+
10
+ USAGE = <<ENDUSAGE
11
+ Usage:
12
+ ruic [-h] [-v] [-m /path/to/MetaData.xml] myscript.ruic
13
+ ENDUSAGE
14
+
15
+ HELP = <<ENDHELP
16
+ -h, --help Show this help.
17
+ -v, --version Show the version number (#{RUIC::VERSION}).
18
+ -m, --metadata The path to use for MetaData.xml
19
+ Default: #{RUIC::DEFAULTMETADATA}
20
+ Will be overridden by any `metadata` call in your script.
21
+ ENDHELP
22
+
23
+ ARGS = {}
24
+ UNFLAGGED_ARGS = [ :script ]
25
+ next_arg = UNFLAGGED_ARGS.first
26
+ ARGV.each do |arg|
27
+ case arg
28
+ when '-h','--help' then ARGS[:help] = true
29
+ when '-v','--version' then ARGS[:version] = true
30
+ when '-m','--metadata' then next_arg = :meta
31
+ else
32
+ if next_arg
33
+ ARGS[next_arg] = arg
34
+ UNFLAGGED_ARGS.delete( next_arg )
35
+ end
36
+ next_arg = UNFLAGGED_ARGS.first
37
+ end
38
+ end
39
+
40
+ puts "RUIC v#{RUIC::VERSION}" if ARGS[:version]
41
+
42
+ if ARGS[:help] || !ARGS[:script]
43
+ puts USAGE unless ARGS[:version]
44
+ puts HELP if ARGS[:help]
45
+ exit ARGS[:help] ? 0 : 1
46
+ end
47
+
48
+ if ARGS[:meta]
49
+ RUIC::DEFAULTMETADATA.replace File.expand_path(ARGS[:meta])
50
+ end
51
+
52
+ RUIC(ARGS[:script])
@@ -0,0 +1,387 @@
1
+ <?xml version="1.0" encoding="UTF-8" ?>
2
+ <MetaData>
3
+ <Category name="Custom Events" description="Custom events exposed on the behavior." icon="Objects-Behavior-Normal.png" highlightIcon="Objects-Behavior-Highlight.png" />
4
+ <Category name="Default" description="Default events on all objects" icon="Objects-Folder-Highlight.png" highlightIcon="Objects-Folder-Highlight.png" />
5
+ <Category name="Gesture" description="Input from the touch screen or the mouse" icon="Objects-Folder-Highlight.png" highlightIcon="Objects-Folder-Highlight.png" />
6
+ <Category name="Slide" description="Events generated when a slide is changing." icon="Objects-Folder-Normal.png" highlightIcon="Objects-Folder-Highlight.png" />
7
+ <Category name="Asset" description="Handlers exposed on the asset." icon="Objects-Folder-Normal.png" highlightIcon="Objects-Folder-Highlight.png" />
8
+ <Category name="Custom Handlers" description="Custom Handlers exposed on the behavior." icon="Objects-Behavior-Normal.png" highlightIcon="Objects-Behavior-Highlight.png" />
9
+ <Category name="Time" description="Handlers exposed on the asset's time." icon="Objects-Folder-Normal.png" highlightIcon="Objects-Folder-Highlight.png" />
10
+ <Alias>
11
+ <Property name="name" formalName="Name" type="String" default="Alias" hidden="True" />
12
+ <Property name="referencednode" formalName="Reference" description="Original element (e.g. group, component, model) to clone" type="ObjectRef" />
13
+ </Alias>
14
+ <Asset>
15
+ <Property name="starttime" formalName="Start Time" type="Long" hidden="True" />
16
+ <Property name="endtime" formalName="End Time" type="Long" default="10000" hidden="True" />
17
+ <Property name="eyeball" formalName="Visible" type="Boolean" default="True" hidden="True" />
18
+ <Property name="shy" formalName="Shy" type="Boolean" hidden="True" />
19
+ <Property name="sourcepath" type="String" hidden="True" />
20
+ <Property name="importfile" type="String" hidden="True" />
21
+
22
+ <Handler name="Set Property" category="Asset" description="Set a property to a new value.">
23
+ <Argument name="Property Name" formalName="Property" description="Property to change" type="Slide" argumentType="Property" />
24
+ <Argument name="Property Value" formalName="New Value" description="New value for the property" type="None" argumentType="Dependent" />
25
+ </Handler>
26
+ <Handler name="Fire Event" category="Asset" description="Fire an event on the target.">
27
+ <Argument name="Event" description="The event to fire" type="None" argumentType="Event" />
28
+ </Handler>
29
+ </Asset>
30
+ <Behavior>
31
+ <Property name="name" formalName="Name" type="String" default="Behavior" hidden="True" />
32
+ </Behavior>
33
+ <Camera>
34
+ <Property name="name" formalName="Name" type="String" default="Camera" hidden="True" />
35
+ <Property name="opacity" formalName="Opacity" min="0" max="100" default="100" hidden="True" />
36
+ <Property name="orthographic" formalName="Orthographic" description="Remove all perspective from the camera?" type="Boolean" animatable="False" />
37
+ <Property name="position" formalName="Position" description="Location in local space" type="Vector" default="0 0 -600" />
38
+ <Property name="rotation" formalName="Rotation" description="Rotation around local axes" type="Rotation" />
39
+ <Property name="scale" formalName="Scale" description="Size adjustments along local axes" type="Vector" default="1 1 1" />
40
+ <Property name="pivot" formalName="Pivot" description="Offset of the contents away from the local center" type="Vector" />
41
+ <Property name="fov" formalName="Field of View" description="Viewing angle of the camera (how much it can see)" min="1" max="180" default="60">
42
+ <ShowIfEqual property="orthographic" value="False"/>
43
+ </Property>
44
+ <Property name="clipnear" formalName="Clipping Start" description="Near distance at which objects disappear" min="1" max="1000" default="10" />
45
+ <Property name="clipfar" formalName="Clipping End" description="Far distance at which objects disappear" default="5000" />
46
+ <Property name="scalemode" formalName="Scale Mode" description="Render more content as the layer expands (same size) or scale up the content (fit)" list="Same Size:Fit:Fit Horizontal:Fit Vertical" default="Fit" />
47
+ <Property name="scaleanchor" formalName="Scale Anchor" description="Corner of the content to pin as the layer size changes" list="Center:N:NE:E:SE:S:SW:W:NW" default="Center"/>
48
+ </Camera>
49
+ <Component>
50
+ <Property name="name" formalName="Name" type="String" default="Component" hidden="True" />
51
+ </Component>
52
+ <Effect>
53
+ <Property name="name" formalName="Name" type="String" default="Effect" hidden="True" />
54
+ </Effect>
55
+ <Group>
56
+ <Property name="name" formalName="Name" type="String" default="Group" hidden="True" />
57
+ <Property name="sourcepath" formalName="Import" description="Path to the source of this group" type="Import" />
58
+ </Group>
59
+ <Image>
60
+ <!--Images and materials don't have lifetimes, so we use a value that we know just won't cause any issues-->
61
+ <Property name="endtime" formalName="End Time" type="Long" default="2147483647" hidden="True" />
62
+ <Property name="name" formalName="Name" type="String" default="Image" hidden="True" />
63
+ <Property name="scaleu" formalName="U Repeat" description="Number of times the image is tiled on the U direction of the material" default="1" />
64
+ <Property name="scalev" formalName="V Repeat" description="Number of times the image is tiled on the V direction of the material" default="1" />
65
+ <Property name="mappingmode" formalName="Texture Mapping" description="How the image is applied to the material" list="UV Mapping:Environmental Mapping:Light Probe" default="UV Mapping" />
66
+ <Property name="tilingmodehorz" formalName="U Tiling" description="How the image is tiled in the U direction" list="Tiled:Mirrored:No Tiling" default="No Tiling" />
67
+ <Property name="tilingmodevert" formalName="V Tiling" description="How the image is tiled in the V direction" list="Tiled:Mirrored:No Tiling" default="No Tiling" />
68
+ <Property name="rotationuv" formalName="UV Rotation" description="Rotate the image's coordinates" />
69
+ <Property name="positionu" formalName="U Position" description="Offset of the image along the U direction of the material" />
70
+ <Property name="positionv" formalName="V Position" description="Offset of the image along the V direction of the material" />
71
+ <Property name="pivotu" formalName="U Pivot" description="Offset the image in the U direction without affecting rotation center" />
72
+ <Property name="pivotv" formalName="V Pivot" description="Offset the image in the V direction without affecting rotation center" />
73
+ <Property name="subpresentation" formalName="Sub-Presentation" description="Presentation (or plugin) to use instead of the image" type="Renderable" />
74
+ </Image>
75
+ <Layer>
76
+ <Property name="name" formalName="Name" type="String" default="Layer" hidden="True" />
77
+ <Property name="disabledepthtest" formalName="Disable Depth Test" description="Optimize render speed for layers with mostly transparent objects?" type="Boolean" animatable="False"/>
78
+ <Property name="progressiveaa" formalName="Progressive AA" description="Improves the visual quality when no items are moving" list="None:2x:4x:8x" default="None" />
79
+ <Property name="multisampleaa" formalName="Multisample AA" description="Improves geometry quality, e.g. silhouettes." list="None:2x:4x" default="None" />
80
+ <Property name="temporalaa" formalName="Temporal AA" description="Improve overall quality using camera jittering and frame blending?" type="Boolean" default="False"/>
81
+ <Property name="background" formalName="Layer Background" description="The color to use for the layer each frame" list="Transparent:SolidColor:Unspecified" default="Transparent" />
82
+ <Property name="backgroundcolor" formalName="Background Color" description="The background color for the layer" type="Color" animatable="False">
83
+ <ShowIfEqual property="background" value="SolidColor"/>
84
+ </Property>
85
+ <Property name="horzfields" formalName="Horizontal Fields" description="Properties to use to control the horizontal size and placement" list="Left/Width:Left/Right:Width/Right" default="Left/Width" />
86
+ <Property name="left" formalName="Left" description="Distance between presentation and layer left edges">
87
+ <ShowIfEqual property="horzfields" value="Left/Width"/>
88
+ <ShowIfEqual property="horzfields" value="Left/Right"/>
89
+ </Property>
90
+ <Property name="leftunits" formalName="Left Units" description="Left distance is percent of overall width or absolute pixels" list="percent:pixels" default="percent">
91
+ <ShowIfEqual property="horzfields" value="Left/Width"/>
92
+ <ShowIfEqual property="horzfields" value="Left/Right"/>
93
+ </Property>
94
+ <Property name="width" formalName="Width" description="Overall layer width" default="100">
95
+ <ShowIfEqual property="horzfields" value="Left/Width"/>
96
+ <ShowIfEqual property="horzfields" value="Width/Right"/>
97
+ </Property>
98
+ <Property name="widthunits" formalName="Width Units" description="Width is percent of overall width or absolute pixels" list="percent:pixels" default="percent">
99
+ <ShowIfEqual property="horzfields" value="Left/Width"/>
100
+ <ShowIfEqual property="horzfields" value="Width/Right"/>
101
+ </Property>
102
+ <Property name="right" formalName="Right" description="Distance between presentation and layer right edges">
103
+ <ShowIfEqual property="horzfields" value="Left/Right"/>
104
+ <ShowIfEqual property="horzfields" value="Width/Right"/>
105
+ </Property>
106
+ <Property name="rightunits" formalName="Right Units" description="Right distance is percent of overall width or absolute pixels" list="percent:pixels" default="percent">
107
+ <ShowIfEqual property="horzfields" value="Left/Right"/>
108
+ <ShowIfEqual property="horzfields" value="Width/Right"/>
109
+ </Property>
110
+ <Property name="vertfields" formalName="Vertical Fields" description="Properties to use to control the vertical size and placement" list="Top/Height:Top/Bottom:Height/Bottom" default="Top/Height" />
111
+ <Property name="top" formalName="Top" description="Distance between presentation and layer top edges.">
112
+ <ShowIfEqual property="vertfields" value="Top/Height"/>
113
+ <ShowIfEqual property="vertfields" value="Top/Bottom"/>
114
+ </Property>
115
+ <Property name="topunits" formalName="Top Units" description="Top distance is percent of overall height or absolute pixels" list="percent:pixels" default="percent">
116
+ <ShowIfEqual property="vertfields" value="Top/Height"/>
117
+ <ShowIfEqual property="vertfields" value="Top/Bottom"/>
118
+ </Property>
119
+ <Property name="height" formalName="Height" description="Overall layer height." default="100">
120
+ <ShowIfEqual property="vertfields" value="Top/Height"/>
121
+ <ShowIfEqual property="vertfields" value="Height/Bottom"/>
122
+ </Property>
123
+ <Property name="heightunits" formalName="Height Units" description="Height is percent of overall height or absolute pixels" list="percent:pixels" default="percent">
124
+ <ShowIfEqual property="vertfields" value="Top/Height"/>
125
+ <ShowIfEqual property="vertfields" value="Height/Bottom"/>
126
+ </Property>
127
+ <Property name="bottom" formalName="Bottom" description="Distance between presentation and layer bottom edges">
128
+ <ShowIfEqual property="vertfields" value="Top/Bottom"/>
129
+ <ShowIfEqual property="vertfields" value="Height/Bottom"/>
130
+ </Property>
131
+ <Property name="bottomunits" formalName="Bottom Units" description="Bottom distance is percent of overall height or absolute pixels" list="percent:pixels" default="percent">
132
+ <ShowIfEqual property="vertfields" value="Top/Bottom"/>
133
+ <ShowIfEqual property="vertfields" value="Height/Bottom"/>
134
+ </Property>
135
+ <Property name="sourcepath" formalName="Sub-Presentation" description="Presentation (or plugin) to render for this layer" type="Renderable" />
136
+ <!-- Restating the node properties so they appear at the bottom of the list because they won't be used quite as much -->
137
+ <!--CN - removing properties that may force the layer to render offscreen. We aren't ready to support this feature-->
138
+ <Property name="position" formalName="Position" description="Position" type="Vector" hidden="True"/>
139
+ <Property name="rotation" formalName="Rotation" description="Rotation" type="Rotation" hidden="True" />
140
+ <Property name="scale" formalName="Scale" description="Scale" type="Vector" default="1 1 1" hidden="True" />
141
+ <Property name="pivot" formalName="Pivot" description="Pivot" type="Vector" hidden="True" />
142
+ <Property name="opacity" formalName="Opacity" min="0" max="100" default="100" hidden="True" />
143
+
144
+ <Property name="aostrength" formalName="Ambient Occlusion" description="Amount of ambient occlusion shading to apply" min="0" max="100" default="0">
145
+ <ShowIfEqual property="sourcepath" value=""/>
146
+ </Property>
147
+ <Property name="aodistance" formalName="AO Distance" description="Size of the ambient occlusion shading" default="5">
148
+ <HideIfEqual property="aostrength" value="0"/>
149
+ <ShowIfEqual property="sourcepath" value=""/>
150
+ </Property>
151
+ <Property name="aosoftness" formalName="AO Softness" description="Magnitude of the blurring used to soften shading" min="0" max="50" default="50">
152
+ <HideIfEqual property="aostrength" value="0"/>
153
+ <ShowIfEqual property="sourcepath" value=""/>
154
+ </Property>
155
+ <Property name="aobias" formalName="AO Threshold" description="Remove AO from flat surfaces to prevent artifacts" default="0">
156
+ <HideIfEqual property="aostrength" value="0"/>
157
+ <ShowIfEqual property="sourcepath" value=""/>
158
+ </Property>
159
+ <Property name="aosamplerate" formalName="AO Sampling Rate" description="Quality of AO sampling" type="Long" default="2" min="2" max="4">
160
+ <HideIfEqual property="aostrength" value="0"/>
161
+ <ShowIfEqual property="sourcepath" value=""/>
162
+ </Property>
163
+ <Property name="aodither" formalName="AO Detail" description="Use close-range detail AO" type="Boolean" default="True">
164
+ <HideIfEqual property="aostrength" value="0"/>
165
+ <ShowIfEqual property="sourcepath" value=""/>
166
+ </Property>
167
+
168
+ <Property name="shadowstrength" formalName="Shadow Strength" description="Amount of shadowing to apply" min="0" max="100" default="0" hidden="True">
169
+ <ShowIfEqual property="sourcepath" value=""/>
170
+ </Property>
171
+ <Property name="shadowdist" formalName="Shadow Distance" description="Maximum distance to ray march for shadows test" default="10" hidden="True">
172
+ <HideIfEqual property="shadowstrength" value="0"/>
173
+ <ShowIfEqual property="sourcepath" value=""/>
174
+ </Property>
175
+ <Property name="shadowsoftness" formalName="Shadow Softness" description="Amount of softening of the shadow edges" min="0" max="100" default="100" hidden="True">
176
+ <HideIfEqual property="shadowstrength" value="0"/>
177
+ <ShowIfEqual property="sourcepath" value=""/>
178
+ </Property>
179
+ <Property name="shadowbias" formalName="Shadow Threshold" description="Remove self-shadowing from flat surfaces" default="0" hidden="True">
180
+ <HideIfEqual property="shadowstrength" value="0"/>
181
+ <ShowIfEqual property="sourcepath" value=""/>
182
+ </Property>
183
+
184
+ <Property name="lightprobe" formalName="Light Probe" description="Image used for image-based lighting and reflections" type="Image" />
185
+ <Property name="fastibl" formalName="Fast IBL" description="Use a faster approximation to image-based lighting" type="Boolean" default="True" hidden="True" />
186
+ <Property name="probehorizon" formalName="IBL Horizon Cutoff" description="Upper limit for horizon darkening of the light probe" min="-1" max="-0.001" default="-1">
187
+ <HideIfEqual property="lightprobe" value=""/>
188
+ </Property>
189
+ <Property name="lightprobe2" formalName="Secondary Light Probe" description="Image to blend over the primary light probe" type="Image">
190
+ <HideIfEqual property="lightprobe" value=""/>
191
+ </Property>
192
+ <Property name="probe2fade" formalName="Probe Crossfade" description="Blend amount between the primary and seconary probes" min="0.0" max="1.0" default="1.0">
193
+ <HideIfEqual property="lightprobe" value=""/>
194
+ <HideIfEqual property="lightprobe2" value=""/>
195
+ </Property>
196
+ <Property name="probe2window" formalName="Secondary Probe Window" description="Texture-U window size used for the moving window (for scrolling textures" min="0.01" max="1.0" default="1.0" hidden="True">
197
+ <HideIfEqual property="lightprobe" value=""/>
198
+ <HideIfEqual property="lightprobe2" value=""/>
199
+ </Property>
200
+ <Property name="probe2pos" formalName="Secondary Probe Offset" description="Texture-U window offset used for the moving window" default="0.5" hidden="True">
201
+ <HideIfEqual property="lightprobe" value=""/>
202
+ <HideIfEqual property="lightprobe2" value=""/>
203
+ </Property>
204
+ </Layer>
205
+ <Light>
206
+ <Property name="name" formalName="Name" type="String" default="Light" hidden="True" />
207
+ <Property name="opacity" formalName="Opacity" min="0" max="100" default="100" hidden="True" />
208
+ <Property name='scope' formalName="Scope" description="Sub portion of the scene graph this light affects. No object means entire scene graph" type='ObjectRef' />
209
+ <Property name="lighttype" formalName="Light Type" description="Type of illumination to use" list="Directional:Point:Area" default="Directional" />
210
+ <Property name="position" formalName="Position" description="Location in local space" type="Vector"/>
211
+ <Property name="rotation" formalName="Rotation" description="Rotation around local axes" type="Rotation" />
212
+ <Property name="scale" formalName="Scale" description="Size adjustments along local axes" type="Vector" default="1 1 1" />
213
+ <Property name="pivot" formalName="Pivot" description="Offset of the contents away from the local center" type="Vector" />
214
+ <Property name="lightdiffuse" formalName="Light Color" description="Color of diffuse lighting effect" type="Color" default="1 1 1"/>
215
+ <Property name="lightspecular" formalName="Specular Color" description="Color of specular lighting highlights" type="Color" default="1 1 1"/>
216
+ <Property name="lightambient" formalName="Ambient Color" description="Color of unlit areas (black for none)" type="Color"/>
217
+ <Property name="brightness" formalName="Brightness" description="Strength of the light" default="100"/>
218
+ <Property name="linearfade" formalName="Linear Fade" description="Falloff of the point light" min="0" max="100">
219
+ <ShowIfEqual property="lighttype" value="Point"/>
220
+ </Property>
221
+ <Property name="expfade" formalName="Exponential Fade" description="Additional falloff" min="0" max="100">
222
+ <ShowIfEqual property="lighttype" value="Point"/>
223
+ </Property>
224
+ <Property name="areawidth" formalName="Width" description="Width of the surface of the area light" min="0" default="100" hidden="True">
225
+ <ShowIfEqual property="lighttype" value="Area"/>
226
+ </Property>
227
+ <Property name="areaheight" formalName="Height" description="Height of the surface of the area light" min="0" default="100" hidden="True">
228
+ <ShowIfEqual property="lighttype" value="Area"/>
229
+ </Property>
230
+ </Light>
231
+ <MaterialBase>
232
+ <Property name="name" formalName="Name" type="String" default="MaterialBase" hidden="True" />
233
+ </MaterialBase>
234
+ <Material>
235
+ <Property name="name" formalName="Name" type="String" default="Material" hidden="True" />
236
+ <Property name="shaderlighting" formalName="Lighting" description="Light model; (vertex is faster but does not support some effects)" list="Vertex:Pixel:None" default="Vertex" />
237
+ <Property name="blendmode" formalName="Blending Mode" description="How this material blends with content behind it" list="Normal:Screen:Multiply" default="Normal" />
238
+ <Property name="diffuse" formalName="Diffuse Color" description="Color when lit from any direction" type="Color" default="1 1 1" />
239
+ <Property name="diffusemap" formalName="Diffuse Map" description="Image to multiply with diffuse color" type="Image" />
240
+ <Property name="diffusemap2" formalName="Diffuse Map 2" description="Image to multiply with diffuse color" type="Image" />
241
+ <Property name="diffusemap3" formalName="Diffuse Map 3" description="Image to multiply with diffuse color" type="Image" />
242
+ <Property name="specularreflection" formalName="Specular Reflection" description="Image to use as a faked reflection" type="Image" />
243
+ <Property name="speculartint" formalName="Specular Tint" type="Color" description="Coloration applied to specular reflections" default="1 1 1"/>
244
+ <Property name="specularamount" formalName="Specular Amount" description="Amount of shine/gloss" />
245
+ <Property name="specularmap" formalName="Specular Map" description="Image to vary the specular amount across the material" type="Image">
246
+ <HideIfEqual property="specularamount" value='0'/>
247
+ </Property>
248
+ <Property name="specularmodel" formalName="Specular Model" description="Equation to use when calculating specular highlights for CG lights" list="Default:KGGX:KWard" default="Default">
249
+ <HideIfEqual property="specularamount" value='0'/>
250
+ </Property>
251
+ <Property name="specularroughness" formalName="Specular Roughness" description="Softening applied to reflections and highlights" min='0.001' max='1'>
252
+ <HideIfEqual property="specularamount" value='0'/>
253
+ </Property>
254
+ <Property name="fresnelPower" formalName="Fresnel Power" description="Damping of head-on reflections" />
255
+ <Property name="ior" formalName="Index of Refraction" description="Angle at which fresnel reflection damping applies" min="0" max="1" default=".2">
256
+ <HideIfEqual property="fresnelPower" value="0"/>
257
+ </Property>
258
+ <Property name="bumpmap" formalName="Bump Map" description="Grayscale image simulating roughness in the lighting" type="Image"/>
259
+ <Property name="normalmap" formalName="Normal Map" description="Special RGB image describing surface roughness" type="Image"/>
260
+ <Property name="bumpamount" formalName="Bump Amount" description="Strength of bump/normal map effect" type="float" default=".5"/>
261
+ <Property name="displacementmap" formalName="Displacement Map" description="Grayscale image used to offset vertices of the geometry" type="Image"/>
262
+ <Property name="displaceamount" formalName="Displacement Amount" description="Distance to offset vertices" type="float" default="20">
263
+ <HideIfEqual property="displacementmap" value=""/>
264
+ </Property>
265
+ <Property name="opacity" formalName="Opacity" description="Visibility of the geometry for this material." min="0" max="100" default="100" />
266
+ <Property name="opacitymap" formalName="Opacity Map" description="Image to vary the opacity across the material" type="Image" />
267
+ <Property name="emissivepower" formalName="Emissive Power" description="Amount of self-illumination for this material (will not light other objects)" />
268
+ <Property name="emissivemap" formalName="Emissive Map" description="Image to vary the emissive power across the material" type="Image" />
269
+ <Property name="translucencymap" formalName="Translucency Map" description="Grayscale image controlling how much light can pass through the material from behind" type="Image"/>
270
+ <Property name="translucentfalloff" formalName="Translucent Falloff" type="float" default="1">
271
+ <HideIfEqual property="translucencymap" value=""/>
272
+ </Property>
273
+ <Property name="diffuselightwrap" formalName="Diffuse Light Wrap" type="float" min='0.0' max='1.0'>
274
+ <HideIfEqual property="translucencymap" value=""/>
275
+ </Property>
276
+ </Material>
277
+ <ReferencedMaterial>
278
+ <Property name="name" formalName="Name" type="String" default="Material" hidden="True" />
279
+ <Property name="referencedmaterial" formalName="Referenced Material" description="Material to use all settings from" type="ObjectRef" />
280
+ </ReferencedMaterial>
281
+ <Model>
282
+ <Property name="name" formalName="Name" type="String" default="Model" hidden="True" />
283
+ <Property name="sourcepath" formalName="Mesh" description="Geometry to use for this model" type="Mesh" />
284
+ <Property name="poseroot" hidden="True" type="Long" default="-1" />
285
+ <Property name="tessellation" formalName="Tessellation Mode" description="Type of tessellation to subdivide the geometry" list="None:Linear:Phong:NPatch" default="None" />
286
+ <Property name="edgetess" formalName="Edge Tessellation Value" description="Max Tessellation amount" min="1" max="64" default="4">
287
+ <HideIfEqual property="tessellation" value="None"/>
288
+ </Property>
289
+ <Property name="innertess" formalName="Inner Tessellation Value" description="Min Tessellation amount" min="1" max="64" default="4">
290
+ <HideIfEqual property="tessellation" value="None"/>
291
+ </Property>
292
+ </Model>
293
+ <Node>
294
+ <Event name="onPressureDown" category="Gesture" />
295
+ <Event name="onPressureUp" category="Gesture" />
296
+ <Event name="onTap" category="Gesture" />
297
+ <Event name="onSingleTap" category="Gesture" />
298
+ <Event name="onDoubleTap" category="Gesture" />
299
+ <Event name="onOnePointDragStart" category="Gesture" />
300
+ <Event name="onOnePointDrag" category="Gesture" />
301
+ <Event name="onOnePointDragRelease" category="Gesture" />
302
+ <Event name="onTwoPointDragStart" category="Gesture" />
303
+ <Event name="onTwoPointDrag" category="Gesture" />
304
+ <Event name="onTwoPointDragRelease" category="Gesture" />
305
+ <Event name="onSwipeLeft" category="Gesture" />
306
+ <Event name="onSwipeRight" category="Gesture" />
307
+ <Event name="onSwipeUp" category="Gesture" />
308
+ <Event name="onSwipeDown" category="Gesture" />
309
+ <Event name="onTwoPointSwipeLeft" category="Gesture" />
310
+ <Event name="onTwoPointSwipeRight" category="Gesture" />
311
+ <Event name="onTwoPointSwipeUp" category="Gesture" />
312
+ <Event name="onTwoPointSwipeDown" category="Gesture" />
313
+
314
+ <Property name="position" formalName="Position" description="Location in local space" type="Vector"/>
315
+ <Property name="rotation" formalName="Rotation" description="Rotation around local axes" type="Rotation" />
316
+ <Property name="scale" formalName="Scale" description="Size adjustments along local axes" type="Vector" default="1 1 1" />
317
+ <Property name="pivot" formalName="Pivot" description="Offset of the contents away from the local center" type="Vector" />
318
+ <Property name="opacity" formalName="Opacity" description="How much the element (and its children) occlude items behind them" min="0" max="100" default="100" />
319
+ <Property name="rotationorder" formalName="Rotation Order" description="Rotation Order" list="XYZ:YZX:ZXY:XZY:YXZ:ZYX:XYZr:YZXr:ZXYr:XZYr:YXZr:ZYXr" default="YXZ" hidden="True"/>
320
+ <Property name="orientation" formalName="Orientation" description="Orientation" list="Left Handed:Right Handed" default="Left Handed" hidden="True"/>
321
+ <Property name="boneid" type="Long" hidden="True" default="-1" />
322
+ <Property name="ignoresparent" type="Boolean" hidden="True" default="False" />
323
+ </Node>
324
+ <RenderPlugin>
325
+ <Property name="name" formalName="Name" type="String" default="RenderPlugin" hidden="True" />
326
+ </RenderPlugin>
327
+ <Scene>
328
+ <Property name="name" formalName="Name" type="String" default="Scene" hidden="True" />
329
+ <Property name="bgcolorenable" formalName="Use Background" description="Clear the contents to a solid color before each frame?" type="Boolean" default="True" />
330
+ <Property name="backgroundcolor" formalName="Background Color" description="Color to use for the background" type="Color" animatable="False">
331
+ <ShowIfEqual property="bgcolorenable" value="True"/>
332
+ </Property>
333
+ <Event name="onPressureDown" category="Gesture" />
334
+ <Event name="onPressureUp" category="Gesture" />
335
+ <Event name="onTap" category="Gesture" />
336
+ <Event name="onSingleTap" category="Gesture" />
337
+ <Event name="onDoubleTap" category="Gesture" />
338
+ <Event name="onOnePointDragStart" category="Gesture" />
339
+ <Event name="onOnePointDrag" category="Gesture" />
340
+ <Event name="onOnePointDragRelease" category="Gesture" />
341
+ <Event name="onTwoPointDragStart" category="Gesture" />
342
+ <Event name="onTwoPointDrag" category="Gesture" />
343
+ <Event name="onTwoPointDragRelease" category="Gesture" />
344
+ <Event name="onSwipeLeft" category="Gesture" />
345
+ <Event name="onSwipeRight" category="Gesture" />
346
+ <Event name="onSwipeUp" category="Gesture" />
347
+ <Event name="onSwipeDown" category="Gesture" />
348
+ <Event name="onTwoPointSwipeLeft" category="Gesture" />
349
+ <Event name="onTwoPointSwipeRight" category="Gesture" />
350
+ <Event name="onTwoPointSwipeUp" category="Gesture" />
351
+ <Event name="onTwoPointSwipeDown" category="Gesture" />
352
+ </Scene>
353
+ <Slide>
354
+ <Property name="playmode" formalName="Play Mode" description="Action to take when reaching the end of all timebars on this slide" list="Stop at end:Looping:PingPong:Ping:Play Through To..." default="Stop at end" animatable="False" />
355
+ <Property name="playthroughto" formalName="Play Through To" description="Slide to go to after this one" type="StringListOrInt" list="Next:Previous" default="Next" animatable="False">
356
+ <ShowIfEqual property="playmode" value="Play Through To..."/>
357
+ </Property>
358
+ <Property name="initialplaystate" formalName="Initial Play State" description="Do animations start when coming to this slide?" list="Play:Pause" default="Play" animatable="False" />
359
+ </Slide>
360
+ <SlideOwner>
361
+ <Event name="onSlideEnter" category="Slide" description="Fired when the slide is changing" />
362
+ <Event name="onSlideExit" category="Slide" description="Fired when the slide is changing" />
363
+ <Handler name="Go to Time" category="Time" description="Set the current time on the component.">
364
+ <Argument name="Time" description="Time to go do" />
365
+ <Argument name="Pause" description="Pause playback at the new time?" type="Boolean" />
366
+ </Handler>
367
+ <Handler name="Play" category="Time" description="Start the component's time playing." />
368
+ <Handler name="Pause" category="Time" description="Pause the component's time." />
369
+ <Handler name="Go to Slide" category="Slide" description="Go to a specified slide of the component.">
370
+ <Argument name="Slide" description="Target slide to go to" type="Slide" argumentType="Slide" />
371
+ </Handler>
372
+ <Handler name="Next Slide" category="Slide" description="Activate the next slide of the component." />
373
+ <Handler name="Previous Slide" category="Slide" description="Activate the previous slide of the component." />
374
+ <Handler name="Preceding Slide" category="Slide" description="Activate the slide that was previously active." />
375
+ </SlideOwner>
376
+ <Text>
377
+ <Property name="name" formalName="Name" type="String" default="Text" hidden="True" />
378
+ <Property name="textstring" formalName="Text String" description="Text String" type="MultiLineString" default="Text" />
379
+ <Property name="textcolor" formalName="Text Color" description="Text Color" type="Color" default="1 1 1" />
380
+ <Property name="font" formalName="Font" description="Font" type="Font" default="Arimo-Regular" />
381
+ <Property name="size" formalName="Font Size" description="Font Size" type="FontSize" default="24" animatable="False" />
382
+ <Property name="horzalign" formalName="Horizontal Alignment" description="Horizontal Alignment" list="Left:Center:Right" default="Center" />
383
+ <Property name="vertalign" formalName="Vertical Alignment" description="Vertical Alignment" list="Top:Middle:Bottom" default="Middle" />
384
+ <Property name="leading" formalName="Leading" description="Leading" />
385
+ <Property name="tracking" formalName="Tracking" description="Tracking" />
386
+ </Text>
387
+ </MetaData>