--- Log opened Sun Apr 15 00:00:53 2007 |
00:04 | | Raif [~corvusign@Nightstar-22484.hsd1.ca.comcast.net] has joined #Code |
00:04 | | mode/#code [+o Raif] by ChanServ |
00:37 | | * McMartin notices he has failed to implement > GIVE {NPC} WHAT FOR as a synonym for > ATTACK, fixes this grievous oversight |
01:15 | <@McMartin> | Understand the command "raid" as "search".[* The Scholars launch plenty of raids, but the only item the player is ever really cued to raid is the fridge.] |
01:28 | | Doctor_Nick [~fdsaf@Nightstar-27777.rag-a.fsu.edu] has joined #code |
01:29 | | * gnolam hugs his 68k. |
01:29 | | Thaqui [~Thaqui@Nightstar-11312.jetstream.xtra.co.nz] has joined #code |
01:29 | | mode/#code [+o Thaqui] by ChanServ |
01:30 | <@McMartin> | Doing some old-school Amiga hacking, are we? |
01:31 | <@gnolam> | I was digging through x86 code a couple of minutes ago. I felt I needed to cleanse myself. |
01:31 | <@Vornicus> | That, or Sega Genesis, or old-school Mac |
01:31 | < MyCatVerbs> | Amiga was 68k? |
01:32 | | * gnolam thwaps MyCatVerbs over the head with a Fat Agnus. |
01:35 | <@McMartin> | 68030 by the end of its useful life, IIRC, MCV. |
01:35 | <@McMartin> | IMNRC, though. |
01:35 | < MyCatVerbs> | Oook. |
01:36 | <@gnolam> | International Multidisciplinary Neuroscience Research Center? |
01:36 | < MyCatVerbs> | Didn't Amigas use to be able to run DOS code or something like that? |
01:36 | <@McMartin> | gnolam: I May Not Remember Correctly |
01:36 | <@McMartin> | MCV: By jamming an x86 in the cartridge slot, IIRC. |
01:36 | <@gnolam> | Unless you're referring to AmigaDOS. |
01:37 | < MyCatVerbs> | Good place to stick it. |
01:37 | < MyCatVerbs> | gnolam: that might well be it, I'm fuzzy on details. |
01:38 | <@gnolam> | I should really rescue my old Amiga from the moldy old cellar it's stored in. :-/ |
01:40 | | * gnolam decides to crash his computer instead. |
01:40 | <@gnolam> | 30 s to go... |
01:47 | | Otto_Flick [lenin@Nightstar-13557.8.5.253.se.wasadata.net] has joined #Code |
01:47 | | gnolam is now known as NSGuest-1371 |
01:47 | | Otto_Flick is now known as gnolam |
01:48 | | NSGuest-1371 [lenin@Nightstar-13557.8.5.253.se.wasadata.net] has quit [Ping Timeout] |
01:51 | <@ToxicFrog> | I should probably document and release this framework now that it's finished. |
01:52 | < MyCatVerbs> | Documentation would be an awesome idea. |
02:07 | | Derakon[AFK] [~Derakon@Nightstar-12737.sea2.cablespeed.com] has quit [Connection reset by peer] |
02:07 | <@ToxicFrog> | ...says the person who's never going to use it. |
02:11 | < MyCatVerbs> | You *entirely* sure of that? |
02:18 | <@ToxicFrog> | Well, given your total lack of interest in, and knowledge of, Lua... |
02:19 | < MyCatVerbs> | ^6 |
02:19 | < MyCatVerbs> | *^^ |
02:25 | | * ToxicFrog fiddles with tableproxies |
02:27 | <@ToxicFrog> | Aha! I think I see how to do this. |
02:27 | < MyCatVerbs> | ? |
02:29 | <@ToxicFrog> | The proxy is a userdata of size 1. It has a metatable. This metatable, when generated, gets a function for each metamethod on the object it's a proxy for; this function merely invokes the corresponding metamethod on the proxied object with the correct self. |
02:30 | <@ToxicFrog> | Furthermore, default metmethods for __index and __newindex will be provided if none are present in the metamethods, as otherwise the proxy is kind of useless. |
02:42 | <@ToxicFrog> | This also means you can overload __len and __gc and whatnot and they'll work, as well as __index and __newindex triggering on every event rather than acting as fallbacks. |
02:48 | <@ToxicFrog> | local proxy = mkproxy() |
02:48 | <@ToxicFrog> | getmetatable(proxy).__index = obj |
02:48 | <@ToxicFrog> | getmetatable(proxy).__newindex = obj |
02:48 | <@ToxicFrog> | for k,v in self.meta do |
02:48 | <@ToxicFrog> | if type(v) == 'function' then |
02:48 | <@ToxicFrog> | getmetatable(proxy)[k] = function(P, ...) |
02:48 | <@ToxicFrog> | return self.meta[k](obj, ...) |
02:48 | <@ToxicFrog> | end |
02:48 | <@ToxicFrog> | end |
02:48 | <@ToxicFrog> | end |
03:02 | | MyCatVerbs is now known as MyCatSleeps |
03:08 | | gnolam [lenin@Nightstar-13557.8.5.253.se.wasadata.net] has quit [Quit: ] |
03:30 | | * ToxicFrog pokes the other #codizens |
03:30 | <@ToxicFrog> | I need a name for this library. |
03:30 | <@Vornicus> | What's it do? |
03:31 | <@ToxicFrog> | OO for lua (again) with a smalltalk-style recursive class tree and full operator overloading via proxy userdata. |
03:32 | <@Vornicus> | SmallLua? idunno |
03:39 | < Doctor_Nick> | "the awesome library" |
03:44 | <@ToxicFrog> | Too generic. Leaves no way to distinguish it from my other libraries. ?? |
03:48 | <@Vornicus> | pff |
03:54 | | * Vornicus beats POV-Ray. The syntax is fine! You are an idiot! |
03:54 | <@ToxicFrog> | Can't just call it "oolua" or somerthing either, because that conflicts with my other OO libraries, plus I know of at least four out there that I haven't written. |
03:56 | < Doctor_Nick> | "oolalua" :D |
04:05 | | * Vornicus throws Doctor_Nick off the earth |
04:05 | <@Vornicus> | TF: so what do the other OO libraries out there do? |
04:16 | <@ToxicFrog> | The same thing, mostly, but in different ways. |
04:17 | <@ToxicFrog> | One's fully prototype-based - no classes, everything's an object with a perfect copy operator - most of them work by accepting definition tables, which results in very messy and syntactically finicky class definitions. |
04:18 | <@ToxicFrog> | As far as I know I'm the only person to use setfenv() trickery to get around that. |
04:22 | < Doctor_Nick> | Vornicus: Thats a good name! :( |
04:45 | | * Vornicus fiddles with POV-Ray, goes "oopsies" as he arrives at a silly error. |
04:59 | | Janus [~Cerulean@Nightstar-10302.columbus.res.rr.com] has joined #Code |
05:01 | | Thaqui [~Thaqui@Nightstar-11312.jetstream.xtra.co.nz] has left #code [Leaving] |
05:10 | | ReivSLEP is now known as ReivOut |
05:14 | | * ToxicFrog finds a serious flaw in his library ;.;' |
05:14 | <@Vornicus> | ? |
05:14 | <@McMartin> | 40,729 words. |
05:15 | <@ToxicFrog> | Because of the order in which environments are fiddled, Foo = Class(Bar) is legal, but classes.Foo = Class(Bar) is not. |
05:18 | <@ToxicFrog> | Basically, the problem is that by the time Class() returns, the environment has changed. |
05:18 | <@ToxicFrog> | So it now tries to assign the new class definition into the class definition itself. |
05:21 | <@ToxicFrog> | ...also, while going from the proxy to the object is transparent, going from the object to the proxy is not possible. |
05:21 | <@ToxicFrog> | I'm not sure if that's a flaw or not, but I think it is. |
05:27 | <@ToxicFrog> | Gnar. |
05:27 | | * ToxicFrog flails at it |
05:27 | <@ToxicFrog> | The problem is that, in a sense, it doesn't really return until endclass() is called. |
05:27 | <@ToxicFrog> | But then we end up writing: |
05:27 | <@ToxicFrog> | Class(Superclass) |
05:27 | <@ToxicFrog> | ... |
05:27 | <@ToxicFrog> | Subclass = endclass() |
05:28 | <@ToxicFrog> | Which just looks wrong. |
05:28 | <@Vornicus> | eeew |
05:30 | <@ToxicFrog> | Now, I consider both of these preferable to the definition-table syntax: |
05:30 | <@ToxicFrog> | Subclass = Class(Superclass) { ... } |
05:30 | <@ToxicFrog> | Because within the table, we end up with stuff like: |
05:30 | <@ToxicFrog> | someMethod = function(self, args) ... end; |
05:31 | <@ToxicFrog> | And god help you if you forget a semicolon. |
05:33 | <@Vornicus> | ...it is wahooni-shaped |
05:33 | | * Vornicus tries to figure out what the hell he did wrong. |
05:40 | | * ToxicFrog flails, goes to sleep. |
05:41 | <@ToxicFrog> | ...actually. |
05:41 | <@ToxicFrog> | How does this look? |
05:41 | <@ToxicFrog> | Subclass = Class(Superclass) -- at this point Subclass is a 'proto-class' and cannot actually be instantiated |
05:41 | <@ToxicFrog> | Subclass:startdef() |
05:41 | <@ToxicFrog> | -- stuff goes here |
05:41 | <@ToxicFrog> | enddef() |
05:47 | | * ToxicFrog pokes |
05:48 | <@Vornicus> | That... hm |
05:49 | <@Vornicus> | looks almost okay. |
05:51 | <@ToxicFrog> | Possible improvements? |
05:52 | <@Vornicus> | hrm |
05:52 | <@Vornicus> | Well, I don't know - it feels like the Superclass thing shoul... no, you had a problem with that |
05:54 | | ReivOut is now known as Reiver |
05:55 | <@ToxicFrog> | ? |
05:57 | <@Vornicus> | It feels like it should show in or after startdef |
05:59 | <@ToxicFrog> | ...it could, but that feels really weird and disturbing. |
06:08 | | Janus [~Cerulean@Nightstar-10302.columbus.res.rr.com] has quit [Quit: I have soap in my eye. ] |
08:05 | | Mahal [~Mahal@Nightstar-763.worldnet.co.nz] has joined #Code |
08:05 | | mode/#code [+o Mahal] by ChanServ |
09:07 | <@McMartin> | o/~ Fuzzy dalek funny dalek dalek dalek TRUCK o/~ |
09:07 | | * McMartin should be sleeping, but I7 has him in the grip of madness |
09:07 | | * Reiver blinks. |
09:07 | <@Reiver> | Do I want to know the reference, McM? |
09:08 | <@McMartin> | ... you haven't seen The Dalek Song? |
09:08 | <@Reiver> | I mean, other than a Doctor Who new series thing, um... |
09:08 | <@McMartin> | Have you seen the Llama Song? |
09:08 | <@Reiver> | No? |
09:08 | <@McMartin> | OK, one moment |
09:09 | <@jerith> | Yay Dalek song! |
09:09 | <@McMartin> | 15:52 <+McMartin> Original: http://www.albinoblacksheep.com/flash/llama.php |
09:09 | <@McMartin> | 15:52 <+McMartin> Parody: http://artistic-insanity.net/song/daleksong.html |
09:09 | <@McMartin> | 15:52 <+McMartin> Original: http://www.albinoblacksheep.com/flash/llama.php |
09:09 | <@McMartin> | 15:52 <+McMartin> Parody: http://artistic-insanity.net/song/daleksong.html |
09:09 | <@McMartin> | Urk |
09:09 | <@McMartin> | http://www.livejournal.com/userpic/51225707/426703 |
09:09 | <@McMartin> | There we go |
09:09 | <@McMartin> | Second parody |
09:10 | <@McMartin> | The reason it came up is a bug in the WSIF buglist, which isn't particularly spoily: |
09:11 | <@McMartin> | "The truck in chapter 5 should be referencable even though it appears and leaves in the same turn." |
09:12 | <@jerith> | I love that planet one... |
09:14 | <@Vornicus> | The dalek one is funnier than the llama one. |
09:14 | <@McMartin> | It is. |
09:14 | <@McMartin> | In part because the past tense of "to slay" is "slew". |
09:15 | <@McMartin> | "Slayed" is not correct under any circumstance. |
09:15 | <@Reiver> | |
09:15 | <@Reiver> | |
09:15 | <@Reiver> | The dalek one wins, yes. |
09:15 | <@McMartin> | "Sleighed" is correct, but means something entirely difference |
09:16 | <@jerith> | Did anything ever come of your Dalek medics? |
09:16 | <@Vornicus> | Did you ever see a dalek touch a dalek on a dalek? |
09:16 | <@McMartin> | DE FIB RIL LATE |
09:16 | <@McMartin> | DE FIB RIL LATE |
09:16 | <@McMartin> | No; they became an I7 bug report. ;_; |
09:16 | <@jerith> | Yep, those ones. |
09:16 | <@jerith> | :-( |
09:16 | <@McMartin> | In other news, WSIF is pushing 40,000 words now. |
09:17 | <@jerith> | After the refactoring? |
09:17 | <@Vornicus> | I thought it had passed 40k. |
09:17 | <@McMartin> | Er, yes. |
09:17 | <@McMartin> | It's pushing 41,000. |
09:17 | <@McMartin> | jerith: Yeah. The refactoring made it look much nicer. |
09:17 | <@McMartin> | I'm not totally ashamed to look at my own code anymore. |
09:17 | | * Reiver reads the second spoof. |
09:18 | | * Reiver has to watch it twice before he gets it, and then pffffhahahha |
09:18 | <@jerith> | Reiv: The planets? |
09:18 | <@jerith> | That's awesome. |
09:19 | <@Reiver> | So totally is. |
09:19 | <@jerith> | This iPod thing is so tiny. |
09:20 | <@jerith> | ('Tis a Nano. The 8gb version.) |
09:24 | <@jerith> | It's small enough that it verges on uncomfortable to operate. |
09:25 | <@Vornicus> | ...and of course I have to deal with split points in my translation function. |
09:25 | | * Vornicus spews hate. |
09:25 | | AnnoDomini [~farkoff@Nightstar-29170.neoplus.adsl.tpnet.pl] has quit [Ping Timeout] |
09:26 | | * jerith catches and distills it. |
09:26 | <@Vornicus> | what, are you building a Spider Jerusalem? |
09:26 | | * jerith puts the seething bottle of Essence of Hate on the shelf next to the others. |
09:27 | <@jerith> | No, just adding to my collection. |
09:27 | <@jerith> | It might be useful later. |
09:27 | | AnnoDomini [~farkoff@Nightstar-29170.neoplus.adsl.tpnet.pl] has joined #Code |
09:27 | | mode/#code [+o AnnoDomini] by ChanServ |
09:27 | <@jerith> | I have Avarice, Lust and Rage there as well. |
09:28 | <@jerith> | Rage looks similar to Hate, but has a rather different composition. |
09:28 | <@jerith> | Also, it needs a reinforced bottle. |
09:28 | <@McMartin> | You still haven't managed wrath. Weak. |
09:29 | <@jerith> | When I tried to elicit it I got Rage instead. |
09:29 | <@McMartin> | Ah well. |
09:31 | <@jerith> | I suppose I need to target someone a little higher in the hierarchy. |
09:31 | <@jerith> | You need a certain kind of person to extract wrath. |
10:08 | | Doctor_Nick [~fdsaf@Nightstar-27777.rag-a.fsu.edu] has quit [Ping Timeout] |
10:28 | | Mahal is now known as MahalGONE |
10:47 | | You're now known as TheWatcher |
11:22 | | You're now known as TheWatcher[afk] |
11:45 | | gnolam [lenin@Nightstar-13557.8.5.253.se.wasadata.net] has joined #Code |
11:45 | | mode/#code [+o gnolam] by ChanServ |
11:52 | | MyCatSleeps is now known as MyCatBoozes |
12:38 | | AnnoDomini [~farkoff@Nightstar-29170.neoplus.adsl.tpnet.pl] has quit [Quit: Juffo-Wup is a *candle*. It is filled with many *candy bars*.] |
12:39 | | AnnoDomini [~farkoff@Nightstar-29170.neoplus.adsl.tpnet.pl] has joined #Code |
12:39 | | mode/#code [+o AnnoDomini] by ChanServ |
12:48 | | AnnoDomini [~farkoff@Nightstar-29170.neoplus.adsl.tpnet.pl] has quit [Quit: Kill the interloper! Rip out its life!] |
12:51 | | AnnoDomini [~farkoff@Nightstar-29170.neoplus.adsl.tpnet.pl] has joined #Code |
12:51 | | mode/#code [+o AnnoDomini] by ChanServ |
12:54 | | AnnoDomini [~farkoff@Nightstar-29170.neoplus.adsl.tpnet.pl] has quit [Quit: If nothing we do matters, all that matters is that we do.] |
13:06 | | AnnoDomini [~farkoff@Nightstar-29170.neoplus.adsl.tpnet.pl] has joined #Code |
13:06 | | mode/#code [+o AnnoDomini] by ChanServ |
13:07 | | You're now known as TheWatcher |
14:22 | | AnnoDomini [~farkoff@Nightstar-29170.neoplus.adsl.tpnet.pl] has quit [Quit: Don't trust the skull.] |
14:36 | | AnnoDomini [~farkoff@Nightstar-29170.neoplus.adsl.tpnet.pl] has joined #Code |
14:36 | | mode/#code [+o AnnoDomini] by ChanServ |
15:24 | | * ToxicFrog looks at his code, looks at the metamethod resolution code, swears quietly. |
15:48 | <@ToxicFrog> | Hmm. |
15:48 | <@ToxicFrog> | I think the name actually goes in startdef. |
15:55 | <@ToxicFrog> | The problem with using proxy objects is that getmetatable() and pairs() behave very oddly when used externally. |
16:00 | <@ToxicFrog> | Ok. Now comes the bootstrapping. |
16:10 | <@ToxicFrog> | It bootstraps! |
16:11 | <@ToxicFrog> | NewClass = Class() |
16:11 | <@ToxicFrog> | NewClass:startdef "Class" |
16:11 | <@ToxicFrog> | name = false |
16:11 | <@ToxicFrog> | def = {} |
16:11 | <@ToxicFrog> | meta = {} |
16:11 | <@ToxicFrog> | proxymeta = {} |
16:11 | <@ToxicFrog> | env = false |
16:11 | <@ToxicFrog> | |
16:11 | <@ToxicFrog> | __call = Class.meta.__call |
16:11 | <@ToxicFrog> | __tostring = Class.meta.__tostring |
16:11 | <@ToxicFrog> | __init = Class.meta.__init |
16:11 | <@ToxicFrog> | def.instanceof = instanceof |
16:11 | <@ToxicFrog> | enddef() |
16:11 | <@ToxicFrog> | Class = NewClass |
16:40 | | gnolam [lenin@Nightstar-13557.8.5.253.se.wasadata.net] has quit [Ping Timeout] |
16:48 | | AnnoDomini [~farkoff@Nightstar-29170.neoplus.adsl.tpnet.pl] has quit [Quit: Those who slay dragons become dragons themselves. Stare into the abyss long enough, and it will stare back at you.] |
16:53 | | * ToxicFrog glares |
16:53 | <@ToxicFrog> | Ok, I need to whiteboard this. |
16:54 | <@Reiver> | ? |
16:55 | <@ToxicFrog> | My design is getting messy. |
16:55 | <@ToxicFrog> | I'm going to do away with the bootstrapping, it leaves too much clutter, and just hand-assemble the first Class. |
16:57 | <@ToxicFrog> | Also I need to come up with a good way of getting at the real metatable from inside methods. |
16:57 | <@ToxicFrog> | getmetatable(self) won't work, because it isn't actually applied; instead a copy of the metatable proxy is applied to the proxy userdata, and passes things on. |
16:58 | | * ToxicFrog ponders. A method meta(key) which returns the corresponding value in the real metatable? |
17:05 | <@ToxicFrog> | Ok. Here is the design. |
17:05 | <@ToxicFrog> | An object is actually a one-byte full userdata, with an attached metatable. |
17:05 | <@ToxicFrog> | This metatable is a copy of the 'real' metatable, with each function replaced by a short closure that replaces self with the object table. |
17:06 | <@ToxicFrog> | __index and __newindex, as well as the new metafield __obj, redirect to the object table, which holds all the actual members and methods. |
17:07 | <@ToxicFrog> | The method meta(key) is provided, which gets you entries from the real metatable; in particular, "proxy" will get you the proxy object, "obj" will get you the object table, and "type" will get you the class object that this object is an instance of. |
17:09 | | * Vornicus completes his map projection, complete with code to generate and code to apply. |
17:09 | | You're now known as TheWatcherp[afk |
17:09 | | You're now known as TheWatcherp[afk] |
17:09 | | You're now known as TheWatcher[afk] |
17:16 | <@ToxicFrog> | ...shit, that won't work. The metatable is common to all objects of that type, but the object table is unique. |
17:16 | | Doctor_Nick [~fdsaf@Nightstar-27777.rag-a.fsu.edu] has joined #code |
17:16 | | * Reiver seriously thinks Vorn should tell this to actual real life cartographers, if he knows any, because it is Worthy of such. |
17:27 | | Reiver is now known as ReivZzz |
17:38 | | gnolam [lenin@Nightstar-13557.8.5.253.se.wasadata.net] has joined #Code |
17:38 | | mode/#code [+o gnolam] by ChanServ |
18:22 | | You're now known as TheWatcher |
18:32 | | AnnoDomini [~farkoff@Nightstar-29170.neoplus.adsl.tpnet.pl] has joined #Code |
18:32 | | mode/#code [+o AnnoDomini] by ChanServ |
18:43 | | GeekSoldier [~IceChat7@Nightstar-2716.pools.arcor-ip.net] has joined #code |
18:44 | < GeekSoldier> | any Python volken here? stupidly simple but insanely mindboggling question here. |
18:44 | | * GeekSoldier prepares self-flagellation unit. |
18:44 | | * Vornicus is Mr. Python |
18:44 | < GeekSoldier> | :) |
18:45 | < GeekSoldier> | there is a builtin function to convert from hex to dec, correct? |
18:45 | <@Vornicus> | If you have a string in hexadecimal, int(s,16) will convert it to an integer. |
18:46 | < GeekSoldier> | oh wait... |
18:46 | | * GeekSoldier invokes self-flagellator. |
18:47 | <@Vornicus> | if it's an 0x hexadecimal string, int(s, 0) will do it, and octal, and decimal |
18:47 | < GeekSoldier> | declared a variable in hex, when printed, it did so as decimal... |
18:47 | <@Vornicus> | Heh |
18:47 | < GeekSoldier> | thanks Vorn. had a stupid moment. |
18:47 | < GeekSoldier> | perhaps I should play around in IDLE before asking a question next time. |
18:53 | | Janus [~Cerulean@Nightstar-10302.columbus.res.rr.com] has joined #Code |
19:27 | | KBot [~karma.bot@Nightstar-29683.neoplus.adsl.tpnet.pl] has joined #Code |
19:27 | | AnnoDomini [~farkoff@Nightstar-29170.neoplus.adsl.tpnet.pl] has quit [Ping Timeout] |
19:28 | | KarmaBot [~karma.bot@Nightstar-29170.neoplus.adsl.tpnet.pl] has quit [Ping Timeout] |
19:28 | | KBot is now known as KarmaBot |
19:33 | | Attilla [~The.Attil@Nightstar-25595.ipt.aol.com] has joined #Code |
19:33 | | AnnoDomini [~farkoff@Nightstar-29683.neoplus.adsl.tpnet.pl] has joined #Code |
19:33 | | mode/#code [+o AnnoDomini] by ChanServ |
19:34 | < Attilla> | There are a lot of computer scientists or students thereof on this network, but then again these are "The Tubes" and so that gets somewhat high compared to other professions anyway. |
19:35 | <@Vornicus> | Yes. |
19:35 | <@Vornicus> | Welcome to teh intarnewbs, where you're either a jackass or a hacker |
19:38 | < Attilla> | So what sorts of things are discussed here then? I assume something coding-related, and I could converse about an array of silly and annoying programs I once made in Delphi whilst goofing off in a CompSci lecture. |
19:38 | <@Vornicus> | Everything code. |
19:39 | < GeekSoldier> | those would be acceptable. |
19:39 | < GeekSoldier> | I use it as a sounding board for all my stupidity and oversight. |
19:39 | <@Vornicus> | Over the past few days, everything from the underlying madness of object models to disassemblers to Interactive Fiction to, apparently, Daleks. |
19:39 | < GeekSoldier> | right, Vorn? |
19:39 | <@Vornicus> | Something like that |
19:42 | | Vornicus is now known as Vornicus-Latens |
19:48 | | Derakon [~Derakon@Nightstar-12737.sea2.cablespeed.com] has joined #code |
19:48 | | mode/#code [+o Derakon] by ChanServ |
19:49 | <@Derakon> | Okay, here's an interesting stylistic question... |
19:49 | <@Derakon> | I'm writing a function to determine the degree to which a given sprite intersects another sprite, given the first sprite's velocity and assuming the second sprite is stationary. |
19:50 | <@Derakon> | Now, I want to check the case where the sprite's velocity is negligible and the two sprites are colliding, because that would result in an infinite loop, or close enough. |
19:50 | <@Derakon> | Is it better to do "if (vel.magnitude() < EPSILON && this->collides(altSprite)" before I enter the loop, or put "if (vel.magnitude() < EPSILON)" inside the loop? |
19:51 | <@Derakon> | The former ensures I don't do a conditional every time through the loop, but involves a usually-redundant collides() call; the latter avoids the redundant call but adds redundant if statements. |
19:51 | < Doctor_Nick> | Attilla: Sorry, this chatroom is dedicated solely to the discussion of Dan Brown books |
19:51 | <@Derakon> | Here's the current code, minus check: http://pastie.caboo.se/54023 |
19:52 | | * Derakon drops the Encyclopaedia Brittanica on Nick, one volume at a time. |
19:53 | < Doctor_Nick> | Jokes on you, that's the digital edition! |
19:53 | <@Derakon> | Printed out. |
19:53 | <@Derakon> | In binary. |
19:54 | < GeekSoldier> | how heavyweight are the two options? it seems that the first check costs more than the inner one. |
19:54 | | * Janus peer reviews the binary. |
19:54 | <@Derakon> | The collide check does a bounding-box check, and then iterates over pixels in the box intersection area. |
19:57 | | Otto_Flick [lenin@Nightstar-13557.8.5.253.se.wasadata.net] has joined #Code |
19:57 | | gnolam is now known as NSGuest-1388 |
19:57 | | Otto_Flick is now known as gnolam |
19:58 | | NSGuest-1388 [lenin@Nightstar-13557.8.5.253.se.wasadata.net] has quit [Ping Timeout] |
19:59 | | * Derakon puts it outside the loop, on the theory that velocity will rarely be infinitesimal so the collide check will usually be avoided. |
20:02 | < GeekSoldier> | that makes sense. plus, you could cut back on excessive collide checks. |
20:02 | <@Derakon> | Eh? |
20:03 | < GeekSoldier> | were the check in the loop, you'd hawe to call it each iteration, right? |
20:03 | <@Derakon> | Yes, but it'd only be a check of if the velocity were infinitesimal. |
20:04 | <@Derakon> | Since I'd already know if they'd collided. |
20:04 | <@Derakon> | Basically my options are either 1 extra collide check, or a bunch of extra velocity checks. |
20:04 | < GeekSoldier> | oh. ok. |
20:05 | | * GeekSoldier was bass acwards. |
20:05 | <@Derakon> | Heh. |
20:12 | | MahalGONE is now known as Mahal |
20:16 | <@Derakon> | Ahh, now I have non-jittery collision between player and ground without using a walking stick...except that I've lost the ability to detect when I'm grounded. Hrm. |
20:17 | < gnolam> | Check for parents screaming at you. |
20:17 | | * Derakon facepalms. |
20:29 | | Otto_Flick [lenin@Nightstar-13557.8.5.253.se.wasadata.net] has joined #Code |
20:29 | | Otto_Flick [lenin@Nightstar-13557.8.5.253.se.wasadata.net] has quit [Client exited] |
20:34 | | GeekSoldier [~IceChat7@Nightstar-2716.pools.arcor-ip.net] has quit [Quit: Oops. My brain just hit a bad sector] |
20:40 | | * Derakon fixes, woot. |
20:40 | | Mahal is now known as MahalGONE |
20:45 | | Attilla [~The.Attil@Nightstar-25595.ipt.aol.com] has quit [Ping Timeout] |
20:46 | | AnnoDomini is now known as Kiers |
20:47 | | Attilla [~The.Attil@Nightstar-25595.ipt.aol.com] has joined #Code |
20:53 | | Trunk [~rTrunk@Nightstar-23968.217_74_245_110.kubangsm.ru] has joined #Code |
20:53 | < Trunk> | hi |
20:54 | < Trunk> | syka pidory |
20:55 | | Trunk [~rTrunk@Nightstar-23968.217_74_245_110.kubangsm.ru] has left #Code [] |
21:15 | <@ToxicFrog> | stack traceback: |
21:15 | <@ToxicFrog> | [C]: ? |
21:15 | <@ToxicFrog> | [C]: in function 'meta' |
21:15 | <@ToxicFrog> | class.lua:30: in function 'meta' |
21:15 | <@ToxicFrog> | class.lua:30: in function 'meta' |
21:15 | <@ToxicFrog> | class.lua:30: in function 'meta' |
21:15 | <@ToxicFrog> | I think I have an endless recursion! |
21:16 | <@Derakon> | Just possibly! |
21:18 | | You're now known as TheWatcher[T-2] |
21:22 | | You're now known as TheWatcher[zZzZ] |
21:26 | | Attilla [~The.Attil@Nightstar-25595.ipt.aol.com] has quit [Ping Timeout] |
21:28 | | Attilla [~The.Attil@Nightstar-25595.ipt.aol.com] has joined #Code |
21:29 | | * ToxicFrog finds the problem. |
21:29 | <@ToxicFrog> | All functions are wrapped in a translation function: |
21:29 | | Kiers is now known as AnnoDomini |
21:30 | <@ToxicFrog> | function(proxy, ...) return original_function(proxy:meta("obj"), ...) end |
21:30 | <@ToxicFrog> | This includes :meta(). |
21:37 | <@Derakon> | Whups. |
22:52 | | * Derakon shoots a Deathwalker 9000 with his Marro Warrior: 2 skulls. Deathwalker 9000's defense roll: 9 skulls, 1 shield. |
22:55 | <@ToxicFrog> | ... |
22:55 | <@ToxicFrog> | Pfffftftft. |
22:55 | <@Derakon> | That Deathwalker killed about six Marro warriors throughout the game. Fortunately I had one hiding behind a tree and standing in water. |
23:04 | | Janus is now known as Jan[dinneryays] |
23:23 | | Attilla [~The.Attil@Nightstar-25595.ipt.aol.com] has quit [Connection reset by peer] |
23:24 | | Attilla [~The.Attil@Nightstar-25595.ipt.aol.com] has joined #Code |
23:34 | | Thaqui [~Thaqui@Nightstar-11312.jetstream.xtra.co.nz] has joined #code |
23:34 | | mode/#code [+o Thaqui] by ChanServ |
23:37 | | Jan[dinneryays] is now known as Janus |
--- Log closed Mon Apr 16 00:00:53 2007 |