Untitled

 avatar
unknown
csharp
2 months ago
2.4 kB
5
Indexable
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

using NativeWebSocket;

public class WebSocketHandler : MonoBehaviour
{
    WebSocket websocket;

    [SerializeField] private Camera playerCam;
    [SerializeField] private IP_Drone_Inputs input;

    private enum lookDir
    {
        down,
        up,
        forward,
    }

    private lookDir lookingDir;

    private bool isDriving;

    // Start is called before the first frame update
    async void Start()
    {
        websocket = new WebSocket("ws://dronepi:8085/");

        websocket.OnOpen += () =>
        {
            websocket.SendText("PWS DRONE?");
            Debug.Log("Connection open!");
        };

        websocket.OnError += (e) =>
        {
            Debug.Log("Error! " + e);
        };

        websocket.OnClose += (e) =>
        {
            Debug.Log("Connection closed!");
        };

        websocket.OnMessage += (bytes) =>
        {
            var message = System.Text.Encoding.UTF8.GetString(bytes);
            Debug.Log("Received Message from Websocket: " + message);
        };

        // Keep sending messages at every 0.3s
        InvokeRepeating("SendWebSocketMessage", 0.0f, 0.3f);

        // waiting for messages
        await websocket.Connect();
    }

    void Update()
    {
#if !UNITY_WEBGL || UNITY_EDITOR
        websocket.DispatchMessageQueue();
#endif
    }

    async void SendWebSocketMessage()
    {
        if (playerCam.transform.rotation.x > 0)
        {
            lookingDir = lookDir.down;
        }
        else if (playerCam.transform.rotation.x == 0)
        {
            lookingDir = lookDir.forward;
        }
        else
        {
            lookingDir = lookDir.up;
        }

        if (input.Throttle > 0f)
        {
            isDriving = true;
        }
        else
        {
            isDriving = false;
        }

        Debug.Log("Rotation: " + playerCam.transform.rotation.y + " Driving: " + isDriving + " Looking: " + lookingDir);

        if (websocket.State == WebSocketState.Open)
        {
            await websocket.SendText("Rotation: " + playerCam.transform.rotation.y + " Driving: " + isDriving + " Looking: " + lookingDir);
        }
    }

    private async void OnApplicationQuit()
    {
        await websocket.Close();
    }

}
Editor is loading...
Leave a Comment