// 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>(); }
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; }