MCPcopy
hub / github.com/g3n/engine / newMesh

Function newMesh

loader/collada/geometry.go:71–108  ·  view source on GitHub ↗
(m *Mesh)

Source from the content-addressed store, hash-verified

69}
70
71func newMesh(m *Mesh) (*geometry.Geometry, uint32, error) {
72
73 // If no primitive elements present, it is a mesh of points
74 if len(m.PrimitiveElements) == 0 {
75 return newMeshPoints(m)
76 }
77
78 // All the primitive elements must be of the same type
79 var etype reflect.Type
80 for i := 0; i < len(m.PrimitiveElements); i++ {
81 el := m.PrimitiveElements[i]
82 if i == 0 {
83 etype = reflect.TypeOf(el)
84 } else {
85 if reflect.TypeOf(el) != etype {
86 return nil, 0, fmt.Errorf("primitive elements of different types")
87 }
88 }
89 }
90
91 pei := m.PrimitiveElements[0]
92 switch pet := pei.(type) {
93 case *Polylist:
94 return newMeshPolylist(m, m.PrimitiveElements)
95 case *Triangles:
96 return newMeshTriangles(m, pet)
97 case *Lines:
98 return newMeshLines(m, pet)
99 case *LineStrips:
100 return newMeshLineStrips(m, pet)
101 case *Trifans:
102 return newMeshTrifans(m, pet)
103 case *Tristrips:
104 return newMeshTristrips(m, pet)
105 default:
106 return nil, 0, fmt.Errorf("PrimitiveElement:%T not supported", pet)
107 }
108}
109
110// Creates a geometry from a polylist
111// Only triangles are supported

Callers 1

NewGeometryMethod · 0.85

Calls 7

newMeshPointsFunction · 0.85
newMeshPolylistFunction · 0.85
newMeshTrianglesFunction · 0.85
newMeshLinesFunction · 0.85
newMeshLineStripsFunction · 0.85
newMeshTrifansFunction · 0.85
newMeshTristripsFunction · 0.85

Tested by

no test coverage detected