Skip to content

Instantly share code, notes, and snippets.

View icywind's full-sized avatar

Rick Cheng icywind

View GitHub Profile
@icywind
icywind / AgoraVideoController.cs
Created October 21, 2019 19:05
Interface to the Agora Video SDK to do join channel, show video, mute microphone, flip camera, etc.
using UnityEngine;
using agora_gaming_rtc;
using Tanks.TankControllers;
#if (UNITY_ANDROID && UNITY_2018_3_OR_NEWER)
using UnityEngine.Android;
#endif
public class AgoraVideoController
@icywind
icywind / AgoraPlayerController.cs
Created October 21, 2019 19:07
Mapping from the Unity Multiplayer's id to Agora user's id
using System;
using System.Collections.Generic;
using UnityEngine;
using TankNt = Tanks.Networking;
public class AgoraPlayerController
{
private Dictionary<TankNt.NetworkPlayer, uint> NetworkToAgoraIDMap = new Dictionary<TankNt.NetworkPlayer, uint>();
private List<TankNt.NetworkPlayer> m_NetworkPlayers = new List<TankNt.NetworkPlayer>();
private List<uint> m_AgoraUserIds = new List<uint>();
@icywind
icywind / TankManager.cs
Last active October 21, 2019 20:41
Partial list of TankManager.cs
// new code
GameManager.AddTank(this);
StartCoroutine(SetupVideoSurface(player));
} // end of Initialize(TanksNetworkPlayer player)
IEnumerator SetupVideoSurface(TanksNetworkPlayer player)
{
Debug.Log("Tank initializing player:" + player);
yield return new WaitForFixedUpdate();
using UnityEngine;
namespace Tanks.Utilities {
public class FixedRotation : MonoBehaviour
{
// Plane facing front
readonly Quaternion m_Rotation = Quaternion.Euler(-45,45,0);
void LateUpdate()
{
using System;
using UnityEngine;
using Tanks.Map;
using Tanks.Rules;
using Tanks.Networking;
using Tanks.Utilities;
#if PLATFORM_ANDROID
using UnityEngine.Android;
#endif
// When a remote user joined, this delegate will be called. Typically
// create a GameObject to render video on it
private void onUserJoined(uint uid, int elapsed)
{
Debug.Log ("onUserJoined: uid = " + uid);
// this is called in main thread
// find a game object to render video stream from 'uid'
GameObject go = GameObject.Find (uid.ToString ());
if (!ReferenceEquals (go, null)) {
@icywind
icywind / RAAR_ShareRenderTexture.cs
Last active March 23, 2020 21:17
RemoteAssistantAR
private void ShareRenderTexture()
{
if (BufferTexture == null) // offlined
{
return;
}
Camera targetCamera = Camera.main; // AR Camera
RenderTexture.active = targetCamera.targetTexture; // the targetTexture holds render texture
Rect rect = new Rect(0, 0, targetCamera.targetTexture.width, targetCamera.targetTexture.height);
BufferTexture.ReadPixels(rect, 0, 0);
@icywind
icywind / RAAR_DrawmarkModel.cs
Created March 23, 2020 21:18
A model for drawing points
[Serializable]
public class DrawmarkModel
{
public Color color;
public List<Vector2> points;
}
@icywind
icywind / CoProcessDrawing.cs
Created March 23, 2020 22:31
Method to send the data
IEnumerator CoProcessDrawing(DrawmarkModel dm)
{
string json = JsonUtility.ToJson(dm);
if (dataStreamId > 0)
{
rtcEngine.SendStreamMessage(dataStreamId, json);
}
yield return null;
}
@icywind
icywind / DrawDots.cs
Created March 23, 2020 23:36
Method to draw the dots from the given position
int dotCount = 0;
/// <summary>
///
/// </summary>
/// <param name="pos">Screen Position</param>
void DrawDot(Vector2 pos)
{
if (anchorGO == null)
{
anchorGO = new GameObject();