Ejemplo n.º 1
0
        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);
            }
        }
Ejemplo n.º 2
0
        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;
        }
Ejemplo n.º 3
0
        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
        }