public void setBasePart(MSB1.Part part) { Placeholder = part.Placeholder; ModelName = part.ModelName; DrawGroup1 = part.DrawGroups[0]; DrawGroup2 = part.DrawGroups[1]; DrawGroup3 = part.DrawGroups[2]; DrawGroup4 = part.DrawGroups[3]; DispGroup1 = part.DispGroups[0]; DispGroup2 = part.DispGroups[1]; DispGroup3 = part.DispGroups[2]; DispGroup4 = part.DispGroups[3]; Rotation = new UnityEngine.Vector3(part.Rotation.X, part.Rotation.Y, part.Rotation.Z); EventEntityID = part.EntityID; LightID = part.LightID; FogID = part.FogID; ScatterID = part.ScatterID; LensFlareID = part.LensFlareID; ShadowID = part.ShadowID; DepthOfFieldID = part.DofID; ToneMapID = part.ToneMapID; ToneCorrectID = part.ToneCorrectID; LanternID = part.LanternID; LodParamID = part.LodParamID; IsShadowSrc = part.IsShadowSrc; IsShadowDest = part.IsShadowDest >= 1; IsShadowOnly = part.IsShadowOnly >= 1; DrawByReflectCam = part.DrawByReflectCam >= 1; DrawOnlyReflectCam = part.DrawOnlyReflectCam >= 1; UseDepthBiasFloat = part.UseDepthBiasFloat >= 1; DisablePointLightEffect = part.DisablePointLightEffect >= 1; }
public override void SetPart(MSB1.Part bpart) { var part = (MSB1.Part.Collision)bpart; setBasePart(part); HitFilterID = part.HitFilterID; SoundSpace = part.SoundSpaceType; EnvLightMapSpotIndex = part.EnvLightMapSpotIndex; ReflectPlaneHeight = part.ReflectPlaneHeight; NvmGroup1 = part.NvmGroups[0]; NvmGroup2 = part.NvmGroups[1]; NvmGroup3 = part.NvmGroups[2]; NvmGroup4 = part.NvmGroups[3]; VagrantID1 = part.VagrantEntityIDs[0]; VagrantID2 = part.VagrantEntityIDs[1]; VagrantID3 = part.VagrantEntityIDs[2]; MapNameID = part.MapNameID; DisableStart = (part.DisableStart > 0); DisableBonfireEntityID = part.DisableBonfireEntityID; PlayRegionID = part.PlayRegionID; LockCamID1 = part.LockCamParamID1; LockCamID2 = part.LockCamParamID2; }
internal void _Serialize(MSB1.Part part, GameObject parent) { part.Name = parent.name; part.Placeholder = Placeholder; var pos = new System.Numerics.Vector3(); pos.X = parent.transform.position.x; pos.Y = parent.transform.position.y; pos.Z = parent.transform.position.z; part.Position = pos; var rot = new System.Numerics.Vector3(); rot.X = Rotation.x; rot.Y = Rotation.y; rot.Z = Rotation.z; //part.Rotation = rot; part.Rotation = EulerUtils.quaternion2EulerDeg(parent.transform.rotation.normalized, EulerUtils.RotSeq.yzx); var scale = new System.Numerics.Vector3(); scale.X = parent.transform.localScale.x; scale.Y = parent.transform.localScale.y; scale.Z = parent.transform.localScale.z; part.Scale = scale; part.ModelName = (ModelName == "") ? null : ModelName; part.DrawGroups[0] = DrawGroup1; part.DrawGroups[1] = DrawGroup2; part.DrawGroups[2] = DrawGroup3; part.DrawGroups[3] = DrawGroup4; part.DispGroups[0] = DispGroup1; part.DispGroups[1] = DispGroup2; part.DispGroups[2] = DispGroup3; part.DispGroups[3] = DispGroup4; part.EntityID = EventEntityID; part.LightID = LightID; part.FogID = FogID; part.ScatterID = ScatterID; part.LensFlareID = LensFlareID; part.ShadowID = ShadowID; part.DofID = DepthOfFieldID; part.ToneMapID = ToneMapID; part.ToneCorrectID = ToneCorrectID; part.LanternID = LanternID; part.LodParamID = LodParamID; part.IsShadowSrc = IsShadowSrc; part.IsShadowDest = (byte)(IsShadowDest ? 1 : 0); part.IsShadowOnly = (byte)(IsShadowOnly ? 1 : 0); part.DrawByReflectCam = (byte)(DrawByReflectCam ? 1 : 0); part.DrawOnlyReflectCam = (byte)(DrawOnlyReflectCam ? 1 : 0); part.UseDepthBiasFloat = (byte)(UseDepthBiasFloat ? 1 : 0); part.DisablePointLightEffect = (byte)(DisablePointLightEffect ? 1 : 0); }
public override void SetPart(MSB1.Part bpart) { var part = (MSB1.Part.Navmesh)bpart; setBasePart(part); NavimeshGroup1 = part.NvmGroups[0]; NavimeshGroup2 = part.NvmGroups[1]; NavimeshGroup3 = part.NvmGroups[2]; NavimeshGroup4 = part.NvmGroups[3]; }
public override void SetPart(MSB1.Part bpart) { var part = (MSB1.Part.Object)bpart; setBasePart(part); CollisionName = part.CollisionName; UnkT08 = part.UnkT08; UnkT0C = part.UnkT0C; UnkT0E = part.UnkT0E; UnkT10 = part.UnkT10; }
public override void SetPart(MSB1.Part bpart) { var part = (MSB1.Part.ConnectCollision)bpart; setBasePart(part); CollisionName = part.CollisionName; MapID1 = part.MapID[0]; MapID2 = part.MapID[1]; MapID3 = part.MapID[2]; MapID4 = part.MapID[3]; }
public override void SetPart(MSB1.Part bpart) { var part = (MSB1.Part.Enemy)bpart; setBasePart(part); CollisionName = part.CollisionName; ThinkParamID = part.ThinkParamID; NPCParamID = part.NPCParamID; TalkID = part.TalkID; UnkT14 = part.UnkT14; CharaInitID = part.CharaInitID; MovePoint1 = part.MovePointNames[0]; MovePoint2 = part.MovePointNames[1]; MovePoint3 = part.MovePointNames[2]; MovePoint4 = part.MovePointNames[3]; InitAnimID = part.UnkT38; ButterflyAnimUnk = part.UnkT3C; }
public override void SetPart(MSB1.Part bpart) { var part = (MSB1.Part.MapPiece)bpart; setBasePart(part); }
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); }
public override void SetPart(MSB1.Part bpart) { var part = (MSB1.Part.Player)bpart; setBasePart(part); }
public abstract void SetPart(MSB1.Part part);