public override void Build(MetaBuilder mb, bool isRoot = false) { if (this.Direction != null) { this.MetaStructure.direction = mb.AddItemArrayPtr(MetaName.VECTOR3, this.Direction.Select(e => { e.Build(mb); return(e.MetaStructure); }).ToArray()); } MVECTOR3.AddEnumAndStructureInfo(mb); this.MetaStructure.falloff = mb.AddFloatArrayPtr(this.Falloff.ToArray()); this.MetaStructure.falloffExponent = mb.AddFloatArrayPtr(this.FalloffExponent.ToArray()); this.MetaStructure.timeAndStateFlags = mb.AddUintArrayPtr(this.TimeAndStateFlags.ToArray()); this.MetaStructure.hash = mb.AddUintArrayPtr(this.Hash.ToArray()); this.MetaStructure.coneInnerAngle = mb.AddByteArrayPtr(this.ConeInnerAngle.ToArray()); this.MetaStructure.coneOuterAngleOrCapExt = mb.AddByteArrayPtr(this.ConeOuterAngleOrCapExt.ToArray()); this.MetaStructure.coronaIntensity = mb.AddByteArrayPtr(this.CoronaIntensity.ToArray()); MCLODLight.AddEnumAndStructureInfo(mb); if (isRoot) { mb.AddItem(this.MetaName, this.MetaStructure); this.Meta = mb.GetMeta(); } }
public override void Build(MetaBuilder mb, bool isRoot = false) { this.MetaStructure.name = (uint)this.Name; this.MetaStructure.parent = (uint)this.Parent; this.MetaStructure.flags = this.Flags; this.MetaStructure.contentFlags = this.ContentFlags; this.MetaStructure.streamingExtentsMin = this.StreamingExtentsMin; this.MetaStructure.streamingExtentsMax = this.StreamingExtentsMax; this.MetaStructure.entitiesExtentsMin = this.EntitiesExtentsMin; this.MetaStructure.entitiesExtentsMax = this.EntitiesExtentsMax; // CEntityDef + CMloInstanceDef var entityPtrs = new List <MetaPOINTER>(); this.AddMetaPointers(mb, entityPtrs, MetaName.CEntityDef, Entities.Select(e => { e.Build(mb); return(e.MetaStructure); })); this.AddMetaPointers(mb, entityPtrs, MetaName.CMloInstanceDef, MloInstances.Select(e => { e.Build(mb); return(e.MetaStructure); })); this.MetaStructure.entities = mb.AddPointerArray(entityPtrs.ToArray()); // this.MetaStructure.containerLods = this.ContainerLods; if (this.BoxOccluders != null) { this.MetaStructure.boxOccluders = mb.AddItemArrayPtr((MetaName)(975711773), this.BoxOccluders.Select(e => e.MetaStructure).ToArray()); } MUnk_975711773.AddEnumAndStructureInfo(mb); if (this.OccludeModels != null) { this.MetaStructure.occludeModels = mb.AddItemArrayPtr((MetaName)(-1553183059), this.OccludeModels.Select(e => e.MetaStructure).ToArray()); } MUnk_2741784237.AddEnumAndStructureInfo(mb); this.MetaStructure.physicsDictionaries = this.PhysicsDictionaries; if (this.InstancedData != null) { this.InstancedData.Build(mb); this.MetaStructure.instancedData = this.InstancedData.MetaStructure; } Mrage__fwInstancedMapData.AddEnumAndStructureInfo(mb); if (this.TimeCycleModifiers != null) { this.MetaStructure.timeCycleModifiers = mb.AddItemArrayPtr(MetaName.CTimeCycleModifier, this.TimeCycleModifiers.Select(e => e.MetaStructure).ToArray()); } MCTimeCycleModifier.AddEnumAndStructureInfo(mb); if (this.CarGenerators != null) { this.MetaStructure.carGenerators = mb.AddItemArrayPtr(MetaName.CCarGen, this.CarGenerators.Select(e => e.MetaStructure).ToArray()); } MCCarGen.AddEnumAndStructureInfo(mb); if (this.LODLightsSOA != null) { this.LODLightsSOA.Build(mb); this.MetaStructure.LODLightsSOA = this.LODLightsSOA.MetaStructure; } MCLODLight.AddEnumAndStructureInfo(mb); if (this.DistantLODLightsSOA != null) { this.DistantLODLightsSOA.Build(mb); this.MetaStructure.DistantLODLightsSOA = this.DistantLODLightsSOA.MetaStructure; } MCDistantLODLight.AddEnumAndStructureInfo(mb); this.Block.Build(mb); this.MetaStructure.block = this.Block.MetaStructure; MCBlockDesc.AddEnumAndStructureInfo(mb); MCMapData.AddEnumAndStructureInfo(mb); if (isRoot) { mb.AddItem(this.MetaName, this.MetaStructure); this.Meta = mb.GetMeta(); } }