# Jacobs, Lara, and Jeffery # representation of the PLEASE Lab #B. Cook #*******all textures are updated, but unicon************************************************* #*****is not showing them, using wall texture for everything after a certain point************ #*****Please 9 includes a few new rooms to wander around in with new textures #K. Jacobs #Please 9 The correct doors open when you are close enough to open it #NEW NEW NEW #Please 10 now allows doors to be created on the x-axis #Wall openings class added... this represents an opening to another room #use function add_opening for this... (works just like add_door) #added new cooridor toward Dr. Jefferys office #added 1 room in the new corridor (the door is on the-axis) .. this room is not #the accurate representation of the cs building... it is just for testing purposes #NEW #b.cook - please 11 combines ray's please9 with smaller, tiled textures #and korry's please10 with new cooridoor opennings and x-axis doors. # - still need to fix cooridoor connections, door openning directions(in vs. out), # add other rooms after connections are done, integrate jose's avatar, and #make texture cache in next please version(12) # - change to cve3 after integrating different versions/parts for #final please11 or first please12 link cve2b #Room(name,x,y,z,w,h,d,wall texture) procedure make_cooridoor() # cooridoor := Room("cooridoor", -54, 0, 3, 89, 5, 3, "wall32.gif") cooridoor := Room("cooridoor", -50, 0, 3, 89, 5, 3, "wall32.gif") put(Rooms, cooridoor) return cooridoor end #NEW NEW NEW #procedure make_cooridoor4(cooridoor2) # cooridoor4 := Room("cooridoor4", -44, 0, 34, 55, 5, 3, "wall32.gif") # o := Open_Space(-44,0,3) # cooridoor4.add_opening(o) # cooridoor.add_opening(o) # put(Rooms, cooridoor4) # return cooridoor4 #end #NEW NEW NEW procedure make_cooridoor2(cooridoor) cooridoor2 := Room("cooridoor2", 2.5, 0, 31, 3, 5, 28, "wall32.gif") o := Open_Space(2.5,0,3) cooridoor2.add_opening(o) cooridoor.add_opening(o) #o1 := Open_Space(5.5,0,31) # cooridoor2.add_opening(o1) # cooridoor4.add_opening(o1) put(Rooms, cooridoor2) return cooridoor2 end #NEW NEW NEW procedure make_cooridoor4(cooridoor2) cooridoor4 := Room("cooridoor4", -44, 0, 34, 55, 5, 3, "wall32.gif") o := Open_Space(2.5,0,31) cooridoor4.add_opening(o) cooridoor2.add_opening(o) put(Rooms, cooridoor4) return cooridoor4 end #NEW NEW NEW procedure make_cooridoor3(cooridoor,cooridoor4) cooridoor3 := Room("cooridoor3", -44, 0, 31, 3, 5, 28, "wall32.gif") o := Open_Space(-44,0,3) cooridoor3.add_opening(o) cooridoor.add_opening(o) o1 := Open_Space(-44,0,31) cooridoor3.add_opening(o1) cooridoor4.add_opening(o1) put(Rooms, cooridoor3) return cooridoor3 end #NEW NEW NEW procedure make_cooridoor5(cooridoor4) cooridoor5 := Room("cooridoor5", 10.5, 0, 35, 30, 5, 4, "wall32.gif") o := Open_Space(10.5,0,34) cooridoor5.add_opening(o) cooridoor4.add_opening(o) put(Rooms, cooridoor5) return cooridoor5 end #NEW NEW NEW procedure make_cooridoor6(cooridoor) cooridoor6 := Room("cooridoor6", -33, 0, 11, 2.5, 5, 7.5, "wall32.gif") o := Open_Space(-33,0,3) cooridoor6.add_opening(o) cooridoor.add_opening(o) put(Rooms, cooridoor6) return cooridoor6 end #NEW NEW NEW procedure make_cooridoor7(cooridoor4) cooridoor7 := Room("cooridoor7", -33, 0, 31, 2.5, 5, 8.5, "wall32.gif") o := Open_Space(-33,0,31) cooridoor7.add_opening(o) cooridoor4.add_opening(o) put(Rooms, cooridoor7) return cooridoor7 end #last cooridoor - for now #========================= #start rooms - add in a floor for new rooms, needs to be made where each # corner of floor doesn't need plotting #====================== #NEW NEW NEW #Begin SH135 # procedure make_SH135(cooridoor) SH135 := Room("SH135", -11, 0, 31, 13.5, 5, 8) d := Door(-9, 0, 31) SH135.add_door(d) cooridoor.add_door(d) put(Rooms, SH135) return SH135 end ############## #NEW NEW NEW #Begin SH125 # procedure make_SH125(cooridoor) SH125 := Room("SH125", 3, 0, 40.5, 7.5, 5, 6.5) d := Door(5, 0, 34) SH125.add_door(d) cooridoor.add_door(d) put(Rooms, SH125) return SH125 end ############## #NEW NEW NEW #Begin SH136 # procedure make_SH136(cooridoor) SH136 := Room("SH136", -4.5, 0, 40.5, 7.5, 5, 6.5) d := Door(1, 0, 34) SH136.add_door(d) cooridoor.add_door(d) put(Rooms, SH136) return SH136 end ############## #NEW NEW NEW #Begin SH137 # procedure make_SH137(cooridoor) SH137 := Room("SH137", -12, 0, 40.5, 7.5, 5, 6.5) d := Door(-10, 0, 34) SH137.add_door(d) cooridoor.add_door(d) put(Rooms, SH137) return SH137 end ############## #NEW NEW NEW #Begin SH138 # procedure make_SH138(cooridoor) SH138 := Room("SH138", -19.5, 0, 40.5, 7.5, 5, 6.5) d := Door(-14, 0, 34) SH138.add_door(d) cooridoor.add_door(d) put(Rooms, SH138) return SH138 end ############## #NEW NEW NEW #Begin SH141 # procedure make_SH141(cooridoor) SH141 := Room("SH141", -27, 0, 40.5, 7.5, 5, 6.5) d := Door(-25, 0, 34) SH141.add_door(d) cooridoor.add_door(d) put(Rooms, SH141) return SH141 end ############## #NEW NEW NEW #Begin SH142 # procedure make_SH142(cooridoor) SH142 := Room("SH142", -34.5, 0, 40.5, 7.5, 5, 6.5) d := Door(-29, 0, 34) SH142.add_door(d) cooridoor.add_door(d) put(Rooms, SH142) return SH142 end ############## #NEW NEW NEW #Begin SH147 # procedure make_SH147(cooridoor) SH147 := Room("SH147", -42, 0, 40.5, 7.5, 5, 6.5) d := Door(-40, 0, 34) SH147.add_door(d) cooridoor.add_door(d) put(Rooms, SH147) return SH147 end ############## #NEW NEW NEW #Begin SH148 # procedure make_SH148(cooridoor) SH148 := Room("SH148", -50, 0, 40.5, 8, 5, 5.5) d := Door(-43, 0, 35) SH148.add_door(d) cooridoor.add_door(d) put(Rooms, SH148) return SH148 end ############## #NEW NEW NEW #Begin SH152 # procedure make_SH152(cooridoor) SH152 := Room("SH152", -41, 0, 17, 7.5, 5, 6) d := Door(-41, 0, 15) SH152.add_door(d) cooridoor.add_door(d) put(Rooms, SH152) return SH152 end ############## #NEW NEW NEW #Begin SH153 # procedure make_SH153(cooridoor) SH153 := Room("SH153", -50, 0, 10.5, 6, 5, 8) d := Door(-44, 0, 8.5) SH153.add_door(d) cooridoor.add_door(d) put(Rooms, SH153) return SH153 end ############## #NEW NEW NEW #Begin SH151 # procedure make_SH151(cooridoor) SH151 := Room("SH151", -50, 0, 18, 6, 5, 8) d := Door(-44, 0, 12.5) SH151.add_door(d) cooridoor.add_door(d) put(Rooms, SH151) return SH151 end ############## #NEW NEW NEW #Begin SH150 # procedure make_SH150(cooridoor) SH150 := Room("SH150", -50, 0, 27, 6, 5, 8) d := Door(-44, 0, 25) SH150.add_door(d) cooridoor.add_door(d) put(Rooms, SH150) return SH150 end ############## #NEW NEW NEW #Begin SH149 # procedure make_SH149(cooridoor) SH149 := Room("SH149", -50, 0, 35, 6, 5, 8) d := Door(-44, 0, 29) SH149.add_door(d) cooridoor.add_door(d) put(Rooms, SH149) return SH149 end ############## #NEW NEW NEW #Begin SH134 # procedure make_SH134(cooridoor) SH134 := Room("SH134", -11, 0, 23, 13.5, 5, 10) d := Door(2.5, 0, 22.5) SH134.add_door(d) cooridoor.add_door(d) put(Rooms, SH134) return SH134 end ############## #NEW NEW NEW #Begin SH133 # procedure make_SH133(cooridoor) SH133 := Room("SH133", -4, 0, 8, 6.5, 5, 5) d := Door(2.5, 0, 9) SH133.add_door(d) cooridoor.add_door(d) put(Rooms, SH133) return SH133 end ############## #NEW NEW NEW #Begin SH132 # procedure make_SH132(cooridoor) SH132 := Room("SH132", -4, 0, 8, 6.5, 5, 5) d := Door(2.5, 0, 6) SH132.add_door(d) cooridoor.add_door(d) put(Rooms, SH132) return SH132 end ############## #NEW NEW NEW #Begin SH126 # procedure make_SH126(cooridoor) SH126 := Room("SH126", 5.5, 0, 31, 6, 5, 4.5) d := Door(5.5, 0, 27) SH126.add_door(d) cooridoor.add_door(d) put(Rooms, SH126) return SH126 end ############## #NEW NEW NEW #Begin SH127 # procedure make_SH127(cooridoor) SH127 := Room("SH127", 5.5, 0, 26.5, 6, 5, 4.5) d := Door(5.5, 0, 24.5) SH127.add_door(d) cooridoor.add_door(d) put(Rooms, SH127) return SH127 end ############## #NEW NEW NEW #Begin SH128 # procedure make_SH128(cooridoor) SH128 := Room("SH128", 5.5, 0, 22, 6, 5, 4.5) d := Door(5.5, 0, 20) SH128.add_door(d) cooridoor.add_door(d) put(Rooms, SH128) return SH128 end ############## #NEW NEW NEW #Begin SH129 # procedure make_SH129(cooridoor) SH129 := Room("SH129", 5.5, 0, 17.5, 6, 5, 5) d := Door(5.5, 0, 14.5) SH129.add_door(d) cooridoor.add_door(d) put(Rooms, SH129) return SH129 end ############## #NEW NEW NEW #Begin SH130 # procedure make_SH130(cooridoor) SH130 := Room("SH130", 5.5, 0, 12.5, 6, 5, 4.5) d := Door(5.5, 0, 8.5) SH130.add_door(d) cooridoor.add_door(d) put(Rooms, SH130) return SH130 end ############## #NEW NEW NEW #Begin newroom - SH131 - first with door on x-axis in cooridoor2 # procedure make_SH131(cooridoor) SH131 := Room("SH131", 5.5, 0, 8, 6, 5, 5) d := Door(5.5, 0, 6) SH131.add_door(d) cooridoor.add_door(d) put(Rooms, SH131) return SH131 end ############## procedure make_SH167(cooridoor) SH167 := Room("SH 167", -5, 0, 0, 10, 5, 6) #need to fix add floor so it doesn't require plotting each point SH167.floor := Wall("LightFloor64.gif",-5,0,0, -5,0,-6, 5,0,-6, 5,0,0) d := Door(3, 0, 0) SH167.add_door(d) cooridoor.add_door(d) # PILLAR -- should redo as a single (cube) object pillar := Box() pillar.mkwall(4,0,-6,4,5,-6, 4,5,-5.5,4,0,-5.5) pillar.mkwall(4,0,-5.5,3.5,0,-5.5,3.5,5,-5.5,4,5,-5.5) pillar.mkwall(3.5,0,-5.5,3.5,5,-5.5,3.5,5,-6,3.5,0,-6) SH167.add_obstacle(pillar) pleasewindow := Wall("blinds2.gif", -5,5,-5.9,5,5,-5.9,5,1.5,-5.9,-5,1.5,-5.9) SH167.add_decoration(pleasewindow) whiteboard := Wall("whiteboardray.gif", -4.95,1.5,-.5,-4.95,4,-.5,-4.95,4,-5.5,-4.95,1.5,-5.5) SH167.add_decoration(whiteboard) #light light := Wall("Light.gif", -.5,4.9,-5,-.5,4.9,-1,.5,4.9,-1,.5,4.9,-5) SH167.add_decoration(light) #poster poster := Wall("poster.gif", -2,2,-.1,-2,3,-.1,0,3,-.1,0,2,-.1) SH167.add_decoration(poster) #fake "default?" door1 door1poster := Wall("wooddoor.gif", -2,0,-.1,-2,3.5,-.1,-3.5,3.5,-.1,-3.5,0,-.1) SH167.add_decoration(door1poster) #fake "sh167" door2 door2poster := Wall("Doortest.gif", -3.5,0,-.1,-3.5,3.5,-.1,-5,3.5,-.1,-5,0,-.1) SH167.add_decoration(door2poster) put(Rooms, SH167) return SH167 end # #Begin room 168 # procedure make_SH168(cooridoor) SH168 := Room("SH 168", 5, 0, 0, 4, 5, 6) SH168.floor := Wall("LightFloor64.gif",5,0,0, 5,0,-6, 9,0,-6, 9,0,0) d := Door(5.5, 0, 0) SH168.add_door(d) cooridoor.add_door(d) put(Rooms, SH168) return SH168 end #=====add pillars later from my(brandon's)map================ # #Begin room 154 # procedure make_SH154(cooridoor) SH154 := Room("SH 154", 50, 0, 0, 7.5, 5, 6) SH154.floor := Wall("LightFloor64.gif",-50,0,0, -50,0,-6, -42.5,0,-6, -42.5,0,0) d := Door(-44.5, 0, 0) SH154.add_door(d) cooridoor.add_door(d) put(Rooms, SH154) return SH154 end # #Begin room 155 # procedure make_SH155(cooridoor) SH155 := Room("SH 155", -42.5, 0, 0, 7.5, 5, 6) SH155.floor := Wall("LightFloor64.gif",-42.5,0,0, --42.5,0,-6, -35,0,-6, -35,0,0) d := Door(-42, 0, 0) SH155.add_door(d) cooridoor.add_door(d) put(Rooms, SH155) return SH155 end # #Begin room 157 # procedure make_SH157(cooridoor) SH157 := Room("SH 157", -35, 0, 0, 7.5, 5, 6) SH157.floor := Wall("LightFloor64.gif",-35,0,0, -35,0,-6, -27.5,0,-6, -27.5,0,0) d := Door(-29.5, 0, 0) SH157.add_door(d) cooridoor.add_door(d) put(Rooms, SH157) return SH157 end # #Begin room 161 # procedure make_SH161(cooridoor) SH161 := Room("SH 161", -27.5, 0, 0, 7.5, 5, 6) SH161.floor := Wall("LightFloor64.gif",-27.5,0,0, -27.5,0,-6, -20,0,-6, -20,0,0) d := Door(-27, 0, 0) SH161.add_door(d) cooridoor.add_door(d) put(Rooms, SH161) return SH161 end # #Begin room 163 # procedure make_SH163(cooridoor) SH163 := Room("SH 163", -20, 0, 0, 7.5, 5, 6) SH163.floor := Wall("LightFloor64.gif",-20,0,0, -20,0,-6, -12.5,0,-6, -12.5,0,0) d := Door(-14.5, 0, 0) SH163.add_door(d) cooridoor.add_door(d) put(Rooms, SH163) return SH163 end # #Begin room 165 # procedure make_SH165(cooridoor) SH165 := Room("SH 165", -12.5, 0, 0, 7.5, 5, 6) SH165.floor := Wall("LightFloor64.gif",-12.5,0,0, -12.5,0,-6, -5,0,-6, -5,0,0) d := Door(-12, 0, 0) SH165.add_door(d) cooridoor.add_door(d) put(Rooms, SH165) return SH165 end # #Begin room 170 # procedure make_SH170(cooridoor) SH170 := Room("SH 170", 9, 0, 0, 7.5, 5, 6) SH170.floor := Wall("LightFloor64.gif",9,0,0, 9,0,-6, 16.5,0,-6, 16.5,0,0) d := Door(14.5, 0, 0) SH170.add_door(d) cooridoor.add_door(d) put(Rooms, SH170) return SH170 end # #Begin room 171 # procedure make_SH171(cooridoor) SH171 := Room("SH 171", 16.5, 0, 0, 7.5, 5, 6) SH171.floor := Wall("LightFloor64.gif",16.5,0,0, 16.5,0,-6, 24,0,-6, 24,0,0) d := Door(17, 0, 0) SH171.add_door(d) cooridoor.add_door(d) put(Rooms, SH171) return SH171 end # #Begin room 172 # procedure make_SH172(cooridoor) SH172 := Room("SH 172", 24, 0, 0, 7.5, 5, 6) SH172.floor := Wall("LightFloor64.gif",24,0,0, 24,0,-6, 31.5,0,-6, 31.5,0,0) d := Door(29.5, 0, 0) SH172.add_door(d) cooridoor.add_door(d) put(Rooms, SH172) return SH172 end # #Begin room 173 # procedure make_SH173(cooridoor,sh172) SH173 := Room("SH 173", 31.5, 0, 0, 7.5, 5, 6) SH173.floor := Wall("LightFloor64.gif",31.5,0,0, 31.5,0,-6, 39,0,-6, 39,0,0) d := Door(32, 0, 0) SH173.add_door(d) cooridoor.add_door(d) d:= Door(31.5,0,-4.0) SH173.add_door(d) sh172.add_door(d) put(Rooms, SH173) return SH173 end # #Begin room 156 # procedure make_SH156(cooridoor) SH156 := Room("SH 156", -40, 0, 9, 7.5, 5, 6) SH156.floor := Wall("LightFloor64.gif",-40,0,9, -40,0,3, -32.5,0,3, -32.5,0,9) d := Door(-39.5, 0, 3) SH156.add_door(d) cooridoor.add_door(d) put(Rooms, SH156) return SH156 end # #Begin room 166 # procedure make_SH166(cooridoor) SH166 := Room("SH 166", -11, 0, 13, 7, 5, 10) SH166.floor := Wall("LightFloor64.gif",-11,0,13, -11,0,3, -4,0,3, -4,0,13) d := Door(-5, 0, 3) SH166.add_door(d) cooridoor.add_door(d) put(Rooms, SH166) return SH166 end # #Begin room 169 # procedure make_SH169(cooridoor) SH169 := Room("SH 169", 12, 0, 18, 16, 5, 15) SH169.floor := Wall("LightFloor64.gif",12,0,18, 12,0,3, 28,0,3, 28,0,18) d := Door(12.5, 0, 3) d2 := Door(25.5,0,3) SH169.add_door(d) SH169.add_door(d2) cooridoor.add_door(d) cooridoor.add_door(d2) put(Rooms, SH169) return SH169 end #end of rooms=============================== #CONTROLS: #up arrow - move foward #down arrow - move backward #left arrow - rotate camera left #right arrow - rotate camera right # ' w ' key - look up # ' s ' key - look down # ' d ' key - toggle door open/closed #if you get lost in space (may happen once in a while) #just restart the program $include "keysyms.icn" #GLOBAL variables global posx, posy, posz # current eye x,y,z position global lookx, looky, lookz # current look x position and so on global cam_lx, cam_lz, cam_angle # eye angles for orientation global avatar, avax, avay, avaz global Rooms, curr_room procedure main() &window := open("PLEASE Lab", "gl", "size=800,750", "bg=grey", "inputmask=k") WAttrib("texmode=on") #initialize globals posx := 0.0; posy := 2.75; posz := -3.0 lookx := avax := lookz := avaz := 0.0; looky := avay := 2.5 cam_lx := cam_angle := 0.0; cam_lz := -1.0 Fg("white") # render graphics #sphere for avatar, couldn't get jose's avatar working #concerned about refresh calls in jose's new avatar, should i use static one first? WAttrib("texmode=auto","texture=smile2.gif") avatar := DrawSphere(avax, avay-0.4,avaz, 0.1) Rooms := [ ] cooridoor := make_cooridoor() #NEW NEW NEW cooridoor2 := make_cooridoor2(cooridoor) cooridoor4 := make_cooridoor4(cooridoor2) cooridoor3 := make_cooridoor3(cooridoor,cooridoor4) cooridoor5 := make_cooridoor5(cooridoor4) cooridoor6 := make_cooridoor6(cooridoor) cooridoor7 := make_cooridoor7(cooridoor4) curr_room := make_SH167(cooridoor) make_SH168(cooridoor) make_SH154(cooridoor) make_SH155(cooridoor) make_SH157(cooridoor) make_SH161(cooridoor) make_SH163(cooridoor) make_SH165(cooridoor) make_SH170(cooridoor) make_SH171(cooridoor) sh172 := make_SH172(cooridoor) make_SH173(cooridoor,sh172) make_SH156(cooridoor) make_SH166(cooridoor) make_SH169(cooridoor) #NEW NEW NEW - previously newroom make_SH131(cooridoor2) make_SH130(cooridoor2) make_SH129(cooridoor2) make_SH128(cooridoor2) make_SH127(cooridoor2) make_SH126(cooridoor2) make_SH132(cooridoor2) make_SH133(cooridoor2) make_SH134(cooridoor2) make_SH152(cooridoor3) make_SH153(cooridoor3) make_SH151(cooridoor3) make_SH150(cooridoor3) make_SH149(cooridoor3) make_SH148(cooridoor4) make_SH147(cooridoor4) make_SH142(cooridoor4) make_SH141(cooridoor4) make_SH138(cooridoor4) make_SH137(cooridoor4) make_SH136(cooridoor4) make_SH125(cooridoor4) make_SH135(cooridoor4) every (!Rooms).render() # event processing loop camera() end ############### #Set up the camera procedure camera() xdelta := ydelta := lookdelta := 0 i := 1 cam_move(0.01) Eye(posx,posy,posz,lookx,looky,lookz) write(posx,posy,posz) repeat { i := 1 if *Pending() = 0 then { if xdelta ~= 0 then cam_move(xdelta) if ydelta ~= 0 then cam_orient_yaxis(ydelta) if lookdelta ~= 0 then looky +:= lookdelta #NEW NEW NEW NEW num_exits := *curr_room.exits while i <= num_exits do{ if (\((dor := curr_room.exits[i]).delt)) ~=== 0 then { if not (dor.delta()) then dor.done_opening() else Refresh() } i := i + 1 }#End While #-------------------------- } else { case ev := Event() of { Key_Up: cam_move(xdelta := 0.05) # Move Foward Key_Down: cam_move(xdelta := -0.05) # Move Backward Key_Left: { ydelta := -0.05 while Pending()[1] === -Key_Left-128 & Pending()[4] === Key_Left do { Event(); Event(); ydelta -:= 0.05 } cam_orient_yaxis(ydelta) # Turn Left } Key_Right: { ydelta := 0.05 while Pending()[1] === -Key_Right-128 & Pending()[4] === Key_Right do { Event(); Event(); ydelta +:= 0.05 } cam_orient_yaxis(ydelta) # Turn_Right } "w": looky +:= (lookdelta := 0.05) #Look Up "s": looky +:= (lookdelta := -0.05) #Look Down "q": exit(0) "d": { #NEW NEW NEW NEW #Open a door # #Find out which door(s) we should open i := 1 #initialize a counter Doors := [ ] #this will hold the list of indicies to which door(s) to open Doors := which_door() #this function returns the list of indicies to which door(s) to open while i <= *Doors do{ #Store the index of the door to open index := Doors[i] dor := curr_room.exits[index] if \ (dor.delt) === 0 then { dor.start_opening() } else dor.done_opening() dor.delta() i := i+1 #increment the counter }#End While loop } #--------------------------------------- -166 | -168 | (-(Key_Up|Key_Down) - 128) : xdelta := 0 -165 | -167 | (-(Key_Left|Key_Right) - 128) : ydelta := 0 -215 | -211 : lookdelta := 0 } } avatar.x := lookx avatar.z := lookz Eye(posx,posy,posz,lookx,looky,lookz) } end procedure cam_move(dir) local deltax := dir * cam_lx, deltaz := dir * cam_lz if curr_room.disallows(posx+deltax,posz+deltaz) then { deltax := 0 if curr_room.disallows(posx+deltax,posz+deltaz) then { deltaz := 0; deltax := dir*cam_lx if curr_room.disallows(posx+deltax,posz+deltaz) then { fail } } } #calculate new position posx +:= deltax posz +:= deltaz #update look at spot lookx := posx + cam_lx lookz := posz + cam_lz end ############### #Orient the camera procedure cam_orient_yaxis(turn) #update camera angle cam_angle +:= turn if abs(cam_angle) > 2 * &pi then cam_angle := 0.0 cam_lx := sin(cam_angle) cam_lz := -cos(cam_angle) lookx := posx + cam_lx lookz := posz + cam_lz end #NEW NEW NEW NEW ############## #Returns a index list of exits to open or close procedure which_door() i := 1 Doors := [ ] while i <= *curr_room.exits do{ #Open the correct door x := curr_room.exits[i].x - lookx y := curr_room.exits[i].y - looky z := curr_room.exits[i].z - lookz #to find the actual distance we would just take the square #root of this number but since the square root function is so expensive #we will work with the distance_sqrd distance_sqrd := x*x + y*y + z*z #if we are close enough to the door then store it so that we may open it later #3 units seems to be a good distance so thats what will be used if distance_sqrd <= 9 then{ put(Doors,i) } i := i + 1 }#End While Loop #Return the list of door indices return Doors end #-------------------------------- #ÿÿÿÿ