public JsonCharacter(Animator animator_, int id_, ResourceMapper resMap) { id = id_; if (!animator_) { throw new System.ArgumentNullException("animator_"); } animator = animator_; if (resMap == null) { throw new System.ArgumentNullException("resMap"); } name = animator.name; assetPath = AssetDatabase.GetAssetPath(animator); //skeleton = new JsonSkeleton(animator.name, id, animator.transform, characterObjectMapper); var skeleton = JsonSkeletonBuilder.buildFromRootTransform(animator.transform); var objects = harvestAttachedObjects(animator); var characterObjectMapper = new GameObjectMapper(); //Hmm.... attachedObjects = objects.Select((arg) => new JsonGameObject(arg, characterObjectMapper, resMap)).ToList(); //Hmm. Because of retargeting, we will need to possibly create multiple copies of a single animator controller. //var JsonAnimatorController( }
public ResId registerSkeleton(Transform rootTransform, bool findPrefab) { if (findPrefab) { rootTransform = Utility.getSrcPrefabAssetObject(rootTransform, false); } JsonSkeleton skel = findSkeleton(rootTransform); if (skel != null) { var testId = findSkeletonId(rootTransform); Sanity.check(testId == skel.id, "ID mismatch within skeleton registry"); return(skel.id); } /* if (jsonSkeletons.TryGetValue(rootTransform, out skel)) * return skel.id;*/ var newSkel = JsonSkeletonBuilder.buildFromRootTransform(rootTransform); var newId = ResId.fromObjectIndex(skeletons.Count); //ResId.fromObjectIndex(jsonSkeletons.Count); Sanity.check(skeletons.Count == sortedSkelIds.Count, "Skeleton id and skeleton count mismatch"); newSkel.id = newId; //jsonSkeletons.Add(rootTransform, newSkel); skelIds.Add(rootTransform, newId); skeletons.Add(newId, newSkel); sortedSkelIds.Add(newId); jsonSkeletonRootTransforms.Add(newSkel.id, rootTransform); return(newSkel.id); }