internal static void Callback(CustomEventData customEventData)
 {
     if (customEventData.type == ASSIGNTRACKPARENT)
     {
         NoodleParentTrackEventData?noodleData = TryGetEventData <NoodleParentTrackEventData>(customEventData);
         if (noodleData != null)
         {
             IEnumerable <Track> tracks = noodleData.ChildrenTracks;
             Track parentTrack          = noodleData.ParentTrack;
             ParentObject.AssignTrack(tracks, parentTrack, noodleData.WorldPositionStays, noodleData.Position, noodleData.Rotation, noodleData.LocalRotation, noodleData.Scale);
         }
     }
 }
 internal static void Callback(CustomEventData customEventData)
 {
     if (customEventData.type == ASSIGNTRACKPARENT)
     {
         NoodleParentTrackEventData noodleData = (NoodleParentTrackEventData)NoodleEventDatas[customEventData];
         IEnumerable <Track>        tracks     = noodleData.ChildrenTracks;
         Track parentTrack = noodleData.ParentTrack;
         if (tracks != null && parentTrack != null)
         {
             ParentObject.AssignTrack(tracks, parentTrack, noodleData.Position, noodleData.Rotation, noodleData.LocalRotation, noodleData.Scale);
         }
         else
         {
             NoodleLogger.Log($"Missing _parentTrack or _childrenTracks!", IPA.Logging.Logger.Level.Error);
         }
     }
 }
        internal static void Callback(CustomEventData customEventData)
        {
            if (customEventData.type == "AssignTrackParent")
            {
                Track parentTrack          = GetTrack(customEventData.data, "_parentTrack");
                IEnumerable <Track> tracks = GetTrackArray(customEventData.data, "_childrenTracks");

                IEnumerable <float> position  = ((List <object>)Trees.at(customEventData.data, POSITION))?.Select(n => Convert.ToSingle(n));
                Vector3?            posVector = null;
                if (position != null)
                {
                    posVector = new Vector3(position.ElementAt(0), position.ElementAt(1), position.ElementAt(2));
                }

                IEnumerable <float> rotation      = ((List <object>)Trees.at(customEventData.data, ROTATION))?.Select(n => Convert.ToSingle(n));
                Quaternion?         rotQuaternion = null;
                if (rotation != null)
                {
                    rotQuaternion = Quaternion.Euler(rotation.ElementAt(0), rotation.ElementAt(1), rotation.ElementAt(2));
                }

                IEnumerable <float> localrot           = ((List <object>)Trees.at(customEventData.data, LOCALROTATION))?.Select(n => Convert.ToSingle(n));
                Quaternion?         localRotQuaternion = null;
                if (localrot != null)
                {
                    localRotQuaternion = Quaternion.Euler(localrot.ElementAt(0), localrot.ElementAt(1), localrot.ElementAt(2));
                }

                IEnumerable <float> scale       = ((List <object>)Trees.at(customEventData.data, SCALE))?.Select(n => Convert.ToSingle(n));
                Vector3?            scaleVector = null;
                if (scale != null)
                {
                    scaleVector = new Vector3(scale.ElementAt(0), scale.ElementAt(1), scale.ElementAt(2));
                }

                if (tracks != null && parentTrack != null)
                {
                    ParentObject.AssignTrack(tracks, parentTrack, posVector, rotQuaternion, localRotQuaternion, scaleVector);
                }
            }
        }