35 #include "../api_display.h"
38 #include "outline_accuracy.h"
39 #include "../Render/graphic_context.h"
40 #include "../../Core/Resources/xml_resource_node.h"
41 #include "../../Core/Math/cl_math.h"
42 #include "../../Core/Math/origin.h"
43 #include "../../Core/Math/circle.h"
44 #include "../../Core/IOData/file_system.h"
45 #include "../../Core/Resources/resource.h"
52 class CollisionOutline_Impl;
53 class XMLResourceDocument;
54 class OutputSourceProvider;
57 class ResourceManager;
182 const Contour &get_object_bounding_box()
const;
186 Circlef get_minimum_enclosing_disc()
const;
189 bool get_inside_test()
const;
192 std::vector<Contour> &get_contours();
193 const std::vector<Contour> &get_contours()
const;
196 Pointf get_translation()
const;
202 float get_angle()
const;
205 unsigned int get_width()
const;
208 unsigned int get_height()
const;
211 void get_alignment(
Origin &origin,
float &x,
float &y )
const;
214 void get_rotation_hotspot(
Origin &origin,
float &x,
float &y)
const;
217 const std::vector<CollidingContours> &get_collision_info()
const;
220 void get_collision_info_state(
bool &points,
bool &normals,
bool &metadata,
bool &pendepth)
const;
234 void optimize(
unsigned char check_distance=3,
float corner_angle =
PI / 5.0 );
258 void draw_sub_circles(
272 void draw_smallest_enclosing_disc(
279 void set_alignment(
Origin origin,
float x=0,
float y=0 );
282 void set_rotation_hotspot(
Origin origin,
float x=0,
float y=0 );
285 void set_translation(
float x,
float y );
288 void set_scale(
float x,
float y );
291 void set_angle(
const Angle &angle);
294 void rotate(
const Angle &angle);
297 void set_inside_test(
bool value );
300 void enable_collision_info(
bool points=
true,
bool normals=
false,
bool metadata=
false,
bool pen_depth=
false);
303 void set_collision_info(
const std::vector<CollidingContours> &colinfo);
306 void clean_collision_info();
309 void calculate_radius();
312 void calculate_sub_circles(
float radius_multiplier=3.5);
315 void calculate_smallest_enclosing_discs();
318 void calculate_convex_hulls();
323 void save(
const std::string &fullname)
const;
329 void save(
const std::string &filename,
FileSystem &file_system)
const;
340 bool collide(
const CollisionOutline &outline,
bool remove_old_collision_info=
true );
343 static void calculate_penetration_depth(std::vector<CollidingContours> &collision_info);
348 bool point_inside(
const Pointf &point )
const;
354 std::shared_ptr<CollisionOutline_Impl> impl;
Floating point color description class (for float).
Definition: color.h:661
int contour2_line_end
Definition: collision_outline.h:75
Angle class.
Definition: angle.h:63
Resource proxy of a specific type.
Definition: resource.h:59
Pointf normal
Normal vector at the point where the contours intersected.
Definition: collision_outline.h:69
float penetration_depth
Definition: collision_outline.h:89
Pointf point
Coordinates of the point where the contours intersected.
Definition: collision_outline.h:66
2D Graphics Canvas
Definition: canvas.h:70
I/O Device interface.
Definition: iodevice.h:51
const Contour * contour1
Definition: collision_outline.h:83
Definition: outline_accuracy.h:45
Pixel data container.
Definition: pixel_buffer.h:69
Origin
Alignment origins.
Definition: origin.h:41
Strurcture containing information about contours that collided.
Definition: collision_outline.h:81
const float PI
Definition: cl_platform.h:71
CollidingContours(const Contour *c1, const Contour *c2, bool in=false)
Constructs a CollidingContours.
Definition: collision_outline.h:98
bool inside
Definition: collision_outline.h:85
Pointf contour1_deep_point
Definition: collision_outline.h:90
Virtual File System (VFS).
Definition: file_system.h:48
Collision detection contour.
Definition: contour.h:51
Resource manager.
Definition: resource_manager.h:45
Collision detection outline.
Definition: collision_outline.h:114
const Contour * contour2
Definition: collision_outline.h:84
OutlineAccuracy
Outline optimization accuracy.
Definition: outline_accuracy.h:41
Pointf contour2_deep_point
Definition: collision_outline.h:91
int contour2_line_start
Definition: collision_outline.h:75
Circle - Float.
Definition: circle.h:90
std::vector< CollisionPoint > points
Definition: collision_outline.h:86
Pointf penetration_normal
Definition: collision_outline.h:88
2D (width,height) size structure - Integer
Definition: size.h:157
XML Resource Document.
Definition: xml_resource_document.h:49
Collision point information structure.
Definition: collision_outline.h:63
2D (x,y) point structure - Float
Definition: point.h:73
int contour1_line_start
Indexes of intersecting lines on the contours.
Definition: collision_outline.h:75
bool is_entry
Every contour intersection has an entry and exit point. True, if this is an entry point...
Definition: collision_outline.h:72
int contour1_line_end
Definition: collision_outline.h:75