To set an Vector4 Array in a shader I call mat.SetVectorArray("_Vector4Array", vector4Array);
in a C# script (It is not possible to set an VectorArray in the shader Properties, it has to be set from a MonoBehavior). This works fine.
Now I want to feed Quaternions in the SetVectorArray()
Function. Quaternions have the same structure as a Vector4, but Unity gives me this Error:
cannot convert UnityEngine.Quaternion[]' expression to type System.Collections.Generic.List<UnityEngine.Vector4
I searched for a way to convert a Quaternion in a Vector4 and back, but I didn’t find any answers.
Quaternion quaternionArray = new Quaternion[ vector4Array.Length ] ;
for( int i = 0 i < vector4Array.length ; ++i )
quaternionArray = new Quaternion( vector4Array.x, vector4Array.y, vector4Array_.z, vector4Array*.w ) ;
----
Vector4[] vector4Array = new Quaternion[ quaternionArray.Length ] ;
for( int i = 0 i < quaternionArray.length ; ++i )
vector4Array = new Vector4( quaternionArray.x, quaternionArray.y, quaternionArray.z, quaternionArray.w ) ;
----
Not tested
Quaternion[] quaternionArray = System.Array.ConvertAll( vector4Array, new System.Converter< Vector4, Quaternion>( vector4 => new Quaternion( vector4.x, vector4.y, vector4.z, vector4.w ) ) ;
----*
Not tested
Vector4[] vector4Array = System.Array.ConvertAll( quaternionArray, new System.Converter< Quaternion, Vector4>( q => new Vector4( q.x, q.y, q.z, q.w ) ) ;_