void DrawHardpoints(ICamera cam) { var matrix = GetModelMatrix(); GizmoRender.Scale = gizmoScale; GizmoRender.Begin(); foreach (var tr in gizmos) { if (tr.Enabled || tr.Override != null) { var transform = tr.Override ?? tr.Definition.Transform; //arc if (tr.Definition is RevoluteHardpointDefinition) { var rev = (RevoluteHardpointDefinition)tr.Definition; var min = tr.Override == null ? rev.Min : tr.EditingMin; var max = tr.Override == null ? rev.Max : tr.EditingMax; GizmoRender.AddGizmoArc(transform * (tr.Parent == null ? Matrix4.Identity : tr.Parent.Transform) * matrix, min, max); } //draw (red for editing, light pink for normal) GizmoRender.AddGizmo(transform * (tr.Parent == null ? Matrix4.Identity : tr.Parent.Transform) * matrix, tr.Override != null ? Color4.Red : Color4.LightPink); } } GizmoRender.RenderGizmos(cam, rstate); }
void DrawSkeleton(ICamera cam) { var matrix = GetModelMatrix(); GizmoRender.Scale = gizmoScale; GizmoRender.Begin(); var df = (DF.DfmFile)drawable; foreach (var c in df.Constructs.Constructs) { var b1 = c.BoneA; var b2 = c.BoneB; if (string.IsNullOrEmpty(c.BoneB)) { b2 = c.ParentName; b1 = c.BoneA; } var conMat = c.Rotation * Matrix4.CreateTranslation(c.Origin); DF.Bone bone1 = null; DF.Bone bone2 = null; foreach (var k in df.Parts.Values) { if (k.objectName == b1) { bone1 = k.Bone; } if (k.objectName == b2) { bone2 = k.Bone; } } if (bone1 == null || bone2 == null) { continue; } GizmoRender.AddGizmo(bone2.BoneToRoot * bone1.BoneToRoot * conMat * matrix); } /*foreach(var b in df.Bones.Values) * { * var tr = b.BoneToRoot; * tr.Transpose(); * if (b.Construct != null) * tr *= b.Construct.Transform; * tr *= matrix; * * GizmoRender.AddGizmo(tr, true, true); * }*/ GizmoRender.RenderGizmos(cam, rstate); }
void DrawSkeleton(ICamera cam) { var matrix = GetModelMatrix(); GizmoRender.Scale = gizmoScale; GizmoRender.Begin(); var dfm = (DF.DfmFile)drawable; foreach (var b in dfm.Bones) { GizmoRender.AddGizmo(b.Value.BoneToRoot * matrix, Color4.Green); } GizmoRender.RenderGizmos(cam, rstate); }
void DrawHardpoints(ICamera cam) { var matrix = Matrix4.CreateRotationX(rotation.Y) * Matrix4.CreateRotationY(rotation.X); GizmoRender.Begin(); foreach (var tr in gizmos) { if (tr.Enabled) { GizmoRender.AddGizmo(tr.Definition.Transform * (tr.Parent == null ? Matrix4.Identity : tr.Parent.Transform) * matrix); } } GizmoRender.RenderGizmos(cam, rstate); }
void DrawHardpoints(ICamera cam) { var matrix = GetModelMatrix(); GizmoRender.Scale = gizmoScale; GizmoRender.Begin(); foreach (var tr in gizmos) { if (tr.Enabled || tr.Override != null) { var transform = tr.Override ?? tr.Definition.Transform; //highlight edited cube if (tr.Override != null) { GizmoRender.CubeColor = Color4.CornflowerBlue; GizmoRender.CubeAlpha = 0.5f; } else { GizmoRender.CubeColor = Color4.Purple; GizmoRender.CubeAlpha = 0.3f; } //arc if (tr.Definition is RevoluteHardpointDefinition) { var rev = (RevoluteHardpointDefinition)tr.Definition; var min = tr.Override == null ? rev.Min : tr.EditingMin; var max = tr.Override == null ? rev.Max : tr.EditingMax; GizmoRender.AddGizmoArc(transform * (tr.Parent == null ? Matrix4.Identity : tr.Parent.Transform) * matrix, min, max); } // GizmoRender.AddGizmo(transform * (tr.Parent == null ? Matrix4.Identity : tr.Parent.Transform) * matrix); } } GizmoRender.RenderGizmos(cam, rstate); }
void DrawHardpoints(ICamera cam) { var matrix = Matrix4.CreateRotationX(rotation.Y) * Matrix4.CreateRotationY(rotation.X); List <Matrix4> hardpoints = new List <Matrix4>(); if (drawable is CmpFile) { foreach (var p in ((CmpFile)drawable).Parts) { var parentHp = p.Value.Construct != null ? p.Value.Construct.Transform : Matrix4.Identity; parentHp *= matrix; foreach (var hp in p.Value.Model.Hardpoints) { hardpoints.Add(hp.Transform * parentHp); } } } else if (drawable is ModelFile) { foreach (var hp in ((ModelFile)drawable).Hardpoints) { hardpoints.Add(hp.Transform * matrix); } } if (hardpoints.Count == 0) { return; } GizmoRender.Begin(); foreach (var tr in hardpoints) { //X GizmoRender.AddGizmo(tr); } GizmoRender.RenderGizmos(cam, rstate); }