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(
        }
예제 #2
0
        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);
        }