コード例 #1
0
Vector ApplinkExporter::getParameterVector(C4DAtom& atom, LONG paramID)
{
	GeData parameter;
	if (atom.GetParameter(DescLevel(paramID), parameter, DESCFLAGS_GET_0)) 
	{
		return parameter.GetVector();
	}
	return NULL;
}
コード例 #2
0
ファイル: C4DImporter.cpp プロジェクト: Dimrok/assimp
// ------------------------------------------------------------------------------------------------
void C4DImporter::ReadMaterials(_melange_::BaseMaterial* mat)
{
    // based on Melange sample code
    while (mat)
    {
        const String& name = mat->GetName();
        if (mat->GetType() == Mmaterial)
        {
            aiMaterial* out = new aiMaterial();
            material_mapping[mat] = static_cast<unsigned int>(materials.size());
            materials.push_back(out);

            aiString ai_name;
            name.GetCString(ai_name.data, MAXLEN-1);
            ai_name.length = ::strlen(ai_name.data);
            out->AddProperty(&ai_name, AI_MATKEY_NAME);

            Material& m = dynamic_cast<Material&>(*mat);

            if (m.GetChannelState(CHANNEL_COLOR))
            {
                GeData data;
                mat->GetParameter(MATERIAL_COLOR_COLOR, data);
                Vector color = data.GetVector();
                mat->GetParameter(MATERIAL_COLOR_BRIGHTNESS, data);
                const Real brightness = data.GetReal();

                color *= brightness;

                aiVector3D v;
                v.x = color.x;
                v.y = color.y;
                v.z = color.z;
                out->AddProperty(&v, 1, AI_MATKEY_COLOR_DIFFUSE);
            }

            BaseShader* const shader = m.GetShader(MATERIAL_COLOR_SHADER);
            if(shader) {
                ReadShader(out, shader);
            }
        }
        else
        {
            LogWarn("ignoring plugin material: " + std::string(GetObjectTypeName(mat->GetType())));
        }
        mat = mat->GetNext();
    }
}