WoW Immersive addon Dragonflight/Wrath of the Lich King Classic 2024
logo
wow addon Immersive

Immersive

Game Version: 10.0.5 +2
Total Downloads: 52,959
Updated: Jan 29, 2023
Created: Feb 19, 2016
download ImmersiveDownload Earlier Versions

Earlier Versions

Name Size Uploaded Game Version Downloads
v3.0.2 release 107.97 KB Jan 29, 2023 10.0.5 +2 1,106 download Immersive v3.0.2 releaseDownload
v3.0.1 release 107.03 KB Dec 4, 2022 10.0.2 +2 1,816 download Immersive v3.0.1 releaseDownload
v3.0.0 release 107.64 KB Oct 30, 2022 10.0.0 +2 1,665 download Immersive v3.0.0 releaseDownload
v2.0.11 release 90.56 KB Sep 27, 2022 9.2.7 +2 1,398 download Immersive v2.0.11 releaseDownload
v2.0.10-BCC release 89.84 KB Sep 1, 2022 2.5.4 227 download Immersive v2.0.10-BCC releaseDownload
v2.0.9-BCC release 89.77 KB Feb 26, 2022 2.5.3 1,069 download Immersive v2.0.9-BCC releaseDownload
v2.0.9-Classic release 89.77 KB Feb 26, 2022 1.14.2 158 download Immersive v2.0.9-Classic releaseDownload
v2.0.9 release 89.77 KB Feb 26, 2022 9.2.0 2,233 download Immersive v2.0.9 releaseDownload
v2.0.8 release 89.77 KB Jun 18, 2021 9.0.5 2,202 download Immersive v2.0.8 releaseDownload
v2.0.8-BCC release 89.77 KB Jun 18, 2021 2.5.1 1,301 download Immersive v2.0.8-BCC releaseDownload
v2.0.8-Classic release 89.77 KB Jun 18, 2021 1.13.7 441 download Immersive v2.0.8-Classic releaseDownload
v2.0.7-Classic release 89.77 KB Nov 1, 2020 1.13.5 1,077 download Immersive v2.0.7-Classic releaseDownload
v2.0.7 release 89.77 KB Nov 1, 2020 9.0.1 3,994 download Immersive v2.0.7 releaseDownload
v2.0.6-Classic release 88.57 KB Apr 26, 2020 1.13.4 1,039 download Immersive v2.0.6-Classic releaseDownload
v2.0.6 release 88.57 KB Apr 26, 2020 8.3.0 3,968 download Immersive v2.0.6 releaseDownload
v2.0.5-Classic release 88.57 KB Sep 11, 2019 1.13.2 1,948 download Immersive v2.0.5-Classic releaseDownload
v2.0.5 release 88.57 KB Sep 11, 2019 8.2.0 3,200 download Immersive v2.0.5 releaseDownload
v2.0.4-Classic release 89.30 KB Sep 9, 2019 1.13.2 566 download Immersive v2.0.4-Classic releaseDownload
v2.0.4 release 89.30 KB Sep 9, 2019 8.2.0 296 download Immersive v2.0.4 releaseDownload
v2.0.3-Classic release 89.08 KB Sep 7, 2019 1.13.2 608 download Immersive v2.0.3-Classic releaseDownload
v2.0.3 release 87.84 KB Sep 7, 2019 8.2.0 441 download Immersive v2.0.3 releaseDownload
v2.0.2 release 90.64 KB Aug 8, 2018 8.0.1 4,633 download Immersive v2.0.2 releaseDownload
v2.0.1 release 90.46 KB Aug 6, 2018 8.0.1 417 download Immersive v2.0.1 releaseDownload
v2.0.0 release 90.20 KB Aug 5, 2018 8.0.1 324 download Immersive v2.0.0 releaseDownload
v1.6.0 release 86.82 KB Sep 25, 2017 7.3.0 3,881 download Immersive v1.6.0 releaseDownload
v1.5.10 release 86.64 KB Mar 31, 2017 7.2.0 2,011 download Immersive v1.5.10 releaseDownload
v1.5.9 release 86.42 KB Dec 31, 2016 7.1.0 1,144 download Immersive v1.5.9 releaseDownload
v1.5.8 release 86.33 KB Dec 19, 2016 7.1.0 481 download Immersive v1.5.8 releaseDownload
v1.5.7 release 86.26 KB Oct 28, 2016 7.1.0 713 download Immersive v1.5.7 releaseDownload
v1.5.6 release 85.99 KB Sep 26, 2016 7.0.3 726 download Immersive v1.5.6 releaseDownload
v1.5.5 release 85.22 KB Sep 20, 2016 7.0.3 395 download Immersive v1.5.5 releaseDownload
v1.5.4 release 83.69 KB Aug 31, 2016 7.0.3 776 download Immersive v1.5.4 releaseDownload
v1.5.3 release 83.02 KB Aug 10, 2016 7.0.3 548 download Immersive v1.5.3 releaseDownload
v1.5.2 release 82.90 KB Jul 30, 2016 7.0.3 461 download Immersive v1.5.2 releaseDownload
v1.5.1 release 82.70 KB Jul 24, 2016 7.0.3 430 download Immersive v1.5.1 releaseDownload
v1.5.0 release 82.51 KB Jul 24, 2016 7.0.3 323 download Immersive v1.5.0 releaseDownload
v1.4.4 release 80.96 KB Jul 20, 2016 7.0.3 563 download Immersive v1.4.4 releaseDownload
v1.4.3 release 80.96 KB Jul 20, 2016 7.0.3 276 download Immersive v1.4.3 releaseDownload
v1.4.2 release 80.96 KB Jul 9, 2016 6.2.4 501 download Immersive v1.4.2 releaseDownload
v1.4.1 release 80.96 KB Jun 16, 2016 6.2.4 516 download Immersive v1.4.1 releaseDownload
v1.4.0 release 80.48 KB Jun 9, 2016 6.2.4 442 download Immersive v1.4.0 releaseDownload
v1.3.1 release 79.86 KB Mar 31, 2016 6.2.4 676 download Immersive v1.3.1 releaseDownload
v1.3.0 release 77.99 KB Mar 7, 2016 6.2.3 427 download Immersive v1.3.0 releaseDownload
v1.2.1 release 71.82 KB Mar 2, 2016 6.2.3 327 download Immersive v1.2.1 releaseDownload
v1.2.0 release 71.63 KB Feb 27, 2016 6.2.3 459 download Immersive v1.2.0 releaseDownload
v1.1.0 release 65.15 KB Feb 23, 2016 6.2.3 378 download Immersive v1.1.0 releaseDownload
v1.0.0 release 64.17 KB Feb 19, 2016 6.2.3 371 download Immersive v1.0.0 releaseDownload

Screenshots

Description

Share this:

Less HUD, More GAME!

The intention of Immersive is to automatically hide the player’s HUD and only show elements when they are required. This allows you to better appreciate the beauty of WoW’s world and lore without all the screen clutter.

Latest

New in v3.0.0!

  • Added Dragonflight compatibility.

Dragonflight

Known Issues

  • Entering the new HUD “Edit Mode” causes the Blizzard UI Blocked Error. The current workaround I have found for this is to activate the Panic mode to display all on screen elements before entering Edit Mode. I have a few solutions in mind to try and alleviate this issue from occurring.
  • A UI reload may be required to update the hotspots of the UI elements after moving them in Edit Mode. I’ll correct this in a future update.
  • There are a number of LUA error messages when entering the interface options. From the testing I performed it appeared that changing options in Immersive does save any changes made however, as a precaution I recommend making a backup of the “WTF” folder just in case.

Features

Immersive is an extendable framework that manages the visibility of screen elements based on context. Currently supported UIs include:

  • Default Blizzard UI
  • ElvUI (Must manually enable from the interface options)

For example, the player frame shows the player’s health and resource (such as Mana). With Immersive enabled, the player frame is only shown while in combat, when the player does not have maximum health or the player is engaged in an Arena / Battleground.

Immersive adds a unique key-bind called “Activate Panic Mode”, this allows you to set a key-bind that will temporarily disable Immersive and show all onscreen elements.

Some frames have the option to enable unique behaviour such as the chat frame. If the chat frame is in the ‘Chat Gems’ mode and has been hidden by Immersive, each time a new message is received it will create / update a chat gem which represents a single chat channel. Chat channels include Say, Yell, Party etc. Hovering your cursor over a chat gem will display a tooltip indicating the name of the channel and the number of messages received.

Clicking any chat gem will also open the chat frame. If no messages from any channel have been received then a default yellow chat gem is displayed to allow the player to open the chat frame.

http://legacy.curseforge.com/media/images/88/289/3.png   http://legacy.curseforge.com/media/images/88/290/4.png   http://legacy.curseforge.com/media/images/88/291/5.png

Most frames can be shown by mousing over the area where the frame normally occupies. Some exceptions exist such as the chat frame operating in ‘Chat Gems’ mode.

Known Issues

  • Raid frames backgrounds sometimes are not faded correctly when new members join the group.
  • Hotspots sometimes do not match the elements location when using ElvUI.

Suggestions

  • Third Party GUI: Add support for LUI.
  • Third Party GUI: Add support for Tukui.
  • Expand Gems Mode: Add Gems Mode support for other frames such as Raid, Quest Tracker, Minimap etc.
  • Gem Click/Hover: Add the option for an element to activate from a gem on a click or by mouse-over.

For Developers

Basic Integration

Immersive provides a simple extension point that allows mod developers to include their HUD elements into the framework. Firstly, we need access to the Immersive api service. This is achieved with the following code:

local Engine, Api, Locale, Settings = unpack(Immersive)

The Api service gives us access to the following functions:

  • Api:RegisterElement(name[, params]) Initializes and registers an element instance. An element in Immersive is a collection of on screen frames that share visibility conditions as well as settings such as fade out duration. The name parameter is required and should be globally unique, consider including your addon name for uniqueness. The params parameter is optional and provides the defaults for the element. The current supported defaults are as follows:
    • Enabled: Indicates if the element has been enabled or disabled by the player in the interface options.
    • DelayTime: The delay (in seconds) before an element begins to fade out.
    • FadeTime: The amount of time (in seconds) an element takes to fade out.
    • IsHotspot: Determines if any registered hotspots are checked during an elements validation, if disabled an element cannot be activated by mouseover.
    • Mode: The mode indicates if all conditions must be met to activate an element or if any condition can be met to activate an element. This value defaults to a value of “ANY”.
  • Api:GetElement(name) Get an existing element instance with the specified name.
  • Api:UnregisterElement(name) Unregisters an element instance with the specified name.
  • Api:UnregisterAllElements() Unregisters all element instances. This affects all elements globally and should be avoided!
  • Api:RegisterCondition(name, func, title, tooltip) Registers a condition for use in multiple modules. This registration process is utilized by the element:AddConditionRange function to allow player configurability. The title and tooltip properties are provided for localization purposes.
  • Api:UnregisterCondition(name) Unregisters a condition with the specified name.
  • Api:UnregisterAllConditions() Unregisters all conditions. This affects all elements globally and should be avoided!
  • Api:RegisterMode(name, validate, title) Registers an operation mode for use in multiple modules. This allows you to specify a custom behaviour for an element. The following modes are provided by default:
    • ANY: An element is activated if any condition is met.
    • ALL: An element is activated only if all conditions are met.
    • HIDDEN: An element is never activated by any condition, the element can still be activated if a hotspot is enabled.
  • Api:GetMode(name) Get an existing operation mode with the specified name.
  • Api:GetAvailableModes(element) Gets all available modes based on the specified element. Some operation modes are restricted to certain elements.

An example of registering an element might be:

local element = Api:RegisterElement("CoolAddonElement")

Once an element is registered with the framework we can begin the integration. The following properties are available to be changed:

  • element.Name The name of the element. This is the name provided to Api:RegisterElement.
  • element.Enabled Indicates if the element has been enabled or disabled by the player in the interface options.
  • element.DelayTime The delay (in seconds) before an element begins to fade out. See element:Apply() below.
  • element.FadeTime The amount of time (in seconds) an element takes to fade out. See element:Apply() below.
  • element.IsHotspot Determines if any registered hotspots are checked during an elements validation, if disabled an element cannot be activated by mouseover.
  • element.Mode The mode indicates if all conditions must be met to activate an element or if any condition can be met to activate an element. This value defaults to a value of “Any”.
  • element.Animation This is the underlying Frame created to handle the fading animation. (see WoW Api CreateFrame). Access to this object can be useful when needing to handled events. Manipulating this object directly is only required in advanced scenarios.
  • element.Animation.FadeIn This is the underlying AnimationGroup created to handle fading in. Manipulating this object directly is only required in advanced scenarios.
  • element.Animation.FadeOut This is the underlying AnimationGroup created to handle fading out. Manipulating this object directly is only required in advanced scenarios.

The following functions are available to be called:

  • element:AddFrame(frame) Adds a frame to the element collection to be managed and animated.
  • element:RemoveFrame(frame) Removes an existing frame from the element collection.
  • element:AddCondition(func) Adds a condition that will determine the behaviour of all attached frames. The specified function should return either a true or false value, and depending on the mode of the element this will determine if it should be activated.
  • element:AddConditionRange(range) Adds a range of preregistered conditions, the condition is only added if the value of the pair is true. This function is typically used in conjunction the settings database. An example of a settings object that would be passed into the function could be the following: { IsInCombat = true }
  • element:RemoveCondition(func) Removes an existing condition.
  • element:AddHotspot(left, bottom, width, height) Adds a hotspot for the element. A hotspot indicates a region of the screen (in pixels) that the player can mouseover in order to force the element to activate.
  • element:RemoveHotspot(left, bottom, width, height) Removes an existing hotspot from the element.
  • element:ClearHotspots() Removes all existing hotspots from the element.
  • element:Apply() This function applies any changes made to the element.DelayTime or element.FadeTime properties.

The following callbacks are also available to be utilized:

  • element.OnFadeIn = function(frame, alpha) … end Triggers each game update for each frame in the element that has its alpha changed. Both the frame and the alpha it was changed to are available in the callback.
  • element.OnFadeOut = function(frame, alpha) … end Triggers each game update for each frame in the element that has its alpha changed. Both the frame and the alpha it was changed to are available in the callback.
  • element.OnBeforeUpdate = function(frame) … end Triggers each game update for each frame in the element before any alpha changes occur.
  • element.OnAfterUpdate = function(frame) … end Triggers each game update for each frame in the element after any alpha changes occur.

Advanced Integration

In advanced scenarios it is also possible to create a seperate module that will be managed by Immersive. Please refer to the ‘Default’ module in Immersive as an example of how you might create and structure a module. Below is also a simplified example of a module declaration:

local Engine, Api, Locale, Settings = unpack(Immersive)

-- Registration
local CoolAddon = Engine:RegisterModule("CoolAddonModule")

-- Initialize the module.
function CoolAddon:OnInitialize()
end

-- Called when the module is enabled.
function CoolAddon:OnEnable()
end

-- Called when the module is disabled.
function CoolAddon:OnDisable()
end

-- Register the default settings for the module.
function CoolAddon:OnRegisterDefaults()
  return {
    Enabled = true,
    IsCool = true
  }
end

-- Registers controls for the options panel
function CoolAddon:OnRegisterOptions()
  local settings = Settings:Get(self.Name)
  local panel = CreateFrame("Frame")

  panel.name = "Cool Addon"
  panel.parent = Locale.CONFIG_MODULE_IMMERSIVE_NAME

  panel.okay = function()
    -- Apply options
  end
  panel.cancel = function()
    -- Cancel options
  end
  panel.default = function()
    -- Set options to default
  end
  panel.refresh = function()
    -- Refresh options controls to match settings
  end
end

Comments

Add a comment