Evening guys,
Today I’ve been working on some of the scripting for the actual train that we will be controlling. I’ve added the main controller class and then built on a factory class as well as a content class. I had help with the Agents scripting class on UDKC for this one.
I wont post the full class as it is quite big but basically a lot of things are just extended from the Scorpion script class.
Content class
class Train_Content extends Train; simulated function TeamChanged() { local color newColor; Super.TeamChanged(); if (WorldInfo.NetMode != NM_DedicatedServer) { newColor = (Team == 1) ? MakeColor(96,64,255) : MakeColor(255,64,96); RightBoosterLight.SetLightProperties(,newColor); LeftBoosterLight.SetLightProperties(,newColor); } } defaultproperties { Begin Object Name=CollisionCylinder CollisionHeight=40.0 CollisionRadius=100.0 Translation=(X=-25.0) End Object Begin Object Name=SVehicleMesh SkeletalMesh=SkeletalMesh'VH_Scorpion.Mesh.SK_VH_Scorpion_001' AnimTreeTemplate=AnimTree'VH_Scorpion.Anims.AT_VH_Scorpion_001' PhysicsAsset=PhysicsAsset'VH_Scorpion.Mesh.SK_VH_Scorpion_001_Physics' MorphSets[0]=MorphTargetSet'VH_Scorpion.Mesh.VH_Scorpion_MorphTargets' AnimSets.Add(AnimSet'VH_Scorpion.Anims.K_VH_Scorpion') RBCollideWithChannels=(Default=TRUE,BlockingVolume=TRUE,GameplayPhysics=TRUE,EffectPhysics=TRUE,Vehicle=TRUE,Untitled4=TRUE) End Object DrawScale=1.0 IconCoords=(U=831,UL=21,V=39,VL=29) BoostToolTipIconCoords=(U=0,UL=101,V=841,VL=49) EjectToolTipIconCoords=(U=93,UL=46,V=316,VL=52) BrakeLightParameterName=Brake_Light ReverseLightParameterName=Reverse_Light HeadLightParameterName=Green_Glows_Headlights Seats(0)={( GunClass=none, GunSocket=(TurretFireSocket), GunPivotPoints=(gun_rotate), TurretVarPrefix="", TurretControls=(TurretRotate), SeatIconPos=(X= 0.415,Y=0.5), CameraTag=GunViewSocket, CameraBaseOffset=(X=-50.0), CameraOffset=-175, WeaponEffects=((SocketName=TurretFireSocket,Offset=(X=-14,Y=5),Scale3D=(X=2.0,Y=3.0,Z=3.0)),(SocketName=TurretFireSocket,Offset=(X=-14,Y=-5),Scale3D=(X=2.0,Y=3.0,Z=3.0))) )} // Sounds // Engine sound. Begin Object Name=ScorpionEngineSound SoundCue=SoundCue'A_Vehicle_Scorpion.SoundCues.A_Vehicle_Scorpion_EngineLoop' End Object EngineSound=ScorpionEngineSound Components.Add(ScorpionEngineSound); Begin Object Name=ScorpionTireSound SoundCue=SoundCue'A_Vehicle_Generic.Vehicle.VehicleSurface_TireDirt01Cue' End Object TireAudioComp=ScorpionTireSound Components.Add(ScorpionTireSound); TireSoundList(0)=(MaterialType=Dirt,Sound=SoundCue'A_Vehicle_Generic.Vehicle.VehicleSurface_TireDirt01Cue') TireSoundList(1)=(MaterialType=Foliage,Sound=SoundCue'A_Vehicle_Generic.Vehicle.VehicleSurface_TireFoliage01Cue') TireSoundList(2)=(MaterialType=Grass,Sound=SoundCue'A_Vehicle_Generic.Vehicle.VehicleSurface_TireGrass01Cue') TireSoundList(3)=(MaterialType=Metal,Sound=SoundCue'A_Vehicle_Generic.Vehicle.VehicleSurface_TireMetal01Cue') TireSoundList(4)=(MaterialType=Mud,Sound=SoundCue'A_Vehicle_Generic.Vehicle.VehicleSurface_TireMud01Cue') TireSoundList(5)=(MaterialType=Snow,Sound=SoundCue'A_Vehicle_Generic.Vehicle.VehicleSurface_TireSnow01Cue') TireSoundList(6)=(MaterialType=Stone,Sound=SoundCue'A_Vehicle_Generic.Vehicle.VehicleSurface_TireStone01Cue') TireSoundList(7)=(MaterialType=Wood,Sound=SoundCue'A_Vehicle_Generic.Vehicle.VehicleSurface_TireWood01Cue') TireSoundList(8)=(MaterialType=Water,Sound=SoundCue'A_Vehicle_Generic.Vehicle.VehicleSurface_TireWater01Cue') WheelParticleEffects[0]=(MaterialType=Generic,ParticleTemplate=ParticleSystem'Envy_Level_Effects_2.Vehicle_Dust_Effects.P_Scorpion_Wheel_Dust') WheelParticleEffects[1]=(MaterialType=Dirt,ParticleTemplate=ParticleSystem'VH_Scorpion.Effects.PS_Wheel_Rocks') WheelParticleEffects[2]=(MaterialType=Water,ParticleTemplate=ParticleSystem'Envy_Level_Effects_2.Vehicle_Water_Effects.P_Scorpion_Water_Splash') WheelParticleEffects[3]=(MaterialType=Snow,ParticleTemplate=ParticleSystem'Envy_Level_Effects_2.Vehicle_Snow_Effects.P_Scorpion_Wheel_Snow') RedBoostCamAnim=CameraAnim'Camera_FX.VH_Scorpion.C_VH_Scorpion_Boost_Red' BlueBoostCamAnim=CameraAnim'Camera_FX.VH_Scorpion.C_VH_Scorpion_Boost_Blue' // Wheel squealing sound. Begin Object Name=ScorpionSquealSound SoundCue=SoundCue'A_Vehicle_Scorpion.SoundCues.A_Vehicle_Scorpion_Slide' End Object SquealSound=ScorpionSquealSound Components.Add(ScorpionSquealSound); CollisionSound=SoundCue'A_Vehicle_Scorpion.SoundCues.A_Vehicle_Scorpion_Collide' EnterVehicleSound=SoundCue'A_Vehicle_Scorpion.SoundCues.A_Vehicle_Scorpion_Start' ExitVehicleSound=SoundCue'A_Vehicle_Scorpion.SoundCues.A_Vehicle_Scorpion_Stop' // Rocket booster sound. Begin Object Name=ScorpionBoosterSound SoundCue=SoundCue'A_Vehicle_Raptor.SoundCues.A_Vehicle_Raptor_EngineLoop' End Object BoosterSound=ScorpionBoosterSound Components.Add(ScorpionBoosterSound); // Initialize sound parameters. SquealThreshold=0.1 SquealLatThreshold=0.02 LatAngleVolumeMult = 30.0 EngineStartOffsetSecs=2.0 EngineStopOffsetSecs=1.0 VehicleEffects(0)=(EffectStartTag=BoostStart,EffectEndTag=BoostStop,EffectTemplate=ParticleSystem'VH_Scorpion.Effects.PS_Scorpion_Booster_Red',EffectTemplate_Blue=ParticleSystem'VH_Scorpion.Effects.PS_Scorpion_Booster',EffectSocket=Booster01) VehicleEffects(1)=(EffectStartTag=BoostStart,EffectEndTag=BoostStop,EffectTemplate=ParticleSystem'VH_Scorpion.Effects.PS_Scorpion_Booster_Red',EffectTemplate_Blue=ParticleSystem'VH_Scorpion.Effects.PS_Scorpion_Booster',EffectSocket=Booster02) VehicleEffects(2)=(EffectStartTag=DamageSmoke,EffectEndTag=NoDamageSmoke,bRestartRunning=false,EffectTemplate=ParticleSystem'Envy_Effects.Vehicle_Damage.P_Vehicle_Damage_1_Scorpion',EffectSocket=DamageSmoke01) VehicleEffects(3)=(EffectStartTag=MuzzleFlash,EffectTemplate=ParticleSystem'VH_Scorpion.Effects.PS_Scorpion_Gun_MuzzleFlash_Red',EffectTemplate_Blue=ParticleSystem'VH_Scorpion.Effects.PS_Scorpion_Gun_MuzzleFlash',EffectSocket=TurretFireSocket) RightBladeStartSocket=Blade_R_Start RightBladeEndSocket=Blade_R_End LeftBladeStartSocket=Blade_L_Start LeftBladeEndSocket=Blade_L_End BladeDamageType=class'UTDmgType_ScorpionBlade' BladeBreakSound=SoundCue'A_Vehicle_Scorpion.SoundCues.A_Vehicle_Scorpion_BladeBreakOff' BladeExtendSound=SoundCue'A_Vehicle_Scorpion.SoundCues.A_Vehicle_Scorpion_BladeExtend' BladeRetractSound=SoundCue'A_Vehicle_Scorpion.SoundCues.A_Vehicle_Scorpion_BladeRetract' SelfDestructDamageType=class'UTDmgType_ScorpionSelfDestruct' SelfDestructSoundCue=SoundCue'A_Vehicle_Goliath.SoundCues.A_Vehicle_Goliath_Fire' EjectSoundCue=SoundCue'A_Vehicle_Scorpion.SoundCues.A_Vehicle_Scorpion_Eject_Cue' Begin Object name=LeftRocketLight Brightness=3.0 LightColor=(R=96,G=64,B=255) Radius=100.0 CastShadows=false bEnabled=false Translation=(X=20,Z=0) End Object LeftBoosterLight=LeftRocketLight Begin Object name=RightRocketLight Brightness=3.0 LightColor=(R=96,G=64,B=255) Radius=100.0 CastShadows=false bEnabled=false Translation=(X=20,Z=0) End Object RightBoosterLight=RightRocketLight DamageMorphTargets(0)=(InfluenceBone=LtFront_Fender,MorphNodeName=MorphNodeW_LtFrontFender,LinkedMorphNodeName=MorphNodeW_Hood,Health=30,DamagePropNames=(Damage2)) DamageMorphTargets(1)=(InfluenceBone=RtFront_Fender,MorphNodeName=MorphNodeW_RtFrontFender,LinkedMorphNodeName=MorphNodeW_Hood,Health=30,DamagePropNames=(Damage2)) DamageMorphTargets(2)=(InfluenceBone=LtRear_Fender,MorphNodeName=MorphNodeW_LtRearFender,LinkedMorphNodeName=MorphNodeW_Hatch,Health=40,DamagePropNames=(Damage1,Damage5)) DamageMorphTargets(3)=(InfluenceBone=RtRear_Fender,MorphNodeName=MorphNodeW_RtRearFender,LinkedMorphNodeName=MorphNodeW_Hatch,Health=40,DamagePropNames=(Damage1,Damage5)) DamageMorphTargets(4)=(InfluenceBone=Hood,MorphNodeName=MorphNodeW_Hood,LinkedMorphNodeName=MorphNodeW_Hatch,Health=100,DamagePropNames=(Damage3,Damage1)) DamageMorphTargets(5)=(InfluenceBone=Hatch_Slide,MorphNodeName=MorphNodeW_Hatch,LinkedMorphNodeName=MorphNodeW_Body,Health=125,DamagePropNames=(Damage1)) DamageMorphTargets(6)=(InfluenceBone=Main_Root,MorphNodeName=MorphNodeW_Body,Health=175,DamagePropNames=(Damage6,Damage7)) DamageParamScaleLevels(0)=(DamageParamName=Damage1,Scale=1.0) DamageParamScaleLevels(1)=(DamageParamName=Damage2,Scale=1.0) DamageParamScaleLevels(2)=(DamageParamName=Damage3,Scale=1.0) DamageParamScaleLevels(3)=(DamageParamName=Damage5,Scale=1.0) DamageParamScaleLevels(4)=(DamageParamName=Damage6,Scale=1.0) DamageParamScaleLevels(5)=(DamageParamName=Damage7,Scale=1.0) ScorpionHood=StaticMesh'VH_Scorpion.Mesh.S_VH_Scorpion_Hood_Damaged' BrokenBladeMesh=StaticMesh'VH_Scorpion.Mesh.S_VH_Scorpion_Broken_Blade' FlagOffset=(X=-60.0,Y=25,Z=40) SelfDestructWarningSound=SoundCue'A_Vehicle_Scorpion.SoundCues.A_Vehicle_Scorpion_DestructionWarning_Cue' SelfDestructReadyCue=SoundCue'A_Vehicle_Scorpion.SoundCues.A_Vehicle_Scorpion_EjectReadyBeep_Cue' SelfDestructEnabledSound=SoundCue'A_Vehicle_Scorpion.SoundCues.A_Vehicle_Scorpion_EngineThrustStart_Cue' SelfDestructEnabledLoop=SoundCue'A_Vehicle_Scorpion.SoundCues.A_Vehicle_Scorpion_EngineThrustLoop_Cue' ExplosionSound=SoundCue'A_Vehicle_Scorpion.SoundCues.A_Vehicle_Scorpion_Explode' //SpawnMaterialLists[0]=(Materials=(MaterialInterface'VH_Scorpion.Materials.MI_VH_Scorpion_Spawn_Red')) //SpawnMaterialLists[1]=(Materials=(MaterialInterface'VH_Scorpion.Materials.MI_VH_Scorpion_Spawn_Blue')) TeamMaterials[0]=MaterialInstanceConstant'VH_Scorpion.Materials.MI_VH_Scorpion_Red' TeamMaterials[1]=MaterialInstanceConstant'VH_Scorpion.Materials.MI_VH_Scorpion_Blue' SuspensionShiftSound=SoundCue'A_Vehicle_Generic.Vehicle.VehicleCompressD_Cue' DrivingPhysicalMaterial=PhysicalMaterial'vh_scorpion.materials.physmat_scorpiondriving' DefaultPhysicalMaterial=PhysicalMaterial'vh_scorpion.materials.physmat_scorpion' //BurnOutMaterial[0]=MaterialInterface'VH_Scorpion.Materials.MITV_VH_Scorpion_Red_BO' //BurnOutMaterial[1]=MaterialInterface'VH_Scorpion.Materials.MITV_VH_Scorpion_Blue_BO' SelfDestructExplosionTemplate=ParticleSystem'VH_Scorpion.Effects.P_VH_Scorpion_SelfDestruct' HatchGibClass=class'UTGib_ScorpionHatch' BigExplosionTemplates[0]=(Template=ParticleSystem'Envy_Effects.VH_Deaths.P_VH_Death_SMALL_Far',MinDistance=350) BigExplosionTemplates[1]=(Template=ParticleSystem'Envy_Effects.VH_Deaths.P_VH_Death_SMALL_Near') BigExplosionSocket=VH_Death HudCoords=(U=410,V=112,UL=-86,VL=109) bHasEnemyVehicleSound=true EnemyVehicleSound(0)=SoundNodeWave'A_Character_Reaper.BotStatus.A_BotStatus_Reaper_EnemyScorpion' }
and Factory class
class Factory_Mustang extends UTVehicleFactory; defaultproperties { Begin Object Name=SVehicleMesh SkeletalMesh=SkeletalMesh'VH_Scorpion.Mesh.SK_VH_Scorpion_001' Translation=(X=0.0,Y=0.0,Z=-70.0) // -60 seems about perfect for exact alignment, -70 for some 'lee way' End Object Components.Remove(Sprite) Begin Object Name=CollisionCylinder CollisionHeight=+80.0 CollisionRadius=+120.0 Translation=(X=-45.0,Y=0.0,Z=-10.0) End Object VehicleClassPath="UTGameContent.UTVehicle_Scorpion_Content" DrawScale=1.2 }
AAs you can see, pretty empty at the moment but will be a good placeholder for when we have to add multiple trains. Next I will work on attaching the trains to the spline class so that they move along the rail. Hopefully the next update will have some of Scott Taylors 3D models to show what the project will look like visually.