ivan.cuevas Posted July 13, 2012 Posted July 13, 2012 Hi all, I have a PlayerSpectator instance as game player and I want to reduce or increase the distance to the target using the mouse wheel. In some point at update function I execute this code: if(engine.app.getMouseButtonState(APP_BUTTON_UP)) { p_player.setDistance(p_player.getDistance() + 2); p_player.updateControls(engine.game.getFTime()); p_player.flushTransform(); } else if(engine.app.getMouseButtonState(APP_BUTTON_DOWN)) { p_player.setDistance(p_player.getDistance() - 2); p_player.updateControls(engine.game.getFTime()); p_player.flushTransform(); } It does the job, but camera doesn't collide against other objects so I can pass through them. This is not desirable :) How can I perform the collision test just after modify the player distance? Thanks.
ivan.cuevas Posted July 16, 2012 Author Posted July 16, 2012 At the end this works: if(engine.app.getMouseButtonState(APP_BUTTON_UP)) { mat4 m= p_player.getWorldTransform(); vec3 p0= p_player.getWorldPosition(); p_player.setDistance(p_player.getDistance() + 2); vec3 p1= p_player.getWorldPosition(); int res[4]= (); if(engine.world.getIntersection(p0,p1,-1,res) != NULL) p_player.setWorldTransform(m); } else if(engine.app.getMouseButtonState(APP_BUTTON_DOWN)) { mat4 m= p_player.getWorldTransform(); vec3 p0= p_player.getWorldPosition(); p_player.setDistance(p_player.getDistance() - 2); vec3 p1= p_player.getWorldPosition(); int res[4]= (); if(engine.world.getIntersection(p0,p1,-1,res) != NULL) p_player.setWorldTransform(m); }
Recommended Posts