Getting the Editor Color for a shader [SOLVED]

On 04/03/2015 at 14:43, xxxxxxxx wrote:

User Information:
Cinema 4D Version:   15 
Platform:      Mac OSX  ; 
Language(s) :     C++  ;

---------
I was trying to create a shader that would return the editor display color of an object.
My main shader code is this:

Vector EditorColorShaderData::Output(BaseShader * chn, ChannelData * cd) {

Vector the_color=Vector(.5,.5,.5);
   
    if (cd->vd)
        {
            RayObject *op = NULL;

op= cd->vd->op;
           
            if (op)
            {
               BaseObject* original=(BaseObject* ) op->link;
              
               BaseContainer* bc=original->GetData()
              
               if (bc) the_color=bc->GetVector(ID_BASEOBJECT_COLOR)
            }

}

return the_color;
}

But it is not working. I mean, it always gets me a grey color (the default I set).
How can I get the color of the editor of an object, at render time, in a shader?

On 04/03/2015 at 23:35, xxxxxxxx wrote:

Sounds like you need BaseObject::GetColorProperties().

On 05/03/2015 at 03:12, xxxxxxxx wrote:

I tried the following code:

  
BaseObject* original=(BaseObject* ) op->link;   
  
ObjectColorProperties* prop;   
original->GetColorProperties(prop);   
  
the_color=prop->color;   

But it is not working 😞

On 05/03/2015 at 04:52, xxxxxxxx wrote:

Your are passing an uninitialized pointer to GetColorProperties() so it can't fill it with data.
Try this instead:

  
ObjectColorProperties colorProps;   
original->GetColorProperties(&colorProps;);   
the_color = prop.color;   

On 05/03/2015 at 05:23, xxxxxxxx wrote:

YES!!! Finally did it!

Thank you all 😄

On 05/03/2015 at 07:31, xxxxxxxx wrote:

Hi,

Thanks for helping Rui. I'll close this thread as solved.