Bläddra i källkod

setSpin method for 3d physics

Ivan Safrin 13 år sedan
förälder
incheckning
ecafd14e30

+ 2 - 0
Modules/Contents/3DPhysics/Include/PolyPhysicsScene.h

@@ -118,6 +118,8 @@ namespace Polycode {
 		PhysicsGenericConstraint *createGenericConstraint(SceneEntity *entity);
 		PhysicsGenericConstraint *createGenericConstraint(SceneEntity *entity);
 				
 				
 		void setVelocity(SceneEntity *entity, Vector3 velocity);
 		void setVelocity(SceneEntity *entity, Vector3 velocity);
+		void setSpin(SceneEntity *entity, Vector3 spin);
+				
 		void warpEntity(SceneEntity *entity, Vector3 position, bool resetRotation = false);
 		void warpEntity(SceneEntity *entity, Vector3 position, bool resetRotation = false);
 		
 		
 		void applyImpulse(SceneEntity *entity, Vector3 force, Vector3 point);
 		void applyImpulse(SceneEntity *entity, Vector3 force, Vector3 point);

+ 2 - 0
Modules/Contents/3DPhysics/Include/PolyPhysicsSceneEntity.h

@@ -50,6 +50,8 @@ namespace Polycode {
 		void setFriction(Number friction);		
 		void setFriction(Number friction);		
 		int getType() { return type; }	
 		int getType() { return type; }	
 		
 		
+		void setSpin(Vector3 spin);
+		
 		void setMass(Number mass);
 		void setMass(Number mass);
 		
 		
 			void setVelocity(Vector3 velocity);
 			void setVelocity(Vector3 velocity);

+ 8 - 0
Modules/Contents/3DPhysics/Source/PolyPhysicsScene.cpp

@@ -166,6 +166,14 @@ void PhysicsScene::setVelocity(SceneEntity *entity, Vector3 velocity) {
 	}
 	}
 }
 }
 
 
+void PhysicsScene::setSpin(SceneEntity *entity, Vector3 spin) {
+	PhysicsSceneEntity *physicsEntity = getPhysicsEntityBySceneEntity(entity);
+	if(physicsEntity) {
+		physicsEntity->setSpin(spin);
+	}
+}
+
+
 void PhysicsScene::warpEntity(SceneEntity *entity, Vector3 position, bool resetRotation) {
 void PhysicsScene::warpEntity(SceneEntity *entity, Vector3 position, bool resetRotation) {
 	PhysicsSceneEntity *physicsEntity = getPhysicsEntityBySceneEntity(entity);
 	PhysicsSceneEntity *physicsEntity = getPhysicsEntityBySceneEntity(entity);
 	if(physicsEntity) {
 	if(physicsEntity) {

+ 5 - 0
Modules/Contents/3DPhysics/Source/PolyPhysicsSceneEntity.cpp

@@ -248,6 +248,11 @@ void PhysicsSceneEntity::setVelocity(Vector3 velocity) {
 //	rigidBody->applyForce(btVector3(velocity.x, velocity.y, velocity.z), btVector3(0,0,0));
 //	rigidBody->applyForce(btVector3(velocity.x, velocity.y, velocity.z), btVector3(0,0,0));
 }
 }
 
 
+void PhysicsSceneEntity::setSpin(Vector3 spin) {
+	btVector3 angularVel = btVector3(spin.x, spin.y, spin.z);	
+	rigidBody->setAngularVelocity(angularVel);
+}
+
 void PhysicsSceneEntity::applyImpulse(Vector3 direction, Vector3 point) {
 void PhysicsSceneEntity::applyImpulse(Vector3 direction, Vector3 point) {
 	btVector3 imp = btVector3(direction.x, direction.y, direction.z);
 	btVector3 imp = btVector3(direction.x, direction.y, direction.z);
 	btVector3 pos = btVector3(point.x, point.y, point.z);
 	btVector3 pos = btVector3(point.x, point.y, point.z);