THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 20/02/2011 at 17:55, xxxxxxxx wrote:
User Information:
Cinema 4D Version: 12
Platform: Windows ;
Language(s) : C++ ;
---------
Hey everyone. This is going to be a somewhat obscure question but I hope that it makes sense to someone. I have a particle system that I have created that works through an emitter class and a particle class. The emitter creates instances of the particle class and updates each particles position and all other attributes. Alone these items work fine. But when I make an instance of the emitter class in the Draw() of my object plugin, I get some pretty funky results. The emitter object emits particles like it should, however, it also emits particles in 2D that appear as though they are on the screen of the viewport. I am using DrawLine(), and DrawHandle() to draw the particles which uses Vectors for the position of those items. So I cannot figure out why I would be getting particles being emitted as if they are on the screen. It's funny because when I deselct the emitter object in the attributes manager, those "screen" particles disappear. So it has to be something with the Draw().
Here's my draw function.. Simply calls the Emitter class..
DRAWRESULT PXGEmitterObject::Draw(BaseObject* op, DRAWPASS drawpass, BaseDraw* bd, BaseDrawHelp* bh){
GePrint("EMITTER OBJ");
BaseContainer * bc = op->GetDataInstance();
BaseDocument *doc = op->GetDocument();
if (!doc) return DRAWRESULT_ERROR;
Real fps = doc->GetFps(); //Get the current Frames Per Second
BaseTime bt = doc->GetTime();
LONG lngCurrentFrame = bt.GetFrame(fps); //Set a variable that represents the current selected frame
LONG time = GeGetTimer();
//Begin Emission Loop
if (bc->GetBool(EMITTER_ENABLE_EMITTER) == TRUE){
if(lngCurrentFrame > 0){
emitter->Update(time, bd, bh, op);
}
}
return DRAWRESULT_OK;
}
This one is baffling me.. any help you all could offer would be awesome. I'd really like to know what would cause the DrawHandle() and DrawLine() to show up in 2D space. ??
Thanks,
Hope this makes sense. :)
~Shawn