Newer
Older
lacoche
committed
using System;
Sylvain Buche
committed
using System.Collections.Generic;
lacoche
committed
using UnityEngine;
public class WorldAnalysisUnityHelper
{
/// <summary>
/// Convert a float array of length 3 to a Vector3
/// </summary>
/// <param name="value">the values to convert</param>
Sylvain Buche
committed
/// <returns>Converted Unity Vector3</returns>
lacoche
committed
/// <exception cref="ArgumentException"></exception>
public static Vector3 ConvertETSIVector3ToUnity(ETSI.ARF.OpenAPI.WorldAnalysis.Vector3 value)
{
if (value.Count == 3) return new Vector3(value[0], value[1], value[2]);
throw new ArgumentException("The numer of floats in the value parameter must be 3!");
}
/// <summary>
/// Convert a float array of length 4 to a Quaternion
/// </summary>
/// <param name="value">the values to convert</param>
Sylvain Buche
committed
/// <returns>Converted Unity Quaternion</returns>
lacoche
committed
/// <exception cref="ArgumentException"></exception>
public static Quaternion ConvertETSIARFQuaternionToUnity(ETSI.ARF.OpenAPI.WorldAnalysis.Quaternion value)
{
if (value.Count == 4) return new Quaternion(value[0], value[1], value[2], value[3]);
throw new ArgumentException("The numer of floats in the value parameter must be 4!");
}
/// <summary>
/// Convert a float array of length 16 to a Matrix
/// </summary>
Sylvain Buche
committed
/// <param name="matrix">the values to convert</param>
/// <returns>Converted Unity Matrix</returns>
public static Matrix4x4 ConvertETSIARFTransform3DToUnity(ETSI.ARF.OpenAPI.WorldStorage.Transform3D value)
lacoche
committed
{
if (value.Count == 16)
{
Matrix4x4 resul = new Matrix4x4();
resul[0, 0] = value[0];
resul[0, 1] = value[1];
resul[0, 2] = value[2];
resul[0, 3] = value[3];
resul[1, 0] = value[4];
resul[1, 1] = value[5];
resul[1, 2] = value[6];
resul[1, 3] = value[7];
resul[2, 0] = value[8];
resul[2, 1] = value[9];
resul[2, 2] = value[10];
resul[2, 3] = value[11];
resul[3, 0] = value[12];
resul[3, 1] = value[13];
resul[3, 2] = value[14];
resul[3, 3] = value[15];
return resul;
}
else
{
throw new ArgumentException("The numer of floats in the value parameter must be 16!");
}
}
Sylvain Buche
committed
/// <summary>
/// Function to extract translation from a Matrix4x4
/// </summary>
/// <param name="matrix"></param>
/// <returns></returns>
public static Vector3 ExtractTranslationFromMatrix(Matrix4x4 matrix)
{
return matrix.GetColumn(3);
}
/// <summary>
/// Function to extract rotation from a Matrix4x4
/// </summary>
/// <param name="matrix"></param>
/// <returns></returns>
public static Quaternion ExtractRotationFromMatrix(Matrix4x4 matrix)
{
// Convert the matrix to a Quaternion
return Quaternion.LookRotation(matrix.GetColumn(2), matrix.GetColumn(1));
}
Sylvain Buche
committed
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
/// <summary>
/// Duplicated generated code means that we need conversion between similar types
/// </summary>
/// <param name="value">world storage capability</param>
/// <returns>clone</returns>
public static ETSI.ARF.OpenAPI.WorldAnalysis.Capability ConvertWorldStorageCapability(ETSI.ARF.OpenAPI.WorldStorage.Capability value)
{
ETSI.ARF.OpenAPI.WorldAnalysis.Capability resul = new ETSI.ARF.OpenAPI.WorldAnalysis.Capability();
resul.TrackableType = (ETSI.ARF.OpenAPI.WorldAnalysis.TrackableType)((int)value.TrackableType);
resul.EncodingInformation = ConvertWorldStorageEncodingInformation(value.EncodingInformation);
resul.Framerate = value.Framerate;
resul.Latency = value.Latency;
resul.Accuracy = value.Accuracy;
resul.AdditionalProperties = value.AdditionalProperties; // need copy?
return resul;
}
/// <summary>
/// Duplicated generated code means that we need conversion between similar types
/// </summary>
/// <param name="value">world storage encodinginformation</param>
/// <returns>clone</returns>
public static ETSI.ARF.OpenAPI.WorldAnalysis.EncodingInformationStructure ConvertWorldStorageEncodingInformation(ETSI.ARF.OpenAPI.WorldStorage.EncodingInformationStructure value)
{
ETSI.ARF.OpenAPI.WorldAnalysis.EncodingInformationStructure resul = new ETSI.ARF.OpenAPI.WorldAnalysis.EncodingInformationStructure();
resul.DataFormat = (ETSI.ARF.OpenAPI.WorldAnalysis.EncodingInformationStructureDataFormat)((int)value.DataFormat);
resul.Version = value.Version;
resul.AdditionalProperties = value.AdditionalProperties; // need copy ?
return resul;
}
/// <summary>
/// Duplicated generated code means that we need conversion between similar types
/// </summary>
/// <param name="value">world storage capability</param>
/// <returns>clone</returns>
public static ETSI.ARF.OpenAPI.WorldStorage.Capability ConvertWorldAnalysisCapability(ETSI.ARF.OpenAPI.WorldAnalysis.Capability value)
{
ETSI.ARF.OpenAPI.WorldStorage.Capability resul = new ETSI.ARF.OpenAPI.WorldStorage.Capability();
resul.TrackableType = (ETSI.ARF.OpenAPI.WorldStorage.TrackableType)((int)value.TrackableType);
resul.EncodingInformation = ConvertWorldAnalysisEncodingInformation(value.EncodingInformation);
resul.Framerate = value.Framerate;
resul.Latency = value.Latency;
resul.Accuracy = value.Accuracy;
resul.AdditionalProperties = value.AdditionalProperties; // need copy?
return resul;
}
/// <summary>
/// Duplicated generated code means that we need conversion between similar types
/// </summary>
/// <param name="value">world analysis encodinginformation</param>
/// <returns>clone</returns>
public static ETSI.ARF.OpenAPI.WorldStorage.EncodingInformationStructure ConvertWorldAnalysisEncodingInformation(ETSI.ARF.OpenAPI.WorldAnalysis.EncodingInformationStructure value)
{
ETSI.ARF.OpenAPI.WorldStorage.EncodingInformationStructure resul = new ETSI.ARF.OpenAPI.WorldStorage.EncodingInformationStructure();
resul.DataFormat = (ETSI.ARF.OpenAPI.WorldStorage.EncodingInformationStructureDataFormat)((int)value.DataFormat);
resul.Version = value.Version;
resul.AdditionalProperties = value.AdditionalProperties; // need copy ?
return resul;
}
Sylvain Buche
committed
}
namespace ETSI.ARF.OpenAPI.WorldAnalysis
{
/// <summary>
/// Override generated Vector3 constructor
/// </summary>
public partial class Vector3 : System.Collections.ObjectModel.Collection<float>
{
public Vector3(float x, float y, float z) : base(new List<float> { x, y, z })
{
}
}
/// <summary>
/// Override generated Quaternion constructor
/// </summary>
public partial class Quaternion : System.Collections.ObjectModel.Collection<float>
{
public Quaternion(float x, float y, float z, float w) : base(new List<float> { x, y, z, w})
{
}
}