Browse Source

Move `RayShape2D` implementation into its own translation unit

Andrii Doroshenko (Xrayez) 5 years ago
parent
commit
9bb070b030

+ 1 - 0
editor/plugins/collision_shape_2d_editor_plugin.cpp

@@ -36,6 +36,7 @@
 #include "scene/resources/concave_polygon_shape_2d.h"
 #include "scene/resources/convex_polygon_shape_2d.h"
 #include "scene/resources/line_shape_2d.h"
+#include "scene/resources/ray_shape_2d.h"
 #include "scene/resources/rectangle_shape_2d.h"
 #include "scene/resources/segment_shape_2d.h"
 

+ 1 - 0
scene/register_scene_types.cpp

@@ -154,6 +154,7 @@
 #include "scene/resources/physics_material.h"
 #include "scene/resources/polygon_path_finder.h"
 #include "scene/resources/primitive_meshes.h"
+#include "scene/resources/ray_shape_2d.h"
 #include "scene/resources/ray_shape_3d.h"
 #include "scene/resources/rectangle_shape_2d.h"
 #include "scene/resources/resource_format_text.h"

+ 105 - 0
scene/resources/ray_shape_2d.cpp

@@ -0,0 +1,105 @@
+/*************************************************************************/
+/*  ray_shape_2d.cpp                                                     */
+/*************************************************************************/
+/*                       This file is part of:                           */
+/*                           GODOT ENGINE                                */
+/*                      https://godotengine.org                          */
+/*************************************************************************/
+/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur.                 */
+/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md).   */
+/*                                                                       */
+/* Permission is hereby granted, free of charge, to any person obtaining */
+/* a copy of this software and associated documentation files (the       */
+/* "Software"), to deal in the Software without restriction, including   */
+/* without limitation the rights to use, copy, modify, merge, publish,   */
+/* distribute, sublicense, and/or sell copies of the Software, and to    */
+/* permit persons to whom the Software is furnished to do so, subject to */
+/* the following conditions:                                             */
+/*                                                                       */
+/* The above copyright notice and this permission notice shall be        */
+/* included in all copies or substantial portions of the Software.       */
+/*                                                                       */
+/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,       */
+/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF    */
+/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
+/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY  */
+/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,  */
+/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE     */
+/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.                */
+/*************************************************************************/
+
+#include "ray_shape_2d.h"
+
+#include "servers/physics_server_2d.h"
+#include "servers/rendering_server.h"
+
+void RayShape2D::_update_shape() {
+	Dictionary d;
+	d["length"] = length;
+	d["slips_on_slope"] = slips_on_slope;
+	PhysicsServer2D::get_singleton()->shape_set_data(get_rid(), d);
+	emit_changed();
+}
+
+void RayShape2D::draw(const RID &p_to_rid, const Color &p_color) {
+	Vector2 tip = Vector2(0, get_length());
+	RS::get_singleton()->canvas_item_add_line(p_to_rid, Vector2(), tip, p_color, 3);
+	Vector<Vector2> pts;
+	float tsize = 4;
+	pts.push_back(tip + Vector2(0, tsize));
+	pts.push_back(tip + Vector2(Math_SQRT12 * tsize, 0));
+	pts.push_back(tip + Vector2(-Math_SQRT12 * tsize, 0));
+	Vector<Color> cols;
+	for (int i = 0; i < 3; i++) {
+		cols.push_back(p_color);
+	}
+	RS::get_singleton()->canvas_item_add_primitive(p_to_rid, pts, cols, Vector<Point2>(), RID());
+}
+
+Rect2 RayShape2D::get_rect() const {
+	Rect2 rect;
+	rect.position = Vector2();
+	rect.expand_to(Vector2(0, length));
+	rect = rect.grow(Math_SQRT12 * 4);
+	return rect;
+}
+
+real_t RayShape2D::get_enclosing_radius() const {
+	return length;
+}
+
+void RayShape2D::_bind_methods() {
+	ClassDB::bind_method(D_METHOD("set_length", "length"), &RayShape2D::set_length);
+	ClassDB::bind_method(D_METHOD("get_length"), &RayShape2D::get_length);
+
+	ClassDB::bind_method(D_METHOD("set_slips_on_slope", "active"), &RayShape2D::set_slips_on_slope);
+	ClassDB::bind_method(D_METHOD("get_slips_on_slope"), &RayShape2D::get_slips_on_slope);
+
+	ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "length"), "set_length", "get_length");
+	ADD_PROPERTY(PropertyInfo(Variant::BOOL, "slips_on_slope"), "set_slips_on_slope", "get_slips_on_slope");
+}
+
+void RayShape2D::set_length(real_t p_length) {
+	length = p_length;
+	_update_shape();
+}
+
+real_t RayShape2D::get_length() const {
+	return length;
+}
+
+void RayShape2D::set_slips_on_slope(bool p_active) {
+	slips_on_slope = p_active;
+	_update_shape();
+}
+
+bool RayShape2D::get_slips_on_slope() const {
+	return slips_on_slope;
+}
+
+RayShape2D::RayShape2D() :
+		Shape2D(PhysicsServer2D::get_singleton()->ray_shape_create()) {
+	length = 20;
+	slips_on_slope = false;
+	_update_shape();
+}

+ 61 - 0
scene/resources/ray_shape_2d.h

@@ -0,0 +1,61 @@
+/*************************************************************************/
+/*  ray_shape_2d.h                                                       */
+/*************************************************************************/
+/*                       This file is part of:                           */
+/*                           GODOT ENGINE                                */
+/*                      https://godotengine.org                          */
+/*************************************************************************/
+/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur.                 */
+/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md).   */
+/*                                                                       */
+/* Permission is hereby granted, free of charge, to any person obtaining */
+/* a copy of this software and associated documentation files (the       */
+/* "Software"), to deal in the Software without restriction, including   */
+/* without limitation the rights to use, copy, modify, merge, publish,   */
+/* distribute, sublicense, and/or sell copies of the Software, and to    */
+/* permit persons to whom the Software is furnished to do so, subject to */
+/* the following conditions:                                             */
+/*                                                                       */
+/* The above copyright notice and this permission notice shall be        */
+/* included in all copies or substantial portions of the Software.       */
+/*                                                                       */
+/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,       */
+/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF    */
+/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
+/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY  */
+/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,  */
+/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE     */
+/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.                */
+/*************************************************************************/
+
+#ifndef RAY_SHAPE_2D_H
+#define RAY_SHAPE_2D_H
+
+#include "scene/resources/shape_2d.h"
+
+class RayShape2D : public Shape2D {
+	GDCLASS(RayShape2D, Shape2D);
+
+	real_t length;
+	bool slips_on_slope;
+
+	void _update_shape();
+
+protected:
+	static void _bind_methods();
+
+public:
+	void set_length(real_t p_length);
+	real_t get_length() const;
+
+	void set_slips_on_slope(bool p_active);
+	bool get_slips_on_slope() const;
+
+	virtual void draw(const RID &p_to_rid, const Color &p_color);
+	virtual Rect2 get_rect() const;
+	virtual real_t get_enclosing_radius() const;
+
+	RayShape2D();
+};
+
+#endif // RAY_SHAPE_2D_H

+ 0 - 74
scene/resources/segment_shape_2d.cpp

@@ -98,77 +98,3 @@ SegmentShape2D::SegmentShape2D() :
 	b = Vector2(0, 10);
 	_update_shape();
 }
-
-////////////////////////////////////////////////////////////
-
-void RayShape2D::_update_shape() {
-	Dictionary d;
-	d["length"] = length;
-	d["slips_on_slope"] = slips_on_slope;
-	PhysicsServer2D::get_singleton()->shape_set_data(get_rid(), d);
-	emit_changed();
-}
-
-void RayShape2D::draw(const RID &p_to_rid, const Color &p_color) {
-	Vector2 tip = Vector2(0, get_length());
-	RS::get_singleton()->canvas_item_add_line(p_to_rid, Vector2(), tip, p_color, 3);
-	Vector<Vector2> pts;
-	float tsize = 4;
-	pts.push_back(tip + Vector2(0, tsize));
-	pts.push_back(tip + Vector2(Math_SQRT12 * tsize, 0));
-	pts.push_back(tip + Vector2(-Math_SQRT12 * tsize, 0));
-	Vector<Color> cols;
-	for (int i = 0; i < 3; i++) {
-		cols.push_back(p_color);
-	}
-
-	RS::get_singleton()->canvas_item_add_primitive(p_to_rid, pts, cols, Vector<Point2>(), RID());
-}
-
-Rect2 RayShape2D::get_rect() const {
-	Rect2 rect;
-	rect.position = Vector2();
-	rect.expand_to(Vector2(0, length));
-	rect = rect.grow(Math_SQRT12 * 4);
-	return rect;
-}
-
-real_t RayShape2D::get_enclosing_radius() const {
-	return length;
-}
-
-void RayShape2D::_bind_methods() {
-	ClassDB::bind_method(D_METHOD("set_length", "length"), &RayShape2D::set_length);
-	ClassDB::bind_method(D_METHOD("get_length"), &RayShape2D::get_length);
-
-	ClassDB::bind_method(D_METHOD("set_slips_on_slope", "active"), &RayShape2D::set_slips_on_slope);
-	ClassDB::bind_method(D_METHOD("get_slips_on_slope"), &RayShape2D::get_slips_on_slope);
-
-	ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "length"), "set_length", "get_length");
-	ADD_PROPERTY(PropertyInfo(Variant::BOOL, "slips_on_slope"), "set_slips_on_slope", "get_slips_on_slope");
-}
-
-void RayShape2D::set_length(real_t p_length) {
-	length = p_length;
-	_update_shape();
-}
-
-real_t RayShape2D::get_length() const {
-	return length;
-}
-
-void RayShape2D::set_slips_on_slope(bool p_active) {
-	slips_on_slope = p_active;
-	_update_shape();
-}
-
-bool RayShape2D::get_slips_on_slope() const {
-	return slips_on_slope;
-}
-
-RayShape2D::RayShape2D() :
-		Shape2D(PhysicsServer2D::get_singleton()->ray_shape_create()) {
-	length = 20;
-	slips_on_slope = false;
-	_update_shape();
-}

+ 0 - 25
scene/resources/segment_shape_2d.h

@@ -60,29 +60,4 @@ public:
 	SegmentShape2D();
 };
 
-class RayShape2D : public Shape2D {
-	GDCLASS(RayShape2D, Shape2D);
-
-	real_t length;
-	bool slips_on_slope;
-
-	void _update_shape();
-
-protected:
-	static void _bind_methods();
-
-public:
-	void set_length(real_t p_length);
-	real_t get_length() const;
-
-	void set_slips_on_slope(bool p_active);
-	bool get_slips_on_slope() const;
-
-	virtual void draw(const RID &p_to_rid, const Color &p_color);
-	virtual Rect2 get_rect() const;
-	virtual real_t get_enclosing_radius() const;
-
-	RayShape2D();
-};
-
 #endif // SEGMENT_SHAPE_2D_H