Example #1
0
    public void ExtractSkeleton(Transform[] bones)
    {
        ArrayExtensions.Clear(ref Bones);
        Action <Transform, Bone> recursion = null;

        recursion = new Action <Transform, Bone>((transform, parent) => {
            if (System.Array.Find(bones, x => x == transform))
            {
                Bone bone = new Bone(this, transform, Bones.Length);
                ArrayExtensions.Append(ref Bones, bone);
                if (parent != null)
                {
                    bone.Parent = parent.Index;
                    ArrayExtensions.Append(ref parent.Childs, bone.Index);
                }
                parent = bone;
            }
            for (int i = 0; i < transform.childCount; i++)
            {
                recursion(transform.GetChild(i), parent);
            }
        });
        recursion(GetRoot(), null);
        BoneNames = new string[0];
    }
Example #2
0
    public Sensor AddSensor(string id, string[] bones, Vector3 offset, float threshold, float velocity, LayerMask mask)
    {
        Names = null;
        Sensor sensor = new Sensor(this, id, Data.Source.GetBoneIndices(bones), offset, threshold, velocity);

        sensor.Mask = mask;
        ArrayExtensions.Append(ref Sensors, sensor);
        return(sensor);
    }
Example #3
0
 public StyleFunction AddStyle(string name)
 {
     if (HasStyle(name))
     {
         Debug.Log("Style with name " + name + " already exists.");
         return(GetStyle(name));
     }
     else
     {
         Identifiers = null;
         return(ArrayExtensions.Append(ref Functions, new StyleFunction(this, name)));
     }
 }
 public void Feed(float value, string name, float weight = 1f)
 {
     if (!Setup)
     {
         ArrayExtensions.Append(ref Values, value);
         ArrayExtensions.Append(ref Names, name);
         ArrayExtensions.Append(ref Weights, weight);
     }
     else
     {
         Dim            += 1;
         Values[Dim - 1] = value;
     }
 }
Example #5
0
 public void LoadAnimations()
 {
     Animations = new AnimationClip[0];
     Import     = new bool[0];
     foreach (string file in System.IO.Directory.GetFiles(Source))
     {
         AnimationClip clip = (AnimationClip)AssetDatabase.LoadAssetAtPath(file, typeof(AnimationClip));
         if (clip != null)
         {
             ArrayExtensions.Append(ref Animations, clip);
             ArrayExtensions.Append(ref Import, true);
         }
     }
 }
Example #6
0
    public Value AddValue(string name, Func <float> func)
    {
        Value value = System.Array.Find(Values, x => x.Name == name);

        if (value != null)
        {
            Debug.Log("Value with name " + name + " already contained.");
        }
        else
        {
            value = new Value(name, func);
            ArrayExtensions.Append(ref Values, value);
        }
        return(value);
    }
Example #7
0
    public Function AddFunction(string name, Func <float, float> func)
    {
        Function function = System.Array.Find(Functions, x => x.Name == name);

        if (function != null)
        {
            Debug.Log("Function with name " + name + " already contained.");
        }
        else
        {
            function = new Function(name, func);
            ArrayExtensions.Append(ref Functions, function);
        }
        return(function);
    }
Example #8
0
    private Module CreateModule(string id)
    {
        Module module = (Module)ScriptableObject.CreateInstance(id);

        if (module == null)
        {
            Debug.Log("Module of class type " + id + " could not be loaded in " + GetName() + ".");
        }
        else
        {
            ArrayExtensions.Append(ref Modules, module.Initialize(this));
            AssetDatabase.AddObjectToAsset(Modules.Last(), this);
        }
        return(module);
    }
Example #9
0
    public Logic AddLogic(string name, Func <bool> func)
    {
        Logic item = System.Array.Find(Logics, x => x.Name == name);

        if (item != null)
        {
            Debug.Log("Logic with name " + name + " already contained.");
        }
        else
        {
            item = new Logic(name, func);
            ArrayExtensions.Append(ref Logics, item);
        }
        return(item);
    }
Example #10
0
 public void Import(string fn, string id)
 {
     for (int i = 0; i < Buffers.Length; i++)
     {
         if (Buffers[i] != null)
         {
             if (Buffers[i].ID == id)
             {
                 Debug.Log("Buffer with ID " + id + " already contained.");
                 return;
             }
         }
     }
     ArrayExtensions.Append(ref Buffers, ReadBinary(fn, id));
 }
Example #11
0
        private void InspectSkeleton(Transform transform, int indent)
        {
            float indentSpace = 10f;
            Bone  bone        = Target.FindBone(transform.name);

            Utility.SetGUIColor(bone == null ? UltiDraw.LightGrey : UltiDraw.Mustard);
            using (new EditorGUILayout.HorizontalScope("Box")) {
                Utility.ResetGUIColor();
                EditorGUILayout.BeginHorizontal();
                for (int i = 0; i < indent; i++)
                {
                    EditorGUILayout.LabelField("|", GUILayout.Width(indentSpace));
                }
                EditorGUILayout.LabelField("-", GUILayout.Width(indentSpace));
                EditorGUILayout.LabelField(transform.name, GUILayout.Width(400f - indent * indentSpace));
                GUILayout.FlexibleSpace();
                if (bone != null)
                {
                    EditorGUILayout.LabelField("Index: " + bone.Index.ToString(), GUILayout.Width(60f));
                    EditorGUILayout.LabelField("Length: " + bone.GetLength().ToString("F3"), GUILayout.Width(90f));
                    bone.Color = EditorGUILayout.ColorField(bone.Color);
                }
                if (Utility.GUIButton("Bone", bone == null ? UltiDraw.White : UltiDraw.DarkGrey, bone == null ? UltiDraw.DarkGrey : UltiDraw.White))
                {
                    Transform[] bones = new Transform[Target.Bones.Length];
                    for (int i = 0; i < bones.Length; i++)
                    {
                        bones[i] = Target.Bones[i].Transform;
                    }
                    if (bone == null)
                    {
                        ArrayExtensions.Append(ref bones, transform);
                        Target.ExtractSkeleton(bones);
                    }
                    else
                    {
                        ArrayExtensions.Remove(ref bones, transform);
                        Target.ExtractSkeleton(bones);
                    }
                }
                EditorGUILayout.EndHorizontal();
            }
            for (int i = 0; i < transform.childCount; i++)
            {
                InspectSkeleton(transform.GetChild(i), indent + 1);
            }
        }
Example #12
0
        public ObjectData GetVersion(string key)
        {
            bool       isNNull = objData != null && objData.Length > 0; // && !objData.Any(x => x == null);
            ObjectData data    = isNNull ? objData.SingleOrDefault(x => x != null && x.Version == key) : null;

            if (isNNull && data != null)
            {
                return(data);
            }
            else if (data == null || !isNNull)
            {
                Console.WriteLine("Creating a new version: {0}...", key);
                ObjectData obj = new ObjectData()
                {
                    Version = key
                };
                ArrayExtensions.Append(ref objData, obj);
                return(objData[objData.Length - 1]);
            }
            Console.WriteLine("Something went wrong creating a new version for {0}...", key);
            return(null);
        }
Example #13
0
 public void AddBone(int index)
 {
     ArrayExtensions.Append(ref Bones, index);
 }
Example #14
0
 public void AddSequence(int start, int end)
 {
     ArrayExtensions.Append(ref Sequences, new Sequence(start, end));
 }
Example #15
0
    public static Model BuildModel(Model reference, Transform root, params Transform[] objectives)
    {
        if (reference == null)
        {
            reference = new Model();
        }
        if (reference.GetRoot() == root && reference.Objectives.Length == objectives.Length)
        {
            for (int i = 0; i < objectives.Length; i++)
            {
                if (reference.Bones[reference.Objectives[i].Bone].Transform != objectives[i])
                {
                    break;
                }
                if (i == objectives.Length - 1)
                {
                    return(reference);
                }
            }
        }
        objectives = Verify(root, objectives);
        Model model = new Model();

        for (int i = 0; i < objectives.Length; i++)
        {
            Transform[] chain     = GetChain(root, objectives[i]);
            Objective   objective = reference.FindObjective(objectives[i]);
            if (objective == null)
            {
                objective = new Objective();
            }
            for (int j = 0; j < chain.Length; j++)
            {
                Bone bone = model.FindBone(chain[j]);
                if (bone == null)
                {
                    bone = reference.FindBone(chain[j]);
                    if (bone != null)
                    {
                        bone.Childs     = new int[0];
                        bone.Objectives = new int[0];
                    }
                    if (bone == null)
                    {
                        bone              = new Bone();
                        bone.Transform    = chain[j];
                        bone.ZeroPosition = chain[j].localPosition;
                        bone.ZeroRotation = chain[j].localRotation;
                    }
                    Bone parent = model.FindBone(chain[j].parent);
                    if (parent != null)
                    {
                        ArrayExtensions.Append(ref parent.Childs, model.Bones.Length);
                    }
                    bone.Index = model.Bones.Length;
                    ArrayExtensions.Append(ref model.Bones, bone);
                }
                ArrayExtensions.Append(ref bone.Objectives, i);
            }
            objective.Bone           = model.FindBone(chain.Last()).Index;
            objective.TargetPosition = objectives[i].transform.position;
            objective.TargetRotation = objectives[i].transform.rotation;
            objective.Index          = model.Objectives.Length;
            ArrayExtensions.Append(ref model.Objectives, objective);
        }
        model.Iterations       = reference.Iterations;
        model.Threshold        = reference.Threshold;
        model.Activation       = reference.Activation;
        model.AvoidBoneLimits  = reference.AvoidBoneLimits;
        model.AllowRootUpdateX = reference.AllowRootUpdateX;
        model.AllowRootUpdateY = reference.AllowRootUpdateY;
        model.AllowRootUpdateZ = reference.AllowRootUpdateZ;
        model.SeedZeroPose     = reference.SeedZeroPose;
        return(model);
    }
Example #16
0
        public void Inspector()
        {
            Target.Refresh();

            //IMPORT SECTION
            Utility.SetGUIColor(UltiDraw.DarkGrey);
            using (new EditorGUILayout.VerticalScope("Box")) {
                Utility.ResetGUIColor();

                Utility.SetGUIColor(UltiDraw.Yellow);
                using (new EditorGUILayout.VerticalScope("Box")) {
                    Utility.ResetGUIColor();
                    EditorGUILayout.LabelField("Import Settings");
                }

                Utility.SetGUIColor(UltiDraw.LightGrey);
                using (new EditorGUILayout.VerticalScope("Box")) {
                    Utility.ResetGUIColor();

                    EditorGUILayout.BeginHorizontal();
                    GUILayout.FlexibleSpace();
                    if (Utility.GUIButton("Add Folder", UltiDraw.DarkGrey, UltiDraw.White, 100f, 18f))
                    {
                        ArrayExtensions.Append(ref Target.Folders, string.Empty);
                        ArrayExtensions.Append(ref Target.Imports, true);
                    }
                    if (Utility.GUIButton("Remove Folder", UltiDraw.DarkGrey, UltiDraw.White, 100f, 18f))
                    {
                        ArrayExtensions.Shrink(ref Target.Folders);
                        ArrayExtensions.Shrink(ref Target.Imports);
                    }
                    if (Utility.GUIButton(Target.GetLoadStrategy(), UltiDraw.LightGrey, UltiDraw.Black, 100f, 18f))
                    {
                        Target.ToggleLoadStrategy();
                    }
                    if (Utility.GUIButton(Target.LoadTagged ? "Tagged" : "Any", UltiDraw.LightGrey, UltiDraw.Black, 100f, 18f))
                    {
                        Target.LoadTagged = !Target.LoadTagged;
                    }
                    GUILayout.FlexibleSpace();
                    EditorGUILayout.EndHorizontal();

                    Utility.SetGUIColor(UltiDraw.DarkGrey);
                    using (new EditorGUILayout.VerticalScope("Box")) {
                        Utility.ResetGUIColor();
                        for (int i = 0; i < Target.Folders.Length; i++)
                        {
                            EditorGUILayout.BeginHorizontal();
                            Utility.SetGUIColor(Target.IsFolderValid(i) ? (Target.Imports[i] ? UltiDraw.DarkGreen : UltiDraw.Gold) : UltiDraw.DarkRed);
                            Target.Folders[i] = EditorGUILayout.TextField(Target.Folders[i]);
                            Target.Imports[i] = EditorGUILayout.Toggle(Target.Imports[i], GUILayout.Width(20f));
                            Utility.ResetGUIColor();
                            EditorGUILayout.EndHorizontal();
                        }
                    }

                    if (!Target.Importing)
                    {
                        if (Utility.GUIButton("Import", UltiDraw.DarkGrey, UltiDraw.White))
                        {
                            EditorCoroutines.StartCoroutine(Target.Import(() => ApplyFilter()), this);
                        }
                    }
                    else
                    {
                        EditorGUI.DrawRect(new Rect(EditorGUILayout.GetControlRect().x, EditorGUILayout.GetControlRect().y, Target.Progress * EditorGUILayout.GetControlRect().width, 25f), UltiDraw.Green.Opacity(0.75f));
                        EditorGUI.LabelField(new Rect(EditorGUILayout.GetControlRect()), Target.CurrentFile + " / " + Target.TotalFiles);
                        EditorGUI.BeginDisabledGroup(!Target.Importing);
                        if (Utility.GUIButton(!Target.Importing ? "Aborting" : "Stop", !Target.Importing ? UltiDraw.Gold : UltiDraw.DarkRed, UltiDraw.White))
                        {
                            Target.Importing = false;
                        }
                        EditorGUI.EndDisabledGroup();
                    }
                }
            }

            //DATA SECTION
            Utility.SetGUIColor(UltiDraw.DarkGrey);
            using (new EditorGUILayout.VerticalScope("Box")) {
                Utility.ResetGUIColor();

                Utility.SetGUIColor(UltiDraw.Yellow);
                using (new EditorGUILayout.VerticalScope("Box")) {
                    Utility.ResetGUIColor();
                    EditorGUILayout.LabelField("Data Inspector");
                }

                Utility.SetGUIColor(UltiDraw.LightGrey);
                using (new EditorGUILayout.VerticalScope("Box")) {
                    Utility.ResetGUIColor();

                    //Selection Browser
                    int pivot = MotionEditor.FindIndex(Assets, Utility.GetAssetGUID(Target.Data));
                    EditorGUILayout.BeginHorizontal();
                    EditorGUI.BeginChangeCheck();
                    int selectIndex = EditorGUILayout.Popup(pivot, Enums);
                    if (EditorGUI.EndChangeCheck())
                    {
                        if (selectIndex != -1)
                        {
                            Target.LoadData(Assets[selectIndex]);
                        }
                    }

                    EditorGUI.BeginChangeCheck();
                    Filter = EditorGUILayout.TextField(Filter, GUILayout.Width(200f));
                    if (EditorGUI.EndChangeCheck())
                    {
                        ApplyFilter();
                    }

                    if (Utility.GUIButton("<", UltiDraw.DarkGrey, UltiDraw.White, 55f))
                    {
                        LoadPreviousAsset();
                    }
                    if (Utility.GUIButton(">", UltiDraw.DarkGrey, UltiDraw.White, 55f))
                    {
                        LoadNextAsset();
                    }

                    EditorGUILayout.EndHorizontal();

                    //Slider Browser
                    EditorGUILayout.BeginHorizontal();
                    if (Assets.Length == 0)
                    {
                        EditorGUILayout.IntSlider(0, 0, 0);
                    }
                    else
                    {
                        EditorGUI.BeginChangeCheck();
                        int sliderIndex = EditorGUILayout.IntSlider(pivot + 1, 1, Assets.Length);
                        if (EditorGUI.EndChangeCheck())
                        {
                            Target.LoadData(Assets[sliderIndex - 1]);
                        }
                    }
                    EditorGUILayout.LabelField("/ " + Assets.Length, GUILayout.Width(60f));
                    EditorGUILayout.EndHorizontal();

                    if (Target.Data != null)
                    {
                        Frame frame = Target.GetCurrentFrame();

                        Utility.SetGUIColor(UltiDraw.Grey);
                        using (new EditorGUILayout.VerticalScope("Box")) {
                            Utility.ResetGUIColor();

                            Utility.SetGUIColor(UltiDraw.Mustard);
                            using (new EditorGUILayout.VerticalScope("Box")) {
                                Utility.ResetGUIColor();

                                Utility.SetGUIColor(UltiDraw.LightGrey);
                                EditorGUILayout.ObjectField(Target.Data, typeof(MotionData), true);
                                Utility.ResetGUIColor();
                                EditorGUILayout.HelpBox(Target.Data.GetParentDirectoryPath(), MessageType.None);
                            }

                            EditorGUILayout.BeginVertical(GUILayout.Height(25f));
                            Rect ctrl = EditorGUILayout.GetControlRect();
                            Rect rect = new Rect(ctrl.x, ctrl.y, ctrl.width, 25f);
                            EditorGUI.DrawRect(rect, UltiDraw.Black);

                            //Sequences
                            for (int i = 0; i < Target.Data.Sequences.Length; i++)
                            {
                                Target.DrawRect(Target.Data.GetFrame(Target.Data.Sequences[i].Start), Target.Data.GetFrame(Target.Data.Sequences[i].End), 1f, !Target.Data.Export ? UltiDraw.White.Opacity(.25f) : UltiDraw.Green.Opacity(0.25f), rect);
                            }

                            //Valid Window
                            Target.DrawRect(Target.Data.Frames.First(), Target.Data.GetFirstValidFrame(), 1f, UltiDraw.DarkRed.Opacity(0.5f), rect);
                            Target.DrawRect(Target.Data.GetLastValidFrame(), Target.Data.Frames.Last(), 1f, UltiDraw.DarkRed.Opacity(0.5f), rect);

                            //Current Pivot
                            Target.DrawPivot(rect);

                            EditorGUILayout.EndVertical();

                            Utility.SetGUIColor(UltiDraw.DarkGrey);
                            using (new EditorGUILayout.VerticalScope("Box")) {
                                Utility.ResetGUIColor();
                                EditorGUILayout.BeginHorizontal();
                                GUILayout.FlexibleSpace();
                                if (Target.Playing)
                                {
                                    if (Utility.GUIButton("||", Color.red, Color.black, 50f, 40f))
                                    {
                                        Target.StopAnimation();
                                    }
                                }
                                else
                                {
                                    if (Utility.GUIButton("|>", Color.green, Color.black, 50f, 40f))
                                    {
                                        Target.PlayAnimation();
                                    }
                                }
                                if (Utility.GUIButton("<", UltiDraw.Grey, UltiDraw.White, 20f, 40f))
                                {
                                    Target.LoadFrame(Mathf.Max(frame.Timestamp - Target.Data.GetDeltaTime(), 0f));
                                }
                                if (Utility.GUIButton(">", UltiDraw.Grey, UltiDraw.White, 20f, 40f))
                                {
                                    Target.LoadFrame(Mathf.Min(frame.Timestamp + Target.Data.GetDeltaTime(), Target.Data.GetTotalTime()));
                                }

                                int index = EditorGUILayout.IntSlider(frame.Index, 1, Target.Data.GetTotalFrames(), GUILayout.Height(40f));
                                if (index != frame.Index)
                                {
                                    Target.LoadFrame(index);
                                }
                                EditorGUILayout.BeginVertical();
                                EditorGUILayout.LabelField("/ " + Target.Data.GetTotalFrames() + " @ " + Mathf.RoundToInt(Target.Data.Framerate) + "Hz", Utility.GetFontColor(Color.white), GUILayout.Width(80f));
                                EditorGUILayout.LabelField("[" + frame.Timestamp.ToString("F2") + "s / " + Target.Data.GetTotalTime().ToString("F2") + "s]", Utility.GetFontColor(Color.white), GUILayout.Width(80f));
                                EditorGUILayout.EndVertical();
                                GUILayout.FlexibleSpace();
                                EditorGUILayout.EndHorizontal();
                            }
                        }

                        Target.Data.Inspector(Target);
                    }
                }
            }

            //EDITOR SECTION
            Utility.SetGUIColor(UltiDraw.DarkGrey);
            using (new EditorGUILayout.VerticalScope("Box")) {
                Utility.ResetGUIColor();

                Utility.SetGUIColor(UltiDraw.Yellow);
                using (new EditorGUILayout.VerticalScope("Box")) {
                    Utility.ResetGUIColor();
                    EditorGUILayout.LabelField("Editor Settings");
                }

                Utility.SetGUIColor(UltiDraw.LightGrey);
                using (new EditorGUILayout.VerticalScope("Box")) {
                    Utility.ResetGUIColor();

                    Target.SetModel((Actor)EditorGUILayout.ObjectField("Character", Target.Model, typeof(Actor), true));

                    Target.SetTargetFramerate(EditorGUILayout.FloatField("Target Framerate", Target.TargetFramerate));

                    Target.Timescale = EditorGUILayout.FloatField("Timescale", Target.Timescale);

                    Target.SetRandomSeed(EditorGUILayout.IntField("Random Seed", Target.RandomSeed));

                    Target.Zoom = EditorGUILayout.Slider("Zoom", Target.Zoom, 0f, 1f);

                    Utility.SetGUIColor(UltiDraw.DarkGrey);
                    using (new EditorGUILayout.VerticalScope("Box")) {
                        Utility.ResetGUIColor();
                        EditorGUILayout.BeginHorizontal();
                        GUILayout.FlexibleSpace();
                        EditorGUILayout.LabelField("Past Keys", Utility.GetFontColor(Color.white), GUILayout.Width(90f));
                        Target.SetPastKeys(EditorGUILayout.IntField(Target.PastKeys, GUILayout.Width(50f)));
                        EditorGUILayout.LabelField("Future Keys", Utility.GetFontColor(Color.white), GUILayout.Width(90f));
                        Target.SetFutureKeys(EditorGUILayout.IntField(Target.FutureKeys, GUILayout.Width(50f)));
                        EditorGUILayout.LabelField("Past Window", Utility.GetFontColor(Color.white), GUILayout.Width(90f));
                        Target.SetPastWindow(EditorGUILayout.FloatField(Target.PastWindow, GUILayout.Width(50f)));
                        EditorGUILayout.LabelField("Future Window", Utility.GetFontColor(Color.white), GUILayout.Width(90f));
                        Target.SetFutureWindow(EditorGUILayout.FloatField(Target.FutureWindow, GUILayout.Width(50f)));
                        GUILayout.FlexibleSpace();
                        EditorGUILayout.EndHorizontal();
                    }

                    EditorGUILayout.BeginHorizontal();
                    if (Utility.GUIButton("Mark As First Valid Frame", UltiDraw.DarkGrey, UltiDraw.White))
                    {
                        Target.Data.SetFirstValidFrame(Target.GetCurrentFrame());
                    }
                    if (Utility.GUIButton("Mark As Last Valid Frame", UltiDraw.DarkGrey, UltiDraw.White))
                    {
                        Target.Data.SetLastValidFrame(Target.GetCurrentFrame());
                    }
                    EditorGUILayout.EndHorizontal();

                    EditorGUILayout.BeginHorizontal();
                    if (Utility.GUIButton("Visualize First Frame", Target.VisualizeFirstFrame ? UltiDraw.Cyan : UltiDraw.LightGrey, UltiDraw.Black))
                    {
                        Target.VisualizeFirstFrame = !Target.VisualizeFirstFrame;
                    }
                    if (Utility.GUIButton("Visualize Last Frame", Target.VisualizeLastFrame ? UltiDraw.Cyan : UltiDraw.LightGrey, UltiDraw.Black))
                    {
                        Target.VisualizeLastFrame = !Target.VisualizeLastFrame;
                    }
                    EditorGUILayout.EndHorizontal();

                    EditorGUILayout.BeginHorizontal();
                    if (Utility.GUIButton("Visualize", Target.Visualize ? UltiDraw.Cyan : UltiDraw.LightGrey, UltiDraw.Black))
                    {
                        Target.SetVisualize(!Target.Visualize);
                    }
                    if (Utility.GUIButton("Mirror", Target.Mirror ? UltiDraw.Cyan : UltiDraw.LightGrey, UltiDraw.Black))
                    {
                        Target.SetMirror(!Target.Mirror);
                    }
                    if (Utility.GUIButton("Precomputable", Target.Precomputable ? UltiDraw.Cyan : UltiDraw.LightGrey, UltiDraw.Black))
                    {
                        Target.SetPrecomputable(!Target.Precomputable);
                    }
                    EditorGUILayout.EndHorizontal();

                    Utility.SetGUIColor(UltiDraw.DarkGrey);
                    using (new EditorGUILayout.VerticalScope("Box")) {
                        Utility.ResetGUIColor();
                        if (Utility.GUIButton("Camera Focus", Target.CameraFocus ? UltiDraw.Cyan : UltiDraw.DarkGrey, Target.CameraFocus ? UltiDraw.Black : UltiDraw.White))
                        {
                            Target.SetCameraFocus(!Target.CameraFocus);
                        }
                        if (Target.CameraFocus)
                        {
                            Utility.SetGUIColor(UltiDraw.LightGrey);
                            using (new EditorGUILayout.VerticalScope("Box")) {
                                Utility.ResetGUIColor();
                                Target.FocusHeight    = EditorGUILayout.FloatField("Focus Height", Target.FocusHeight);
                                Target.FocusDistance  = EditorGUILayout.FloatField("Focus Distance", Target.FocusDistance);
                                Target.FocusAngle.y   = EditorGUILayout.Slider("Focus Angle Horizontal", Target.FocusAngle.y, -180f, 180f);
                                Target.FocusAngle.x   = EditorGUILayout.Slider("Focus Angle Vertical", Target.FocusAngle.x, -180f, 180f);
                                Target.FocusSmoothing = EditorGUILayout.Slider("Focus Smoothing", Target.FocusSmoothing, 0f, 1f);
                            }
                        }
                    }

                    Utility.SetGUIColor(UltiDraw.DarkGrey);
                    using (new EditorGUILayout.VerticalScope("Box")) {
                        Utility.ResetGUIColor();
                        if (Utility.GUIButton("Motion Trail", Target.MotionTrail ? UltiDraw.Cyan : UltiDraw.DarkGrey, Target.MotionTrail ? UltiDraw.Black : UltiDraw.White))
                        {
                            Target.SetMotionTrail(!Target.MotionTrail);
                        }
                        if (Target.MotionTrail)
                        {
                            Utility.SetGUIColor(UltiDraw.LightGrey);
                            using (new EditorGUILayout.VerticalScope("Box")) {
                                Utility.ResetGUIColor();
                                Target.CharacterMeshTrail  = EditorGUILayout.Toggle("Character Mesh", Target.CharacterMeshTrail);
                                Target.SkeletonSketchTrail = EditorGUILayout.Toggle("Skeleton Sketch", Target.SkeletonSketchTrail);
                                Target.ApplyMotionTrail();
                            }
                        }
                    }
                }
            }
            //END
        }
Example #17
0
 public void AddBone(string name, string parent)
 {
     ArrayExtensions.Append(ref Bones, new Bone(Bones.Length, name, parent));
 }
Example #18
0
 public void AddVersion(ModpackData data)
 {
     ArrayExtensions.Append(ref Versions, data);
 }
Example #19
0
 public void AddSequence()
 {
     ArrayExtensions.Append(ref Sequences, new Sequence(1, GetTotalFrames()));
 }