public void ApplyTransformation() { if (_dynamicPhysicsObject == null) { //RotationMatrix = Matrix.CreateRotationX((float) AngleX)*Matrix.CreateRotationY((float) AngleY)* // Matrix.CreateRotationZ((float) AngleZ); Matrix scaleMatrix = Matrix.CreateScale(Scale); _worldOldMatrix = scaleMatrix * RotationMatrix * Matrix.CreateTranslation(Position); WorldTransform.Scale = Scale; WorldTransform.World = _worldOldMatrix; WorldTransform.InverseWorld = Matrix.Invert(Matrix.CreateTranslation(BoundingBoxOffset * Scale) * RotationMatrix * Matrix.CreateTranslation(Position)); if (StaticPhysicsObject != null && !GameSettings.e_enableeditor) { AffineTransform change = new AffineTransform( new BEPUutilities.Vector3(Scale.X, Scale.Y, Scale.Z), Quaternion.CreateFromRotationMatrix(MathConverter.Convert(RotationMatrix)), MathConverter.Convert(Position)); if (!MathConverter.Equals(change.Matrix, StaticPhysicsObject.WorldTransform.Matrix)) { //StaticPhysicsMatrix = MathConverter.Copy(Change.Matrix); StaticPhysicsObject.WorldTransform = change; } } } else { //Has something changed? WorldTransform.Scale = Scale; _worldOldMatrix = Extensions.CopyFromBepuMatrix(_worldOldMatrix, _dynamicPhysicsObject.WorldTransform); Matrix scaleMatrix = Matrix.CreateScale(Scale); //WorldOldMatrix = Matrix.CreateScale(Scale)*WorldOldMatrix; WorldTransform.World = scaleMatrix * _worldOldMatrix; WorldTransform.InverseWorld = Matrix.Invert(Matrix.CreateTranslation(BoundingBoxOffset * Scale) * RotationMatrix * Matrix.CreateTranslation(Position)); } }