MCPcopy
hub / github.com/processing/p5.js / addImmediate

Method addImmediate

src/webgl/GeometryBuilder.js:127–160  ·  view source on GitHub ↗

* Adds geometry from the renderer's immediate mode into the builder's * combined geometry.

(geometry, shapeMode, { validateFaces = false } = {})

Source from the content-addressed store, hash-verified

125 * combined geometry.
126 */
127 addImmediate(geometry, shapeMode, { validateFaces = false } = {}) {
128 const faces = [];
129
130 if (this.renderer.states.fillColor) {
131 if (
132 shapeMode === constants.TRIANGLE_STRIP ||
133 shapeMode === constants.QUAD_STRIP
134 ) {
135 for (let i = 2; i < geometry.vertices.length; i++) {
136 if (i % 2 === 0) {
137 faces.push([i, i - 1, i - 2]);
138 } else {
139 faces.push([i, i - 2, i - 1]);
140 }
141 }
142 } else if (shapeMode === constants.TRIANGLE_FAN) {
143 for (let i = 2; i < geometry.vertices.length; i++) {
144 faces.push([0, i - 1, i]);
145 }
146 } else if (shapeMode === constants.TRIANGLES) {
147 for (let i = 0; i < geometry.vertices.length; i += 3) {
148 if (
149 !validateFaces ||
150 geometry.vertices[i].copy().sub(geometry.vertices[i+1])
151 .cross(geometry.vertices[i].copy().sub(geometry.vertices[i+2]))
152 .magSq() > 0
153 ) {
154 faces.push([i, i + 1, i + 2]);
155 }
156 }
157 }
158 }
159 this.addGeometry(Object.assign({}, geometry, { faces }));
160 }
161
162 /**
163 * Adds geometry from the renderer's retained mode into the builder's

Callers 1

drawShapeMethod · 0.80

Calls 6

addGeometryMethod · 0.95
magSqMethod · 0.80
crossMethod · 0.80
subMethod · 0.80
pushMethod · 0.45
copyMethod · 0.45

Tested by

no test coverage detected