示例#1
0
        internal Samples(SBR block)
        {
            block.VerifyID(TokenID.Terrain_Samples);
            while (!block.EndOfBlock())
            {
                using (SBR subBlock = block.ReadSubBlock())
                {
                    switch (subBlock.ID)
                    {
                    case TokenID.Terrain_NSamples:
                        SampleCount = subBlock.ReadInt();
                        break;

                    case TokenID.Terrain_Sample_Rotation:
                        SampleRotation = subBlock.ReadFloat();
                        break;

                    case TokenID.Terrain_Sample_Floor:
                        SampleFloor = subBlock.ReadFloat();
                        break;

                    case TokenID.Terrain_Sample_Scale:
                        SampleScale = subBlock.ReadFloat();
                        break;

                    case TokenID.Terrain_Sample_Size:
                        SampleSize = subBlock.ReadFloat();
                        break;

                    case TokenID.Terrain_Sample_YBuffer:
                        SampleBufferY = subBlock.ReadString();
                        break;

                    case TokenID.Terrain_Sample_EBuffer:
                        SampleBufferE = subBlock.ReadString();
                        break;

                    case TokenID.Terrain_Sample_NBuffer:
                        SampleBufferN = subBlock.ReadString();
                        break;

                    case TokenID.Terrain_Sample_AsBuffer:
                        subBlock.Skip();     // TODO parse this
                        break;

                    case TokenID.Terrain_Sample_FBuffer:
                        subBlock.Skip();     // TODO parse this
                        break;

                    case (TokenID)282:      // TODO figure out what this is and handle it
                        subBlock.Skip();
                        break;

                    default:
                        throw new InvalidDataException("Unknown token " + subBlock.ID.ToString());
                    }
                }
            }
        }
示例#2
0
        protected virtual void AddOrModifyObj(SBR subBlock, PositionHolder holder)
        {
            switch (subBlock.ID)
            {
            case TokenID.FileName:
                FileName = subBlock.ReadString(); break;

            case TokenID.Position:
                //Position = new STFPositionItem(subBlock);
                ReadLocation(subBlock, holder);
                break;

            case TokenID.QDirection:
                //QDirection = new STFQDirectionItem(subBlock);
                ReadDirection(subBlock, holder);
                break;

            case TokenID.Matrix3x3:
                //Matrix3x3 = ReadMatrix3x3(subBlock);
                ReadPosition(subBlock, holder);
                break;

            case TokenID.VDbId:
                ViewDbId = subBlock.ReadUInt(); break;

            case TokenID.StaticFlags:
                StaticFlags = subBlock.ReadFlags(); break;

            default:
                subBlock.Skip(); break;
            }
        }
示例#3
0
        public terrain_shader(SBR block)
        {
            block.VerifyID(TokenID.terrain_shader);
            ShaderName = block.ReadString();
            while (!block.EndOfBlock())
            {
                using (var subBlock = block.ReadSubBlock())
                {
                    switch (subBlock.ID)
                    {
                    case TokenID.terrain_texslots:
                        terrain_texslots = new terrain_texslot[subBlock.ReadUInt()];
                        for (var i = 0; i < terrain_texslots.Length; ++i)
                        {
                            terrain_texslots[i] = new terrain_texslot(subBlock.ReadSubBlock());
                        }
                        break;

                    case TokenID.terrain_uvcalcs:
                        terrain_uvcalcs = new terrain_uvcalc[subBlock.ReadUInt()];
                        for (var i = 0; i < terrain_uvcalcs.Length; ++i)
                        {
                            terrain_uvcalcs[i] = new terrain_uvcalc(subBlock.ReadSubBlock());
                        }
                        break;

                    default:
                        break;
                    }
                }
            }
        }
示例#4
0
        internal Shader(SBR block)
        {
            block.VerifyID(TokenID.Terrain_Shader);
            Name = block.ReadString();
            while (!block.EndOfBlock())
            {
                using (SBR subBlock = block.ReadSubBlock())
                {
                    switch (subBlock.ID)
                    {
                    case TokenID.Terrain_TexSlots:
                        int size = (int)subBlock.ReadUInt();
                        Textureslots = new List <TextureSlot>(size);
                        for (int i = 0; i < size; ++i)
                        {
                            Textureslots.Add(new TextureSlot(subBlock.ReadSubBlock()));
                        }
                        break;

                    case TokenID.Terrain_UVCalcs:
                        size    = (int)subBlock.ReadUInt();
                        UVCalcs = new List <UVCalc>(size);
                        for (int i = 0; i < size; ++i)
                        {
                            UVCalcs.Add(new UVCalc(subBlock.ReadSubBlock()));
                        }
                        break;

                    default:
                        break;
                    }
                }
            }
        }
示例#5
0
        public Shader(SBR block)
        {
            block.VerifyID(TokenID.Terrain_Shader);
            Name = block.ReadString();
            while (!block.EndOfBlock())
            {
                using (var subBlock = block.ReadSubBlock())
                {
                    switch (subBlock.ID)
                    {
                    case TokenID.Terrain_TexSlots:
                        Textureslots = new TextureSlot[subBlock.ReadUInt()];
                        for (var i = 0; i < Textureslots.Length; ++i)
                        {
                            Textureslots[i] = new TextureSlot(subBlock.ReadSubBlock());
                        }
                        break;

                    case TokenID.Terrain_UVCalcs:
                        UVCalcs = new UVCalc[subBlock.ReadUInt()];
                        for (var i = 0; i < UVCalcs.Length; ++i)
                        {
                            UVCalcs[i] = new UVCalc(subBlock.ReadSubBlock());
                        }
                        break;

                    default:
                        break;
                    }
                }
            }
        }
示例#6
0
 public terrain_texslot(SBR block)
 {
     block.VerifyID(TokenID.terrain_texslot);
     Filename = block.ReadString();
     A        = block.ReadInt();
     B        = block.ReadInt();
     block.Skip();
 }
示例#7
0
 internal TextureSlot(SBR block)
 {
     block.VerifyID(TokenID.Terrain_TexSlot);
     FileName = block.ReadString();
     A        = block.ReadInt();
     B        = block.ReadInt();
     block.Skip();
 }
示例#8
0
        internal ImageNames(SBR block)
        {
            block.VerifyID(TokenID.Images);
            int count = Capacity = block.ReadInt();

            while (count-- > 0)
            {
                SBR subBlock = block.ReadSubBlock();
                subBlock.VerifyID(TokenID.Image);
                Add(subBlock.ReadString());
                subBlock.VerifyEndOfBlock();
            }
            block.VerifyEndOfBlock();
        }
示例#9
0
        internal TextureFilterNames(SBR block)
        {
            block.VerifyID(TokenID.Texture_Filter_Names);
            int count = Capacity = block.ReadInt();

            while (count-- > 0)
            {
                SBR subBlock = block.ReadSubBlock();
                subBlock.VerifyID(TokenID.Named_Filter_Mode);
                Add(subBlock.ReadString());
                subBlock.VerifyEndOfBlock();
            }
            block.VerifyEndOfBlock();
        }
示例#10
0
        internal ShaderNames(SBR block)
        {
            block.VerifyID(TokenID.Shader_Names);
            int count = Capacity = block.ReadInt();

            while (count-- > 0)
            {
                SBR subBlock = block.ReadSubBlock();
                subBlock.VerifyID(TokenID.Named_Shader);
                Add(subBlock.ReadString());
                subBlock.VerifyEndOfBlock();
            }
            block.VerifyEndOfBlock();
        }
示例#11
0
        protected override void AddOrModifyObj(SBR subBlock, PositionHolder holder)
        {
            switch (subBlock.ID)
            {
            case TokenID.Speed_Digit_Tex: TextureFile = subBlock.ReadString(); break;

            case TokenID.Speed_Sign_Shape: ReadSpeedSignShape(subBlock); break;

            case TokenID.Speed_Text_Size: TextSize = new TextData(subBlock); break;

            case TokenID.TrItemId: TrackItemIds.Add(subBlock); break;

            default: base.AddOrModifyObj(subBlock, holder); break;
            }
        }
示例#12
0
        protected override void AddOrModifyObj(SBR subBlock, PositionHolder holder)
        {
            switch (subBlock.ID)
            {
            case TokenID.CarFrequency: CarFrequency = subBlock.ReadFloat(); break;

            case TokenID.CarAvSpeed: CarAverageSpeed = subBlock.ReadFloat(); break;

            case TokenID.OrtsListName: ListName = subBlock.ReadString(); break;

            case TokenID.TrItemId: TrackItemIds.Add(subBlock); break;

            default: base.AddOrModifyObj(subBlock, holder); break;
            }
        }
示例#13
0
        protected override void AddOrModifyObj(SBR subBlock, PositionHolder holder)
        {
            switch (subBlock.ID)
            {
            case TokenID.TreeTexture: TreeTexture = subBlock.ReadString(); break;

            case TokenID.ScaleRange: ScaleRange = new Range(subBlock, subBlock.ID); break;

            case TokenID.Area: ForestArea = new Size2D(subBlock, subBlock.ID); break;

            case TokenID.Population: Population = subBlock.ReadInt(); break;

            case TokenID.TreeSize: TreeSize = new Size2D(subBlock, subBlock.ID); break;

            default: base.AddOrModifyObj(subBlock, holder); break;
            }
        }
示例#14
0
        protected override void AddOrModifyObj(SBR subBlock, PositionHolder holder)
        {
            switch (subBlock.ID)
            {
            case TokenID.LevelCrParameters: ReadCrossingParameters(subBlock); break;

            case TokenID.CrashProbability: CrashProbability = subBlock.ReadInt(); break;

            case TokenID.LevelCrData: ReadCrossingData(subBlock); break;

            case TokenID.LevelCrTiming: ReadCrossingTiming(subBlock); break;

            case TokenID.TrItemId: TrackItemIds.Add(subBlock); break;

            case TokenID.OrtsSoundFileName: SoundFileName = subBlock.ReadString(); break;

            default: base.AddOrModifyObj(subBlock, holder); break;
            }
        }