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; }
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); }
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(); } }
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); }
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; } }
public HardpointGizmo(HardpointDefinition def, AbstractConstruct parent) { Definition = def; Parent = parent; Enabled = false; }