コード例 #1
0
        public override void OnInspectorGUI()
        {
            SpineSkeleton skeleton = (SpineSkeleton)target;

            if (GUILayout.Button("Refresh"))
            {
                if (skeleton)
                {
                    skeleton.Refresh();
                    return;
                }
            }

            DrawDefaultInspector();
        }
コード例 #2
0
        public void Refresh()
        {
            Clear();

            SpineSkeleton skeleton = GetComponentInParent <SpineSkeleton>();

            switch (Type)
            {
            case AttachmentType.Region:
            {
                SpriteRenderer spriteRenderer = gameObject.AddComponent <SpriteRenderer>();
                spriteRenderer.sprite = Sprite;
                if (skeleton.SpriteMaterial != null)
                {
                    spriteRenderer.sharedMaterial = skeleton.SpriteMaterial;
                }
                transform.localPosition   += new Vector3(PositionOffset.x, PositionOffset.y, 0);
                transform.localEulerAngles = new Vector3(0, 0, RotationOffset);
                transform.localScale       = new Vector3(100 * ScaleOffset.x, 100 * ScaleOffset.y, 1);
                break;
            }

            case AttachmentType.Mesh:
            {
                MeshRenderer meshRenderer = gameObject.AddComponent <MeshRenderer>();
                MeshFilter   meshFilter   = gameObject.AddComponent <MeshFilter>();
                meshFilter.sharedMesh = Mesh.Mesh;
                Material material = skeleton.MeshMaterial != null ? new Material(skeleton.MeshMaterial) : new Material(Shader.Find("Default/Diffuse"));
                material.mainTexture        = Mesh.Texture;
                meshRenderer.sharedMaterial = material;
                break;
            }

            case AttachmentType.SkinnedMesh:
            {
                SkinnedMeshRenderer meshRenderer = gameObject.AddComponent <SkinnedMeshRenderer>();
                Material            material     = skeleton.MeshMaterial != null ? new Material(skeleton.MeshMaterial) : new Material(Shader.Find("Default/Diffuse"));
                material.mainTexture        = Mesh.Texture;
                meshRenderer.sharedMaterial = material;
                meshRenderer.bones          = Mesh.Bones;
                meshRenderer.sharedMesh     = Mesh.Mesh;
                break;
            }
            }
        }
コード例 #3
0
ファイル: SpineBone.cs プロジェクト: yeti25660/spineimporter
        void OnDrawGizmosSelected()
        {
            SpineSkeleton skeleton = Skeleton;

            if (!skeleton || !skeleton.DrawBones)
            {
                return;
            }

            Vector3 a = transform.position;
            Vector3 b = transform.TransformPoint(new Vector3(_length, 0, 0));
            Vector3 c = transform.TransformPoint(new Vector3(0.05f * _length, 0.05f * _length, 0));
            Vector3 d = transform.TransformPoint(new Vector3(0.05f * _length, -0.05f * _length, 0));

            Gizmos.DrawLine(a, c);
            Gizmos.DrawLine(a, d);
            Gizmos.DrawLine(b, c);
            Gizmos.DrawLine(b, d);
        }
コード例 #4
0
        public static void Import()
        {
            Object    file = Selection.activeObject;
            TextAsset text = Selection.activeObject as TextAsset;

            if (!text)
            {
                return;
            }

            string assetPath = Path.GetDirectoryName(AssetDatabase.GetAssetPath(file));

            string prefabPath = EditorUtility.SaveFilePanel("Choose Prefab Location", assetPath, file.name, "prefab");

            prefabPath = "Assets" + prefabPath.Substring(Application.dataPath.Length);

            string name = Path.GetFileNameWithoutExtension(prefabPath);

            string imagePath = assetPath + "/images/";
            string dataPath  = Path.GetDirectoryName(prefabPath) + "/" + name + "_data/";

            if (!Directory.Exists(Application.dataPath + dataPath.Substring(6)))
            {
                AssetDatabase.CreateFolder(Path.GetDirectoryName(prefabPath), name + "_data");
            }

            GameObject rootGo = new GameObject(file.name);

            Animator animator = rootGo.AddComponent <Animator>();

            string animatorPath = dataPath + name + ".controller";

            UnityEditorInternal.AnimatorController controller = AssetDatabase.LoadAssetAtPath(animatorPath, typeof(RuntimeAnimatorController)) as UnityEditorInternal.AnimatorController;
            if (!controller)
            {
                controller = UnityEditorInternal.AnimatorController.CreateAnimatorControllerAtPath(animatorPath);
                UnityEditorInternal.AnimatorController.SetAnimatorController(animator, controller);
            }

            UnityEditorInternal.AnimatorController.SetAnimatorController(animator, controller);

            SpineSkeleton skeleton = rootGo.AddComponent <SpineSkeleton>();

            skeleton.ImagePath  = imagePath;
            skeleton.DataPath   = dataPath;
            skeleton.SourceData = text;
            skeleton.Refresh();

            GameObject prefab = AssetDatabase.LoadAssetAtPath(prefabPath, typeof(GameObject)) as GameObject;

            if (prefab)
            {
                PrefabUtility.ReplacePrefab(rootGo, prefab);
            }
            else
            {
                PrefabUtility.CreatePrefab(prefabPath, rootGo);
            }

            Object.DestroyImmediate(rootGo);
        }