Пример #1
0
    private void _GenerateSPSPrims(BinaryReader reader, Int32 spsOffset)
    {
        this.spsPrims.Clear();
        BattleSPS.FieldSPSPrim item = default(BattleSPS.FieldSPSPrim);
        reader.BaseStream.Seek((Int64)spsOffset, SeekOrigin.Begin);
        Camera  camera = Camera.main ? Camera.main : GameObject.Find("Battle Camera").GetComponent <BattleMapCameraController>().GetComponent <Camera>();
        Vector3 a      = camera.worldToCameraMatrix.inverse.GetColumn(3);
        Single  num    = Vector3.Distance(a, base.transform.localPosition);
        Single  num2   = 1f / (num * this.spsDistance * BattleSPS.spsK);

        if (num2 < 0.33f)
        {
            num2 = 0.33f;
        }
        for (Int32 i = 0; i < this.works.primCount; i++)
        {
            item.code  = this.works.code;
            item.tpage = this.works.tpage;
            item.clut  = this.works.clut;
            Int32 num3 = (Int32)reader.ReadSByte();
            Int32 num4 = (Int32)reader.ReadSByte();
            num3 <<= 2;
            num4   = (Int32)((Single)num4 * num2);
            num3   = (Int32)((Single)num3 * num2);
            Int32 num5 = num3 - this.works.h;
            Int32 num6 = num3 + this.works.h;
            num4 <<= 2;
            Int32 num7 = num4 - this.works.w;
            num4  += this.works.w;
            num5  &= 65535;
            num6  &= 65535;
            num7 <<= 16;
            num4 <<= 16;
            Int32toSByteConverter int32toSByteConverter = num5 | num7;
            item.v0 = new Vector3((Single)((Int32)int32toSByteConverter.SByte2 << 8 | (Int32)((Byte)int32toSByteConverter.SByte1)), (Single)((Int32)int32toSByteConverter.SByte4 << 8 | (Int32)((Byte)int32toSByteConverter.SByte3)), 0f);
            int32toSByteConverter = (num6 | num7);
            item.v1 = new Vector3((Single)((Int32)int32toSByteConverter.SByte2 << 8 | (Int32)((Byte)int32toSByteConverter.SByte1)), (Single)((Int32)int32toSByteConverter.SByte4 << 8 | (Int32)((Byte)int32toSByteConverter.SByte3)), 0f);
            int32toSByteConverter = (num5 | num4);
            item.v2 = new Vector3((Single)((Int32)int32toSByteConverter.SByte2 << 8 | (Int32)((Byte)int32toSByteConverter.SByte1)), (Single)((Int32)int32toSByteConverter.SByte4 << 8 | (Int32)((Byte)int32toSByteConverter.SByte3)), 0f);
            int32toSByteConverter = (num6 | num4);
            item.v3 = new Vector3((Single)((Int32)int32toSByteConverter.SByte2 << 8 | (Int32)((Byte)int32toSByteConverter.SByte1)), (Single)((Int32)int32toSByteConverter.SByte4 << 8 | (Int32)((Byte)int32toSByteConverter.SByte3)), 0f);
            num5    = (Int32)reader.ReadByte();
            Int64 position = reader.BaseStream.Position;
            num7   = (num5 & 15);
            num7 <<= 1;
            num7  += this.works.pt;
            reader.BaseStream.Seek((Int64)num7, SeekOrigin.Begin);
            num6 = (Int32)reader.ReadUInt16();
            Int32 num8 = (Int32)((UInt32)this.works.h >> 1);
            num7     = (num6 & 255);
            num6     = (Int32)((UInt32)num6 >> 8);
            num4     = num7 + num8;
            num8     = (Int32)((UInt32)this.works.w >> 1);
            num3     = num6 + num8;
            num6   <<= 8;
            num3   <<= 8;
            num8     = (num7 | num6);
            item.uv0 = new Vector2((Single)(num8 & 255), (Single)(num8 >> 8 & 255));
            num8     = (num4 | num6);
            item.uv1 = new Vector2((Single)(num8 & 255), (Single)(num8 >> 8 & 255));
            num8     = (num7 | num3);
            item.uv2 = new Vector2((Single)(num8 & 255), (Single)(num8 >> 8 & 255));
            num8     = (num4 | num3);
            item.uv3 = new Vector2((Single)(num8 & 255), (Single)(num8 >> 8 & 255));
            num3     = (Int32)((UInt32)num5 >> 4);
            num3   <<= 2;
            num3    += this.works.rgb;
            reader.BaseStream.Seek((Int64)num3, SeekOrigin.Begin);
            num5   = (Int32)reader.ReadUInt16();
            num7   = (Int32)reader.ReadSByte();
            num7 <<= 16;
            num5  |= num7;
            if (this.works.fade >= 0)
            {
                UInt32 num9 = (UInt32)this.works.fade;
                num7 = (num5 & 255);
                UInt32 num10 = (UInt32)num7;
                num6  = (Int32)((UInt32)num5 >> 8);
                num6 &= 255;
                UInt32 num11 = (UInt32)num6;
                num7  = (Int32)((UInt32)num5 >> 16);
                num7 &= 255;
                UInt32 num12 = (UInt32)num7;
                num10      = num10 * num9 >> 10;
                num11      = num11 * num9 >> 10;
                num12      = num12 * num9 >> 10;
                num10      = (UInt32)Mathf.Clamp(num10, -32768f, 32767f);
                num11      = (UInt32)Mathf.Clamp(num11, -32768f, 32767f);
                num12      = (UInt32)Mathf.Clamp(num12, -32768f, 32767f);
                item.color = new Color(num10 / 255f, num11 / 255f, num12 / 255f, 1f);
            }
            else
            {
                num7 = (num5 & 255);
                UInt32 num10 = (UInt32)num7;
                num6  = (Int32)((UInt32)num5 >> 8);
                num6 &= 255;
                UInt32 num11 = (UInt32)num6;
                num7  = (Int32)((UInt32)num5 >> 16);
                num7 &= 255;
                UInt32 num12 = (UInt32)num7;
                item.color = new Color(num10 / 255f, num11 / 255f, num12 / 255f, 1f);
            }
            item.otz = 0;
            this.spsPrims.Add(item);
            reader.BaseStream.Seek(position, SeekOrigin.Begin);
        }
    }
Пример #2
0
 private void _GenerateSPSPrims(BinaryReader reader, Int32 spsOffset)
 {
     this.spsPrims.Clear();
     FieldSPS.FieldSPSPrim item = default(FieldSPS.FieldSPSPrim);
     reader.BaseStream.Seek((Int64)spsOffset, SeekOrigin.Begin);
     for (Int32 i = 0; i < this.works.primCount; i++)
     {
         item.code  = this.works.code;
         item.tpage = this.works.tpage;
         item.clut  = this.works.clut;
         Int32 num  = (Int32)reader.ReadSByte();
         Int32 num2 = (Int32)reader.ReadSByte();
         num <<= 2;
         Int32 num3 = num - this.works.h;
         Int32 num4 = num + this.works.h;
         num2 <<= 2;
         Int32 num5 = num2 - this.works.w;
         num2  += this.works.w;
         num3  &= 65535;
         num4  &= 65535;
         num5 <<= 16;
         num2 <<= 16;
         Int32toSByteConverter int32toSByteConverter = num3 | num5;
         item.v0 = new Vector3((Single)((Int32)int32toSByteConverter.SByte2 << 8 | (Int32)((Byte)int32toSByteConverter.SByte1)), (Single)((Int32)int32toSByteConverter.SByte4 << 8 | (Int32)((Byte)int32toSByteConverter.SByte3)), 0f);
         int32toSByteConverter = (num4 | num5);
         item.v1 = new Vector3((Single)((Int32)int32toSByteConverter.SByte2 << 8 | (Int32)((Byte)int32toSByteConverter.SByte1)), (Single)((Int32)int32toSByteConverter.SByte4 << 8 | (Int32)((Byte)int32toSByteConverter.SByte3)), 0f);
         int32toSByteConverter = (num3 | num2);
         item.v2 = new Vector3((Single)((Int32)int32toSByteConverter.SByte2 << 8 | (Int32)((Byte)int32toSByteConverter.SByte1)), (Single)((Int32)int32toSByteConverter.SByte4 << 8 | (Int32)((Byte)int32toSByteConverter.SByte3)), 0f);
         int32toSByteConverter = (num4 | num2);
         item.v3 = new Vector3((Single)((Int32)int32toSByteConverter.SByte2 << 8 | (Int32)((Byte)int32toSByteConverter.SByte1)), (Single)((Int32)int32toSByteConverter.SByte4 << 8 | (Int32)((Byte)int32toSByteConverter.SByte3)), 0f);
         num3    = (Int32)reader.ReadByte();
         Int64 position = reader.BaseStream.Position;
         num5   = (num3 & 15);
         num5 <<= 1;
         num5  += this.works.pt;
         reader.BaseStream.Seek((Int64)num5, SeekOrigin.Begin);
         num4 = (Int32)reader.ReadUInt16();
         Int32 num6 = (Int32)((UInt32)this.works.h >> 1);
         num5     = (num4 & 255);
         num4     = (Int32)((UInt32)num4 >> 8);
         num2     = num5 + num6;
         num6     = (Int32)((UInt32)this.works.w >> 1);
         num      = num4 + num6;
         num4   <<= 8;
         num    <<= 8;
         num6     = (num5 | num4);
         item.uv0 = new Vector2((Single)(num6 & 255), (Single)(num6 >> 8 & 255));
         num6     = (num2 | num4);
         item.uv1 = new Vector2((Single)(num6 & 255), (Single)(num6 >> 8 & 255));
         num6     = (num5 | num);
         item.uv2 = new Vector2((Single)(num6 & 255), (Single)(num6 >> 8 & 255));
         num6     = (num2 | num);
         item.uv3 = new Vector2((Single)(num6 & 255), (Single)(num6 >> 8 & 255));
         num      = (Int32)((UInt32)num3 >> 4);
         num    <<= 2;
         num     += this.works.rgb;
         reader.BaseStream.Seek((Int64)num, SeekOrigin.Begin);
         num3   = (Int32)reader.ReadUInt16();
         num5   = (Int32)reader.ReadSByte();
         num5 <<= 16;
         num3  |= num5;
         if (this.works.fade >= 0)
         {
             UInt32 num7 = (UInt32)this.works.fade;
             num5 = (num3 & 255);
             UInt32 num8 = (UInt32)num5;
             num4  = (Int32)((UInt32)num3 >> 8);
             num4 &= 255;
             UInt32 num9 = (UInt32)num4;
             num5  = (Int32)((UInt32)num3 >> 16);
             num5 &= 255;
             UInt32 num10 = (UInt32)num5;
             num8  = num8 * num7 >> 12;
             num9  = num9 * num7 >> 12;
             num10 = num10 * num7 >> 12;
             num8  = (UInt32)Mathf.Clamp(num8, -32768f, 32767f);
             num9  = (UInt32)Mathf.Clamp(num9, -32768f, 32767f);
             num10 = (UInt32)Mathf.Clamp(num10, -32768f, 32767f);
             if ((FF9StateSystem.Common.FF9.fldMapNo == 2901 && (this.refNo == 644 || this.refNo == 736)) || (FF9StateSystem.Common.FF9.fldMapNo == 2913 && (this.refNo == 646 || this.refNo == 737)) || (FF9StateSystem.Common.FF9.fldMapNo == 2925 && (this.refNo == 990 || this.refNo == 988)))
             {
                 item.color = new Color(num8 / 255f, num9 / 255f, num10 / 255f, 1f);
             }
             else
             {
                 item.color = new Color(num8 / 127f, num9 / 127f, num10 / 127f, 1f);
             }
         }
         else
         {
             num5 = (num3 & 255);
             UInt32 num8 = (UInt32)num5;
             num4  = (Int32)((UInt32)num3 >> 8);
             num4 &= 255;
             UInt32 num9 = (UInt32)num4;
             num5  = (Int32)((UInt32)num3 >> 16);
             num5 &= 255;
             UInt32 num10 = (UInt32)num5;
             item.color = new Color(num8 / 127f, num9 / 127f, num10 / 127f, 1f);
         }
         item.otz = 0;
         this.spsPrims.Add(item);
         reader.BaseStream.Seek(position, SeekOrigin.Begin);
     }
 }
Пример #3
0
    private void _GenerateSPSPrims(BinaryReader reader, Int32 spsOffset)
    {
        this.spsPrims.Clear();
        WorldSPS.WorldSPSPrim item = default(WorldSPS.WorldSPSPrim);
        Int32 num  = this.works.shtsc;
        Int32 num2 = this.works.w << num;
        Int32 num3 = this.works.h << num;

        num++;
        reader.BaseStream.Seek((Int64)spsOffset, SeekOrigin.Begin);
        for (Int32 i = 0; i < this.works.primCount; i++)
        {
            item.code  = this.works.code;
            item.tpage = this.works.tpage;
            item.clut  = this.works.clut;
            Int32 num4 = (Int32)reader.ReadSByte();
            Int32 num5 = (Int32)reader.ReadSByte();
            num4 <<= 2;
            Int32 num6 = num4 - num3;
            Int32 num7 = num4 + num3;
            num5 <<= 2;
            Int32 num8 = num5 - num2;
            num5  += num2;
            num6  &= 65535;
            num7  &= 65535;
            num8 <<= 16;
            num5 <<= 16;
            Int32toSByteConverter int32toSByteConverter = num6 | num8;
            item.v0 = new Vector3((Single)((Int32)int32toSByteConverter.SByte2 << 8 | (Int32)((Byte)int32toSByteConverter.SByte1)), (Single)((Int32)int32toSByteConverter.SByte4 << 8 | (Int32)((Byte)int32toSByteConverter.SByte3)), 0f);
            int32toSByteConverter = (num7 | num8);
            item.v1 = new Vector3((Single)((Int32)int32toSByteConverter.SByte2 << 8 | (Int32)((Byte)int32toSByteConverter.SByte1)), (Single)((Int32)int32toSByteConverter.SByte4 << 8 | (Int32)((Byte)int32toSByteConverter.SByte3)), 0f);
            int32toSByteConverter = (num6 | num5);
            item.v2 = new Vector3((Single)((Int32)int32toSByteConverter.SByte2 << 8 | (Int32)((Byte)int32toSByteConverter.SByte1)), (Single)((Int32)int32toSByteConverter.SByte4 << 8 | (Int32)((Byte)int32toSByteConverter.SByte3)), 0f);
            int32toSByteConverter = (num7 | num5);
            item.v3 = new Vector3((Single)((Int32)int32toSByteConverter.SByte2 << 8 | (Int32)((Byte)int32toSByteConverter.SByte1)), (Single)((Int32)int32toSByteConverter.SByte4 << 8 | (Int32)((Byte)int32toSByteConverter.SByte3)), 0f);
            num6    = (Int32)reader.ReadByte();
            Int64 position = reader.BaseStream.Position;
            num8   = (num6 & 15);
            num8 <<= 1;
            num8  += this.works.pt;
            reader.BaseStream.Seek((Int64)num8, SeekOrigin.Begin);
            num7 = (Int32)reader.ReadUInt16();
            Int32 num9 = (Int32)((UInt32)num3 >> num);
            num8     = (num7 & 255);
            num7     = (Int32)((UInt32)num7 >> 8);
            num5     = num8 + num9;
            num9     = (Int32)((UInt32)num2 >> num);
            num4     = num7 + num9;
            num7   <<= 8;
            num4   <<= 8;
            num9     = (num8 | num7);
            item.uv0 = new Vector2((Single)(num9 & 255), (Single)(num9 >> 8 & 255));
            num9     = (num5 | num7);
            item.uv1 = new Vector2((Single)(num9 & 255), (Single)(num9 >> 8 & 255));
            num9     = (num8 | num4);
            item.uv2 = new Vector2((Single)(num9 & 255), (Single)(num9 >> 8 & 255));
            num9     = (num5 | num4);
            item.uv3 = new Vector2((Single)(num9 & 255), (Single)(num9 >> 8 & 255));
            num4     = (Int32)((UInt32)num6 >> 4);
            num4   <<= 2;
            num4    += this.works.rgb;
            reader.BaseStream.Seek((Int64)num4, SeekOrigin.Begin);
            num6   = (Int32)reader.ReadUInt16();
            num8   = (Int32)reader.ReadSByte();
            num8 <<= 16;
            num6  |= num8;
            if (this.works.fade >= 0)
            {
                UInt32 fade = (UInt32)this.works.fade;
                num8 = (num6 & 255);
                UInt32 num10 = (UInt32)num8;
                num7  = (Int32)((UInt32)num6 >> 8);
                num7 &= 255;
                UInt32 num11 = (UInt32)num7;
                num8  = (Int32)((UInt32)num6 >> 16);
                num8 &= 255;
                UInt32 num12 = (UInt32)num8;
                num10      = num10 * fade >> 12;
                num11      = num11 * fade >> 12;
                num12      = num12 * fade >> 12;
                num10      = (UInt32)Mathf.Clamp(num10, -32768f, 32767f);
                num11      = (UInt32)Mathf.Clamp(num11, -32768f, 32767f);
                num12      = (UInt32)Mathf.Clamp(num12, -32768f, 32767f);
                item.color = new Color(num10 / 127f, num11 / 127f, num12 / 127f, 1f);
            }
            else
            {
                num8 = (num6 & 255);
                UInt32 num10 = (UInt32)num8;
                num7  = (Int32)((UInt32)num6 >> 8);
                num7 &= 255;
                UInt32 num11 = (UInt32)num7;
                num8  = (Int32)((UInt32)num6 >> 16);
                num8 &= 255;
                UInt32 num12 = (UInt32)num8;
                item.color = new Color(num10 / 127f, num11 / 127f, num12 / 127f, 1f);
            }
            item.otz = 0;
            this.spsPrims.Add(item);
            reader.BaseStream.Seek(position, SeekOrigin.Begin);
        }
    }