A collection of 2D points which are plotted. More...
Public Member Functions | |
| DotPlotter (int count) | |
| Construct a new dotplotter. | |
| void | Draw (GameTime gameTime, PrimitiveBatch primitiveBatch) |
| Render the plotter. | |
| void | MoveDots (Vector2 displacement) |
| Move all dots by the given amount. | |
| void | AddDot (Vector2 targetPosition, Color color, int type) |
| Add a dot to the plot. | |
| void | SetTypeAtHead (int type) |
| Set the type of the point at the top of the stack. | |
A collection of 2D points which are plotted.
Definition at line 13 of file DotPlotter.cs.
| NewGamePhysics.GraphicalElements.DotPlotter.DotPlotter | ( | int | count | ) |
Construct a new dotplotter.
| count | The maximum number of dots in the plotter. |
Definition at line 54 of file DotPlotter.cs.
00055 { 00056 if (count <= 0) 00057 { 00058 throw new ArgumentOutOfRangeException("count"); 00059 } 00060 00061 // Keep size 00062 plotStackSize = count; 00063 pointsInStack = 0; 00064 00065 // Pre-allocate 00066 plotPositions = new Vector2[plotStackSize]; 00067 plotColors = new Color[plotStackSize]; 00068 plotType = new int[plotStackSize]; 00069 for (int i = 0; i < plotStackSize; i++) 00070 { 00071 plotPositions[i] = new Vector2(0.0f, 0.0f); 00072 plotColors[i] = new Color(); 00073 plotType[i] = 0; 00074 } 00075 00076 // Empty stack 00077 headOfPositionStack = 0; 00078 tailOfPositionStack = 0; 00079 }
| void NewGamePhysics.GraphicalElements.DotPlotter.AddDot | ( | Vector2 | targetPosition, | |
| Color | color, | |||
| int | type | |||
| ) |
Add a dot to the plot.
| targetPosition | The target position of the dot. | |
| color | The color of the dot. | |
| type | The emphasis type of the dot. |
Definition at line 179 of file DotPlotter.cs.
00180 { 00181 // Store plot position and attributes 00182 plotPositions[headOfPositionStack].X = targetPosition.X; 00183 plotPositions[headOfPositionStack].Y = targetPosition.Y; 00184 plotColors[headOfPositionStack] = color; 00185 plotType[headOfPositionStack] = type; 00186 00187 // Advance head to next empty slot 00188 headOfPositionStack++; 00189 00190 // Maybe wrap head 00191 if (headOfPositionStack == plotStackSize) 00192 { 00193 headOfPositionStack = 0; 00194 } 00195 00196 // Maybe move tail 00197 if (headOfPositionStack == tailOfPositionStack) 00198 { 00199 // Also advance tail 00200 tailOfPositionStack++; 00201 00202 // Maybe wrap tail 00203 if (tailOfPositionStack == plotStackSize) 00204 { 00205 tailOfPositionStack = 0; 00206 } 00207 } 00208 00209 // Count points 00210 if (pointsInStack < plotStackSize) 00211 { 00212 pointsInStack++; 00213 } 00214 }
| void NewGamePhysics.GraphicalElements.DotPlotter.Draw | ( | GameTime | gameTime, | |
| PrimitiveBatch | primitiveBatch | |||
| ) |
Render the plotter.
| primitiveBatch | The primitive batch to use for drawing the lines. | |
| dotColor | The color for the dots. |
Definition at line 118 of file DotPlotter.cs.
00119 { 00120 if (primitiveBatch == null) 00121 { 00122 throw new ArgumentNullException("primitiveBatch"); 00123 } 00124 00125 // Do we have enough points 00126 if (pointsInStack > 1) 00127 { 00128 primitiveBatch.Begin(PrimitiveType.LineList); 00129 if (headOfPositionStack > tailOfPositionStack) 00130 { 00131 for (int i = tailOfPositionStack; i < (headOfPositionStack - 1); i++) 00132 { 00133 DrawSegment(plotPositions[i], plotPositions[(i + 1) % plotStackSize], 00134 plotColors[i], plotType[i], primitiveBatch); 00135 } 00136 } 00137 else if (headOfPositionStack < tailOfPositionStack) 00138 { 00139 for (int i = tailOfPositionStack; i < plotStackSize; i++) 00140 { 00141 DrawSegment(plotPositions[i], plotPositions[(i + 1) % plotStackSize], 00142 plotColors[i], plotType[i], primitiveBatch); 00143 } 00144 if (headOfPositionStack > 0) 00145 { 00146 for (int i = 0; i < (headOfPositionStack - 1); i++) 00147 { 00148 DrawSegment(plotPositions[i], plotPositions[(i + 1) % plotStackSize], 00149 plotColors[i], plotType[i], primitiveBatch); 00150 } 00151 } 00152 } 00153 else 00154 { 00155 // if head==tail there is nothing to do 00156 } 00157 primitiveBatch.End(); 00158 } 00159 }
| void NewGamePhysics.GraphicalElements.DotPlotter.MoveDots | ( | Vector2 | displacement | ) |
Move all dots by the given amount.
| displacement |
Definition at line 165 of file DotPlotter.cs.
| void NewGamePhysics.GraphicalElements.DotPlotter.SetTypeAtHead | ( | int | type | ) |
Set the type of the point at the top of the stack.
| type | The emphasis type of the dot. |
Definition at line 220 of file DotPlotter.cs.
00221 { 00222 // Do we have points? 00223 if (pointsInStack > 0) 00224 { 00225 if (headOfPositionStack > 0) 00226 { 00227 // Previous position is last point added. 00228 plotType[headOfPositionStack - 1] = type; 00229 } 00230 else 00231 { 00232 // Last element in stack is the last point added. 00233 plotType[plotStackSize - 1] = type; 00234 } 00235 } 00236 }
1.6.2