# Patch Notes - v2.0

{% hint style="success" %}
**Version 2.0 - October 2025 (CURRENT)**

* Created brand new unified, single scripts for controlling both keypad and phone systems in one package
  * CodeDeviceController script
  * CodeDevice Interactor
  * CodeDevice Item
  * CodeDevice UI Manager
  * CodeDeviceDisableManager
    * This now has UnityEvents for easier enabling or disabling components, scripts or other assets taht aren't directly tied to script (But giving full code flexibility too)
  * Keypad Controller
  * Phone Controller
* Added phone system into the assets
  * Added new models, canvas and audio integration
* Added new Raycast interact prompt for showing button press when interacting (Inside UI Manager and interactor)
* Added new Door Controller script&#x20;
* Added new sound effects for the phone system
* Added a boolean check to all managers to keep them between scenes
* Updated UI Icons
* Created new CodeDeviceTrigger script with fixes renamed from KeypadTrigger
  {% endhint %}

{% hint style="info" %}
**Version 1.5 - June 2024**

* Upgraded all text UI elements to TextMeshPro
  * Renamed and optimised all UI elements
  * Edited controller script to take TMP input fields
* Added new persistence boolean for all managers, so users can easily decide whether to keep these in upcoming scenes
* Added brand new null checks for Interactor and UI manager so references are more easily identified for issues
* General script optimisations
  {% endhint %}

{% hint style="info" %}
**Version 1.4 - July 2023**

* Added **11 new sounds effects** for various different interactions
* Added brand new Keypad Type: **C4 Explosive**&#x20;
  * Added new bomb UI and integrated with current code
  * Added grid layout for ButtonContainer to keep it organised
* Removed custom inspector from **KeypadController**
* Refactored **KeypadController**
  * Added sound effect for initial interaction of the keypad
  * Added sound effects for correct code input
  * Added a split for opening and closing sounds
* **KPUIManager** to use every more efficiently
* **Keypad UI Canvas** Changes:
  * Renamed all UI elements for all canvases to match styles
  * Added new grid container groups for buttons for easier modification&#x20;
* **DisableManager** fixes
  * Added null checks and log errors to the disable manager for better explanations
  * Disabled the **KeypadInteractor** script to avoid sound duplication issues
* Resized entire demo scene for 1.8m average human
* Renamed **KeypadRaycast** to **KeypadInteractor**
* Edited **AudioManager** to now use SO main object instead of names
* Made **Sound** script generic
* Fixed GUID issues by duplicating all scripts to avoid conflicts
* Appled root motion to all doors
  {% endhint %}

{% hint style="info" %}
**Version 1.3 - July 2022**

* Created new "UIManager"
  * Moved Crosshair UI from the raycast manager to the UIManager
  * Moved all UI's to "UIManager" and refined "KeypadController"
* Removed UI references from "KeypadController"
  * Custom Editor written for this script
  * Added new ScriptableObjects for audio
  * Added multiple interactions for codes. Unlimited events can be created
* Refined the "DisableManager"
  * Moved Crosshair UI from this and refined the system
* Created new ScriptableObjects for audio
* Renamed "KeypadItemController" to "KeypadItem"
* Updated "KeypadTrigger" script to remove UI elements and refinements
* Created a "RemoveTag" script so this can be added to an event, if you don't wish to interact with the keypad after a certain interaction
  {% endhint %}

{% hint style="info" %}
V**ersion 1.2.3 - August 2021 (CURRENT)**

* Updates to documentation online and with included .PDF
* Update to the raycast script to check for a tag for easy disabling
* Updated the "**KeypadController**" script to stop interactions happening when valid code is found and closing the keypad on correct code
* Updated the trigger event on the "**KeypadController**" so the trigger would be disabled when the valid code is approved
  {% endhint %}

{% hint style="info" %}
**Version 1.2.2 - June 2021**

* Added a new Raycast so tags and layers aren't needed anymore
* Re-imported all keypad models to a 1, 1, 1 scale&#x20;
* Added a way to close the keypad with a right click&#x20;
  {% endhint %}

{% hint style="info" %}
**Version 1.2.1 - March 2021**

* Scripting Changes:
  * Removed Unity warnings from included scripts
  * Created a variable for door controller example - Meaning animation name can be easily changed in the inspector
  * Created a set of variables in the "KeypadController" so sounds can easily be changed via name based on the "AudioManager" strings
  * Refactored some basic elements of scripts to make them more optimised and efficient
  * Updated Raycast script to change the way you can exclude certain layers from being detected - For example, stopping the raycast go through walls
* Miscellaneous
  * Reduced asset file size by removing baked lighting data
  * Created new basic material for trigger event boxes, making them more visible
  * Updated display text material - Stops 3D being rendered over other 3D world objects
  * Updated package to Unity 2018.4 (As per Unity rules)
    {% endhint %}

{% hint style="info" %}
**Version 1.2 – July 2020**

* UI Changes:
  * Edited the canvas layout and the way it is display in Unity
* Scripting Changes
  * Updated the Keypad Controller to incorporate “**UnityEvents**” to make successful code interaction multi-use, meaning you can produce multiple outcomes with ease
  * Added a new Audio Manager, so more sounds can be added and called within script
  * Added a new input manager, which allows easy control of all inputs from one place
  * Refactored the Raycast, KeypadController, ItemControllers and more!
* Miscellaneous
  * Updated and edited sounds, textures and materials
  * Added new manager examples to the prefabs and demo scene
  * Update all prefabs and set them to 0, 0, 0 for future use Changed tag type to only require “Keypad” on each item
    {% endhint %}

{% hint style="info" %}
**Version 1.1 – June 2020**&#x20;

* Added a trigger event for games that use systems other than First Person (For Example: 3rd Person Controller Integration)
* Created custom inputs for the raycast in the inspector for easy customisation
* Refactored and renamed code to be more consistent and optimised throughout
* Anchored all UI’s for correct functionality
  {% endhint %}

{% hint style="info" %}
**Version 1.0 – May 2020**

* Initial Release
  {% endhint %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://speedtutoruk.gitbook.io/keypad-system-doc/development/patch-notes-v1.2.1.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
