Skip to content

Commit 568ceb5

Browse files
committed
model Geometries now uses ove
rride colors as well + removed unused todos + error handling
1 parent e31c114 commit 568ceb5

3 files changed

Lines changed: 34 additions & 6 deletions

File tree

colors.go

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ var default_colors = map[GeometryType]color.NRGBA{
2929
GeometryTypeStructure: {0, 0, 0, 255},
3030
GeometryTypeSupport: {0, 0, 0, 255},
3131
GeometryTypeMagnet: {0, 0, 0, 255},
32+
GeometryTypeGeometries: {100, 100, 100, 255},
3233
}
3334

3435
var fromGDTFGeometryMap = map[GDTFTypes.GeometryType]GeometryType{
@@ -52,8 +53,6 @@ var fromGDTFGeometryMap = map[GDTFTypes.GeometryType]GeometryType{
5253
GDTFTypes.GeometryTypeWiringObject: GeometryTypeWiringObject,
5354
}
5455

55-
// TODO: add "global" override
56-
5756
func getOverrideColors(overrides OverrideColorMap) colorMap {
5857
result := make(colorMap)
5958
for i := range modelTypes {
@@ -80,3 +79,14 @@ func (colors colorMap) getColor(modelType ModelType, geometryType GDTFTypes.Geom
8079
}
8180
return modelColors[nonGDTFGeometryType], nil
8281
}
82+
83+
func (colors colorMap) getGeometriesColor(modelType ModelType) (color.NRGBA, error) {
84+
modelColors, ok := colors[modelType]
85+
if !ok {
86+
return color.NRGBA{}, fmt.Errorf("Invalid model type %d", modelType)
87+
}
88+
if _, ok := modelColors[GeometryTypeGeometries]; !ok {
89+
return color.NRGBA{}, fmt.Errorf("Geometries color is undefined for model type %d", modelType)
90+
}
91+
return modelColors[GeometryTypeGeometries], nil
92+
}

geometry_types.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ const (
2121
GeometryTypeStructure GeometryType = "Structure"
2222
GeometryTypeSupport GeometryType = "Support"
2323
GeometryTypeMagnet GeometryType = "Magnet"
24+
GeometryTypeGeometries GeometryType = "Geometries" // used for seperately provided Geometries in MVR
2425
)
2526

2627
var geometryTypes []GeometryType = []GeometryType{
@@ -42,4 +43,5 @@ var geometryTypes []GeometryType = []GeometryType{
4243
GeometryTypeStructure,
4344
GeometryTypeSupport,
4445
GeometryTypeMagnet,
46+
GeometryTypeGeometries,
4547
}

rasterizer.go

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -81,8 +81,12 @@ func drawStageModel(mesh *MVRTypes.StageModel, canvas *Canvas, config Rasterizer
8181
}
8282
drawMesh(part.Mesh, canvas, color)
8383
}
84+
geometry_color, err := colors.getGeometriesColor(ModelTypeSceneObject)
85+
if err != nil {
86+
return fmt.Errorf("Could not draw stage model: %s", err)
87+
}
8488
for _, geometry := range obj.Geometries {
85-
drawMesh(geometry, canvas, color.NRGBA{100, 100, 100, 255})
89+
drawMesh(geometry, canvas, geometry_color)
8690
}
8791
}
8892

@@ -104,8 +108,12 @@ func drawStageModel(mesh *MVRTypes.StageModel, canvas *Canvas, config Rasterizer
104108
fixtureLabel{fixture: fixture.Fixture, fixture_bounding_box: bb},
105109
)
106110

111+
geometry_color, err := colors.getGeometriesColor(ModelTypeFixture)
112+
if err != nil {
113+
return fmt.Errorf("Could not draw stage model: %s", err)
114+
}
107115
for _, geometry := range fixture.Geometries {
108-
drawMesh(geometry, canvas, color.NRGBA{100, 100, 100, 255})
116+
drawMesh(geometry, canvas, geometry_color)
109117
}
110118
}
111119
} else {
@@ -118,8 +126,12 @@ func drawStageModel(mesh *MVRTypes.StageModel, canvas *Canvas, config Rasterizer
118126
drawMesh(part.Mesh, canvas, color)
119127
}
120128

129+
geometry_color, err := colors.getGeometriesColor(ModelTypeFixture)
130+
if err != nil {
131+
return fmt.Errorf("Could not draw stage model: %s", err)
132+
}
121133
for _, geometry := range fixture.Geometries {
122-
drawMesh(geometry, canvas, color.NRGBA{100, 100, 100, 255})
134+
drawMesh(geometry, canvas, geometry_color)
123135
}
124136
}
125137
}
@@ -139,7 +151,11 @@ func Draw(mesh *MVRTypes.StageModel, config RasterizerConfig) (*Canvas, error) {
139151

140152
normalizeAndRotateStageModel(canvas, mesh, config.Rotation)
141153

142-
drawStageModel(mesh, canvas, config)
154+
err = drawStageModel(mesh, canvas, config)
155+
156+
if err != nil {
157+
return nil, err
158+
}
143159

144160
err = drawFixtureLabels(canvas)
145161

0 commit comments

Comments
 (0)