Esempio n. 1
0
        private static void ExecuteOnTarget(System.Action <UMake, UMakeTarget> callback)
        {
            if (callback == null)
            {
                return;
            }

            GetArgs();

            string targetName;

            Args.TryGetValue("target", out targetName);

            UMakeTarget target;

            if (!UMake.GetTarget(targetName).TryGet(out target))
            {
                throw new CliErrorException(string.Format("Could not find target '{0}'.", targetName));
            }

            UMake umake;

            if (UMake.Get().TryGet(out umake))
            {
                callback(umake, target);
            }
        }
        public static void ExecuteAction(UMakeTarget t, BuildAction action)
        {
            UMake umake;

            if (!UMake.Get().TryGet(out umake))
            {
                return;
            }

            string buildPath;

            UMakeTarget.Path targetPath;

            switch (action)
            {
            case BuildAction.PreActions:
                EditorApplication.delayCall += () => t.ExecutePreBuildActions(umake);
                break;

            case BuildAction.Build:
                buildPath = UMake.GetBuildPath();
                EditorApplication.delayCall += () => t.Build(umake, buildPath);
                break;

            case BuildAction.PostActions:
                EditorApplication.delayCall += () => t.ExecutePostBuildActions(umake);
                break;

            case BuildAction.OpenFolder:
                targetPath = t.GetTargetPath(umake.version, UMake.GetBuildPath());
                EditorUtility.RevealInFinder(targetPath.directoryPath);
                break;
            }
        }
Esempio n. 3
0
 public static void Select()
 {
     UMake.Get().IfSome(umake =>
     {
         Selection.activeObject = umake;
         EditorGUIUtility.PingObject(umake);
     });
 }
Esempio n. 4
0
        public override void OnGUI(Rect position, SerializedProperty property, GUIContent label)
        {
            PropertyDrawerHelper.LoadAttributeTooltip(this, label);

            position = position.Right(-16.0f);

            float buttonWidth = 40.0f;
            Rect  preButtonRect, buildButtonRect, postButtonRect;

            Rect propertyRect = position
                                .Right(buttonWidth, out postButtonRect)
                                .Right(buttonWidth, out buildButtonRect)
                                .Right(buttonWidth, out preButtonRect);

            UMakeTarget target;

            UMakeTargetEditor.BuildAction action;

            using (new ChangeIndentLevel(0))
            {
                EditorGUI.PropertyField(propertyRect, property, GUIContent.none);

                target = property.objectReferenceValue as UMakeTarget;
                action = UMakeTargetEditor.BuildAction.None;

                GUI.enabled = target != null && UMakeTargetEditor.CanBuild;

                if (GUI.Button(preButtonRect, "Pre", EditorStyles.miniButtonLeft))
                {
                    action = UMakeTargetEditor.BuildAction.PreActions;
                }

                if (GUI.Button(buildButtonRect, "Build", EditorStyles.miniButtonMid))
                {
                    action = UMakeTargetEditor.BuildAction.Build;
                }

                if (GUI.Button(postButtonRect, "Post", EditorStyles.miniButtonRight))
                {
                    action = UMakeTargetEditor.BuildAction.PostActions;
                }

                GUI.enabled = true;
            }

            property.serializedObject.ApplyModifiedProperties();

            UMake umake;

            if (UMake.Get().TryGet(out umake) && target != null)
            {
                UMakeTargetEditor.ExecuteAction(target, action);
            }
        }
Esempio n. 5
0
        public static void Select()
        {
            UMake umake;

            if (!UMake.Get().TryGet(out umake))
            {
                umake = ScriptableObject.CreateInstance <UMake>();
                AssetDatabase.CreateAsset(umake, UMake.Path);
            }

            if (umake != null)
            {
                Selection.activeObject = umake;
                EditorGUIUtility.PingObject(umake);
            }
        }