/// <summary>
        /// Records the current state of the provided scene object header, and generates a diff with the next state at the
        /// end of the frame. If change is detected an undo operation will be recorded. Generally you want to call this
        /// just before you are about to make a change to the scene object header.
        ///
        /// Note this will not record the entire scene object, but rather just its name, transform, active state and
        /// potentially other similar properties. It's components as well as hierarchy state are ignored.
        /// </summary>
        /// <param name="objs">Scene objects to record the state of.</param>
        public static void RecordSceneObjectHeader(SceneObject[] objs)
        {
            SceneObjectHeaderToRecord so = new SceneObjectHeaderToRecord(objs, null);

            sceneObjectHeaders.Add(so);
        }
        /// <summary>
        /// Records the current state of the provided scene object header, and generates a diff with the next state at the
        /// end of the frame. If change is detected an undo operation will be recorded. Generally you want to call this
        /// just before you are about to make a change to the scene object header.
        ///
        /// Note this will not record the entire scene object, but rather just its name, transform, active state and
        /// potentially other similar properties. It's components as well as hierarchy state are ignored.
        /// </summary>
        /// <param name="obj">Scene object to record the state of.</param>
        /// <param name="fieldName">
        /// Name to the field which should be focused when performing the undo/redo operation.
        /// </param>
        public static void RecordSceneObjectHeader(SceneObject obj, string fieldName)
        {
            SceneObjectHeaderToRecord so = new SceneObjectHeaderToRecord(obj, fieldName);

            sceneObjectHeaders.Add(so);
        }