On 03/07/2015 at 07:42, xxxxxxxx wrote:
sure, here is some code:
in MaterialData:
Bool SevenPhotonsMaterial::GetDParameter(GeListNode* node, const DescID& id, GeData& t_data, DESCFLAGS_GET& flags)
{
BaseContainer* data = ((BaseMaterial* )node)->GetDataInstance();
GeData knd(SEVENPHOTONS_NODE_CUSTOMDATATYPE, iSnodeDataType(m_type));
data->GetParameter(SEVENPHOTONS_MAT_NODE, knd);
iSnodeDataType* kndData = static_cast<iSnodeDataType*> (knd.GetCustomDataType(SEVENPHOTONS_NODE_CUSTOMDATATYPE));
if(id[0].id == SEVENPHOTONS_MAT_PREVIEW)
{
return GetDParameterPreview(data, (GeData* )&t_data, flags, SEVENPHOTONS_MAT_PREVIEW, updatecount, (BaseMaterial* )node);
}
else if(kndData->selectedNode > 0)
{
if(kndData->nodes[kndData->selectedNode].getInternalCount() > 0)
{
for(Int32 i = 0; i < kndData->nodes[kndData->selectedNode].getInternalCount(); ++i)
{
Int32 ids = kndData->nodes[kndData->selectedNode].getInternalID(i);
if(id[0].id == ids)
{
if(kndData->nodes[kndData->selectedNode].getInternalDataType(i) & SEVENPHOTONS_NODE_ANYTHREE)
{
Vector vdata = (kndData->nodes[kndData->selectedNode].getInternalData(i)).GetVector();
HandleDescGetVector(id, vdata, t_data, flags);
}
else if(kndData->nodes[kndData->selectedNode].getInternalDataType(i) == SEVENPHOTONS_NODE_CURVE)
{
t_data = kndData->nodes[kndData->selectedNode].getInternalData(i);
flags |= DESCFLAGS_GET_PARAM_GET;
}
else
{
t_data = kndData->nodes[kndData->selectedNode].getInternalData(i);
//data->SetString(ids, kndData->nodes[kndData->selectedNode].getName());
flags |= DESCFLAGS_GET_PARAM_GET;
}
return MaterialData::GetDParameter(node, id, t_data, flags);
}
}
}
if(kndData->nodes[kndData->selectedNode].getInputCount() > 0)
{
for(Int32 i = 0; i < kndData->nodes[kndData->selectedNode].getInputCount(); ++i)
{
Int32 ids = kndData->nodes[kndData->selectedNode].getInputID(i);
//wire connected
if(kndData->nodes[kndData->selectedNode].getInputWireId(i) >= 0)
continue;
if(id[0].id == ids)
{
if(kndData->nodes[kndData->selectedNode].getInputDataType(i) & SEVENPHOTONS_NODE_ANYTHREE)
{
Vector vdata = (kndData->nodes[kndData->selectedNode].getInputData(i)).GetVector();
HandleDescGetVector(id, vdata, t_data, flags);
}
else
{
t_data = kndData->nodes[kndData->selectedNode].getInputData(i);
//data->SetString(ids, kndData->nodes[kndData->selectedNode].getName());
flags |= DESCFLAGS_GET_PARAM_GET;
}
return MaterialData::GetDParameter(node, id, t_data, flags);
}
}
}
}
return MaterialData::GetDParameter(node, id, t_data, flags);
}
Bool SevenPhotonsMaterial::SetDParameter(GeListNode* node, const DescID& id, const GeData& t_data, DESCFLAGS_SET& flags)
{
BaseContainer* data = ((BaseMaterial* )node)->GetDataInstance();
GeData knd(SEVENPHOTONS_NODE_CUSTOMDATATYPE, iSnodeDataType(m_type));
data->GetParameter(SEVENPHOTONS_MAT_NODE, knd);
iSnodeDataType* kndData = static_cast<iSnodeDataType*> (knd.GetCustomDataType(SEVENPHOTONS_NODE_CUSTOMDATATYPE));
updatecount++;
if(id[0].id == SEVENPHOTONS_MAT_PREVIEW)
{
return SetDParameterPreview(data, &t_data, flags, SEVENPHOTONS_MAT_PREVIEW);
}
else if(kndData->selectedNode > 0)
{
//if(id[0].id == ++ids)
//{
// kndData->nodes[kndData->selectedNode].setName(t_data.GetString());
// kndData->nodes[kndData->selectedNode].adjustSNode(false);
// data->SetParameter(SEVENPHOTONS_MAT_NODE, GeData(SEVENPHOTONS_NODE_CUSTOMDATATYPE, *kndData));
// return MaterialData::SetDParameter(node, id, t_data, flags);
//}
if(kndData->nodes[kndData->selectedNode].getInternalCount() > 0)
{
for(Int32 i = 0; i < kndData->nodes[kndData->selectedNode].getInternalCount(); ++i)
{
Int32 ids = kndData->nodes[kndData->selectedNode].getInternalID(i);
if(id[0].id == ids)
{
if(kndData->nodes[kndData->selectedNode].getInternalDataType(i) & SEVENPHOTONS_NODE_ANYTHREE)
{
Vector vdata = (kndData->nodes[kndData->selectedNode].getInternalData(i)).GetVector();
HandleDescSetVector(vdata, id, vdata, t_data, flags);
kndData->nodes[kndData->selectedNode].setInternalData(i, GeData(vdata));
}
else if(kndData->nodes[kndData->selectedNode].getInternalDataType(i) == SEVENPHOTONS_NODE_CURVE)
{
kndData->nodes[kndData->selectedNode].setInternalData(i, t_data);
flags |= DESCFLAGS_SET_PARAM_SET;
}
else
{
kndData->nodes[kndData->selectedNode].setInternalData(i, t_data);
flags |= DESCFLAGS_SET_PARAM_SET;
}
data->SetParameter(SEVENPHOTONS_MAT_NODE, GeData(SEVENPHOTONS_NODE_CUSTOMDATATYPE, *kndData));
return MaterialData::SetDParameter(node, id, t_data, flags);
}
}
}
if(kndData->nodes[kndData->selectedNode].getInputCount() > 0)
{
for(Int32 i = 0; i < kndData->nodes[kndData->selectedNode].getInputCount(); ++i)
{
Int32 ids = kndData->nodes[kndData->selectedNode].getInputID(i);
//wire connected
if(kndData->nodes[kndData->selectedNode].getInputWireId(i) >= 0)
continue;
if(id[0].id == ids)
{
if(kndData->nodes[kndData->selectedNode].getInputDataType(i) & SEVENPHOTONS_NODE_ANYTHREE)
{
Vector vdata = (kndData->nodes[kndData->selectedNode].getInputData(i)).GetVector();
HandleDescSetVector(vdata, id, vdata, t_data, flags);
kndData->nodes[kndData->selectedNode].setInputData(i, vdata);
}
else
{
kndData->nodes[kndData->selectedNode].setInputData(i, t_data);
flags |= DESCFLAGS_SET_PARAM_SET;
}
data->SetParameter(SEVENPHOTONS_MAT_NODE, GeData(SEVENPHOTONS_NODE_CUSTOMDATATYPE, *kndData));
return MaterialData::SetDParameter(node, id, t_data, flags);
}
}
}
}
return MaterialData::SetDParameter(node, id, t_data, flags);
}
tell me which portions you want, as I guess GeUserArea and CustomDataType portions are not needed here.
I will post more code soon if needed.