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 Parse(MetaFile meta, CLODLight CLODLight) { this.Meta = meta; this.MetaStructure = CLODLight; var _direction = MetaUtils.ConvertDataArray <VECTOR3>(meta, CLODLight.direction); List <MVECTOR3> direction = _direction?.Select(e => { var msw = new MVECTOR3(); msw.Parse(meta, e); return(msw); }).ToList(); float[] falloff = MetaUtils.ConvertDataArray <float>(meta, CLODLight.falloff.Pointer, CLODLight.falloff.Count1).ToArray(); float[] falloffExponent = MetaUtils.ConvertDataArray <float>(meta, CLODLight.falloffExponent.Pointer, CLODLight.falloffExponent.Count1).ToArray(); uint[] timeAndStateFlags = MetaUtils.ConvertDataArray <uint>(meta, CLODLight.timeAndStateFlags.Pointer, CLODLight.timeAndStateFlags.Count1).ToArray(); uint[] hash = MetaUtils.ConvertDataArray <uint>(meta, CLODLight.hash.Pointer, CLODLight.hash.Count1).ToArray(); byte[] coneInnerAngle = MetaUtils.ConvertDataArray <byte>(meta, CLODLight.coneInnerAngle.Pointer, CLODLight.coneInnerAngle.Count1).ToArray(); byte[] coneOuterAngleOrCapExt = MetaUtils.ConvertDataArray <byte>(meta, CLODLight.coneOuterAngleOrCapExt.Pointer, CLODLight.coneOuterAngleOrCapExt.Count1).ToArray(); byte[] coronaIntensity = MetaUtils.ConvertDataArray <byte>(meta, CLODLight.coronaIntensity.Pointer, CLODLight.coronaIntensity.Count1).ToArray(); Entries.Clear(); for (int i = 0; i < hash.Length; i++) { Entries.Add(new LODLightEntry() { Direction = direction[i], FallOff = falloff[i], FalloffExponent = falloffExponent[i], TimeAndStateFlags = timeAndStateFlags[i], Hash = hash[i], ConeInnerAngle = coneInnerAngle[i], ConeOuterAngleOrCapExt = coneOuterAngleOrCapExt[i], CoronaIntensity = coronaIntensity[i] }); } }
public override void Build(MetaBuilder mb, bool isRoot = false) { this.MetaStructure.x = this.X; this.MetaStructure.y = this.Y; this.MetaStructure.z = this.Z; MVECTOR3.AddEnumAndStructureInfo(mb); if (isRoot) { mb.AddItem(this.MetaName, this.MetaStructure); this.Meta = mb.GetMeta(); } }
public override void Build(MetaBuilder mb, bool isRoot = false) { if (this.Position != null) { this.MetaStructure.position = mb.AddItemArrayPtr(MetaName.VECTOR3, this.Position.Select(e => { e.Build(mb); return(e.MetaStructure); }).ToArray()); } MVECTOR3.AddEnumAndStructureInfo(mb); this.MetaStructure.RGBI = mb.AddUintArrayPtr(this.RGBI.ToArray()); this.MetaStructure.numStreetLights = this.NumStreetLights; this.MetaStructure.category = this.Category; MCDistantLODLight.AddEnumAndStructureInfo(mb); if (isRoot) { mb.AddItem(this.MetaName, this.MetaStructure); this.Meta = mb.GetMeta(); } }
public override void Parse(MetaFile meta, CDistantLODLight CDistantLODLight) { this.Meta = meta; this.MetaStructure = CDistantLODLight; var _position = MetaUtils.ConvertDataArray <VECTOR3>(meta, CDistantLODLight.position); List <MVECTOR3> position = _position?.Select(e => { var msw = new MVECTOR3(); msw.Parse(meta, e); return(msw); }).ToList(); uint[] rgbi = MetaUtils.ConvertDataArray <uint>(meta, CDistantLODLight.RGBI.Pointer, CDistantLODLight.RGBI.Count1).ToArray(); Entries.Clear(); for (int i = 0; i < position.Count; i++) { Entries.Add(new DistantLODLightEntry() { Position = position[i], RGBI = rgbi[i], }); } this.NumStreetLights = CDistantLODLight.numStreetLights; this.Category = CDistantLODLight.category; }