예제 #1
0
    void iterate()
    {
        foreach(GameObject building in buildings){
            bounds = building.collider.bounds.size;
            center = building.transform.position;
            //print("building is " + bounds + " " + center);

            radius = Mathf.Max(bounds.x,bounds.y)/2.0;

            ObjectBounds current = new ObjectBounds(building, center,bounds,radius);

            worldColliders.addObject(current);
        }
    }
예제 #2
0
 public override void WriteData(ESPWriter writer)
 {
     if (EditorID != null)
     {
         EditorID.WriteBinary(writer);
     }
     if (ObjectBounds != null)
     {
         ObjectBounds.WriteBinary(writer);
     }
     if (Name != null)
     {
         Name.WriteBinary(writer);
     }
     if (Model != null)
     {
         Model.WriteBinary(writer);
     }
     if (Script != null)
     {
         Script.WriteBinary(writer);
     }
     if (Destructable != null)
     {
         Destructable.WriteBinary(writer);
     }
     if (OpenSound != null)
     {
         OpenSound.WriteBinary(writer);
     }
     if (CloseSound != null)
     {
         CloseSound.WriteBinary(writer);
     }
     if (LoopingSound != null)
     {
         LoopingSound.WriteBinary(writer);
     }
     if (DoorFlags != null)
     {
         DoorFlags.WriteBinary(writer);
     }
 }
예제 #3
0
 public override void WriteData(ESPWriter writer)
 {
     if (EditorID != null)
     {
         EditorID.WriteBinary(writer);
     }
     if (ObjectBounds != null)
     {
         ObjectBounds.WriteBinary(writer);
     }
     if (BaseImage_Transparency != null)
     {
         BaseImage_Transparency.WriteBinary(writer);
     }
     if (NormalMap_Specular != null)
     {
         NormalMap_Specular.WriteBinary(writer);
     }
     if (EnvironmentMapMask != null)
     {
         EnvironmentMapMask.WriteBinary(writer);
     }
     if (GlowMap != null)
     {
         GlowMap.WriteBinary(writer);
     }
     if (ParallaxMap != null)
     {
         ParallaxMap.WriteBinary(writer);
     }
     if (EnvironmentMap != null)
     {
         EnvironmentMap.WriteBinary(writer);
     }
     if (DecalData != null)
     {
         DecalData.WriteBinary(writer);
     }
     if (TextureSetFlags != null)
     {
         TextureSetFlags.WriteBinary(writer);
     }
 }
예제 #4
0
        public override void ProcessObjects(TerrainWrapper terrainWrapper, LayerBase baseLayer, int stencilKey)
        {
            var layer = baseLayer as MMTerrainLayer;

            if (layer == null)
            {
                Debug.LogWarning(string.Format("Attempted to write {0} to incorrect layer type! Expected Layer {1} to be {2}, but it was {3}", name, baseLayer.name, GetLayerType(), baseLayer.GetType()), this);
                return;
            }
            var regex        = new Regex(IgnoredObjectsRegex ?? string.Empty);
            var objectBounds = GetObjectBounds();

            stencilKey = GetPriority();
            var objects = terrainWrapper.GetCompoundObjects(layer);

            objectBounds = new ObjectBounds(objectBounds.center, new Vector3(objectBounds.extents.x, 5000, objectBounds.extents.z), objectBounds.Rotation);
            foreach (var prefabObjectData in objects)
            {
                if (!string.IsNullOrEmpty(IgnoredObjectsRegex) && regex.IsMatch(prefabObjectData.Prefab.name))
                {
                    continue;
                }

                var worldPos = terrainWrapper.Terrain.TreeToWorldPos(prefabObjectData.Position);
                worldPos = new Vector3(worldPos.x, objectBounds.center.y, worldPos.z);
                if (!objectBounds.Contains(new Vector3(worldPos.x, objectBounds.center.y, worldPos.z)))
                {
                    continue;
                }

                var localPos = Quaternion.Inverse(objectBounds.Rotation) * (worldPos - objectBounds.min);
                var xDist    = localPos.x / objectBounds.size.x;
                var zDist    = localPos.z / objectBounds.size.z;

                float falloff = GetFalloff(new Vector2(xDist, zDist));
                if (falloff > .5f)
                {
                    layer.ObjectRemovals.Add(prefabObjectData.Guid);
                }
            }
        }
예제 #5
0
        public override void ReadDataXML(XElement ele, ElderScrollsPlugin master)
        {
            XElement subEle;

            if (ele.TryPathTo("EditorID", false, out subEle))
            {
                if (EditorID == null)
                {
                    EditorID = new SimpleSubrecord <String>();
                }

                EditorID.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("ObjectBounds", false, out subEle))
            {
                if (ObjectBounds == null)
                {
                    ObjectBounds = new ObjectBounds();
                }

                ObjectBounds.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("Model", false, out subEle))
            {
                if (Model == null)
                {
                    Model = new Model();
                }

                Model.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("Data", false, out subEle))
            {
                if (Data == null)
                {
                    Data = new GrassData();
                }

                Data.ReadXML(subEle, master);
            }
        }
예제 #6
0
 public NonPlayerCharacter()
 {
     EditorID                  = new SimpleSubrecord <String>("EDID");
     ObjectBounds              = new ObjectBounds("OBND");
     Model                     = new Model();
     BaseStats                 = new NPCBaseStats("ACBS");
     VoiceType                 = new RecordReference("VTCK");
     Race                      = new RecordReference("RNAM");
     UnarmedAttackAnimation    = new SimpleSubrecord <UInt16>("EAMT");
     AIData                    = new AIData("AIDT");
     Class                     = new RecordReference("CNAM");
     Data                      = new NPCData("DATA");
     HairColor                 = new SimpleSubrecord <Color>("HCLR");
     ImpactMaterialType        = new SimpleSubrecord <MaterialTypeUInt>("NAM4");
     FaceGenGeometrySymmetric  = new SimpleSubrecord <byte[]>("FGGS", new byte[4]);
     FaceGenGeometryAsymmetric = new SimpleSubrecord <byte[]>("FGGA", new byte[4]);
     FaceGenTexture            = new SimpleSubrecord <byte[]>("FGTS", new byte[4]);
     Unknown                   = new SimpleSubrecord <UInt16>("NAM5");
     Height                    = new SimpleSubrecord <Single>("NAM6");
     Weight                    = new SimpleSubrecord <Single>("NAM7");
 }
예제 #7
0
 public NonPlayerCharacter(SimpleSubrecord <String> EditorID, ObjectBounds ObjectBounds, SimpleSubrecord <String> Name, Model Model, NPCBaseStats BaseStats, List <FactionMembership> Factions, RecordReference DeathItem, RecordReference VoiceType, RecordReference Template, RecordReference Race, List <RecordReference> ActorEffects, RecordReference UnarmedAttackEffect, SimpleSubrecord <UInt16> UnarmedAttackAnimation, Destructable Destructable, RecordReference Script, List <InventoryItem> Contents, AIData AIData, List <RecordReference> Packages, RecordReference Class, NPCData Data, NPCSkills Skills, List <RecordReference> HeadParts, RecordReference HairType, SimpleSubrecord <Single> HairLength, RecordReference Eyes, SimpleSubrecord <Color> HairColor, RecordReference CombatStyle, SimpleSubrecord <MaterialTypeUInt> ImpactMaterialType, SimpleSubrecord <Byte[]> FaceGenGeometrySymmetric, SimpleSubrecord <Byte[]> FaceGenGeometryAsymmetric, SimpleSubrecord <Byte[]> FaceGenTexture, SimpleSubrecord <UInt16> Unknown, SimpleSubrecord <Single> Height, SimpleSubrecord <Single> Weight)
 {
     this.EditorID                  = EditorID;
     this.ObjectBounds              = ObjectBounds;
     this.Model                     = Model;
     this.BaseStats                 = BaseStats;
     this.VoiceType                 = VoiceType;
     this.Race                      = Race;
     this.UnarmedAttackAnimation    = UnarmedAttackAnimation;
     this.AIData                    = AIData;
     this.Class                     = Class;
     this.Data                      = Data;
     this.HairColor                 = HairColor;
     this.ImpactMaterialType        = ImpactMaterialType;
     this.FaceGenGeometrySymmetric  = FaceGenGeometrySymmetric;
     this.FaceGenGeometryAsymmetric = FaceGenGeometryAsymmetric;
     this.FaceGenTexture            = FaceGenTexture;
     this.Unknown                   = Unknown;
     this.Height                    = Height;
     this.Weight                    = Weight;
 }
예제 #8
0
        public override void WriteDataXML(XElement ele, ElderScrollsPlugin master)
        {
            XElement subEle;

            if (EditorID != null)
            {
                ele.TryPathTo("EditorID", true, out subEle);
                EditorID.WriteXML(subEle, master);
            }
            if (ObjectBounds != null)
            {
                ele.TryPathTo("ObjectBounds", true, out subEle);
                ObjectBounds.WriteXML(subEle, master);
            }
            if (Name != null)
            {
                ele.TryPathTo("Name", true, out subEle);
                Name.WriteXML(subEle, master);
            }
            if (Model != null)
            {
                ele.TryPathTo("Model", true, out subEle);
                Model.WriteXML(subEle, master);
            }
            if (Destructable != null)
            {
                ele.TryPathTo("Destructable", true, out subEle);
                Destructable.WriteXML(subEle, master);
            }
            if (Unknown != null)
            {
                ele.TryPathTo("Unknown", true, out subEle);
                Unknown.WriteXML(subEle, master);
            }
            if (Sound != null)
            {
                ele.TryPathTo("Sound", true, out subEle);
                Sound.WriteXML(subEle, master);
            }
        }
예제 #9
0
        public override void WriteDataXML(XElement ele, ElderScrollsPlugin master)
        {
            XElement subEle;

            if (EditorID != null)
            {
                ele.TryPathTo("EditorID", true, out subEle);
                EditorID.WriteXML(subEle, master);
            }
            if (ObjectBounds != null)
            {
                ele.TryPathTo("ObjectBounds", true, out subEle);
                ObjectBounds.WriteXML(subEle, master);
            }
            if (Name != null)
            {
                ele.TryPathTo("Name", true, out subEle);
                Name.WriteXML(subEle, master);
            }
            if (Model != null)
            {
                ele.TryPathTo("Model", true, out subEle);
                Model.WriteXML(subEle, master);
            }
            if (Script != null)
            {
                ele.TryPathTo("Script", true, out subEle);
                Script.WriteXML(subEle, master);
            }
            if (Destructable != null)
            {
                ele.TryPathTo("Destructable", true, out subEle);
                Destructable.WriteXML(subEle, master);
            }
            if (MarkerFlags != null)
            {
                ele.TryPathTo("MarkerFlags", true, out subEle);
                MarkerFlags.WriteXML(subEle, master);
            }
        }
예제 #10
0
    public void OnSceneGUI()
    {
        ObjectBounds guiTarget = (ObjectBounds)target;

        // If there is no shape, don't draw anything.
        if (guiTarget == null || guiTarget.shapes == null)
        {
            return;
        }

        // For each shape in the object bounds
        foreach (Shape s in guiTarget.shapes)
        {
            // For each point in the shape
            for (int i = 0; i < s.points.Length; i++)
            {
                // Draw a GUI handle on the point
                Vector3 handleDirection = Vector3.up;
                Vector3 worldSpacePos   = guiTarget.transform.position + new Vector3(s.points[i].x, 0.0f, s.points[i].y);

                Handles.color = Color.blue;

                EditorGUI.BeginChangeCheck();

                // New point position
                Vector3 vertexPos =
                    Handles.FreeMoveHandle(worldSpacePos, Quaternion.identity, 1.0f, Vector3.zero, Handles.DotHandleCap);

                if (EditorGUI.EndChangeCheck())
                {
                    // Allows undo commands to undo vertex placement
                    Undo.RecordObject(guiTarget, "Modify shape vertex");

                    // Set the point to the handle position if the handle is moved
                    vertexPos  -= guiTarget.transform.position;
                    s.points[i] = new Vector2(vertexPos.x, vertexPos.z);
                }
            }
        }
    }
예제 #11
0
 public override void WriteData(ESPWriter writer)
 {
     if (EditorID != null)
     {
         EditorID.WriteBinary(writer);
     }
     if (ObjectBounds != null)
     {
         ObjectBounds.WriteBinary(writer);
     }
     if (Name != null)
     {
         Name.WriteBinary(writer);
     }
     if (Model != null)
     {
         Model.WriteBinary(writer);
     }
     if (LargeIcon != null)
     {
         LargeIcon.WriteBinary(writer);
     }
     if (SmallIcon != null)
     {
         SmallIcon.WriteBinary(writer);
     }
     if (PickUpSound != null)
     {
         PickUpSound.WriteBinary(writer);
     }
     if (DropSound != null)
     {
         DropSound.WriteBinary(writer);
     }
     if (AbsoluteValue != null)
     {
         AbsoluteValue.WriteBinary(writer);
     }
 }
예제 #12
0
 public override void WriteData(ESPWriter writer)
 {
     if (EditorID != null)
     {
         EditorID.WriteBinary(writer);
     }
     if (ObjectBounds != null)
     {
         ObjectBounds.WriteBinary(writer);
     }
     if (Name != null)
     {
         Name.WriteBinary(writer);
     }
     if (Model != null)
     {
         Model.WriteBinary(writer);
     }
     if (Destructable != null)
     {
         Destructable.WriteBinary(writer);
     }
     if (ProjectileData != null)
     {
         ProjectileData.WriteBinary(writer);
     }
     if (MuzzleFlashModelFilename != null)
     {
         MuzzleFlashModelFilename.WriteBinary(writer);
     }
     if (MuzzleFlashModelTextureHash != null)
     {
         MuzzleFlashModelTextureHash.WriteBinary(writer);
     }
     if (SoundLevel != null)
     {
         SoundLevel.WriteBinary(writer);
     }
 }
예제 #13
0
 public override void WriteData(ESPWriter writer)
 {
     if (EditorID != null)
     {
         EditorID.WriteBinary(writer);
     }
     if (ObjectBounds != null)
     {
         ObjectBounds.WriteBinary(writer);
     }
     if (Filename != null)
     {
         Filename.WriteBinary(writer);
     }
     if (RandomChance != null)
     {
         RandomChance.WriteBinary(writer);
     }
     if (SoundData != null)
     {
         SoundData.WriteBinary(writer);
     }
     if (SoundDataShort != null)
     {
         SoundDataShort.WriteBinary(writer);
     }
     if (AttenuationCurve != null)
     {
         AttenuationCurve.WriteBinary(writer);
     }
     if (ReverbAttenuationControl != null)
     {
         ReverbAttenuationControl.WriteBinary(writer);
     }
     if (SoundPriority != null)
     {
         SoundPriority.WriteBinary(writer);
     }
 }
예제 #14
0
 public override void WriteData(ESPWriter writer)
 {
     if (EditorID != null)
     {
         EditorID.WriteBinary(writer);
     }
     if (ObjectBounds != null)
     {
         ObjectBounds.WriteBinary(writer);
     }
     if (Name != null)
     {
         Name.WriteBinary(writer);
     }
     if (Model != null)
     {
         Model.WriteBinary(writer);
     }
     if (Script != null)
     {
         Script.WriteBinary(writer);
     }
     if (Destructable != null)
     {
         Destructable.WriteBinary(writer);
     }
     if (LoopingSound != null)
     {
         LoopingSound.WriteBinary(writer);
     }
     if (VoiceType != null)
     {
         VoiceType.WriteBinary(writer);
     }
     if (RadioTemplate != null)
     {
         RadioTemplate.WriteBinary(writer);
     }
 }
예제 #15
0
        public void CalculateBounds()
        {
            float maxWidth  = 0;
            float maxHeight = 0;

            for (int i = 0; i < transform.childCount; i++)
            {
                Transform child  = transform.GetChild(i);
                float     height = ObjectBounds.WorldHeight(child.gameObject);
                float     width  = ObjectBounds.WorldWidth(child.gameObject);

                if (width > maxWidth)
                {
                    maxWidth = width;
                }
                if (height > maxHeight)
                {
                    maxHeight = height;
                }
            }

            bounds.size = new Vector3(maxWidth, maxHeight, 0);
        }
예제 #16
0
 public override void WriteData(ESPWriter writer)
 {
     if (EditorID != null)
     {
         EditorID.WriteBinary(writer);
     }
     if (ObjectBounds != null)
     {
         ObjectBounds.WriteBinary(writer);
     }
     if (Model != null)
     {
         Model.WriteBinary(writer);
     }
     if (PassthroughSound != null)
     {
         PassthroughSound.WriteBinary(writer);
     }
     if (Looping_RandomSound != null)
     {
         Looping_RandomSound.WriteBinary(writer);
     }
 }
 public override void WriteData(ESPWriter writer)
 {
     if (EditorID != null)
     {
         EditorID.WriteBinary(writer);
     }
     if (ObjectBounds != null)
     {
         ObjectBounds.WriteBinary(writer);
     }
     if (Model != null)
     {
         Model.WriteBinary(writer);
     }
     if (Parts != null)
     {
         Parts.Sort();
         foreach (var item in Parts)
         {
             item.WriteBinary(writer);
         }
     }
 }
        public override void WriteDataXML(XElement ele, ElderScrollsPlugin master)
        {
            XElement subEle;

            if (EditorID != null)
            {
                ele.TryPathTo("EditorID", true, out subEle);
                EditorID.WriteXML(subEle, master);
            }
            if (ObjectBounds != null)
            {
                ele.TryPathTo("ObjectBounds", true, out subEle);
                ObjectBounds.WriteXML(subEle, master);
            }
            if (Model != null)
            {
                ele.TryPathTo("Model", true, out subEle);
                Model.WriteXML(subEle, master);
            }
            if (Parts != null)
            {
                ele.TryPathTo("Parts", true, out subEle);
                List <string> xmlNames = new List <string> {
                    "Part"
                };
                int i = 0;
                Parts.Sort();
                foreach (var entry in Parts)
                {
                    i = i % xmlNames.Count();
                    XElement newEle = new XElement(xmlNames[i]);
                    entry.WriteXML(newEle, master);
                    subEle.Add(newEle);
                    i++;
                }
            }
        }
예제 #19
0
        public override void ReadData(ESPReader reader, long dataEnd)
        {
            while (reader.BaseStream.Position < dataEnd)
            {
                string subTag = reader.PeekTag();

                switch (subTag)
                {
                case "EDID":
                    if (EditorID == null)
                    {
                        EditorID = new SimpleSubrecord <String>();
                    }

                    EditorID.ReadBinary(reader);
                    break;

                case "OBND":
                    if (ObjectBounds == null)
                    {
                        ObjectBounds = new ObjectBounds();
                    }

                    ObjectBounds.ReadBinary(reader);
                    break;

                case "MODL":
                    if (Model == null)
                    {
                        Model = new Model();
                    }

                    Model.ReadBinary(reader);
                    break;

                case "DATA":
                    if (NodeIndex == null)
                    {
                        NodeIndex = new SimpleSubrecord <Int32>();
                    }

                    NodeIndex.ReadBinary(reader);
                    break;

                case "SNAM":
                    if (Sound == null)
                    {
                        Sound = new RecordReference();
                    }

                    Sound.ReadBinary(reader);
                    break;

                case "DNAM":
                    if (Data == null)
                    {
                        Data = new AddonNodeData();
                    }

                    Data.ReadBinary(reader);
                    break;

                default:
                    throw new Exception();
                }
            }
        }
예제 #20
0
        public static List <LayerComponentMapping> SortComponents(TerrainWrapper wrapper, string layerFilter)
        {
            Profiler.BeginSample("CollectAndOrganise");

            // Collect all layerComponents that lie within the bounds of the TerrainWrapper and satisfy the layerFilter (if one is specified)
            var allLayerComponents = new List <LayerComponentBase>(Object.FindObjectsOfType <LayerComponentBase>());
            var tBounds            = new Bounds(wrapper.Terrain.GetPosition() + wrapper.Terrain.terrainData.size / 2,
                                                wrapper.Terrain.terrainData.size);

            for (var i = allLayerComponents.Count - 1; i >= 0; i--)
            {
                var layerComponent = allLayerComponents[i];

                if (!String.IsNullOrEmpty(layerFilter) && layerComponent.GetLayerName() != layerFilter)
                {
                    allLayerComponents.RemoveAt(i);
                    continue;
                }

                if (!layerComponent.GetEnabled())
                {
                    allLayerComponents.RemoveAt(i);
                    continue;
                }

                var stampBounds = new ObjectBounds(layerComponent.transform.position, layerComponent.Size / 2,
                                                   layerComponent.transform.rotation);
                var axisStampBounds = stampBounds.ToAxisBounds();
                if (!tBounds.Intersects(axisStampBounds))
                {
                    allLayerComponents.RemoveAt(i);
                }
            }

            // Sort the Components into what layer they each point to
            List <LayerComponentMapping> mappings = new List <LayerComponentMapping>();

            for (int i = 0; i < allLayerComponents.Count; i++)
            {
                var component = allLayerComponents[i];
                LayerComponentMapping mapping = null;
                foreach (var layerStampMapping in mappings)
                {
                    if (layerStampMapping.LayerName == component.GetLayerName())
                    {
                        mapping = layerStampMapping;
                        break;
                    }
                }
                if (mapping == null)
                {
                    mapping = new LayerComponentMapping()
                    {
                        LayerIndex = wrapper.GetLayerIndex(component.GetLayerName()),
                        LayerName  = component.GetLayerName()
                    };
                    mappings.Add(mapping);
                }
                mapping.Components.Add(component);
            }

            // Sort this mapping by layer index, then the contents of the mappings by priority
            mappings = mappings.OrderByDescending(mapping => mapping.LayerIndex).ToList();
            for (int i = 0; i < mappings.Count; i++)
            {
                mappings[i].Components = mappings[i].Components.OrderBy(component => component.GetPriority())
                                         .ThenBy(component => component.transform.GetSiblingIndex())
                                         .ToList();
            }

            // Go through and create new layers as needed
            HashSet <LayerBase> cache = new HashSet <LayerBase>();

            for (int i = mappings.Count - 1; i >= 0; i--)
            {
                var layerStampMapping = mappings[i];
                for (var j = 0; j < layerStampMapping.Components.Count; ++j)
                {
                    var component = layerStampMapping.Components[j];
                    var type      = component.GetLayerType();
                    var layer     = wrapper.GetLayer(type, layerStampMapping.LayerName, false, true);
                    if (cache.Contains(layer))
                    {
                        continue;
                    }
                    cache.Add(layer);

                    if (layer.Locked)
                    {
                        Debug.LogWarningFormat(layer, "Attempted to write to layer {0} but it was locked!", layer.name);
                        mappings.RemoveAt(i);
                        continue;
                    }

                    layer.Clear(wrapper);
                    layer.PrepareApply(wrapper, wrapper.GetLayerIndex(layer));
                }
            }
            Profiler.EndSample();
            return(mappings);
        }
예제 #21
0
        public override void ReadData(ESPReader reader, long dataEnd)
        {
            while (reader.BaseStream.Position < dataEnd)
            {
                string subTag = reader.PeekTag();

                switch (subTag)
                {
                case "EDID":
                    if (EditorID == null)
                    {
                        EditorID = new SimpleSubrecord <String>();
                    }

                    EditorID.ReadBinary(reader);
                    break;

                case "OBND":
                    if (ObjectBounds == null)
                    {
                        ObjectBounds = new ObjectBounds();
                    }

                    ObjectBounds.ReadBinary(reader);
                    break;

                case "FULL":
                    if (Name == null)
                    {
                        Name = new SimpleSubrecord <String>();
                    }

                    Name.ReadBinary(reader);
                    break;

                case "MODL":
                    if (Model == null)
                    {
                        Model = new Model();
                    }

                    Model.ReadBinary(reader);
                    break;

                case "ICON":
                    if (LargeIcon == null)
                    {
                        LargeIcon = new SimpleSubrecord <String>();
                    }

                    LargeIcon.ReadBinary(reader);
                    break;

                case "MICO":
                    if (SmallIcon == null)
                    {
                        SmallIcon = new SimpleSubrecord <String>();
                    }

                    SmallIcon.ReadBinary(reader);
                    break;

                case "SCRI":
                    if (Script == null)
                    {
                        Script = new RecordReference();
                    }

                    Script.ReadBinary(reader);
                    break;

                case "DESC":
                    if (Description == null)
                    {
                        Description = new SimpleSubrecord <String>();
                    }

                    Description.ReadBinary(reader);
                    break;

                case "DEST":
                    if (Destructable == null)
                    {
                        Destructable = new Destructable();
                    }

                    Destructable.ReadBinary(reader);
                    break;

                case "YNAM":
                    if (PickUpSound == null)
                    {
                        PickUpSound = new RecordReference();
                    }

                    PickUpSound.ReadBinary(reader);
                    break;

                case "ZNAM":
                    if (DropSound == null)
                    {
                        DropSound = new RecordReference();
                    }

                    DropSound.ReadBinary(reader);
                    break;

                case "DATA":
                    if (Data == null)
                    {
                        Data = new BookData();
                    }

                    Data.ReadBinary(reader);
                    break;

                default:
                    throw new Exception();
                }
            }
        }
예제 #22
0
        public override void ReadDataXML(XElement ele, ElderScrollsPlugin master)
        {
            XElement subEle;

            if (ele.TryPathTo("EditorID", false, out subEle))
            {
                if (EditorID == null)
                {
                    EditorID = new SimpleSubrecord <String>();
                }

                EditorID.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("ObjectBounds", false, out subEle))
            {
                if (ObjectBounds == null)
                {
                    ObjectBounds = new ObjectBounds();
                }

                ObjectBounds.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("Name", false, out subEle))
            {
                if (Name == null)
                {
                    Name = new SimpleSubrecord <String>();
                }

                Name.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("Model", false, out subEle))
            {
                if (Model == null)
                {
                    Model = new Model();
                }

                Model.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("Icon/Large", false, out subEle))
            {
                if (LargeIcon == null)
                {
                    LargeIcon = new SimpleSubrecord <String>();
                }

                LargeIcon.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("Icon/Small", false, out subEle))
            {
                if (SmallIcon == null)
                {
                    SmallIcon = new SimpleSubrecord <String>();
                }

                SmallIcon.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("Script", false, out subEle))
            {
                if (Script == null)
                {
                    Script = new RecordReference();
                }

                Script.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("Description", false, out subEle))
            {
                if (Description == null)
                {
                    Description = new SimpleSubrecord <String>();
                }

                Description.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("Destructable", false, out subEle))
            {
                if (Destructable == null)
                {
                    Destructable = new Destructable();
                }

                Destructable.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("PickUpSound", false, out subEle))
            {
                if (PickUpSound == null)
                {
                    PickUpSound = new RecordReference();
                }

                PickUpSound.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("DropSound", false, out subEle))
            {
                if (DropSound == null)
                {
                    DropSound = new RecordReference();
                }

                DropSound.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("Data", false, out subEle))
            {
                if (Data == null)
                {
                    Data = new BookData();
                }

                Data.ReadXML(subEle, master);
            }
        }
예제 #23
0
        public override void ReadData(ESPReader reader, long dataEnd)
        {
            while (reader.BaseStream.Position < dataEnd)
            {
                string subTag = reader.PeekTag();

                switch (subTag)
                {
                case "EDID":
                    if (EditorID == null)
                    {
                        EditorID = new SimpleSubrecord <String>();
                    }

                    EditorID.ReadBinary(reader);
                    break;

                case "OBND":
                    if (ObjectBounds == null)
                    {
                        ObjectBounds = new ObjectBounds();
                    }

                    ObjectBounds.ReadBinary(reader);
                    break;

                case "FULL":
                    if (Name == null)
                    {
                        Name = new SimpleSubrecord <String>();
                    }

                    Name.ReadBinary(reader);
                    break;

                case "MODL":
                    if (Model == null)
                    {
                        Model = new Model();
                    }

                    Model.ReadBinary(reader);
                    break;

                case "ICON":
                    if (LargeIcon == null)
                    {
                        LargeIcon = new SimpleSubrecord <String>();
                    }

                    LargeIcon.ReadBinary(reader);
                    break;

                case "MICO":
                    if (SmallIcon == null)
                    {
                        SmallIcon = new SimpleSubrecord <String>();
                    }

                    SmallIcon.ReadBinary(reader);
                    break;

                case "SCRI":
                    if (Script == null)
                    {
                        Script = new RecordReference();
                    }

                    Script.ReadBinary(reader);
                    break;

                case "YNAM":
                    if (PickUpSound == null)
                    {
                        PickUpSound = new RecordReference();
                    }

                    PickUpSound.ReadBinary(reader);
                    break;

                case "ZNAM":
                    if (DropSound == null)
                    {
                        DropSound = new RecordReference();
                    }

                    DropSound.ReadBinary(reader);
                    break;

                case "TX00":
                    if (TextureFace == null)
                    {
                        TextureFace = new SimpleSubrecord <String>();
                    }

                    TextureFace.ReadBinary(reader);
                    break;

                case "TX01":
                    if (TextureBack == null)
                    {
                        TextureBack = new SimpleSubrecord <String>();
                    }

                    TextureBack.ReadBinary(reader);
                    break;

                case "INTV":
                    if (CardData == null)
                    {
                        CardData = new Card();
                    }

                    CardData.ReadBinary(reader);
                    break;

                case "DATA":
                    if (Value == null)
                    {
                        Value = new SimpleSubrecord <UInt32>();
                    }

                    Value.ReadBinary(reader);
                    break;

                default:
                    throw new Exception();
                }
            }
        }
예제 #24
0
 public TalkingActivator(SimpleSubrecord <String> EditorID, ObjectBounds ObjectBounds, SimpleSubrecord <String> Name, Model Model, RecordReference Script, Destructable Destructable, RecordReference LoopingSound, RecordReference VoiceType, RecordReference RadioTemplate)
 {
     this.EditorID     = EditorID;
     this.ObjectBounds = ObjectBounds;
     this.Model        = Model;
 }
예제 #25
0
 public TalkingActivator()
 {
     EditorID     = new SimpleSubrecord <String>("EDID");
     ObjectBounds = new ObjectBounds("OBND");
     Model        = new Model();
 }
예제 #26
0
        public override void ReadDataXML(XElement ele, ElderScrollsPlugin master)
        {
            XElement subEle;

            if (ele.TryPathTo("EditorID", false, out subEle))
            {
                if (EditorID == null)
                {
                    EditorID = new SimpleSubrecord <String>();
                }

                EditorID.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("ObjectBounds", false, out subEle))
            {
                if (ObjectBounds == null)
                {
                    ObjectBounds = new ObjectBounds();
                }

                ObjectBounds.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("Name", false, out subEle))
            {
                if (Name == null)
                {
                    Name = new SimpleSubrecord <String>();
                }

                Name.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("Model", false, out subEle))
            {
                if (Model == null)
                {
                    Model = new Model();
                }

                Model.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("Script", false, out subEle))
            {
                if (Script == null)
                {
                    Script = new RecordReference();
                }

                Script.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("Destructable", false, out subEle))
            {
                if (Destructable == null)
                {
                    Destructable = new Destructable();
                }

                Destructable.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("LoopingSound", false, out subEle))
            {
                if (LoopingSound == null)
                {
                    LoopingSound = new RecordReference();
                }

                LoopingSound.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("VoiceType", false, out subEle))
            {
                if (VoiceType == null)
                {
                    VoiceType = new RecordReference();
                }

                VoiceType.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("RadioTemplate", false, out subEle))
            {
                if (RadioTemplate == null)
                {
                    RadioTemplate = new RecordReference();
                }

                RadioTemplate.ReadXML(subEle, master);
            }
        }
예제 #27
0
 public static void addObject(ObjectBounds bound)
 {
     if(worldObjects == null){
         worldObjects = new List<ObjectBounds>();
     }
     worldObjects.Add(bound);
 }
예제 #28
0
        public override void WriteDataXML(XElement ele, ElderScrollsPlugin master)
        {
            XElement subEle;

            if (EditorID != null)
            {
                ele.TryPathTo("EditorID", true, out subEle);
                EditorID.WriteXML(subEle, master);
            }
            if (ObjectBounds != null)
            {
                ele.TryPathTo("ObjectBounds", true, out subEle);
                ObjectBounds.WriteXML(subEle, master);
            }
            if (Name != null)
            {
                ele.TryPathTo("Name", true, out subEle);
                Name.WriteXML(subEle, master);
            }
            if (Model != null)
            {
                ele.TryPathTo("Model", true, out subEle);
                Model.WriteXML(subEle, master);
            }
            if (LargeIcon != null)
            {
                ele.TryPathTo("Icon/Large", true, out subEle);
                LargeIcon.WriteXML(subEle, master);
            }
            if (SmallIcon != null)
            {
                ele.TryPathTo("Icon/Small", true, out subEle);
                SmallIcon.WriteXML(subEle, master);
            }
            if (Script != null)
            {
                ele.TryPathTo("Script", true, out subEle);
                Script.WriteXML(subEle, master);
            }
            if (PickUpSound != null)
            {
                ele.TryPathTo("PickUpSound", true, out subEle);
                PickUpSound.WriteXML(subEle, master);
            }
            if (DropSound != null)
            {
                ele.TryPathTo("DropSound", true, out subEle);
                DropSound.WriteXML(subEle, master);
            }
            if (TextureFace != null)
            {
                ele.TryPathTo("Texture/Face", true, out subEle);
                TextureFace.WriteXML(subEle, master);
            }
            if (TextureBack != null)
            {
                ele.TryPathTo("Texture/Back", true, out subEle);
                TextureBack.WriteXML(subEle, master);
            }
            if (CardData != null)
            {
                ele.TryPathTo("CardData", true, out subEle);
                CardData.WriteXML(subEle, master);
            }
            if (Value != null)
            {
                ele.TryPathTo("Value", true, out subEle);
                Value.WriteXML(subEle, master);
            }
        }
예제 #29
0
        public override void ReadDataXML(XElement ele, ElderScrollsPlugin master)
        {
            XElement subEle;

            if (ele.TryPathTo("EditorID", false, out subEle))
            {
                if (EditorID == null)
                {
                    EditorID = new SimpleSubrecord <String>();
                }

                EditorID.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("ObjectBounds", false, out subEle))
            {
                if (ObjectBounds == null)
                {
                    ObjectBounds = new ObjectBounds();
                }

                ObjectBounds.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("Name", false, out subEle))
            {
                if (Name == null)
                {
                    Name = new SimpleSubrecord <String>();
                }

                Name.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("Model", false, out subEle))
            {
                if (Model == null)
                {
                    Model = new Model();
                }

                Model.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("Icon/Large", false, out subEle))
            {
                if (LargeIcon == null)
                {
                    LargeIcon = new SimpleSubrecord <String>();
                }

                LargeIcon.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("Icon/Small", false, out subEle))
            {
                if (SmallIcon == null)
                {
                    SmallIcon = new SimpleSubrecord <String>();
                }

                SmallIcon.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("Script", false, out subEle))
            {
                if (Script == null)
                {
                    Script = new RecordReference();
                }

                Script.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("PickUpSound", false, out subEle))
            {
                if (PickUpSound == null)
                {
                    PickUpSound = new RecordReference();
                }

                PickUpSound.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("DropSound", false, out subEle))
            {
                if (DropSound == null)
                {
                    DropSound = new RecordReference();
                }

                DropSound.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("Texture/Face", false, out subEle))
            {
                if (TextureFace == null)
                {
                    TextureFace = new SimpleSubrecord <String>();
                }

                TextureFace.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("Texture/Back", false, out subEle))
            {
                if (TextureBack == null)
                {
                    TextureBack = new SimpleSubrecord <String>();
                }

                TextureBack.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("CardData", false, out subEle))
            {
                if (CardData == null)
                {
                    CardData = new Card();
                }

                CardData.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("Value", false, out subEle))
            {
                if (Value == null)
                {
                    Value = new SimpleSubrecord <UInt32>();
                }

                Value.ReadXML(subEle, master);
            }
        }
예제 #30
0
        public override void ReadData(ESPReader reader, long dataEnd)
        {
            while (reader.BaseStream.Position < dataEnd)
            {
                string subTag = reader.PeekTag();

                switch (subTag)
                {
                case "EDID":
                    if (EditorID == null)
                    {
                        EditorID = new SimpleSubrecord <String>();
                    }

                    EditorID.ReadBinary(reader);
                    break;

                case "OBND":
                    if (ObjectBounds == null)
                    {
                        ObjectBounds = new ObjectBounds();
                    }

                    ObjectBounds.ReadBinary(reader);
                    break;

                case "FULL":
                    if (Name == null)
                    {
                        Name = new SimpleSubrecord <String>();
                    }

                    Name.ReadBinary(reader);
                    break;

                case "MODL":
                    if (Model == null)
                    {
                        Model = new Model();
                    }

                    Model.ReadBinary(reader);
                    break;

                case "SCRI":
                    if (Script == null)
                    {
                        Script = new RecordReference();
                    }

                    Script.ReadBinary(reader);
                    break;

                case "DEST":
                    if (Destructable == null)
                    {
                        Destructable = new Destructable();
                    }

                    Destructable.ReadBinary(reader);
                    break;

                case "SNAM":
                    if (LoopingSound == null)
                    {
                        LoopingSound = new RecordReference();
                    }

                    LoopingSound.ReadBinary(reader);
                    break;

                case "VNAM":
                    if (VoiceType == null)
                    {
                        VoiceType = new RecordReference();
                    }

                    VoiceType.ReadBinary(reader);
                    break;

                case "INAM":
                    if (RadioTemplate == null)
                    {
                        RadioTemplate = new RecordReference();
                    }

                    RadioTemplate.ReadBinary(reader);
                    break;

                default:
                    throw new Exception();
                }
            }
        }
예제 #31
0
        public override void ReadDataXML(XElement ele, ElderScrollsPlugin master)
        {
            XElement subEle;

            if (ele.TryPathTo("EditorID", false, out subEle))
            {
                if (EditorID == null)
                {
                    EditorID = new SimpleSubrecord <String>();
                }

                EditorID.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("ObjectBounds", false, out subEle))
            {
                if (ObjectBounds == null)
                {
                    ObjectBounds = new ObjectBounds();
                }

                ObjectBounds.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("Model", false, out subEle))
            {
                if (Model == null)
                {
                    Model = new Model();
                }

                Model.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("Script", false, out subEle))
            {
                if (Script == null)
                {
                    Script = new RecordReference();
                }

                Script.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("Name", false, out subEle))
            {
                if (Name == null)
                {
                    Name = new SimpleSubrecord <String>();
                }

                Name.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("Icon/Large", false, out subEle))
            {
                if (LargeIcon == null)
                {
                    LargeIcon = new SimpleSubrecord <String>();
                }

                LargeIcon.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("Icon/Small", false, out subEle))
            {
                if (SmallIcon == null)
                {
                    SmallIcon = new SimpleSubrecord <String>();
                }

                SmallIcon.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("Data", false, out subEle))
            {
                if (Data == null)
                {
                    Data = new LightData();
                }

                Data.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("FadeValue", false, out subEle))
            {
                if (FadeValue == null)
                {
                    FadeValue = new SimpleSubrecord <Single>();
                }

                FadeValue.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("Sound", false, out subEle))
            {
                if (Sound == null)
                {
                    Sound = new RecordReference();
                }

                Sound.ReadXML(subEle, master);
            }
        }
예제 #32
0
        public override void WriteDataXML(XElement ele, ElderScrollsPlugin master)
        {
            XElement subEle;

            if (EditorID != null)
            {
                ele.TryPathTo("EditorID", true, out subEle);
                EditorID.WriteXML(subEle, master);
            }
            if (ObjectBounds != null)
            {
                ele.TryPathTo("ObjectBounds", true, out subEle);
                ObjectBounds.WriteXML(subEle, master);
            }
            if (Name != null)
            {
                ele.TryPathTo("Name", true, out subEle);
                Name.WriteXML(subEle, master);
            }
            if (Model != null)
            {
                ele.TryPathTo("Model", true, out subEle);
                Model.WriteXML(subEle, master);
            }
            if (LargeIcon != null)
            {
                ele.TryPathTo("Icon/Large", true, out subEle);
                LargeIcon.WriteXML(subEle, master);
            }
            if (SmallIcon != null)
            {
                ele.TryPathTo("Icon/Small", true, out subEle);
                SmallIcon.WriteXML(subEle, master);
            }
            if (Script != null)
            {
                ele.TryPathTo("Script", true, out subEle);
                Script.WriteXML(subEle, master);
            }
            if (Description != null)
            {
                ele.TryPathTo("Description", true, out subEle);
                Description.WriteXML(subEle, master);
            }
            if (Destructable != null)
            {
                ele.TryPathTo("Destructable", true, out subEle);
                Destructable.WriteXML(subEle, master);
            }
            if (PickUpSound != null)
            {
                ele.TryPathTo("PickUpSound", true, out subEle);
                PickUpSound.WriteXML(subEle, master);
            }
            if (DropSound != null)
            {
                ele.TryPathTo("DropSound", true, out subEle);
                DropSound.WriteXML(subEle, master);
            }
            if (Data != null)
            {
                ele.TryPathTo("Data", true, out subEle);
                Data.WriteXML(subEle, master);
            }
        }