aboutsummaryrefslogtreecommitdiff
path: root/docs/build/_modules/artv2_rig_modules
diff options
context:
space:
mode:
authorhome_pc <[email protected]>2020-01-20 13:48:51 -0800
committerhome_pc <[email protected]>2020-01-20 13:48:51 -0800
commit75fa1d1810e98453960a81115d88302e276d817f (patch)
tree92f37accb3cb041d056d00525b5830a69862631a /docs/build/_modules/artv2_rig_modules
parentfixed install.mel issue (diff)
downloadartv2-75fa1d1810e98453960a81115d88302e276d817f.tar.xz
artv2-75fa1d1810e98453960a81115d88302e276d817f.zip
Uploading work on refactor
At this point, all components can build their skeletons. Next steps are to get components building their rigs.
Diffstat (limited to 'docs/build/_modules/artv2_rig_modules')
-rw-r--r--docs/build/_modules/artv2_rig_modules/biped_leg_module/artv2_biped_leg_module.html343
-rw-r--r--docs/build/_modules/artv2_rig_modules/rig_module.html412
2 files changed, 755 insertions, 0 deletions
diff --git a/docs/build/_modules/artv2_rig_modules/biped_leg_module/artv2_biped_leg_module.html b/docs/build/_modules/artv2_rig_modules/biped_leg_module/artv2_biped_leg_module.html
new file mode 100644
index 0000000..410ba9b
--- /dev/null
+++ b/docs/build/_modules/artv2_rig_modules/biped_leg_module/artv2_biped_leg_module.html
@@ -0,0 +1,343 @@
+
+
+<!DOCTYPE html>
+<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
+<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
+<head>
+ <meta charset="utf-8">
+
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+ <title>ARTv2</title>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <link rel="stylesheet" href="../../../_static/css/theme.css" type="text/css" />
+
+
+
+
+ <link rel="index" title="Index"
+ href="../../../genindex.html"/>
+ <link rel="search" title="Search" href="../../../search.html"/>
+ <link rel="top" title="ARTv2 2.0.1 documentation" href="../../../index.html"/>
+ <link rel="up" title="Module code" href="../../index.html"/>
+
+
+ <script src="../../../_static/js/modernizr.min.js"></script>
+
+</head>
+
+<body class="wy-body-for-nav" role="document">
+
+ <div class="wy-grid-for-nav">
+
+
+ <nav data-toggle="wy-nav-shift" class="wy-nav-side">
+ <div class="wy-side-scroll">
+ <div class="wy-side-nav-search" style="background-color: #343131">
+
+
+ <a href="http://www.jeremyernst.com">
+ <img src="../../../_static/lsst-logo-dark.svg" class="logo" />
+
+ <span class="project-title">ARTv2</span>
+ </a>
+
+
+
+
+ </div>
+
+ <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+
+
+
+ <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../../installing.html">Installing ARTv2</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../../using_rigging_tools.html">Using the Rigging Tools</a><ul class="simple">
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../../../using_anim_tools.html">Using the Animation Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../../technical_documentation.html">ARTv2 Technical Documentation</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="../../../rig_modules.html">ARTv2 Rig Modules</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="../../../rig_module_base.html">ARTv2 Rig Modules Base Class</a></li>
+<li class="toctree-l3"><a class="reference internal" href="../../../biped_leg_module.html">ARTv2 Bipedal Leg</a></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+
+
+
+ </div>
+ </div>
+ </nav>
+
+ <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+
+ <nav class="wy-nav-top" role="navigation" aria-label="top navigation">
+ <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+ <a href="../../../index.html">ARTv2</a>
+ </nav>
+
+
+
+ <div class="wy-nav-content">
+ <div class="rst-content">
+ <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
+ <div class="dd-masthead">
+ <h1 class="dd-title">ARTv2</h1>
+ <ul class="dd-authors">
+
+ </ul>
+ <p>Latest Revision: <a href="#change-record"></a></p>
+</div>
+ <div itemprop="articleBody">
+
+ <h1>Source code for artv2_rig_modules.biped_leg_module.artv2_biped_leg_module</h1><div class="highlight"><pre>
+<span></span><span class="c1"># -*- coding: utf-8 -*-</span>
+<span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">This module contains the class for the bipedal leg rig module.</span>
+
+<span class="sd"># todo: list attributes and assumed min/max values</span>
+<span class="sd">&quot;&quot;&quot;</span>
+
+<span class="kn">import</span> <span class="nn">maya.cmds</span> <span class="k">as</span> <span class="nn">cmds</span>
+
+<span class="kn">import</span> <span class="nn">artv2_rig_modules.rig_module</span> <span class="k">as</span> <span class="nn">rig_module</span>
+<span class="kn">import</span> <span class="nn">artv2_utilities.error_utilities</span> <span class="k">as</span> <span class="nn">errors</span>
+<span class="kn">import</span> <span class="nn">artv2_utilities.general_utilities</span> <span class="k">as</span> <span class="nn">utils</span>
+
+
+<div class="viewcode-block" id="ART_Leg_Biped"><a class="viewcode-back" href="../../../biped_leg_module.html#artv2_rig_modules.biped_leg_module.artv2_biped_leg_module.ART_Leg_Biped">[docs]</a><span class="k">class</span> <span class="nc">ART_Leg_Biped</span><span class="p">(</span><span class="n">rig_module</span><span class="o">.</span><span class="n">ART_Component</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Class for defining a bipedal leg setup in ARTv2 with options for twist bones and toes.</span>
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="n">nice_name</span> <span class="o">=</span> <span class="s2">&quot;Biped Leg&quot;</span>
+ <span class="n">base_name</span> <span class="o">=</span> <span class="s2">&quot;leg&quot;</span>
+ <span class="n">has_sides</span> <span class="o">=</span> <span class="kc">True</span>
+ <span class="n">joint_mover_file</span> <span class="o">=</span> <span class="s2">&quot;resources</span><span class="se">\\</span><span class="s2">rigging_guides</span><span class="se">\\</span><span class="s2">left_leg_biped.ma&quot;</span>
+
+ <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">prefix</span><span class="o">=</span><span class="s2">&quot;&quot;</span><span class="p">,</span> <span class="n">suffix</span><span class="o">=</span><span class="s2">&quot;&quot;</span><span class="p">,</span> <span class="n">network_node</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
+ <span class="nb">super</span><span class="p">(</span><span class="n">ART_Leg_Biped</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">prefix</span><span class="p">,</span> <span class="n">suffix</span><span class="p">,</span> <span class="n">network_node</span><span class="p">)</span>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="k">def</span> <span class="nf">_add_metadata</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">network_node</span><span class="p">,</span> <span class="n">prefix</span><span class="p">,</span> <span class="n">suffix</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Method for adding metadata attributes to the network node that are important for the module. For the leg</span>
+<span class="sd"> module, these are things like number of toe joints and twist joints.</span>
+
+<span class="sd"> :param (str) network_node: module&#39;s network node name to add attributes to.</span>
+<span class="sd"> :param (str) prefix: prefix for the module.</span>
+<span class="sd"> :param (str) suffix: suffix for the module.</span>
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="nb">super</span><span class="p">(</span><span class="n">ART_Leg_Biped</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">_add_metadata</span><span class="p">(</span><span class="n">network_node</span><span class="p">,</span> <span class="n">prefix</span><span class="p">,</span> <span class="n">suffix</span><span class="p">)</span>
+
+ <span class="n">cmds</span><span class="o">.</span><span class="n">lockNode</span><span class="p">(</span><span class="n">network_node</span><span class="p">,</span> <span class="n">lock</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">addAttr</span><span class="p">(</span><span class="n">network_node</span><span class="p">,</span> <span class="n">ln</span><span class="o">=</span><span class="s2">&quot;num_thigh_twists&quot;</span><span class="p">,</span> <span class="nb">min</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="nb">max</span><span class="o">=</span><span class="mi">3</span><span class="p">,</span> <span class="n">dv</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">keyable</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">addAttr</span><span class="p">(</span><span class="n">network_node</span><span class="p">,</span> <span class="n">ln</span><span class="o">=</span><span class="s2">&quot;num_calf_twists&quot;</span><span class="p">,</span> <span class="nb">min</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="nb">max</span><span class="o">=</span><span class="mi">3</span><span class="p">,</span> <span class="n">dv</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">keyable</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">addAttr</span><span class="p">(</span><span class="n">network_node</span><span class="p">,</span> <span class="n">ln</span><span class="o">=</span><span class="s2">&quot;side&quot;</span><span class="p">,</span> <span class="nb">min</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">at</span><span class="o">=</span><span class="s2">&quot;enum&quot;</span><span class="p">,</span> <span class="n">enumName</span><span class="o">=</span><span class="s2">&quot;Left:Right&quot;</span><span class="p">,</span> <span class="n">keyable</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">addAttr</span><span class="p">(</span><span class="n">network_node</span><span class="p">,</span> <span class="n">ln</span><span class="o">=</span><span class="s2">&quot;has_ball_joint&quot;</span><span class="p">,</span> <span class="n">at</span><span class="o">=</span><span class="s2">&quot;bool&quot;</span><span class="p">,</span> <span class="n">keyable</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">addAttr</span><span class="p">(</span><span class="n">network_node</span><span class="p">,</span> <span class="n">ln</span><span class="o">=</span><span class="s2">&quot;num_big_toes&quot;</span><span class="p">,</span> <span class="nb">min</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="nb">max</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> <span class="n">dv</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">keyable</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">addAttr</span><span class="p">(</span><span class="n">network_node</span><span class="p">,</span> <span class="n">ln</span><span class="o">=</span><span class="s2">&quot;num_index_toes&quot;</span><span class="p">,</span> <span class="nb">min</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="nb">max</span><span class="o">=</span><span class="mi">3</span><span class="p">,</span> <span class="n">dv</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">keyable</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">addAttr</span><span class="p">(</span><span class="n">network_node</span><span class="p">,</span> <span class="n">ln</span><span class="o">=</span><span class="s2">&quot;num_middle_toes&quot;</span><span class="p">,</span> <span class="nb">min</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="nb">max</span><span class="o">=</span><span class="mi">3</span><span class="p">,</span> <span class="n">dv</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">keyable</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">addAttr</span><span class="p">(</span><span class="n">network_node</span><span class="p">,</span> <span class="n">ln</span><span class="o">=</span><span class="s2">&quot;num_ring_toes&quot;</span><span class="p">,</span> <span class="nb">min</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="nb">max</span><span class="o">=</span><span class="mi">3</span><span class="p">,</span> <span class="n">dv</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">keyable</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">addAttr</span><span class="p">(</span><span class="n">network_node</span><span class="p">,</span> <span class="n">ln</span><span class="o">=</span><span class="s2">&quot;num_pinky_toes&quot;</span><span class="p">,</span> <span class="nb">min</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="nb">max</span><span class="o">=</span><span class="mi">3</span><span class="p">,</span> <span class="n">dv</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">keyable</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
+
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">network_node</span> <span class="o">+</span> <span class="s2">&quot;.num_thigh_twists&quot;</span><span class="p">,</span> <span class="n">lock</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">network_node</span> <span class="o">+</span> <span class="s2">&quot;.num_calf_twists&quot;</span><span class="p">,</span> <span class="n">lock</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">network_node</span> <span class="o">+</span> <span class="s2">&quot;.side&quot;</span><span class="p">,</span> <span class="n">lock</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">network_node</span> <span class="o">+</span> <span class="s2">&quot;.has_ball_joint&quot;</span><span class="p">,</span> <span class="kc">True</span><span class="p">,</span> <span class="n">lock</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">network_node</span> <span class="o">+</span> <span class="s2">&quot;.num_big_toes&quot;</span><span class="p">,</span> <span class="n">lock</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">network_node</span> <span class="o">+</span> <span class="s2">&quot;.num_index_toes&quot;</span><span class="p">,</span> <span class="n">lock</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">network_node</span> <span class="o">+</span> <span class="s2">&quot;.num_middle_toes&quot;</span><span class="p">,</span> <span class="n">lock</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">network_node</span> <span class="o">+</span> <span class="s2">&quot;.num_ring_toes&quot;</span><span class="p">,</span> <span class="n">lock</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">network_node</span> <span class="o">+</span> <span class="s2">&quot;.num_pinky_toes&quot;</span><span class="p">,</span> <span class="n">lock</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="n">cmds</span><span class="o">.</span><span class="n">lockNode</span><span class="p">(</span><span class="n">network_node</span><span class="p">,</span> <span class="n">lock</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="nd">@property</span>
+ <span class="k">def</span> <span class="nf">num_thigh_twists</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> This property holds the number (int) of thigh twist joints that the module will create or has.</span>
+
+<span class="sd"> :return: Number of thigh twist joints the module has.</span>
+<span class="sd"> :rtype: int</span>
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="k">return</span> <span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">network_node</span> <span class="o">+</span> <span class="s2">&quot;.num_thigh_twists&quot;</span><span class="p">)</span>
+
+ <span class="nd">@num_thigh_twists</span><span class="o">.</span><span class="n">setter</span>
+ <span class="k">def</span> <span class="nf">num_thigh_twists</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">new_number</span><span class="p">):</span>
+ <span class="k">if</span> <span class="o">-</span><span class="mi">1</span> <span class="o">&lt;=</span> <span class="n">new_number</span> <span class="o">&lt;=</span> <span class="mi">3</span><span class="p">:</span>
+ <span class="n">utils</span><span class="o">.</span><span class="n">set_attribute</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">network_node</span><span class="p">,</span> <span class="s2">&quot;num_thigh_twists&quot;</span><span class="p">,</span> <span class="n">new_number</span><span class="p">)</span>
+ <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">4</span><span class="p">):</span>
+ <span class="n">joint</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">prefix</span> <span class="o">+</span> <span class="s2">&quot;thigh_twist_0&quot;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">i</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">suffix</span>
+ <span class="n">group</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_unique_name</span> <span class="o">+</span> <span class="s2">&quot;_thigh_twist_0&quot;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">i</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> <span class="o">+</span> <span class="s2">&quot;_mover_grp&quot;</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">joint_mover</span><span class="o">.</span><span class="n">toggle_build_joint</span><span class="p">(</span><span class="n">joint</span><span class="p">,</span> <span class="n">group</span><span class="p">,</span> <span class="kc">False</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">i</span> <span class="o">+</span> <span class="mi">1</span> <span class="o">&lt;=</span> <span class="n">new_number</span><span class="p">:</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">joint_mover</span><span class="o">.</span><span class="n">toggle_build_joint</span><span class="p">(</span><span class="n">joint</span><span class="p">,</span> <span class="n">group</span><span class="p">)</span>
+ <span class="k">else</span><span class="p">:</span>
+ <span class="n">errors</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">&quot;Invalid number for thigh twists. Integer must be between 0 and 3.&quot;</span><span class="p">)</span>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="nd">@property</span>
+ <span class="k">def</span> <span class="nf">num_calf_twists</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> This property holds the number (int) of calf twist joints that the module will create or has.</span>
+
+<span class="sd"> :return: Number of calf twist joints the module has.</span>
+<span class="sd"> :rtype: int</span>
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="k">return</span> <span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">network_node</span> <span class="o">+</span> <span class="s2">&quot;.num_calf_twists&quot;</span><span class="p">)</span>
+
+ <span class="nd">@num_calf_twists</span><span class="o">.</span><span class="n">setter</span>
+ <span class="k">def</span> <span class="nf">num_calf_twists</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">new_number</span><span class="p">):</span>
+ <span class="k">if</span> <span class="o">-</span><span class="mi">1</span> <span class="o">&lt;=</span> <span class="n">new_number</span> <span class="o">&lt;=</span> <span class="mi">3</span><span class="p">:</span>
+ <span class="n">utils</span><span class="o">.</span><span class="n">set_attribute</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">network_node</span><span class="p">,</span> <span class="s2">&quot;num_calf_twists&quot;</span><span class="p">,</span> <span class="n">new_number</span><span class="p">)</span>
+ <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">4</span><span class="p">):</span>
+ <span class="n">joint</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">prefix</span> <span class="o">+</span> <span class="s2">&quot;calf_twist_0&quot;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">i</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">suffix</span>
+ <span class="n">group</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_unique_name</span> <span class="o">+</span> <span class="s2">&quot;_calf_twist_0&quot;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">i</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> <span class="o">+</span> <span class="s2">&quot;_mover_grp&quot;</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">joint_mover</span><span class="o">.</span><span class="n">toggle_build_joint</span><span class="p">(</span><span class="n">joint</span><span class="p">,</span> <span class="n">group</span><span class="p">,</span> <span class="kc">False</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">i</span> <span class="o">+</span> <span class="mi">1</span> <span class="o">&lt;=</span> <span class="n">new_number</span><span class="p">:</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">joint_mover</span><span class="o">.</span><span class="n">toggle_build_joint</span><span class="p">(</span><span class="n">joint</span><span class="p">,</span> <span class="n">group</span><span class="p">)</span>
+ <span class="k">else</span><span class="p">:</span>
+ <span class="n">errors</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">&quot;Invalid number for calf twists. Integer must be between 0 and 3.&quot;</span><span class="p">)</span>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="nd">@property</span>
+ <span class="k">def</span> <span class="nf">side</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> This property holds the value of which side the leg module represents (left or right). As each side has a</span>
+<span class="sd"> different joint mover file, changing this value will swap out the joint mover with the proper joint mover file</span>
+<span class="sd"> for that side.</span>
+
+<span class="sd"> :return: int, 0 or 1, representing left or right side.</span>
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="k">return</span> <span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">network_node</span> <span class="o">+</span> <span class="s2">&quot;.side&quot;</span><span class="p">)</span>
+
+ <span class="nd">@side</span><span class="o">.</span><span class="n">setter</span>
+ <span class="k">def</span> <span class="nf">side</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">new_side</span><span class="p">):</span>
+ <span class="c1"># valid options for new side are: 0 or left or Left, and 1 or right or Right.</span>
+ <span class="n">sides</span> <span class="o">=</span> <span class="p">{</span><span class="s2">&quot;left&quot;</span><span class="p">:</span> <span class="mi">0</span><span class="p">,</span> <span class="s2">&quot;Left&quot;</span><span class="p">:</span> <span class="mi">0</span><span class="p">,</span> <span class="s2">&quot;right&quot;</span><span class="p">:</span> <span class="mi">1</span><span class="p">,</span> <span class="s2">&quot;Right&quot;</span><span class="p">:</span> <span class="mi">1</span><span class="p">}</span>
+
+ <span class="k">if</span> <span class="n">new_side</span> <span class="ow">in</span> <span class="n">sides</span><span class="p">:</span>
+ <span class="n">side_value</span> <span class="o">=</span> <span class="n">sides</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">new_side</span><span class="p">)</span>
+ <span class="k">elif</span> <span class="n">new_side</span> <span class="ow">in</span> <span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">]:</span>
+ <span class="n">side_value</span> <span class="o">=</span> <span class="n">new_side</span>
+ <span class="k">else</span><span class="p">:</span>
+ <span class="n">errors</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">&quot;Invalid side given! Valid arguments are left, Left, 0, right, Right, 1&quot;</span><span class="p">)</span>
+ <span class="k">return</span>
+
+ <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">network_node</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
+ <span class="n">utils</span><span class="o">.</span><span class="n">set_attribute</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">network_node</span><span class="p">,</span> <span class="s2">&quot;side&quot;</span><span class="p">,</span> <span class="n">side_value</span><span class="p">)</span>
+
+ <span class="c1"># todo: rebuild joint mover</span>
+ <span class="nb">print</span> <span class="s2">&quot;Switch out joint mover here!&quot;</span>
+
+ <span class="k">else</span><span class="p">:</span>
+ <span class="n">errors</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">&quot;ART_Leg_Biped.side.setter: No network node found.&quot;</span><span class="p">)</span>
+ <span class="k">return</span>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="nd">@property</span>
+ <span class="k">def</span> <span class="nf">has_ball_joint</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+
+ <span class="k">return</span> <span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">network_node</span> <span class="o">+</span> <span class="s2">&quot;.has_ball_joint&quot;</span><span class="p">)</span>
+
+ <span class="nd">@has_ball_joint</span><span class="o">.</span><span class="n">setter</span>
+ <span class="k">def</span> <span class="nf">has_ball_joint</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">new_value</span><span class="p">):</span>
+
+ <span class="k">if</span> <span class="nb">type</span><span class="p">(</span><span class="n">new_value</span><span class="p">)</span> <span class="ow">is</span> <span class="nb">bool</span><span class="p">:</span>
+ <span class="n">utils</span><span class="o">.</span><span class="n">set_attribute</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">network_node</span><span class="p">,</span> <span class="s2">&quot;has_ball_joint&quot;</span><span class="p">,</span> <span class="n">new_value</span><span class="p">)</span>
+
+ <span class="k">else</span><span class="p">:</span>
+ <span class="n">errors</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">&quot;</span><span class="si">{0}</span><span class="s2"> is not a boolean value! Must be True/False&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">new_value</span><span class="p">))</span>
+ <span class="k">return</span></div>
+</pre></div>
+
+ </div>
+ </div>
+ <footer>
+
+
+ <hr/>
+
+ <div role="contentinfo">
+ <p>
+ &copy; Copyright 2018, Jeremy Ernst.
+
+ </p>
+ </div>
+ Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
+
+</footer>
+
+ </div>
+ </div>
+
+ </section>
+
+ </div>
+
+
+
+
+
+ <script type="text/javascript">
+ var DOCUMENTATION_OPTIONS = {
+ URL_ROOT:'../../../',
+ VERSION:'2.0.1',
+ COLLAPSE_INDEX:false,
+ FILE_SUFFIX:'.html',
+ HAS_SOURCE: true
+ };
+ </script>
+ <script type="text/javascript" src="../../../_static/jquery.js"></script>
+ <script type="text/javascript" src="../../../_static/underscore.js"></script>
+ <script type="text/javascript" src="../../../_static/doctools.js"></script>
+ <script type="text/javascript" src="../../../_static/language_data.js"></script>
+
+
+
+ <script type="text/javascript" src="../../../_static/js/theme.js"></script>
+
+
+
+ <script type="text/javascript">
+ jQuery(function () {
+ SphinxRtdTheme.StickyNav.enable();
+ });
+ </script>
+
+
+</body>
+</html> \ No newline at end of file
diff --git a/docs/build/_modules/artv2_rig_modules/rig_module.html b/docs/build/_modules/artv2_rig_modules/rig_module.html
new file mode 100644
index 0000000..794c37d
--- /dev/null
+++ b/docs/build/_modules/artv2_rig_modules/rig_module.html
@@ -0,0 +1,412 @@
+
+
+<!DOCTYPE html>
+<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
+<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
+<head>
+ <meta charset="utf-8">
+
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+ <title>ARTv2</title>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
+
+
+
+
+ <link rel="index" title="Index"
+ href="../../genindex.html"/>
+ <link rel="search" title="Search" href="../../search.html"/>
+ <link rel="top" title="ARTv2 2.0.1 documentation" href="../../index.html"/>
+ <link rel="up" title="Module code" href="../index.html"/>
+
+
+ <script src="../../_static/js/modernizr.min.js"></script>
+
+</head>
+
+<body class="wy-body-for-nav" role="document">
+
+ <div class="wy-grid-for-nav">
+
+
+ <nav data-toggle="wy-nav-shift" class="wy-nav-side">
+ <div class="wy-side-scroll">
+ <div class="wy-side-nav-search" style="background-color: #343131">
+
+
+ <a href="http://www.jeremyernst.com">
+ <img src="../../_static/lsst-logo-dark.svg" class="logo" />
+
+ <span class="project-title">ARTv2</span>
+ </a>
+
+
+
+
+ </div>
+
+ <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+
+
+
+ <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../installing.html">Installing ARTv2</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../using_rigging_tools.html">Using the Rigging Tools</a><ul class="simple">
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../../using_anim_tools.html">Using the Animation Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../technical_documentation.html">ARTv2 Technical Documentation</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="../../rig_modules.html">ARTv2 Rig Modules</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="../../rig_module_base.html">ARTv2 Rig Modules Base Class</a></li>
+<li class="toctree-l3"><a class="reference internal" href="../../biped_leg_module.html">ARTv2 Bipedal Leg</a></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+
+
+
+ </div>
+ </div>
+ </nav>
+
+ <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+
+ <nav class="wy-nav-top" role="navigation" aria-label="top navigation">
+ <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+ <a href="../../index.html">ARTv2</a>
+ </nav>
+
+
+
+ <div class="wy-nav-content">
+ <div class="rst-content">
+ <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
+ <div class="dd-masthead">
+ <h1 class="dd-title">ARTv2</h1>
+ <ul class="dd-authors">
+
+ </ul>
+ <p>Latest Revision: <a href="#change-record"></a></p>
+</div>
+ <div itemprop="articleBody">
+
+ <h1>Source code for artv2_rig_modules.rig_module</h1><div class="highlight"><pre>
+<span></span><span class="c1"># -*- coding: utf-8 -*-</span>
+<span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">The rig_module provides the base class, ART_Component, from which all rig modules are derived.</span>
+
+<span class="sd">When creating a new rig module, here is a list of common attributes and functions you will want or need to override.</span>
+
+<span class="sd"> +------------+------------------------+----------------------------------------------------------------------------+</span>
+<span class="sd"> | Type | Name | Description |</span>
+<span class="sd"> +============+========================+============================================================================+</span>
+<span class="sd"> | attribute | nice_name | The string nice name of the module (as it will appear in UIs) |</span>
+<span class="sd"> +------------+------------------------+----------------------------------------------------------------------------+</span>
+<span class="sd"> | attribute | base_name | The string base name of the module. This is a simple string used to |</span>
+<span class="sd"> | | | identify the module type and append onto nodes created by the module. |</span>
+<span class="sd"> | | | For example, on a leg module, the base_name is simply: &quot;leg&quot; |</span>
+<span class="sd"> +------------+------------------------+----------------------------------------------------------------------------+</span>
+<span class="sd"> | attribute | has_sides | Boolean for whether or not the module supports different sides, like a leg |</span>
+<span class="sd"> | | | or arm do. |</span>
+<span class="sd"> +------------+------------------------+----------------------------------------------------------------------------+</span>
+<span class="sd"> | attribute | joint_mover_file | The relative path from the ARTv2 directory to the joint mover file of the |</span>
+<span class="sd"> | | | module. For example, self.joint_mover_file = |</span>
+<span class="sd"> | | | &quot;resources/rigging_guides/root.ma&quot; |</span>
+<span class="sd"> +------------+------------------------+----------------------------------------------------------------------------+</span>
+<span class="sd"> | function | _add_metadata | This method adds attributes you want to keep track of that are unique to |</span>
+<span class="sd"> | | | your module. Make sure that you still call on the base class&#39;s |</span>
+<span class="sd"> | | | _add_metadata method to setup the required attributes. |</span>
+<span class="sd"> +------------+------------------------+----------------------------------------------------------------------------+</span>
+
+<span class="sd">&quot;&quot;&quot;</span>
+<span class="kn">import</span> <span class="nn">inspect</span>
+<span class="kn">import</span> <span class="nn">os</span>
+<span class="kn">from</span> <span class="nn">abc</span> <span class="k">import</span> <span class="n">abstractmethod</span><span class="p">,</span> <span class="n">ABCMeta</span>
+
+<span class="kn">import</span> <span class="nn">maya.cmds</span> <span class="k">as</span> <span class="nn">cmds</span>
+<span class="kn">import</span> <span class="nn">pymel.core</span> <span class="k">as</span> <span class="nn">pm</span>
+
+<span class="kn">import</span> <span class="nn">artv2_utilities.error_utilities</span> <span class="k">as</span> <span class="nn">errors</span>
+<span class="kn">import</span> <span class="nn">artv2_utilities.general_utilities</span> <span class="k">as</span> <span class="nn">utils</span>
+<span class="kn">import</span> <span class="nn">artv2_utilities.rig_module_utilities</span> <span class="k">as</span> <span class="nn">module_utils</span>
+<span class="kn">from</span> <span class="nn">joint_mover</span> <span class="k">import</span> <span class="n">JointMover</span>
+
+<span class="n">reload</span><span class="p">(</span><span class="n">module_utils</span><span class="p">)</span>
+<span class="n">reload</span><span class="p">(</span><span class="n">utils</span><span class="p">)</span>
+
+
+<span class="c1"># noinspection PyPep8Naming</span>
+<div class="viewcode-block" id="ART_RigModule"><a class="viewcode-back" href="../../rig_module_base.html#artv2_rig_modules.rig_module.ART_RigModule">[docs]</a><span class="k">class</span> <span class="nc">ART_Component</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Base class for defining a rig module in ARTv2. All rig modules should inherit from this class.</span>
+<span class="sd"> &quot;&quot;&quot;</span>
+ <span class="n">__metaclass__</span> <span class="o">=</span> <span class="n">ABCMeta</span>
+
+ <span class="n">nice_name</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span>
+ <span class="n">base_name</span> <span class="o">=</span> <span class="kc">None</span>
+ <span class="n">has_sides</span> <span class="o">=</span> <span class="kc">False</span>
+ <span class="n">up</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">upAxis</span><span class="p">(</span><span class="n">q</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">ax</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+ <span class="n">joint_mover_file</span> <span class="o">=</span> <span class="s2">&quot;replace_me_with_valid_path.ma&quot;</span>
+
+ <span class="nd">@abstractmethod</span>
+ <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">prefix</span><span class="o">=</span><span class="s2">&quot;&quot;</span><span class="p">,</span> <span class="n">suffix</span><span class="o">=</span><span class="s2">&quot;&quot;</span><span class="p">,</span> <span class="n">network_node</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
+
+ <span class="n">prefix</span> <span class="o">=</span> <span class="n">module_utils</span><span class="o">.</span><span class="n">validate_prefix</span><span class="p">(</span><span class="n">network_node</span><span class="p">,</span> <span class="n">prefix</span><span class="p">)</span>
+ <span class="n">suffix</span> <span class="o">=</span> <span class="n">module_utils</span><span class="o">.</span><span class="n">validate_suffix</span><span class="p">(</span><span class="n">network_node</span><span class="p">,</span> <span class="n">suffix</span><span class="p">)</span>
+
+ <span class="k">if</span> <span class="n">network_node</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">_unique_name</span> <span class="o">=</span> <span class="n">prefix</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">base_name</span> <span class="o">+</span> <span class="n">suffix</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">_create_component</span><span class="p">(</span><span class="n">prefix</span><span class="p">,</span> <span class="n">suffix</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">joint_mover</span> <span class="o">=</span> <span class="n">JointMover</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">joint_mover_file</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">network_node</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">joint_mover</span><span class="o">.</span><span class="n">add_joint_mover</span><span class="p">()</span>
+
+ <span class="k">else</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">cmds</span><span class="o">.</span><span class="n">objExists</span><span class="p">(</span><span class="n">network_node</span><span class="p">):</span>
+ <span class="n">prefix</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">network_node</span> <span class="o">+</span> <span class="s2">&quot;.prefix&quot;</span><span class="p">)</span>
+ <span class="n">suffix</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">network_node</span> <span class="o">+</span> <span class="s2">&quot;.suffix&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">_unique_name</span> <span class="o">=</span> <span class="n">prefix</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">base_name</span> <span class="o">+</span> <span class="n">suffix</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">joint_mover</span> <span class="o">=</span> <span class="n">JointMover</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">joint_mover_file</span><span class="p">,</span> <span class="n">network_node</span><span class="p">)</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">prefix</span> <span class="o">=</span> <span class="n">prefix</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">suffix</span> <span class="o">=</span> <span class="n">suffix</span>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="k">def</span> <span class="nf">_create_component</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">prefix</span><span class="p">,</span> <span class="n">suffix</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Method for adding the module to the Maya scene. Calls on various functions to accomplish.</span>
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="n">character_node</span> <span class="o">=</span> <span class="n">module_utils</span><span class="o">.</span><span class="n">get_rig_asset_node</span><span class="p">()</span>
+ <span class="n">network_node</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_create_network_node</span><span class="p">()</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">_add_metadata</span><span class="p">(</span><span class="n">network_node</span><span class="p">,</span> <span class="n">prefix</span><span class="p">,</span> <span class="n">suffix</span><span class="p">)</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">connectAttr</span><span class="p">(</span><span class="n">character_node</span> <span class="o">+</span> <span class="s2">&quot;.rigModules&quot;</span><span class="p">,</span> <span class="n">network_node</span> <span class="o">+</span> <span class="s2">&quot;.asset&quot;</span><span class="p">)</span>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="nd">@abstractmethod</span>
+ <span class="k">def</span> <span class="nf">_add_metadata</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">network_node</span><span class="p">,</span> <span class="n">prefix</span><span class="p">,</span> <span class="n">suffix</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Method for adding metadata attributes to the network node that are important for the module. The ones created</span>
+<span class="sd"> by the base class are necessary for all modules.</span>
+
+<span class="sd"> :param (str) network_node: module&#39;s network node name to add attributes to.</span>
+<span class="sd"> :param (str) prefix: the module&#39;s (optional) prefix.</span>
+<span class="sd"> :param (str) suffix: the module&#39;s (optional) suffix.</span>
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="n">cmds</span><span class="o">.</span><span class="n">lockNode</span><span class="p">(</span><span class="n">network_node</span><span class="p">,</span> <span class="n">lock</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">addAttr</span><span class="p">(</span><span class="n">network_node</span><span class="p">,</span> <span class="n">ln</span><span class="o">=</span><span class="s2">&quot;asset&quot;</span><span class="p">,</span> <span class="n">at</span><span class="o">=</span><span class="s2">&quot;message&quot;</span><span class="p">)</span>
+
+ <span class="n">cmds</span><span class="o">.</span><span class="n">addAttr</span><span class="p">(</span><span class="n">network_node</span><span class="p">,</span> <span class="n">ln</span><span class="o">=</span><span class="s2">&quot;modulePath&quot;</span><span class="p">,</span> <span class="n">dt</span><span class="o">=</span><span class="s2">&quot;string&quot;</span><span class="p">,</span> <span class="n">keyable</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
+
+ <span class="n">module_path</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">splitext</span><span class="p">(</span><span class="n">inspect</span><span class="o">.</span><span class="n">getfile</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="vm">__class__</span><span class="p">)</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">&quot;artv2_source&quot;</span><span class="p">)[</span><span class="mi">1</span><span class="p">])[</span><span class="mi">0</span><span class="p">]</span>
+ <span class="n">module_path</span> <span class="o">=</span> <span class="n">module_path</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">&quot;</span><span class="se">\\</span><span class="s2">&quot;</span><span class="p">,</span> <span class="s2">&quot;.&quot;</span><span class="p">)</span>
+ <span class="n">module_path</span> <span class="o">=</span> <span class="n">module_path</span><span class="o">.</span><span class="n">partition</span><span class="p">(</span><span class="s2">&quot;.&quot;</span><span class="p">)[</span><span class="mi">2</span><span class="p">]</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">network_node</span> <span class="o">+</span> <span class="s2">&quot;.modulePath&quot;</span><span class="p">,</span> <span class="n">module_path</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="s2">&quot;string&quot;</span><span class="p">,</span> <span class="n">lock</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="n">cmds</span><span class="o">.</span><span class="n">addAttr</span><span class="p">(</span><span class="n">network_node</span><span class="p">,</span> <span class="n">ln</span><span class="o">=</span><span class="s2">&quot;className&quot;</span><span class="p">,</span> <span class="n">dt</span><span class="o">=</span><span class="s2">&quot;string&quot;</span><span class="p">,</span> <span class="n">keyable</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">network_node</span> <span class="o">+</span> <span class="s2">&quot;.className&quot;</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="vm">__class__</span><span class="o">.</span><span class="vm">__name__</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="s2">&quot;string&quot;</span><span class="p">,</span> <span class="n">lock</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="n">cmds</span><span class="o">.</span><span class="n">addAttr</span><span class="p">(</span><span class="n">network_node</span><span class="p">,</span> <span class="n">ln</span><span class="o">=</span><span class="s2">&quot;moduleName&quot;</span><span class="p">,</span> <span class="n">dt</span><span class="o">=</span><span class="s2">&quot;string&quot;</span><span class="p">,</span> <span class="n">keyable</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">network_node</span> <span class="o">+</span> <span class="s2">&quot;.moduleName&quot;</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_unique_name</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="s2">&quot;string&quot;</span><span class="p">,</span> <span class="n">lock</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">addAttr</span><span class="p">(</span><span class="n">network_node</span><span class="p">,</span> <span class="n">ln</span><span class="o">=</span><span class="s2">&quot;baseName&quot;</span><span class="p">,</span> <span class="n">dt</span><span class="o">=</span><span class="s2">&quot;string&quot;</span><span class="p">,</span> <span class="n">keyable</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">network_node</span> <span class="o">+</span> <span class="s2">&quot;.baseName&quot;</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">base_name</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="s2">&quot;string&quot;</span><span class="p">,</span> <span class="n">lock</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">addAttr</span><span class="p">(</span><span class="n">network_node</span><span class="p">,</span> <span class="n">ln</span><span class="o">=</span><span class="s2">&quot;prefix&quot;</span><span class="p">,</span> <span class="n">dt</span><span class="o">=</span><span class="s2">&quot;string&quot;</span><span class="p">,</span> <span class="n">keyable</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">network_node</span> <span class="o">+</span> <span class="s2">&quot;.prefix&quot;</span><span class="p">,</span> <span class="n">prefix</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="s2">&quot;string&quot;</span><span class="p">,</span> <span class="n">lock</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">addAttr</span><span class="p">(</span><span class="n">network_node</span><span class="p">,</span> <span class="n">ln</span><span class="o">=</span><span class="s2">&quot;suffix&quot;</span><span class="p">,</span> <span class="n">dt</span><span class="o">=</span><span class="s2">&quot;string&quot;</span><span class="p">,</span> <span class="n">keyable</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">network_node</span> <span class="o">+</span> <span class="s2">&quot;.suffix&quot;</span><span class="p">,</span> <span class="n">suffix</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="s2">&quot;string&quot;</span><span class="p">,</span> <span class="n">lock</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="n">cmds</span><span class="o">.</span><span class="n">addAttr</span><span class="p">(</span><span class="n">network_node</span><span class="p">,</span> <span class="n">ln</span><span class="o">=</span><span class="s2">&quot;parentModuleBone&quot;</span><span class="p">,</span> <span class="n">dt</span><span class="o">=</span><span class="s2">&quot;string&quot;</span><span class="p">,</span> <span class="n">keyable</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">addAttr</span><span class="p">(</span><span class="n">network_node</span><span class="p">,</span> <span class="n">ln</span><span class="o">=</span><span class="s2">&quot;mirrorModule&quot;</span><span class="p">,</span> <span class="n">dt</span><span class="o">=</span><span class="s2">&quot;string&quot;</span><span class="p">,</span> <span class="n">keyable</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">addAttr</span><span class="p">(</span><span class="n">network_node</span><span class="p">,</span> <span class="n">ln</span><span class="o">=</span><span class="s2">&quot;pinned&quot;</span><span class="p">,</span> <span class="n">at</span><span class="o">=</span><span class="s2">&quot;bool&quot;</span><span class="p">,</span> <span class="n">keyable</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">network_node</span> <span class="o">+</span> <span class="s2">&quot;.pinned&quot;</span><span class="p">,</span> <span class="kc">False</span><span class="p">,</span> <span class="n">lock</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="n">cmds</span><span class="o">.</span><span class="n">addAttr</span><span class="p">(</span><span class="n">network_node</span><span class="p">,</span> <span class="n">ln</span><span class="o">=</span><span class="s2">&quot;global_movers&quot;</span><span class="p">,</span> <span class="n">at</span><span class="o">=</span><span class="s2">&quot;message&quot;</span><span class="p">)</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">addAttr</span><span class="p">(</span><span class="n">network_node</span><span class="p">,</span> <span class="n">ln</span><span class="o">=</span><span class="s2">&quot;offset_movers&quot;</span><span class="p">,</span> <span class="n">at</span><span class="o">=</span><span class="s2">&quot;message&quot;</span><span class="p">)</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">addAttr</span><span class="p">(</span><span class="n">network_node</span><span class="p">,</span> <span class="n">ln</span><span class="o">=</span><span class="s2">&quot;geo_movers&quot;</span><span class="p">,</span> <span class="n">at</span><span class="o">=</span><span class="s2">&quot;message&quot;</span><span class="p">)</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">addAttr</span><span class="p">(</span><span class="n">network_node</span><span class="p">,</span> <span class="n">ln</span><span class="o">=</span><span class="s2">&quot;lra_movers&quot;</span><span class="p">,</span> <span class="n">at</span><span class="o">=</span><span class="s2">&quot;message&quot;</span><span class="p">)</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">addAttr</span><span class="p">(</span><span class="n">network_node</span><span class="p">,</span> <span class="n">ln</span><span class="o">=</span><span class="s2">&quot;mover_grp&quot;</span><span class="p">,</span> <span class="n">at</span><span class="o">=</span><span class="s2">&quot;message&quot;</span><span class="p">)</span>
+
+ <span class="n">cmds</span><span class="o">.</span><span class="n">lockNode</span><span class="p">(</span><span class="n">network_node</span><span class="p">,</span> <span class="n">lock</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="k">def</span> <span class="nf">_create_network_node</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+
+ <span class="n">existing_nodes</span> <span class="o">=</span> <span class="n">module_utils</span><span class="o">.</span><span class="n">return_all_components</span><span class="p">()</span>
+ <span class="k">for</span> <span class="n">node</span> <span class="ow">in</span> <span class="n">existing_nodes</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">node</span> <span class="o">+</span> <span class="s2">&quot;.moduleName&quot;</span><span class="p">)</span> <span class="o">==</span> <span class="bp">self</span><span class="o">.</span><span class="n">_unique_name</span><span class="p">:</span>
+ <span class="n">errors</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">&quot;This module instance has already been created! Aborting.&quot;</span><span class="p">)</span>
+ <span class="k">return</span>
+
+ <span class="n">network_node</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">shadingNode</span><span class="p">(</span><span class="s2">&quot;network&quot;</span><span class="p">,</span> <span class="n">name</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_unique_name</span> <span class="o">+</span> <span class="s2">&quot;_metadata&quot;</span><span class="p">,</span> <span class="n">asUtility</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">lockNode</span><span class="p">(</span><span class="n">network_node</span><span class="p">,</span> <span class="n">lock</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+ <span class="k">return</span> <span class="n">network_node</span>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="nd">@property</span>
+ <span class="k">def</span> <span class="nf">parent</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> This property holds the joint name of the parent of this module.</span>
+<span class="sd"> &quot;&quot;&quot;</span>
+ <span class="k">return</span> <span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">network_node</span> <span class="o">+</span> <span class="s2">&quot;.parentModuleBone&quot;</span><span class="p">)</span>
+
+ <span class="nd">@parent</span><span class="o">.</span><span class="n">setter</span>
+ <span class="k">def</span> <span class="nf">parent</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">new_parent</span><span class="p">):</span>
+ <span class="n">all_joints</span> <span class="o">=</span> <span class="n">module_utils</span><span class="o">.</span><span class="n">get_all_created_joints</span><span class="p">()</span>
+ <span class="k">if</span> <span class="n">new_parent</span> <span class="ow">in</span> <span class="n">all_joints</span><span class="p">:</span>
+ <span class="n">utils</span><span class="o">.</span><span class="n">set_attribute</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">network_node</span><span class="p">,</span> <span class="s2">&quot;parentModuleBone&quot;</span><span class="p">,</span> <span class="n">new_parent</span><span class="p">,</span> <span class="s2">&quot;string&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">joint_mover</span><span class="o">.</span><span class="n">set_mover_parent</span><span class="p">(</span><span class="n">new_parent</span><span class="p">)</span>
+ <span class="k">else</span><span class="p">:</span>
+ <span class="n">errors</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">&quot;Invalid parent: </span><span class="si">{0}</span><span class="s2">! No module creates such a joint.&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">new_parent</span><span class="p">))</span>
+ <span class="k">return</span>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="nd">@property</span>
+ <span class="k">def</span> <span class="nf">prefix</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+
+ <span class="k">return</span> <span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">network_node</span> <span class="o">+</span> <span class="s2">&quot;.prefix&quot;</span><span class="p">)</span>
+
+ <span class="nd">@prefix</span><span class="o">.</span><span class="n">setter</span>
+ <span class="k">def</span> <span class="nf">prefix</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">new_prefix</span><span class="p">):</span>
+
+ <span class="n">valid_prefix</span> <span class="o">=</span> <span class="n">module_utils</span><span class="o">.</span><span class="n">validate_prefix</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">network_node</span><span class="p">,</span> <span class="n">new_prefix</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">valid_prefix</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">False</span><span class="p">:</span>
+ <span class="n">old_prefix</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">prefix</span>
+ <span class="n">suffix</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">suffix</span>
+
+ <span class="n">utils</span><span class="o">.</span><span class="n">set_attribute</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">network_node</span><span class="p">,</span> <span class="s2">&quot;prefix&quot;</span><span class="p">,</span> <span class="n">valid_prefix</span><span class="p">,</span> <span class="s2">&quot;string&quot;</span><span class="p">)</span>
+ <span class="n">utils</span><span class="o">.</span><span class="n">set_attribute</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">network_node</span><span class="p">,</span> <span class="s2">&quot;moduleName&quot;</span><span class="p">,</span> <span class="n">valid_prefix</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">base_name</span> <span class="o">+</span> <span class="n">suffix</span><span class="p">,</span> <span class="s2">&quot;string&quot;</span><span class="p">)</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">_unique_name</span> <span class="o">=</span> <span class="n">valid_prefix</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">base_name</span> <span class="o">+</span> <span class="n">suffix</span>
+ <span class="n">pynode</span> <span class="o">=</span> <span class="n">pm</span><span class="o">.</span><span class="n">PyNode</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">network_node</span><span class="p">)</span>
+ <span class="n">utils</span><span class="o">.</span><span class="n">rename_object</span><span class="p">(</span><span class="n">pynode</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_unique_name</span> <span class="o">+</span> <span class="s2">&quot;_metadata&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">joint_mover</span><span class="o">.</span><span class="n">metanode</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_unique_name</span> <span class="o">+</span> <span class="s2">&quot;_metadata&quot;</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">joint_mover</span><span class="o">.</span><span class="n">rename_movers</span><span class="p">(</span><span class="n">old_prefix</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">suffix</span><span class="p">)</span>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="nd">@property</span>
+ <span class="k">def</span> <span class="nf">suffix</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+
+ <span class="k">return</span> <span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">network_node</span> <span class="o">+</span> <span class="s2">&quot;.suffix&quot;</span><span class="p">)</span>
+
+ <span class="nd">@suffix</span><span class="o">.</span><span class="n">setter</span>
+ <span class="k">def</span> <span class="nf">suffix</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">new_suffix</span><span class="p">):</span>
+
+ <span class="n">valid_suffix</span> <span class="o">=</span> <span class="n">module_utils</span><span class="o">.</span><span class="n">validate_suffix</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">network_node</span><span class="p">,</span> <span class="n">new_suffix</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">valid_suffix</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">False</span><span class="p">:</span>
+ <span class="n">old_suffix</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">suffix</span>
+ <span class="n">prefix</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">prefix</span>
+
+ <span class="n">utils</span><span class="o">.</span><span class="n">set_attribute</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">network_node</span><span class="p">,</span> <span class="s2">&quot;suffix&quot;</span><span class="p">,</span> <span class="n">valid_suffix</span><span class="p">,</span> <span class="s2">&quot;string&quot;</span><span class="p">)</span>
+ <span class="n">utils</span><span class="o">.</span><span class="n">set_attribute</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">network_node</span><span class="p">,</span> <span class="s2">&quot;moduleName&quot;</span><span class="p">,</span> <span class="n">prefix</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">base_name</span> <span class="o">+</span> <span class="n">valid_suffix</span><span class="p">,</span> <span class="s2">&quot;string&quot;</span><span class="p">)</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">_unique_name</span> <span class="o">=</span> <span class="n">prefix</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">base_name</span> <span class="o">+</span> <span class="n">valid_suffix</span>
+ <span class="n">pynode</span> <span class="o">=</span> <span class="n">pm</span><span class="o">.</span><span class="n">PyNode</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">network_node</span><span class="p">)</span>
+ <span class="n">utils</span><span class="o">.</span><span class="n">rename_object</span><span class="p">(</span><span class="n">pynode</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_unique_name</span> <span class="o">+</span> <span class="s2">&quot;_metadata&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">joint_mover</span><span class="o">.</span><span class="n">metanode</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_unique_name</span> <span class="o">+</span> <span class="s2">&quot;_metadata&quot;</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">joint_mover</span><span class="o">.</span><span class="n">rename_movers</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">prefix</span><span class="p">,</span> <span class="n">old_suffix</span><span class="p">)</span>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="nd">@property</span>
+ <span class="k">def</span> <span class="nf">network_node</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> This property holds the network node that contains this module&#39;s metadata.</span>
+<span class="sd"> &quot;&quot;&quot;</span>
+ <span class="n">return_node</span> <span class="o">=</span> <span class="kc">None</span>
+
+ <span class="n">rig_modules</span> <span class="o">=</span> <span class="n">module_utils</span><span class="o">.</span><span class="n">return_all_components</span><span class="p">()</span>
+ <span class="k">for</span> <span class="n">module</span> <span class="ow">in</span> <span class="n">rig_modules</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">module</span> <span class="o">+</span> <span class="s2">&quot;.moduleName&quot;</span><span class="p">)</span> <span class="o">==</span> <span class="bp">self</span><span class="o">.</span><span class="n">_unique_name</span><span class="p">:</span>
+ <span class="n">return_node</span> <span class="o">=</span> <span class="n">module</span>
+ <span class="k">break</span>
+
+ <span class="k">if</span> <span class="n">return_node</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
+ <span class="n">errors</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">&quot;ART_Component.network_node: No network node found.&quot;</span><span class="p">)</span>
+ <span class="k">return</span>
+ <span class="k">return</span> <span class="n">return_node</span></div>
+</pre></div>
+
+ </div>
+ </div>
+ <footer>
+
+
+ <hr/>
+
+ <div role="contentinfo">
+ <p>
+ &copy; Copyright 2018, Jeremy Ernst.
+
+ </p>
+ </div>
+ Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
+
+</footer>
+
+ </div>
+ </div>
+
+ </section>
+
+ </div>
+
+
+
+
+
+ <script type="text/javascript">
+ var DOCUMENTATION_OPTIONS = {
+ URL_ROOT:'../../',
+ VERSION:'2.0.1',
+ COLLAPSE_INDEX:false,
+ FILE_SUFFIX:'.html',
+ HAS_SOURCE: true
+ };
+ </script>
+ <script type="text/javascript" src="../../_static/jquery.js"></script>
+ <script type="text/javascript" src="../../_static/underscore.js"></script>
+ <script type="text/javascript" src="../../_static/doctools.js"></script>
+ <script type="text/javascript" src="../../_static/language_data.js"></script>
+
+
+
+ <script type="text/javascript" src="../../_static/js/theme.js"></script>
+
+
+
+ <script type="text/javascript">
+ jQuery(function () {
+ SphinxRtdTheme.StickyNav.enable();
+ });
+ </script>
+
+
+</body>
+</html> \ No newline at end of file