本文整理汇总了C#中CacheBase.GetRawFromID方法的典型用法代码示例。如果您正苦于以下问题:C# CacheBase.GetRawFromID方法的具体用法?C# CacheBase.GetRawFromID怎么用?C# CacheBase.GetRawFromID使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CacheBase
的用法示例。
在下文中一共展示了CacheBase.GetRawFromID方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: scenario_structure_bsp
public scenario_structure_bsp(CacheBase Cache, int Address)
{
cache = Cache;
EndianReader Reader = Cache.Reader;
Reader.SeekTo(Address);
#region sldt/lbsp ID
//lbsp's sections address will be used instead of the one in sbsp
int sectCount = 0, sectionAddress = 0, bbCount = 0, bbAddr = 0;
foreach (var item in Cache.IndexItems)
{
if (item.ClassCode == "scnr")
{
Reader.SeekTo(item.Offset + 160);
int cnt = Reader.ReadInt32();
int ptr = Reader.ReadInt32() - Cache.Magic;
int bspIndex = 0;
for (int i = 0; i < cnt; i++)
{
Reader.SeekTo(ptr + 336 * i + 12);
if (Cache.IndexItems.GetItemByID(Reader.ReadInt32()).Offset == Address)
{
bspIndex = i;
break;
}
}
Reader.SeekTo(item.Offset + 1896 + 12);
int sldtID = Reader.ReadInt32();
int sldtAddress = Cache.IndexItems.GetItemByID(sldtID).Offset;
Reader.SeekTo(sldtAddress + 4);
cnt = Reader.ReadInt32();
ptr = Reader.ReadInt32() - Cache.Magic;
Reader.SeekTo(ptr + 32 * bspIndex + 12);
int lbspID = Reader.ReadInt32();
int lbspAddress = Cache.IndexItems.GetItemByID(lbspID).Offset;
Reader.SeekTo(lbspAddress + 320); //320, 512, 692
sectCount = Reader.ReadInt32();
sectionAddress = Reader.ReadInt32() - Cache.Magic;
Reader.SeekTo(lbspAddress + 344); //344, 536, 716
bbCount = Reader.ReadInt32();
bbAddr = Reader.ReadInt32() - Cache.Magic;
Reader.SeekTo(lbspAddress + 464); //464, 656, 836
geomRawID = Reader.ReadInt32();
break;
}
}
#endregion
Reader.SeekTo(Address + 268);
XBounds = new Range<float>(Reader.ReadSingle(), Reader.ReadSingle());
YBounds = new Range<float>(Reader.ReadSingle(), Reader.ReadSingle());
ZBounds = new Range<float>(Reader.ReadSingle(), Reader.ReadSingle());
#region Clusters Block
Reader.SeekTo(Address + 340);
int iCount = Reader.ReadInt32();
int iOffset = Reader.ReadInt32() - Cache.Magic;
for (int i = 0; i < 1; i++)
Clusters.Add(new Cluster(Cache, iOffset + 140 * i));
#endregion
#region Shaders Block
Reader.SeekTo(Address + 352);
iCount = Reader.ReadInt32();
iOffset = Reader.ReadInt32() - Cache.Magic;
for (int i = 0; i < iCount; i++)
Shaders.Add(new Halo4Retail.render_model.Shader(Cache, iOffset + 44 * i));
#endregion
#region GeometryInstances Block
Reader.SeekTo(Address + 640);
iCount = Reader.ReadInt32();
iOffset = Reader.ReadInt32() - Cache.Magic;
for (int i = 0; i < iCount; i++)
GeomInstances.Add(new InstancedGeometry(Cache, iOffset + 4 * i));
#region Load Fixup Data
Reader.SeekTo(Address + 1364);
int id = Reader.ReadInt32();
var entry = Cache.zone.RawEntries[id & 0xFFFF];
var er = new EndianReader(new MemoryStream(Cache.GetRawFromID(id)), EndianFormat.Big);
int addr = entry.Fixups[entry.Fixups.Count - 10].Offset;
for (int i = 0; i < GeomInstances.Count; i++)
{
er.SeekTo(addr + 148 * i);
var geom = GeomInstances[i];
geom.TransformScale = er.ReadSingle();
geom.TransformMatrix = Matrix4x3.Read(er);
//.........这里部分代码省略.........