Hi @victor first of all welcome in the PluginCafe community.
There is nothing in an ObjectData that fits your need but I would say I don't really see why would you need such information within an ObjectData generator.
A generator will and must be time agnostic (I would say in 99% of the case), this is the parameter and the matrix of this generator that the user animate, then GetVirtualObject only needs to output geometry based on these parameters.
This will be the job of the render to evaluate the scene for each subframe (So if you have an animated float parameter, this value will be set correctly).
In any case, if you are doing the animation within your generator (which is not recommended but it can be needed) let's say you create a cube that moves with a sin curve in the time. This shouldn't be an issue since you retrieve the current document time but as GetFrame returns an int, you may need to re-implement it to retrieve a float value to support SubFrame.
So here a python example in a Python Generator that does that (The main method is an alias for GetVirtualObject in the Python Generator).
import c4d
import math
def main():
docTime = doc.GetTime()
currentFrame = math.floor(docTime.GetNumerator() * doc.GetFps()) / math.floor(docTime.GetDenominator())
if int(currentFrame) != currentFrame:
print "Within SubFrame", currentFrame
else:
print "Round frame", currentFrame
return c4d.BaseObject(c4d.Ocube)
And finally, if you really need to have these steps, as said they are only known to the render, so your best bet is to create a VideoPostData plugin (only available in C++) and in the Execute you have all the step you want, so you could write the current step in the BaseDocument and reads the data from the BaseDocument in your generator.
Cheers,
Maxime.