RUIC 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
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>