Exemplo n.º 1
0
 private static void Activate()
 {
     SavedAvatarMod.Set(avatarName, allModInfoListView[avatarName]);
     foreach (Transform child in GetModsObject().transform)
     {
         var modObject = child.gameObject;
         ActivateMod(modObject);
     }
     allModInfoListViewOld[avatarName] = DeepClone(allModInfoListView[avatarName]);
 }
Exemplo n.º 2
0
 private void UpdateActiveObject()
 {
     if (Selection.activeGameObject == null || !Selection.activeGameObject.activeInHierarchy)
     {
         avatarSelected = false;
         return;
     }
     avatarTransform = Selection.activeGameObject.transform.root;
     avatarObject    = avatarTransform.gameObject;
     if (IsHumanoid(avatarObject))
     {
         avatarName = avatarObject.GetComponent <Animator>().avatar.name;
         if (!allModInfoListView.ContainsKey(avatarName))
         {
             if (SavedAvatarMod.Get(avatarName) != null)
             {
                 allModInfoListView.Add(avatarName, SavedAvatarMod.Get(avatarName));
             }
             else
             {
                 allModInfoListView.Add(avatarName, new Dictionary <int, ModInfo>());
             }
         }
         if (!allModInfoListViewOld.ContainsKey(avatarName))
         {
             if (SavedAvatarMod.Get(avatarName) != null)
             {
                 allModInfoListViewOld.Add(avatarName, SavedAvatarMod.Get(avatarName));
             }
             else
             {
                 allModInfoListViewOld.Add(avatarName, new Dictionary <int, ModInfo>());
             }
         }
         avatarSelected = true;
     }
     else
     {
         avatarSelected = false;
     }
     Repaint();
 }
Exemplo n.º 3
0
        private static void ActivateMod(GameObject go)
        {
            ModInfo mi    = SavedAvatarMod.Get(avatarName)[go.GetInstanceID()];
            ModInfo miOld = null;

            if (allModInfoListViewOld.ContainsKey(avatarName) && allModInfoListViewOld[avatarName].ContainsKey(go.GetInstanceID()))
            {
                miOld = allModInfoListViewOld[avatarName][go.GetInstanceID()];
            }
            if (!mi.isEnabled)
            {
                return;
            }
            if (mi.isHumanoid)
            {
                var armature = GetArmatureObject(go);
                var bones    = GetAllChildren(armature);
                bones.Add(armature);
                foreach (var bone in bones)
                {
                    var constraint = bone.GetComponent <ParentConstraint>();
                    if (constraint == null)
                    {
                        constraint = bone.AddComponent <ParentConstraint>();
                    }
                    var rigName = GetRigName(go, bone.name);
                    if (rigName == null || rigName == "")
                    {
                        continue;
                    }
                    var parentObject = GetBoneObject(avatarObject, rigName);
                    constraint.constraintActive = true;
                    ConstraintSource cs = default(ConstraintSource);
                    cs.weight          = 1.0f;
                    cs.sourceTransform = parentObject.transform;
                    for (int i = 0; i < constraint.sourceCount; i++)
                    {
                        ConstraintSource cs2 = constraint.GetSource(i);
                        if (cs2.sourceTransform == cs.sourceTransform && cs2.weight == cs.weight)
                        {
                            constraint.RemoveSource(i);
                            break;
                        }
                    }
                    constraint.AddSource(cs);
                }
            }
            else
            {
                var constraint = go.GetComponent <ParentConstraint>();
                if (constraint == null)
                {
                    constraint = go.AddComponent <ParentConstraint>();
                }
                if (mi.genericSourceObjectID != null)
                {
                    var        parentObject    = (GameObject)EditorUtility.InstanceIDToObject((int)mi.genericSourceObjectID);
                    GameObject parentObjectOld = null;
                    if (miOld != null)
                    {
                        parentObjectOld = (GameObject)EditorUtility.InstanceIDToObject((int)miOld.genericSourceObjectID);
                    }
                    constraint.constraintActive = true;
                    ConstraintSource cs = default(ConstraintSource);
                    cs.weight          = 1.0f;
                    cs.sourceTransform = parentObject.transform;
                    if (parentObjectOld != null)
                    {
                        ConstraintSource cs1 = default(ConstraintSource);
                        cs1.weight          = 1.0f;
                        cs1.sourceTransform = parentObjectOld.transform;
                        for (int i = 0; i < constraint.sourceCount; i++)
                        {
                            ConstraintSource cs2 = constraint.GetSource(i);
                            if (cs2.sourceTransform == cs1.sourceTransform && cs2.weight == cs1.weight)
                            {
                                constraint.RemoveSource(i);
                                break;
                            }
                        }
                    }
                    constraint.AddSource(cs);
                }
            }
        }