CCG/Example: TrainCar (Coal Hopper)
Contents |
Traincar (Coal Hopper)
Directory Structure
A typical asset of this kind has the following File\Directory Structure:
Required Files
config.txt - The config file for the asset.
thumb.jpg - The thumbnail image for this asset. A 240x180 jpeg.
coal_dump1.wav, coal_load1.wav, coupling_1.wav - Sound files referenced within the hopper.gs script file.
hopper.gs - Script file detailing some functionality of the traincar asset.
coal_hopper_art_512.texture.txt, coal_hopper_art_512.tga - These image files are used to show a 512x512 preview texture when the image is available on the download station. These file have been replaced with the 240x180 thumbnail image referenced in the thumbnails container.
coal_hopper_art_icon.texture.txt, coal_hopper_art_icon.tga - The icon texture files. 128x64 pixels in dimension.
coal_hopper_body.lm.txt - Level of Detail (or 'LOD') file. See the section on LOD meshes on Page 378 for more information.
erz3d.texture.txt, erz3d.tga, black.texture.txt, black. tga, load_map.texture.txt, load_map.tga - The texture files used by the indexed meshes. See the section on Texture.txt files on Page 96 for more information.
unload_left.kin, unload_right.kin, load.kin - The animation files used by th traincar asset for loading and unloading operations.
load.im, coal_hopper_shadow.im, unload_left.im, unload_right.im, coal_hopper_body.im, coal_hopper_body_low.im - The indexed mesh files used by the traincar asset.
Config.txt File Listing
kuid <kuid:56113:1001> trainz-build 2.9 category-class "XG" username "testTraincar (Hopper)" kind "traincar" engine 0 mass 15000 category-region "00" category-era "1990s;2000s;2010s" enginespec <kuid:-1:42004201> script "hopper.gs" class "Hopper" icon0 <kuid:-3:10164> description "Test Coal Hopper Asset." soundscript { door_close { trigger "door_close" nostartdelay 1 repeat-delay 1,0 distance 5,170 sound { 0 "coupling_1.wav" } } mesh-table { default { mesh "coal_hopper_body/coal_hopper_body.lm" auto-create 1 } shadow { mesh "coal_hopper_shadow/coal_hopper_shadow.im" } load { mesh "coal_hopper_body/load/load.im" anim "coal_hopper_body/load/load.kin" auto-create 1 use-parent-bounds 1 effects { product-texture { kind "texture-replacement" texture "load_map.texture" } } } left-door { mesh "coal_hopper_body/unload_left/unload_left.im" anim "coal_hopper_body/unload_left/unload_left.kin" auto-create 1 } right-door { mesh "coal_hopper_body/unload_right/unload_right.im" anim "coal_hopper_body/unload_right/unload_right.kin" auto-create 1 } } queues { load0 { size 54300 initial-count 0 animated-mesh "load" product-kuid <kuid:44179:60013> allowed-categories { 0 <kuid:-3:10040> } } } smoke0 { attachment "a.unload_left_pfx0" mode "time" color 0,0,0,250 rate 8 velocity 2 lifetime 2 minsize 1 maxsize 4 enabled 0 } smoke1 { attachment "a.unload_left_pfx1" mode "time" color 0,0,0,250 rate 8 velocity 2 lifetime 2 minsize 1 maxsize 4 enabled 0 } smoke2 { attachment "a.unload_right_pfx0" mode "time" color 0,0,0,250 rate 8 velocity 2 lifetime 2 minsize 1 maxsize 4 enabled 0 } smoke3 { attachment "a.unload_right_pfx1" mode "time" color 0,0,0,250 rate 8 velocity 2 lifetime 2 minsize 1 maxsize 4 enabled 0 } bogeys { 0 { bogey <kuid:-1:100063> reversed 0 } } thumbnails { 0 { image "thumb.jpg" width 240 height 180 } 1 { image "coal_hopper_art/coal_hopper_art_icon.texture" width 128 height 64 } }
Script File Listing
hopper.gs
// // Hopper.gs // // Copyright (C) 2003 Auran Developments Pty Ltd // All Rights Reserved. // // include "vehicle.gs" // // Hopper scriplet class. No threads - // only call overridden callbacks from Vehicle that are called by an Industry. // class Hopper isclass Vehicle { // Play sound hopper is starting to be loaded. float BeginLoad(LoadingReport report) { Asset meAsset = GetAsset(); World.PlaySound(meAsset, "coal_load.wav", 000.0f, 20.0f, 000.0f, me, ""); return 0.0; } // Activate particles and play a sound as the hopper is beginning to unload. float BeginUnload(LoadingReport report) { SetMeshAnimationState("left-door", true); SendMessage(me, "pfx", "+0+"); SetMeshAnimationState("right-door", true); SendMessage(me, "pfx", "+2+3"); Asset meAsset = GetAsset(); World.PlaySound(meAsset, "coal_dump.wav", 000.0f, 20.0f, 000.0f, me, ""); return .0; } // Deactivate particles and play a sound as the hopper is ending the unload operation. float EndUnload(LoadingReport report) { Sleep(.0); SetMeshAnimationState("left-door", false); SendMessage(me, "pfx", "-0-"); SetMeshAnimationState("right-door", false); SendMessage(me, "pfx", "-2-3"); return .0; } };
LOD File Listing
coal_hopper_body.lm.txt
version .0 offset = 0.0; calcPoint = center; multiplier = .0; animationCutOff = 0.00; mesh("0.2") { name="coal_hopper_body_low.im"; } mesh(".0") { name="coal_hopper_body.im"; }