Esempio n. 1
0
 public override void Edit()
 {
     dlgEdit.Value = new NodeData()
     {
         NodeName = Name,
         VarName  = VarName
     };
     if (dlgEdit.ShowDialog() == DialogResult.OK)
     {
         Name    = ((NodeData)(dlgEdit.Value)).NodeName;
         VarName = ((NodeData)(dlgEdit.Value)).VarName;
     }
     OnPropertyChanged("Note");
 }
Esempio n. 2
0
        public override void Edit()
        {
            dlgEdit.Value = new NodeData()
            {
                NodeName = Name,
                Period   = period
            };
            if (dlgEdit.ShowDialog() == DialogResult.OK)
            {
                Name   = ((NodeData)(dlgEdit.Value)).NodeName;
                period = ((NodeData)(dlgEdit.Value)).Period;

                OnPropertyChanged("Note");
            }
        }
Esempio n. 3
0
 /// <summary>
 ///     Handles the ui settings clicked event.
 /// </summary>
 private void HandleUiSettingsClickedEvent()
 {
     Settings.Default.Save(); //save any previous changes, to be sure the most current settings are persisted.
     using (PropertyDialog dlg = new PropertyDialog(new DisplayableUiSettings(Settings.Default), "UI Settings")) {
         DialogResult result = dlg.ShowDialog();
         if (result.Equals(DialogResult.OK)) //confirmed?
         {
             Settings.Default.Save();        //save what was changed
         }
         else //not confirmed
         {
             Settings.Default.Reload(); //restore back
         }
     }
 }
Esempio n. 4
0
 /// <summary>
 ///     Handles the edit compilation clicked event.
 /// </summary>
 private void HandleEditCompilationClickedEvent()
 {
     if (Core.Model.Instance.Compilation != null) //there is any?
     {
         //create visual copy
         DisplayCompilation displayCompilation = new DisplayCompilation(Core.Model.Instance.Compilation);
         using (PropertyDialog propertyDialog = new PropertyDialog(displayCompilation, "Edit compilation")) {
             if (propertyDialog.ShowDialog() == DialogResult.OK)
             {
                 Core.Model.Instance.Compilation.Title   = displayCompilation.Title; //use the changed data
                 Core.Model.Instance.Compilation.IsDirty = true;
             }
         }
     }
 }
 public override void Edit()
 {
     dlgEdit.Value = new NodeData()
     {
         NodeName = Name,
         User     = currentUser
     };
     if (dlgEdit.ShowDialog() == DialogResult.OK)
     {
         Name        = ((NodeData)(dlgEdit.Value)).NodeName;
         currentUser = ((NodeData)(dlgEdit.Value)).User;
         controller  = new Controller(currentUser);
     }
     OnPropertyChanged("Note");
 }
Esempio n. 6
0
        private void Options_Click(object sender, RoutedEventArgs e)
        {
            var dlg = new PropertyDialog()
            {
                Owner = this
            };
            var options = new OptionsViewModel();

            dlg.DataContext = options;
            dlg.Title       = "Options";
            if (dlg.ShowDialog().Value)
            {
                options.Save();
            }
        }
Esempio n. 7
0
 public override void Edit()
 {
     dlgEdit.Value = new NodeData()
     {
         NodeName = Name,
         Min      = Min,
         Max      = Max,
     };
     if (dlgEdit.ShowDialog() == DialogResult.OK)
     {
         Name = ((NodeData)(dlgEdit.Value)).NodeName;
         Min  = ((NodeData)(dlgEdit.Value)).Min;
         Max  = ((NodeData)(dlgEdit.Value)).Max;
     }
     OnPropertyChanged("Note");
 }
        /// <summary>
        ///
        /// </summary>
        public static void SelectAudioPlaybackDevice()
        {
            // TODO: save selected device
            var c = new DefaultDeviceSelecter()
            {
                Device = DefaultDevice
            };

            using (PropertyDialog d = new PropertyDialog("Select Audio Device", c))
            {
                if (d.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                {
                    DefaultDevice = c.Device;
                }
            }
        }
Esempio n. 9
0
 /// <summary>
 ///     Handles the settings clicked event.
 /// </summary>
 private void HandleSettingsClickedEvent()
 {
     Core.Model.Instance.Settings.Save(); //be sure to let everything persist before any possible change
     using (
         PropertyDialog dlg = new PropertyDialog(new DisplayableCoreSettings(Core.Model.Instance.Settings), "Behavioral Settings")
         ) {
         DialogResult result = dlg.ShowDialog();
         if (result.Equals(DialogResult.OK))      //confirmed?
         {
             Core.Model.Instance.Settings.Save(); //save what was changed
         }
         else //not confirmed
         {
             Core.Model.Instance.Settings.Reload(); //revert to saved
         }
     }
 }
        private void ExecuteEditSettings()
        {
            if (_configurationReaderWriter != null)
            {
                PropertyDialog propertyDialog = new PropertyDialog();

                SpecIfPluginConfiguration configuration = _configurationReaderWriter.GetConfiguration();

                propertyDialog.SetPropertyData(configuration);

                propertyDialog.ShowDialog();

                _configurationReaderWriter.StoreConfiguration(configuration);

                InitializeDataProviders();
            }
        }
Esempio n. 11
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void renameButton_Click(object sender, EventArgs e)
        {
            if (entryList.SelectedObject is SEMEntry entry)
            {
                var renameBox = new RenameBox();

                renameBox.NewName = entry.Name;

                using (PropertyDialog d = new PropertyDialog("Rename", renameBox))
                {
                    if (d.ShowDialog() == DialogResult.OK)
                    {
                        entry.Name = renameBox.NewName;
                    }
                }
            }
        }
Esempio n. 12
0
 void AddWidget(string typeID, Widget template, bool showDialog)
 {
     if (showDialog)
     {
         var dialog = new PropertyDialog();
         dialog.SelectedObject = template;
         if (dialog.ShowDialog(this) == System.Windows.Forms.DialogResult.OK)
         {
             AddWidgetCommand command = new AddWidgetCommand(SelectedTopics, typeID, template);
             ExecuteCommand(command);
         }
     }
     else
     {
         AddWidgetCommand command = new AddWidgetCommand(SelectedTopics, typeID, template);
         ExecuteCommand(command);
     }
 }
Esempio n. 13
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="toReplace"></param>
        public static void ReplaceModelFromFile(HSD_JOBJ toReplace)
        {
            var f = Tools.FileIO.OpenFile("Supported Formats (*.dae, *.obj)|*.dae;*.obj;*.fbx;*.smd");

            if (f != null)
            {
                var settings = new ModelImportSettings();
                using (PropertyDialog d = new PropertyDialog("Model Import Options", settings))
                {
                    if (d.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                    {
                        var newroot = ImportModel(f, settings);

                        toReplace._s.SetFromStruct(newroot._s);
                    }
                }
            }
        }
Esempio n. 14
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void buttonAddEntry_Click(object sender, EventArgs e)
        {
            var name = new SEMName();

            using (PropertyDialog d = new PropertyDialog("SSM Name", name))
            {
                if (d.ShowDialog() == DialogResult.OK)
                {
                    entryList.AddItem(new SEMEntry()
                    {
                        SoundBank = new SSM()
                        {
                            Name = name.Name.ToLower().EndsWith(".ssm") ? name.Name : name.Name + ".ssm"
                        },
                        Scripts = new SEMScript[0]
                    });
                }
            }
        }
Esempio n. 15
0
 // Edit dialog
 public override void Edit()
 {
     dlgEdit.Value = new NodeData()
     {
         NodeName   = Name,
         VarName    = varName,
         Value      = value,
         FrameCount = frameCount,
         Easing     = easing,
     };
     if (dlgEdit.ShowDialog() == DialogResult.OK)
     {
         Name       = ((NodeData)(dlgEdit.Value)).NodeName;
         varName    = ((NodeData)(dlgEdit.Value)).VarName;
         value      = ((NodeData)(dlgEdit.Value)).Value;
         frameCount = ((NodeData)(dlgEdit.Value)).FrameCount;
         easing     = ((NodeData)(dlgEdit.Value)).Easing;
     }
     OnPropertyChanged("Note");
 }
Esempio n. 16
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void regenerateAnimationToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (sssEditor.SelectedObjects.Length > 0)
            {
                using (PropertyDialog d = new PropertyDialog("Menu Animation Generator", sssEditor.SelectedObjects.Select(a => ((MEXStageIconEntry)a).Animation).ToArray()))
                {
                    d.ShowDialog();
                }

                /*using (PopoutJointAnimationEditor popout = new PopoutJointAnimationEditor())
                 * {
                 *  // create a proxy structure/animation?
                 *  HSD_JOBJ root = null;
                 *  JointAnimManager manager = new JointAnimManager();
                 *
                 *  foreach(MEXStageIconEntry sel in sssEditor.SelectedObjects)
                 *  {
                 *      if(sel.Joint != null && sel.AnimJoint != null)
                 *      {
                 *          if (root == null)
                 *              root = sel.Joint;
                 *          else
                 *              root.Add(sel.Joint);
                 *          var man = new JointAnimManager();
                 *          man.FromAnimJoint(sel.AnimJoint);
                 *          manager.Nodes.AddRange(man.Nodes);
                 *      }
                 *  }
                 *
                 *  // use
                 *  popout.SetJoint(root, manager);
                 *  popout.ShowDialog();
                 *
                 *  var list = root.BreathFirstList;
                 *  foreach (var j in list)
                 *      j.Next = null;
                 *
                 *  // TODO: save anim changes
                 * }*/
            }
        }
Esempio n. 17
0
        protected override bool GetOptions()
        {
            ExportOptions.Orientation    = Options.Current.GetValue("Export.PDF.PageOrientation", Model.PageOrientation.Landscape);
            ExportOptions.WithBackground = Options.Current.GetValue("Export.PDF.WithBackground", true);

            var dialog = new PropertyDialog(ExportOptions);

            dialog.Text         = Lang._("Options");
            dialog.PropertySort = System.Windows.Forms.PropertySort.Alphabetical;
            if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                Options.Current.SetValue("Export.PDF.PageOrientation", ExportOptions.Orientation);
                Options.Current.SetValue("Export.PDF.WithBackground", ExportOptions.WithBackground);

                return(base.GetOptions());
            }
            else
            {
                return(false);
            }
        }
        /// <summary>
        /// Display property grid dialog. Changes to properties are reflected immediately.
        /// </summary>
        public static void ShowProperties(Action refreshDelegate)
        {
            try
            {
                //PropertiesViewer pv = new PropertiesViewer(SettingsBase.AsStatic, Refresh);
                PropertyDialog pv = new PropertyDialog(Settings, refreshDelegate);
#if debug
                //pv.Show();//dialog properties grid validation does refresh
#else
                pv.ShowDialog();//dialog properties grid validation does refresh
                pv.Dispose();
#endif
            }
            catch (Exception ex)
            {
                Log.Write(ex, MethodBase.GetCurrentMethod(), EventLogEntryType.Error);


                throw;
            }
        }
Esempio n. 19
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void generateNameTagToolStripMenuItem_Click(object sender, EventArgs e)
 {
     if (sssEditor.SelectedObject is MEXStageIconEntry entry)
     {
         var settings = new NameTagSettings();
         using (PropertyDialog d = new PropertyDialog("Name Tag Settings", settings))
         {
             if (d.ShowDialog() == DialogResult.OK)
             {
                 using (Bitmap bmp = MexMapGenerator.GenerateStageName(settings.StageName, settings.Location))
                 {
                     if (bmp == null)
                     {
                         MessageBox.Show("Could not find fonts \"Palatino Linotype\" and/or \"A-OTF Folk Pro H\"", "Font not Found", MessageBoxButtons.OK, MessageBoxIcon.Error);
                         return;
                     }
                     entry.NameTOBJ = TOBJConverter.BitmapToTOBJ(bmp, HSDRaw.GX.GXTexFmt.I4, HSDRaw.GX.GXTlutFmt.IA8);
                 }
             }
         }
     }
 }
Esempio n. 20
0
        public void MouseDown(CommandProperty cp)
        {
            if (null != cp.Invoke)
            {
                cp.Invoke();
            }

            var dlg = new PropertyDialog
            {
                DataContext = cp.Data,
                Title       = cp.LinkText,
                MinHeight   = 500
            };

            if (dlg.ShowDialog().Value)
            {
                if (null != cp.InvokeData)
                {
                    cp.InvokeData(cp.Data);
                }
            }
        }
Esempio n. 21
0
        public void MouseDown(CommandProperty cp)
        {
            if (null != cp.Invoke)
            {
                cp.Invoke();
            }

            var list = cp.Data as IList;

            if (null == list)
            {
                return;
            }

            var form = Activator.CreateInstance(FormType);


            var dlg = new PropertyDialog
            {
                DataContext = form,
                Title       = cp.LinkText,
                MinHeight   = 500
            };

            if (dlg.ShowDialog().Value)
            {
                if (null != cp.InvokeData)
                {
                    cp.InvokeData(form);
                }

                var newItem = FormType.GetProperty(DataProperty).GetValue(form, null);

                list.Add(newItem);
            }
        }
Esempio n. 22
0
        public SubactionTableContextMenu() : base()
        {
            MenuItem Export = new MenuItem("Import Subaction Data From File");

            Export.Click += (sender, args) =>
            {
                var f = Tools.FileIO.OpenFile(ApplicationSettings.HSDFileFilter);

                if (f != null && MainForm.SelectedDataNode.Accessor is SBM_FighterActionTable table)
                {
                    var dataToImport = new SBM_FighterActionTable();

                    dataToImport._s = new HSDRawFile(f).Roots[0].Data._s;

                    if (dataToImport.Count == table.Count)
                    {
                        var importTable = dataToImport.Commands;
                        var newTable    = table.Commands;
                        for (int i = 0; i < table.Count; i++)
                        {
                            newTable[i].SubAction = importTable[i].SubAction;
                        }
                        table.Commands = newTable;
                    }
                }
            };
            MenuItems.Add(Export);

#if DEBUG
            MenuItem rename = new MenuItem("Rename Symbols");
            rename.Click += (sender, args) =>
            {
                if (MainForm.SelectedDataNode.Accessor is SBM_FighterActionTable table)
                {
                    var prop = new SubactionTableRename();
                    using (PropertyDialog d = new PropertyDialog("Fighter Symbol Rename", prop))
                    {
                        if (d.ShowDialog() == DialogResult.OK)
                        {
                            var tables = table.Commands;

                            foreach (var c in tables)
                            {
                                if (c.SymbolName != null && !string.IsNullOrEmpty(c.SymbolName.Value))
                                {
                                    var sym = c.SymbolName.Value;

                                    var newsym = System.Text.RegularExpressions.Regex.Replace(sym, @"(?=Ply)(.)*(?=5K)", prop.Name);;

                                    c.SymbolName.Value = newsym;
                                }
                            }

                            table.Commands = tables;
                        }
                    }
                }
            };
            MenuItems.Add(rename);
#endif
        }
Esempio n. 23
0
		private void bGroups_Click(object sender, System.EventArgs e)
		{
			PropertyDialog pd = new PropertyDialog(_Draw, _ReportItems, PropertyTypeEnum.Grouping);
            try
            {
                DialogResult dr = pd.ShowDialog();
                if (pd.Changed || dr == DialogResult.OK)
                {
                    //_DrawPanel.Invalidate();   TODO need to force change somehow?????
                }
            }
            finally
            {
                pd.Dispose();
            }
		}
Esempio n. 24
0
        public void MouseDown(CommandProperty cp)
        {
            if (null != cp.Invoke)
            {
                cp.Invoke();
            }

            var list = cp.Data as IEnumerable;

            if (null == list)
            {
                return;
            }

            var converter = Activator.CreateInstance(DataConverter) as IValueConverter;

            if (null == converter)
            {
                return;
            }

            var  converted  = new List <string>();
            Type sourceType = null;

            foreach (var it in list)
            {
                var convertedItem = converter.Convert(it, typeof(string), cp, CultureInfo.CurrentCulture) as string;
                if (null != convertedItem)
                {
                    converted.Add(convertedItem);
                }
                if (null == sourceType)
                {
                    sourceType = it.GetType();
                }
            }



            var form = new PickListForm
            {
                PickList = converted
            };

            var dlg = new PropertyDialog
            {
                DataContext = form,
                Title       = cp.LinkText,
                MinHeight   = 500
            };

            if (dlg.ShowDialog().Value)
            {
                if (null != cp.InvokeData)
                {
                    var convertedBack = converter.ConvertBack(form.SelectItem, sourceType ?? typeof(string), cp,
                                                              CultureInfo.CurrentCulture);
                    if (null != cp.InvokeData)
                    {
                        cp.InvokeData(convertedBack);
                    }
                }
            }
        }
Esempio n. 25
0
        /// <summary>
        ///     Handles an event from the event broker
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void EventBroker_EventOccured(object sender, EventArgs <string> e)
        {
            switch (e.Data)
            {
            case "Menu:OpenCompilationClicked": {
                HandleOpenCompilationClickedEvent();
                break;
            }

            case "Menu:EditCompilationClicked": {
                HandleEditCompilationClickedEvent();
                break;
            }

            case "Menu:AboutClicked": {
                HandleAboutClickedEvent();
                break;
            }

            case "Menu:OnlineHelpClicked": {
                HandleOnlineHelpClickedEvent();
                break;
            }

            case "Menu:ExitClicked": {
                HandleExitClickedEvent();
                break;
            }

            case "Menu:SettingsClicked": {
                HandleSettingsClickedEvent();
                break;
            }

            case "Menu:UiSettingsClicked": {
                HandleUiSettingsClickedEvent();
                break;
            }

            case "Menu:CreateNewCompilationClicked": {
                HandleCreateNewCompilationClickedEvent();
                break;
            }

            case "Menu:AddCueClicked": {
                HandleAddCueClickedEvent();
                break;
            }

            case "Menu:CreateCueHereClicked": {
                Core.Model.Instance.CreateCueHere();
                Core.Model.Instance.Compilation.IsDirty = true;
                break;
            }

            case "Menu:DeleteSelectedCue": {
                Core.Model.Instance.RemoveSelectedCue();
                Core.Model.Instance.Compilation.IsDirty = true;
                break;
            }

            case "Menu:MoveUpSelectedCue": {
                Core.Model.Instance.MoveSelectedCue(-1);
                Core.Model.Instance.Compilation.IsDirty = true;
                break;
            }

            case "Menu:MoveDownSelectedCue": {
                Core.Model.Instance.MoveSelectedCue(+1);
                Core.Model.Instance.Compilation.IsDirty = true;
                break;
            }

            case "Menu:MoveUpSelectedTrack": {
                Core.Model.Instance.MoveSelectedTrack(-1);
                Core.Model.Instance.Compilation.IsDirty = true;
                break;
            }

            case "Menu:MoveDownSelectedTrack": {
                Core.Model.Instance.MoveSelectedTrack(+1);
                Core.Model.Instance.Compilation.IsDirty = true;
                break;
            }

            case "Menu:DeleteSelectedTrack": {
                Core.Model.Instance.RemoveSelectedTrack();
                Core.Model.Instance.Compilation.IsDirty = true;
                break;
            }

            case "Menu:CloneSelectedTrack": {
                Core.Model.Instance.CloneSelectedTrack();
                Core.Model.Instance.Compilation.IsDirty = true;
                break;
            }

            case "Menu:EditSelectedCue": {
                if (Core.Model.Instance.SelectedCue != null)                //there is any selected?
                {
                    Cue cloneCue = Core.Model.Instance.SelectedCue.Clone(); //clone for private manipulation
                    using (PropertyDialog propertyDialog = new PropertyDialog(cloneCue, "Edit cue")) {
                        propertyDialog.Height = 353;
                        if (propertyDialog.ShowDialog() == DialogResult.OK)
                        {
                            Core.Model.Instance.SelectedTrack.Cues.Replace(Core.Model.Instance.SelectedCue, cloneCue);
                            //assign back, causing an update of the model
                            Core.Model.Instance.SelectedCue         = cloneCue; //use the new as selected
                            Core.Model.Instance.Compilation.IsDirty = true;
                        }
                    }
                }
                break;
            }

            case "Menu:AddTrackClicked": {
                HandleAddTrackClickedEvent();
                break;
            }

            case "Menu:EditSelectedTrack": {
                if (Core.Model.Instance.SelectedTrack != null)         //there is any selected?
                {
                    DisplayTrack displayTrack = new DisplayTrack(Core.Model.Instance.SelectedTrack.Clone());
                    //clone for private manipulation
                    using (PropertyDialog propertyDialog = new PropertyDialog(displayTrack, "Edit track")) {
                        propertyDialog.Height = 393;
                        propertyDialog.Width  = 800;        //to have more room for the file name.
                        if (propertyDialog.ShowDialog() == DialogResult.OK)
                        {
                            Core.Model.Instance.Compilation.Tracks.Replace(Core.Model.Instance.SelectedTrack,
                                                                           displayTrack.Model);
                            //assign back, causing an update of the model
                            Core.Model.Instance.SelectedTrack       = displayTrack.Model;   //use the new as selected
                            Core.Model.Instance.Compilation.IsDirty = true;
                        }
                    }
                }
                break;
            }

            case "Menu:SaveFile": {
                HandleSaveFileEvent();
                break;
            }

            case "Menu:SaveFileAs": {
                HandleSaveFileAsEvent();
                break;
            }

            case "Menu:ExportFile": {
                HandleExportFileEvent();
                break;
            }

            default:
                break;
            }
        }
        public static HSD_DOBJ GenerateOutlineMesh(HSD_DOBJ DOBJ)
        {
            var settings = new OutlineSettings();

            using (PropertyDialog d = new PropertyDialog("Outline Settings", settings))
            {
                if (d.ShowDialog() != DialogResult.OK)
                {
                    return(null);
                }
            }

            var pobjGen = new POBJ_Generator();

            pobjGen.UseTriangleStrips = settings.UseStrips;

            var newDOBJ = new HSD_DOBJ();

            newDOBJ.Mobj = new HSD_MOBJ()
            {
                Material = new HSD_Material()
                {
                    AmbientColor  = Color.White,
                    SpecularColor = Color.Black,
                    DiffuseColor  = settings.Color,
                    DIF_A         = 255,
                    SPC_A         = 255,
                    AMB_A         = 255,
                    Shininess     = 50,
                    Alpha         = 1
                },
                RenderFlags = RENDER_MODE.CONSTANT
            };

            foreach (var pobj in DOBJ.Pobj.List)
            {
                var dl = pobj.ToDisplayList();

                var vertices = dl.Vertices;

                GXAttribName[] attrs = new GXAttribName[]
                {
                    GXAttribName.GX_VA_POS,
                    GXAttribName.GX_VA_NULL
                };

                if (pobj.HasAttribute(GXAttribName.GX_VA_PNMTXIDX))
                {
                    attrs = new GXAttribName[]
                    {
                        GXAttribName.GX_VA_PNMTXIDX,
                        GXAttribName.GX_VA_POS,
                        GXAttribName.GX_VA_NULL
                    };
                }

                List <GX_Vertex> newVerties = new List <GX_Vertex>();

                var offset = 0;
                foreach (var prim in dl.Primitives)
                {
                    var verts = vertices.GetRange(offset, prim.Count);
                    offset += prim.Count;

                    switch (prim.PrimitiveType)
                    {
                    case GXPrimitiveType.Quads:
                        verts = TriangleConverter.QuadToList(verts);
                        break;

                    case GXPrimitiveType.TriangleStrip:
                        verts = TriangleConverter.StripToList(verts);
                        break;

                    case GXPrimitiveType.Triangles:
                        break;

                    default:
                        Console.WriteLine(prim.PrimitiveType);
                        break;
                    }

                    newVerties.AddRange(verts);
                }

                // extrude
                for (int i = 0; i < newVerties.Count; i++)
                {
                    var v = newVerties[i];
                    v.POS.X += v.NRM.X * settings.Size;
                    v.POS.Y += v.NRM.Y * settings.Size;
                    v.POS.Z += v.NRM.Z * settings.Size;
                    //v.CLR0.R = settings.Color.R / 255f;
                    //v.CLR0.G = settings.Color.G / 255f;
                    //v.CLR0.B = settings.Color.B / 255f;
                    //v.CLR0.A = settings.Color.A / 255f;
                    newVerties[i] = v;
                }

                // invert faces
                for (int i = 0; i < newVerties.Count; i += 3)
                {
                    var temp = newVerties[i];
                    newVerties[i]     = newVerties[i + 2];
                    newVerties[i + 2] = temp;
                }

                var newpobj = pobjGen.CreatePOBJsFromTriangleList(newVerties, attrs, dl.Envelopes);
                foreach (var p in newpobj.List)
                {
                    p.Flags |= POBJ_FLAG.CULLBACK | POBJ_FLAG.UNKNOWN1;
                }
                if (newDOBJ.Pobj == null)
                {
                    newDOBJ.Pobj = newpobj;
                }
                else
                {
                    newDOBJ.Pobj.Add(newpobj);
                }
            }

            pobjGen.SaveChanges();

            return(newDOBJ);
        }
Esempio n. 27
0
		private void menuTableProperties_Click(object sender, EventArgs e)
		{
			if (_DrawPanel.SelectedCount != 1)
				return;
			XmlNode riNode = _DrawPanel.SelectedList[0];
			XmlNode table = _DrawPanel.GetTableFromReportItem(riNode);
			if (table == null)
				return;
			XmlNode tc = _DrawPanel.GetTableColumn(riNode);
			XmlNode tr = _DrawPanel.GetTableRow(riNode);

			List<XmlNode> ar = new List<XmlNode>();		// need to put this is a list for dialog to handle
			ar.Add(table);
			_Undo.StartUndoGroup("Table Dialog");
			PropertyDialog pd = new PropertyDialog(_DrawPanel, ar, PropertyTypeEnum.ReportItems, tc, tr);
            try
            {
                DialogResult dr = pd.ShowDialog(this);
                _Undo.EndUndoGroup(pd.Changed || dr == DialogResult.OK);
                if (pd.Changed || dr == DialogResult.OK)
                {
                    ReportChanged(this, new EventArgs());
                    _DrawPanel.Invalidate();
                }
            }
            finally
            {
                pd.Dispose();
            }
		}
Esempio n. 28
0
		private void DoPropertyDialog(PropertyTypeEnum type)
		{
			this.StartUndoGroup("Dialog");
			PropertyDialog pd = new PropertyDialog(_DrawPanel, _DrawPanel.SelectedList, type);
            try
            {
                DialogResult dr = pd.ShowDialog(this);
                this.EndUndoGroup(pd.Changed || dr == DialogResult.OK);
                if (pd.Changed || dr == DialogResult.OK)
                {
                    ReportChanged(this, new EventArgs());
                    _DrawPanel.Invalidate();
                }
            }
            finally
            {
                pd.Dispose();
            }
			SetFocus();
		}
Esempio n. 29
0
		private void menuTableEditGroup_Click(object sender, EventArgs e)
		{
			if (_DrawPanel.SelectedCount != 1)
				return;
			MenuItem menu = sender as MenuItem;
			if (menu == null)
				return;
			string gname = menu.Text;
			XmlNode cNode = _DrawPanel.SelectedList[0];

			_Undo.StartUndoGroup("Dialog Table Group Edit");
			XmlNode tblGroup = _DrawPanel.GetTableGroup(cNode, gname);

			List<XmlNode> ar = new List<XmlNode>();		// need to put this is a list for dialog to handle
			ar.Add(tblGroup);
			PropertyDialog pd = new PropertyDialog(_DrawPanel, ar, PropertyTypeEnum.Grouping);
            try
            {
                DialogResult dr = pd.ShowDialog(this);
                _Undo.EndUndoGroup(pd.Changed || dr == DialogResult.OK);
                if (pd.Changed || dr == DialogResult.OK)
                {
                    ReportChanged(this, new EventArgs());
                    _DrawPanel.Invalidate();
                }
            }
            finally
            {
                pd.Dispose();
            }
		}
Esempio n. 30
0
		private void menuTableInsertGroup_Click(object sender, EventArgs e)
		{
			if (_DrawPanel.SelectedCount != 1)
				return;
			XmlNode cNode = _DrawPanel.SelectedList[0];
			_Undo.StartUndoGroup("Insert Table Group");
			XmlNode tblGroup = _DrawPanel.InsertTableGroup(cNode);
			if (tblGroup == null)
			{
				_Undo.EndUndoGroup(false);
				return;
			}

			List<XmlNode> ar = new List<XmlNode>();		// need to put this is a list for dialog to handle
			ar.Add(tblGroup);
			PropertyDialog pd = new PropertyDialog(_DrawPanel, ar, PropertyTypeEnum.Grouping);
            try
            {
                DialogResult dr = pd.ShowDialog(this);
                if (pd.Changed || dr == DialogResult.OK)
                {
                    _Undo.EndUndoGroup(true);
                    ReportChanged(this, new EventArgs());
                    _DrawPanel.Invalidate();
                }
                else
                {
                    _DrawPanel.DeleteTableGroup(tblGroup);
                    _Undo.EndUndoGroup(false);
                }
            }
            finally
            {
                pd.Dispose();
            }
		}
Esempio n. 31
0
        public SubactionTableContextMenu() : base()
        {
            MenuItem Export = new MenuItem("Import Subaction Data From File");

            Export.Click += (sender, args) =>
            {
                var f = Tools.FileIO.OpenFile(ApplicationSettings.HSDFileFilter);

                if (f != null && MainForm.SelectedDataNode.Accessor is SBM_FighterActionTable table)
                {
                    var dataToImport = new SBM_FighterActionTable();

                    dataToImport._s = new HSDRawFile(f).Roots[0].Data._s;

                    if (dataToImport.Count == table.Count)
                    {
                        var importTable = dataToImport.Commands;
                        var newTable    = table.Commands;
                        for (int i = 0; i < table.Count; i++)
                        {
                            newTable[i].SubAction = importTable[i].SubAction;
                        }
                        table.Commands = newTable;
                    }
                }
            };
            MenuItems.Add(Export);

#if DEBUG
            MenuItem rename = new MenuItem("Rename Symbols");
            rename.Click += (sender, args) =>
            {
                if (MainForm.SelectedDataNode.Accessor is SBM_FighterActionTable table)
                {
                    var prop = new SubactionTableRename();
                    using (PropertyDialog d = new PropertyDialog("Fighter Symbol Rename", prop))
                    {
                        if (d.ShowDialog() == DialogResult.OK)
                        {
                            var tables = table.Commands;

                            foreach (var c in tables)
                            {
                                if (c.SymbolName != null && !string.IsNullOrEmpty(c.SymbolName.Value))
                                {
                                    var sym = c.SymbolName.Value;

                                    var newsym = System.Text.RegularExpressions.Regex.Replace(sym, @"(?=Ply)(.)*(?=5K)", prop.Name);;

                                    c.SymbolName.Value = newsym;
                                }
                            }

                            table.Commands = tables;
                        }
                    }
                }
            };
            MenuItems.Add(rename);


            MenuItem bonemap = new MenuItem("Remap Bone IDs");
            bonemap.Click += (sender, args) =>
            {
                if (MainForm.SelectedDataNode.Accessor is SBM_FighterActionTable table)
                {
                    var source = Tools.FileIO.OpenFile("Current Bone INI (*.ini)|*.ini");
                    if (source == null)
                    {
                        return;
                    }
                    var target = Tools.FileIO.OpenFile("New Bone INI (*.ini)|*.ini");
                    if (target == null)
                    {
                        return;
                    }

                    var sini = new Tools.JointMap(source);
                    var tini = new Tools.JointMap(target);

                    var tables = table.Commands;

                    foreach (var c in tables)
                    {
                        var data = c.SubAction._s.GetData();
                        Tools.SubactionManager.EditSubactionData(
                            ref data,
                            (Tools.Subaction sa, ref int[] p) =>
                        {
                            // create gfx
                            if (sa.Code == 10 << 2)
                            {
                                p[0] = tini.IndexOf(sini[p[0]]);
                            }
                            // create hitbox
                            if (sa.Code == 11 << 2)
                            {
                                p[3] = tini.IndexOf(sini[p[3]]);
                            }
                            // set bone collision state
                            if (sa.Code == 28 << 2)
                            {
                                p[0] = tini.IndexOf(sini[p[0]]);
                            }
                            // enable ragdoll
                            if (sa.Code == 50 << 2)
                            {
                                p[0] = tini.IndexOf(sini[p[0]]);
                            }
                        },
                            Tools.SubactionGroup.Fighter);
                        c.SubAction._s.SetData(data);
                    }

                    table.Commands = tables;
                }
            };
            MenuItems.Add(bonemap);


            MenuItem soundid = new MenuItem("MEX: Make Sound IDs Portable ");
            soundid.Click += (sender, args) =>
            {
                if (MainForm.SelectedDataNode.Accessor is SBM_FighterActionTable table)
                {
                    {
                        {
                            var tables = table.Commands;

                            foreach (var c in tables)
                            {
                                var data = c.SubAction._s.GetData();
                                Tools.SubactionManager.EditSubactionData(
                                    ref data,
                                    (Tools.Subaction sa, ref int[] p) =>
                                {
                                    if (sa.Code == 17 << 2)
                                    {
                                        p[2] = (p[2] % 1000) + 5000;
                                    }

                                    if (sa.Code == 54 << 2)
                                    {
                                        p[1] = (p[1] % 1000) + 5000;
                                    }

                                    if (sa.Code == 55 << 2)
                                    {
                                        p[1] = (p[1] % 1000) + 5000;
                                    }
                                },
                                    Tools.SubactionGroup.Fighter);
                                c.SubAction._s.SetData(data);
                            }

                            table.Commands = tables;
                        }
                    }
                }
            };
            MenuItems.Add(soundid);
#endif
        }
Esempio n. 32
0
        public CommonContextMenu()
        {
            MenuItem delete = new MenuItem("Delete");

            delete.Click += (sender, args) =>
            {
                if (MainForm.SelectedDataNode != null)
                {
                    MainForm.SelectedDataNode.Delete();
                }
            };
            MenuItem export = new MenuItem("Export");

            export.Click += (sender, args) =>
            {
                if (MainForm.SelectedDataNode != null)
                {
                    MainForm.SelectedDataNode.Export();
                }
            };
            MenuItem import = new MenuItem("Replace");

            import.Click += (sender, args) =>
            {
                if (MainForm.SelectedDataNode != null)
                {
                    MainForm.SelectedDataNode.Import();
                }
            };

            if (SupportedTypes != null)
            {
                foreach (var v in SupportedTypes)
                {
                    if (PluginManager.HasEditor(v))
                    {
                        MenuItem editor = new MenuItem("Open Editor");

                        editor.Click += (sender, args) =>
                        {
                            if (MainForm.SelectedDataNode != null)
                            {
                                MainForm.Instance.OpenEditor();
                            }
                        };

                        MenuItems.Add(editor);
                        break;
                    }
                }
            }

            MenuItem addRootReference = new MenuItem("Add Reference To Root");

            addRootReference.Click += (sender, args) =>
            {
                if (MainForm.SelectedDataNode != null)
                {
                    var setting = new RootNameCreator();
                    using (var prop = new PropertyDialog("Symbol Name", setting))
                        if (prop.ShowDialog() == DialogResult.OK && !string.IsNullOrEmpty(setting.SymbolName))
                        {
                            MainForm.AddRoot(setting.SymbolName, MainForm.SelectedDataNode.Accessor);
                        }
                }
            };

            MenuItems.Add(export);
            MenuItems.Add(import);
            MenuItems.Add(delete);
            MenuItems.Add("-");
            MenuItems.Add(addRootReference);
            MenuItems.Add("-");
        }
Esempio n. 33
0
        /// <summary>
        /// Event when Settings menu is clicked.
        /// </summary>
        /// <param name="sender">MenuItem</param>
        /// <param name="e">EventArgs</param>
        private void SettingsMenuClick(object sender, EventArgs e)
        {
            PropertyDialog dialog = new PropertyDialog(m_env.PluginManager.GetPropertySettings());
            using (dialog)
            {
                if (dialog.ShowDialog() != DialogResult.OK)
                    return;

                dialog.ApplyChanges();
            }
        }
		private void menuDataSets_Click(object sender, System.EventArgs e)
		{
			MDIChild mc = this.ActiveMdiChild as MDIChild;
			if (mc == null || mc.DrawCtl == null || mc.ReportDocument == null)
				return;

			MenuItem menu = sender as MenuItem;
			if (menu == null)
				return;
			mc.Editor.StartUndoGroup("DataSet Dialog");

			string dsname = menu.Text;

			// Find the dataset we need
            List<XmlNode> ds = new List<XmlNode>();
			DesignXmlDraw draw = mc.DrawCtl;
			XmlNode rNode = draw.GetReportNode();
			XmlNode dsNode = draw.GetCreateNamedChildNode(rNode, "DataSets");
			XmlNode dataset=null;
			
			// find the requested dataset: the menu text equals the name of the dataset
			int dsCount=0;		// count of the datasets
			string onlyOneDsname=null;
			foreach (XmlNode dNode in dsNode)
			{	
				if (dNode.Name != "DataSet")
					continue;
				XmlAttribute nAttr = dNode.Attributes["Name"];
				if (nAttr == null)	// shouldn't really happen
					continue;
				if (dsCount == 0)
					onlyOneDsname = nAttr.Value;		// we keep track of 1st name; 

				dsCount++;
				if (nAttr.Value == dsname)
					dataset = dNode;
			}

			bool bNew = false;
			if (dataset == null)	// This must be the new menu item
			{
				dataset = draw.CreateElement(dsNode, "DataSet", null);	// create empty node
				bNew = true;
			}
			ds.Add(dataset);

            using (PropertyDialog pd = new PropertyDialog(mc.DrawCtl, ds, PropertyTypeEnum.DataSets))
            {
                DialogResult dr = pd.ShowDialog();
                if (pd.Changed || dr == DialogResult.OK)
                {
                    if (dsCount == 1)
                    // if we used to just have one DataSet we may need to fix up DataRegions 
                    //	that were defaulting to that name
                    {
                        dsCount = 0;
                        bool bUseName = false;
                        foreach (XmlNode dNode in dsNode)
                        {
                            if (dNode.Name != "DataSet")
                                continue;
                            XmlAttribute nAttr = dNode.Attributes["Name"];
                            if (nAttr == null)	// shouldn't really happen
                                continue;

                            dsCount++;
                            if (onlyOneDsname == nAttr.Value)
                                bUseName = true;
                        }
                        if (bUseName && dsCount > 1)
                        {
                            foreach (XmlNode drNode in draw.ReportNames.ReportItems)
                            {
                                switch (drNode.Name)
                                {
                                    // If a DataRegion doesn't have a dataset name specified use previous one
                                    case "Table":
                                    case "List":
                                    case "Matrix":
                                    case "Chart":
                                        XmlNode aNode = draw.GetNamedChildNode(drNode, "DataSetName");
                                        if (aNode == null)
                                            draw.CreateElement(drNode, "DataSetName", onlyOneDsname);
                                        break;
                                    default:
                                        break;
                                }
                            }
                        }
                    }
                    mc.Modified = true;
                }
                else if (bNew)	// if canceled and new DataSet get rid of temp node
                {
                    dsNode.RemoveChild(dataset);
                }
                if (pd.Delete)	// user must have hit a delete button for this to get set
                    dsNode.RemoveChild(dataset);

                if (!dsNode.HasChildNodes)		// If no dataset exists we remove DataSets
                    draw.RemoveElement(rNode, "DataSets");

                mc.Editor.EndUndoGroup(pd.Changed || dr == DialogResult.OK);
            }
		}
Esempio n. 35
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="filePath"></param>
        /// <param name="nodes"></param>
        public static void ExportToMayaAnim(string filePath, JointAnimManager animation, Dictionary <int, string> boneLabelMap)
        {
            using (PropertyDialog d = new PropertyDialog("Maya Settings", MayaSettings))
            {
                if (d.ShowDialog() != DialogResult.OK)
                {
                    return;
                }
            }

            MayaAnim a = new MayaAnim();

            if (!MayaSettings.UseRadians)
            {
                a.header.angularUnit = "deg";
            }

            int nodeIndex  = 0;
            int frameCount = 0;

            foreach (var n in animation.Nodes)
            {
                MayaAnim.MayaNode mnode = new MayaAnim.MayaNode();
                mnode.name = boneLabelMap.ContainsKey(nodeIndex) ? boneLabelMap[nodeIndex] : "JOBJ_" + nodeIndex;
                a.Nodes.Add(mnode);

                foreach (var t in n.Tracks)
                {
                    if (!jointTrackToMayaTrack.ContainsKey(t.JointTrackType))
                    {
                        continue;
                    }

                    MayaAnim.MayaTrack mtrack = new MayaAnim.MayaTrack();
                    mnode.atts.Add(mtrack);

                    mtrack.type = jointTrackToMayaTrack[t.JointTrackType];

                    if (mtrack.IsAngular())
                    {
                        mtrack.output = MayaAnim.OutputType.angular;
                    }

                    FOBJAnimState prevState = null;
                    for (int i = 0; i < t.Keys.Count; i++)
                    {
                        // get maximum frame to use as framecount
                        frameCount = (int)Math.Max(frameCount, t.Keys[i].Frame);

                        // get current state at this key frame
                        var  state     = t.GetState(t.Keys[i].Frame);
                        bool nextSlope = i + 1 < t.Keys.Count && t.Keys[i + 1].InterpolationType == GXInterpolationType.HSD_A_OP_SLP;

                        if (t.Keys[i].InterpolationType == GXInterpolationType.HSD_A_OP_SLP)
                        {
                            continue;
                        }


                        // assuming last frame
                        // if last frame shift frame information over
                        if (t.Keys[i].Frame == state.t1)
                        {
                            state.t0 = state.t1;
                            state.p0 = state.p1;
                            state.d0 = state.d1;
                            //state.op_intrp = state.op;
                        }

                        // generate key with time and value
                        var animkey = new MayaAnim.AnimKey()
                        {
                            input  = state.t0,
                            output = state.p0,
                        };

                        // nothing to do for linear
                        //if (op_intrp == GXInterpolationType.HSD_A_OP_LIN)

                        // set step type for constant and key
                        if (state.op_intrp == GXInterpolationType.HSD_A_OP_CON ||
                            state.op_intrp == GXInterpolationType.HSD_A_OP_KEY)
                        {
                            animkey.intan  = "auto";
                            animkey.outtan = "step";
                        }

                        // set tangents for weighted slopes
                        if (state.op_intrp == GXInterpolationType.HSD_A_OP_SLP ||
                            state.op_intrp == GXInterpolationType.HSD_A_OP_SPL0 ||
                            state.op_intrp == GXInterpolationType.HSD_A_OP_SPL)
                        {
                            animkey.t1 = state.d0;
                            animkey.t2 = state.d0;
                            if (nextSlope && prevState != null)
                            {
                                animkey.t1 = prevState.d1;
                            }
                            animkey.intan  = "spline";
                            animkey.outtan = "spline";
                        }

                        prevState = state;

                        animkey.t1 = (float)MathHelper.RadiansToDegrees(Math.Atan(animkey.t1));
                        animkey.t2 = (float)MathHelper.RadiansToDegrees(Math.Atan(animkey.t2));

                        if (mtrack.IsAngular() && !MayaSettings.UseRadians)
                        {
                            animkey.output = MathHelper.RadiansToDegrees(animkey.output);
                            animkey.t1     = MathHelper.RadiansToDegrees(animkey.t1);
                            animkey.t2     = MathHelper.RadiansToDegrees(animkey.t2);
                        }

                        // add final key
                        mtrack.keys.Add(animkey);
                    }
                }

                nodeIndex++;
            }

            // set framecount
            a.header.endTime   = animation.FrameCount;
            a.header.startTime = 0;

            // save to file
            a.Save(filePath);
        }