Exemplo n.º 1
0
    private static void DrawDroneTools(Crazyflie drone)
    {
        EditorGUI.BeginChangeCheck();
        bool timestampsEnabled = EditorGUILayout.Toggle("Show Timestamps", showTimestamps);
        bool endpointsEnabled  = EditorGUILayout.Toggle("Show Start/End Text", showEndpoints);

        if (EditorGUI.EndChangeCheck())
        {
            EditorPrefs.SetBool(TIMESTAMPS_PREF_KEY, timestampsEnabled);
            EditorPrefs.SetBool(ENDPOINTS_PREF_KEY, endpointsEnabled);
        }

        EditorGUILayout.Space(30.0f);


        EditorGUI.BeginChangeCheck();
        Color updatedColor = EditorGUILayout.ColorField(new GUIContent("Current Color"), drone.LightColor, false, false, false);

        if (EditorGUI.EndChangeCheck())
        {
            drone.SetColorKeyframe(updatedColor, drone.Time);
            EditorApplication.QueuePlayerLoopUpdate();
        }

        EditorGUILayout.Space(10);
        EditorGUI.BeginChangeCheck();
        Vector3 updatedPosition = EditorGUILayout.Vector3Field(new GUIContent("Current Position"), drone.transform.position);

        if (EditorGUI.EndChangeCheck())
        {
            drone.SetWaypoint(updatedPosition, drone.Time);
        }

        EditorGUILayout.Space(10);
    }
Exemplo n.º 2
0
    protected override void OnDrawScene(SceneView scene)
    {
        Waypoint  keyframe = Target;
        Crazyflie drone    = keyframe.Drone;

        CrazyflieEditor.Draw(drone);
        Vector3 position = GlobalTransform.Transfomed(keyframe.Position);

        if (keyframe.JointType != JointType.Linear)
        {
            DrawTangent(keyframe, false);
            DrawTangent(keyframe, true);
        }

        if (targetPoint == 0)
        {
            CustomHandles.DrawCircle(position, 0.0375f, Color.yellow);
            MoveHandle(keyframe, position, 0.06f, 0.045f, keyframe.SetPosition);
        }
        else
        {
            CustomHandles.DrawCircle(position, 0.0375f, Color.white);
        }

        if (Event.current.type == EventType.KeyDown && Event.current.keyCode == KeyCode.Delete)
        {
            drone.RemoveWaypoint(Target);
        }


        // -- GUI -- //
        DrawGUI(keyframe);
    }
Exemplo n.º 3
0
 public void ConnectToInvalidBluetoothID()
 {
     System.Threading.Tasks.Task.Run(async() =>
     {
         Crazyflie c            = new Crazyflie("BluetoothLE#BluetoothLE00:00:00:00:00:00-00:00:00:00:00:00");
         CrazyflieStatus status = await c.InitializeAsync();
         Assert.IsTrue(status == CrazyflieStatus.InvalidDeviceId);
     }).GetAwaiter().GetResult();
 }
Exemplo n.º 4
0
 private static void DrawNonSelected(Crazyflie drone, GizmoType gizmo)
 {
     if (PreferencesMenu.PathEnabled)
     {
         //DrawDroneBounds(drone, Palette.UltraTranslucent);
         List <Waypoint> waypoints = drone.Waypoints;
         CustomHandles.DrawBezierPath(waypoints, Palette.UltraTranslucent, 2.0f);
     }
 }
Exemplo n.º 5
0
    /// -------- DRONE GUI -------- ///


    public static void DrawDroneGUI(Crazyflie drone)
    {
        showTimestamps = EditorPrefs.GetBool(TIMESTAMPS_PREF_KEY, false);
        showEndpoints  = EditorPrefs.GetBool(ENDPOINTS_PREF_KEY, false);

        Rect toolsRect = new Rect(20, 20, 300, 250);

        CustomGUI.Window(toolsRect, "Drone Tools", DrawDroneTools, drone);
    }
Exemplo n.º 6
0
 public void Apply()
 {
     UpdateContainment();
     for (int i = 0; i < containedDroneCount; i++)
     {
         Crazyflie drone = this.hitDrones[i];
         drone.SetColorKeyframe(Evaluate(drone.transform.position), TimelineUtilities.CurrentTime);
     }
     EditorApplication.QueuePlayerLoopUpdate();
 }
Exemplo n.º 7
0
    private void DrawDrones()
    {
        for (int i = 0; i < containedDroneCount; i++)
        {
            Crazyflie drone = this.hitDrones[i];
            Color     color = Evaluate(drone.transform.position);
            CrazyflieEditor.DrawDroneBounds(drone, color * 1.5f, false);

            color.a = 0.5f;
            CrazyflieEditor.DrawDroneBounds(drone, color, true);
        }
    }
Exemplo n.º 8
0
        private void Form1_Load(object sender, EventArgs e)
        {
            //rd = new RadioDriver[NUMS];
            cf = new Crazyflie[NUMS];
            for (int i = 0; i < NUMS; i++)
            {
                //rd[i] = new RadioDriver();
                cf[i] = new Crazyflie();
            }

            RegisterHotKey(Handle, (int)Keys.Up, KeyModifiers.None, Keys.Up);
            RegisterHotKey(Handle, (int)Keys.Down, KeyModifiers.None, Keys.Down);
        }
Exemplo n.º 9
0
        public void InitializeTest()
        {
            IList <string> devices = null;

            System.Threading.Tasks.Task.Run(async() =>
            {
                devices = await Crazyflie.ScanInterfacesAsync();
                Assert.IsTrue(devices.Count >= 1);
                Crazyflie c            = new Crazyflie(devices[0]);
                CrazyflieStatus status = await c.InitializeAsync();
                Assert.IsTrue(status == CrazyflieStatus.Success);
            }).GetAwaiter().GetResult();
        }
Exemplo n.º 10
0
    public static void DrawColorKeyframes(Crazyflie drone, List <Waypoint> waypoints)
    {
        List <ColorKeyframe> colorKeyframes = drone.ColorKeyframes;
        Vector3 dronePosition = drone.transform.position;

        for (int i = 0; i < colorKeyframes.Count; i++)
        {
            ColorKeyframe keyframe = colorKeyframes[i];
            keyframe.Position = KeyframeUtil.GetPosition(waypoints, keyframe.time, dronePosition);
            keyframe.Tangent  = KeyframeUtil.GetTangent(waypoints, keyframe.time, true, true);
            keyframe.Offset   = GetOffset(i, colorKeyframes);

            DrawSelector(keyframe);
        }
    }
Exemplo n.º 11
0
    protected override void OnDrawScene(SceneView scene)
    {
        ColorKeyframe keyframe = Target;
        Crazyflie     drone    = keyframe.Drone;

        CrazyflieEditor.Draw(drone);

        if (Event.current.type == EventType.KeyDown && Event.current.keyCode == KeyCode.Delete)
        {
            drone.RemoveColorKeyframe(keyframe);
        }

        // -- GUI -- //
        DrawGUI(keyframe);
    }
Exemplo n.º 12
0
        public void ScanInterfacesTest()
        {
            // Assuming at least once device is paired, verify it is found.
            IList <string> devices = null;

            System.Threading.Tasks.Task.Run(async() =>
            {
                devices = await Crazyflie.ScanInterfacesAsync();
            }).GetAwaiter().GetResult();
            Assert.IsTrue(devices.Count >= 1);
            Debug.WriteLine("Found devices: ");
            foreach (string device in devices)
            {
                Debug.WriteLine("ID:   " + device);
            }
        }
Exemplo n.º 13
0
    private void UpdateContainment()
    {
        int hitCount = Physics.OverlapBoxNonAlloc(transform.position, 0.5f * transform.lossyScale, this.contained, transform.rotation);

        this.containedDroneCount = 0;
        for (int i = 0; i < hitCount; i++)
        {
            Collider  collider = contained[i];
            Crazyflie drone    = collider.GetComponent <Crazyflie>();

            if (drone == null)
            {
                continue;
            }

            this.hitDrones[containedDroneCount] = drone;
            this.containedDroneCount           += 1;
        }
    }
Exemplo n.º 14
0
    public static void DrawDroneBounds(Crazyflie drone, Color wireColor, bool solid = false)
    {
        Vector3 offsetPosition = drone.transform.position + DroneOffset;
        Color   previousColor  = Handles.color;

        Handles.color = wireColor;
        if (solid)
        {
            Matrix4x4 matrix = Handles.matrix;
            Handles.matrix = Matrix4x4.TRS(offsetPosition, Quaternion.identity, DroneSize);
            Handles.CubeHandleCap(0, Vector3.zero, Quaternion.identity, 1.0f, EventType.Repaint);
            Handles.matrix = matrix;
        }
        else
        {
            Handles.DrawWireCube(offsetPosition, DroneSize);
        }
        Handles.color = previousColor;
    }
Exemplo n.º 15
0
    /// -------- DRONE HANDLES -------- ///

    public static void DrawDroneHandles(Crazyflie drone, bool active)
    {
        float           time      = (float)TimelineUtilities.Director.time;
        List <Waypoint> waypoints = drone.Waypoints;

        CustomHandles.DrawBezierPath(waypoints, Color.white, 2.0f);
        DrawWaypoints(waypoints);
        ColorKeyframeEditor.DrawColorKeyframes(drone, waypoints);
        if (active)
        {
            DrawDroneBounds(drone, Palette.Translucent);
            // DrawDroneBounds(drone, Color.white);

            EditorGUI.BeginChangeCheck();
            Vector3 updatedPosition = CustomHandles.MoveHandle(drone.transform.position, 0.025f, 0.085f);
            if (EditorGUI.EndChangeCheck())
            {
                drone.SetWaypoint(updatedPosition, time);
            }
        }

        //CustomHandles.DrawTangent(waypoints, 0.25f, time);
    }
Exemplo n.º 16
0
    private static void DrawColorKeyframeTools(ColorKeyframe keyframe)
    {
        Crazyflie drone = keyframe.Drone;

        EditorGUI.BeginChangeCheck();
        float updatedTime  = EditorGUILayout.FloatField("Time (seconds)", (float)keyframe.time);
        Color updatedColor = EditorGUILayout.ColorField(new GUIContent("Light Color"), keyframe.LightColor, false, false, false);

        if (EditorGUI.EndChangeCheck())
        {
            Undo.RecordObject(keyframe, "Change Color Keyframe");
            keyframe.time       = Mathf.Max(0, updatedTime);
            keyframe.LightColor = updatedColor;
            drone.UpdateView();
            TimelineEditor.Refresh(RefreshReason.ContentsModified);
        }

        EditorGUILayout.Space(30.0f);
        if (GUILayout.Button("Delete"))
        {
            drone.RemoveColorKeyframe(keyframe);
        }
    }
Exemplo n.º 17
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;
    }
Exemplo n.º 18
0
    private static void DrawWaypointTools(Waypoint waypoint)
    {
        Crazyflie drone = waypoint.Drone;

        EditorGUI.BeginChangeCheck();
        float updatedTime = EditorGUILayout.FloatField("Time (seconds)", (float)waypoint.time);

        JointType updatedJointType = (JointType)EditorGUILayout.EnumPopup("Joint Type", waypoint.JointType);

        EditorGUILayout.Space(10);

        Vector3 updatedPosition = EditorGUILayout.Vector3Field(new GUIContent("Position"), waypoint.Position);

        EditorGUILayout.Space(10);

        GUI.enabled = (updatedJointType == JointType.Continuous);
        Vector3 updatedTangent = EditorGUILayout.Vector3Field(new GUIContent("Tangent"), waypoint.Tangent);

        EditorGUILayout.Space(30);
        GUI.enabled = true;

        if (EditorGUI.EndChangeCheck())
        {
            Undo.RecordObject(waypoint, "Change Waypoint");
            waypoint.time      = Mathf.Max(0, updatedTime);
            waypoint.Position  = updatedPosition;
            waypoint.Tangent   = updatedTangent;
            waypoint.JointType = updatedJointType;
            drone.UpdateView();
            TimelineEditor.Refresh(RefreshReason.ContentsModified);
        }

        if (GUILayout.Button("Delete"))
        {
            drone.RemoveWaypoint(waypoint);
        }
    }
Exemplo n.º 19
0
    protected override void OnDrawScene(SceneView scene)
    {
        Crazyflie drone = Target.Drone;

        CrazyflieEditor.Draw(drone, true);
    }
Exemplo n.º 20
0
 public static void Draw(Crazyflie drone, bool active = false)
 {
     DrawDroneHandles(drone, active);
     DrawDroneGUI(drone);
 }
Exemplo n.º 21
0
 private static void DrawSelected(Crazyflie drone, GizmoType gizmo)
 {
 }
Exemplo n.º 22
0
 public void ResetReferences()
 {
     drone = null;
 }