public void Update() { lock (Transformation) { var tRotationMatrix = Matrix4.CreateFromQuaternion(Transformation.GetOrientation().Inverted()); var tViewMatrix = Matrix4.CreateTranslation(-Transformation.GetPosition()) * RotationMatrix; if (cone == null) { var tcone = FrustumCone.Create(Transformation.GetPosition(), tViewMatrix, ProjectionMatrix); cone = tcone; } else { FrustumCone.Update(cone, Transformation.GetPosition(), tViewMatrix, ProjectionMatrix); } RotationMatrix = tRotationMatrix; ViewMatrix = tViewMatrix; VPMatrix = Matrix4.Mult(ViewMatrix, ProjectionMatrix); } }