Example #1
0
 public static void TRS(TSVector translation, TSQuaternion rotation, TSVector scale, out TSMatrix4x4 matrix)
 {
     matrix = TSMatrix4x4.Translate(translation) * TSMatrix4x4.Rotate(rotation) * TSMatrix4x4.Scale(scale);
 }
Example #2
0
 public static Quaternion ToQuaternion(this TSQuaternion rot)
 {
     return(new Quaternion((float)rot.x, (float)rot.y, (float)rot.z, (float)rot.w));
 }
Example #3
0
 public static Quaternion ToQuaternion(this TSMatrix jMatrix)
 {
     return(TSQuaternion.CreateFromMatrix(jMatrix).ToQuaternion());
 }
Example #4
0
    public void SetFromToRotation(TSVector fromDirection, TSVector toDirection)
    {
        TSQuaternion targetRotation = TSQuaternion.FromToRotation(fromDirection, toDirection);

        this.Set(targetRotation.x, targetRotation.y, targetRotation.z, targetRotation.w);
    }
Example #5
0
 public override void OnSyncedStart()
 {
     for (int i = 0; i < xSize; i++)
     {
         for (int j = 0; j < ySize; j++)
         {
             for (int k = 0; k < zSize; k++)
             {
                 GameObject tObj = TrueSyncManager.SyncedInstantiate((i + j + k) % 2 == 0? sphere : cube, new TSVector(
                                                                         (i - 1) * (boxWidth + xGap) + offset.x,
                                                                         (j - 1) * (boxWidth + yGap) + offset.y,
                                                                         (k - 1) * (boxWidth + zGap) + offset.z), TSQuaternion.AngleAxis(0, TSVector.forward));
                 TSMaterial tMaterial = tObj.AddComponent <TSMaterial>();
                 tMaterial.restitution = 0;
                 tMaterial.friction    = 1;
                 objStack.Add(tObj);
                 tObj.SetActive(false);
             }
         }
     }
 }
Example #6
0
    /// <summary>
    /// Multiply two quaternions.
    /// </summary>
    /// <param name="quaternion1">The first quaternion.</param>
    /// <param name="quaternion2">The second quaternion.</param>
    /// <param name="result">The product of both quaternions.</param>
    public static void Multiply(ref TSQuaternion quaternion1, ref TSQuaternion quaternion2, out TSQuaternion result)
    {
        FP x     = quaternion1.x;
        FP y     = quaternion1.y;
        FP z     = quaternion1.z;
        FP w     = quaternion1.w;
        FP num4  = quaternion2.x;
        FP num3  = quaternion2.y;
        FP num2  = quaternion2.z;
        FP num   = quaternion2.w;
        FP num12 = (y * num2) - (z * num3);
        FP num11 = (z * num4) - (x * num2);
        FP num10 = (x * num3) - (y * num4);
        FP num9  = ((x * num4) + (y * num3)) + (z * num2);

        result.x = ((x * num) + (num4 * w)) + num12;
        result.y = ((y * num) + (num3 * w)) + num11;
        result.z = ((z * num) + (num2 * w)) + num10;
        result.w = (w * num) - num9;
    }
Example #7
0
 static TSQuaternion()
 {
     identity = new TSQuaternion(0, 0, 0, 1);
 }
Example #8
0
 /// <summary>
 /// Quaternions are subtracted.
 /// </summary>
 /// <param name="quaternion1">The first quaternion.</param>
 /// <param name="quaternion2">The second quaternion.</param>
 /// <param name="result">The difference of both quaternions.</param>
 public static void Subtract(ref TSQuaternion quaternion1, ref TSQuaternion quaternion2, out TSQuaternion result)
 {
     result.x = quaternion1.x - quaternion2.x;
     result.y = quaternion1.y - quaternion2.y;
     result.z = quaternion1.z - quaternion2.z;
     result.w = quaternion1.w - quaternion2.w;
 }
Example #9
0
    public static TSQuaternion Lerp(TSQuaternion a, TSQuaternion b, FP t)
    {
        t = TSMath.Clamp(t, FP.Zero, FP.One);

        return(LerpUnclamped(a, b, t));
    }
Example #10
0
    public static TSQuaternion Inverse(TSQuaternion rotation)
    {
        FP invNorm = FP.One / ((rotation.x * rotation.x) + (rotation.y * rotation.y) + (rotation.z * rotation.z) + (rotation.w * rotation.w));

        return(TSQuaternion.Multiply(TSQuaternion.Conjugate(rotation), invNorm));
    }
Example #11
0
 public static FP Dot(TSQuaternion a, TSQuaternion b)
 {
     return(a.w * b.w + a.x * b.x + a.y * b.y + a.z * b.z);
 }
Example #12
0
 /// <summary>
 /// Quaternions are added.
 /// </summary>
 /// <param name="quaternion1">The first quaternion.</param>
 /// <param name="quaternion2">The second quaternion.</param>
 /// <param name="result">The sum of both quaternions.</param>
 public static void Add(ref TSQuaternion quaternion1, ref TSQuaternion quaternion2, out TSQuaternion result)
 {
     result.x = quaternion1.x + quaternion2.x;
     result.y = quaternion1.y + quaternion2.y;
     result.z = quaternion1.z + quaternion2.z;
     result.w = quaternion1.w + quaternion2.w;
 }