Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
42 changes: 42 additions & 0 deletions Assets/Editor/ModelsManager.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
using System.IO;
using System.Net;
using UnityEditor;
using UnityEngine;

namespace Editor
{
public static class ModelsManager
{
[MenuItem("Tools/Update Schemas")]
public static void UpdateSchemas()
{
var webClient = new WebClient();

webClient.DownloadFile(
"https://raw.githubusercontent.com/VirtualBrainLab/vbl-aquarium/main/models/csharp/EphysLinkModels.cs",
"Assets/Scripts/EphysLink/EphysLinkModels.cs");

Debug.Log("Schemas updated successfully!");
}

private static void GetSchemas(string srcURL, string outFile)
{

if (!Directory.Exists(outFile))
{
Directory.CreateDirectory(outFile);
}

string[] files = Directory.GetFiles(srcURL, "*.cs");

foreach (string file in files)
{
string fileName = Path.GetFileName(file);
string destFilePath = Path.Combine(outFile, fileName);
File.Copy(file, destFilePath, true);
}

AssetDatabase.Refresh();
}
}
}

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

200 changes: 87 additions & 113 deletions Assets/Scripts/EphysLink/CommunicationManager.cs

Large diffs are not rendered by default.

135 changes: 135 additions & 0 deletions Assets/Scripts/EphysLink/EphysLinkModels.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,135 @@
using UnityEngine;

public struct AngularResponse
{
public Vector3 Angles;
public string Error;

public AngularResponse(Vector3 angles, string error)
{
Angles = angles;
Error = error;
}
}

public struct BooleanStateResponse
{
public bool State;
public string Error;

public BooleanStateResponse(bool state, string error)
{
State = state;
Error = error;
}
}

public struct CanWriteRequest
{
public string ManipulatorId;
public bool CanWrite;
public float Hours;

public CanWriteRequest(string manipulatorId, bool canWrite, float hours)
{
ManipulatorId = manipulatorId;
CanWrite = canWrite;
Hours = hours;
}
}

public struct DriveToDepthRequest
{
public string ManipulatorId;
public float Depth;
public float Speed;

public DriveToDepthRequest(string manipulatorId, float depth, float speed)
{
ManipulatorId = manipulatorId;
Depth = depth;
Speed = speed;
}
}

public struct DriveToDepthResponse
{
public float Depth;
public string Error;

public DriveToDepthResponse(float depth, string error)
{
Depth = depth;
Error = error;
}
}


public struct GetManipulatorsResponse
{
public string[] Manipulators;
public int NumAxes;
public Vector4 Dimensions;
public string Error;

public GetManipulatorsResponse(string[] manipulators, int numAxes, Vector4 dimensions, string error)
{
Manipulators = manipulators;
NumAxes = numAxes;
Dimensions = dimensions;
Error = error;
}
}


public struct GotoPositionRequest
{
public string ManipulatorId;
public Vector4 Position;
public float Speed;

public GotoPositionRequest(string manipulatorId, Vector4 position, float speed)
{
ManipulatorId = manipulatorId;
Position = position;
Speed = speed;
}
}

public struct InsideBrainRequest
{
public string ManipulatorId;
public bool Inside;

public InsideBrainRequest(string manipulatorId, bool inside)
{
ManipulatorId = manipulatorId;
Inside = inside;
}
}


public struct PositionalResponse
{
public Vector4 Position;
public string Error;

public PositionalResponse(Vector4 position, string error)
{
Position = position;
Error = error;
}
}

public struct ShankCountResponse
{
public int ShankCount;
public string Error;

public ShankCountResponse(int shankCount, string error)
{
ShankCount = shankCount;
Error = error;
}
}

11 changes: 11 additions & 0 deletions Assets/Scripts/EphysLink/EphysLinkModels.cs.meta

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

152 changes: 76 additions & 76 deletions Assets/Scripts/Pinpoint/JSON/SceneData.cs
Original file line number Diff line number Diff line change
Expand Up @@ -12,82 +12,82 @@ public struct SceneData

public string Settings;

public static SceneData ToSceneData(string atlasName, string transformName,
RigData[] rigDatas,
ProbeData[] probeDatas,
CraniotomyData[] craniotomyDatas,
string settings)
{
SceneData sceneData = new SceneData();
sceneData.AtlasName = atlasName;
sceneData.TransformName = transformName;
sceneData.Settings = settings;

sceneData.Data = new string[rigDatas.Length + probeDatas.Length];
int di = 0;

foreach (RigData rigData in rigDatas)
{
SceneDataStorage temp = new SceneDataStorage();
temp.Type = SceneDataType.Rig;
temp.Data = JsonUtility.ToJson(rigData);
sceneData.Data[di++] = JsonUtility.ToJson(temp);
}

foreach (ProbeData probeData in probeDatas)
{
SceneDataStorage temp = new SceneDataStorage();
temp.Type = SceneDataType.Probe;
temp.Data = JsonUtility.ToJson(probeData);
sceneData.Data[di++] = JsonUtility.ToJson(temp);
}

foreach (CraniotomyData craniotomyData in craniotomyDatas)
{
SceneDataStorage temp = new SceneDataStorage();
temp.Type = SceneDataType.Craniotomy;
temp.Data = JsonUtility.ToJson(craniotomyData);
sceneData.Data[di++] = JsonUtility.ToJson(temp);
}

return sceneData;
}

public static (string atlasName, string transformName,
RigData[] rigDatas,
ProbeData[] probeDatas,
CraniotomyData[] craniotomyDatas) FromSceneData(string sceneDataJSON)
{
SceneData sceneData = JsonUtility.FromJson<SceneData>(sceneDataJSON);
string atlasName = sceneData.AtlasName;
string transformName = sceneData.TransformName;

List<RigData> rigDatas = new List<RigData>();
List<ProbeData> probeDatas = new List<ProbeData>();
List<CraniotomyData> craniotomyDatas = new();

foreach (string data in sceneData.Data)
{
SceneDataStorage temp = JsonUtility.FromJson<SceneDataStorage>(data);
switch (temp.Type)
{
case SceneDataType.Probe:
probeDatas.Add(JsonUtility.FromJson<ProbeData>(temp.Data));
break;
case SceneDataType.Rig:
rigDatas.Add(JsonUtility.FromJson<RigData>(temp.Data));
break;
case SceneDataType.Craniotomy:
craniotomyDatas.Add(JsonUtility.FromJson<CraniotomyData>(temp.Data));
break;
}
}

return (atlasName, transformName,
rigDatas.ToArray(),
probeDatas.ToArray(),
craniotomyDatas.ToArray());
}
// public static SceneData ToSceneData(string atlasName, string transformName,
// RigData[] rigDatas,
// ProbeData[] probeDatas,
// CraniotomyData[] craniotomyDatas,
// string settings)
// {
// SceneData sceneData = new SceneData();
// sceneData.AtlasName = atlasName;
// sceneData.TransformName = transformName;
// sceneData.Settings = settings;
//
// sceneData.Data = new string[rigDatas.Length + probeDatas.Length];
// int di = 0;
//
// foreach (RigData rigData in rigDatas)
// {
// SceneDataStorage temp = new SceneDataStorage();
// temp.Type = SceneDataType.Rig;
// temp.Data = JsonUtility.ToJson(rigData);
// sceneData.Data[di++] = JsonUtility.ToJson(temp);
// }
//
// foreach (ProbeData probeData in probeDatas)
// {
// SceneDataStorage temp = new SceneDataStorage();
// temp.Type = SceneDataType.Probe;
// temp.Data = JsonUtility.ToJson(probeData);
// sceneData.Data[di++] = JsonUtility.ToJson(temp);
// }
//
// foreach (CraniotomyData craniotomyData in craniotomyDatas)
// {
// SceneDataStorage temp = new SceneDataStorage();
// temp.Type = SceneDataType.Craniotomy;
// temp.Data = JsonUtility.ToJson(craniotomyData);
// sceneData.Data[di++] = JsonUtility.ToJson(temp);
// }
//
// return sceneData;
// }
// public static (string atlasName, string transformName,
// RigData[] rigDatas,
// ProbeData[] probeDatas,
// CraniotomyData[] craniotomyDatas) FromSceneData(string sceneDataJSON)
// {
// SceneData sceneData = JsonUtility.FromJson<SceneData>(sceneDataJSON);
// string atlasName = sceneData.AtlasName;
// string transformName = sceneData.TransformName;
//
// List<RigData> rigDatas = new List<RigData>();
// List<ProbeData> probeDatas = new List<ProbeData>();
// List<CraniotomyData> craniotomyDatas = new();
//
// foreach (string data in sceneData.Data)
// {
// SceneDataStorage temp = JsonUtility.FromJson<SceneDataStorage>(data);
// switch (temp.Type)
// {
// case SceneDataType.Probe:
// probeDatas.Add(JsonUtility.FromJson<ProbeData>(temp.Data));
// break;
// case SceneDataType.Rig:
// rigDatas.Add(JsonUtility.FromJson<RigData>(temp.Data));
// break;
// case SceneDataType.Craniotomy:
// craniotomyDatas.Add(JsonUtility.FromJson<CraniotomyData>(temp.Data));
// break;
// }
// }
//
// return (atlasName, transformName,
// rigDatas.ToArray(),
// probeDatas.ToArray(),
// craniotomyDatas.ToArray());
// }

public override string ToString()
{
Expand Down
Loading