b1s
Member
|
attached items flicker
This issue have been with us for quite while.
When i attach an item to player like this:
Code:
tricycle().actor.matrix(Matrix().setPosDir(pos()-Vec(0,0.175,0),this->matrix().z,Vec(0,1,0)));
Vec vel,ang_vel; GetVel(vel,ang_vel,matrix(),tricycle().matrix()); // calculate velocities between old and new matrixes
tricycle().setDrawingVelocities(vel,ang_vel); // put the velocities to be used in motion blur drawing
When the tricycle object does not have skeleton or animations.
everything works fine. but when its animated it starts to flicker while the player moves and does not come along smoothly.
this does not look like motion blur problem, but i cant be sure.
(This post was last modified: 07-14-2010 02:37 PM by b1s.)
|
|
07-14-2010 02:37 PM |
|
Esenthel
Administrator
|
RE: attached items flicker
can you post some screens or video so I could see what's the problem?
you can also try looking in Bloody Massacre, or ERPG2 source codes.
|
|
07-14-2010 04:58 PM |
|
b1s
Member
|
RE: attached items flicker
yeah.. i did copy some of that code from blood massacre.. screens wont really show the flickerin i would have to take some video to really show it.
it seems like the second item is just lagging a bit behind from time to time.
|
|
07-14-2010 08:45 PM |
|
b1s
Member
|
RE: attached items flicker
Okay this image might not explain it very well.
but lets try:
The bike is flickering underneath the floor there.
it probably has something to do with collisions or what ever.
i have tried following stuff:
actor.activate(false);
actor.collision(false);
kinematic = true;
And also i tried creating a joint between the actors..
In all cases it has some sort of similar problems.
|
|
07-15-2010 09:36 AM |
|
Esenthel
Administrator
|
RE: attached items flicker
yeah, a video would be better
in it you could also enable Physics.draw to show the physics
|
|
07-15-2010 10:13 AM |
|
b1s
Member
|
RE: attached items flicker
:(
|
|
07-15-2010 10:39 AM |
|
Spugeson
Member
|
RE: attached items flicker
The tricycle should act as a child; We fixed the flickering by manualy calling update for the tricycle from the player script.
Does this now mean the update is called twice for tricycle?
|
|
07-15-2010 11:14 AM |
|
Esenthel
Administrator
|
RE: attached items flicker
well I dont know what is the tricycle
is it a member of player? a game object?
|
|
07-15-2010 12:07 PM |
|
b1s
Member
|
RE: attached items flicker
its an extended item object.
|
|
07-15-2010 12:34 PM |
|
Esenthel
Administrator
|
RE: attached items flicker
Game::World.update calls update only on the main objects, sub objects need to be processed manually.
|
|
07-15-2010 12:53 PM |
|
b1s
Member
|
RE: attached items flicker
h.
virtual bool update();
cpp.
bool ItemObject::update()
{
return __super::update();
}
|
|
07-15-2010 12:56 PM |
|
Esenthel
Administrator
|
RE: attached items flicker
no,
I mean that if you have
struct Game::Chr
{
Game::Obj sub_obj;
};
Game::ObjMemx<Game::Chr> chrs;
then Game::World will call only 'update' for chrs objects,
you must manually call 'update' and other methods for 'sub_obj' object if you require for example in Game::Chr methods
Bool Game::Chr::update()
{
__super::update();
sub_obj.update();
}
|
|
07-15-2010 01:10 PM |
|
b1s
Member
|
RE: attached items flicker
yes but this extended item object already get its update method called.
now. what we did to fix the flickering problem is:
we called the update from another place also.
like this:
tricycle().actor.matrix(Matrix().setPosDir(pos()-Vec(0,0.1,0)-tricycle().actor.matrix().z*0.05,this->matrix().z,Vec(0,1,0)));
tricycle().update();
|
|
07-15-2010 02:55 PM |
|
Esenthel
Administrator
|
RE: attached items flicker
so it means that the tricycle is stored in global object containers? and not as a member?
then maybe its just order of 'update' important
objects in containers are updated in unspecified order
you can use 'Game::Obj::reliesOn' method to specify that one object should always be updated before the other, maybe that will help.
|
|
07-15-2010 03:06 PM |
|
b1s
Member
|
RE: attached items flicker
this might be. we will try to modify the reliesOn.
but i guess it wont be too heavy to call one objects update method twice per frame.
if we cant get it working any other way.
|
|
07-15-2010 03:10 PM |
|