Jet3D Project News CVS Log Users Developers Related stuff

ActorCollision branch

 2000/02/18 00:28:35

incarnadine 


jeWorld_ActorCollision() got moved to Actor.h as MoveCollision(). I'll also need to add a RotateCollision().


//========================================================================================
// jeActor_MoveCollision
// This function checks an Actor to see if it collides with other Actors in the world or
// with the world itself. The current Actor position is irrelevant as it assumes the actor
// is moving on a path from Front to Back. The actor's collision box must have previously
// been properly set.
//
// Valid Flags are:
// COLLIDE_WORLD - Check the actor against the world (Object may be set)
// COLLIDE_ACTORS - Check the actor against other actors (Actor may be set)
// COLLIDE_BONES - Do collision checking at the bone level.
// SourceBone/TargetBone are set if collision occurs at this level.
//========================================================================================
JETAPI jeBoolean jeActor_MoveCollision( const jeActor *Actor,
const juWorld *World,
const jeVec3d *Front,
const jeVec3d *Back,
const uint32 Flags, // Valid Flags are COLLIDE_WORLD, COLLIDE_BONES
jeCollisionInfo *CollisionInfo); jeCollisionInfo *CollisionInfo);

  Files affected:
   src/jet/JetEngine/Actor/ACTOR.C
   src/jet/JetEngine/Actor/ACTOR.H

 2000/02/18 00:28:02

incarnadine 


jeWorld_ActorCollision() got moved to Actor.h as MoveCollision(). I'll also need to add a RotateCollision().

jeCollisionInfo *CollisionInfo);

  Files affected:
   src/jet/JetEngine/guWorld/JUWORLD.C
   src/jet/JetEngine/guWorld/JUWORLD.H

 2000/02/17 22:32:03

incarnadine 


Collision mods...

  Files affected:
   src/jet/JetEngine/Actor/ACTOR.C
   src/jet/JetEngine/Actor/ACTOR.H
   src/jet/JetEngine/Math/ExtBox.c
   src/jet/JetEngine/guWorld/JUWORLD.C
   src/jet/JetEngine/guWorld/JUWORLD.H

 2000/02/17 15:02:50

incarnadine 


Well, I decided it would be best to remain consistent and change SetCollisionBone(). It has been removed and these functions added:

JETAPI void jeActor_AddCollisionBone(jeActor *Actor, const char* BoneName);
JETAPI void jeActor_RemoveCollisionBone(jeActor *Actor, const char* BoneName);
JETAPI jeBoolean jeActor_HasCollisionBone(const jeActor *Actor, const char* BoneName);


Additionally, I changed bone name comparisons to be case insensitive. I also got rid of the jeActorCollisionInfo structure and just added what needed to be there to the existing jeCollisionInfo structure. I was trying to avoid this, but it looks like I'm going to need to change the calling parameters for juWorld_Collision(). It needs to be able to handle actor collisions as well, which means it's going to need some flags.

  Files affected:
   src/jet/JetEngine/Actor/ACTOR.C
   src/jet/JetEngine/Actor/ACTOR.H

 2000/02/17 15:02:36

incarnadine 


Well, I decided it would be best to remain consistent and change SetCollisionBone(). It has been removed and these functions added:

JETAPI void jeActor_AddCollisionBone(jeActor *Actor, const char* BoneName);
JETAPI void jeActor_RemoveCollisionBone(jeActor *Actor, const char* BoneName);
JETAPI jeBoolean jeActor_HasCollisionBone(const jeActor *Actor, const char* BoneName);


Additionally, I changed bone name comparisons to be case insensitive. I also got rid of the jeActorCollisionInfo structure and just added what needed to be there to the existing jeCollisionInfo structure. I was trying to avoid this, but it looks like I'm going to need to change the calling parameters for juWorld_Collision(). It needs to be able to handle actor collisions as well, which means it's going to need some flags.

  Files affected:
   src/jet/JetEngine/guWorld/JUWORLD.C
   src/jet/JetEngine/guWorld/JUWORLD.H

 2000/02/16 05:55:33

incarnadine 


Made some more modifications for ActorCollision. It's done for now. Bounding Box and Bone level collisions are implemented.

  Files affected:
   src/jet/JetEngine/Actor/ACTOR.C

 2000/02/16 05:55:15

incarnadine 


Made some more modifications for ActorCollision. It's done for now. Bounding Box and Bone level collisions are implemented.

  Files affected:
   src/jet/JetEngine/Math/ExtBox.c

 2000/02/16 05:54:58

incarnadine 


Made some more modifications for ActorCollision. It's done for now. Bounding Box and Bone level collisions are implemented.

  Files affected:
   src/jet/JetEngine/guWorld/JUWORLD.C

 2000/02/16 02:31:02

incarnadine 


Still making mods to get ActorCollision working...

  Files affected:
   src/jet/JetEngine/Actor/ACTOR.C

 2000/02/16 02:30:50

incarnadine 


Still making mods to get ActorCollision working...

  Files affected:
   src/jet/JetEngine/guWorld/JUWORLD.C

 2000/02/15 17:07:08

incarnadine 


Modified juWorld_RenderALL() to render Actors. Now Actors get rendered during a call to juWorld_Render() and they show up in mirrors/portals now!!

  Files affected:
   src/jet/JetEngine/guWorld/JUWORLD.C

 2000/02/15 16:09:42

incarnadine 


Had to move the Actor Chain construction to CreateBase().

  Files affected:
   src/jet/JetEngine/guWorld/JUWORLD.C

 2000/02/15 15:25:01

incarnadine 


Had to modify jeActor_Collision() to take an additional parameter, plus added a little more code and deconstruction stuff.

  Files affected:
   src/jet/JetEngine/Actor/ACTOR.C
   src/jet/JetEngine/Actor/ACTOR.H

 2000/02/15 15:24:07

incarnadine 


Added:

JETAPI jeBoolean juWorld_ActorCollision( const juWorld *World,
const jeActor *Actor,
const jeVec3d *Front,
const jeVec3d *Back,
const uint32 Flags, // Valid Flags are COLLIDE_WORLD, COLLIDE_BONES
jeActorCollisionInfo *CollisionInfo);
It's not debugged yet, so I don't know if it works, but at least it's in there.

  Files affected:
   src/jet/JetEngine/guWorld/JUWORLD.C
   src/jet/JetEngine/guWorld/JUWORLD.H

 2000/02/14 02:57:18

incarnadine 


Added new functions to prepare the way for juWorld_ActorCollision():

JETAPI jeBoolean juWorld_AddActor(juWorld *World, jeActor *Actor);
JETAPI jeBoolean juWorld_RemoveActor(juWorld *World, jeActor *Actor);
JETAPI jeBoolean juWorld_HasActor(juWorld *World, jeActor *Actor);
JETAPI jeActor * juWorld_GetNextActor(const juWorld *World, jeActor *Start);

  Files affected:
   src/jet/JetEngine/guWorld/JUWORLD.C
   src/jet/JetEngine/guWorld/JUWORLD.H

 2000/02/13 22:19:37

incarnadine 


Had to modify the new actor collision code a bit. Probably more to come.

  Files affected:
   src/jet/JetEngine/Actor/ACTOR.C
   src/jet/JetEngine/Actor/ACTOR.H

 2000/02/13 00:14:37

incarnadine 


Had to modify the new actor collision code a bit. Probably more to come.

  Files affected:
   src/jet/JetEngine/Actor/ACTOR.C

 2000/02/12 14:19:40

incarnadine 


Modified Actor.C and Actor.H for ActorCollision:

Ok, the next part is done. Two more functions have been added:

JETAPI void jeActor_SetBoneCollision(const jeActor *Actor, const char* BoneName, jeBoolean Collide)

Call the above function to set whether or not a bone should be checked during a collision. Default is off for all bones. If you set even one bone using this function, then the collision function below assumes you want bone level collisions on this object.

Here's the collision info struct:
typedef struct jeActorCollisionInfo {
jeVec3d Impact;
jePlane Plane;
char *SourceBone;
char *TargetBone;
} jeActorCollisionInfo;


JETAPI jeBoolean jeActor_Collision( const jeActor *Actor, const jeExtBox *Box,
const jeVec3d *Front, const jeVec3d *Back, jeActorCollisionInfo *CollisionInfo)


This function tests a Box (or Ray) to see if it collides with an actor. It tests against the Actor's ExtBox by default, or if bones have been specified via the above function, it tests against them. These mods were done to ACTOR.C and ACTOR.H. I'll be working on juWorld_ActorCollision() next. These haven't been tested by the way, so if someone has time, go for it and let me know if there are any problems. Again, you'll need to request the ActorCollision tag from the CVS using "sticky" options.

  Files affected:
   src/jet/JetEngine/Actor/ACTOR.C
   src/jet/JetEngine/Actor/ACTOR.H

 2000/02/12 00:32:34

incarnadine 


First mods to ExtBox for ActorCollision branch. See jeExtBox_Collision().

  Files affected:
   src/jet/JetEngine/Math/ExtBox.c
   src/jet/JetEngine/Math/ExtBox.h

[Jet3D Project] [News] [CVS Log] [Users] [Developers] [Related stuff]