class TerrainInfo extends Info noexport showcategories(Movement,Collision,Lighting,LightColor,Karma,Force) native placeable; #exec Texture Import File=Textures\Terrain_info.pcx Name=S_TerrainInfo Mips=Off MASKED=1 #exec Texture Import File=Textures\S_WhiteCircle.pcx Name=S_WhiteCircle Mips=Off MASKED=1 #exec Texture Import File=Textures\Bad.pcx Name=TerrainBad Mips=Off #exec Texture Import File=Textures\DecoPaint.pcx Name=DecoPaint Mips=Off struct NormalPair { var vector Normal1; var vector Normal2; }; enum ETexMapAxis { TEXMAPAXIS_XY, TEXMAPAXIS_XZ, TEXMAPAXIS_YZ, }; enum ESortOrder { SORT_NoSort, SORT_BackToFront, SORT_FrontToBack }; struct TerrainLayer { var() Material Texture; var() Texture AlphaMap; var() float UScale; var() float VScale; var() float UPan; var() float VPan; var() ETexMapAxis TextureMapAxis; var() float TextureRotation; var() Rotator LayerRotation; var Matrix TerrainMatrix; var() float KFriction; var() float KRestitution; var transient Texture LayerWeightMap; }; struct DecorationLayer { var() int ShowOnTerrain; var() Texture ScaleMap; var() Texture DensityMap; var() Texture ColorMap; var() StaticMesh StaticMesh; var() rangevector ScaleMultiplier; var() range FadeoutRadius; var() range DensityMultiplier; var() int MaxPerQuad; var() int Seed; var() int AlignToTerrain; var() ESortOrder DrawOrder; var() int ShowOnInvisibleTerrain; var() int LitDirectional; var() int DisregardTerrainLighting; var() int RandomYaw; var() EDetailMode DetailMode; //RO JUSTIN H - GIVES MAPPERS ABILITY TO FORCE DECOLAYER RENDERING var() int ForceDraw; }; struct DecoInfo { var vector Location; var rotator Rotation; var vector Scale; var vector TempScale; var color Color; var int Distance; }; struct DecoSectorInfo { var array DecoInfo; var vector Location; var float Radius; }; struct DecorationLayerData { var array Sectors; }; var() int TerrainSectorSize; var() Texture TerrainMap; var() Texture VertexLightMap; // sjs var() vector TerrainScale; var() TerrainLayer Layers[32]; var() array DecoLayers; var() float DecoLayerOffset; var() bool Inverted; // This option means use half the graphics res for Karma collision. // Note - Karma ignores per-quad info (eg. 'invisible' and 'edge-turned') with this set to true. var() bool bKCollisionHalfRes; // // Internal data // var transient int JustLoaded; var native const array DecoLayerData; var native const array Sectors; var native const array Vertices; var native const int HeightmapX; var native const int HeightmapY; var native const int SectorsX; var native const int SectorsY; var native const TerrainPrimitive Primitive; var native const array FaceNormals; var native const vector ToWorld[4]; var native const vector ToHeightmap[4]; var native const array SelectedVertices; var native const int ShowGrid; var const array QuadVisibilityBitmap; var const array EdgeTurnBitmap; var const array QuadDomMaterialBitmap; var native const array RenderCombinations; var native const array VertexStreams; var native const array VertexColors; var native const array PaintedColor; // editor only var native const Texture CollapsedLayers; // OLD var native const Texture OldTerrainMap; var native const array OldHeightmap; // Heightmap manipulation functions native final function PokeTerrain( vector WorldLocation, int Radius, int MaxDepth ); defaultproperties { Texture=S_TerrainInfo TerrainScale=(X=64,Y=64,Z=64) bStatic=True bStaticLighting=True bWorldGeometry=true bHidden=true TerrainSectorSize=16 bKCollisionHalfRes=False bUseDynamicLights=true }