webvr js meetup initial commit
This commit is contained in:
442
node_modules/three/examples/js/loaders/sea3d/physics/SEA3DRigidBody.js
generated
vendored
Normal file
442
node_modules/three/examples/js/loaders/sea3d/physics/SEA3DRigidBody.js
generated
vendored
Normal file
@@ -0,0 +1,442 @@
|
||||
/**
|
||||
* SEA3D - Rigid Body
|
||||
* @author Sunag / http://www.sunag.com.br/
|
||||
*/
|
||||
|
||||
'use strict';
|
||||
|
||||
//
|
||||
// Sphere
|
||||
//
|
||||
|
||||
SEA3D.Sphere = function ( name, data, sea3d ) {
|
||||
|
||||
this.name = name;
|
||||
this.data = data;
|
||||
this.sea3d = sea3d;
|
||||
|
||||
this.radius = data.readFloat();
|
||||
|
||||
};
|
||||
|
||||
SEA3D.Sphere.prototype.type = "sph";
|
||||
|
||||
//
|
||||
// Box
|
||||
//
|
||||
|
||||
SEA3D.Box = function ( name, data, sea3d ) {
|
||||
|
||||
this.name = name;
|
||||
this.data = data;
|
||||
this.sea3d = sea3d;
|
||||
|
||||
this.width = data.readFloat();
|
||||
this.height = data.readFloat();
|
||||
this.depth = data.readFloat();
|
||||
|
||||
};
|
||||
|
||||
SEA3D.Box.prototype.type = "box";
|
||||
|
||||
//
|
||||
// Cone
|
||||
//
|
||||
|
||||
SEA3D.Cone = function ( name, data, sea3d ) {
|
||||
|
||||
this.name = name;
|
||||
this.data = data;
|
||||
this.sea3d = sea3d;
|
||||
|
||||
this.radius = data.readFloat();
|
||||
this.height = data.readFloat();
|
||||
|
||||
};
|
||||
|
||||
SEA3D.Cone.prototype.type = "cone";
|
||||
|
||||
//
|
||||
// Capsule
|
||||
//
|
||||
|
||||
SEA3D.Capsule = function ( name, data, sea3d ) {
|
||||
|
||||
this.name = name;
|
||||
this.data = data;
|
||||
this.sea3d = sea3d;
|
||||
|
||||
this.radius = data.readFloat();
|
||||
this.height = data.readFloat();
|
||||
|
||||
};
|
||||
|
||||
SEA3D.Capsule.prototype.type = "cap";
|
||||
|
||||
//
|
||||
// Cylinder
|
||||
//
|
||||
|
||||
SEA3D.Cylinder = function ( name, data, sea3d ) {
|
||||
|
||||
this.name = name;
|
||||
this.data = data;
|
||||
this.sea3d = sea3d;
|
||||
|
||||
this.radius = data.readFloat();
|
||||
this.height = data.readFloat();
|
||||
|
||||
};
|
||||
|
||||
SEA3D.Cylinder.prototype.type = "cyl";
|
||||
|
||||
//
|
||||
// Convex Geometry
|
||||
//
|
||||
|
||||
SEA3D.ConvexGeometry = function ( name, data, sea3d ) {
|
||||
|
||||
this.name = name;
|
||||
this.data = data;
|
||||
this.sea3d = sea3d;
|
||||
|
||||
this.geometry = sea3d.getObject( data.readUInt() );
|
||||
this.subGeometryIndex = data.readUByte();
|
||||
|
||||
};
|
||||
|
||||
SEA3D.ConvexGeometry.prototype.type = "gs";
|
||||
|
||||
//
|
||||
// Triangle Geometry
|
||||
//
|
||||
|
||||
SEA3D.TriangleGeometry = function ( name, data, sea3d ) {
|
||||
|
||||
this.name = name;
|
||||
this.data = data;
|
||||
this.sea3d = sea3d;
|
||||
|
||||
this.geometry = sea3d.getObject( data.readUInt() );
|
||||
this.subGeometryIndex = data.readUByte();
|
||||
|
||||
};
|
||||
|
||||
SEA3D.TriangleGeometry.prototype.type = "sgs";
|
||||
|
||||
//
|
||||
// Compound
|
||||
//
|
||||
|
||||
SEA3D.Compound = function ( name, data, sea3d ) {
|
||||
|
||||
this.name = name;
|
||||
this.data = data;
|
||||
this.sea3d = sea3d;
|
||||
|
||||
this.compounds = [];
|
||||
|
||||
var count = data.readUByte();
|
||||
|
||||
for ( var i = 0; i < count; i ++ ) {
|
||||
|
||||
this.compounds.push( {
|
||||
shape: sea3d.getObject( data.readUInt() ),
|
||||
transform: data.readMatrix()
|
||||
} );
|
||||
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
SEA3D.Compound.prototype.type = "cmps";
|
||||
|
||||
//
|
||||
// Physics
|
||||
//
|
||||
|
||||
SEA3D.Physics = function ( name, data, sea3d ) {
|
||||
|
||||
this.name = name;
|
||||
this.data = data;
|
||||
this.sea3d = sea3d;
|
||||
|
||||
this.attrib = data.readUShort();
|
||||
|
||||
this.shape = sea3d.getObject( data.readUInt() );
|
||||
|
||||
if ( this.attrib & 1 ) this.target = sea3d.getObject( data.readUInt() );
|
||||
else this.transform = data.readMatrix();
|
||||
|
||||
if ( this.attrib & 2 ) this.offset = data.readMatrix();
|
||||
|
||||
if ( this.attrib & 4 ) this.scripts = data.readScriptList( sea3d );
|
||||
|
||||
if ( this.attrib & 16 ) this.attributes = sea3d.getObject( data.readUInt() );
|
||||
|
||||
};
|
||||
|
||||
SEA3D.Physics.prototype.readTag = function ( kind, data, size ) {
|
||||
|
||||
};
|
||||
|
||||
//
|
||||
// Rigidy Body Base
|
||||
//
|
||||
|
||||
SEA3D.RigidBodyBase = function ( name, data, sea3d ) {
|
||||
|
||||
SEA3D.Physics.call( this, name, data, sea3d );
|
||||
|
||||
if ( this.attrib & 32 ) {
|
||||
|
||||
this.linearDamping = data.readFloat();
|
||||
this.angularDamping = data.readFloat();
|
||||
|
||||
} else {
|
||||
|
||||
this.linearDamping = 0;
|
||||
this.angularDamping = 0;
|
||||
|
||||
}
|
||||
|
||||
this.mass = data.readFloat();
|
||||
this.friction = data.readFloat();
|
||||
this.restitution = data.readFloat();
|
||||
|
||||
};
|
||||
|
||||
SEA3D.RigidBodyBase.prototype = Object.create( SEA3D.Physics.prototype );
|
||||
SEA3D.RigidBodyBase.prototype.constructor = SEA3D.RigidBodyBase;
|
||||
|
||||
//
|
||||
// Rigidy Body
|
||||
//
|
||||
|
||||
SEA3D.RigidBody = function ( name, data, sea3d ) {
|
||||
|
||||
SEA3D.RigidBodyBase.call( this, name, data, sea3d );
|
||||
|
||||
data.readTags( this.readTag.bind( this ) );
|
||||
|
||||
};
|
||||
|
||||
SEA3D.RigidBody.prototype = Object.create( SEA3D.RigidBodyBase.prototype );
|
||||
SEA3D.RigidBody.prototype.constructor = SEA3D.RigidBody;
|
||||
|
||||
SEA3D.RigidBody.prototype.type = "rb";
|
||||
|
||||
//
|
||||
// Car Controller
|
||||
//
|
||||
|
||||
SEA3D.CarController = function ( name, data, sea3d ) {
|
||||
|
||||
SEA3D.RigidBodyBase.call( this, name, data, sea3d );
|
||||
|
||||
this.suspensionStiffness = data.readFloat();
|
||||
this.suspensionCompression = data.readFloat();
|
||||
this.suspensionDamping = data.readFloat();
|
||||
this.maxSuspensionTravelCm = data.readFloat();
|
||||
this.frictionSlip = data.readFloat();
|
||||
this.maxSuspensionForce = data.readFloat();
|
||||
|
||||
this.dampingCompression = data.readFloat();
|
||||
this.dampingRelaxation = data.readFloat();
|
||||
|
||||
var count = data.readUByte();
|
||||
|
||||
this.wheel = [];
|
||||
|
||||
for ( var i = 0; i < count; i ++ ) {
|
||||
|
||||
this.wheel[ i ] = new SEA3D.CarController.Wheel( data, sea3d );
|
||||
|
||||
}
|
||||
|
||||
data.readTags( this.readTag.bind( this ) );
|
||||
|
||||
};
|
||||
|
||||
SEA3D.CarController.Wheel = function ( data, sea3d ) {
|
||||
|
||||
this.data = data;
|
||||
this.sea3d = sea3d;
|
||||
|
||||
this.attrib = data.readUShort();
|
||||
|
||||
this.isFront = ( this.attrib & 1 ) != 0;
|
||||
|
||||
if ( this.attrib & 2 ) {
|
||||
|
||||
this.target = sea3d.getObject( data.readUInt() );
|
||||
|
||||
}
|
||||
|
||||
if ( this.attrib & 4 ) {
|
||||
|
||||
this.offset = data.readMatrix();
|
||||
|
||||
}
|
||||
|
||||
this.pos = data.readVector3();
|
||||
this.dir = data.readVector3();
|
||||
this.axle = data.readVector3();
|
||||
|
||||
this.radius = data.readFloat();
|
||||
this.suspensionRestLength = data.readFloat();
|
||||
|
||||
};
|
||||
|
||||
SEA3D.CarController.prototype = Object.create( SEA3D.RigidBodyBase.prototype );
|
||||
SEA3D.CarController.prototype.constructor = SEA3D.CarController;
|
||||
|
||||
SEA3D.CarController.prototype.type = "carc";
|
||||
|
||||
//
|
||||
// Constraints
|
||||
//
|
||||
|
||||
SEA3D.Constraints = function ( name, data, sea3d ) {
|
||||
|
||||
this.name = name;
|
||||
this.data = data;
|
||||
this.sea3d = sea3d;
|
||||
|
||||
this.attrib = data.readUShort();
|
||||
|
||||
this.disableCollisionsBetweenBodies = this.attrib & 1 != 0;
|
||||
|
||||
this.targetA = sea3d.getObject( data.readUInt() );
|
||||
this.pointA = data.readVector3();
|
||||
|
||||
if ( this.attrib & 2 ) {
|
||||
|
||||
this.targetB = sea3d.getObject( data.readUInt() );
|
||||
this.pointB = data.readVector3();
|
||||
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
//
|
||||
// P2P Constraint
|
||||
//
|
||||
|
||||
SEA3D.P2PConstraint = function ( name, data, sea3d ) {
|
||||
|
||||
this.name = name;
|
||||
this.data = data;
|
||||
this.sea3d = sea3d;
|
||||
|
||||
SEA3D.Constraints.call( this, name, data, sea3d );
|
||||
|
||||
};
|
||||
|
||||
SEA3D.P2PConstraint.prototype = Object.create( SEA3D.Constraints.prototype );
|
||||
SEA3D.P2PConstraint.prototype.constructor = SEA3D.P2PConstraint;
|
||||
|
||||
SEA3D.P2PConstraint.prototype.type = "p2pc";
|
||||
|
||||
//
|
||||
// Hinge Constraint
|
||||
//
|
||||
|
||||
SEA3D.HingeConstraint = function ( name, data, sea3d ) {
|
||||
|
||||
SEA3D.Constraints.call( this, name, data, sea3d );
|
||||
|
||||
this.axisA = data.readVector3();
|
||||
|
||||
if ( this.attrib & 1 ) {
|
||||
|
||||
this.axisB = data.readVector3();
|
||||
|
||||
}
|
||||
|
||||
if ( this.attrib & 4 ) {
|
||||
|
||||
this.limit = {
|
||||
low: data.readFloat(),
|
||||
high: data.readFloat(),
|
||||
softness: data.readFloat(),
|
||||
biasFactor: data.readFloat(),
|
||||
relaxationFactor: data.readFloat()
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
if ( this.attrib & 8 ) {
|
||||
|
||||
this.angularMotor = {
|
||||
velocity: data.readFloat(),
|
||||
impulse: data.readFloat()
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
SEA3D.HingeConstraint.prototype = Object.create( SEA3D.Constraints.prototype );
|
||||
SEA3D.HingeConstraint.prototype.constructor = SEA3D.HingeConstraint;
|
||||
|
||||
SEA3D.HingeConstraint.prototype.type = "hnec";
|
||||
|
||||
//
|
||||
// Cone Twist Constraint
|
||||
//
|
||||
|
||||
SEA3D.ConeTwistConstraint = function ( name, data, sea3d ) {
|
||||
|
||||
SEA3D.Constraints.call( this, name, data, sea3d );
|
||||
|
||||
this.axisA = data.readVector3();
|
||||
|
||||
if ( this.attrib & 1 ) {
|
||||
|
||||
this.axisB = data.readVector3();
|
||||
|
||||
}
|
||||
|
||||
if ( this.attrib & 4 ) {
|
||||
|
||||
this.limit = {
|
||||
swingSpan1: data.readFloat(),
|
||||
swingSpan2: data.readFloat(),
|
||||
twistSpan: data.readFloat(),
|
||||
softness: data.readFloat(),
|
||||
biasFactor: data.readFloat(),
|
||||
relaxationFactor: data.readFloat()
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
SEA3D.ConeTwistConstraint.prototype = Object.create( SEA3D.Constraints.prototype );
|
||||
SEA3D.ConeTwistConstraint.prototype.constructor = SEA3D.ConeTwistConstraint;
|
||||
|
||||
SEA3D.ConeTwistConstraint.prototype.type = "ctwc";
|
||||
|
||||
//
|
||||
// Extension
|
||||
//
|
||||
|
||||
SEA3D.File.setExtension( function () {
|
||||
|
||||
// PHYSICS
|
||||
this.addClass( SEA3D.Sphere );
|
||||
this.addClass( SEA3D.Box );
|
||||
this.addClass( SEA3D.Cone );
|
||||
this.addClass( SEA3D.Capsule );
|
||||
this.addClass( SEA3D.Cylinder );
|
||||
this.addClass( SEA3D.ConvexGeometry );
|
||||
this.addClass( SEA3D.TriangleGeometry );
|
||||
this.addClass( SEA3D.Compound );
|
||||
this.addClass( SEA3D.RigidBody );
|
||||
this.addClass( SEA3D.P2PConstraint );
|
||||
this.addClass( SEA3D.HingeConstraint );
|
||||
this.addClass( SEA3D.ConeTwistConstraint );
|
||||
this.addClass( SEA3D.CarController );
|
||||
|
||||
} );
|
||||
Reference in New Issue
Block a user