mirror of
https://github.com/godotengine/godot.git
synced 2026-01-03 18:11:19 +03:00
3D Physics Rework, Other Stuff
-=-=-=-=-=-=-=-=-=-=-=-=-=-
3D Physics:
-Fixed "Bounce" parameter in 3D
-Fixed bug affecting Area (sometims it would not detect properly)
-Vehicle Body has seen heavy work
-Added Query API for doing space queries in 3D. Needs some docs though.
-Added JOINTS! Adapted Bullet Joints: and created easy gizmos for setting them up:
-PinJoint
-HingeJoint (with motor)
-SliderJoint
-ConeTwistJoint
-Generic6DOFJoint
-Added OBJECT PICKING! based on the new query API. Any physics object now (Area or Body) has the following signals and virtual functions:
-input_event (mouse or multitouch input over the body)
-mouse_enter (mouse entered the body area)
-mouse_exit (mouse exited body area)
For Area it needs to be activated manually, as it isn't by default (ray goes thru).
Other:
-Begun working on Windows 8 (RT) port. Compiles but does not work yet.
-Added TheoraPlayer library for improved to-texture and portable video support.
-Fixed a few bugs in the renderer, collada importer, collada exporter, etc.
This commit is contained in:
@@ -1286,16 +1286,16 @@ void Object::get_signal_connection_list(const StringName& p_signal,List<Connecti
|
||||
}
|
||||
|
||||
|
||||
void Object::connect(const StringName& p_signal, Object *p_to_object, const StringName& p_to_method,const Vector<Variant>& p_binds,uint32_t p_flags) {
|
||||
Error Object::connect(const StringName& p_signal, Object *p_to_object, const StringName& p_to_method,const Vector<Variant>& p_binds,uint32_t p_flags) {
|
||||
|
||||
ERR_FAIL_NULL(p_to_object);
|
||||
ERR_FAIL_NULL_V(p_to_object,ERR_INVALID_PARAMETER);
|
||||
|
||||
Signal *s = signal_map.getptr(p_signal);
|
||||
if (!s) {
|
||||
bool signal_is_valid = ObjectTypeDB::has_signal(get_type_name(),p_signal);
|
||||
if (!signal_is_valid) {
|
||||
ERR_EXPLAIN("Attempt to connect to unexisting signal: "+p_signal);
|
||||
ERR_FAIL_COND(!signal_is_valid);
|
||||
ERR_FAIL_COND_V(!signal_is_valid,ERR_INVALID_PARAMETER);
|
||||
}
|
||||
signal_map[p_signal]=Signal();
|
||||
s=&signal_map[p_signal];
|
||||
@@ -1304,7 +1304,7 @@ void Object::connect(const StringName& p_signal, Object *p_to_object, const Stri
|
||||
Signal::Target target(p_to_object->get_instance_ID(),p_to_method);
|
||||
if (s->slot_map.has(target)) {
|
||||
ERR_EXPLAIN("Signal '"+p_signal+"'' already connected to given method '"+p_to_method+"' in that object.");
|
||||
ERR_FAIL_COND(s->slot_map.has(target));
|
||||
ERR_FAIL_COND_V(s->slot_map.has(target),ERR_INVALID_PARAMETER);
|
||||
}
|
||||
|
||||
Signal::Slot slot;
|
||||
@@ -1319,6 +1319,8 @@ void Object::connect(const StringName& p_signal, Object *p_to_object, const Stri
|
||||
slot.conn=conn;
|
||||
slot.cE=p_to_object->connections.push_back(conn);
|
||||
s->slot_map[target]=slot;
|
||||
|
||||
return OK;
|
||||
}
|
||||
|
||||
bool Object::is_connected(const StringName& p_signal, Object *p_to_object, const StringName& p_to_method) const {
|
||||
|
||||
Reference in New Issue
Block a user