Ejemplo n.º 1
0
    // Start is called before the first frame update
    void Start()
    {
        worldTransformMatrix = new MadeMatrix4x4(
            1.0f, 0.0f, 0.0f, transform.position.x,
            0.0f, 1.0f, 0.0f, transform.position.y,
            0.0f, 0.0f, 1.0f, transform.position.z,
            0.0f, 0.0f, 0.0f, 1.0f
            );

        worldTransformMatrix.calculateInv();

        worldTranformInverseMatrix        = new MadeMatrix4x4();
        worldTranformInverseMatrix.matrix = worldTransformMatrix.invMatrix;

        torqueContainer.worldCenterOfMass = transform.position;
        torqueContainer.localCenterOfMass = Vector3.zero;

        SetMass(forces.startingMass);

        particle3DTransform.position = transform.position;

        Quaternion rot      = gameObject.transform.rotation;
        Vector4    quatVals = new Vector4(rot.x, rot.y, rot.z, 1);

        particle3DTransform.rotation = new MadeQuaternion(quatVals.x, quatVals.y, quatVals.z);

        UpdateInertia();

        colHull = this.gameObject.GetComponent <CollisionHull2D>();
    }
Ejemplo n.º 2
0
    void UpdateWorldMatrix()
    {
        float cosX = Mathf.Cos(particle3DTransform.eulerAngle.x * Mathf.Deg2Rad);
        float sinX = Mathf.Sin(particle3DTransform.eulerAngle.x * Mathf.Deg2Rad);
        float cosY = Mathf.Cos(particle3DTransform.eulerAngle.y * Mathf.Deg2Rad);
        float sinY = Mathf.Sin(particle3DTransform.eulerAngle.y * Mathf.Deg2Rad);
        float cosZ = Mathf.Cos(particle3DTransform.eulerAngle.z * Mathf.Deg2Rad);
        float sinZ = Mathf.Sin(particle3DTransform.eulerAngle.z * Mathf.Deg2Rad);

        worldTransformMatrix = new MadeMatrix4x4(
            cosY * cosZ, -cosY * sinZ, sinY, transform.position.x,
            sinX * sinY * cosZ + cosX * sinZ, -sinX * sinY * sinZ + cosX * cosZ, -sinX * cosY, transform.position.y,
            -cosX * sinY * cosZ + sinX * sinZ, cosX * sinY * sinZ + sinX * cosZ, cosX * cosY, transform.position.z,
            0.0f, 0.0f, 0.0f, 1.0f
            );

        worldTransformMatrix.calculateInv();

        worldTranformInverseMatrix.matrix = worldTransformMatrix.invMatrix;
    }