diff options
Diffstat (limited to 'scene/3d')
-rw-r--r-- | scene/3d/baked_light.cpp | 7 | ||||
-rw-r--r-- | scene/3d/baked_light.h | 15 | ||||
-rw-r--r-- | scene/3d/physics_body.cpp | 16 | ||||
-rw-r--r-- | scene/3d/physics_body.h | 15 | ||||
-rw-r--r-- | scene/3d/visual_instance.h | 1 |
5 files changed, 54 insertions, 0 deletions
diff --git a/scene/3d/baked_light.cpp b/scene/3d/baked_light.cpp new file mode 100644 index 0000000000..55832b7c18 --- /dev/null +++ b/scene/3d/baked_light.cpp @@ -0,0 +1,7 @@ +#include "baked_light.h" +#include "mesh_instance.h" + +BakedLight::BakedLight() { + + +} diff --git a/scene/3d/baked_light.h b/scene/3d/baked_light.h new file mode 100644 index 0000000000..a6f997afe9 --- /dev/null +++ b/scene/3d/baked_light.h @@ -0,0 +1,15 @@ +#ifndef BAKED_LIGHT_H +#define BAKED_LIGHT_H + +#include "scene/3d/spatial.h" +class BakedLightBaker; + + +class BakedLight : public Spatial { + OBJ_TYPE(BakedLight,Spatial); + +public: + BakedLight(); +}; + +#endif // BAKED_LIGHT_H diff --git a/scene/3d/physics_body.cpp b/scene/3d/physics_body.cpp index 0733a9196e..2a1a5972a9 100644 --- a/scene/3d/physics_body.cpp +++ b/scene/3d/physics_body.cpp @@ -632,6 +632,16 @@ bool RigidBody::is_contact_monitor_enabled() const { return contact_monitor!=NULL; } +void RigidBody::set_axis_lock(AxisLock p_lock) { + + axis_lock=p_lock; + PhysicsServer::get_singleton()->body_set_axis_lock(get_rid(),PhysicsServer::BodyAxisLock(axis_lock)); +} + +RigidBody::AxisLock RigidBody::get_axis_lock() const { + + return axis_lock; +} void RigidBody::_bind_methods() { @@ -682,6 +692,9 @@ void RigidBody::_bind_methods() { ObjectTypeDB::bind_method(_MD("_body_enter_scene"),&RigidBody::_body_enter_scene); ObjectTypeDB::bind_method(_MD("_body_exit_scene"),&RigidBody::_body_exit_scene); + ObjectTypeDB::bind_method(_MD("set_axis_lock","axis_lock"),&RigidBody::set_axis_lock); + ObjectTypeDB::bind_method(_MD("get_axis_lock"),&RigidBody::get_axis_lock); + BIND_VMETHOD(MethodInfo("_integrate_forces",PropertyInfo(Variant::OBJECT,"state:PhysicsDirectBodyState"))); ADD_PROPERTY( PropertyInfo(Variant::INT,"mode",PROPERTY_HINT_ENUM,"Rigid,Static,Character,Kinematic"),_SCS("set_mode"),_SCS("get_mode")); @@ -695,6 +708,7 @@ void RigidBody::_bind_methods() { ADD_PROPERTY( PropertyInfo(Variant::BOOL,"contact_monitor"),_SCS("set_contact_monitor"),_SCS("is_contact_monitor_enabled")); ADD_PROPERTY( PropertyInfo(Variant::BOOL,"active"),_SCS("set_active"),_SCS("is_active")); ADD_PROPERTY( PropertyInfo(Variant::BOOL,"can_sleep"),_SCS("set_can_sleep"),_SCS("is_able_to_sleep")); + ADD_PROPERTY( PropertyInfo(Variant::INT,"axis_lock",PROPERTY_HINT_ENUM,"Disabled,Lock X,Lock Y,Lock Z"),_SCS("set_axis_lock"),_SCS("get_axis_lock")); ADD_PROPERTY( PropertyInfo(Variant::VECTOR3,"velocity/linear"),_SCS("set_linear_velocity"),_SCS("get_linear_velocity")); ADD_PROPERTY( PropertyInfo(Variant::VECTOR3,"velocity/angular"),_SCS("set_angular_velocity"),_SCS("get_angular_velocity")); @@ -727,6 +741,8 @@ RigidBody::RigidBody() : PhysicsBody(PhysicsServer::BODY_MODE_RIGID) { contact_monitor=NULL; can_sleep=true; + axis_lock = AXIS_LOCK_DISABLED; + PhysicsServer::get_singleton()->body_set_force_integration_callback(get_rid(),this,"_direct_state_changed"); } diff --git a/scene/3d/physics_body.h b/scene/3d/physics_body.h index a5faa9857b..6695ee719a 100644 --- a/scene/3d/physics_body.h +++ b/scene/3d/physics_body.h @@ -94,6 +94,14 @@ public: MODE_CHARACTER, MODE_KINEMATIC, }; + + enum AxisLock { + AXIS_LOCK_DISABLED, + AXIS_LOCK_X, + AXIS_LOCK_Y, + AXIS_LOCK_Z, + }; + private: bool can_sleep; @@ -109,6 +117,8 @@ private: bool active; bool ccd; + AxisLock axis_lock; + int max_contacts_reported; @@ -208,6 +218,10 @@ public: void set_use_continuous_collision_detection(bool p_enable); bool is_using_continuous_collision_detection() const; + void set_axis_lock(AxisLock p_lock); + AxisLock get_axis_lock() const; + + void apply_impulse(const Vector3& p_pos, const Vector3& p_impulse); RigidBody(); @@ -216,4 +230,5 @@ public: }; VARIANT_ENUM_CAST(RigidBody::Mode); +VARIANT_ENUM_CAST(RigidBody::AxisLock); #endif // PHYSICS_BODY__H diff --git a/scene/3d/visual_instance.h b/scene/3d/visual_instance.h index 4e652912c6..afb9ed70f8 100644 --- a/scene/3d/visual_instance.h +++ b/scene/3d/visual_instance.h @@ -91,6 +91,7 @@ public: FLAG_BILLBOARD_FIX_Y=VS::INSTANCE_FLAG_BILLBOARD_FIX_Y, FLAG_DEPH_SCALE=VS::INSTANCE_FLAG_DEPH_SCALE, FLAG_VISIBLE_IN_ALL_ROOMS=VS::INSTANCE_FLAG_VISIBLE_IN_ALL_ROOMS, + FLAG_USE_BAKED_LIGHT_VOLUME=VS::INSTANCE_FLAG_USE_BAKED_LIGHT_VOLUME, FLAG_MAX=VS::INSTANCE_FLAG_MAX, }; |