Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ScriptableObject + Cross-scene reference support #3

Draft
wants to merge 8 commits into
base: master
Choose a base branch
from

Commits on Aug 9, 2020

  1. ScriptableObject + cross-scene reference support

    Added ScriptableObject version of the ToDo list. Works identical to the MonoBehaviour version, just isn't attached to a Scene.
    Added ToDo lists to Create menus and "Cyan" heading to AddComponent menu
    Added SceneReferencesHandler which is automatically added to a scene when required.
    It's now possible to link objects to a task which are cross-scene, or scene-based on a prefab or ScriptableObject ToDo list. This has only been tested in 2020.1 currently.
    
    How it works :
    When dragging an object onto a task from a different scene, or from a scene when the ToDo list is a prefab/ScriptableObject, a SceneReferencesHandler object is created and added to the scene - hidden from the Hierarchy but still serialised in scene. The dragged object is registered with the handler, which assigns it a unique ID, adds it to a SerializableDictionary and saves the scene. The task can then reference and serialise the SceneAsset (in element.objectReference) and the ID (in element.objectReferenceID). When the task is visible in-editor, it will attempt to obtain the SceneReferenceHandler from the SceneAsset (if loaded, sidenote : won't work at runtime sadly, would need to save the scene name/path/buildIndex instead). With this it can obtain the object from the ID and show it in the object field. Fields which are serialised in this way are marked with a asterisk.
    Cyanilux committed Aug 9, 2020
    Configuration menu
    Copy the full SHA
    5102254 View commit details
    Browse the repository at this point in the history
  2. SceneReferencesHandler fix

    Fixed issue with reference handler not being marked dirty, so wasn't being saved. Thought Undo.RecordObject would handle it, but apparently it doesn't when using HideFlags to hide from hierarchy.
    Cyanilux committed Aug 9, 2020
    Configuration menu
    Copy the full SHA
    42d954b View commit details
    Browse the repository at this point in the history

Commits on Aug 11, 2020

  1. Serialisation fixes for Unity 2018/2019

    SceneReferenceHandler is now correctly serialised in 2018/2019 versions.
    Cyanilux committed Aug 11, 2020
    Configuration menu
    Copy the full SHA
    1d67722 View commit details
    Browse the repository at this point in the history
  2. Update README.md

    Cyanilux committed Aug 11, 2020
    Configuration menu
    Copy the full SHA
    83a2e2c View commit details
    Browse the repository at this point in the history
  3. Update README.md

    Cyanilux committed Aug 11, 2020
    Configuration menu
    Copy the full SHA
    9d0e9dd View commit details
    Browse the repository at this point in the history

Commits on Aug 13, 2020

  1. Bug fixes

    Fixed issues with saving prefab instance modifications
    Fixed issue with dark mode text colour. Text cursor also now uses the same colour as the text.
    Removed debug messages
    Cyanilux committed Aug 13, 2020
    Configuration menu
    Copy the full SHA
    28f45d9 View commit details
    Browse the repository at this point in the history
  2. Changed create menu names

    GameObject Create menu now shows as "To Do List (MonoBehaviour)"
    Asset Create menu now shows as "To Do List (ScriptableObject)"
    Cyanilux committed Aug 13, 2020
    Configuration menu
    Copy the full SHA
    0c079ec View commit details
    Browse the repository at this point in the history
  3. Fix for Unity versions prior to 2019.2

    Added UNITY_2019_2_OR_NEWER check for TryGetComponent usage in GetSceneReferencesHandler to prevent error in previous versions. Just uses GetComponent and null check instead.
    Cyanilux committed Aug 13, 2020
    Configuration menu
    Copy the full SHA
    76a59df View commit details
    Browse the repository at this point in the history