I think you need to use the search function. I think most of the questions you raised existed in the forum.
There is a decal example in the lib.
I remember there are a few other solutions including a car wheel trace mark kindly shared by a member a year or two ago.
Also see the basic effect posted by Lumak. I believed it has decal effect in there.
My bad – I was tired and completely missed your first sentence.
As an example of ‘other Drawable methods’: could iterate patches and use their Drawable::GetWorldBoundingBox().Center() perhaps?
By ‘calc’, I was thinking of a simpler 2D method that may or may not be suitable. by analogy: “given the position of a grid (terrain), and the grid square (patch) size, find which grid coord a point falls in”.
Please note : Depending on your culling (CW , CCW) you may need to negate the normal to get the correct rotation.
Build a Quaternion using the returned vector (Quaternion rot(returned.x_ , returned,y_ , returned.z_);
@jmiller - I know I can get height on the terrein in any point, can’t this be converted to patch somehow?
the iteratiom method is last resort, it is very, very slow.
About 2D - one can get texture coordinate too. I don’t understand why there’s no easy Drawable access