Example #1
0
 public Hardpoint(HardpointDefinition def, RigidModelPart parent)
 {
     Parent     = parent;
     Definition = def;
     if (Definition == null)
     {
         Definition = new FixedHardpointDefinition("dummy");
     }
     Name     = def == null ? "Dummy Hardpoint" : def.Name;
     Revolute = def as RevoluteHardpointDefinition;
 }
Example #2
0
 public Hardpoint(HardpointDefinition def, AbstractConstruct parent)
 {
     this.parent = parent;
     if (def != null)
     {
         this.transform = def.Transform;
     }
     else
     {
         this.transform = Matrix4.Identity;
     }
     Name     = def == null ? "Dummy Hardpoint" : def.Name;
     IsStatic = parent is FixConstruct && def is FixedHardpointDefinition;
 }
        public bool GetHardpoint(string hp, out HardpointDefinition def, out BoneInstance bone)
        {
            var hardpoint = dfm.GetHardpoints().First(x => x.Hp.Name.Equals(hp, StringComparison.OrdinalIgnoreCase));

            if (Bones.TryGetValue(hardpoint.Part.objectName, out BoneInstance bi))
            {
                def  = hardpoint.Hp;
                bone = bi;
                return(true);
            }
            def  = null;
            bone = null;
            return(false);
        }
Example #4
0
 void ConfirmDelete(PopupData data)
 {
     ImGui.Text(string.Format("Are you sure you wish to delete '{0}'?", hpDelete.Name));
     if (ImGui.Button("Yes"))
     {
         hpDeleteFrom.Remove(hpDelete);
         var gz = gizmos.Where((x) => x.Definition == hpDelete).First();
         if (hpDelete == hpEditing)
         {
             hpEditing = null;
         }
         gizmos.Remove(gz);
         ImGui.CloseCurrentPopup();
     }
     ImGui.SameLine();
     if (ImGui.Button("No"))
     {
         ImGui.CloseCurrentPopup();
     }
 }
Example #5
0
 HardpointDefinition DupDef(string name, HardpointDefinition src)
 {
     if (src is FixedHardpointDefinition)
     {
         return(new FixedHardpointDefinition(name)
         {
             Position = src.Position, Orientation = src.Orientation
         });
     }
     else if (src is RevoluteHardpointDefinition)
     {
         var revSrc = (RevoluteHardpointDefinition)src;
         return(new RevoluteHardpointDefinition(name)
         {
             Position = src.Position,
             Orientation = src.Orientation,
             Min = revSrc.Min,
             Max = revSrc.Max
         });
     }
     return(null);
 }
Example #6
0
 unsafe void HardpointEditor()
 {
     if (hpEditing == null)
     {
         hpEditOpen = false;
         return;
     }
     if (hpEditing != null && hpEditOpen == false)
     {
         editingGizmo = gizmos.First((x) => x.Definition == hpEditing);
         hpEditOpen   = true;
         hpFirst      = true;
         SetHardpointValues();
     }
     if (ImGui.Begin("Hardpoint Editor##" + Unique, ref hpEditOpen, hpFirst ? ImGuiWindowFlags.AlwaysAutoResize : ImGuiWindowFlags.None))
     {
         hpFirst = false;
         ImGui.Text(hpEditing.Name);
         bool isFix = hpEditing is FixedHardpointDefinition;
         ImGui.Text("Type: " + (isFix ? "Fixed" : "Revolute"));
         if (ImGui.Button("Reset"))
         {
             SetHardpointValues();
         }
         ImGui.Separator();
         ImGui.Text("Position");
         ImGui.InputFloat("X##posX", ref HPx, 0.01f, 0.25f, "%.5f", ImGuiInputTextFlags.CharsDecimal);
         ImGui.InputFloat("Y##posY", ref HPy, 0.01f, 0.25f, "%.5f", ImGuiInputTextFlags.CharsDecimal);
         ImGui.InputFloat("Z##posZ", ref HPz, 0.01f, 0.25f, "%.5f", ImGuiInputTextFlags.CharsDecimal);
         ImGui.Separator();
         ImGui.Text("Rotation");
         ImGui.InputFloat("Pitch", ref HPpitch, 0.1f, 1f, "%.4f", ImGuiInputTextFlags.CharsDecimal);
         ImGui.InputFloat("Yaw", ref HPyaw, 0.1f, 1f, "%.4f", ImGuiInputTextFlags.CharsDecimal);
         ImGui.InputFloat("Roll", ref HProll, 0.1f, 1f, "%.4f", ImGuiInputTextFlags.CharsDecimal);
         ImGui.Separator();
         if (!isFix)
         {
             ImGui.Text("Axis");
             ImGui.InputFloat("X##axisX", ref HPaxisX, 0.01f, 0.25f, "%.5f", ImGuiInputTextFlags.CharsDecimal);
             ImGui.InputFloat("Y##axisY", ref HPaxisY, 0.01f, 0.25f, "%.5f", ImGuiInputTextFlags.CharsDecimal);
             ImGui.InputFloat("Z##axisZ", ref HPaxisZ, 0.01f, 0.25f, "%.5f", ImGuiInputTextFlags.CharsDecimal);
             ImGui.InputFloat("Min", ref HPmin, 0.1f, 1f, "%.4f", ImGuiInputTextFlags.CharsDecimal);
             ImGui.InputFloat("Max", ref HPmax, 0.1f, 1f, "%.4f", ImGuiInputTextFlags.CharsDecimal);
             ImGui.Separator();
         }
         if (ImGui.Button("Apply"))
         {
             hpEditing.Position    = new Vector3(HPx, HPy, HPz);
             hpEditing.Orientation = Matrix4.CreateFromEulerAngles(
                 MathHelper.DegreesToRadians((double)HPpitch),
                 MathHelper.DegreesToRadians((double)HPyaw),
                 MathHelper.DegreesToRadians((double)HProll)
                 );
             if (!isFix)
             {
                 var rev = (RevoluteHardpointDefinition)hpEditing;
                 if (HPmin > HPmax)
                 {
                     var t = HPmin;
                     HPmin = HPmax;
                     HPmax = t;
                     popups.OpenPopup("Warning");
                 }
                 rev.Min  = MathHelper.DegreesToRadians(HPmin);
                 rev.Max  = MathHelper.DegreesToRadians(HPmax);
                 rev.Axis = new Vector3(HPaxisX, HPaxisY, HPaxisZ);
             }
             hpEditOpen = false;
         }
         ImGui.SameLine();
         if (ImGui.Button("Cancel"))
         {
             hpEditOpen = false;
         }
         editingGizmo.Override = Matrix4.CreateFromEulerAngles(
             MathHelper.DegreesToRadians((double)HPpitch),
             MathHelper.DegreesToRadians((double)HPyaw),
             MathHelper.DegreesToRadians((double)HProll)
             ) * Matrix4.CreateTranslation(HPx, HPy, HPz);
         editingGizmo.EditingMin = MathHelper.DegreesToRadians(HPmin);
         editingGizmo.EditingMax = MathHelper.DegreesToRadians(HPmax);
         ImGui.End();
     }
     if (hpEditOpen == false)
     {
         hpEditing             = null;
         editingGizmo.Override = null;
         editingGizmo          = null;
     }
 }
Example #7
0
 public HardpointGizmo(HardpointDefinition def, AbstractConstruct parent)
 {
     Definition = def;
     Parent     = parent;
     Enabled    = false;
 }