Exemplo n.º 1
0
renderer::Assembly* getOrCreateAssembly(const MayaObject* obj)
{
    renderer::Assembly *ass = getAssembly(obj);
    if (ass == 0)
        ass = createAssembly(obj);
    return ass;
}
Exemplo n.º 2
0
     void triggerAssembly(int row, int col, float inputStrength) {
          if (inputStrength > 1) {
               inputStrength = 1;
          } else if (inputStrength < 0) {
               inputStrength = 0;
          }

          getAssembly(row, col).setActivation(inputStrength);
     }
Exemplo n.º 3
0
//------------------------------------------------------------------------------
//
void SceneRepresentation::getExternalContent(
   MExternalContentInfoTable& table
) const
{
   const AssemblyDefinition* const assembly =
      dynamic_cast< AssemblyDefinition* >( getAssembly() );
   if ( assembly == 0 ) {
      return;
   }

   table.addUnresolvedEntry( "Data", assembly->getRepData( getName() ), assembly->name() );
}
Exemplo n.º 4
0
renderer::AssemblyInstance* createAssemblyInstance(const MayaObject* obj)
{
    MayaObject* assemblyObject = getAssemblyMayaObject(obj);
    boost::shared_ptr<AppleseedRenderer> appleRenderer = boost::static_pointer_cast<AppleseedRenderer>(getWorldPtr()->mRenderer);
    renderer::Assembly* ass = getAssembly(obj);
    renderer::Assembly* master = getMasterAssemblyFromProject(appleRenderer->getProjectPtr());
    MString assemblyInstanceName = getAssemblyInstanceName(assemblyObject);
    foundation::auto_release_ptr<renderer::AssemblyInstance> assemblyInstance = renderer::AssemblyInstanceFactory::create(assemblyInstanceName.asChar(), renderer::ParamArray(), ass->get_name());
    fillMatrices(obj, assemblyInstance->transform_sequence());
    renderer::AssemblyInstance* assInst = assemblyInstance.get();
    master->assembly_instances().insert(assemblyInstance);
    return assInst;
}
Exemplo n.º 5
0
//------------------------------------------------------------------------------
//
void SceneRepresentation::setExternalContent(
   const MExternalContentLocationTable& table
)
{
   AssemblyDefinition* const assembly =
      dynamic_cast< AssemblyDefinition* >( getAssembly() );
   if ( assembly == 0 ) {
      return;
   }

   MString path;
   table.getLocation( "Data", path );
   assembly->setRepData( getName(), path );
}
Exemplo n.º 6
0
//------------------------------------------------------------------------------
//
bool SceneRepresentation::activate()
{
   AssemblyDefinition* const assembly =
      dynamic_cast< AssemblyDefinition* >( getAssembly() );
   if ( assembly == 0 ) {
      return false;
   }

   MFnAssembly aFn(assembly->thisMObject());

   bool fileIgnoreVersion = (MGlobal::optionVarIntValue("fileIgnoreVersion") == 1);

   MStatus status = aFn.importFile(
      assembly->getRepData(getName()) /*fileName*/,
      NULL /*type*/, true /*preserveReferences*/, NULL /*nameSpace*/,
      fileIgnoreVersion);

   return (status == MStatus::kSuccess);
}
Exemplo n.º 7
0
//------------------------------------------------------------------------------
//
bool CacheRepresentation::activate()
{
   AssemblyDefinition* const assembly =
      dynamic_cast< AssemblyDefinition* >( getAssembly() );
   if ( assembly == 0 ) {
      return false;
   }

   // Create a gpuCache node, and parent it to our container.
   MDagModifier dagMod;   
   MStatus status;
   MObject cacheObj = dagMod.createNode(
      MString("gpuCache"), assembly->thisMObject(), &status);

   if (status != MStatus::kSuccess) {
      int	isLoaded = false;
      // Validate that the gpuCache plugin is loaded.
      MGlobal::executeCommand( "pluginInfo -query -loaded gpuCache", isLoaded );
	  if(!isLoaded){	     
	     MString errorString = MStringResource::getString(rCreateGPUCacheNodeError, status);	     
	     MGlobal::displayError(errorString);	    
      }
      return false;
   }
   status = dagMod.doIt();
   if (status != MStatus::kSuccess) {
      return false;
   }
      
   // Set the cache attribute to point to our Alembic file.
   MFnDependencyNode cache(cacheObj);
   MPlug fileName = cache.findPlug(MString("cacheFileName"), true, &status);
   if (status != MStatus::kSuccess) {
      return false;
   }
   fileName.setValue(assembly->getRepData(getName()));

   return status == MStatus::kSuccess;
}
Exemplo n.º 8
0
//------------------------------------------------------------------------------
//
bool LocatorRepresentation::activate()
{
   MPxAssembly* const assembly = getAssembly();

   // Create a locator node, and parent it to our container.
   MDagModifier dagMod;
   MStatus status;
   dagMod.createNode(MString("locator"), assembly->thisMObject(), &status);   
  
   if (status != MStatus::kSuccess) {
      return false;
   }
   status = dagMod.doIt();
   if (status != MStatus::kSuccess) {
      return false;
   }

   // If we have annotation text, create an annotation shape, and a
   // transform for it.  Parent the annotation transform to the assembly.
   if (fAnnotation.numChars() > 0) {
      MObject transformObj = dagMod.createNode(
         MString("transform"), assembly->thisMObject(), &status);

      if (status != MStatus::kSuccess) {
         return false;
      }

	  MString  annotationName =  "annotation";
	  // the + "#" forces Maya to rename using integers for unique names
	  MString  transformName = annotationName + "#";
      dagMod.renameNode(transformObj, transformName);
 
      status = dagMod.doIt();
      if (status != MStatus::kSuccess) {
         return false;
      }

      MObject annotationObj = dagMod.createNode(
         MString("annotationShape"), transformObj, &status);

      if (status != MStatus::kSuccess) {
         return false;
      }
      status = dagMod.doIt();
      if (status != MStatus::kSuccess) {
         return false;
      }

      // Set the annotation text.
      MFnDependencyNode annotation(annotationObj);
      MPlug text = annotation.findPlug(MString("text"), true, &status);
      if (status != MStatus::kSuccess) {
         return false;
      }
      text.setValue(fAnnotation);

      // Get rid of the arrow: our annotation doesn't need to be
      // offset from the locator for readability, since the locator
      // has no volume.  Therefore, we don't need an arrow to point
      // from the annotation back to the object.
      MPlug displayArrow =
         annotation.findPlug(MString("displayArrow"), true, &status);
      if (status != MStatus::kSuccess) {
         return false;
      }
      displayArrow.setValue(false);
   }
   
   return status == MStatus::kSuccess;
}
Exemplo n.º 9
0
//------------------------------------------------------------------------------
//
SceneRepresentation::SceneRepresentation(
   MPxAssembly* assembly, const MString& name
) : BaseClass(assembly, name)
{
   assert( dynamic_cast< AssemblyDefinition* >( getAssembly() ) != 0 );
}