// Camera Overide Script // by Ben Linden // // Put this script on an object, and attach the object. // Your camera will be changed from default, feel free to // tweak as you like. // // This script is an example of changing camera modes in real time. // integer on = FALSE; integer flying; integer falling; list fly_cam_fwd = [ CAMERA_ACTIVE, TRUE, CAMERA_BEHINDNESS_ANGLE, 0.0, CAMERA_BEHINDNESS_LAG, 0.5, CAMERA_DISTANCE, 3.0, CAMERA_PITCH, 10.0, // CAMERA_FOCUS, CAMERA_FOCUS_LAG, 0.05, CAMERA_FOCUS_LOCKED, FALSE, CAMERA_FOCUS_THRESHOLD, 0.0, // CAMERA_POSITION, CAMERA_POSITION_LAG, 0.5, CAMERA_POSITION_LOCKED, FALSE, CAMERA_POSITION_THRESHOLD, 0.0 ]; list falling_camera = [ CAMERA_ACTIVE, TRUE, CAMERA_BEHINDNESS_ANGLE, 0.0, CAMERA_BEHINDNESS_LAG, 0.5, CAMERA_DISTANCE, 3.0, CAMERA_PITCH, 0.0, // CAMERA_FOCUS, CAMERA_FOCUS_LAG, 0.05, CAMERA_FOCUS_LOCKED, FALSE, CAMERA_FOCUS_THRESHOLD, 0.0, // CAMERA_POSITION, CAMERA_POSITION_LAG, 0.05, CAMERA_POSITION_LOCKED, TRUE, CAMERA_POSITION_THRESHOLD, 0.0 ]; list walking_camera_fwd = [ CAMERA_ACTIVE, TRUE, CAMERA_BEHINDNESS_ANGLE, 0.05, CAMERA_BEHINDNESS_LAG, 1.0, CAMERA_DISTANCE, 3.0, CAMERA_PITCH, 10.0, // CAMERA_FOCUS, CAMERA_FOCUS_LAG, 0.05, CAMERA_FOCUS_LOCKED, FALSE, CAMERA_FOCUS_THRESHOLD, 0.0, // CAMERA_POSITION, CAMERA_POSITION_LAG, 0.05, CAMERA_POSITION_LOCKED, FALSE, CAMERA_POSITION_THRESHOLD, 0.0 ]; default { attach(key id) { if(id) { llRequestPermissions(llGetOwner(),PERMISSION_TAKE_CONTROLS | PERMISSION_CONTROL_CAMERA); } else { llSetCameraParams([CAMERA_ACTIVE, FALSE]); llSetTimerEvent(0.0); llReleaseControls(); } } run_time_permissions(integer perms) { if(perms) { llTakeControls(CONTROL_BACK, TRUE, TRUE); llSetCameraParams([CAMERA_ACTIVE, TRUE]); llSetTimerEvent(0.1); } } control(key id, integer level, integer edge) { if(!falling) { if(edge & level) { if(flying) { llSetCameraParams([CAMERA_ACTIVE, FALSE]); } } else if(edge) { if(flying) { llSetCameraParams(fly_cam_fwd); } else { llSetCameraParams(walking_camera_fwd); } } } } timer() { integer agent_info = llGetAgentInfo(llGetOwner()); if( agent_info & AGENT_IN_AIR) { if( agent_info & AGENT_FLYING) { //fly_camera falling = FALSE; flying = TRUE; llSetCameraParams(fly_cam_fwd); } else { //falling or jumping falling = TRUE; flying = FALSE; llSetCameraParams(falling_camera); } } else { falling = FALSE; flying = FALSE; llSetCameraParams(walking_camera_fwd); //on ground, use walk camera } } }