public static void AddScene(Enigma.D3.Scene Scene) { if (SceneHelper.Contains(Scene.x0E8_SceneSnoId)) // Has SnoID { NavHelper Nav = new NavHelper { NavContainer = new NavContainer(Scene), ShouldShow = true, LevelAreaSnoID = Enigma.D3.Engine.Current.LevelArea.x044_SnoId }; if (!Nav.NavContainer.Error) { NavHelpers.Add(Nav.NavContainer.InternalID, Nav); LoadedScenes.Add(Nav.NavContainer.InternalID); } else { Remove(Nav); } } else { SceneHelper.TryAdd(Scene.x0E8_SceneSnoId); } }
public NavContainer(Enigma.D3.Scene Scene) { SceneID = Scene.x000_Id; SNOID = Scene.x0E8_SceneSnoId; AreaID = Scene.x018_LevelAreaSnoId; Min = new Vector3(Scene.x0FC, Scene.x100, Scene.x104); Max = new Vector3(Scene.x174, Scene.x178, Scene.x104); InternalID = Scene.x004_StructStart_Internal_SceneId; try { foreach (var x in SceneHelper.Getter(SNOID).NavCells) { NavigationCells.Add(new Navigation { Min = x.Min, Max = x.Max, }); } } catch { Error = true; } Skip = NavigationCells.Count < 1; }
public SceneData(Enigma.D3.Scene scene) { scene_id = scene.x000_Id; scene_sno_id = scene.x0E8_SceneSnoId; area_sno_id = scene.x018_LevelAreaSnoId; min = new Vec3(scene.x0FC_MeshMinX, scene.x100_MeshMinY, scene.x104_MeshMinZ); max = new Vec3(scene.x174_MeshMaxX, scene.x178_MeshMaxY, scene.x104_MeshMinZ); //there is no max z, so consider all grid cells flat }