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); } }
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); } }
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); } }