Exemplo n.º 1
0
    static void CreateDrone()
    {
        if (DroneTemplate == null)
        {
            DroneTemplate = Resources.Load <GameObject>("Prefabs/crazyflie");
        }

        string operationName = "Create Drone";

        Undo.RecordObject(Director, operationName);
        Undo.RecordObject(Timeline, operationName);

        int        droneCount = FindObjectsOfType <Crazyflie>().Length;
        GameObject drone      = (GameObject)PrefabUtility.InstantiatePrefab(DroneTemplate);

        drone.name = $"Drone {droneCount}";
        drone.transform.position = new Vector3(0, 0.5f, 0);
        drone.transform.SetAsLastSibling();

        CrazyflieTrack track     = Timeline.CreateTrack <CrazyflieTrack>(drone.name + " Track");
        Crazyflie      crazyflie = drone.GetComponent <Crazyflie>();

        crazyflie?.Initialize(track);
        crazyflie?.SetColorKeyframe(Color.black, 0.0f);
        crazyflie?.SetWaypoint(drone.transform.position, 0.0f);
        Director.SetGenericBinding(track, crazyflie);

        AssetDatabase.Refresh();
        EditorUtility.SetDirty(Timeline);
        EditorUtility.SetDirty(track);
        EditorUtility.SetDirty(Director);
        UnityEditor.Timeline.TimelineEditor.Refresh(UnityEditor.Timeline.RefreshReason.ContentsAddedOrRemoved);

        Undo.RegisterCreatedObjectUndo(drone, "Create Drone");
        Undo.RegisterCreatedObjectUndo(track, "Create Drone");
        Selection.activeObject = drone;
    }