// newMinimap initializes the minimap. It still needs to be populated. func newMinimap(root vu.Pov, numTroops int) *minimap { mm := &minimap{} mm.radius = 120 mm.scale = 5.0 mm.cores = []vu.Pov{} mm.view = root.NewView() mm.view.SetUI() mm.view.SetCull(vu.NewRadiusCull(float64(mm.radius))) mm.cam = mm.view.Cam() mm.cam.SetTransform(vu.XZ_XY) // create the parent for all the visible minimap pieces. mm.part = root.NewPov().SetLocation(float64(mm.x), 0, float64(-mm.y)) // add the white background. mm.bg = mm.part.NewPov().SetScale(110, 1, 110) mm.bg.NewModel("uv").LoadMesh("icon_xz").AddTex("hudbg") // create the sentinel position markers mm.spms = []vu.Pov{} for cnt := 0; cnt < numTroops; cnt++ { tpm := mm.part.NewPov().SetScale(mm.scale, mm.scale, mm.scale) tpm.NewModel("alpha").LoadMesh("square_xz").LoadMat("tred") mm.spms = append(mm.spms, tpm) } // create the player marker and center map marker. mm.cpm = mm.part.NewPov().SetScale(mm.scale, mm.scale, mm.scale) mm.cpm.NewModel("alpha").LoadMesh("square_xz").LoadMat("blue") mm.ppm = mm.part.NewPov().SetScale(mm.scale, mm.scale, mm.scale) mm.ppm.NewModel("alpha").LoadMesh("tri_xz").LoadMat("tblack") return mm }