public override void Write(BinaryWriter writer, object obj_) { BackgroundPlane obj = (BackgroundPlane)obj_; FmbUtil.GetTypeHandler <Vector3>().Write(writer, obj.Position); FmbUtil.GetTypeHandler <Quaternion>().Write(writer, obj.Rotation); FmbUtil.GetTypeHandler <Vector3>().Write(writer, obj.Scale); FmbUtil.GetTypeHandler <Vector3>().Write(writer, obj.Size); writer.Write(obj.TextureName); writer.Write(obj.LightMap); writer.Write(obj.AllowOverbrightness); FmbUtil.GetTypeHandler <Color>().Write(writer, obj.Filter); writer.Write(obj.Animated); writer.Write(obj.Doublesided); writer.Write(obj.Opacity); FmbUtil.WriteObject(writer, obj.AttachedGroup); writer.Write(obj.Billboard); writer.Write(obj.SyncWithSamples); writer.Write(obj.Crosshatch); writer.Write(false); writer.Write(obj.AlwaysOnTop); writer.Write(obj.Fullbright); writer.Write(obj.PixelatedLightmap); writer.Write(obj.XTextureRepeat); writer.Write(obj.YTextureRepeat); writer.Write(obj.ClampTexture); FmbUtil.WriteObject(writer, obj.ActorType); FmbUtil.WriteObject(writer, obj.AttachedPlane); writer.Write(obj.ParallaxFactor); }
public override object Read(BinaryReader reader, bool xnb) { Type type = typeof(T); TypeHandler handler = FmbUtil.GetTypeHandler(type); bool isValueType = type.IsValueType(); FmbHelper.Log("List: Position: " + reader.BaseStream.Position); int capacity = reader.ReadInt32(); #if DEBUG FmbHelper.Log("T: " + type.FullName); FmbHelper.Log("Capacity: " + capacity); FmbHelper.Log("XNB: " + xnb); FmbHelper.Log("T is ValueType: " + isValueType); List <T> obj = new List <T>(0); #else List <T> obj = new List <T>(capacity); #endif for (int i = 0; i < capacity; i++) { if (isValueType || !xnb) { obj.Add(handler.Read <T>(reader, xnb)); } else { int readerIndex = reader.Read7BitEncodedInt(); //FmbLib ain't no care about reader index. obj.Add(readerIndex > 0 ? handler.Read <T>(reader, xnb) : default(T)); } } return(obj); }
public override void Write(BinaryWriter writer, object obj_) { // writer.Write(obj_ != null); // FIXME this should read a boolean, but writing it kills reading if (obj_ != null) { FmbUtil.GetTypeHandler(typeof(T)).Write(writer, obj_); } }
public override void Write(BinaryWriter writer, object obj_) { Volume obj = (Volume)obj_; FmbUtil.WriteObject(writer, FmbHelper.HashSetOrListToArray <FaceOrientation>(obj.Orientations)); FmbUtil.GetTypeHandler <Vector3>().Write(writer, obj.From); FmbUtil.GetTypeHandler <Vector3>().Write(writer, obj.To); FmbUtil.WriteObject(writer, obj.ActorSettings); }
public override object Read(BinaryReader reader, bool xnb) { if (/*reader.ReadBoolean()*/ true) { // FIXME this should read a boolean, but reading it kills everything by one byte... // It's possible that reading boolean means simply checking if ID > 0, but that's already happening in FmbUtil return(FmbUtil.GetTypeHandler(typeof(T)).Read <T>(reader, xnb)); } //return null; }
public override void Write(BinaryWriter writer, object obj_) { ArtObjectInstance obj = (ArtObjectInstance)obj_; writer.Write(obj.ArtObjectName); FmbUtil.GetTypeHandler <Vector3>().Write(writer, obj.Position); FmbUtil.GetTypeHandler <Quaternion>().Write(writer, obj.Rotation); FmbUtil.GetTypeHandler <Vector3>().Write(writer, obj.Scale); FmbUtil.WriteObject(writer, obj.ActorSettings); }
public override void Write(BinaryWriter writer, object obj_) { ArtObject obj = (ArtObject)obj_; writer.Write(obj.Name); FmbUtil.WriteObject(writer, obj.Cubemap); FmbUtil.GetTypeHandler <Vector3>().Write(writer, obj.Size); FmbUtil.WriteObject(writer, obj.Geometry); FmbUtil.WriteObject(writer, obj.ActorType); writer.Write(obj.NoSihouette); }
public override void Write(BinaryWriter writer, object obj_) { T[] obj = (T[])obj_; TypeHandler handler = FmbUtil.GetTypeHandler(typeof(T)); writer.Write((uint)obj.Length); for (int i = 0; i < obj.Length; i++) { handler.Write(writer, obj[i]); } }
public override void Write(BinaryWriter writer, object obj_) { List <T> obj = (List <T>)obj_; TypeHandler handler = FmbUtil.GetTypeHandler(typeof(T)); writer.Write((int)obj.Count); for (int i = 0; i < obj.Count; i++) { handler.Write(writer, obj[i]); } }
public override void Write(BinaryWriter writer, object obj_) { TrileInstance obj = (TrileInstance)obj_; FmbUtil.GetTypeHandler <Vector3>().Write(writer, obj.Position); writer.Write(obj.TrileId); writer.Write((byte)137); writer.Write(obj.Phi); writer.Write(true); FmbUtil.WriteObject(writer, obj.ActorSettings); FmbUtil.WriteObject(writer, obj.OverlappedTriles); }
public override void Write(BinaryWriter writer, object obj_) { VolumeActorSettings obj = (VolumeActorSettings)obj_; FmbUtil.GetTypeHandler <Vector2>().Write(writer, obj.FarawayPlaneOffset); writer.Write(obj.IsPointOfInterest); FmbUtil.WriteObject(writer, obj.DotDialogue); writer.Write(obj.WaterLocked); FmbUtil.WriteObject(writer, obj.CodePattern); writer.Write(obj.IsBlackHole); writer.Write(obj.NeedsTrigger); writer.Write(obj.IsSecretPassage); }
public override void Write(BinaryWriter writer, object obj_) { Dictionary <TKey, TValue> obj = (Dictionary <TKey, TValue>)obj_; TypeHandler keyHandler = FmbUtil.GetTypeHandler(typeof(TKey)); TypeHandler valueHandler = FmbUtil.GetTypeHandler(typeof(TValue)); writer.Write((int)obj.Count); foreach (KeyValuePair <TKey, TValue> pair in obj) { keyHandler.Write(writer, pair.Key); valueHandler.Write(writer, pair.Value); } }
public override object Read(BinaryReader reader, bool xnb) { Type keyType = typeof(TKey); Type valueType = typeof(TValue); TypeHandler keyHandler = FmbUtil.GetTypeHandler(keyType); TypeHandler valueHandler = FmbUtil.GetTypeHandler(valueType); bool keyIsValueType = keyType.IsValueType(); bool valueIsValueType = valueType.IsValueType(); int capacity = reader.ReadInt32(); #if DEBUG FmbHelper.Log("TKey: " + keyType.FullName); FmbHelper.Log("TValue: " + valueType.FullName); FmbHelper.Log("Capacity: " + capacity); FmbHelper.Log("XNB: " + xnb); FmbHelper.Log("TKey is ValueType: " + keyIsValueType); FmbHelper.Log("TValue is ValueType: " + valueIsValueType); Dictionary <TKey, TValue> obj = new Dictionary <TKey, TValue>(0); #else Dictionary <TKey, TValue> obj = new Dictionary <TKey, TValue>(capacity); #endif for (int i = 0; i < capacity; i++) { TKey key; if (keyIsValueType || !xnb) { key = keyHandler.Read <TKey>(reader, xnb); } else { int readerIndex = reader.ReadByte(); //FmbLib ain't no care about reader index. key = readerIndex > 0 ? keyHandler.Read <TKey>(reader, xnb) : default(TKey); } TValue value; if (valueIsValueType || !xnb) { value = valueHandler.Read <TValue>(reader, xnb); } else { int readerIndex = reader.ReadByte(); //FmbLib ain't no care about reader index. value = readerIndex > 0 ? valueHandler.Read <TValue>(reader, xnb) : default(TValue); } obj.Add(key, value); } return(obj); }
public override void Write(BinaryWriter writer, object obj_) { NpcInstance obj = (NpcInstance)obj_; writer.Write(obj.Name); FmbUtil.GetTypeHandler <Vector3>().Write(writer, obj.Position); FmbUtil.GetTypeHandler <Vector3>().Write(writer, obj.DestinationOffset); writer.Write(obj.WalkSpeed); writer.Write(obj.RandomizeSpeech); writer.Write(obj.SayFirstSpeechLineOnce); writer.Write(obj.AvoidsGomez); FmbUtil.WriteObject(writer, obj.ActorType); FmbUtil.WriteObject(writer, obj.Speech); FmbUtil.WriteObject(writer, obj.Actions); }
public override void Write(BinaryWriter writer, object obj_) { VertexPositionNormalTextureInstance obj = (VertexPositionNormalTextureInstance)obj_; FmbUtil.GetTypeHandler <Vector3>().Write(writer, obj.Position); for (int i = 0; i < VertexPositionNormalTextureInstance.ByteToNormal.Length; i++) { if (obj.Normal == VertexPositionNormalTextureInstance.ByteToNormal[i]) { writer.Write((byte)i); break; } } FmbUtil.GetTypeHandler <Vector2>().Write(writer, obj.TextureCoordinate); }
public override void Write(BinaryWriter writer, object obj_) { PathSegment obj = (PathSegment)obj_; FmbUtil.GetTypeHandler <Vector3>().Write(writer, obj.Destination); FmbUtil.WriteObject(writer, obj.Duration); FmbUtil.WriteObject(writer, obj.WaitTimeOnStart); FmbUtil.WriteObject(writer, obj.WaitTimeOnFinish); writer.Write(obj.Acceleration); writer.Write(obj.Deceleration); writer.Write(obj.JitterFactor); FmbUtil.GetTypeHandler <Quaternion>().Write(writer, obj.Orientation); writer.Write(true); FmbUtil.WriteObject(writer, obj.CustomData); }
public override void Write(BinaryWriter writer, object obj_) { Level obj = (Level)obj_; FmbHelper.Log("debug: Level: Name: " + obj.Name); FmbUtil.WriteObject(writer, obj.Name); FmbUtil.GetTypeHandler <Vector3>().Write(writer, obj.Size); FmbUtil.WriteObject(writer, obj.StartingPosition); FmbHelper.Log("debug: Level: SequenceSamplesPath: " + obj.SequenceSamplesPath); FmbUtil.WriteObject(writer, obj.SequenceSamplesPath); writer.Write(obj.Flat); writer.Write(obj.SkipPostProcess); writer.Write(obj.BaseDiffuse); writer.Write(obj.BaseAmbient); FmbHelper.Log("debug: Level: GomezHaloName: " + obj.GomezHaloName); FmbUtil.WriteObject(writer, obj.GomezHaloName); writer.Write(obj.HaloFiltering); writer.Write(obj.BlinkingAlpha); writer.Write(obj.Loops); FmbUtil.WriteObject(writer, obj.WaterType); writer.Write(obj.WaterHeight); writer.Write(obj.SkyName); FmbHelper.Log("debug: Level: TrileSetName: " + obj.TrileSetName); FmbUtil.WriteObject(writer, obj.TrileSetName); FmbUtil.WriteObject(writer, obj.Volumes); FmbUtil.WriteObject(writer, obj.Scripts); FmbUtil.WriteObject(writer, obj.SongName); writer.Write(obj.FAPFadeOutStart); writer.Write(obj.FAPFadeOutLength); FmbUtil.WriteObject(writer, obj.Triles); FmbUtil.WriteObject(writer, obj.ArtObjects); FmbUtil.WriteObject(writer, obj.BackgroundPlanes); FmbUtil.WriteObject(writer, obj.Groups); FmbUtil.WriteObject(writer, obj.NonPlayerCharacters); FmbUtil.WriteObject(writer, obj.Paths); writer.Write(obj.Descending); writer.Write(obj.Rainy); writer.Write(obj.LowPass); FmbUtil.WriteObject(writer, obj.MutedLoops); FmbUtil.WriteObject(writer, obj.AmbienceTracks); FmbUtil.WriteObject(writer, obj.NodeType); writer.Write(obj.Quantum); }
public override void Write(BinaryWriter writer, object obj_) { Trile obj = (Trile)obj_; writer.Write(obj.Name); writer.Write(obj.CubemapPath); FmbUtil.GetTypeHandler <Vector3>().Write(writer, obj.Size); FmbUtil.GetTypeHandler <Vector3>().Write(writer, obj.Offset); writer.Write(obj.Immaterial); writer.Write(obj.SeeThrough); writer.Write(obj.Thin); writer.Write(obj.ForceHugging); FmbUtil.WriteObject(writer, obj.Faces); FmbUtil.WriteObject(writer, obj.Geometry); FmbUtil.WriteObject(writer, obj.ActorSettings.Type); FmbUtil.WriteObject(writer, obj.ActorSettings.Face); FmbUtil.WriteObject(writer, obj.SurfaceType); FmbUtil.GetTypeHandler <Vector2>().Write(writer, obj.AtlasOffset); }
public override void Write(BinaryWriter writer, object obj_) { ArtObjectActorSettings obj = (ArtObjectActorSettings)obj_; writer.Write(obj.Inactive); FmbUtil.WriteObject(writer, obj.ContainedTrile); FmbUtil.WriteObject(writer, obj.AttachedGroup); FmbUtil.WriteObject(writer, obj.SpinView); writer.Write(obj.SpinEvery); writer.Write(obj.SpinOffset); writer.Write(obj.OffCenter); FmbUtil.GetTypeHandler <Vector3>().Write(writer, obj.RotationCenter); FmbUtil.WriteObject(writer, obj.VibrationPattern); FmbUtil.WriteObject(writer, obj.CodePattern); FmbUtil.WriteObject(writer, obj.Segment); FmbUtil.WriteObject(writer, obj.NextNode); FmbUtil.WriteObject(writer, obj.DestinationLevel); FmbUtil.WriteObject(writer, obj.TreasureMapName); FmbUtil.WriteObject(writer, FmbHelper.HashSetOrListToArray <FaceOrientation>(obj.InvisibleSides)); writer.Write(obj.TimeswitchWindBackSpeed); }
public override void Write(BinaryWriter writer, object obj_) { TrileGroup obj = (TrileGroup)obj_; FmbUtil.WriteObject(writer, obj.Triles); FmbUtil.WriteObject(writer, obj.Path); writer.Write(obj.Heavy); FmbUtil.WriteObject(writer, obj.ActorType); writer.Write(obj.GeyserOffset); writer.Write(obj.GeyserPauseFor); writer.Write(obj.GeyserLiftFor); writer.Write(obj.GeyserApexHeight); FmbUtil.GetTypeHandler <Vector3>().Write(writer, obj.SpinCenter); writer.Write(obj.SpinClockwise); writer.Write(obj.SpinFrequency); writer.Write(obj.SpinNeedsTriggering); writer.Write(obj.Spin180Degrees); writer.Write(obj.FallOnRotate); writer.Write(obj.SpinOffset); FmbUtil.WriteObject(writer, obj.AssociatedSound); }
public override void Write(BinaryWriter writer, object obj_) { FmbUtil.GetTypeHandler(Enum.GetUnderlyingType(obj_.GetType())).Write(writer, obj_); }
public override object Read(BinaryReader reader, bool xnb) { return(FmbUtil.GetTypeHandler(Enum.GetUnderlyingType(typeof(T))).Read <T>(reader, xnb)); }