Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
 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_);
     }
 }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
 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;
 }
Esempio n. 6
0
        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);
        }
Esempio n. 7
0
        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);
        }
Esempio n. 8
0
        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]);
            }
        }
Esempio n. 9
0
        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]);
            }
        }
Esempio n. 10
0
        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);
        }
Esempio n. 11
0
        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);
        }
Esempio n. 12
0
        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);
            }
        }
Esempio n. 13
0
        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);
        }
Esempio n. 14
0
        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);
        }
Esempio n. 15
0
        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);
        }
Esempio n. 16
0
        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);
        }
Esempio n. 17
0
        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);
        }
Esempio n. 18
0
        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);
        }
Esempio n. 19
0
        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);
        }
Esempio n. 20
0
        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);
        }
Esempio n. 21
0
 public override void Write(BinaryWriter writer, object obj_)
 {
     FmbUtil.GetTypeHandler(Enum.GetUnderlyingType(obj_.GetType())).Write(writer, obj_);
 }
Esempio n. 22
0
 public override object Read(BinaryReader reader, bool xnb)
 {
     return(FmbUtil.GetTypeHandler(Enum.GetUnderlyingType(typeof(T))).Read <T>(reader, xnb));
 }