コード例 #1
0
    public override void SetPart(MSB3.Part bpart)
    {
        var part = (MSB3.Part.Collision)bpart;

        setBasePart(part);
        GParamConfig = gameObject.AddComponent <MSB3GParamConfig>();
        GParamConfig.setStruct(part.Gparam);
        UnkStruct4 = gameObject.AddComponent <MSB3UnkStruct4>();
        UnkStruct4.setStruct(part.Unk4);
        HitFilterID            = part.HitFilterID;
        SoundSpaceType         = part.SoundSpaceType;
        EnvLightMapSpotIndex   = part.EnvLightMapSpotIndex;
        ReflectPlaneHeight     = part.ReflectPlaneHeight;
        MapNameID              = part.MapNameID;
        DisableStart           = part.DisableStart;
        DisableBonfireEntityID = part.DisableBonfireEntityID;
        PlayRegionID           = part.PlayRegionID;
        LockCamID1             = part.LockCamID1;
        LockCamID2             = part.LockCamID2;
        UnkHitName             = part.UnkHitName;
        UnkT2C     = part.UnkT2C;
        UnkT34     = part.UnkT34;
        UnkT35     = part.UnkT35;
        UnkT36     = part.UnkT36;
        MapVisType = part.MapVisType;
    }
コード例 #2
0
    public override void SetPart(MSB3.Part bpart)
    {
        var part = (MSB3.Part.MapPiece)bpart;

        setBasePart(part);
        GParamConfig = gameObject.AddComponent <MSB3GParamConfig>();
        GParamConfig.setStruct(part.Gparam);
    }
コード例 #3
0
    public void setBasePart(MSB3.Part part)
    {
        Placeholder    = part.Placeholder;
        ID             = part.ID;
        ModelName      = part.ModelName;
        OldDrawGroup1  = part.OldDrawGroup1;
        MapStudioLayer = part.MapStudioLayer;
        DrawGroup1     = part.DrawGroups[0];
        DrawGroup2     = part.DrawGroups[1];
        DrawGroup3     = part.DrawGroups[2];
        DrawGroup4     = part.DrawGroups[3];
        DrawGroup5     = part.DrawGroups[4];
        DrawGroup6     = part.DrawGroups[5];
        DrawGroup7     = part.DrawGroups[6];
        DrawGroup8     = part.DrawGroups[7];
        DispGroup1     = part.DispGroups[0];
        DispGroup2     = part.DispGroups[1];
        DispGroup3     = part.DispGroups[2];
        DispGroup4     = part.DispGroups[3];
        DispGroup5     = part.DispGroups[4];
        DispGroup6     = part.DispGroups[5];
        DispGroup7     = part.DispGroups[6];
        DispGroup8     = part.DispGroups[7];

        Rotation = new UnityEngine.Vector3(part.Rotation.X, part.Rotation.Y, part.Rotation.Z);

        BackreadGroup1 = part.BackreadGroups[0];
        BackreadGroup2 = part.BackreadGroups[1];
        BackreadGroup3 = part.BackreadGroups[2];
        BackreadGroup4 = part.BackreadGroups[3];
        BackreadGroup5 = part.BackreadGroups[4];
        BackreadGroup6 = part.BackreadGroups[5];
        BackreadGroup7 = part.BackreadGroups[6];
        BackreadGroup8 = part.BackreadGroups[7];

        EventEntityID           = part.EventEntityID;
        OldLightID              = part.OldLightID;
        OldFogID                = part.OldFogID;
        OldScatterID            = part.OldScatterID;
        OldLensFlareID          = part.OldLensFlareID;
        LanternID               = part.LanternID;
        LodParamID              = part.LodParamID;
        UnkB0E                  = part.UnkB0E;
        PointLightShadowSource  = part.PointLightShadowSource;
        ShadowSource            = part.ShadowSource;
        ShadowDest              = part.ShadowDest;
        IsShadowOnly            = part.IsShadowOnly;
        DrawByReflectCam        = part.DrawByReflectCam;
        DrawOnlyReflectCam      = part.DrawOnlyReflectCam;
        UseDepthBiasFloat       = part.UseDepthBiasFloat;
        DisablePointLightEffect = part.DisablePointLightEffect;
        UnkB17                  = part.UnkB17;
        UnkB18                  = part.UnkB18;

        EventEntityGroups = part.EventEntityGroups;
    }
コード例 #4
0
    public override void SetPart(MSB3.Part bpart)
    {
        var part = (MSB3.Part.ConnectCollision)bpart;

        setBasePart(part);
        CollisionName = part.CollisionName;
        MapID1        = part.MapID1;
        MapID2        = part.MapID2;
        MapID3        = part.MapID3;
        MapID4        = part.MapID4;
    }
コード例 #5
0
    public override void SetPart(MSB3.Part bpart)
    {
        var part = (MSB3.Part.Enemy)bpart;

        setBasePart(part);
        GParamConfig = gameObject.AddComponent <MSB3GParamConfig>();
        GParamConfig.setStruct(part.Gparam);
        CollisionName = part.CollisionName;
        ThinkParamID  = part.ThinkParamID;
        NPCParamID    = part.NPCParamID;
        TalkID        = part.TalkID;
        CharaInitID   = part.CharaInitID;
        UnkT04        = part.UnkT04;
        ChrManipulatorAllocationParameter = part.ChrManipulatorAllocationParameter;
        WalkRouteName     = part.WalkRouteName;
        BackupEventAnimID = part.BackupEventAnimID;
        UnkT78            = part.UnkT78;
        UnkT84            = part.UnkT84;
    }
コード例 #6
0
ファイル: MSB3ObjectPart.cs プロジェクト: swordworld/dstools
    public override void SetPart(MSB3.Part bpart)
    {
        var part = (MSB3.Part.Object)bpart;

        setBasePart(part);
        GParamConfig = gameObject.AddComponent <MSB3GParamConfig>();
        GParamConfig.setStruct(part.Gparam);
        CollisionName = part.CollisionName;
        UnkT0C        = part.UnkT0C;
        UnkT0E        = part.UnkT0E;
        StartAnimID   = part.UnkT10;
        UnkT12        = part.UnkT12;
        UnkT14        = part.UnkT14;
        UnkT16        = part.UnkT16;
        UnkT18        = part.UnkT18;
        UnkT1A        = part.UnkT1A;
        UnkT1C        = part.UnkT1C;
        UnkT1E        = part.UnkT1E;
    }
コード例 #7
0
ファイル: Scraper.cs プロジェクト: thefifthmatt/SoulsIds
 public bool ScrapeMaps(Universe u)
 {
     if (spec.MsbDir == null)
     {
         return(false);
     }
     if (spec.Game == FromGame.SDT)
     {
         Dictionary <string, MSBS> maps = editor.Load(spec.MsbDir, path => MSBS.Read(path));
         foreach (KeyValuePair <string, MSBS> entry in maps)
         {
             string location      = entry.Key;
             MSBS   msb           = entry.Value;
             Obj    map           = Obj.Map(location);
             int    treasureIndex = 0;
             foreach (MSBS.Event.Treasure treasure in msb.Events.Treasures)
             {
                 if (treasure.TreasurePartName != null && treasure.ItemLotID != -1)
                 {
                     Obj treasureObj = Obj.Treasure(location, treasureIndex);
                     Obj part        = Obj.Part(location, treasure.TreasurePartName);
                     u.Add(Verb.PRODUCES, part, treasureObj);
                     u.Add(Verb.PRODUCES, treasureObj, Obj.Lot(treasure.ItemLotID));
                 }
                 treasureIndex++;
             }
             foreach (MSBS.Event.Talk talk in msb.Events.Talks)
             {
                 for (int i = 0; i < 2; i++)
                 {
                     string enemyName = talk.EnemyNames[i];
                     int    esdId     = talk.TalkIDs[i];
                     if (enemyName == null || esdId < 0)
                     {
                         continue;
                     }
                     Obj part = Obj.Part(location, enemyName);
                     u.Add(Verb.CONTAINS, part, Obj.Esd(esdId));
                 }
             }
             foreach (MSBS.Entry obj in msb.Parts.GetEntries())
             {
                 MSBS.Part part = obj as MSBS.Part;
                 if (part == null)
                 {
                     continue;
                 }
                 Obj partObj = Obj.Part(location, part.Name);
                 if (part.EntityID != -1)
                 {
                     u.Add(Verb.CONTAINS, Obj.Entity(part.EntityID), partObj);
                 }
                 foreach (int groupId in part.EntityGroupIDs.Where(groupID => groupID > 0))
                 {
                     u.Add(Verb.CONTAINS, Obj.Entity(groupId), partObj);
                 }
                 if (part is MSBS.Part.Enemy enemy)
                 {
                     string model = part.Name.Split('_')[0];
                     u.Add(Verb.CONTAINS, partObj, Obj.ChrModel(model));
                     if (enemy.NPCParamID != -1)
                     {
                         u.Add(Verb.CONTAINS, partObj, Obj.Npc(enemy.NPCParamID));
                     }
                 }
                 else if (part is MSBS.Part.Object)
                 {
                     string model = part.Name.Split('_')[0];
                     u.Add(Verb.CONTAINS, partObj, Obj.ObjModel(model));
                 }
                 // This gets a bit noisy, so don't add part to map unless it's already in universe
                 if (u.Nodes.ContainsKey(partObj))
                 {
                     u.Add(Verb.CONTAINS, map, partObj);
                 }
             }
         }
     }
     else if (spec.Game == FromGame.DS1 || spec.Game == FromGame.DS1R)
     {
         Dictionary <string, MSB1> maps = editor.Load(spec.MsbDir, path => path.Contains("m99") ? null : MSB1.Read(path), "*.msb");
         foreach (KeyValuePair <string, MSB1> entry in maps)
         {
             string location = entry.Key;
             Obj    map      = Obj.Map(location);
             MSB1   msb      = entry.Value;
             if (msb == null)
             {
                 continue;
             }
             // For now, just load talk data
             foreach (MSB1.Entry obj in msb.Parts.GetEntries())
             {
                 MSB1.Part part = obj as MSB1.Part;
                 if (part == null)
                 {
                     continue;
                 }
                 Obj partObj = Obj.Part(location, part.Name);
                 if (part.EntityID != -1)
                 {
                     u.Add(Verb.CONTAINS, Obj.Entity(part.EntityID), partObj);
                 }
                 if (part is MSB1.Part.Enemy enemy)
                 {
                     string model = part.Name.Split('_')[0];
                     u.Add(Verb.CONTAINS, partObj, Obj.ChrModel(model));
                     if (enemy.NPCParamID != -1 && model == "c0000")
                     {
                         u.Add(Verb.CONTAINS, partObj, Obj.Human(enemy.NPCParamID));
                     }
                     if (enemy.TalkID != -1)
                     {
                         u.Add(Verb.CONTAINS, partObj, Obj.Esd(enemy.TalkID));
                     }
                 }
                 else if (part is MSB1.Part.Object)
                 {
                     string model = part.Name.Split('_')[0];
                     u.Add(Verb.CONTAINS, partObj, Obj.ObjModel(model));
                 }
                 // This gets a bit noisy, so don't add part to map unless it's already in universe
                 if (u.Nodes.ContainsKey(partObj))
                 {
                     u.Add(Verb.CONTAINS, map, partObj);
                 }
             }
         }
     }
     else if (spec.Game == FromGame.DS3)
     {
         Dictionary <string, MSB3> maps = editor.Load(spec.MsbDir, path => path.Contains("m99") ? null : MSB3.Read(path));
         foreach (KeyValuePair <string, MSB3> entry in maps)
         {
             string location = entry.Key;
             Obj    map      = Obj.Map(location);
             MSB3   msb      = entry.Value;
             if (msb == null)
             {
                 continue;
             }
             // For now, just load talk data
             foreach (MSB3.Entry obj in msb.Parts.GetEntries())
             {
                 MSB3.Part part = obj as MSB3.Part;
                 if (part == null)
                 {
                     continue;
                 }
                 Obj partObj = Obj.Part(location, part.Name);
                 if (part.EventEntityID != -1)
                 {
                     u.Add(Verb.CONTAINS, Obj.Entity(part.EventEntityID), partObj);
                 }
                 if (part is MSB3.Part.Enemy enemy)
                 {
                     string model = part.Name.Split('_')[0];
                     u.Add(Verb.CONTAINS, partObj, Obj.ChrModel(model));
                     if (enemy.CharaInitID > 0)
                     {
                         u.Add(Verb.CONTAINS, partObj, Obj.Human(enemy.CharaInitID));
                     }
                     if (enemy.TalkID != -1)
                     {
                         u.Add(Verb.CONTAINS, partObj, Obj.Esd(enemy.TalkID));
                     }
                 }
                 else if (part is MSB3.Part.Object)
                 {
                     string model = part.Name.Split('_')[0];
                     u.Add(Verb.CONTAINS, partObj, Obj.ObjModel(model));
                 }
                 // This gets a bit noisy, so don't add part to map unless it's already in universe
                 if (u.Nodes.ContainsKey(partObj))
                 {
                     u.Add(Verb.CONTAINS, map, partObj);
                 }
             }
         }
     }
     else
     {
         return(false);
     }
     return(true);
 }
コード例 #8
0
 public override void SetPart(MSB3.Part part)
 {
     setBasePart(part);
 }
コード例 #9
0
 public abstract void SetPart(MSB3.Part part);
コード例 #10
0
    internal void _Serialize(MSB3.Part part, GameObject parent)
    {
        part.Name        = parent.name;
        part.Placeholder = Placeholder;

        part.Position.X = parent.transform.position.x;
        part.Position.Y = parent.transform.position.y;
        part.Position.Z = parent.transform.position.z;
        // :trashcat:
        //part.Rotation.X = parent.transform.rotation.eulerAngles.x;
        //part.Rotation.Y = parent.transform.rotation.eulerAngles.z;
        //part.Rotation.Z = -parent.transform.rotation.eulerAngles.y;
        //part.Rotation = ConvertEuler(parent.transform.eulerAngles);
        part.Rotation = EulerUtils.quaternion2EulerDeg(parent.transform.rotation.normalized, EulerUtils.RotSeq.yzx);
        //part.Rotation = ConvertQuatEuler(parent.transform.rotation);
        //part.Rotation = new System.Numerics.Vector3(Rotation.x, Rotation.y, Rotation.z);
        //print($@"{part.Name}: {Rotation}, {parent.transform.eulerAngles} -> {part.Rotation}");
        part.Scale.X = parent.transform.localScale.x;
        part.Scale.Y = parent.transform.localScale.y;
        part.Scale.Z = parent.transform.localScale.z;
        //part.Scale = new System.Numerics.Vector3(Scale.x, Scale.y, Scale.z);

        part.ModelName      = ModelName;
        part.MapStudioLayer = MapStudioLayer;
        part.DrawGroups[0]  = DrawGroup1;
        part.DrawGroups[1]  = DrawGroup2;
        part.DrawGroups[2]  = DrawGroup3;
        part.DrawGroups[3]  = DrawGroup4;
        part.DrawGroups[4]  = DrawGroup5;
        part.DrawGroups[5]  = DrawGroup6;
        part.DrawGroups[6]  = DrawGroup7;
        part.DrawGroups[7]  = DrawGroup8;

        part.DispGroups[0] = DispGroup1;
        part.DispGroups[1] = DispGroup2;
        part.DispGroups[2] = DispGroup3;
        part.DispGroups[3] = DispGroup4;
        part.DispGroups[4] = DispGroup5;
        part.DispGroups[5] = DispGroup6;
        part.DispGroups[6] = DispGroup7;
        part.DispGroups[7] = DispGroup8;

        part.BackreadGroups[0] = BackreadGroup1;
        part.BackreadGroups[1] = BackreadGroup2;
        part.BackreadGroups[2] = BackreadGroup3;
        part.BackreadGroups[3] = BackreadGroup4;
        part.BackreadGroups[4] = BackreadGroup5;
        part.BackreadGroups[5] = BackreadGroup6;
        part.BackreadGroups[6] = BackreadGroup7;
        part.BackreadGroups[7] = BackreadGroup8;

        part.EventEntityID           = EventEntityID;
        part.OldLightID              = OldLightID;
        part.OldFogID                = OldFogID;
        part.OldScatterID            = OldScatterID;
        part.OldLensFlareID          = OldLensFlareID;
        part.LanternID               = LanternID;
        part.LodParamID              = LodParamID;
        part.UnkB0E                  = UnkB0E;
        part.PointLightShadowSource  = PointLightShadowSource;
        part.ShadowSource            = ShadowSource;
        part.ShadowDest              = ShadowDest;
        part.IsShadowOnly            = IsShadowOnly;
        part.DrawByReflectCam        = DrawByReflectCam;
        part.DrawOnlyReflectCam      = DrawOnlyReflectCam;
        part.UseDepthBiasFloat       = UseDepthBiasFloat;
        part.DisablePointLightEffect = DisablePointLightEffect;
        part.UnkB17                  = UnkB17;
        part.UnkB18                  = UnkB18;

        for (int i = 0; i < 8; i++)
        {
            if (i >= EventEntityGroups.Length)
            {
                part.EventEntityGroups[i] = -1;
                continue;
            }
            part.EventEntityGroups[i] = EventEntityGroups[i];
        }
    }