The Textures Section

The Textures section loads textures into the simulation and assigns names to them, for use in the rest of the sections. The section starts with this header:
<Textures>

and ends with this footer:
<EndTextures>

1. Load - loads a texture
Syntax: Load filename, name, tile_x, tile_y[, force]
Example: Load data\brick1.jpg, Brick, 1, 1

This example will load the file brick.jpg and name it Brick. The values tile_x and tile_y are per-texture multipliers. For example, if you set tile_x to 2, and you specify a texture width (tw) of 2 during an AddFloor command later, the tiling value will be 4 (2 times 2), and the texture will be repeated 4 times horizontally. The force value is optional, and if set to false, autosizing will always be disabled for this texture; if set to true, autosizing will always be enabled.

2. LoadRange - loads a numeric range of textures, and the current number is available in the number variable (%number%)
Syntax: LoadRange startnumber, endnumber, filename, name, tile_x, tile_y[, force]
Example: LoadRange 2, 138, data\floorindicators\%number%.jpg, Button%number%, 1, 1

This example will load the file 2.jpg and name it Button2, 3.jpg as Button3, and so on. The values tile_x and tile_y are per-texture multipliers. For example, if you set tile_x to 2, and you specify a texture width (tw) of 2 during an AddFloor command later, the tiling value will be 4 (2 times 2), and the texture will be repeated 4 times horizontally. The force value is optional, and if set to false, autosizing will always be disabled for this texture; if set to true, autosizing will always be enabled.

3. LoadAnimated - loads a set of textures to use as a single animated texture
Syntax: LoadAnimated filename1, filename2, ..., name, duration, tile_x, tile_y[, force]
Example: LoadAnimated data/pic1.jpg, data/pic2.jpg, data/pic3.jpg, myanimation, 2, 1, 1

This example will load the files pic1.jpg, pic2.jpg and pic3.jpg and associate them with the texture material "myanimation". When "myanimation" is used, those three images will automatically be displayed in order, in a loop. Duration refers to the length of the animation in seconds. The values tile_x and tile_y are per-texture multipliers. For example, if you set tile_x to 2, and you specify a texture width (tw) of 2 during an AddFloor command later, the tiling value will be 4 (2 times 2), and the texture will be repeated 4 times horizontally. The force value is optional, and if set to false, autosizing will always be disabled for this texture; if set to true, autosizing will always be enabled.

4. LoadAlphaBlend - loads a texture with a specular mask texture and blending texture, used to make things like reflection effects
Syntax: LoadAlphaBlend filename, specular_filename, blend_filename, name, spherical, tile_x, tile_y[, force]
Example: LoadAlphaBlend data/windows.jpg, data/windows_spec.png, data/sky.jpg, mywindows, true, 1, 1
This example will load the texture windows.jpg normally, and will load windows_spec.png as a specular mask (which needs to be a file that contains an alpha blended image that is used to determine how the blending texture applies to the original texture), and loads a texture to blend as sky.jpg (see Skyscraper's data folder for examples of this). The spherical parameter determines if the texture is spherically mapped (true) or planar mapped (false). The values tile_x and tile_y are per-texture multipliers. For example, if you set tile_x to 2, and you specify a texture width (tw) of 2 during an AddFloor command later, the tiling value will be 4 (2 times 2), and the texture will be repeated 4 times horizontally. The force value is optional, and if set to false, autosizing will always be disabled for this texture; if set to true, autosizing will always be enabled.

5. LoadMaterial - loads a custom OGRE material, used for advanced/specific texture definitions
Syntax: LoadMaterial material_name, name, tile_x, tile_y[, force]
Example: LoadMaterial testmat, mycustommaterial, 1, 1
Material definitions (and their associated textures) are stored in Skyscraper's data/materials folder, and are all automatically loaded on startup. The material definitions (the example being testmat.material) contain a material name along with the texture processing parameters. The material name specified in this command needs to match the one in the material definition you want to use; the example file is named "testmat". Name is the standard texture name you want to map it to, to use with other commands. The other commands are the same as in previous commands. For more information on how to make material definition scripts, see the OGRE manual's "Material Scripts" section.

6. AddText - draws text onto a texture - this only creates a new texture during runtime (in memory), and all changes are lost when the application shuts down
Syntax: AddText texture_name, name, font_filename, font_size, text, x1, y1, x2, y2, h_align, v_align, ColorR, ColorG, ColorB[, force]
Example: AddText Black, Button100, nimbus_sans.ttf, 47, 100, -1, -1, -1, -1, center, center, 255, 255, 255

With this command, texture_name is the name of the previously loaded texture to draw text onto (loaded with either Load or LoadRange). Name is the name to call this new texture. Font_filename is the filename of the font to use - fonts are in Skyscraper's data/fonts directory. X1, y1, x2, and y2 are coordinate values mainly used to position the text in a boxed area, with the position of 0, 0 (x 0, y 0) being on the top left.. If any value is -1, the dimension of the texture will be used (so in this example, the loaded texture has a size of 128x128 pixels, and so the values are 0, 0, 128, 128). This will place the text in the center of the texture image, but to position it elsewhere, specify the pixel box to place it in. H_align and v_align determine the alignment of the text - for h_align, it can either be "left", "right" or "center", and for v_align either "top", "bottom" or "center". ColorR, ColorG and ColorB determine the color of the text, and the values range from 0 to 255. If all values are 255, the text is white, and if all values are 0, then it's black. The force value is optional, and if set to false, autosizing will always be disabled for this texture; if set to true, autosizing will always be enabled.

7. AddTextRange - similar to LoadRange, but draws text onto a texture
Syntax: AddText startnumber, endnumber, texture_name, name, font_filename, font_size, text, x1, y1, x2, y2, h_align, v_align, ColorR, ColorG, ColorB[, force]
Example: AddText 1, 100, Black, Button%number%, nimbus_sans.ttf, 47, %number%, -1, -1, -1, -1, center, center, 255, 255, 255

8. LoadCropped - loads a cropped image.
Syntax: LoadCropped filename, name, x, y, width, height, tile_x, tile_y[, force]
Example: LoadCropped data\brick1.jpg, Brick2, 10, 10, 20, 20, 1, 1

This command is similar to the Load command, but loads only a portion of an image. In the above example, the command loads the file data\brick1.jpg as "Brick2", but only loads the portion of the image starting at pixel 10, 10, with a width of 20 pixels and a heigth of 20 pixels. Pixel 0, 0 is on the top left of the image. The force value is optional, and if set to false, autosizing will always be disabled for this texture; if set to true, autosizing will always be enabled.

9. AddOverlay - draws an image on top of another image
Syntax: AddOverlay texture_name, overlay_texture_name, name, x, y, width, height, tile_x, tile_y[, force]
Example: AddOverlay Brick1, Brick2, NewBrick, 25, 25, 50, 50, 1, 1

This command allows multiple textures to be combined into a single texture, by drawing one on top of the other. Texture_name specifies the original source texture name to use (all textures must be loaded beforehand), overlay_texture_name specifies the texture to draw on top of the source texture, and name specifies the name of the new texture. X and Y determine the position to place the top-left of the new image at (since position 0, 0 is the top left of the image), and width and height determine the size in pixels of the overlay texture. In the above example, the "Brick2" texture is drawn on top of the "Brick1" texture, starting at pixel position 25, 25, with a width of 50 and a height of 50. The resulting texture is called "NewBrick". The force value is optional, and if set to false, autosizing will always be disabled for this texture; if set to true, autosizing will always be enabled.

10. Rotate - sets a texture's rotation to a set amount. This can be used with other texture modifiers.
Syntax: Rotate name, angle
Example: Rotate Brick1, 30

This command sets the texture's rotation value. In the example, the Brick1 texture's rotation is set to 30 degrees (clockwise).

11. RotateAnim - applies rotation animation to a texture. This can be used with other texture modifiers.
Syntax: RotateAnim name, speed
Example: RotateAnim Brick1, 0.2

This command sets the texture's animated rotation value. Speed is in rotations per second. In the example, the Brick1 texture's rotation animation is set to 0.2 rotations per second.

12. Scroll - set's a texture's fixed scrolling value. This can be used with other texture modifiers.
Syntax: Scroll name, x_offset, y_offset
Example: Scroll Brick1, 0.5, 0.5

This command sets the texture's scrolling value. In the example, the Brick1 texture is shifted to the right halfway, and shifted up halfway.

13. ScrollAnim - applies scrolling animation to a texture. This can be used with other texture modifiers.
Syntax: ScrollAnim name, x_speed, y_speed
Example: ScrollAnim Brick1, 1, 1

The speed values are the number of full scrolls per second. In the example, the Brick1 texture will scroll to the right once per second, and up once per second.

14. Scale - sets a texture's scaling factor. This can be used with other texture modifiers.
Syntax: Scale name, x_scale, y_scale
Example: Scale Brick1, 30

In the example, the Brick1 texture is scaled to half the size, in both width and height.

15. Transform - sets an advanced transformation method on the texture. This can be used with other texture modifiers, and also can be used multiple times to create multiple transformations.
Syntax: Transform name, type, wave_type, base, frequency, phase, amplitude
Example: Transform Brick1, rotate, sine, 0.2, 0.2, 0.1, 1.0

This command applies an advanced transformation method on the texture. Type is the animation type modified, and can either be scroll_x, scroll_y, rotate, scale_x, or scale_y. Wave_type defines the type of waveform applied to the transformation, which creates a variable speed of the animation. The values are sine (a typical sine wave which smoothly loops between min and max values), triangle (an angled wave which increases & decreases at constant speed, changing instantly at the extremes), square (max for half the wavelength, min for the rest with instant transition between), sawtooth (gradual steady increase from min to max over the period with an instant return to min at the end), inverse_sawtooth (gradual steady decrease from max to min over the period, with an instant return to max at the end), or pwm (Pulse Width Modulation; like square, except the high to low transition is controlled by duty cycle). Base is the base value of the wave (base value, the minimum if amplitude > 0, the maximum if amplitude < 0), frequency is the number of wave iterations per second (speed), phase is the offset of the wave start, and amplitude is the size of the wave.

16. SetCulling - sets the culling value for a specified texture. This determines which sides of the object the texture should be displayed.
Syntax: SetCulling name, value
Example: SetCulling Brick1, 0

Values are 0 for no culling (show both sides), 1 to cull anticlockwise (SBS default), or 2 to cull clockwise (Ogre default, used for models).
In the example, the Brick1 texture is now showing both sides of the texture.