public class World
extends java.lang.Object
implements java.io.Serializable
Modifier and Type | Field and Description |
---|---|
static int |
FOGGING_DISABLED
No linear distance fogging will be used (default)
|
static int |
FOGGING_ENABLED
Linear distance fogging will be used.
|
Constructor and Description |
---|
World()
Creates a new "world".
|
Modifier and Type | Method and Description |
---|---|
int |
addObject(Object3D obj)
Adds an object to the World's object collection.
|
void |
addObjects(Object3D... objs)
Adds all objects from the given array to the world.
|
void |
addPolyline(Polyline line)
Adds a new Polyline to the world.
|
void |
buildAllObjects()
Calls build() for every object in the world.
|
float |
calcMinDistance(SimpleVector orig,
SimpleVector dir,
float ignoreIfLarger)
Returns the minimal distance to some polygon of the world's objects (have
to be colliders) from a particular position vector looking into a
specific direction.
|
java.lang.Object[] |
calcMinDistanceAndObject3D(SimpleVector orig,
SimpleVector dir,
float ignoreIfLarger)
Returns the minimal distance to some polygon of the world's objects (have
to be colliders) from a particular position vector looking into a
specific direction.
|
boolean |
checkCameraCollision(int mode,
float moveSpeed)
Moves the camera moveSpeed units from its current position and regarding
its current orientation into "mode" direction, if this is possible.
|
boolean |
checkCameraCollision(int mode,
float moveSpeed,
boolean slideMode)
Moves the camera moveSpeed units from its current position and regarding
its current orientation into "mode" direction, if this is possible.
|
boolean |
checkCameraCollision(int mode,
float moveSpeed,
float distance,
boolean slideMode)
Moves the camera moveSpeed units from its current position and regarding
its current orientation into "mode" direction, if this is possible.
|
boolean |
checkCameraCollision(SimpleVector direction,
float moveSpeed,
float distance,
boolean slideMode)
Moves the camera moveSpeed units from its current position into an
arbitrary direction, if this is possible.
|
boolean |
checkCameraCollisionEllipsoid(int mode,
SimpleVector ellipsoid,
float moveSpeed,
int recursionDepth)
Moves the camera moveSpeed units from its current position into an
arbitrary direction, if this is possible.
|
boolean |
checkCameraCollisionEllipsoid(SimpleVector direction,
SimpleVector ellipsoid,
float moveSpeed,
int recursionDepth)
Moves the camera moveSpeed units from its current position into an
arbitrary direction, if this is possible.
|
boolean |
checkCameraCollisionSpherical(int mode,
float radius,
float moveSpeed,
boolean slideMode)
Moves the camera moveSpeed units from its current position and regarding
its current orientation into "mode" direction, if this is possible.
|
boolean |
checkCameraCollisionSpherical(SimpleVector direction,
float radius,
float moveSpeed,
boolean slideMode)
Moves the camera moveSpeed units from its current position into an
arbitrary direction, if this is possible.
|
int |
checkCollision(SimpleVector org,
SimpleVector dr,
float step)
Checks if a collision between "something" and an object would take place
if this "something" would move step units from its position into a given
direction.
|
SimpleVector |
checkCollisionEllipsoid(SimpleVector org,
SimpleVector translation,
SimpleVector ellipsoid,
int recursionDepth)
Checks if a collision between "something" and an object would take place
if this "something" would move step units from its position into a given
direction.
|
SimpleVector |
checkCollisionSpherical(SimpleVector org,
SimpleVector translation,
float radius)
Checks if a collision between "something" and an object would take place
if this "something" would move step units from its position into a given
direction.
|
void |
compileAllObjects()
Compiles all objects in the world for better gpu processing.
|
boolean |
containsObject(Object3D obj)
Returns true, if an Object3D belongs to this world and false otherwise.
|
void |
dispose()
Disposes the world.
|
void |
draw(FrameBuffer buffer)
Draws the current scene that has been generated geometry wise by
renderScene().
|
void |
drawWireframe(FrameBuffer buffer,
RGBColor color,
int size,
boolean pointMode)
Draws the current scene as a single-colored wireframe.
|
int[] |
getAmbientLight()
Returns the ambient light's intensities in an int[]-array in r,g,b order.
|
float[] |
getBounds(boolean visibleOnly)
Returns the world space bounds of all (optional only the visible) objects
that belong to this world.
|
Camera |
getCamera()
Gets the current camera.
|
static java.lang.Thread |
getDefaultThread()
Returns the default thread or null if none has been set.
|
int |
getFogging()
Returns if fogging is being used or not.
|
long |
getFrameCounter()
Returns the number of frames rendered since startup.
|
GLSLShader |
getGlobalShader()
Returns the global shader or null if none has been set.
|
Object3D |
getObject(int id)
Returns the object with the given ID from the World's object collection.
|
Object3D |
getObjectByName(java.lang.String name)
Returns the object named "name" from the World's object collection.
|
java.util.Enumeration<Object3D> |
getObjects()
Returns an Enumeration of all user defined objects in this world.
|
int |
getSize()
Returns the number of user defined objects in this World.
|
void |
newCamera()
Resets the camera to origin looking along the z-axis.
|
void |
removeAll()
Removes all lights and objects from the world.
|
void |
removeAllLights()
Removes all lights from the world.
|
void |
removeAllObjects()
Removes all but the internal objects from the world.
|
void |
removeAllPolylines()
Removes all Polylines.
|
void |
removeObject(int id)
Removes the object with the specified ID from the World's object
collection.
|
void |
removeObject(Object3D obj)
Removes the given object from the World's object collection.
|
void |
removePolyline(Polyline line)
Removes a Polyline from a world.
|
void |
renderScene(FrameBuffer buffer)
Transforms and lights all the polygons.
|
void |
setAmbientLight(int r,
int g,
int b)
Sets the light intensity for the ambient light source.
|
void |
setCameraTo(Camera cam)
Sets the camera to another one.
|
void |
setClippingPlanes(float near,
float far)
Deprecated.
Use the equally named method in Camera instead
|
static void |
setDefaultThread(java.lang.Thread def)
jPCT's methods might be called from within different threads.
|
void |
setFogging(int fog)
Enables/Disables linear distance-fogging
|
void |
setFogParameters(float distance,
float red,
float green,
float blue)
Sets the parameters for the linear distance fog (if enabled)
|
void |
setFogParameters(float start,
float distance,
float red,
float green,
float blue)
Sets the parameters for the linear distance fog (if enabled).
|
void |
setGlobalShader(GLSLShader globalShader)
Sets a global shader.
|
void |
setObjectsVisibility(boolean visible)
Sets the visibility for all objects that belong to a world.
|
public static final int FOGGING_DISABLED
public static final int FOGGING_ENABLED
public World()
public void dispose()
public int getSize()
public Camera getCamera()
public void newCamera()
public void setCameraTo(Camera cam)
cam
- the camera to usepublic void setClippingPlanes(float near, float far)
near
- the near planefar
- the far planeConfig.farPlane
,
Config.nearPlane
,
Camera.setClippingPlanes(float, float)
public void removeObject(int id)
id
- the ID of the object to removepublic void removeObject(Object3D obj)
obj
- the object to removepublic Object3D getObject(int id)
id
- the ID of the objectpublic boolean containsObject(Object3D obj)
obj
- the object in questionpublic Object3D getObjectByName(java.lang.String name)
name
- the name of the objectpublic int addObject(Object3D obj)
obj
- the object to be addedObject3D.getID()
public void addObjects(Object3D... objs)
objs
- the objectspublic void setAmbientLight(int r, int g, int b)
r
- the red component (100 is default)g
- the red component (100 is default)b
- the red component (100 is default)public int[] getAmbientLight()
public void setFogging(int fog)
fog
- fogging enabled or notFOGGING_ENABLED
,
FOGGING_DISABLED
,
setFogParameters(float, float, float, float)
public int getFogging()
FOGGING_ENABLED
,
FOGGING_DISABLED
public void setFogParameters(float distance, float red, float green, float blue)
distance
- the distance in camera-space coordinates at which the fog
reaches its maximum density (150 is default, 1 is minimum)red
- the red component of the fog ([0..255], 0 is default)green
- the green component of the fog ([0..255], 0 is default)blue
- the blue component of the fog ([0..255], 0 is default)public void setFogParameters(float start, float distance, float red, float green, float blue)
start
- where the fog actually starts.distance
- the distance in camera-space coordinates at which the fog
reaches its maximum density (150 is default, 1 is minimum)red
- the red component of the fog ([0..255], 0 is default)green
- the green component of the fog ([0..255], 0 is default)blue
- the blue component of the fog ([0..255], 0 is default)public int checkCollision(SimpleVector org, SimpleVector dr, float step)
org
- the position vector of "something"dr
- the direction vector of "something" (a unit vector, if not
it'll be made one)step
- the length of the casted ray (a collision will only be
detected of it takes place within this range)Object3D.getID()
,
Object3D.NO_OBJECT
public SimpleVector checkCollisionSpherical(SimpleVector org, SimpleVector translation, float radius)
org
- the position vector of "something"translation
- that should be applied to "something" (Note that this method
just checks this translation...it doesn't apply it)radius
- the radius of the sphere (a collision will only be detected of
it takes place within this radius)public SimpleVector checkCollisionEllipsoid(SimpleVector org, SimpleVector translation, SimpleVector ellipsoid, int recursionDepth)
org
- the position vector of "something"translation
- that should be applied to "something" (Note that this method
just checks this translation...it doesn't apply it)ellipsoid
- the radius of the epplisoid in x,y and z directionrecursionDepth
- the max. recursion depth of the collision detection. A higher
value will improve the accuracy of the collision detection but
reduce performance. Reasonable values lie between 1 and 5.public boolean checkCameraCollision(int mode, float moveSpeed)
mode
- the direction (relative to its orientation)moveSpeed
- the number of units the camera should moveCamera.CAMERA_MOVEDOWN
,
Camera.CAMERA_MOVEUP
,
Camera.CAMERA_MOVEIN
,
Camera.CAMERA_MOVEOUT
,
Camera.CAMERA_MOVELEFT
,
Camera.CAMERA_MOVERIGHT
public boolean checkCameraCollision(int mode, float moveSpeed, boolean slideMode)
mode
- the direction (relative to its orientation)moveSpeed
- the number of units the camera should moveslideMode
- indicates if the camera should slide or just stand still in
case of collisionCamera.CAMERA_MOVEDOWN
,
Camera.CAMERA_MOVEUP
,
Camera.CAMERA_MOVEIN
,
Camera.CAMERA_MOVEOUT
,
Camera.CAMERA_MOVELEFT
,
Camera.CAMERA_MOVERIGHT
,
Camera.SLIDE
,
Camera.DONT_SLIDE
public boolean checkCameraCollision(int mode, float moveSpeed, float distance, boolean slideMode)
mode
- the direction (relative to its orientation)moveSpeed
- the number of units the camera should movedistance
- the maximum distance the position vector can have from the
polygon before a collision is detected.slideMode
- indicates if the camera should slide or just stand still in
case of collisionCamera.CAMERA_MOVEDOWN
,
Camera.CAMERA_MOVEUP
,
Camera.CAMERA_MOVEIN
,
Camera.CAMERA_MOVEOUT
,
Camera.CAMERA_MOVELEFT
,
Camera.CAMERA_MOVERIGHT
,
Camera.SLIDE
,
Camera.DONT_SLIDE
public boolean checkCameraCollision(SimpleVector direction, float moveSpeed, float distance, boolean slideMode)
direction
- the direction (should be a normalized vector (i.e. a length of
1))moveSpeed
- the number of units the camera should movedistance
- the maximum distance the position vector can have from the
polygon before a collision is detected.slideMode
- indicates if the camera should slide or just stand still in
case of collisionCamera.SLIDE
,
Camera.DONT_SLIDE
public java.lang.Object[] calcMinDistanceAndObject3D(SimpleVector orig, SimpleVector dir, float ignoreIfLarger)
orig
- a SimpleVector containing the x,y,z-coordinates of the
position vectordir
- a SimpleVector array containing the x,y,z-coordinates of the
direction vector (a unit vector)ignoreIfLarger
- only polygons/bounding boxes/octree-nodes within this range
will be taken into accountObject3D.COLLISION_NONE
public float calcMinDistance(SimpleVector orig, SimpleVector dir, float ignoreIfLarger)
orig
- a SimpleVector containing the x,y,z-coordinates of the
position vectordir
- a SimpleVector array containing the x,y,z-coordinates of the
direction vector (a unit vector)ignoreIfLarger
- only polygons/bounding boxes/octree-nodes within this range
will be taken into accountObject3D.COLLISION_NONE
public boolean checkCameraCollisionSpherical(int mode, float radius, float moveSpeed, boolean slideMode)
mode
- the direction (relative to its orientation)radius
- the radius of the sphere. A collision will only be detected
within this radius.moveSpeed
- the number of units the camera should moveslideMode
- indicates if the camera should slide or just stand still in
case of collisionCamera.CAMERA_MOVEDOWN
,
Camera.CAMERA_MOVEUP
,
Camera.CAMERA_MOVEIN
,
Camera.CAMERA_MOVEOUT
,
Camera.CAMERA_MOVELEFT
,
Camera.CAMERA_MOVERIGHT
,
Camera.CAMERA_DONT_MOVE
,
Camera.SLIDE
,
Camera.DONT_SLIDE
public boolean checkCameraCollisionSpherical(SimpleVector direction, float radius, float moveSpeed, boolean slideMode)
direction
- the direction (should be a normalized vector (i.e. a length of
1))radius
- the radius of the sphere. A collision will only be detected
within this radius.moveSpeed
- the number of units the camera should moveslideMode
- indicates if the camera should slide or just stand still in
case of collisionCamera.SLIDE
,
Camera.DONT_SLIDE
public boolean checkCameraCollisionEllipsoid(int mode, SimpleVector ellipsoid, float moveSpeed, int recursionDepth)
mode
- the direction (relative to its orientation)ellipsoid
- the radius of the epplisoid in x,y and z directionmoveSpeed
- the number of units the camera should moverecursionDepth
- the max. recursion depth of the collision detection. A higher
value will improve the accuracy of the collision detection but
reduce performance. Reasonable values lie between 1 and 5.Camera.CAMERA_MOVEDOWN
,
Camera.CAMERA_MOVEUP
,
Camera.CAMERA_MOVEIN
,
Camera.CAMERA_MOVEOUT
,
Camera.CAMERA_MOVELEFT
,
Camera.CAMERA_MOVERIGHT
,
Camera.CAMERA_DONT_MOVE
public boolean checkCameraCollisionEllipsoid(SimpleVector direction, SimpleVector ellipsoid, float moveSpeed, int recursionDepth)
direction
- the direction (should be a normalized vector (i.e. a length of
1))ellipsoid
- the radius of the epplisoid in x,y and z directionmoveSpeed
- the number of units the camera should moverecursionDepth
- the max. recursion depth of the collision detection. A higher
value will improve the accuracy of the collision detection but
reduce performance. Reasonable values lie between 1 and 5.public void buildAllObjects()
Object3D.build()
public void compileAllObjects()
public void renderScene(FrameBuffer buffer)
buffer
- the framebuffer that should be used for renderingdraw(com.threed.jpct.FrameBuffer)
public void draw(FrameBuffer buffer)
buffer
- the framebuffer that should be used for renderingrenderScene(com.threed.jpct.FrameBuffer)
public void drawWireframe(FrameBuffer buffer, RGBColor color, int size, boolean pointMode)
buffer
- the framebuffer that should be used for renderingcolor
- the wireframe's colorsize
- the size of the primitive, i.e. the width of a line of the
size of a pointpointMode
- if true, it will render points instead of linespublic long getFrameCounter()
public java.util.Enumeration<Object3D> getObjects()
public void setObjectsVisibility(boolean visible)
visible
- visible or not?public void removeAll()
public void removeAllObjects()
public void removeAllLights()
public void addPolyline(Polyline line)
line
- the Polylinepublic void removePolyline(Polyline line)
line
- the linepublic void removeAllPolylines()
public static void setDefaultThread(java.lang.Thread def)
def
- the "default" threadpublic static java.lang.Thread getDefaultThread()
public void setGlobalShader(GLSLShader globalShader)
globalShader
- the global shaderpublic GLSLShader getGlobalShader()
public float[] getBounds(boolean visibleOnly)
visibleOnly
- if true, only visible objects will be taken into account. If
false, all objects will.