*** Starting logfile /usr/home/dan/gizmoball.log IRC log started Mon Apr 26 21:35:51 2004 *** Value of LOG set to ON Heh, y'know what we forgot? A way to make a new, blank board. > We did? > Oh, right, we did. > I thought about it when I was designing the GameBoard interface, but that doesn't help so much. i assumed a new GameBoard() was a new blank board > So do we want a GameBoard.getDimensions() that returns a Vect? It is, but there's no way to do it from the UI true Hmm, come to think of it, new GameBoard() should create the OuterWallGizmo so what i've been finding is that the gameboard sets but it seems to have 0 gizmos and the paint method finds these 0 gizmos and doesn't draw them since there are 0 of them That's interesting. It certainly knows them because it tick's them. Dan? which is why we don't see a ball drop > It's ticking gizmos that it doesn't show? Hmm. is it ticking the ball? Yes. I logged it maybe it's my fault then, something with the setting the gameboard i thought i checked that though > Well, it shouldn't be ticking the gizmos if it doesn't return them in getGizmos. eh, i guess i'll run through all this one more time > How do I run the test? gizmoball.Gizmoball with the sample XML file? yeah > hmm. > I see ticks running... someone has verified that they're ticking the ball? Yes The ball tick log is in now > ok, got it. > I also have a new version of GameBoard that logs to log4j, I should probably commit that. so now i've place a ball into the initial GameBoard for the AbstractGBCpt and it's displaying correctly And the plot thickens it's possible the colors just suck and we can't see it maybe i'll make the ball cyan or something but that wouldn't explain why the gameboard shows 0 gizmos in the drawing loop > Committed a log4j'd GameBoard (the only difference is that it uses log4j instead of SOP) In AbstractInteractionMode, add an error dialog to the IOException catchers via log4j? No, a regular JOptionPane ah, ok We want to report that to the user, and I get a feeling that might be related to the problem... Tack the exception message in there, too (I make sure to give useful messages with everything the loader throws) > It certainly is ticking the ball. now is it ticking the ball because of the gameboard's natural tick or is the timer ticking the ball? The gameboard doesn't have a natural tick > There aren't any walls in the GB, are there? nope, no walls Not currently > OK, that'd explain why it's not checking any collisions. eh, then that's very weird the timer can only tick the same gameboard that the gameboardcomponent draws It's just-a-ball, afterall Yeah... This is confusing > I can poke at GameBoard some more, but I have a hard time believing that it would fail in this way (especially in light of the tests I ran) > Could it be a drawer issue? what's the ball position i'll test that in the drawer test > That was one of the other things I was wondering about... could it be going offscreen? but it seemed to work right The paint method is definitely not iterating over any gizmos yup plus, i checked the size on the getGizmos and it returns 0 > Oh. Uh. Time to pull out.... The Debugger! > Right, you have a working debugger. No, but I have a more working debugger > That'll do. i've confirmed that the position will properly draw * dan nods eh, why don't i just hard load the ball drop and see if that works Hmm, the debugger isn't enlightening me much Though, what I mentioned about the error dialog before was wrong. It should probably get in the LoadListener in GizmoballFrame yeah, i'll have it dispatch on the return value of the load > I'm doing some debugging myself, but I don't have any theories yet. well, i hard loaded the gameboard from the xml file the ball shows up and doesn't move Is it ticking? yup That's interesting Does it claim it's moving? lemme get the updated logging stuff and i'll let you know it claims it's moving That's also interesting it also claims it's repainting the gizmo > That's interesting too. > Oh, this could be it... and apparently within .3 secs, it's dropped out of the bounds of the board but it looks fixed Yeah, they fall pretty quickly Gravity is 25 L/sec^2 > That's a lot of gravity. Yes Especially for "resembling a pinball game with a slightly tilted playing surface > OK. I found the bug. Ooh ooh enlighten us > GizmoballFrame makes two R2GameBoardComponents ah, i see damn > Apparently one was getting ticked and the other drawn or something like that. That it does. Nice catch > It still goes awfully quickly. yeah it behaves as expected though Which is always a good thing Let me make the walls real quickly.. > Yeah, I wasn't suggesting that that was wrong. Just surprising. you'd never have guessed from that animation but i suppose it naturally distorts sense of time so will cvs be able to mediate between all our different versions right now? CVS is magical. Speaking of which, the repaint() call in the timer should probably be gameboardComponent.repaint yup just that way wasn't working before (because apparently, gameboardComponent wasn't being shown anywhere) > bah. Damn WAP. That needs to be fixed.. as soon as we have time > Yeah, exactly. > As for CVS, I was just going to revert my changes and let Albert commit the fix. OuterWallsGizmo should be constructed by new GameBoard(). The ctor expects a Vect dimensions. Same here alright, the fix should be in > OK. Should new GameBoard take a dimensions Vect? that would be nice Mm, I'd say give it a default ctor for now that assumes 20x20 if not, they're implied by the dimensions of the outerwalls > hey, this is going to make GameBoard even longer! Whee! OuterWallsGizmo ci'd (along with some other gizmos) the drawer should handle polys ok, but haven't tested setPosition isn't translating the polygon? and is the polygon origin the upper left corner or the center? > I'm not sure I like the idea of new GameBoard constructing the OuterWallsGizmo ok, R2PolygonDrawer has been tested for squares, triangles, various orientations the polys seem to be center origin, but i guess we can correct that on one side or the other i'll be back in a few hours setPosition isn't translating the polygon? > c-entry.Albert just proposed using Gizmoball as a thermodynamic simulator. Uh I.. suppose > Now he's going to sleep so he won't come up with any more sick ideas. Good getDimensions ci'd > oh, cool, I just finished writing the test case. > GameBoard with OuterWallsGizmo support ci'd. Does it work? > It passes GameBoardTest, is there an integration test to run? Nope > Let me give it a try with the just-a-ball. Uh, it would appear not.. > Let's see what happened. > well, that's unsatisfying. I'll debug. > I assume you have a working timeUntilCollisionWith? AFAIK I just ci'd a just-a-ball that doesn't fling it off the board quite as quickly > Let me put in a little more debugging code. > hmm. Is BallGizmo ticking correctly? > It looks like it's not taking the tick length into account. In theory That's always possible > DEBUG BallGizmo: Tick: new p=<12,6> new v=<3,1> > INFO R2GameBoardComponent: painting gizmo Outer walls > INFO R2GameBoardComponent: painting gizmo Ball > DEBUG GameBoard: doTick 0.05 > DEBUG GameBoard: event: 0 @ 0.2 > DEBUG BallGizmo: Tick: new p=<15,8> new v=<3,2> You're right New one ci'd Heh, right. I was lazy in my test case and used 1 second ticks > Heh Still doesn't hit the wall, though > Right. I'm working on figuring that out. > DEBUG GizmoballReader: Adding gizmoball.game.BallGizmo@3d285f to the board > DEBUG GameBoard: TimeToCollision between Outer walls and Ball is 32.5 > DEBUG GameBoard: doTick 0.05 > DEBUG GameBoard: event: 0 @ 0.05 > DEBUG BallGizmo: Tick: new p=<2,9> new v=<0,0> > DEBUG GameBoard: TimeToCollision between Outer walls and Ball is Infinity > Something funny's going on there. o.O > I'll commit the GameBoard that prints that debug message if it helps you any. 'Kay > ci'd That's interesting > Yeah. I'm reading over AGizmoWPolyGeometry now. I think I found it, though I'm not sure where > What's going on? > (If it can be described) All of the corners and edges are at 0,0 At least, once it gets to computeBallCollision > Oh. Well, that'd certainly be a problem. > It's interesting that it only happens after the first tick. > (or does it?) No, it's like that the whole time Which I also can't quite figure out Oh, wait... > But we do get a TimeToCollision of 32.5 before the first tick. Maybe those points are correct, just non-obviously represented in polar > IIRC, the ball has a slight upward initial velocity, but that goes away after the first tick. Could that have something to do with it? Quite possibly *** You have new email. Oops, found it It bounces! > It bounces? It bounces! > Squark! Fix ci'd just-a-ball is now more interesting > I'm just seeing a green square. Is it painting the outer walls? Those are the outer walls. They're a polygon, remember? > Right. I'm not seeing the ball. (Should I ci my tweak that makes that just the edges?) Try restarting it. I think the set sometimes winds up drawing the outer walls over the ball > Oooh! Yay, they don't provide a method for converting degrees to radians > Of course not. > Totally unrelated note: EL wire glows brighter if you crank up the voltage. Ooh > (I should probably check if it's rated for that) I'd be more worried about the inverter > That's what I meant. Square bumper officially works > Cool. Which means all polygonal bumpers will presumably work too? I believe so Uh, well, the ball can get stuck in the triangle gizmo if you happen to place both in the same place... Which I guess is a good thing > Revised specifications! > What's left gizmo-wise? Finish absorber, circle bumper, flippers Updated ci'd (including new some-bumpers.xml) > Hmm. I wonder if I can usefully help with those, or if it'd be more effective for me to start writing things up. You should probably start writing things up > Yeah. I'm also going to make a couple more minor changes. 'Kay > (I might as well make collision triggers work) > Bumper collisions look good, this is really coming together. It's rather amusing to see the game suddenly halt when the ball falls in the absorber as it throws a NIE > Heh. > One wonders if there's a way to handle a NIE gracefully. Flash 'NOT IMPLEMENTED!' and make the ball disappear? > () Invalid XML! Woah. Our ball is restless. If kept in the absorber too long it starts bouncing up and down > Are we trapping it somehow? No I hadn't thought it necessary > What does it bounce against? The bottom of the absorber? I think so Hmm. This time it's not bouncing > What does a collision with the absorber do? Set the position of the ball? And its velocity > Right. > It seems like gravity would always pull it down and make it bounce against the bottom. Which will cause me to set its velocity to 0 again > Sure, but the UI might redraw while it's in motion No, because it never gets a chance to move, I think I'll deal with this better late r > Oh, wait, the ball is touching the corner of the absorber. Yes > (I had a radius/diameter confusion problem and thought it was floating slightly offset from the corner of the absorber) > Then yeah, it'll never move. I wonder why it was bouncing. The other thing I can think of is that something caused it to hit the game wall before I had a chance to nullify its velocity > Do the absorber and the game wall share the bottom edge? In this layout, yes > I wonder if it might be unpredictably colliding with the outer wall instead of the absorber wall. That might be > Everything in the GameBoard is a Set, so there's no guarantees about the iteration order. * Amthrax nods There, now I'm more forceful about setting its position and velocity Hmm. I can't find where Albert actually wires up his interaction mode listeners for keyboard and mouse > My checkRep actually caught a bug! *gasp* > ...of course, it was a bug in placing checkRep calls. Oh mmm, it seems the interesting dialogue has ended for a while but progress looks good lemme get the keypress stuff working and then i guess figure out drawing order keypresses in soon keypresses ci'd can we make settings to shut off logger messages from classes selectively? hmm, i'm watching two balls bounce around, it seems they collide selectively depending on the glancing angles usually not at all for the flippers, if you pass me the centers of the two circles, i'll be able to draw them with the renderer other than that, i think all our drawers are pretty much done *** You have new email. i'll be back around 1 Yes, one of the strengths of log4j is its ability to control different flows of the log I assume you mean two balls colliding with eachother? I haven't written that yet because we don't need it for the prelim Okay. How 'bout a Circle getEndpoint1() and Circle getEndpoint2()? *** You have new email. Oh! Now I understand the keypress triggers. We did them slightly wrong. The XML file specifies whether a trigger triggers on press or release. We'll ignore that for now alright, i'm back if you haven't written it yet, it works surprisingly well? the getEndpts will do as for the log4j thing, how do i do flow control? it was hard to pick out keypress logs from all the other stuff Uh, that's interesting. Can I see the test file you were using? sure it looks very much like collisions i'll ci in a sec For now, edit Gizmoball.java at the end of initLog4j and add, say: Logger.getLogger("gizmoball.game.GameBoard").setLevel(Level.INFO); cool i guess the collisions might just look like collisions but there's this kinda of choppiness around it that seems to be a change of direction i don't know what the log is reporting Hmm the file is in the tesfiles dir 'Key s/e/a/ Hmm. I don't think they're actually colliding. eh, ok Of course, I'm probably biased about that, since I'm the one who didn't write the code. ]:--8) you could definitely fool someone into thinking that arg, there's some error with l&f for JFileChooser in Windows seems to unreliably break and throw an NPE Gah Hmm. Could you use Math.round instead of casting to double in the poly drawer? I'm getting some weirdnesses with fp error ok you mean casting to int? Er, yeah Oh, and I'm confused by the choppiness. It's simulating at the right rate, but I think Swing is doing some redraw optimization or something. It appears much smoother on Dan's laptop i don't know how you see it, it seems pretty smooth to me, i think besides the thing with the balls going over each other Oh, it might just be my VM then but i've changed the casting, so it rounds before casts Thanks which aspect of connections aren't in yet? In a moment.. basically nothing ci'd great tested? Yes (though not formally much) so we've met the preliminary release except for the flippers? and circle bumpers mmm ok Now the only aspect of connections that isn't in is triggering based on press or release, but I think we should ignore that until after prelim well, as long as we can trigger the basic flipper action Which we will be able to (and the absorber) yup but based on press or release we can do with parametric triggering (which we have?) You mean loaded from the XML file? well, i guess we don't have to worry about it for now Yes (modulo honoring the keyDirection attribute) No, it's there. That's how I'm getting the triggers now it's interesting that didn't make it into the requirements Yes like for the most part it seemed ambiguous what to do on press or release Stuff like that makes me wonder just how much people are going to be hardcoding things for the prelim release Oh, yes, that. I think the only place that's mentioned is in the detailed description of the XML format yeah i was reading it this morning to test if you guys did connections and then i realized they did spec the behavior But we'll ignore that for now agreed do you have a connections test board? some-bumpers has a connection to the absorber space key ok btw, keycodes translate across platforms? Yes .. essentially They're constants in java.awt.event.KeyEvent ah, right odd, it doesn't seem to fire for me though it's logging the keypresses Uh... ah, lemme rebuild Oh, that would do it it's awfully fun to watch the ball go up and down... Heh i think i'll do an ascii renderer sometime Heh, that could be interesting BRB ok Now that I've found a nice place right outside w20... time to write flippers! lol, i got the impression you were in your room Until 1, I was. From 1 to 2, I was in 10-250. Now I'm here ]:--8) oh, right, 004 Yeah it's amazing how seemless you move seamless Heh, thanks Once I have time I intend to make it moreso. btw, we assume flippers are .5 thick? I still have to reconnect to my desktop as I roam on wireless because my IP changes Yes But I need to write a roaming deamon (for other reasons, too) that I intend to make set up an IP tunnel to my desktop so I never loose my connection to it I suppose I really should make the gizmo parameters (like FlipperGizmo.RADIUS) public But I'll do that after prelim Alternatively, you could use the radius of the endpoint ah, the endpoint is a circle eh, for now i'm just using L/2 I could make it a not circle. It doesn't really matter i'll make it more general later 'Kay eh, just a heads up the Documenting a Software System format is rather annoying we have to write the reflection section etc. Oh or are we not following that format still? I.. don't know some of these things are not currently producible like the user manual since we don't have a full interface yet It seems odd to do a reflection.. in the middle of the project yeah we ought to ask her later Yeah. I was under the impression that it was basically the same stuff they wanted for the PDD, plus validation/testing alright do you know if our code/specs are checked for this checkpoint? They probably are glanced at, but I don't think they have much influence Since they don't really fit into the 20%/80% rubrik ok eh, i'll spec up my stuff more anyway gotta do it sometime soon as you finish the flippers, i should be ready to support them Cool > Back to the world of 6.170... ah, so we're all here finally > Yep, I'm done with classes for the day. > AbstractGizmoWithPolygonalGeometry seems to be missing a setGeometry(Vect[]) method, it doesn't build for me. Um... Hmm > OK if I commit the fix? One sec Oh, is this in the test? > (It is, after all, trivial enough) > Yeah Sure > I ran into it during 033 recitation today, I just made a setGeometry that uses the origin as a default center. That works too > ci'd. > btw, I'm in W20. Heh, me too > Heh, where? Though probably in a much squishier part The second floor lounge > You're right, that is squishier. And probably a lot more comfortable. > Is there power? Nope At least, not that I see > Bah. If there were, I'd come down and join you. > And the keyDirection bit in the keypress triggers is annoying. Yes > How did they manage to write that so I was able to totally miss that after scrutinizing the specs. > s/\./\?/ Very, very carefully > Fortunately, my design is extensible enough to handle that! The bigger problem is coming up with same way to enter that into the editor But we probably shouldn't deal with that yet > Yeah. *** You have new email. > Anything (besides docs) you need me to work on? Not that I can think of (flippers are almost done, BTW) cool > cool. That's everything for the demo, right? Just need circle bumpers (ugh) > Oh, right, those. But those should be trivial ok i'll switch the drawer to use draw and not fill for consistency > Circles do have that nice, uh, circular geometry that makes things easy to deal with. This is true Okay. We really should draw things solidly, but then we have to deal with the outer walls sanely yup or we can always treat them separately in the drawer from other AGWPG > Yeah. Maybe make it (and color?) a property of AGWPG? A solidness property? Hmm, maybe > (That was, of course, a 'later' suggestion, not a 'today' suggestion) i suppose we can do "shade" or something > Yeah (Not Property property, that is) btw, does absorber handle multiple balls correctly? Nope (i can imagine difficulties firing two balls at once) or with your forced position thing Actually, it 'll fail more catastrophically than that I think > It could be a Property, or it could just be a property. Though, really, I have no idea what it'll do that's very reassuring Actually, it might fail so catastophically that it may even work... Though I know they won't be positioned very well while in it Feel free to try it > Now that would be impressive. *** You have new email. gizmoball.NotImplementedException at gizmoball.ui.r2.R2DrawerFactory.getDrawer(R2DrawerFactory.java:45) at gizmoball.ui.r2.R2GameBoardComponent.paint(R2GameBoardComponent.java:63) one sec what's it painting, do you know? Oh, right. Flippers oh, ok (FlipperGizmo) is it ci'd? Nope, but I can if you want ci'd ok, i'll throw those in I don't know whether or not they actually work yet no prob which is which endpoint? like which one is the pivot? 1 (see specs) ah, right from what i see, i think i don't have the second endpoint (it's giving me the 1st one as the 2nd) Uh unless i'm using something wrong Let me check it oops nm Okay ok, it looks like it draws did you make the length L or 2L 2, in theory Oh, wait 1. I'll fix that great in that case the drawers are working Cool Fixed length Circle bumpers are almost done ok, i guess we're just about set for the demo then Yep lemme test key firing of the flippers will it load flipper handedness? Yes In theory > excellent It just transforms it into a reasonable XML tag. ]:--8) Circle bumper ci'd care to rename it CircleBumperGizmo? Oh, good point Done ok it seems the flipper is moving unpredictably? Okay. I haven't actually looked at it yet alright check that out i'll throw in the circlebumper stuff Ooh, they dane *dance > They're flippering in an interesting way. > Random thought: do we need to handle flipper-flipper collisions? Uh, no can you also shift the endpoints so that they fall within the discrete L squares? Okay technically, flippers occupy the 2x2 box, so you should be able to place them so they hit > That issue can rest comfortably under the rug. i've just loaded the example boarded board seems it's treating all flippers as left flippers? and they all dance synchronized Yeah, I'm working on that cool > Oh, they do specifically state in the specs that flippers shouldn't be placed in such a way that they'll hit anything else. did we get collision triggers to work, btw? They work (I just tested them with flippers) > They work in the GameBoard, does the XML loader load them? Yes > Cool. ah, collisions seem a bit weird the ball seems to hit things before it actually contacts them or sometimes goes through them Going through them shouldn't happen that may have to do with drawing precision well, going through them glancing But if the collision happens between redraws, it will look like it didn't actually hit ko ok > flippers aside, collisions look good in some-bumpers.xml for me yup i'm still using the board on the requirements site > I get NotImplementedExceptions from the R2DrawerFactory on that (maybe because of the CircleBumper?) oh, maybe i didn't ci got it seems the collisions with those are a bit coarse actually, i guess it's ok Okay. Flipper handedness and rotation are now working I'll fix the endpoint positions and ci ci'd? ok i'll handle the revised mdd for now > ok. I'm writing up the collision detection/resolution procedure. Fixed flippers ci'd Now to fix circle collisions Oh, and can anyone get the absorber to eject in example.xml? when i ran it, it ejected on collision > So it did. Is the orientation of the triangles wrong in example? i thought it matched the gif Have you rebuilt in the case four minutes? oh, hmm one of them seems wrong now I thought I fixed it.. Maybe I unfixed it also, it seems the flippers are inverted i also should've connected the space to the absorber The hell? Does the geometry library rotate CW? ok, the absorber's definitely not firing now It was running for me for a long time, then it suddenly caught it. > There's something funny going on there. It worked fine the first time I loaded it, then I reloaded the same file, and it suddenly stopped working. That doesn't have to work yet, though, so let's ignor eit > Right. eh, the absorber has to fire somehow Key presses fire it fine AFAIK i can't get that to work either Fixed circle bumpers ci'd cool what key to fire the absorber? Supposedly delete for example.xml eh, the collide is now working... what's up with the orientation of the tri bumper? and the flippers? brb, i'm coming to w20, so i guess i'll find you Oh, sorry. Fix ci'd I'm at 16% battery, so I'll be on the fifth floor soon ok > I'm at one of the black linux machines, on the row to the right side of ajax as you walk in. are the flippers fixed? i seem to get no collisions with them, and they're still reversed (left is right and vice versa) > Well, collisions with flippers aren't scheduled to be implemented today. You won't get collisions with them I'm working on the orientation (I'd misinterpreted the specs on that) great i'll be over in a sec well, on to the FDD i guess i'll eat first *ping* Hmm. I wonder about the problem analysis section what's this? It's under requirements the requirements section, that is eh, we can make something up We could also fill all 20 pages with that... how is the fdd looking that's very true Decent. I just ci'd the properties stuff and some changes to the XML stuff. I haven't seen any other checkins recently. alright I'm now rewriting the requirements overview i will update the renderer stuff and some ui stuff, i guess i'm about to put the new mdd on the blog We should be sure to address all of the comments she made to our PDD Ah, cool I think I'm going to throw together the glossary, too I thought Dan was going to, but he appears to be temporarily dead alright i will address the comments in my sections then i can bring up the pdd if you'd like to see it again Sounds good Hahaha, I like the decorations I wonder if she'll understand eh, i had an even more colorful one but it was too busy Do you have a higher resolution copy? one sec how should i get it to you? Email is fine cool it's not much better, about twice the resolution i guess that's not bad That's fine. I was just worried that some of the text would get lost in the eps translation ah, yeah it seemed alright last time btw, you might wanna glance over it for correctness Okay what with the runtime model or whatever? and i think i'm done with the pdd, most of my sections were ok the hi res mdd has been sent The object model? We'll ignore it I don't think it would be especially enlightening anyways well, at least textual description Yes, that we probably should have hah, for some reason i think it'll look much like the mdd This is also true Ah, that should eps fine ok lemme bring you the pdd 'Kay btw, have you seen the 18.06 yet? From yesterday? Oh, the pset? yeah, the pset Nope alright can't be too bad Pfft, yes it can. But hopefully it won't be alright, i emailed the fixed mdd the dotted arrows are now really dotted btw, how do the $id tags work in version? ci'd the javadoc fixes, i think if there were 3, i couldn't find one > If you put a $Id$ in your file anywhere, it magically gets updated. The remaining one is in R2FlipperDrawer Ah, they are really dotted alright i'll ci soon Glossary ci'd (along with structure changes to fdd.tex) May I resection ui.tex, or is someone working on it? > I just saw the MDD'. I'm still chortling. I want to move it under revised specs and split off the use cases into a requirements subsection ah, btw, i think we're supposed to note changes in the mdd That's probably a good idea so you may want to include both versions somehow, although i can see how that'd get confusing I think that should be textual you may resection ui.tex There's not that much to say other than "completely replaced the X system" ah, ok > Maybe put the old one in an appendix if we really want to include it. ui section chanages ci'd the r2, ui-design, and ui stuff should all be done Er, will be ci'd once uid 44267 is done Now ci'd > That's me, and it's done now. (Why'd it take so long?) (Were you getting the MDD update, too?) > Oh. In EPS form. i'll be back in 20 mins, lemme know if i need to do anything According to Petra the pseudo-9 on the PDD is a European 9 > I knew it was a 5-ish 9 not a 9-ish 5. (as is the rest of Magdelena's writing, apparently) > I'd forgotten just how many changes we made to the game system. i was unaware europe had its own standards for numbers We might want to remove the "I \heart Austin. \smiley" from the MDD. As Petra pointed out, our TA may be a bit too "weired out" by that s/weired/weirded/ > Especially since it's right next to the DOM cloud. Oh, and along those lines, the editor mock-up should probably be up-to-dated (including removing the color frobber, as pretty as it is) New design overview ci'd lol, sure thing what are the current frobbers? Dan, did you remove the property system stuff from game system? Connect, rotate, delete, (move?) it seems move is gone, rotate i'm considering possible alternatives > Yeah eh, connect, rotate, delete it is Sounds good how about making it "I \heart DOM. \smiley"? There's still useful stuff in the old property system section, but it doesn't belong in the new property system section Hahaha Should I check in the GameBoard logger disabler? > Sure. should i redistribute the remaining pie items? i guess quadrants looks nicer (and probably easier to implement Yeah > Should I keep some of the old property stuff in the game system section? Probably. At least a list of standard properties > (I saw you wrote a property section, but I haven't read it yet) ah, having changed the pie menu, i will have to alter some of the use case stuff i'll email the new mdd and ui sketch 'Kay sent May I rename R2DrawerTest to R2DrawerTestApp so ant doesn't get confused? sure Build, javadoc, and junit tests all officially work > You got ant to run junit? Yes ... apparently > Impressive. That's odd. I don't remember doing anything * Amthrax shrugs aah, the eps is very large > They tend to be like that. Back on the property thing, the game system section should probably mention that Gizmo's use the property system to export foo properties > *nod* do single quotes work in tex? > Yes, and they even do the right thing. > But use a ` if you want an opening single quote mmm, ok alright, use-cases and ui have been updated > Game simulation is performed by a \emph{modified dynamic adaptive > continuous-time discrete-event simulator}\footnote{Buzzword bingo!}. New MDD and UI are up (another big cvs update to pull) Oh, crud cvs [commit aborted]: error closing lock file /mit/6.170/groups/se064/cvsroot/gizmoball/doc/fdd/,mdd.eps,: Disk quota exceeded > Gah! They suck > Uh. The hell? We're only using 37 megs Luckily, I don't feel bad about directly prodding cvs roots. > So, uh, what are we going to do? I really don't want to clean out the repository. > Oh, You have more of a stomach than I do. I'm going to delete the old fdd/mdd.eps stuff (11 megs) Alternatively, that probably just shouldn't be checked in. I've got a makefile in there to generate it from mdd.jpg > That makes sense. Nobody cvs for a while Alright, it should be clean. cvs up from the root to be sure Now we're only using 25 megs any idea what the limit is? Probably 40 > We should ask for more. We also shouldn't keep generated files in there... How's the testing section? > Finishing the game system is taking longer than I expected. Okay Especially with having to type "modified dynamic adaptive continuous-time discete-event simulator" repeatedly? ]:--8) > The > simulation of each gizmo is performed in continuous time in the > intervals between discrete events. ci'd > Oh no! A merge conflict! *gasp* > It's in fdd.tex, so it can't be non-trivial. > Oh, I should mention the AGWPG Ah, yes Be sure to mention that we thought about not having it Since we're supposed to mention alternatives we considered I suppose that should also apply to the collision system > Right. Maybe a footnote for that. I'm putting it directly into the property system stuff It's more of an "alternative approach" than a history > I should probably also mention that we eliminated the fixed-translatable dichotomy. Yes ZKS is now in the glossary > Excellent. shall i change all references to pie menus to frobber menus? Hmm. I suppose they technically aren't pie menus because they aren't transient. Change the references and add a footnote (or something) explaining that? how about a reference to the glossary? > Be sure to mention that to use a frobber menu is to frobnicate the gizmo. So.. what happens when edit mode is switched to while a flipper is flippering? i assume it freezes In place? sure Okay > I don't see any reason not to do that. it'd be annoying to have the drawers in editing mode draw in standard position or wait till it returns Neither do I. And waiting could be difficult to implement without much user benefit Alright, so they'll come to a dead halt btw, i was thinking the editing mode would have a different refreshing strategy for the gameboard than the playing mode > That makes sense. eh, so where to put the repainting... Oh, be sure to mention the 50ms timer thing I'm adding a bit to Possible changes about possibly changing that alright i'll throw that into the renderer part, i guess > Upon further reflection\footnote{Not the kind > used by the properties system}, we concluded that this dichotomy did > not provide significant benefits. She'd better enjoy this document. ]:--8) Do we have a design section about the editor that I can point a \ref to? If not, I'll just remove the reference what aspect of editor design? The design aspect of the editor design well, there's design as in interface and feature design, and design as in implementation design Implementation design hmm, i don't think we really discuss that much yet Okay. I can just remove the ref ok > \begin{itemize} > \item the gizmo's name (a string used by the editor to identify a > specific gizmo to the user) > \item the gizmo's position on the board > \item the gizmo's orientation, if appropriate > \item for a ball, its current velocity > \end{itemize} > Am I forgetting any properties? > flipper handedness? Yeah, technically, though I'm still not sure how we're presenting that to the user The size of the absorber Can I get a ref on the collision system? > Sure, ref sec:collision-system > (I'm changing the structure of the game system docs around, it was getting kinda unwieldy) Okay > Bobby is playing annoyingly upbeat Japanese anime music. I'm playing annoyingly angry German industrial music. They go so well together. Should I mention frobber menu in the glossary? > Isn't it already mentioned? Frobber is As if frobnicate But not frobber menu. I want to mention its similarity to a pie menu > Sure, why not? Ah, now sections 1.1 and 1.2 fit nicely on to the first page Lotsa ci's > I'm going to commit the game system stuff. > Still need to talk about alternatives for collision stuff. Is cryptosystem one word? > I think so Google appears to think so, too Gah! Footnotes don't work in description environments > Really? I didn't know that. Well, they don't work if they're in the item brackets > oh Gah! I don't have underscore.sty > I thought it was standard! That doesn't mean anything Oh well, now I do > Apparently not... /sw/share/texmf-local/tex/latex/other/misc/underscore.sty Oh On page 11 you have a "for a flipper, " item > Oh. Right. > I don't anymore. aleung: Still around? yup Feel like editing? ]:--8) sure > Heh. I like the Machiavelli reference. I'll send a PDF cool Thanks ]:--8) Sent We should probably try to wrap this up by 1:30 got it > OK do we have a runtime model text description? > I don't believe in those either. That's basically spread throughout the module descriptios > which is why I don't believe in them. ok shall we alphabetize our glossary? (Dan, I'll be sure to use lots of \emph's so it fits in well with the rest of your section ]:--8) * dan grins. I was thinking about that... Currently I have it kind of grouped, but I'm not sure that's at all clear btw, our system supports even invalid gizmo placements like overlaps and such Well, that's true, but the editor won't let you put something somewhere where you can't put something Unless we want it to, of course. But I think that's too much user empowerment. > You can't put something where you can't put something? That's very profound. Wouldn't want them to get any ideas. > Those uppity users. how to handle gizmo placement collisions? > Both top-down, bottom-up, and > inside-out testing methodologies are used, comprising both black-box > and glass-box tests. > I'm not mentioning no-box testing. i thought both could apply to three? > Oh, right. > I originally said top-down and bottom-up, then I realized I needed inside-out too. Uh, it should probably be mentioned which parts of the system use which types of testing... > Sure, that's the next part. Okay, just checking ]:--8) *** You have new email. > Are there any junit tests for ui stuff? only r2drawerfactory which tests that it correctly dispatches on type and returns singletons > ok Didn't you also have a test application for something? yeah, but that doesn't count as junit But it's still testing that was to test the actual drawers > But it wouldn't hurt to tell me about it. :) r2drawertestapplication? Just app I think k R2DrawerTestApp Oops, I probably shouldn't have left that shell in the cvs root directory... it used to use stubs to test that the drawers could draw the right gizmos, but now for the most part, it uses the real gizmos > Good! Both unit and integration tests! And, of course, our "scripted" tests of the whole UI, which certainly test the real gizmos and integration * dan nods. > I was just writing about those. Alternative collision systems ci'd how do i get the math r2? > $\R^2$ the for a flipper item is removed? > The sentence got finished > (Or phrase, I guess) Oh, cool, the MDD figurizes now Though now the TOC goes onto the second page > Put the TOC on its own page and center the title? Oh, wait, there's no implementation overview section in DSS Hmm Should I move the MDD to the end of the design section? > Hmm. It would make sense Then make project plan its own section > Sure. > (And Validation will still be a section?) Yes > OK > Almost done with it. > I referred to my play, too. edits ci'd there were just small grammatical things it reads fine Cool Figure pushing-arounding ci'd Currently the MDD and the timeline stomp on eachother, but that should go away with a testing section > Yeah. It's going to be in shortly. very good... > I'm in the process of sectioning it now. the mdd looks surprisingly nice in the pdf I'll compose the email email? To Magdalena ah, what's this complicated checkin and tagging thing we have to do? It's just them being weird I'll get the tagging once we're all ready > Fighting with the figure... what's this email being composed? Just to tell her where to look for the PDF and how to run the demo ok > OK, let me see if this formatted right... > I stuck a \newpage in to make sure the MDD displayed in the right place. Okay > ok, that's it. Committing. > ci'd. > Want me to build the PDF? I got it > OK I'm gonna tag... > ok Tagging Which is, of course, linear time with the size of the repository... Yay cvs > That's totally broken. > (Like so much of CVS) Ooh, actually it might be literally with the size of the repository (ie, history any everything) Email sent And that's that > Cool. *** You have new email. great > I guess I ought to take Zack off the mailing list. Er, yeah time to die for a little while Heh, 1:36 past two hours past midnight. ]:--8) Happy dying. I think I'll do the same after finishing (and starting) 18.06.. eh, i don't think i could start if i wanted to at this point This is the time I usually start 18.06 ah, i usually start it in a couple hours HEh see you in the morning G'night *** You have new email. *** You have new email. *** You have new email. *** You have new email. *** You have new email. amendments are up from looking just at the contents, it looks ridiculously easy (in fact, we already have them) lol, multiple balls and polygon gizmos eh, how disappointing we can probably check off that milestone tonight *** Global -- from OperServ: Macman is now an IRC operator. eh, we should discuss how the standard gizmo classes are gonna be stored so the palette can get them are custom cursors safe for mac and linux? > Yeah. I was hoping they might actually throw something interesting at us for the amendment. Oh, that's cute (just read the amendment) I like the poly-gizmos. It's still trivial (though editor support for that would be interesting), but cool > So what do we call those? ConcreteGizmoWithPolygonalGeometry? Oh, and I thought of a new, possibly better way to do the collision stuff today. ]:--8D Unfortunately, we probably call them PolyGizmoGizmo unless I want to define another transformer... Though I suppose the loader will need special support for those anyways, since they completely break its reflection assumptions. > Yeah, with the vertices and all. > You'll have to tell me about your new collision idea. But I reserve the right to ignore you and to throw heavy objects at you. *** Notice -- Ambs (~dan@AMBULATORY-CLAM.MIT.EDU) is now operator (O) *** Global -- from OperServ: Ambs is now an IRC operator. > Heh. The antichess amendment adds undo! And with the things-not-overlapping bit. Though maybe that could be ignored for poly gizmos Right granted. It doesn't change the game loop itself, just the location of canCollideWith/collide Ooh, undo. That's something that would actually be hard.. for most gizmoball games. > Where would you put them? *** You have new email. It's similar to the old collision manager, except that each gizmo would register collision resolvers with the manager. The resolver would consist of the two gizmo types it dealt with and an implemented method for resolving collisions between gizmos of those types. It's fairly similar to what we do now, but I think somewhat less cluttered. And it's a lot of generic programming, except that the implementations of these things are now out in the gizmos instead of in a central manager s/of/like/ > Oh, I thought about something like that too... > I was thinking of defining them in terms of CollisionPair classes. What would a CollisionPair include? API-wise, I was thinking along the lines of CollisionManager.registerResolver(BallGizmo.class, AGWPG.class, new CollisionResolver { .. collide .. }) where CollisionResolver would be an interface and the register method would be static > The ability to handle collisions between two types of gizmos, but separated out from the gizmos. Okay, so essentially the same thing as the CollisionResolver I was thinking of? > Sounds like it. Oh, and that snippit would probably be put in a static { } block > I was thinking it would just make things more complex without giving us any extra power. I don't think it would give us extra power, but I do think it would concretify our currently rather fuzzy CAN/NEVER/DEFER system, since resolvers would just be registered out-right, instead of the game board having to figure out what the type collision pairs are Plus, you could point to a resolver and say "this is where it resolves foo-bar collisions" > Yeah, it does package things up nicely. Feel free to throw large objects now > (Into ravioli!) It probably would add a bit of complexity because of the CollisionManager class, but that might also be leveragable to pull out some of the collision resolution stuff from GameBoard Refactoring! > Yeah, the GameBoard internally converts things into CollisionPair records, we might be able to avoid some of that complexity what i'm hoping for is a collision system universal enough to handle collisions for the gizmo placing in the editor > In any case, I'm not implementing it. :P Yeah, we do have to figure out the collisions-in-the-editor thing The obvious approach is to use bounding boxes (though that doesn't work well with poly gizmos) > Bounding polys? circles and things are still annoying > Yeah, you'd have to bound them with a box/poly. That's not so bad, but it still feels less than ideal. Perhaps each gizmo could returns its geometry in terms of polys and circles, then those could be intersected? > That could work. A set of bounding, uh, shapes? Yeah > And the obvious intersection algorithm would work fine, it doesn't need to be efficient. Yeah make sure we can also account for what gizmo is currently being clicked it seems that should be part of the editor collision handling too *nods* With the bounding shape sets, that would certainly work have we decided on where and how to represent the gizmo set? > hmm. is gizmo orientation working? ah, i mean flipper nevermind i just noticed that setting the orientation to something like 1 rad results in it not drawing, was wondering why that was also, what's with absorbers having a 2 height? It has a 2 height? yeah, i think you hard coded that into the constructor for a sec, i thought it might be to prevent collisions with the bottom of the absorber Oh. I guess that's the default size. Though nothing's stopping that from changing... > I thought they had a 1 height? Can't their size be set to anything? sure as long as balls in them don't touch the walls? Actually, that's fine too Actually, the size is required by the XML file, so it'll always get set ok *** Notice -- Ambs (~dan@AMBULATORY-CLAM.MIT.EDU) is now operator (O) *** Global -- from OperServ: Ambs is now an IRC operator. *** You have new email. *** Notice -- Ambs (~dan@AMBULATORY-CLAM.MIT.EDU) is now operator (O) *** Global -- from OperServ: Ambs is now an IRC operator. *** You have new email. *** Notice -- Ambs (~dan@RLE-13-049.MIT.EDU) is now operator (O) *** Global -- from OperServ: Ambs is now an IRC operator. can i get the editor collision system sometime soon? i'm gonna be out this weekend starting tomorrow night till sunday night or at least if it's spec'd Oh, right, we should spec that btw, can we do a quick tetris implementation? you could have a gizmo that assimilates pieces that collide and checks for row fills another one that spits out random pieces with keypress triggers: something to rotate, something to make it drop and then just regular AGWPG that can move and collide That would be surprisingly easy > The only problem might be that you'd have to have multiple kinds of keypress triggers. And the collision code would be a bit scary. But neither is insurmountable. yup so, our next milestone is far off (the deadline, no?) we should probably set goals before that flipper collisions would be very cool, gizmoball is rather deterministic without them i'm aiming to have basic gizmo adding in the editing mode done by tomorrow night still wondering how to do the frobber menu *** You have new email. Yeah, we should at least have an internal schedule It really shouldn't take long to implement flipper collisions (maybe I'll do that tonight if I can't sleep again) The frobber menu should work through the properties system, which should actually make it fairly easy to implement (at least, for changing things and determinging which frobbers to display). Feel free to ask questions about the properties system. eh, not the frobber system the actual thing itself maybe we can pop something up Why not just draw stuff in the component? *** You have new email. For example, component.showRotateFrobber(true) (and, of course, stuff like component.setSelectedComponent(foo)) Oh, I guess you'd probably need a frobber listener thing, too Ooh, ooh, an enumerate class for frobber types, then component.showFrobber(FrobberType, boolean) and component.addFrobberListener(FrobberListener) where FrobberListener would be a typical listener interface, but the method would take a FrobberType And I guess you'd need some mechanism to indicate when the user "dragged" frobbers, so probably three methods in the FrobberListener.. the problem with that is the off the screen issue objects on the borders will have frobbers off the displayable area i could always divide up the quadrants that can display, but that gets kinda messy is there an online copy of our specs? Eh, the component knows how big the frobbers are, so it can reposition them if necessary. http://awakening.mit.edu/~amthrax/gizmoball/ *** You have new email. hmm, how bout we sweep all the awards? this project is haunting me sucking up all my free resources *** Signoff: Amthrax (Quit: leaving) *** Amthrax (amthrax@AWAKENING.MIT.EDU) has joined channel #6.170 so i've gotten to the point where you can place square gizmos but i have to leave soon, and it's not quite ready, i guess i'll have it in good shape by sunday (night) there's one issue, which is that i have a thing in the component tracking the mouse to display where the gizmo is being placed and it lags quite a bit it's about half a second delay hah, this is rather fun apparently the circle drawer snapped to grid by default cause of an order of ops error so i'm watching balls collide with seemingly invisible things and going through other things aah, i gotta stop working on this *** You have new email. *** You have new email. ah, the lag is solved apparently, drawing things with dash patterned strokes is extremely slow Heh, cool ]:--8) *** Darren (Jinxster@user213040191159.dial.netline.net.uk) has joined channel #6.170 ? *** Darren has left channel #6.170 *** dan is dan@clamshell.ambulatoryclam.net (Dan Ports) *** on channels: #6.170 *** on irc via server clamshell.ambulatoryclam.net (Ambs's test IRC server) *** dan is an IRC Operator *** dan has been idle 3762 minutes, signed on at Thu Apr 15 03:43:10 2004 *** dan : End of /WHOIS list. #6.170 Amthrax H% amthrax@AWAKENING.MIT.EDU (0 Amthrax Arlan) #6.170 Amthrax H% amthrax@AWAKENING.MIT.EDU (0 Amthrax Arlan) #6.170 aleung H% ~aleung@MACGREGOR-THREE-SIXTY-ONE.MIT.EDU (0 Albert Leung) #6.170 aleung H% ~aleung@MACGREGOR-THREE-SIXTY-ONE.MIT.EDU (0 Albert Leung) #6.170 dan H* dan@clamshell.ambulatoryclam.net (0 Dan Ports) #6.170 dan H* dan@clamshell.ambulatoryclam.net (0 Dan Ports) *** clamshell.ambulatoryclam.net #6.170 :End of /WHO list. *** clamshell.ambulatoryclam.net #6.170 :End of /WHO list. *** Mode change "+aA" for user dan by dan *** ispectre (~dan@CPE000a278d2a22-CM014120010486.cpe.net.cable.rogers.com) has joined channel #6.170 *** Signoff: ispectre (Quit: ispectre) * Amthrax H% amthrax@AWAKENING.MIT.EDU (0 Amthrax Arlan) * aleung H% ~aleung@MACGREGOR-THREE-SIXTY-ONE.MIT.EDU (0 Albert Leung) * dan H* dan@clamshell.ambulatoryclam.net (0 Dan Ports) * DevNull H services@netmug.org (2 /dev/null -- message sink) * HelpServ H services@netmug.org (2 Help Server) * StatServ H% services@netmug.org (2 Statistics Server) * MemoServ H* services@netmug.org (2 Memo Server) * ChanServ H* services@netmug.org (2 Channel Server) * NickServ H* services@netmug.org (2 Nickname Server) * Global H* services@netmug.org (2 Global Noticer) * OperServ H* services@netmug.org (2 Operator Server) *** clamshell.ambulatoryclam.net * :End of /WHO list. what's everyone's status? i got back about an hour ago hopefully we have flippers, saving, the poly gizmo, editor collisions? Uh, we have flippers (not checked in yet because I'm not entirely convinced they work) Dan and I have basically spec'd out how to do editor collisions (using a blob mechanism) And, of course, the poly gizmos been just about done for some time now. great btw, my editor uses reflection to decide how gizmos should be created based on their constructors so for the poly one, it'll go through a submode where you click and define the points but other potential types are ones where you click and drag to define the size of the gizmo, etc. or the simple clicking and placing Wow. How did you determine that through the ctor? well, i'm just assuming that types are indicative of what kind of constructor it is so if you have a vect[], that's a poly which is quite an assumption Oh. I just gave them all default ctors yeah, i know Wouldn't it be better to check which properties they have? that would work too in fact, i should do it like that but the poly is a property? Since that was part of what the property system was designed for ]:--8) Ah, yeah, that. Um, I'm still working on how to express the poly thing ok I'm thinking the best way is to add collection support to the properties system we can definitely reflect off the properties (Something I was thinking of doing from the start, but had decided against) not hard to change either Cool and i was considering already since i had the issue of distinguishing between a dimension and a velocity vect Uh, since it's sort of undocumented, I recommend looking the XML loader for the assumed property names btw, i wanted to abstract out the triggered actions That's true How so? well, it seems that when triggered, gizmos only have such a set of things they can do, so we might as well let the user control that too Oh, you mean the ability to have multiple types of triggers? yeah, that too but for the most part, triggering will just set some property Currently it's assumed each gizmo has only one type of trigger (which is all that's necessary by their specs) * Amthrax nods yeah, but if we're to do anything like have gizmos that you can move around And once collections are added to the property system, the triggers will be available through it Move around during gameplay? yup Hmm you'll have to treat different keypress triggers differently We should probably ask Dan about that, since he wrote the trigger system Right which means you'll probably want different triggerable actions Yeah.. I'm not sure what could be added to most of the triggers btw, can we refactor a lot of the stuff? it seems the default packages are getting awfully cluttered Maybe. What are you thinking of? just throw all the standard gizmos into their own package Yeah, that's what just came to my mind, too ]:--8) all the drawers into their own package, things like that My code's easy to change for putting the gizmos into their own package well, eclipse can do it automatically ^_~ Ah, not quite! > *poked* really? it seems to cover most of the bases Nope. The things that reflect into the Gizmos would have to be changed by hand because it's a runtime thing. Eclipse is none-too-good about dealing with runtime things ah, right Automatic tools are great, but only if you know exactly what's going on ]:--8) > I kinda like the idea of making the trigger action customizable, but that would require some fairly serious changes to how the trigger system works. you could just associate triggers with parameters, then on the triggered gizmo end, have a map from parameters to the actions? with actions stored as property-value pairs or something and then various special types to do flippering or ball release although those could even be properties too, i guess i guess that's not really that customizable, but it would be a step up from now > I guess. You'd need a way to specify the action of the trigger (we don't currently have that, we just fireTrigger on the gizmo). And we'd need to come up with editor and/or XML interfaces for it. on another note, how are we implementing undo? Via the properties system, presumably Keep track of the stack of property changes hmm, but not every change is a property Then just pop them Other than triggers (which will be soon) and creation/deletion, which aren't? > Are there non-propertified changes? that's true alright, there goes that issue Yay for unissues ]:--8) > hey, if we've got collections, we could propertify the GameBoard and make adding/deleting gizmos a property change too. Woah hah, nice we always wanted gameboard properties like topology *world stops spinning* I think that'd work quite well i'll handle some undoing stuff internally, like undoing placing points when defining a polygon Maybe have "undo groups" so a single undo can represent multiple property changes in some sane way? hmm, why undo multiple property changes at once? > And if we're talking about giving triggers nifty new features, it sounds like we're heading towards propertifying them too. definitely well, since we have a property framework that's good enough to support most things we might as well capitalize Well, for instance, adding a gizmo to the board would consist of two property changes: adding the gizmo to the gameboard gizmo list and, say, setting its position mmm, that's true > Right. Sounds like you'd want to separate them into 'UI actions' which would be grouped property changes that happen at once. > (Atomically!) Though, let's not implement redo, because adding things to collection properties goes screwey if you undo it then redo it hah so you don't want the one stage undo where undoing your undo is a redo? I personally prefer infinite undo (Emacs style! Wait.. no, let's not kill ourselves and our users with hyper-undo) i wouldn't mind an infinite undo and redo but considering this is all beyond the scope of what's needed we'll stick with the rational choice Heh, sounds good Infinite undo should be pretty easy yup Redo should be pretty hard Let's not do redo ]:--8) i'm assuming you shut off this property tracking system in play mode Well, sort of. There shouldn't be any listeners while playing ah, ok If there are no listeners, then, yes, the property system basically shuts down > But it would be really cool if you could undo the gameplay all the way back to the start of simulation... in very small ticks... Ooh it would be nice though * dan forces that thought out of his mind. hah, you could rewind and change the course of history! Continuations! continuations? Continuations! i never thought i'd hear that again but i just heard it twice Mmm, continuations so please justify? Well, if we're going to support changing the course of history via an infinite undo that captures the game state at every point, we might as well be able to wrap up these undo checkpoints and be able to hand them to the user ah, true (And, no, I'm not really suggesting this. It goes along with the higher-order editor) > Continuations! continuations! anyway, prioritizing > Right. Progress document, anyone? what has our progress been? Implemented multiple balls Flipper collisions.. I think i have the bulk of gizmo placement and snap done so ui side, we just need the property table and frobbers I noticed you have a lot of the editor drawing stuff, too yeah eh, it's not so bad > I haven't done much of anything except make cynical comments this week, but that can be changed. actually, i need to make the trigger drawer handle self-triggers and other weird things > One thing I was going to do was make the trigger mechanism deal with keyup/keydown triggers. Unless we're going to totally change the trigger system in a way that makes it silly to do that, I'll implement that tonight. well, dealing with keyup keydown could be a subset of the new trigger system If you make that look like a property, then it should be easy to shift later > *nod* > What else am I working on? ah, can we go for: saving and editor collisions sometime soon? that would make being able to build in the editor a bit more fun > (I ask, as I break out a copy of the timeline for the next progress document) Hmm. I was planning on doing the collections properties thing next Since that will affect a number of things ok Once that's done I can do saving saving shouldn't be too difficult? No > I'll do the editor collisions. But it'll use the collections properties ah, ok for the triggers (Dan, are you writing up the timeline? I'm working on the rest of the progress document now) I guess polygonal gizmos should come after that (Not that that'll take much work) > oh, you are? cool, I don't have to do that, then. I'll do the timeline. sounds good 'Kay. Uh, want me to check in the skeleton so you have something to write on? > Sure. then we can go for the abstracted trigger system and then we can build games! > remote triggers! WormholeGizmos! (progress document ci'd) mmm, i guess we know what's happening for the next couple of days there's only like a week left... Spec'ing the blob mechanism and the property collection support should probably go in the timeline, too > Right. Those should probably be due 5/3 > *nod* do we have any issues? Uh, that we haven't had a conflict yet? true we're running out of time > I'm making a point of listing that we implemented the amendment before it was released. Ooh, could it be over the new collision system that I want? ]:--8) Excellent sure > s/Plan and schedule amendment/Plan and *retroactively* schedule amendment/ ? i don't have much a stance in the new collision system Heh, sounds good only cause i probably won't have any part in implementing it though you could try to force it on me That's true. Though, finding a conflict that conflicts all of us could be difficult with how well we've split up the system and i can threaten to not do the editor Ooh > Ooh, I'm putting in 'Polygonal gizmos' as implemented with 'Standard gizmos' in any case > (as in AGWPG) Heh, okay. gizmo placement will be done by tomorrow night along with support for poly gizmos > The timeline lists me as implementing the editor display. But, uh, it looks like you've got that covered. So, the parts of the amendment that still need to be done are the multi-ball absorber, and loader support? i thought you were doing the property table but i don't mind taking all the ui stuff since i'm doing it already not-Zack was on the property table ]:--8) ah, ok i wasn't sure what editor display was > Yeah, I guess we should decide who's doing that. (Maybe table that issue until later?) Bad Dan I think that, for that, you should do it ]:--8) * dan grins eh, there's not much to do For? > sure, I guess I can do it. editor display? The editor display is the whole frobber menu and arrows and stuff and such, which is mostly done anyways, it seems oh, frobber menu And the gizmo palette, I suppose that's separate > Oh, that's what it is. the gizmo palette is almost done Er, well, that's what _I_ thought it was... i guess you can take the frobber menu Isn't that part of your whole artifact system, though? Or was that not meant for that... yeah, i suppose we could do it using artifacts that was initially how it was to be done > I thought that was what the artifacts were for? anyway well, that's part of it. the artifacts also handle things like build transients (a gizmo hovering and following the mouse around) but i suppose i should take the editor drawing or display rather since i've already taken it That would be a good reason to take it ]:--8) > Seems so mmm, if we're set, i guess i'm leaving now Want to look over the progress document first? it's rare that we're all here oh, is it completed? (Or tomorrow, that's fine) Uh, pretty much > Timeline is almost ready What's our upcoming plan? ah, i think i looked over it Follow the schedule? > Sounds good to me looks good we really have no issues? that should be an issue ci'd and make an issue that our only issue is self-contradicting Haha > OK, we have to do that. which would of course snowball then we could have an existential conversation for our meeting and petition for hass credit! > Plan and (retroactively) schedule amendment & & 4/28 & \done \\ > Specs for collection properties & Austin & 5/3 \\ > Specs for editor collisions (Blobs) & Dan & 5/3 \\ > Collection properties & Austin & 5/7 \\ > Editor collision detection & Dan & 5/7 \\ > XML saver & Austin & 5/7 \\ > Finish flippers & Austin & 5/7 & \done \\ > PolyGizmos and multi-ball absorber support & Austin & 5/7 \\ > Editor display & Albert & 5/7 \\ > Editor interaction mode & Albert & 5/7 \\ > Property table & Dan & 5/7 \\ > Prettify $\R^2$ drawers & Albert & 5/9 \\ > Undo support and other nifty extensions & & 5/10 \\ Maybe split up 5/7 a bit more? > Yeah, I was thinking it probably should be, I just hadn't figured out how to do it. s/Blobs/Blob system/ ? Or blob support? > Blob system, I think Issues ci'd > Move collection properties and blobs to, say, 5/5 or 5/6 so we at least nominally have them first? Yeah > Timeline ci'd Implement multi-ball collisions? Support really includes absorber support > Good point, I forgot about that when I wrote that line. > Fixed Anything else for issues (namely, unissues) you can think of? > That sounds about it, unless we want to mention editor artifacts or something there. > (Which doesn't sound much like an unissue, but...) > Now I guess we just need to implement all this. Yep > (But that's the easy part, right? ;) Yep ah, i guess i will do frobbers through the artifacts after all anyway, i'm gone * Amthrax waves * dan waves too *** You have new email. *** Signoff: aleung (Ping timeout) *** Signoff: Amthrax (Ping timeout) *** Amthrax (amthrax@NONE-FOUR-FORTY-THREE.MIT.EDU) has joined channel #6.170 Stupid power We need wireless power! *** Signoff: Amthrax (Quit: Leaving) *** Amthrax (amthrax@AWAKENING.MIT.EDU) has joined channel #6.170 *desperate ping* *** Amthrax is amthrax@AWAKENING.MIT.EDU (Amthrax Arlan) *** on channels: #6.170 *** on irc via server clamshell.ambulatoryclam.net (Ambs's test IRC server) *** Amthrax has been idle 48 minutes, signed on at Mon May 3 13:06:18 2004 *** amthrax : End of /WHOIS list. > *useless pong*? *** aleung (~aleung@MACGREGOR-THREE-SIXTY-ONE.MIT.EDU) has joined channel #6.170 * dan waves. > Damn power outages. hah, yup wow, i just saw you walk by outside which was completely unexpected *** Global -- from NickServ: Warning: Repeated bad password attempts for nick STL eh, i got snap to grid to work Cool. I'm going to start on collection properties shortly stupid upper left corner oriented positions i guess i'll snap with mod or something rather than ieeeremainder arg, but why does the ball have to be different Oh, sorry about that That's another thing that came from the wonders of their specs eh, don't worry about it the ball will just snap funny, i suppose Maybe the ball shouldn't snap at all? yeah, i just thought of that it'd be annoying to treat different gizmos differently though i guess i'll see > Blob specs ci'd Collection properties spec'd It's backwards compatible. New methods are: Propertyified.addToCollection, removeFromCollection, addCollectionProperty, and isCollectionProperty and Property.getCollectionValue *** You have new email. Oh, and I think I thought of a good way to reconcile our totally general collision mechanism with our TA's insistence that we use a completely different approach. Make all of the standard gizmos derive from AbstractStandardGizmo, which would implement the current collision mechanism to the game system (though I still think we should repackage that with the CollisionManager), and present the abstract geometrical interface to the standard gizmos. Of course, I still take issue with abstracting the geometry because the physics library is far from complete But that would probably pacify her (which, sadly, might be necessary if we want to be in the running for design award), since that was the only real problem she thought our design had *** You have new email. *** You have new email. *** You have new email. *** You have new email. maybe we can complete the physics library while we're at it Gaaaah. No. hah, alright build mode and gizmopalette basically work now i'll ci later tonight after it's polished up *** You have new email. aah, i think i just figured out the S in SVM the stupid problems our minds solve in idle Haha I wonder what Magdalena will think if she asks us for the copy that we're using that magically works... considering the code I was reading is just the one on the course web site. > Yeah, the idea of having an AbstractStandardGizmo occurred to me too. Maybe using the blob system. I don't actually want to do it, but it could be done. > It also occurred to me as I was taking a shower this morning that we could probably even implement Traffick in Gizmoall. > (Whether we'd *want* to is a totally different question, but we *could*) Hmm. So, a super-set of the blob system that allows you to specify the dynamics of the components? > Yeah, you could specify the blob shape of the gizmo, and its velocity, and compute time to collision from that. > (It also has the nice property that collisions in the editor are handled using the same geometry as the simulator collision mechanism) That's true Though the gizmo should probably be told whether or not it's in being in editor mode, because some of them may way to have different bounding behaviours (ie, flippers) > I forgot about that case, but yeah. yup, i always dreamed of a collision system universal to both modes austin, doesn't the magickeylistener work for unix? ah, i see that's what your email was about but yes, i meant to ask you yesterday, having looked at the code again myself *** You have new email. about the traffick thing, something about incoming and outgoing triggers reminded me of bipartite graphs ::shudder:: *** You have new email. *** You have new email. > bipartite graphs? No! We will not speak of those again! *** You have new email. *** You have new email. *** You have new email. *** You have new email. *** You have new email. wow, i managed to get your checkrep to assertion fail Assert.assertTrue(event.type != SimulatorEvent.END_OF_TICK); that one in particular in GameBoard it's apparently also possible to add enough balls to crash the system (and no, i really don't know why i'm doing this) > huh, that's an interesting one to have fail. I can't think of how you'd make the simulator break in that way. *** You have new email. *** Global -- from OperServ: Macman is now an IRC operator. ack, it seems the fall's stuff is all about custom look and feel Hahaha, you've checked in the file for that screenshot, right? ]:--8) (The flipper code is still rather messy and largely untested, BTW) Collection properties ci'd Ah, yeah. I can confirm flippers aren't working quite right (it looks like collisions with either endpoint are correct, but not with the flat part) Alright, I moved the gizmos into gizmoball.gizmos.standard. It's a trivial but awe-inspiring checkin. I recommend doing an ant clean after checking it out (Mind you, this was after at least two hours of heated battle with Eclipse and its refactor utility [I don't know how you do it Albert -- you must have much more stamina than I do]) BTW, I just added a doc/issues.txt file with general issues that need to be addressed Oh, Albert, could you get the FDD to Dan or I at some point? You can slip it under my door if that's convenient Alright, enough rambling to myself... I'm going to bed i'll drop you the fdd in about 30 mins looking at the timestamps, i'm hoping you're not still up if you wanna see an implementation of an abstract action system, check out 54 from the fall they also seem to have network play fdd delivered, collisions with welcome mat tested *** You have new email. *** You have new email. Thanks Holy.. It just dawned on my how much she doesn't understand our collision approach. "So you assume that only a ball moves? What if the amendment was to make any gizmo mobile?" *** You have new email. > Wait, she thought we made that assumption? > (She thought we made assumptions?) * dan pounds his head against the desk. Yeah, isn't it great? I'm wondering if we should email her and directly ask how we can express the fact that our collision system is totally general since we apparently failed to get this across. On an almost unrelated note, would it be much trouble to add line segments to the Blobs? "Let me know .. if it actually works for you" That fills me with so much confidence > I suppose there's no reason not to have segments in blobs. We already have points, after all (as zero-radius circles) > (Could I implement line segments as zero-width rectangular polygons or something similar?) > And I agree, we do need to do something to drive home the point that our collision system is absolutely general. Um, I suppose there's nothing wrong with zero-width rectangular polygons from an algorithmis standpoint (thought it might be unnecessarily slow). Mostly I want them so dynamic blobs are more directly implementable. * dan checks the '6.033 dp2' checkbox with great fanfare. > I turned the design project into something I'm almost not ashamed to turn in with my name on! > (Though that may be because my standards fell as I grew more sleep-deprived) Heh heh > I'm not sure how serious I was about the zero-width polygons. It was mostly a joke, though I guess it would make implementation easier. > (In any case, I'll put in an addSegment method) Okay > But first I need to take a nap, and flush my mind of Mars rovers. Then I'll implement blobs. Hopefully they'll be implemented and tested tonight. Cool. G'nap yeah, i think looking at the comments, she must've missed a thing or two about the collision system and she seems to bring it up everywhere she also seemed to be against our individual drawers, but i suppose it was badly expressed (sounded as though each gizmo class needed a drawer) btw, we could probably optimize the drawing using blobs (check blob intersections with dirty rects and only redraw gizmos that have some overlap) *** You have new email. damn, this wireless mouse sucked up a pair of 2250mAh AA's in a day *** You have new email. Actually, I was thinking that a lot of the drawers could be collapsed using blobs (kind of like the polygonal gizmo drawer now, but draw any blob -- which would cover most of the standard gizmos). The problem with using dirty rectangles for that is that you need to know which rectangles are dirty, and there's currently no way of reporting that. if we tracked last positions, we could do a bounding rectangle of anything that changed positions and mark that as dirty (positions and rotations, i guess) and the only problem with collapsing the drawers is if we want to customize gizmo looks, we'd probably have to do it on a per gizmo basis i guess we can dispatch within the standard gizmo drawer, kinda like the hack now for the absorber but anyway, we basically only have 3 drawers for the standard gizmos now poly, circle, and flipper plus the ball, cause of the origin specification ah, i just turned antialiasing on maybe mac has it on by default everything looks much more pleasant Oooh, I didn't know you could tell it to do that Have you tried selected non-default L&F? Dan's laptop wasn't antialiasing (we determined this), but its circles were much rounder. are you sure his vm wasn't doing it by default? apparently, you can set it, and the default is different per platform I'm pretty certain. We zoomed in on it to be sure Who's around? *** You have new email. eh, i'm here your email looks ok although i really doubt it'll clear things up with her I still don't understand how she can so thoroughly misunderstand our system Maybe she's just too stuck on her idea of a generalized physics thing to understand that it's equivalent Admittedly, that would package things a bit better, I think, but it would also highlight the weakness of the physics system they gave us i've never really looked in detail at it what do they provide? Exactly what you need.. and nothing else. The physics library is in no way general. ie, it has specified methods for ball-ball collisions, and others for ball-wall collsions, and even others for ball-rotating wall collisions. oh, can you quickly do the polygizmo? i'll try to set up the building framework for that soon I can spec it quickly It'll be the same as AGWPG, but with an added GizmoVertex collection property Do you have the frobber menu done? *** You have new email. *** You have new email. Because I'd recommend getting the frobber menu done before implementing poly editing (since that's not required) Dan, can you add getters to the Blob? I go ahead and code to Set getPolygons(), Set getCircles(), and Set getLineSegments() (Speaking of which, why don't you use addCircle(Circle)?) Also, I assume we assume blobs are relative to the gizmo origin? > *pong* He lives! > Yeah. I told myself I was going to take a nice short nap. > That worked pretty well, except for the short part. > Sure, we can have blob getters. I conveniently left them out before since we didn't need them, but it's no trouble to put them in. > I was originally thinking of blobs as having absolute position. But that's not so useful for us, is it? It's hard to say And it'll greatly affect the semantics of intersect > Right. I personally think blobs should be as static as possible > And we'd probably also want the origin-position to be mutable. Yeah > (Which screws with the semi-mutability of blobs) *nods* I think the absolute position of the blob should be blob+getPosition > Where getPosition is AGizmo.getPosition? Plus, I've been thinking of blobs more as the "geometry" of a gizmo Yes > I've been thinking of them as abstract geometric objects that just happen to be useful to us. Heh, yes Oh, speaking of which, do you want to see the FDD? > Sure, I guess I ought to take a look at it. Gah. I hate flippers... Why did we say things could not snap to grid and have arbitrary orientations? > Ugh. Reading the FDD comments has managed to totally un-enlighten me. > I disagree (almost) entirely with everything she's said. > I'm amazed that she managed to misinterpret our collision system so thoroughly. Yeah I'm hoping the email I sent will help, at least a little bit > Yeah, I just reread that too (it makes a lot more sense having seen the FDD comments) > Inasmuch as 'sense' is a term that can be applied in this case. > I'm also proud of myself for managing to include a reference to Section 2.5.3 in the middle of Section 2.5.3. That's the kind of thing I would do just to be obtuse, but I didn't plan it in this case. Oh wow... I'd missed that too > I assume it was a last-minute resectioning issue or something like that. > Your tact is impressive. Heh, thanks. It took a lot of work to distill my wish to rant into that > Yeah. There's a lot to rant about. > Ooh! My battery will ship today! > (I was actually in the process of composing a rant about that.) Congratulations Before we get too deep into this, are we shooting ourselves in our collective foot by allowing non-grid-snapped gizmos and arbitrary orientations? > Do non-grid-snapped gizmos really make things harder? I could see arbitrary orientations being a problem. Well, afterall, without those two properties, the blob system becomes completely unneccessary > Oh. Then we could just define editor collisions in terms of grid squares. Hmm. And we can just return bounding boxes and be happy like the rest of the groups (Speaking of which, have you looked at projects from previous terms?) > Nope > Did they actually post a working link somewhere? Yep (finally) Last terms' are up It looks like Fall '02 is up, too > hmm. Looks like there's some interesting stuff there. Yeah. I wish that'd been there before so we could have sto.. gotten ideas I'm trying to figure out what the hell was up last term with all of the bizarre custom LaF > hmm. So do we want to disable disabling snapping to the grid? > It seems that arbitrary positions are a good thing to have. But I guess it does make things a lot harder... > What about just leaving out arbitrary orientations? Would that make things any easier? It would certainly make things easier, though I'll have to ponder for a moment to figure out how much easier If we disabled arbitrary orientations, would it make it possible to use regular bounding boxes? Oh, and there are still poly gizmos to consider (Was that what prompted up to do this whole blob thing in the first place?) > Well, we still have round things like balls and circle bumpers too... we could bounding-box them, but obviously that gives us some limited flexibility. That's true, but at least with those we'd only lose (1-\frac{\pi}{4}) of the area to the bounding box ]:--8) > Yeah, and we're not trying to close-pack gizmos here. ;) The other advantage of non-arbitrary orientation is that it lets us expand into pixmaps for gizmo prettification That's also true > How do we handle non-arbitrary orientation in the editor? (Do we?) Uh, come to think of it, probably the way we are anyways, since I don't think we've discussed arbitrary orientation with Albert. Click the rotate frobber to rotate by 90 degrees? > (I actually meant to type 'arbitrary orientation', but that answer still works) Oh, yes So... What is the fate of blobs? I'd like to use at least a bit of the blob code to write AbstractFixedGizmo What about the polygizmos? > What about them? Should we just ignore the bounding problem with them and let them float etherially on the board? > Hell, why can't we just let everything float on the board? Do we even need to consider editor collisions? That thought has crossed my mind, but they technically do specify that there should be editor collisions > Oh. But it's empowering the user? If they want to have two bumpers overlapping, who are we to stop them? Yeah, I know... > Well, if they say we have to, even if it doesn't make sense, I guess we do And, really, it's not a problem now except for poly gizmos, which I think we can ignore (EtherealPolyGizmo?) > Our simulator can, after all, deal with balls inside PolyGizmos. That's true > Why don't we just specify that a PolyGizmo is just the outline of a polygon and stuff can be placed inside it? That might even be useful. * Amthrax nods Of course, weird things happen if you place things on the.. edges But we'll ignore that, too. In the name of user empowerment! > Sounds good to me. So, does that leave you working on the property table now? (If so, mind if I sketch out some things I was thinking for that?) > I guess, unless there's something we want me to do with bounding boxes. > (SquareBlobs!) Uh, I guess just add the Right Method to AbstractGizmo Be sure it can return null or something for gizmos that we don't want to have to deal with ]:--8) > getBoundingBox()? How should it be specified? Make it abstract for the gizmos to override? In the constructor to AGizmo? a setBoundingBox? Hmm. I think abstract getBoundingBox is probably best 'Cause otherwise you'll need both a get and a set method > Yeah, that's what I was thinking. Since it depends on position, in non-obvious ways thanks to their weird positioning specs. Yeah Speaking of which, what should it be relative to? > Should it be relative? Hmm. I suppose none of our other getters are... Which is actually probably bad, but eh Then again.. > It might make things weird in Albert's code. I dunno how he deals with placing the gizmo. Is the new gizmo actually a gizmo? IIRC have we ditched blobs? or ditched non-arbitrary transformations? regardless, we need to handle gizmo selection mouse clicks which, i guess bounding box is sufficient > Yeah. Except with polygons, since they wouldn't have bounding boxes. so no editor collisions? > No, we still have editor collisions represented by bounding boxes, just not for PolyGizmos. ah, ok *** Mode change "-A" for user dan by dan *** Your user mode is "+oiwsgnh" how are polygizmos handled? *** Mode change "+aA" for user dan by dan > For editor collisions? They're not. ok any other significant changes? > For clicking? By a special case? i guess at the very least, i can restrict point definition during polygizmo building to remain outside of other gizmos since we have to handle clicking anyway > An abstract testIntersectionWithPoint? > Austin really hates flippers. i would imagine > Or we could just completely ignore PolyGizmos in the editor, since they're not required, and deal with them when we have time? sure, that works will you be doing the property table? > Yeah, Austin and I were just talking about it. i was thinking more of an editable tree > That's good, so were we. eh, reading the stuff for it, it's somewhat ugly? anyway, i guess i'll do frobbers for now > Yes. Do frobbers. Frobbers are good. > Austin and I are in agreement on that. *** You have new email. as usual, i will be gone tomorrow i will be leaving tonight, returning tomorrow night if i don't have frobbers by then, i should be close > Sounds good. I'm looking into how to do the property table. *** You have new email. from what i read of it, you could make treecelleditors for each of the various value types there was the issue of distinguishing between a position property, which you would want to edit as x,y and velocity which you would want to edit as mag angle (well, prefer to edit as mag angle) Yeah, we were looking at the tutorial on how to create editable tree tables last night cool it didn't seem to cover much actually Hmm, good point. I guess the only way to distinguish those is by the name of the property (kind of ugly, but..) there was that thing about making treetables ah, another issue so the collection of gizmos is a property of the gameboard making that do add or remove might be tricky and if you want propertyifieds in those collections to expand to show their properties that'd be tricky too actually, maybe not so much with gizmos you could just make it select the gizmo and then use the tree from the gizmo I'm not sure if we should display the gizmos of the board that way Just because it might prove confusing to the user hmm it'd give you a nice heirarchy but i suppose it would be confusing * Amthrax nods still, doing add/remove of nodes that might be tricky BRB btw, do you know if loading in pngs maintains the alpha data? Um, if it can load png's, I suspect it will ok maybe we can still do prettification like that eh, i'd still like to optimize the drawer I don't think it really needs optimization. Is it running slowly? not at current scales of things Oh Have you disabled the gameboard checkrep? ah, maybe that's it but it is obviously inefficient if you placed hundreds of perfectly overlapping gizmos it'd redraw that same spot hundreds of times we can definitely store the drawn unmoving gameboard and then only draw the moving parts anyway, i guess for now it's alright i'm leaving soon if anything comes up, you can call my cell btw, reading her replies to your questions i think she's still missing it *nods* I considered the static store a while ago, but I'm not sure how you'd implement it (ie, currently there's no general way to find out if a gizmo has moved or not) I agree, though I don't think she's completely missing it yeah, i don't think so either i guess we can optimize in the end if it's even necessary performance with lots of balls seemed a bit sluggish more than expected That doesn't really surprise me, since then the collision system has to do O(n^2) tests. ok i figured it was collision side did you see the snow one from the fall? that ran surprisingly smooth how are flippers, btw? Yeah, that was cool It might also be that drawing circles takes a long time (since they would have had hardware acceleration for that) I'm still reworking the collision system Though I'm getting tired of doing that, so I think I might rerework it to be simpler hmm for kicks, i'll make balls rects Eh? you said circle drawing is slow? Oh eh, it's the collisions i don't think people would be able to tell that these squares were colliding as circles do That's true hah, moving squares are an exciting change after watching balls so long how sad i tried the placing many overlapping circle bumpers, there seems to be no to little deterioration in performance i also tried placing non overlapping ones with the same result i think this is only amusing cause squares are more often symbols of something in the computer world Hmm, yeah. The overlappingness of those shouldn't matter at all, though yeah, it shouldn't, but just checking if there's some implicit optimization though i can't imagine how there would be ah, we could do a simulated world, birds eye view with flippers as doors and balls as people we could make the sims how scary... * Amthrax twitches it might be award worthy or at least amusing If we have time/stamina/willpower, I think we should make tetris eh, definitely we don't even need amazing collisions stuff each falling piece just triggers the random piece generator to release the next one and triggers the piece heap thing to merge it *nods* the only thing we're missing is probably the trigger system alright quick overview of what we have to do: saving, frobbers, gizmo selection, property tree And some tweaks of the gizmos Gizmo draggin/moving? things we can do: prettify gizmos, polygizmo editor support, enhanced editor support, prettify stuff, generalize collisions even more(?) abstract actions Collisions are already totally general yeah, i know Though I think the way we do it should be changed to be more explicit (see the issues.txt) but people (person) are lobbying for more general if i have time, i will do an mdd/object model builder in the editor We can't make something that's already totally general more general! Person must be smacked into understanding this... and maybe antichess in the editor Heh heh supporting mouse clicks in play mode would suck how about gizmo properties for visibility and tangibility? Hmm. That might be interesting, though I don't see how it would be useful eh, you could make gizmos disappear, in the physical and visual senses and if we abstract the triggering to support arbitrary property setting people might want that those properties also, color... ugh, the green is bugging me all the std colors are supersaturated Heh, yes. I think the default colors should be changed. ]:--8) well, it'd be nice to be able to set them through the editor and what not That's true and we can definitely prettify gizmos without using pixmaps that would be a start Yes just gradienting them or whatever (BRB. I'm getting hungry and my student is nowhere to be found) hah it's a nice day if i were your student, i wouldn't be there either ah, i guess we could have a style property too that supports setting the look on a per gizmo basis and out of undecidedness/the desire to steal and outdo past terms, support all the looks they had: metal, shaded, etc. anyway, i gotta catch a bus i'll see you guys tomorrow night/sunday morning btw, out of curiosity, have you heard of sam gentile? Yeah, if I were my student and I was going to be here, I wouldn't have said "See you at 4:30" earlier today Hmm, and have a propertyified style class that captures all of the style settings for a gizmo? That could be cool Nope Happy bussing > I'm not your student, but today I said 'it's a nice day, I don't feel like going to class'. > Of course, instead I spent three hours at the pistol range. Of course > hey, I figured I'd better make the most of my $10 ammo fee. Ah I _should_ have said "It's a nice day, I don't feel like going to the 004 lab today" > So I went through two 100-round boxes, and started on a third. It was a very productive day. > Or destructive. Were you picturing Gizmoball on the target the whole time? > I was thinking we should take our FDD to the range sometime. And my student finally appears! Be back later > (c-entry.)Albert and I were talking about taking the 6.111 lab report to the range and shooting it. But we think it would survive. > Happy student-tormenting. *** You have new email. *** You have new email. *** You have new email. *** You have new email. > I ci'd the extensions to AGizmo to support bounding boxes. > I put in a default implementation that just returns null (no bounding box) instead of making it abstract so it wouldn't break things until the gizmos support it. We may want to change that later. Okay > I'm propertyifing GameBoard now. > One snag I hit was that for the collection property representing the gizmo list, the getter is getGizmos() and the mutators are addGizmo() and removeGizmo() > I'm pondering the implications of making the properties system automatically add the 's' to the getter name. I'm not thrilled with that idea. *** Amthrax_ (amthrax@AWAKENING.MIT.EDU) has joined channel #6.170 *** Signoff: Amthrax (Read error: Connection reset by peer) *** Amthrax_ is now known as Amthrax *** dan is dan@clamshell.ambulatoryclam.net (Dan Ports) *** on channels: #6.170 *** on irc via server clamshell.ambulatoryclam.net (Ambs's test IRC server) *** dan is an IRC Operator - Server Administrator *** dan has been idle 17 minutes, signed on at Thu Apr 15 03:43:10 2004 *** dan : End of /WHOIS list. > I'm propertyifing GameBoard now. > One snag I hit was that for the collection property representing the gizmo list, the getter is getGizmos() and the mutators are addGizmo() and removeGizmo() > I'm pondering the implications of making the properties system automatically add the 's' to the getter name. I'm not thrilled with that idea. I've put some thought into that, too I'm going to add a second argument to addCollectionProperty that takes the plural (I was originally going to add an "s", then I realized that English pluralization rules are quite that simple ) > I had essentially the same realization. > Want me to take care of it? > (I did, in fact, implement the 's' rule before realizing that things weren't always so simple) Heh. Sure, if you want. > Oh, I decided to just make Vect a property-table primitive instead of propertyifying it. > Otherwise its immutability would have broken things Ah, true > ci'd the pluralified collection properties and (partially) propertyified GameBoard Cool. Does it have friction/gravity? > Not yet, just gizmos right now. Okay Did we ever come to a conclusion on coordinate systems for gizmo get methods? > Which get methods? For getting geometry-related stuff ie, gizmo-relative or board-relative > I don't think we did. Alright. I'll just go with board-relative because that seems to be more useful > I think so too. > oh, I defined the bounding box by its upper-left corner and width/height. I figured that would be the easiest way to do it, but feel free to change it if you disagree. Okay > bah. I wish c-electric-brace would behave. That would be nice Oh, if I write the CollisionManager, would you mind shifting GameBoard to using it? > Sure, I guess. Uh, what does the CollisionManager do? Basically maintains the list of CollisionHandlers It's the generic programming with statically registered interaction handlers thing we were talking about a while ago > Right, I figured that much. Uh, so, I suppose you'd be able to give it two gizmos and it would give you back the appropriate CollisionHandler (or null if they don't collide) > Sounds good to me. I intend to finish shifting over to the abstracted physics thing tonight, and I'll hopefully have time to write that too (I'll at least spec it) > OK. Are there any other required features that you need to work on before the release? The saver Oh, and the multi-ball absorber But I'd rather write the multi-ball absorber on top of the new collision system instead of moving it over later > If you're sure you'll have time... Er, and polygizmos. But that's almost automatic with the new abstract physics gizmo Well, I'll see how I'm doing after tonight > ok > My hanging braces behave! Ooooh > That was *far* harder than it should have been. How'd you fix it? > (setq c-hanging-braces-alist '((defun-open after) (inline-open after))) Oooh > I think the inline-open is the only one I needed. But I also think I tried that before too. *shrug* Gimzo! > GimzoAll! > Need to get something to eat, AFK for a bit. return Geometry.rotateAround (Geometry.rotateAround(vect, center, orientation), rotationPivot, rotationAngle).plus(getPosition()); Gah. I knew there was something amiss with c-hanging-braces-alist. It leaves out all of the rest of the hanging braces. Do we actually use the last position anywhere? AFG tested and ci'd. AGWPG is still there for now for backwards compatibility. ah, i've returned, btw seems like you guys have had a fairly productive session Ah, cool. Welcome back Would you mind merging R2PolygonDrawer and R2CircleDrawer? I was about to do so, but you actually know what's going on in them how would i distinguish between polys and circles/ Take a look at AbstractFixedGizmo cool i guess i'll look through all the changes as well Basically, I'm phasing out AGWPG for AFG because AFG is a generalized AGWPG (AGWPACG?) AGWPOCG? and circular. The geoemtry is a union of polys, circles, and line segments It's also half-way between the broken generalized physics thing Magdalena wanted us to do and our system ah, ok yeah, it seems so (ie, it provides the physics magics for them) how's the tree going? I haven't heard from Dan for a while alright I should probably go check if he's dead... Anyways, I'm working on moving the AGWPG gizmos, the CircleBumperGizmo, and the FlipperGizmo over to AFG (though you'll probably still want a special drawer for the flippers) This should also fix the flipper brokenness alright, great we might not actually need a special drawer for flippers, but i guess we'll see alright, i might not work till the morning i'm gonna have some food brb * dan is not dead. If possible, it would be nice to have the R2FixedDrawer soon, since I'm going to be breaking R2 pretty badly. Unless I'm mistaken, it should be a fairly easy merge of the poly drawer and the circle drawer. sure thing, i'll go through the spec and do it now Cool, thanks For the time being, it's probably best to leave in AGWPG so we can smoothly transition i did some r2 refactoring that i don't think i ci'd what's the link to the spec again? http://awakening.mit.edu/~amthrax/gizmoball/ I'll update that now... alright it was giving me a 403 for a sec Should be up now > Speaking of refactoring, I feel the urge to refactor GameBoard since it's getting so unwieldy. But I can't think of any really good way to do it. The CollisionManager should help at least a bit, right? > A bit, but probably not much. Maybe some way to pull out the triggers stuff? > It's tempting to try to pull the simulator out, but the two classes would wind up being pretty tightly coupled anyway. ah, you pulled all the concrete gizmos? WDYM? > They got refactored into gizmoball.gizmos.standard oh Oh, yes. that makes sense ah, didn't notice that one for a sec, i thought you were reworking so much stuff you just killed it all (After a two hour battle-to-the-death with Eclipse's refactoring tool) > (Not to be confused with the non-standard standard gizmos, of course) are we doing the general triggered action system? Not yet? ok > I may work on that after the property table. eh, it seems the refactoring/moving isn't so smart after all so square, triangle, circle, outerwall, absorber are all AFGs? Yes And flipper And poly ok you haven't extended them yet, though? Square, triangle, and circle are done. Flippers are almost done. (Though none are ci'd) alright Wow. Flippers were altogether too easy to write with AFG's nice i just merged circle and poly drawers Cool. Tell me when it's ci'd and I'll test it alright damn, i'm getting cvs conflicts cause i moved stuff ci'd looks like everything's in order i don't know if the factory is handling outerwalls or absorbers right and the drawer definitely doesn't dispatch on them to make them non-solid if you just uncomment that part in the drawer, it should work fine if you get through all the gizmo stuff before i go, i'll make sure the drawers work so you can watch it simulate if you need Woah. Oodles o' ci's nothing exciting 'Kay. New gizmos ci'd BTW, in a sec the outer walls gizmo will just be line segments, so you shouldn't have to worry about filling it Er, not filling it, that is ah, but then i have to worry about line segments You'll have to worry about those anyways, since they're part of the AFG geometry true alright, it's a good fix OWG with line segments ci'd tested everything looks good the absorbers aren't line segd yet, i guess but flipper collisions seem to work i'm getting a weird checkrep fail on the gameboard though The absorbers are still polygons. I'm pondering exactly what to do with those (more generally, I'm doing the multi-ball absorber now) Cool Dan? it's probably the paint function calling the accessor in between ticks? * Amthrax pokes Dan that doesn't seem likely, since the repaint and ticking are synched Yeah... but it is the event.type != end of tick assertion Looks like he passed out again. I'll let him rest for a while I think he was having weird issues with that before, too. I'm not convinced that's a oorrect assertion yeah ci'd the updated drawer stuff Cool AFG is nice ^_^ Heh, yeah. I hate to admit it, but Magdalena was on to something with that. Of course, she was on to the wrong something, but that's another matter... Ooh, antialiasing! (Sorry, this is the first time I've seen it aa'd) lol non-pixmapped things have one slight advantage Hmm, that checkRep failure is rather annoying... Maybe I should go wake him up i can do non-bounding box gizmo selection things pretty easily and it looks decent Ah, true. I noticed you were doing some magic with that in your drawers it's just stroking twice more in varying thicknesses Hmm. How does one select in the editor? oh, one doesn't yet if we have the (new) blob stuff ready, i'll implement that first thing tomorrow Okay. Want me to go ahead and add the bounding boxes now? sure hah, editing is nice it allows me to transform the some bumpers testfile into something interesting Heh heh rather than just watching the ball go up and down i haven't gotten the assertion fail for this board yet hmm, it seemed to die when i tried to smack the ball with the flippers * Amthrax nods I have no idea what that has to do with Dan's assertion. Hopefully he'll have a better idea is there gameboard side support for flipper collisions? Nope hah, i forgot to remove the test tree i added from the property part of the ui BTW, I updated the issues file today is that in the docs? Yep which file? doc/issues.txt ah, yes, so clearly named Heh about the load save thing since the interaction mode calls the xml parts it catches the exception there i guess i can have it rethrow and have the ui catch it and then report the text Yeah, that's probably best alright Alternatively, you could have the interaction mode report it, but that's probably suboptimal i haven't really used the status bar since the ui's been working i guess i'll rethrow and recatch it Oh, you mean display the error in the status bar? Wouldn't it be better to display an error dialog? hmm, i guess that works too as a user, i tend not to like error dialogs, regardless of what they report I suppose, though people would probably be expecting an error dialog there's this forced choice of accepting the failure yeah, i suppose Heh, or we could use.. an error UI continuation! (Sorry, obscure reference to CSAIL's Haystack project) i'll do it both ways, then Heh, so add a cancel button ]:--8) ah, the orientation setting accounting for blobs isn't too hard I suppose, but that doesn't make blobs any less of a pain and i've already planned for orientation snapping Oh, speaking of which, how're the frobbers coming? i have the design in my head so implementation shouldn't be too bad the only annoying thing is accounting for display edges Heh, so make the window bigger ]:--8) eh, i'll just make the frobber menu smart it'll have to be two tiered near corners though, which i guess isn't bad it's still more usable than the alternative Yeah looking at past years, i wonder why there were so many designs where you had to click a button in the top toolbar to do a rotate Out of curiousity, where are you drawing the gizmo palette? I just noticed that they look like pixmaps, but you don't have any pixmaps... at the very least, why not a right click popup menu? oh, it's in the icon drawer Yeah, I wondered about that, too Too many people stuck in their old ways. ]:--8) i suppose to be fair to mac people who have no right clicks but i always wondered about that and why mac people don't have multiple mouse buttons of all things to be non-conformist about... I still think that's one of the worst aspects of the Mac interface let's remove the right shift key while we're at it I wouldn't call it non-conformist... just traditionalist Heh but about the icon drawer i was debating whether to pixmap the icons Hmm. Would it be possible to use the gizmo drawers themselves to draw those? yeah, i was debating that too the debate is in the spec for the icon drawer, i think or at least in the comments i think i'll just pixmap all the icons for the ui ultimately Is that easier than using the gizmo drawers? I also kind of like how past terms put text on the buttons to say what the gizmos were (instead of just circle, smaller circle, smaller circle with a box around it ]:--8) the reasons against using the gizmo drawers themselves were 1- scaling, and 2- some gizmos don't look like what they are Ah yeah, it was a temporary solution i guess part of the reason for having gizmo palette dependent on the drawer was so the gizmos in the palette look like they do in the drawer but at the same time, i don't know how much you really want the buttons changing between drawers well, i guess having an icon drawer still lets you match the icon look to the drawer anyway, ultimately it seems more a subjective choice than a matter of correctness so whatever you prefer Alright, one more random question: Would it be not-too-ugly to make the ball snap to the middle of a box, despite its origin? That's true. I can certainly see what you mean about the size being an issue (though maybe all of the buttons should just be made two spaces high to fully correspond) I still think it would be best to use the gizmo drawers, since they'll look exactly the same yup well i had this notion that r2 drawers would still have flexibility, like color setting and things like that and that shading option for a prettier version so you still wouldn't get it looking exactly the same but sure, it's not a hard fix Hmm. Well, since you still need to show something meaningful in the palette, it seems that it would make sense to choose reasonable values (ie, the defaults) yup Okay. Well, only if you have time. The frobbers are more important ah, we should probably have settable defaults snapping the ball, that's pretty ugly Mm, I disagree. Defaults are defaults for a reason ]:--8) Yeah, I know. (I'm still trying to convince myself of what origin they're thinking of in the specs) yeah the options look like this: i can make the buildmode just not use snapped position when the ball is being placed Oh, that would be good, too i can write a separate snapmode that gets used when balls are being placed, but this means ball snapping can't be easily disabled i can have it automatically deactivate snapping when balls are being placed and set it back to the original value after? that way the default is free ball placement but if you wanted it to snap to the upper left corner, you still could Hmm They all sound good. Whichever is easiest i think i'll go for the last maybe if there's time, i'll do customizable snapping wouldn't be too hard alright, here's my tasklist, ordered: gizmo selection, frobbers, the frobber actions, poly build support, prettifying things btw, i was wondering what the default poly icon would look like which was why i ended up having the icon drawer work the way it did Sounds good Ah, hmm. An amorphus blob! there didn't seem to be a reasonable default Speaking of which, I should probably go wake up Dan... eh, it's early i'm about to go Okay here's stuff i'm hoping gets done soon: Oh, editor collisions should slip in there too well, i guess the big thing is saving I'll have the bounding box stuff in soon ah, editor collisions, right that'll go with gizmo selection since the mechanism is pretty similar Yep, saving's on my list, too. That shouldn't be too hard, though it'll take some time other things: moving polys! the advanced action sstem system (maybe not so soon) if you had controllable gizmos, i figured you could have the controlled velocity and add on to it velocity from forces, collisions, etc. Heh, that would be interesting (Though the physics library doesn't give us stuff for that. Stupid physics library) you could make stupid walking gizmos or a magic ball gizmo eh... ah, i had a list of potentially offensive demos we could build Heh, then GizmoAll could be Traffick, AntiChess, Flash, PowerPoint, Illustrator... most involve pixmapped gizmos Heh. Bad Albert! like one where you try to hit a ball at a bolin gizmo with a flipper Heh heh, actually he'd probably appreciate that or one titled "but our collisions do work..." with a magda gizmo getting struck by balls LOL and various staff gizmos with descriptions "doesn't do much" Heh heh heh and we can easily implement the bouncing baby game, if you're familiar with it gizmoball.gizmos.staff? what could be better than having the 6.170 staff as gizmoball bumpers... i guess when i'm done with my tasklist, i can start with the gizmochess mode in the editor it seems trivial enough btw, when we prettify the ui, i should probably take a look at how things look on linux and mac That's true. but that'll all happen tomorrow They look pretty similar on Linux They look all round and watery on Mac i noticed the default fonts seem differently sized That's probably true oh, right, i have to make my mdd/om drawer X fonts suck, by tradition Heh i was trying to figure out how to do the multiplicity/static modifiers on the om arrows like what he best way of setting that stuff was interface wise i guess a frobber can toggle it anyway, i'll be back around 11 Okay will you all still be around? Someone's waking me up around 1, so I'll be back then cool I hope to go to bed reasonably soon alright Just a few more things I want to take care of tonight by the time you come to, i might have a significant part of frobbers done Cool might do that first, if i can't figure out the selection side stuff I definitely have bounding boxed in by then alright looks good Does Swing have a togglable button? togglable? you can enable/disable buttons Yeah, so the currently-being-placed gizmo button can remain depressed (and then be undepressed to go into selection mode) ah, that works i considered having a mode indicator icon in the status bar I think it does... though it might be a kinky form of a checkbox but i guess that wouldn't capture the current gizmo being built hmm, i'll look into that I think teams in previous terms have done that you do like the stamp format, where you can click repeated to place multiple gizmos of a type (the depressed button, that is) as opposed to the build and select format? Yeah, that's good, especially since some gizmos will probably be placed a lot (ie bumpers) yup, alright Though I still think a depressed button to indicate that would good, too (and consistent) ah, one past project had a draggable tiling build feature Plus it gives a fairly obvious way to switch back into selection mode oh, so unclicking the current build mode switches back to select? Yeah that works i'll have to look into whether it reports actions when the button is disabled I've seen a lot of programs use that approach.. therefore it must be good! yup we may still want modifier tools I don't know about disabled, but if you use whatever the toggle button is, it should only so you don't have to select individual gizmos to modify their properties Hmm Would they duplicate the functionality of the frobbers? Because that would probably be suboptimal not exactly well, rather than having to click a gizmo, then click the rotate frobber you can go into a rotate mode that sets orientation of whatever you click and persists like build modes do Hmm, that would be interesting, though I think it should be low priority alright the one in particular i was thinking about was color setting since that probably won't make it as a frobber and going through the prop tree for that per gizmo would suck That's true so a paintbucket style tool that sets color of whatever you click and if you're gonna have that one, might as well get some others but this is low priority probably higher priority than antichess but what isn't Ooh, ooh, there's a JToggleButton How nice and unexpected of them to call it something reasonable... nice can it be added to toolbars? eh, i'll look at it Probably it's pretty sad that i can probably do the antichess final project in a couple hours tomorrow It's a subclass of AbstractButton Heh ah, but JToolBars don't take buttons Oh? they take actions, it seemed? " As of 1.3, this is no longer the preferred method for adding Actions to a container. Instead it is recommended to configure a control with an action using using setAction, and then add that control directly to the Container." ah, ok Probably for exactly that reason ]:--8) hmm i figured they'd list the important methods in that case, a toolbar doesn't seem much different than a panel? Layout, maybe? eh, that doesn't strike me as particularly significant but i guess they've done some things like the dockability That's true do you like the idea of multiple internal gizmoball windows? For? so you could open several boards in the same interface it makes control ugly though but it's been done in the past Yeah. That scared me i also considered having views like a xml view in some editable text component we could synchronize gizmoselection with selection of the xml code for that gizmo! probably overly complicated to do Gah alright, we'll stick to a simple interface... we're not building visual studio Sounds good to me ]:--8) last i checked, the interface for that was terrible but i haven't checked in a while I kind of liked MSVS's interface, though it was quite cluttered Granted, that was before I discovered the magic of Emacs Now I consider practically any interface beyond a fullscreen text box excessive ]:--8) yup, i know what you mean i guess the extras in eclipse aren't too intruding vs just felt particularly cluttered I disagree, but, then again, Eclipse leaves a bad taste in my mouth every time I use it hah, alright Anyways, I'm going to go poke Dan now cool i'll tag out for him and take his place being the dead member Alright. G'night AFG's are kinda nice. All AFG's just magically inhereted bounding boxes Hmm. And I was about to make getBoundingBox abstract, but.. a lot of the test code includes gizmo subclasses Hmm. The physics loop appears to go off the deep end if timeUntilCollisionWith returns 0, collide is called, and timeUntilCollisionWith still returns 0 Granted, that may be correct, but it's probably not a good thing > I guess I can put in a special case for that. Not that I'm entirely sure how to handle that case. One possibility is to ignore it (Because it'll probably go away after another tick) However, I don't think it's right to hard lock the game loop when it happens > I don't think that's really the right thing to be doing either in most cases. * dan is reading the log. > (I'm going to stop passing out now, I think) Heh, okay > (Why am I so tired today? Or do I even need to ask that question?) Yeah.. So the repeated 0 collision time doesn't make much sense from a physical standpoint, but it can otherwise (ie, I'm doing some things in the absorber that don't make physical sense, and they keep sending it off the deep end) It must have something to do with the warm weather. > Yeah, I figured it was the absorber that was causing the weirdness. > And about the Mac having only one mouse button... yeah, I hate that too. > They even added control-click contextual menus a while ago... but nobody uses them, control-click is inconvenient to type. > I'm going to pretend I didn't just say 'control-click is inconvenient to type'. Heh heh heh Oof, my head is starting to hurt. I think I'm going to bed soon * dan throws back his head with insane glee and cackles at the thought of 6.170 staff gizmos. Ah, it feels so much better to be able to type "from physics import *" (I'm testing something in the physics library with Jython) > You had me thinking 'oh no, you didn't implement the standard gizmos in Python, did you?' Heh. Surprise! > Not that I'm opposed to it per se, I'd just rather not have to learn a new language in the three days before the deadline. Even if it is Python. ;) * Amthrax grins > I like the idea of renaming collisions as interactions. Oh, and it looks like the physics library always return 0 if two balls are going to collide with eachother and are overlapping, which is probably where most of these zeros are coming from Yeah, I think it would make it a lot clearer The ball thing actually turns out to be a problem for the absorber, since I was planning on letting the balls space themselves out for me > How would that work? I tell the balls to roll towards the lower right corner of the absorber. > Oh. That would be cool if it worked. It's mostly working If the physics loop didn't go haywire, I think it would even almost work > Yeah, I'm working on how to fix that. F = m_1m_2G/r^2, right? > Right Hmm. Gravity's broken > Wait, do we have universal gravitation now? Uh, not quite Though that _would_ be pretty easy to do I was using a gravitation model for the absorber (ie, put an invisible mass at the absorbent point) I wanted to avoid thinking about how to make it move towards it, but it looks like that's not going to work > "GizmoAll is not just a pinball game but a physics simulator, useful in predicting the motion of celestial bodies..." Heh. Should we make the ball mass a property, and if it's large enough, the gravitational effects become noticable? Make it even larger and it collapses into a singularity? > What if the ball were sufficiently massive that it sucked the outer walls into the board and broke them? Oops DEBUG BallGizmo: Tick: new p=<19,19> new v=<2147483647,2147483647> > While that's one of my favorite numbers, I hope that wasn't what you were going for. Not quite... And I think I found another way to send the simulator off the deep end > Damnit, stop abusing my beloved simulator! > JDE is so helpful! It just imported gizmoball.game.GameBoard.SimulatorEvent for me. > This seems like a vaguely strange thing to do in gizmoball.game.GameBoard, however. Heh heh Alright, I'm really not lucid enough to deal with infinite right now (I thought I fixed it, but.. new v=<-2147483648,-2147483648>). > I think that's a sign you should get some sleep. > And it occurs to me that I've become a morning person. But for entirely unusual reasons. > So if a collision pair gives time-to-collide=0 right after colliding, it'll get treated as though it actually returned MAX_TICK_TIME. *nods* I was wondering a while ago whether I not I could be considered a morning person. Sounds good Of course, by BST, everybody's a morning person! > (I was going to make it recalculate on the next tick, but that turns out to be just a little harder to do) > That thought occurred to me too. Want me to check in the last semi-working absorber I had, just for kicks? > Is that the one that grinds the simulator into the ground? Yeah But not with the INF's > Yeah, that'd be great, I was about to ask if that was checked in It's in > Cool. > Have I mentioned how great it is to have a project team that is actually competent, and even goes far beyond that minimal standard? > (Entirely unlike 6.033) Heh, speaking of which, how's that going (went?) > One nice long all-nighter later, I wound up with something that I was not entirely ashamed to turn in with my name on. > (Though I admit I wasn't totally pleased with it.) Ah, okay > I did some revisions to my teammates' sections. Fairly major ones, at that. I didn't tell them. > This is why I not only assignmed myself more than half the project, I also made sure I was the one integrating the parts. That's the way to do it. The nice thing is, with how long it takes them to grade the DP's, they'll never find out The only problem is that it might give them false confidence > err, did Albert start implementing the PropertyTable? > I hadn't thought about it giving them confidence. You mean the little thing in the UI? He just stuck that in there because he wanted something to stick in there > Oh, OK. Makes sense. > I was a bit confused since I have something else stuck in there. ;) Ah, yes. > It'd be kinda nice to have a 'revert' or 'reload' button that puts the board back to its saved state. Yeah.. Hmm. I guess by "go to bed", I meant get in bed and continue working *** dan is dan@clamshell.ambulatoryclam.net (Dan Ports) *** on channels: #6.170 *** on irc via server clamshell.ambulatoryclam.net (Ambs's test IRC server) *** dan is an IRC Operator - Server Administrator *** dan has been idle 7 minutes, signed on at Thu Apr 15 03:43:10 2004 *** dan : End of /WHOIS list. > GameBoard just broke 1000 lines. Eep That class alone is a tenth of the overall codce > I guess that's not wholly unexpected, but it's still scary. > I really want to refactor it. Somehow. Somehow Hmm. Vertexes or vertices? > I've always used vertices. > I think at the very least I'll reorganize the code in GameBoard so it's chunked into reasonable sections. (manipulating the gizmo list, simulating, triggering, propertifying, ...) Oh boy. I just managed to give a variable two names in the same declaration. It took me a few moments to figure out why it was complaining about this. > I think it's time to get some sleep. Yeah. I want to ci poly first Besides, I'm laying in bed. That counts, right? > hmm. The simulator is doing Weird Stuff. Uh oh Maybe it's sleepy, too? PolyBumperGizmo ci'd And speaking of which, g'night * Amthrax curls up, covers himself with his wing, and promptly passes out > Night. > Bah. The bug that was causing the checkRep errors is actually a fairly subtle but important bug in our collision system design. > Fortunately, a fixable one. ci'd revert button and status bar support for load errors > Cool. (i'll do an error dialog in a sec) > I'm knee-deep in the collision system right now. cool has austin been revived yet? and how's the subtle bug going? > I have the fix written, and I'm testing it now. > It turns out that the checkRep failure bug was actually being caused by an exception from the gizmo that got thrown and screwed up the simulator state. > The exception that was being thrown was when a ball and flipper were expected to collide, but actually didn't. > And the cause for that was that we didn't have a way to invalidate the timeUntilCollisions when flippers start and stop flippering. > And now we do. At least, hopefully. > hmm. Flipper collisions still aren't working right. > This is surprisingly elusive, but I'm pretty sure it's a bug in the gizmos not the collision system. Maybe Austin will have some insight when he revives. alright ah, btw bounding box isn't in yet? nevermind maybe i forgot to update > No, it's in. > (Isn't it?) lemme check again if it is, selection might be done > I'm going to ci this whole mess of code. It works more than what's currently in cvs, after all. hah, it seems selection always selects the outerwall gizmos > ci done, lots of things changed. that should be fixed > I'm mucking around in the standard gizmos right now, I may as well fix that. ah, so you'll have the bounding box different? > I was going to make it have no bounding box. no bounding box as in a degenerate one? > Or does that cause other problems for you? > A null bounding box degenerate is probably preferred > ci'd oh man, this drifting ball thing is interesting in the absorber ah, selection ci'd feel free to go to edit mode and watch things be selected frobber time > I'm getting too much enjoyment out of selecting gizmos. yeah, likewise wait till we have frobbers! i'll start on them once i get this place back to being livable > I'm going to go back to the PropertyTable, after my unexpectedly long interlude fighting that bug. has it been resolved? > Sort of. It doesn't throw exceptions anymore, and it has some useful new code that makes it deal with this situation better. But flipper collisions still don't seem right. > I'm punting that issue to Austin. It seems like it's the physics library misbehaving. is he still not revived? > He's alive, I talked to him earlier and showed him what was going on great i'm just about ready to do frobbers so in an hour or two, there'll be even more stuff to play with I left the bounding box in for the outer walls so that gizmos couldn't be placed overlapping with it, but maybe that should be a separate mechanism > That's what I figured. Reading diffs now > That should keep you busy for a while. Oof, alright I need to figure out how to colorize less. Reading that much green text is more boring than it needs to be Alright, the geometry of the flippers is right, which suggests to me there's either something else that's very subtle, the physics library is broken, or the physics library is expecting something other than what I'm giving it what's the issue with flippers now? They still don't work how do they break? The ball doesn't do the right thing ah, it goes off in weird directions with weird speeds? Yeah And passes through parts of the flipper in weird ways mmm, it seems to collide ok if the flipper doesn't move into the ball Yeah, non-moving flippers are fine eh, i get this weird lockup where the interface dies but the game seems to keep ticking That's interesting it seems to be from balls in the absorber? > I get that if you get two balls into the absorber at once. > It's a known bug. ok I think I'm just going to make the absorber stupider, at least for now. But right now I'm working on the flippers > I want to call it a feature, but I don't think I can justify tha... wait. They said we could specify the behavior of the absorber when it has multiple balls in it, right? Heh heh > Why do Sun's source files say: > * You acknowledge that this software is not designed, licensed or > * intended for use in the design, construction, operation or > * maintenance of any nuclear facility. lol Well, it probably isn't > And should we be saying that in our documentation too? Maybe they've had problems with this why not make it more general why specifically nuclear facilities but yes, let's say that in our documentation > And let's say that Gizmoball is not designed for implantation into the body or life support systems, like IC spec sheets. * dan is resisting the urge to ask the zephyr instance whether Gizmoball needs to be designed foruse in the design, consturction, operation, or maintenance of nuclear facilities. Hmm. So I made the flippers rotate really slowly and the reflection is definitely wrong. I think it's the physics library > hmm. The GameBoard log is reporting the current time in seconds, right? > Yeah Is it just me, or is the time increasing by one about every two seconds? > It didn't seem like realtime to me either. > (Is it not being ticked at the right rate?) Wow. Selection looks cool Is it possible to get back into selection mode after placement mode yet? nope i should do that Okay. Just checking but i'm trying to do a good general frobber system Okay > In keeping with the apparent tradition of the ui package, I'm creating a gizmoball.ui.propertytable package. How many classes does it take? > A fair number... PropertyTable, TreeTable, TreeTableModel, PropertyTreeTableModel... Gah Oh, oh, saner flipper collisions > Since, after all, there's no JTreeTable. Though I still don't believe their rotation rate > What did you change? The sign of the rotation rate > Oh. Was it rotating backwards? Apparently it was rotating forwards but moving backwards > Now that could make things interesting. Oh, great. It was expecting a clock-wise positive rate Of course > Naturally. It still seriously sends the ball flying > Yeah, that seems wrong. Oh > Ooh, I could buy a JTreeTable for $100! http://www.e-beans.com/products/tools/jtreetable/ * Amthrax sheilds his eyes from the light that just turned on above his head Wow. That you can Ooh, ooh, is it a Bean, too? Stupid coordinate systems > heh. The ui package has a multitude of subpackages, whereas the game package basically just has one really huge monolithic class. This amuses me. Ooh, an error dialog ]:--8) Wow, that's reasonable enough that it might even be correct! Fixed flippers ci'd mmm, i gotta see this > They flipper correctly! > This is even more fun to play with than selection! hmm, is that the correct speed? there also seems to be an occasional lag damn, i got it to crash without absorbers I'm pretty sure that's the correct speed, comparing with past term's flippers ok It's still pretty fast, but at least the ball doesn't instantly wind up in the absorber > TreeTableModelToTableModelAdapter is a perfectly good name for a class, right? > (Look! I'm using a design pattern!) Gah > It does exactly what the name suggests... I would expect nothing less > And that's the class javadoc. i'll be back in 30 mins this frobber thing is rather annoying Dan, out of curiosity, do your log messages check whether or not the stream is enabled before logging? > Nope. Should they? How would they? I haven't delved any deeper into log4j than calling logger.debug(). I'm just wondering how much time is bring put into formatting those strings even if they never go out > Good point. You might want to add the check to the more copious messages. See BallGizmo for how to do it > OK. I'll do that once I finish this. Are collision triggers fired before collisions are? > Apparently so, though I can't imagine why. Oh > I don't think they should be, so unless you do or it relies on something I'll change that. It would be nice if they fired after (This is arising in the context of the self-triggered absorber) > *nod*. That was what I intended too. > (And that worked before. Wow.) Alright. I'm pretty sure the absorber works otherwise, so I'll go ahead and ci > I just ci'd that. Yeah, except that the absorber used to be such a quivering mass of bizarreness that it probably sprouted intelligence and took care of that autonomously New absorber ci'd > btw, it seems to me that JDE screws with c-hanging-braces-alist when it loads, so I added a hook to set that. > (God help me, I'm turning into an emacs power user, aren't I?) Have you written your own major mode yet? > Not yet. That means there's hope, right? *** You have new email. A hook does not a power user make > Also, I use vi to edit my .emacs. That's.. just plain bizarre My criterion are as follows: 1) No .emacs customization - Beginner 2) .emacs customization - Novice 3) Minor modes - Expert 4) Major modes - Power user > That makes me feel better. > (But I do concede that becoming an emacs guru was on my TODO list for the summer) > hey, that was cool. I just saw: > Broadcast Message from root@clamshell.ambulatoryclam.net > (no tty) at 16:32 PDT... > UPS smartups@localhost on battery > But it was sent to all of my ttys. Five of those are in this screen session. That's interesting Haha > 'Bell in window 0' 'Bell in window 1' 'Bell in window 2' ... Bwahaha 'You hear a nearby bell in window 0' > Yeah, why isn't that one customized in nethack-mode? Darnit, I want closures... Wait. What the hell? Why do polyGizmos include a dimension? > What? In the XML format The gizmo includes width and height I think.. I'm just going to ignore that Because it is stupid. And therefore ignorable > Uh, so it does. > Revised specifications! Yep > I'm sure this is how everyone else is handling editor collisions... no, wait, they don't even have to do that. Eew, you think they're just using bounding boxes? I mean, technically we automatically support that. It's just currently inhibited. It's inhibited for a reason. > Well, they don't even have to have an editor for polyGizmos. *** You have new email. but you do need to be able to edit a board containing existing polyGizmos so they do still need editor collisions Speaking of which, why aren't we using java.awt.geom.Area for this? you know, i think it's cause java natively supports so much crap you don't even know what to expect they have I was thinking the same thing Dan? Would this be easy to move over to? I could easily port the gizmos over to it Actually, getBoundingBox -> java.awt.geom.Area getBoundingArea() > I imagine so. Let me take a look at the javadocs. > Whoa, where'd that come from? It's practically a blob. I.. think it's actually more than a blob > Yes. Alright. I think poly gizmo loading is almost done. I can port the gizmos over to that then > Sure, why not. Let's do that. > I'll change AGizmo and GameBoard. wow, impressive > So Java has everything I could possibly need... except a TreeTable? the change on my side is minimal Haha, yes Dan there was probably some lobbying done by the treetable software engineers union > Sun probably owns stock in that company that's selling TreeTables. > And before I keep going, there isn't a java.awt.gizmoball.GameBoard class, is there? :P Albert, could you make a quick change to the save/load/revert exception handling? maybe not, but i'm sure someone's out there you can buy it from sure That's true Two things: 1) Catch IOException instead of Exception i can guess one of them yup, i had that at first and when i was testing it, it threw a runtime, so i decided to catch that as well 2) Add a logger for the stack trace. One sec and I'll give you the magic snippit for that cool Ah logger.debug("IOException caught", e); should do it cool what of runtimes? Yeah, without a stack trace I'm kinda stuck on why the loader isn't loading polys ]:--8P Oh, and, in theory, I only throw RuntimeExceptions from there when stuff happens that really shouldn't with validated XML Of course, at the moment it's ignoring the results of validation anyways, so those might arise. I should fix that... ah, i was trying to load random files xml and otherwise Heh. Yes, that should have dumped a bunch of complaints to the console and then blown up randomly > Good! Testing! technically, it's not catastrophic even if loading of random things fails ci'd Thanks Heh, and the RuntimeException messages are notable less friendly than the IOException ones ]:--8) btw, i intend to add a developer's comments line to the status bar so our colorful remarks will infect even that aspect of the project Oh. Dan, on the plural property names, do you think I should add both the plural and the non-plural? Because from the loader it makes more sense to go after the singular Er, but then it'll show up twice in the names list... Hmm, ugliness isPluralCollection! > That's weird, I'm getting 76% packet loss to robinhood. The network's going haywire with UDP broadcasts Like 100K/s work it them Did you shutdown unwonkifyd? > It shut itself down. * dan fires up ethereal. Er, right. (Missed the email) What are the specs for the bounding poly method? > public Area getBoundingArea() > Gah, what is all this crap on the network? Uh. I just noticed that java.awt.Polygon only works on ints Ideas? > hmm. Hot new Windows patch? Er, virus? err, were you planning on using java.awt.Polygon? Oh... GeneralPath? Yeah, I think GeneralPath does it Yeah Since I figured that would do, y'know, polygons > That was fun, I lost connectivity. it seems to be part of the old shape framework that only did ints *nods* > GeneralPath does polygons and Polygon does, uh, not-polygons. This makes perfect sense. hah, what makes java even worse is all the deprecated stuff is still there i mean, i guess that's necessary for backwards compatability > So, uh, what's a Browser Election Request and a Local Master Announcement? but it adds even more clutter to go through when trying to find features Yeah, but it makes Java crufty I don't know about BER, but LMA has to do with chosing a master for Windoze Networking. It's only P2P in a sense; it choses a master within the broadcast range to make the server until it goes away what's a good algorithm to do this: > And apparently BER is what gets sent out to start the process of choosing the master browser. Ah That would make sense ah, nevermind, i got it Good grief. Of course GeneralPath only exists in float form > hey, here's a LMA from AWAKENING Gah. I thought unwonkifyd suicided? Uh Yeah, that's possible I am running Samba *lowers his snout in shame* > I thought it did too, is it kept alive somehow? I.. didn't think so Maybe? Anyways, gizmo bounding areas are done. Once I can get a word in edge-wise to the AFS servers, they'll be ci'd > ok, I'll ci the interface for it. > (That's not the correct order of things, is it?) ci'd No.. but this way we don't break the build. As much. Is the UI bounding area stuff ready? (Hmm. Router software upgrades today? I wonder) > Checking in a new AGizmo, if AFS cooperates. ah, is the bounding area stuff in? if so, i'll switch the ui over ah, alright, i'll switch in a sec btw, what's the difference between Angle.RAD_PI_OVER_TWO and Angle.DEG_90? damn network There isn't any difference, I think They just included things in both radians and degrees Looks like the network's starting to calm down i think i've gotten the functional side of frobber menus done now just to do the drawing side, and then editor support for setting properties i notice with some satisfaction that selecting now works even better than before > I was wondering about the difference between RAD_PI_OVER_TWO and DEG_90 myself. I figured there was some kind of subtle difference that would screw everything up. do we have a list of standard property names yet or shall i just go to GizmoballReader? > I have TreeTable stuff, now I'm just hacking together the PropertyTableModel hah, i'm glad you took it off my hands, it looked rather ugly Uh, just look at the reader [phone] not that frobbers aren't ugly themselves > Yeah, I imagine that's pretty ugly to implement are triggers properties at present? > No, but they will be. alright [/phone] frobber drawing time are you ready to handle saving? No Hopefully I will be in a few hours, though i think i'll complete frobbers and then switch over to another pset i gotta do Okay mind if i pixmap the frobber icons? That's fine. There will have to be some magic added to the build file, though ah, really? where should i throw them? Yeah, to copy them into the classpath. Go ahead and put them in the right source directory hah, i don't know whether i should do a ui.frobbermenu it'd probably make locating the pixmaps neater Take a look at the three lines in build.xml where it says "copy XML schema" and duplicate those Depends on where you want them I just put the XML schema in the root of the classpath The location in the source tree is irrelevant, though alright Cool. Selection of poly gizmos. ]:--8) does it work? Yep as far as i know, the drawing should be fine too ^_^ Looks like it is I'm just about done with poly gizmo loader support great > And I'm having fun with PropertyTables. Did the keyup/keydown ever get in? > Oh. Right. No, but it's trivial. ah, i'm still lobbying for general actions *** You have new email. > GameBoard.fireKeypressTrigger and the KeypressTrigger constructor will now take another argument that's true if the trigger in question is a keydown trigger. > (As soon as I ci that) Heh. Before I fix flipper orientation, take a look at all-gizmos.xml and play with the flippers (asdf jkl;) > Do we have any xml files with keyUp triggers? Don't most of them? all-gizmos does, at least ah, if you wanna really test it you can hold down the trigger, click the pause, and release the trigger (assuming the trigger is space) > Don't know, but I went ahead and implemented keyDirectionness in the loader and ui too, testing them now. That works alright (I assume you found where I disabled it?) do we have new testfiles? all-gizmos is new exciting... hmm, is something being messed with? it doesn't load for me Eh? Oh. One sec update and rebuild (Sorry, forgot to checkin poly gizmo stuff) hah, my select mode has a bug where it leaves the selection artifact hanging around Oh, so that was what that was... I was wondering why I had a temporary floating square ]:--8) amazing, those oddly oriented flippers actually hit Yeah. Everything correct, I just have the wrong center point And, of course, the drawing is using the same data that the physics is do we still have issues with the collision system? there seem to be states when it locks up a bit Not that I know of wow, where i have to click to select some of these flippers is interesting > It runs annoyingly slow for me... but that's because I'm abusing my system horribly at the moment. It runs pretty fast for me, especially if I disable logging ah, it seems the bounding area prevents absorber selection Ah, yes I'll fix that > Well, I've got all the log messages going into an emacs buffer, and I'm compiling other stuff in the background. > Anyway, I think I have keydirections working. Let me check that in... i like the new absorber * dan assigns himself a pointy-hat. > (Stray commit broke the tree, let me back it out) Uh oh > Backed out, the tree should be well again. ah, we have a tree? > No, the source tree. oh... got my hopes up Playing with the flippers is much too fun > That's why I'm not letting myself do it until I have some semblance of a property table. I'm going to make pasta and then write the saver Oh wait, nevermind. I already had dinner... I'm going to write the saver > Heh. ... DOM doesn't have an unparser? DOM.. doesn't have an unparser. What the hell is wrong with these people? > It doesn't? That sounds... kinda important. What's wrong with this picture? "No one ever believes me when I tell them how easy it is to develop programs that write XML documents. In fact, writing a program to output an XML document is unbelievably trivial. It\x{2019}s something an eight-year old typing BASIC in their first class at computer camp can do. In Java, it\x{2019}s even easier than that due to Java\x{2019}s strong Unicode support. You don\x{2019}t need to know any special APIs like DOM or SAX or JDOM. All you have to kno Yay! All I have to know is a single function call that has entirely nothing to do with the intricacies of XML or with XML itself > What is this magic function call? lol, i was just wondering the same thing... it sounds akin to coding via ed No kidding. And they're trying to convince me that this is a good thing > It's trivial! It's idiotic! Er, I mean, trivial > Just like JTreeTable isn't included because it's trivial... oh, wait, it's not. But just think, you wrote at least $100 worth of marketable code today Just imagine what we could sell Gizmoball for! > Remind me to run sloccount on it. Oh, which reminds me.. Yes! We've passed 10 KLOCs > 1 KLOC in GameBoard alone! we should definitely patent frobber technology 5.3 KLOCs of physical code Total Estimated Cost to Develop = $ 156,785 > OK. We're sending Rob Miller the bill. > I caught myself writing an 'if' in my code and thought 'this represents a lost opportunity for dynamic polymorphism!' > So I redesigned. hah, i actually use the ? : syntax ugh, who came up with these graphics calls Sun! We all love Sun i also hate this user-space/real-space thing I glanced over some stuff on that a while ago and decided it needed to be ignored > I am writing an AbstractPropertyTreeNode. we love sun's trees > Next I will write the PropertyTreeNodeFactory. was it a defaultmutabletreenode that they provide? > no, it uses a custom TreeModel cool (and no, i didn't think you were using what they provided) (i don't know if that's possible at all) > I don't think it is for this. At least not without even more creativity. So apparently the magic method for writing XML got cut off in my quote earlier. It is *drumroll* System.out.println uh... Do not question the wisdom of Sun! btw, do you find that angles are disfunctional? WDYM? do they go clockwise or counter? I have no idea I think clockwise i am getting weird negative angles, which isn't possible according to the spec From? from angles i'm creating Oh Ooh, Java strings have a method for replacing one character with another, and a method for regular expression substitution... but no method to replace occurences of one substring with another ah, this is ridiculous angles represent angles in the range of 0 to 2*pi but angle.radians() returns in a range from -pi to pi Wow Though, I suppose it's true that it represents angles in the range of 0 to 2*pi.. since EVERY angle is in that range. yeah, i suppose but every angle would also be in the other range ugh well, it also specifically says non-negative angle in the overview Yeah. That's pretty bad meanwhile, Graphics likes degrees and 360 is a useful angle value Uh, is there a reason I'm not getting a backtrace on my save exception? probably Wow. You're right about the uselessness of Angle. I just ran into the same problem in the saver i didn't really implement the save stuff as it wasn't supported yet but i'll add that now Okay ci'd The save dialog is entitled "Open", which, while consistent, may prove confusing to our users ]:--8) > But... consistency! * dan is writing abstractions to swaddle other abstractions inside yet more layers of abstraction. * dan shudders. You should use SOP more! > I guess I could use SOP to draw the tree... yup, i'll switch up the dialog name Hmm. Now to modify the XML schema so the files written by the saver are valid... This is probably not the right way to do this > It's kinda like no-box testing. Wait... What the hell? The position for squareBumper and circleBumper must be int's by the schema, but the triangleBumper and flipper positions are floats by the schema > I just named a class PropertyPropertyTreeNode. Ooooh, and the orientation for flippers is a float, but the orientation for other things must be 0|90|180|270 Yeah, this schema is stupid. I'm going to rewrite it lol > hmm. Are there any collection properties that don't contain Propertyified objects? GizmoVertices of PolyBumperGizmo are Vert's > hrm. That's annoying. > It would have been convenient if the only type of tree nodes I had to deal with were Propertys and Propertyifieds Don't you have to deal with Verts anyway? Since it was decided they should be special cased... > Yeah, but a Vect property is different than just a random Vect floating alone. Oh > The property has a name associated with it, etc. so they do go clockwise ugh whoever wrote that class deserves to die > Maybe I should make an AbstractPropertyPropertyTreeNode! > It could have PrimitivePropertyPropertyTreeNode and CollectionPropertyPropertyTreeNode subclasses. ah, i've managed to make frobbers draw correctly! i practically wrapped their angle class but frobbers now redistribute correctly to account for component edges Cool they also correctly account for the number of frobbers > I noticed you had some impressively-complex looking stuff in FrobberMenu. i just have to do the icons and stuff and the editing side support @throws UnsupportedOperationException always > I needed a way to test whether something was a collection property. So I made it try getCollectionValue on it and catch the UOE. isCollectionProperty didn't suffice? > I just have the property. Oh Pfft. Collection.class.isAssignableFrom(property.getType()) > That works too. > Mostly I couldn't remember isAssignableFrom, and I'm really feeling kinda apathetic right now. My, what pointy brackets you have ugh, who would've guessed ellipse2d is a rectangularshape Well, obviously. Ellipses are just lazy rectangles Dude. It's an XML schema for XML Schema. btw, did you ever fix the absorber bounding area? Uh... No. alright, just checking it was frobbing weird, so i was wondering I would check in the change, but I have some others in there that would break the tree alright, no problem i think i'm gonna stop for a bit But the change is there now, at least Yay, their schema is now actually correct Odd how many changes I had to make... It was also doing fun things before like not actually validating the gizmo tags that were in the gizmos list It had a list of valid gizmo tags, and at the end was the wildcard does this mean we'll have saving soon? It's getting there btw, i'll be gone for a couple hours soon I just need to add collection properties and triggers alright Collection properties work And trigger saving works I'll clean up a bit and ci Saver ci'd > Entry-people are learning Baxil Time! Who'd you get this time? ]:--8) > Pong came by and wished me a good evening. Ah, excellent > The current count is 1240 lines of code that don't do anything. So wrong... > (Of course, by this point they are supposed to be doing something. We will ignore the fact that they don't for now.) > I wound up defining an AbstractPropertyTreeNode. > Then I defined an AbstractPropertyPropertyTreeNode that derives from it. Wow > I have a non-trivial inheritance hierarchy here. > Now I'm going to go take out my unhappiness with these layers of abstraction by shooting things. *** You have new email. I'm adding settable friction/gravity now Hmm. Shouldn't testBoundingBoxIntersection be testBoundingAreaIntersection? ]:--8) > Err, yeah, it should. > I thought I replaced all the BoundingBoxes with BoundingAreas, but apparently I missed one fairly important one. AbstactFixedGizmo should have been called AbstractNotABallGizmo > It's not to late to refactor it! That's true So, in theory, we support configurable gravity and friction now > Cool. Is that ci'd? > I have a lot of buffers open right now. And the sad thing is that I'm actually using them. > Right. My PropertyTreeModel works better if I actually set the root. Hmm. For some reason it's not pushing over ssh. I guess I'll just assume it works and ci (Why is it taking 50 K/s to give me a blank Gizmoball window?) > I have something that's starting to look vaguely promising (but clearly not anywhere near complete) Ooh > I see a property tree that lists the properties of the GameBoard. > (Though I can't expand the gizmo list yet, or edit them, or do anything at all meaningful) > But I can see that the value of Gravity is 25.0. Cool > I also need to make the property table not take up more space on the screen than the gameboard pane. That would probably be a good idea (but look at how cool our property table is!) > It's actually so big right now that Swing has helpfully decided to shrink the gameboard so there'll be space for the ptable. Oh How kind of it > But it looks vaguely cool. execjar target is in *** You have new email. *** You have new email. > Glad to hear that works. > I am now the proud(?) owner of a piece of paper from the admissions department that says 'Dan has a very good head on his shoulders'. I think that's a good thing. (Where else would my head be?) > And now it's back to the world of property tables. Ah, you got your records? (BTW, take a look at newton.xml ]:--8) > Yeah. I need to figure out how to interpret the card of numbers. > But my interviewer (she of the compulsive note-taking habit) wrote out a two-page essay about me. This scares me a little. Heh heh. I wonder if she knew that admissions ignores those... Alright, _now_ take a look at newton.xml > Ooh, now that's cool. So many collision pairs to check. (I just ci'd an even better one) > Running it now. > My poor system seems a little unhappy at having to run it... but that's cool. Really? It runs great on mine... Well, almost great, at least > I'm abusing my system again. Ah (Granted, it takes 90% of my poor laptop's CPU, but...) I showed a simulation of a bunch of balls to a previous term 6.170er and she was impressed by its smoothness. > hmm. And lots of balls is the least efficient simulation we can run. Right Er, wait, is the game board's checkrep still on? > I never turned it off in cvs. Woah. Now I wonder... > Yes. I was wondering that too. Hmm. I changes things surprisingly little, but that's definitely smooth for 25 balls > I'm surprised, that's an expensive checkRep. I wonder where the bottleneck is. (A profiler sure would be nice) The bottleneck's probably in the fact that it's computing 625 collisions... > Yeah. I suppose it's in the physics code. I was thinking about quick tests I could do to trivially throw out non-collisions between balls, but I'm afraid of breaking things > Yeah. I don't think it's worth it. > Well, I have the PropertyTable displaying things. Now I just have to make it display the correct things. Excellent Anyways, back to MacGregor i'll probably throw the propertytable in a scrollpane or something is it just me or did the loader break? Uh, what are you trying to load" any of it newton example it gives me a numberformatexception, i think o.O Error: URI=file:C:/eclipse-SDK-2.1.2-win32/eclipse/workspace/gizmoball/doc/testfiles/example.xml Line=1: Document root element "board", must match DOCTYPE root "null". java.lang.NumberFormatException: empty String at java.lang.FloatingDecimal.readJavaFormatString(Unknown Source) That's interesting That looks like it's the XML validator going haywire Where's the first place in the traceback that's in our code? gizmoballframe.loadlistener.actionperformed -> aimode.load -> reader.load(78) -> loadboard(89) -> getdoubleattrib(403) Hmm Oh, I think I found the problem Were there any other parser errors that appeared before that one? nope, but there are no grammar found errors Ah, that would be what I was wondering about How are you building it? just in eclipse that's probably not a good thing Ah, then it's probably not copying the XML schema into place The ant target does that alright I'll make it so it doesn't fail catastrophically if there's no schema eh, i should just switch over to a better builder It still shouldn't fail like that, though (Since I wrote the rest of it so it can work without a schema) that's true btw, i'm doing the frobber icons now once those are in, i can do editor side frobber stuff, and that'll be that eta 2 hours or so Cool. Including the trigger stuff? Speaking of which, how do we delete triggers? are triggers propertyified? ooh, i mean collection propertied that'd be a good way Good question... i definitely don't want to implement connection selection (is there line segment intersection with points?) Nope. Though nothing's stopping us from making a skinny box i suppose (LineSegment2D is actually spec'd to always return false for collision tests since it has no area) wow, that sucks we can wrap it, i suppose how are we looking in terms of required stuff? we're practically there? oh, and boundingareas for flippers, is it the whole box they take up? Well, but it makes sense in the general sense. We're getting there The main remaining stuff is in the editor I'm working on cleaning up the rest of the system now :o) (Petra apparently says hi) sorry i'm bored hah, bored? there's plenty to do Heh, are you saying we should assign her a part of the UI? ]:--8) She's already done some user testing oh, lol eh, so far, it's been boring And, yes, the flipper box is the whole thing, since that's what's needed for the editor collisions we need something in the running for the artistic award I think the vector graphics we have are fairly pretty Though the rest the UI could still use some visual cleaning-up hah, yeah i've rather neglected it selection still impresses me Yeah, that's cool the best thing about not doing tdd is you get presently surprised care to suggest a "handedness" icon? A hand? ]:--8) alright, that works Trigger lists are now properties > oh, cool, I was going to do that. Thanks. I was rather automatic *It > I was still too lazy to do it. ;) > The problem with having so many layers upon layers of useless abstractions: (Well, one of them) > apple.awt.EventQueueExceptionHandler Caught Throwable : > java.lang.ClassCastException > at java.util.Arrays.mergeSort(Arrays.java:1152) > at java.util.Arrays.mergeSort(Arrays.java:1163) > at java.util.Arrays.mergeSort(Arrays.java:1163) > at java.util.Arrays.mergeSort(Arrays.java:1163) > at java.util.Arrays.sort(Arrays.java:1079) > at java.util.Collections.sort(Collections.java:113) > at gizmoball.ui.propertytable.CollectionPropertyPropertyTreeNode.(CollectionPropertyPropertyTreeNode.java:26) > at gizmoball.ui.propertytable.PropertyTreeNodeFactory.constructNode(PropertyTreeNodeFactory.java:35) > at gizmoball.ui.propertytable.PropertyifiedPropertyTreeNode.rebuild(PropertyifiedPropertyTreeNode.java:41) > at gizmoball.ui.propertytable.PropertyifiedPropertyTreeNode.(PropertyifiedPropertyTreeNode.java:29) > at gizmoball.ui.propertytable.PropertyTreeNodeFactory.constructNode(PropertyTreeNodeFactory.java:26) > at gizmoball.ui.propertytable.PropertyTableModel.(PropertyTableModel.java:26) > at gizmoball.ui.propertytable.PropertyTable.(PropertyTable.java:28) > at gizmoball.ui.GizmoballFrame$LoadListener.actionPerformed(GizmoballFrame.java:254) > at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1819) > at javax.swing.AbstractButton$ForwardActionEvents.actionPerformed(AbstractButton.java:1872) > at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:420) > at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:258) > at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:247) > at java.awt.Component.processMouseEvent(Component.java:5100) > at java.awt.Component.processEvent(Component.java:4897) > at java.awt.Container.processEvent(Container.java:1569) > at java.awt.Component.dispatchEventImpl(Component.java:3615) > at java.awt.Container.dispatchEventImpl(Container.java:1627) > at java.awt.Component.dispatchEvent(Component.java:3477) > at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:3483) > at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3198) > at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3128) > at java.awt.Container.dispatchEventImpl(Container.java:1613) > at java.awt.Window.dispatchEventImpl(Window.java:1606) > at java.awt.Component.dispatchEvent(Component.java:3477) > at java.awt.EventQueue.dispatchEvent(EventQueue.java:456) > at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:234) > at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:184) > at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:178) > at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:170) > at java.awt.EventDispatchThread.run(EventDispatchThread.java:100) * dan shudders. Heh, at least you didn't get a "... 35 entries left ..." message at the bottom like I did yesterday *** dan is dan@clamshell.ambulatoryclam.net (Dan Ports) *** on channels: #6.170 *** on irc via server clamshell.ambulatoryclam.net (Ambs's test IRC server) *** dan is an IRC Operator - Server Administrator *** dan has been idle 17 minutes, signed on at Thu Apr 15 03:43:10 2004 *** dan : End of /WHOIS list. ah, the power of bitmap graphics *** dan is dan@clamshell.ambulatoryclam.net (Dan Ports) *** on channels: #6.170 *** on irc via server clamshell.ambulatoryclam.net (Ambs's test IRC server) *** dan is an IRC Operator - Server Administrator *** dan has been idle 17 minutes, signed on at Thu Apr 15 03:43:10 2004 *** dan : End of /WHOIS list. *** Reconnecting to server 0 *** Connecting to port 6667 of server localhost [refnum 0] *** Looking up your hostname... *** Checking Ident *** Found your hostname *** Got Ident response *** Welcome to the NetMUGnet IRC Network dan!dan@clamshell.ambulatoryclam.net *** Your host is clamshell.ambulatoryclam.net[@0.0.0.0], running version bahamut-1.4(34) *** This server was created Sun Jul 28 2002 at 22:32:43 PDT *** clamshell.ambulatoryclam.net bahamut-1.4(34) oiwscrknfydaAbghe biklLmMnoprRstvc *** NOQUIT WATCH=128 SAFELIST MODES=13 MAXCHANNELS=10 MAXBANS=100 NICKLEN=30 TOPICLEN=307 KICKLEN=307 CHANTYPES=&# PREFIX=(ov)@+ NETWORK=NetMUGnet SILENCE=10 CASEMAPPING=ascii : are available on this server *** There are 5 users and 6 invisible on 3 servers *** 5 : IRC Operators online *** 1 : channels formed *** I have 3 clients and 1 servers *** Current local users: 3 Max: 5 *** Current global users: 11 Max: 509 *** Notice -- motd was last changed at 27/12/2001 22:41 *** - clamshell.ambulatoryclam.net Message of the Day - *** - 15/4/2004 3:43 *** - This is ircd-hybrid MOTD replace it with something better *** End of /MOTD command. *** Mode change "+i" for user dan by dan *** dan (dan@clamshell.ambulatoryclam.net) has joined channel #6.170 *** Users on #6.170: dan Amthrax aleung *** Mode change "+wsg" for user dan by dan -NickServ- This nickname is registered and protected. If it is your nickname, type /msg NickServ IDENTIFY password. Otherwise, please choose a different nickname. Defaulting +r to CHANMODE type D *** Mode for channel #6.170 is "+tnr" *** Channel #6.170 was created at Wed Apr 14 19:33:07 2004 > Damnit, why is it so hard to make a PropertyTable. you know, my frobber menu can probably support a frobber for every property a gizmo has > I've written almost 1300 lines of code, I'm determined to make this work. I'm just now sure how. alright, cool we definitely need to bill professor miller for this stuff at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:151) at gizmoball.xml.GizmoballReader.openDocument(GizmoballReader.java:464) ... 32 more That's Java saying "32 more" for my convenience > I never thought I'd consider myself lucky to be able to see interminably long stack traces, but I do. so, convert me to an alternate builder Um. Use ant. Because ant is better than building with Eclipse > ant is better than something? This surprises me. At least it's scriptable.. uh, ish > In XML! btw, are file names case sensitive? Yes > I assume that depends on the filesystem. Assume yes > Bah. My nodes are updating, but the tree isn't redisplaying them. Is there some magical call you need to make to tell it to update > Probably, but I haven't found it yet. re-somethiing > This seems like it should be a fairly basic thing to do. Speaking of which, does the editor guarantee the uniqueness of gizmo names? > It should. yeah, everytime you do a place, it increments a counter > (in the correctness sense, that is. I don't think it actually does) i don't know about in the tree, but at least on the placement side > Well, you can't even see a gizmo name in the tree, so we don't have to worry about that just yet. ;) alright any good resources for ant scripting? Ant scripting? Just use the existing script (copy paste as needed0 i can't copy multiple files? (and i'd rather figure it out) It's a pain to figure out what actually needs to go in there Of course you can. Take a look at the code that copies the XML schema and just duplicate that i mean, i can't copy multiple with a single line? Oh, like wildcarded? You can probably comma-separate them in file Or give the copy target a fileset Alternatively, look up the copy target on the ant site ah, ok Newho, I'll be back soon ugh, this image translucency is being annoying nice, my system is being flooded by copies of the javavm > What the hell? The property table *is* updating. But it updates to the *previous* change, not the current one. ... o.O > I'm wondering if the table is responding to the TreeModelEvent before the tree > But that shouldn't happen, since I invokeLater the fireTableDataChanged call. Validation support ci'd Dan, do you have pending changes on GameBoard? If not I'll predicate the logging > I don't think so, let me check. That's interesting. Your hanging indents are different > nope, go ahead. Okay > They are? Yes. Mine hang inline with the previous line of the expression, but yours go in a constant four spaces (which looks better and makes more sense) > Probably a style issue. I'm never entirely sure what style I'm using. c-default-style, I think > I'm TRYING to use the java style, but I'm not sure. I'm pretty sure I do Though I'm also not entirely convinced > I need to fight with my .emacs. But this isn't the time. > Hmm. Upon further reflection (no, not that kind, though that might also be useful), it's probably not a table/tree race condition on the TreeModelEvent. eh, i've given up on real transparency It's that painful? so it's odd it'll find the "transparent" pixels from the image and then it feels the need to color them with some opaque color Oh Chroma-key style? > It's opaque transparency! yes, i really don't understand why it can't just not fill the transparent pixels Out of curiosity, which drawImage method(s) did you use? i'm using the graphics one But which one? image, int, int, color? What are you passing for color? and imageobservor i think that one i tried (0, 0, 0, 0) (0,0,0,255) etc. Why not image,int,int,imageobserver there's an image int int imageobserver? Becuse image,int,int,color,imageobserver doesn't draw transparently * Amthrax nods ah.. well i'll be damned ugh Heh, you should have given up earlier. ]:--8) yeah next time i will ah, nice back on track > It's very hard to fight with property tables when people are trying to learn to play the trumpet next to you. I can imagine hah, i spent more than enough time wrestling with saving png-24s the mechanism is terrible in photoshop > They're clubbing seals! Yeah, I think I can even hear it down here It's ugly ugliness! * dan plays http://drkp.net/seals.mp3 > Ooh! It finally actually updates to the correct value. * Amthrax applauds > This is somehow progress. And yet it's still totally unusable. > The solution was -- and I have absolutely no idea why this works -- to wrap fireTreeStructureChanged in an invokeLater. Oh. Of course > That only took me all day to debug. > Now I think I'll work on making it possible to actually expand nodes in the tree. if you wanna see how frobbers look, try the drawertestapp ci'd arg one sec yeah, should be ci'd the menu normally doesn't have so much crap, i just packed it to test it i'll do editor side in a little bit > Wow. That's cool. I have no idea what it is. But it's cool. Wow are the icons intelligible? had to make them kinda small so the frobber menu wasn't huge What are the two immediately to the left? velocity and size > Size and velocity? Ah, okay > (It took me a while to figure out) the size one is a bit iffy but i guess it won't be appearing much I think the velocity one would make sense if a ball were selected, though maybe add a standard double-headed arrow to the corner of the box in the size one? alright if you can think of any i missed, lemme know Would it be feasible to pack all eight into a single teir? *tier i can try it it's a very small change it'd be feasible except when it redistributes for corners Right It just seems like the second tier isn't necessary unless it's necessary yeah, eh, it's just for show at the moment i have the frobber menu initialize with only up to 5 but you can add more manually Ah, okay if you wanna see 8 in one tier just set the max tier size in frobber menu > Does it go into the next tier when it runs into a corner? > (I looked through the code last night, but then I got scared by it.) yeah, it halves the capacity of the tiers at the corners i haven't retested it since i got all this stuff in, but it should still work fine > cool. 8 in a tier looks pretty nice i guess the logical thing to do would be to shrink the capacity of tiers in proportion to how many quadrants are available but eh... It seems like that would be necessary in the corners of the gameboard (But, then again, I don't really understand what's going on) well, it does it for the corners > Yeah, actually, that's not bad. Maybe a little crowded, but 8 frobbers is a lot for one gizmo. but the edges should be half capacity, the corners a quarter it's designed to fit one per 45 degrees anyway, there are never gonna be 8 but the support is there Yeah. It just seems like there will often be more than four But, anyways, very cool hmm alright, i'll add the better capacity model and while i'm at it, i'll test edges and corners > Bobby agrees that they're really cool. > (Even more so than The Incredible Machine!) mmm let's get this thing together... Darn, I sure could use amb for solving the interaction manager lattice problem > You mean java doesn't have an amb class hidden away somewhere? we've officially transitioned to interactions? Eh, it probably does. Along with its Continuation, Lambda, and Lazy classes We're working on it ooh, revised design Eyup i've tested every corner and edge It's surprisingly difficult for how simple it seems, but I'm working out the type algebra now and 3 tier support Ooh there's this odd staggering that happens on the second tier sometimes where the last frobber is too wide i'll ignore it for now it could also be the area being misdrawn > It's amazing how dificult such simple things can be. > We should have a help frobber! ah, i considered what would it do? > Display help for each gizmo! Put up a dialog explaining the current gizmo and what its frobbers do? > Gizmodoc! i also considered having a hide frobber frobber > (I know nobody is actually going to write documentation for gizmos. But it's a cool design idea.) Heh. That reminds me of Emacs' mode-line management mode. maybe as an extension Though, isn't "hide frobbers" basically equivalent to deselect? yeah... more or less > But you could have a show-frobbers frobber. We could have a scholarly reference on the interaction manager. After all, this exact inheretence problem is one of the reasons Hindley and Milner ditched subtyping (that and the fact that it's an unsolvable problem, but I'm not letting that get in my way) > Let's build a bounded-time arbiter next. > Damnit, that's why it wasn't expanding: I needed to make isCellEditable return true for the tree column. > I figured that I probably ought to return false in isCellEditable, because, oh, it's not supposed to be editable. > But it turns out that the way it finds out that the user clicked on the tree is by overriding isCellEditable in an editor which then returns false to indicate that it can't be edited, but not before passing the MouseEvent over to the JTree. Ah, yes, of course > (I'm ignoring the fact that the JTree isn't actually a JTree, it happens to be some subclass of a JTree) ah, frobber menus now pop up on gizmo selection Oooh you can also click frobbers to highlight them have fun no real functionality yet though if it weren't for the angle class and drawImage... anyway, lemme know if you find any bugs Dang. That looks impressive > Now I can run a simulation, and watch the ball position and velocity get updated in realtime on the property table. indeed we have frobbers! at one point i thought it was a maniacal dream > Except of course that 'realtime' is used loosely here. But now that dream has been realized. ]:--8) yeah i gotta stop clicking stupid gizmos and go do something else > We have found the reality that we call dreams? hmm, so square aren't orientable? Something like that Right Are we doing continuous orientation with snap? sure Alright, then I can make them orientable don't worry about it for now if i'm to test orienting, i'll just use tris or flippers Well, tell me when you're ready and I'll make the change Found a bug: yeah, there's a weird point where the clicking acts up, it seems Click on a gizmo to display frobber menu. Click off gizmo to deselect. Then try to click on a gizmo that was under the previously open frobber menu yup it seems not to defrob right yet the frobber is still there collecting the clicks i'll fix that shortly i'm still in disbelief > I'm just about to try the frobbers myself. There appear to be a number of other instances where the frobber doesn't go away automatically when it should > Like switching from edit mode to play mode. Actually that works for me... > err, yeah, me too. What was I thinking of? Loading a new board while in edit mode ah, i ci'd a new one > Oh, yeah, loading a board. yeah, those issues i haven't fixed yet > Can we refer to frobbers as 'patent pending'? > (The writing of a patent application is, after all, pending) so i've fixed frobber menu removal for loading and when switching to a build mode lemme know if there are others i'm missing time to make frobbers work Wheee i'll start with delete ^_~ ah, a checkrep failed Assert.assertTrue(gizmos.contains(t.getTarget())); BTW, I'm leaving "collision" triggers for the moment do i have to manually pull triggers when i remove a gizmo? > Uh, you shouldn't have to. > (Did I really never test that?) seems there's a residue i'll ci and you can play with it ci'd removing flippers crashes same with absorber > Yeah, I see the bug. Hold on. alright > I think Chloe just decided on Robert Morris for her advisor, because I told her about the Morris Worm > ci'd a fix (but haven't tested it) > It just occurred to me that ther's more code in the property table than the GameBoard. ooh it's a concurrent mod exception java.util.ConcurrentModificationException at java.util.HashMap$HashIterator.nextEntry(Unknown Source) at java.util.HashMap$KeyIterator.next(Unknown Source) at gizmoball.game.GameBoard.removeGizmo(GameBoard.java:602) happens for removing flippers ooh i filled an absorber with balls it seems to be the right number to get an out of memory eh, it was just a fluke > Well, we're getting better exceptions now, right? > (I know how to fix that one, hold on) is austin still alive? > Yeah, he's eating dinner. > (So am I, but I'm sufficiently ashamed of that last bug that I'm going to fix it first.) ah, cool i should probably eat sometime soon as well > ci'd a new fix, maybe this one is correct. > (I can't actually test it because of some of the property table stuff I'm running) > It's black-hole testing! ah, validated ugh, jtogglebutton and buttongroup are some more great implementations > heh. I opened up AbstractTrigger to Propertyify it, and right at the point is the comment '// TODO: make AbstractTrigger extend Propertyified?' *** Value of INSERT_MODE set to OFF *** Value of INSERT_MODE set to ON > I wish ant didn't suck at detecting dependencies. ah, you can now unclick build modes which brings you back to selection mode Ah, good so you can delete what you made ugh, that togglebutton thing was ugly i'm tempted to pixmap the standard icons That's probably fine putting text to the buttons doesn't work well, unless the buttons are like half a screen wide but i did put a tooltip Oh What does it do? the tooltip just says what the gizmo is which is almost as good as giving the buttons labels No, I mean if you give it a label oh... either you set the button size and the text flows over or you make the buttons really wide Ah > Now I have propertyified triggers, so I can actually load boards with triggers! Ooh ah, lemme make the SetPropertySubMode so we can mess around with the frobbers more The button tutorial makes it look like labels should Just Work. Did you do something similar to what they did? lemme check what they did well, labels do work but the toolbar just becomes really wide Hmm. Much wider than the labels? no, but the labels themselves are wide Oh they are named "SquareBumperGizmo" etc. even if i cut off the gizmo part Hmm. It seemed to work in past terms... Let me see if the one I'm thinking of did something weir yeah, there was one that had a wide toolbar actually, they all did Oh, right. They tended to breviate all the way to ie "Square" or the labels are abbreviated which doesn't bode well with my general loading i mean, i can have it truncate off Gizmo and Bumper Though don't you have special drawers for each one anyways? (soon to be pixmaps) eh, well, i can name the pixmaps relative to the class names and it's still kinda general? That's true anyway, i guess that'll be fixed later frobbers are more important Yes but i just wanted to get the unbuild thing in Yeah, that's pretty necessary we can practically build boards now minus some property setting and connection stuff btw, what's the name for the Keypress trigger property? and the other trigger property? > What do you mean? do we have properties for the keypress triggers of a gizmo? > You have IncomingTriggers, which contains both keypress and collision triggers > (interaction triggers?) ah, alright Yeah, I've been pondering the name change *** drkp (~dan@AMBULATORY-CLAM.MIT.EDU) has joined channel #6.170 I really needed an IRC window in one of my emacs frames. ERC? zenirc Ah, that works too I'm actually (slowly) making progress on the PropertyTable. woohoo! And the new interaction system is almost done nice i've started the submode it'll be general enough to mean that the frobbers will all work when it's done I will pretend I know what a submode is and claim that that's excellent. Now the PropertyTable can deal with anything it finds. It won't throw exceptions on PolyGizmos anymore. (Not that it necessarily deals *well* with anything) how about a cloning frobber? Maybe, though the necessary ones need to be completed first lambda! yup All of the gizmos support the new system now. Now to clean up all of the other places it's used... how are orientations set? do you just use their standards for angle? > Oops. I just made the property table visible only in Play mode. Probably not the best of ideas. Did you figure out the orientation? i've not been trying so if you'd like to tell me, that'd be nice > I think I'm ready to start unleashing the PropertyTable onto the cvs tree... If I understand what you're asking, yes, it uses their angle standards > initial PropertyTable ci'd. > !j > We've each ci'd over 4000 lines of code. *shudder* Just in the current incarnation > Right. > And we've thrown some iterations away. (hey, does that mean we're using the spiral model?) is the build broken? > I don't think so, is it supposed to be? ah, nevermind it's complaining about keyups in the saver or something I.. haven't touched the saver for a while ok hmm, is my building misnaming things? > Oh... Dan and I poked around that a bit a while ago and it looked like it was yeah I haven't reexamined it since the saver was implemented i found it my bad > I broke the saver, oops. > I changed isKeyDownTrigger to getIsKeyDownTrigger to make the property system happy. > Of course, ant didn't know about this dependency. > Fix ci'd. AbstractTransitionalGizmo! ci'd the naming fix when are we scheduled to demo, btw? 6:30, IIRC alright eh, i'll be back in an hour > 13 hours... if i'm not, give me a call or something or a knock *** You have new email. Uh, has BoundingBox not been removed from AbstractGizmo yet? > Apparently not. > Now it has. Thanks Do the collidabilities of your scripted gizmo affect anything other than which of the two in a pair is collided? > I don't think so. (What else would they affect?) Well, if you actually tested the collidability values at some point, but it looks like you don't And.. a carefully placed "abstract" modifier on a class with no abstract methods, and a {} after the new ScriptedGizmo(..) and voila! We have subclasses. > Oh. I don't explicitly test that, I figured that testing the simulator would be enough. I dare the staff to track down where those anonymous classes are. > Heh. That's creative. They're anonymous! Very, very anonymous There. That wasn't so bad. I haven't actually made sure it still works yet, but the recoding was easy > I apologize for making you endure the horrors of GameBoardTest. Pfft, it's not that ba d And the interaction system can handle it, therefore the new system must be good! > I suppose that reading it isn't so bad. Writing it certainly was. That I can imagine Dude. Green bar Now to make the rest of the tests conform... I won't even need the @deprecated AbstractTransitionalGizmo > What does that do? It was supposed to provide the old collision interfaces and translate them to the new system As automatically as possible > That's what I thought. Not that I wanted to think about that. +487 -309 New system ci'd Check that I didn't break the build > Hold on, I'm breaking it in various creative ways myself. Okay Wow. GameBoard's at v1.27 > It's an InteractionManager! Eyup Ugh. I think I'm going to leave collision triggers for now And, uh, forever. > Builds for me. Cool Heh. 130 lines in the GameBoard changed in the terminology switch > Heh > hey, you broke your own property system contract in GameBoard with the mus! Bad! Uh, I did? > Yeah, they don't have firePropertyObservers calls in the setters Oops * Amthrax lowers his snout in shame > Not to worry, I've already fixed it. > And if this works, I should be able to change the gravity and friction constants... Ooh, are you removing your listeners now? > I wouldn't be so rude as to check it into the tree otherwise. *** You have new email. Alright. I declare the interaction system officially complete. I'm going to shower, then I'll either pass out or get to work on the design document > Ooh, I can change gravity and friction now! Oooh Hmm. So, according to what they said at the beginning of the term, how many bugs are we expected to have? > I just ran just-some-balls with no gravity and high friction coefficients. The balls came to a complete stop. Excellent > Now I'm running it with massive gravity and no friction. > They plummeted. It was more fun than I would have thought. > hmm. What's the appopriate thing to do if the user enters an invalid value? Beep and go back to the original value? Display a dialog? Gah. It's a bizarre feeling when you roll away from the terminal on your desktop, flip open your laptop which hasn't been touched for hours, and find the exact same terminal waiting there for you. Call them stupid Um. Don't most forms just go back to the original value? An error dialog seems to heavyweight. Perhaps something in the status bar? > Yeah, I agree. I'm thinking beeping would be the appopriate thing to do. > (How do I do that?) I.. have no idea But \exists a method to do it > I'm sure. BTW, I just posted my notes from the last TA meeting to the blog > cool. > java.awt.Toolkit.getDefaultToolkit().beep(), apparently. Oh Isn't Bobby supposed to be waking up soon? > } catch (IllegalArgumentException e) { > // Gently remind the user that they did something > // wrong. In a non-accusatory way, of course. > Toolkit.getDefaultToolkit().beep(); > } // end of try-catch Heh heh ah, a few moments to reorient hah ha! success Success?! eh, not entirely Oh but frobbers will be done shortly hah i somehow managed to get it to be in frobber mode, set size mode and set position mode simultaneously That's interesting it's cool to watch the frobber menu drift anyway, i've tested handedness, orientation, position size is acting a little funny Cool and uh, the others need special things, so i'll get to those soon alright feel free to play with any of the previously mentioned frobbers > So, uh, do we actually support GizmoballSelectionObservers? nope, not yet i'll throw that in in a sec ugh, there seems to be some weird behavior with set orientation with flippers for a certain handedness hmm, how shall we support gizmoballselectionobservers? would the table add itself as one for the editinginteractionmode? > Uh. Actually, that was the question I was trying to answer myself. > I guess we could do this without observers, in theory. maybe the gameboard component should have selectionobservers > What I really need is something to call a method in PropertyTable to set the root to the selected object. > which might be easier to do some other way. sure what's the method? > PropertyTable.setRoot > When nothing is selected it should be set to the GameBoard. ok ugh now i have to find your property table somehow this is complicated since interactions are usually only from interface components eh, just do it the observer way > Yeah. It's breaking abstraction barriers left and right. > uh, ok. Could the handedness frobber just toggle the handedness? yeah good idea what the hell was i thinking o.O addGizmoballSelectionObserver > Could one, say, make the GameBoardComponent or interaction mode Propertyified and just use a PropertyObserver? probably let's not... Good answer > Sorry. I had to suggest it. > It's the abstract unity of the thing! alright, interaction modes support adding selection observers eh, it should definitely be in the gameboard component ugh alright, you add it to the gameboard component > cool. lemme fix that handedness thing Flipper bounding areas now rotate with the flipper alright, handedness fixed btw, i've been getting these errors in eclipse for a while about Collidability ah, nevermind i forgot to change an outdated stub there's something in gameboardtest too I completely removed Collidability a while ago ok ci'd velocity frobber hmm, check on orientation for poly gizmos Yeah, it's weird, but there's no way around it that I can think of that doesn't break about 20 abstraction barries alright Of course, we could side-step the issue In fact, I'll do that right now. * Amthrax side-steps the issue at one point i thought setting properties would be pretty cause type mapped to mode of setting which turns out not to be true at all what's the entry point for adding triggers? if i add to the gameboard will it add to the gizmos? (eh, this is somewhere in the specs, but i'm too lazy to check at the moment) > Yeah, they're both the same. > The gizmo actually passes it off to the gameboard oh, alright nice i have collision triggers Cool hmm, i should implement the keyboard stuff modes were suppose to have exits by pressing the escape key so you don't have to keep going back and clicking the stupid palette Polys should rotate sanely now > Albert, are you commiting something? yeah, i just put in trigger frobbers is that a problem? > For some reason you seem to have a lock in gizmoball/lib oh ugh i seem to have the jars floating around for some reason will they die if i ant clean? ant clean stays out of lib because those are provided libs should i delete them then? > I don't think so. Is Eclipse trying to ci something right now? no but when i do ci, it tells me tablelayout and gizmoball aren't under cvs control which i assumed is a good thing That's because they're not I removed tablelayout and gizmoball is generated then there's no reason i should have a lock at all > ok, I'm going to break it. > angle properties ci'd. what's an angle property? oh... nevermind ^_^ Finaler Design Document checked in I've already started making changed to it, including adding some of the new sections to the top-level I'll be back in a while ok i just about have keypress trigger frobbers i'm just wondering whether to do a confirm eh, no confirm damn, what to do about the keyup keydown thing eh, i'll have it add both by default > Debugging regexes sucks. woo, keypresses supported alright, all the standard frobbers are working as expected > cool. Ooh I think it would be good if the keypress frobber prompted the user for a key in some manner > And code readability goes right out the window: > else if (property.getType() == Vect.class) { > Pattern pattern = Pattern.compile > ("^[\\s]*<[\\s]*([\\d.]*)[\\s]*,[\\s]*([\\d.]*)[\\s]*>[\\s]*$"); > Matcher matcher = pattern.matcher((String) value); > if (!matcher.matches()) { > throw new IllegalArgumentException > ("Cannot parse vector string"); > } // end of if (!matcher.matches()) > double g1 = Double.parseDouble(matcher.group(1)); > double g2 = Double.parseDouble(matcher.group(2)); > setProperty(new Vect(g1,g2)); > } // end of else if (property.getType() == Vect.class) eh i gave up code readability a long time ago > We noticed. :) long as it works as far as even i'm concerned, it's a miracle > ci'd vector editing support to the ptable Wow. You need Python raw strings! ah, btw i might add stuff to the property table so that selected properties are editable in the component as well (makes velocity a bit easier for the user) > ...good luck. ha, how about custom pixmapped treenoderenderers? i think our interactions system is currently even more efficient than our logging Ah, just found another bug: Load a file, let play for a moment so balls move, edit mode, select a ball, play mode, revert, edit mode (It might be possible in fewer steps) The jist being that the gizmo from the pre-reverted board is still selected and frobber menued ah yup Is is possible to just totally flush the editor state on load/revert? yeah, i was working on that ooh i had the flushing in a mode specific load method > The property table has some similar issues. hah, the hack fix is to just always use the editing mode loader > My solution is to toggle between edit and play modes and back. > The editor is really quite amazingly cool. time for snap and building poly gizmos > Don't forget displaying connection arrows. eh, i decided to ignore that for now it's not particularly impressive or useful ah, i might as well do it since it's not too hard > Impressive? Maybe not. But it seems pretty important and useful... I have results from a user test! The rotate and move frobbers should work if you just drag them (instead of having to click and then move the mouse without the button pressed) And rotate and move should also be relative instead of absolute yup Uh, there are some more required things that should get done before poly building.. eh, handling mouse presses in the frobber and then dispatching was annoying so i decided to hold off on that and just use a click click scheme which required things? btw, it's about time i hid the palette in play mode Like displaying the triggers that's required? Uh, more required than poly building? ok i'm on it right now Ruh roh ? DEBUG R2EditingInteractionMode: Starting probing java.lang.NullPointerException at gizmoball.ui.r2.R2EditingInteractionMode$SetPropertySubMode.extractValue(R2EditingInteractionMode.java:492) at gizmoball.ui.r2.R2EditingInteractionMode$SetPropertySubMode.updateModeArtifact(R2EditingInteractionMode.java:386) at gizmoball.ui.r2.R2EditingInteractionMode$SubModeProbe.mouseClicked(R2EditingInteractionMode.java:941) what are you doing? I don't know. Petra was playing with it hmm I'll try to reproduce it Double clicking something? hmm oh, when setting a property? lemme try it *** Signoff: drkp (Write Error: Broken pipe) hmm, i'm not getting it Oh. Select something, then click the move frobber, then click again without moving the mouse alright got it Oh, and editor collisions. That was the other required thing... ok there's too much editing artifact madness trigger drawing almost done how's everyone doing? triggers are now displayed Other than the fact that everything appears far more colorful than it should in my current state of sleep deprivation.. decently mmm How're editor collisions coming? Hmm. Are they supposed to interact correctly with the trigger direction checkboxes at the top? yeah, they are I had to toggle the "in" box to get the out connection to display.. then if I kept triggering it the arrow was getting thicker oh you have an old version Oh I have the one that's in cvs now... lemme put one in and see if it's better Oh, wait i spent a bit fixing all those issues so i'm pretty sure it's sound now NM I did have an old version, but in a weird way Though the arrows don't seem to point to the right place (they point near the target gizmo, but are off) yeah, that's intentional the arrows were getting too much into the frobber space which made it hard to see anything if you want them to go all the way,i can reset that there's this one issue with the interactions system if a ball gets stuck between a bumper and a wall, it seems to lock a flipper and a wall rather presumably cause it collides forever in the closed space of all the things not to have, an Area.intersects(Area)? there is area.intersect(area) > And area.intersect is a mutator, naturally. anyway, unless one of you can dig up the magic method it'll have to be area vs. bounding box i don't much like editor collisions to begin with > What do we need a magic method for? for determining whether two Areas intersect > Are these bounding areas? yeah did we implement a magic method? > Why yes, we did. ooh how nice ah, i won't actually use your method but i'll steal the idea > I can't remember what it was, but it exists. i prefer to cache all the filled space in the gameboard as a single shape so it doesn't have to keep recalculating collision (or would it do it internally anyway?) > Oh. That works. what's a primitive type void? ah, nevermind i never knew it was a primitive type, although that would make sense i've got editor collisions done, except for some indicator that what's being done is invalid *** You have new email. does someone have a lock on the repository? the server's rejecting me *ping* Ack, my client was scrolled back ci'd editor collisions and the hiding toolbar i'll start on some doc stuff, i guess unless there are any requests eh, mind if i request a pdf of finaler? i'll be back in ten mins or so Hmm. There are still a bunch of small things left (issues.txt), but it might be a good idea to do some doc stuff now shall i edit the issues file to reflect what's been handled? Sure what's "dealing with mouse off the board"? Oof, you know it can't be good when you look over the printout of the lecture slides from the lecture you were just in and you don't recognize half of them you were in a lecture? 004? right When you're editing something (say moving it) and you move the mouse off the board, it stops the edit should i turn that off? Oh, was that intentional? yeah there might be side effects of disabling it like stuff lingering when you switched modes Hmm Is the collision stuff ci'd? yeah should be lemme ci property setting snapping btw, you can clear the board, kinda revert will revert to a new board if you haven't loaded or saved Oh (yes, this is not the best mechanism, clearly) how's the treetable? It appears to be working are editor collisions working? Uh, sort of... If I try to place an overlapping gizmo, it jumps back to its original position, but that appears to be it yeah, that's basically it for now Ah, okay Dan says the property table is essentially done cool i'm jazzing up some of the interface stuff like overloading the save button to support save vs. save as, with overwrite confirmation there seems to be an issue with either saving or loading flipper orientation see gizmoman.xml gizmoman.xml? err, is it not there? in testfiles? Nope alright lemme ci there'll be a flipper that's obviously misoriented try correcting it, and saving somewhere, then reloading and i think it goes back to being broken * dan is here again. ah, nevermind it's not even possible anymore, with editor collisions > Time to finish up PropertyTable. i guess move it out of the way, rotate it 180 degrees, save then reload it btw, i tested the afg bounding box stuff while doing editor collisions by having it actually draw them, they look alright Oops. Sorry, looks like I'm geometrically challenged Fix ci'd how would relative angle work? relative to what? Relative to whatever angle the mouse started at ie, it wouldn't jump when you clicked the angle frobber oh, so it's differential But if you move the mouse 5 degrees from the starting point, the gizmo turns 5 degrees Yes sure > DEBUG PrimitivePropertyPropertyTreeNode: The user screwed up and entered Ball3 which threw a java.lang.IllegalArgumentException > http://www.cs.brandeis.edu/~dkw/C-humor/pasta.txt > http://www.gnu.org/fun/jokes/pasta.code.html We should take out the undo button (Or undo putting in the undo button?) sure Speaking of which, how is what going? what sections do i need to write i'll redo the user manual and do something on editor design i got frobber dragging to work and i'm working on keypress stuff Yeah, update the UI stuff Ah, cool Oh, and the MDD needs to be tweaked a bit... alright, lemme know where? and i'll do the sub MDDs Yeah, I'll have to think about it for a moment Uh, so, PropertyTable should probably be an ethereal cloud hah > Labeled 'here there be dragons', ideally. all the ui should be as well Yes. In fact, I think the MDD needs a general HBD label That would certainly make me happy ]:--8) > In a nice black-letter font. Everything below AbstractGizmo should be in the gizmoball.gizmos.standard package > ci'd PropertyTable with selection observation Oh, and there should just be BallGizmo and AbstractFixedGizmo directly deriving from it. Everything else comes from AFG I think that's it cool damn, these files are huge > I'm calling the PropertyTable done for now, and moving to docs. Are the latest frobber menu features ci'd? yeah, just about gimme a sec what's a keyup trigger and what's a keydown? up = release? Yes I think eh, alright Unless your keyboard is upside-down alright, doc time i ci'd a keypress thing with a dialog in the component can you send me a pdf of the current state of the finaler? Sure Er.. Can you implement the big X and not jumping back to its original position on a placement collision? sure but it'll jump back if you try to place it lemme take care of some doc stuff first Okay Woah. The key trigger thing is crazy Uh, shouldn't it default to true, true instead of false, false? good point i couldn't think of a particularly usable way to do it > Something like, oh, a dialog? it's basically a dialog but we have to do all our stuff in-house > I suppose you could say that... ci'd test it? It appears to work cool can we do something about the property table sizing if there's time? > Sure. What do you want to do to it? just have it not resize so much, i guess fix the height at something reasonable It resizes? oh, maybe i was getting confused eh, we should fix the component size oh, btw, you can enable orientation for squares Er, yeah Done cool Would you like some aquified screenshots? ]:--8) ooh i was thinking of just using my own, but that'd be nice > Tell me what you want a screenshot of. Send me saved gameboards if you like. eh, just load example or something show a frobber menu, some connections that should be sufficient DEBUG R2EditingInteractionMode: Starting probing mouse pressed java.lang.IllegalArgumentException at gizmoball.game.GameBoard.addGizmo(GameBoard.java:514) at gizmoball.ui.r2.R2EditingInteractionMode$BuildSubMode.endingProbeSession(R2EditingInteractionMode.java:776) I just tried adding a ball to gizmoman hmm > That means it tried to create a ball with a name that was not unique lemme look at it > It enforces that now. oh, right ugh it's kinda hard to adjust the numbers to reflect what's on the board Just keep incrementing it and asking the board if one already exists? sure i'll catch the exception and loop it till it works? That 's.. one way to do it or is there a better way of finding what the gameboard has Not what I was thinking, but it works I was thinking just make a set of the names and work from that sure what's the accessor? > getGizmos gives you the gizmos can i get the names? > Not easily hmm ugh, i wish i had map > Yes. So do I. so i can iterate through, add all the names to a set and then increment the name i'm using till it's not in the set fixed How's the MDD? eh, i'm writing my parts first i'll get to it shourtly *** You have new email. *** You have new email. Uh, how long'll it take you to get over here? h... i'll be there by 6:30 ugh i'm still writing though when are we to submit the report? By the end of our demo ugh hmm well i'll complete this paragraph, ci and come over where are you guys? w20 1st floor By Alpine alright, i'll see you soon alright, i'm back WB How are the MDDs coming? eh, i'm still writing i can probably do graphics faster than i can write alright, i ci'd the editor design stuff Cool > I guess I should probably take out the part about how we're going to implement a R3 renderer with Java3D if time permits. *** You have new email. so what needs change in the mdd? the refactoring of gizmos and such how do these interaction handlers fit in? > Austin has collapsed from exhaustion, let me revive him. ok *** You have new email. > He's not responding to poking. eh, don't worry about it > I think I'm going to let him sleep, he needs it. > I assume that the GameBoard and the gizmos depend on the InteractionManager > oh, and I propertyified GameBoard and AbstractTrigger yeah, probably alright, i need like 10 more mins > ok. * Amthrax uncollapses How's the MDD? ah, so i have 3 small ones for ui, ui.r2, and game/standard gizmos and i'm making a big gutted one with a few interconnects with that, it should be good alright, propertytable cloud, and then i'll ci where you wanna stick all this stuff, i'm not sure i assume you can handle sizing? Yes about to ci you should probably have the full one in there too these are rather bare ci'd i think i'll redo gizmoman editor collisions suck ah, how do i get the schema fix? I ci'd that already It should Just Work (though you'll have to build again) *** You have new email. *** You have new email. *** You have new email. the disturbing obsession with gizmoball that slowly set in now won't go away! i am very tempted to do poly building just for the heck of it * Amthrax backs away slowly anyway, i figure it's about time i acquaint myself with the other parts of the system *** You have new email. *** You have new email. *** You have new email. *** You have new email. *** You have new email. *** You have new email. *** You have new email. *** You have new email. *** You have new email. *** You have new email. *** You have new email. *** X_ranger (~Harperjg@cpe-024-165-115-083.cinci.rr.com) has joined channel #6.170 *** X_ranger has left channel #6.170 *** X_ranger (~Harperjg@cpe-024-165-115-083.cinci.rr.com) has joined channel #6.170 *** X_ranger has left channel #6.170 *** X_ranger (~Harperjg@cpe-024-165-115-083.cinci.rr.com) has joined channel #6.170 Anybody listening? *** X_ranger has left channel #6.170 *** You have new email. *** You have new email. *** You have new email. Over and out *** Signoff: Amthrax (Quit: leaving) *** You have new email. #6.170 dan H dan@clamshell.ambulatoryclam.net (0 Dan Ports) #6.170 aleung H ~aleung@MACGREGOR-THREE-SIXTY-ONE.MIT.EDU (0 Albert Leung) *** clamshell.ambulatoryclam.net #6.170 :End of /WHO list. *** You have new email. *** You have new email. IRC log ended Mon May 17 15:45:03 2004