44 #ifndef __CU_WIRE_NODE_H__
45 #define __CU_WIRE_NODE_H__
48 #include <cugl/2d/CUTexturedNode.h>
49 #include <cugl/math/CUPoly2.h>
50 #include <cugl/math/polygon/CUPathOutliner.h>
53 #define WIRE_SEGMENTS 8
118 #pragma mark Constructors
157 bool initWithVertices(
const std::vector<Vec2>& vertices, PathTraversal traversal);
209 #pragma mark Static Constructors
217 static std::shared_ptr<WireNode>
alloc() {
218 std::shared_ptr<WireNode> node = std::make_shared<WireNode>();
219 return (node->init() ? node :
nullptr);
235 std::shared_ptr<WireNode> node = std::make_shared<WireNode>();
236 return (node->init(vertices) ? node :
nullptr);
252 PathTraversal traversal) {
253 std::shared_ptr<WireNode> node = std::make_shared<WireNode>();
254 return (node->initWithVertices(vertices,traversal) ? node :
nullptr);
269 std::shared_ptr<WireNode> node = std::make_shared<WireNode>();
270 return (node->init(poly) ? node :
nullptr);
283 std::shared_ptr<WireNode> node = std::make_shared<WireNode>();
284 return (node->init(rect) ? node :
nullptr);
296 std::shared_ptr<WireNode> node = std::make_shared<WireNode>();
297 return (node->initWithLine(origin,dest) ? node :
nullptr);
312 unsigned int segments = WIRE_SEGMENTS) {
313 std::shared_ptr<WireNode> node = std::make_shared<WireNode>();
314 return (node->initWithEllipse(center,size,segments) ? node :
nullptr);
341 const std::shared_ptr<JsonValue>& data) {
342 std::shared_ptr<WireNode> result = std::make_shared<WireNode>();
343 if (!result->initWithData(loader,data)) { result =
nullptr; }
344 return std::dynamic_pointer_cast<Node>(result);
348 #pragma mark Attributes
380 virtual void setPolygon(
const std::vector<Vec2>& vertices)
override;
392 void setPolygon(
const std::vector<Vec2>& vertices, PathTraversal traversal);
435 void setEllipse(
const Vec2& center,
const Size& size,
unsigned int segments = WIRE_SEGMENTS);
438 #pragma mark Rendering
462 virtual void draw(
const std::shared_ptr<SpriteBatch>& batch,
const Mat4& transform,
Color4 tint)
override;
467 CU_DISALLOW_COPY_AND_ASSIGN(
WireNode);