--- Log opened Thu Jul 16 00:00:49 2009 |
00:09 | | EvilDarkVord is now known as EvilSlepVord |
01:12 | | AgentIchiro [~Smith@Nightstar-7213.cpe.net.cable.rogers.com] has joined #code |
01:13 | | AgentIchiro [~Smith@Nightstar-7213.cpe.net.cable.rogers.com] has quit [Quit: I'm out, there's something else to do] |
01:23 | | TarinakyKai [~Tarinaky@Nightstar-16638.plus.com] has joined #code |
01:25 | | Tarinaky [~Tarinaky@Nightstar-16638.plus.com] has quit [Ping Timeout] |
02:00 | < Reivthia> | ... bang-tail? |
02:03 | <@McMartin> | !tail - "execute the last shell command in history that begins with 'tail'" |
02:15 | < Reivthia> | This makes you giggle like a 12 year old because? |
02:16 | <@McMartin> | The phrase itself is obscene~ |
02:37 | | Attilla [~The.Attil@92.11.7.ns-26496] has quit [Ping Timeout] |
02:43 | | Attilla [~The.Attil@92.11.7.ns-26496] has joined #code |
02:43 | | mode/#code [+o Attilla] by ChanServ |
02:51 | | gnolam [lenin@Nightstar-1382.A163.priv.bahnhof.se] has quit [Quit: Z?] |
03:07 | | Consul [~Consul__@Nightstar-3329.dsl.sfldmi.ameritech.net] has quit [Ping Timeout] |
03:07 | | Consul_ [~Consul__@Nightstar-3348.dsl.sfldmi.ameritech.net] has joined #code |
03:12 | | parameterdz3 [~3daebx@121.12.249.ns-22464] has joined #code |
03:13 | | parameterdz3 [~3daebx@121.12.249.ns-22464] has left #code [] |
03:19 | | Consul_ [~Consul__@Nightstar-3348.dsl.sfldmi.ameritech.net] has quit [Quit: Leaving] |
03:21 | | Consul [~Consul__@Nightstar-3348.dsl.sfldmi.ameritech.net] has joined #code |
03:21 | | mode/#code [+o Consul] by ChanServ |
03:30 | | passwordijk [~bvlpa9@62.205.226.ns-13200] has joined #code |
03:31 | | passwordijk [~bvlpa9@62.205.226.ns-13200] has left #code [] |
03:52 | | Vornicus is now known as Phas |
04:08 | | Derakon [~Derakon@Nightstar-4912.hsd1.ca.comcast.net] has joined #code |
04:08 | | mode/#code [+o Derakon] by ChanServ |
05:24 | <@Derakon> | I got a fair amount done on Jetblade while I was gone. |
05:24 | <@Derakon> | Unfortunately I neglected to install Mercurial on my laptop before leaving. So it's going to all be in one huge check-in. |
05:25 | <@Derakon> | Just about every single file has been touched, since among other things I ripped out all the tuples and lists I was using for vectors, and replaced them with the so very much cleaner Vector2D class. Which, I discovered after the fact, is slowing down everything by, oh, 25% compared to what I was using before. But the cleanliness is worth it. |
05:25 | <@SmithKurosaki> | :( |
05:26 | <@SmithKurosaki> | Is performance going to be an issue? |
05:26 | <@Derakon> | I'm hoping that it won't be too hard to turn it into a compiled C module. |
05:26 | <@Derakon> | Smith: it's annoying, if nothing else. |
05:27 | | * SmithKurosaki hugs |
05:27 | <@SmithKurosaki> | I wish I could help (but I would be so lost @.@) |
05:27 | <@Derakon> | Heh. |
05:27 | <@Derakon> | Go ahead and download it, take a look. Python's pretty easy to understand. |
05:28 | <@Derakon> | (Mind you, I haven't checked in the latest changes yet) |
05:29 | <@SmithKurosaki> | Maybe I can use it to try to learn python? |
05:30 | <@Derakon> | There are worse ideas, certainly. |
05:30 | <@Derakon> | Here's the project site: http://code.google.com/p/jetblade/ |
05:31 | <@SmithKurosaki> | Cool :) |
05:43 | <@Consul> | Bah. I got stuck in a corner. |
05:43 | <@Derakon> | Report a bug, please? |
05:43 | <@Derakon> | http://code.google.com/p/jetblade/issues/entry |
05:44 | <@Derakon> | Please include the RNG seed you used to make the map; it's one of the first lines of output when the program starts. |
05:44 | <@Consul> | Well, it's to do with level generation. I'm assuming it's supposed to allow me to get to anywhere? |
05:44 | <@Derakon> | Nominally, yes. |
05:45 | <@Derakon> | Wait, do you mean "stuck in a corner" as in "I went into a one-way passage" or as in "I'm wedged into some terrain and can't get out"? |
05:45 | <@Consul> | Oh, hey! I finally made the jump! |
05:45 | <@Derakon> | Because I already have an issue for the former. |
05:45 | <@Derakon> | :) |
05:46 | <@Consul> | Yeah, it was just a difficult bit of terrain. |
05:46 | <@Derakon> | Well, I really need to get to bed. Whee jetlag! |
05:46 | <@Consul> | Night |
05:47 | <@SmithKurosaki> | Night |
05:47 | <@Derakon> | I'll try to remember to keep an eye open for not just inaccessible but also tricky-jump regions. |
05:47 | | Derakon is now known as Derakon[AFK] |
06:05 | | Syloqs-AFH [~Syloq@ServicesAdmin.Nightstar.Net] has quit [Connection reset by peer] |
06:07 | | ToxicFrog [~ToxicFrog@Admin.Nightstar.Net] has quit [Operation timed out] |
06:08 | | SmithKurosaki [~Smith@Nightstar-10579.dsl.teksavvy.com] has quit [Operation timed out] |
06:09 | | SmithKurosaki [~Smith@Nightstar-7213.cpe.net.cable.rogers.com] has joined #code |
06:09 | | mode/#code [+o SmithKurosaki] by ChanServ |
06:09 | <@SmithKurosaki> | Heh, that's funny |
06:11 | | AgentIchiro [~Smith@Nightstar-12269.dsl.teksavvy.com] has joined #code |
06:12 | | ToxicFrog [~ToxicFrog@Admin.Nightstar.Net] has joined #code |
06:12 | | mode/#code [+o ToxicFrog] by ChanServ |
06:12 | | SmithKurosaki [~Smith@Nightstar-7213.cpe.net.cable.rogers.com] has quit [Quit: I'm out, there's something else to do] |
06:13 | | AgentIchiro is now known as SmithKurosaki |
07:07 | | Phas is now known as Vornicus |
07:14 | | You're now known as TheWatcher |
08:07 | | Derakon[AFK] [~Derakon@Nightstar-4912.hsd1.ca.comcast.net] has quit [Operation timed out] |
08:16 | | You're now known as TheWatcher[afk] |
09:41 | | ToxicFrog [~ToxicFrog@Admin.Nightstar.Net] has quit [Operation timed out] |
09:42 | | SmithKurosaki [~Smith@Nightstar-12269.dsl.teksavvy.com] has quit [Ping Timeout] |
09:45 | | SmithKurosaki [~Smith@Nightstar-10671.dsl.teksavvy.com] has joined #code |
09:45 | | mode/#code [+o SmithKurosaki] by ChanServ |
09:45 | | ToxicFrog [~ToxicFrog@Admin.Nightstar.Net] has joined #code |
09:45 | | mode/#code [+o ToxicFrog] by ChanServ |
09:58 | | You're now known as TheWatcher |
09:59 | | AnnoDomini [~farkoff@Nightstar-29556.neoplus.adsl.tpnet.pl] has joined #Code |
10:00 | | mode/#code [+o AnnoDomini] by ChanServ |
10:46 | | Vornicus is now known as Vornicus-Latens |
10:53 | | Rhamphoryncus [~rhamph@Nightstar-7168.ed.shawcable.net] has quit [Quit: Rhamphoryncus] |
11:55 | | You're now known as TheWatcher[d00m] |
12:28 | | gnolam [lenin@Nightstar-1382.A163.priv.bahnhof.se] has joined #Code |
12:28 | | mode/#code [+o gnolam] by ChanServ |
12:52 | | wann [~wan@60.48.136.ns-3858] has joined #code |
12:53 | | wann [~wan@60.48.136.ns-3858] has quit [I am lame because I use colors in my quit message.] |
13:05 | | EvilSlepVord is now known as EvilDarkLord |
13:12 | | You're now known as TheWatcher |
13:14 | | Thaqui [~Thaqui@121.98.166.ns-22683] has quit [Ping Timeout] |
13:24 | | Alek [~omegaboot@Nightstar-28432.dsl.emhril.sbcglobal.net] has quit [Quit: latah] |
14:20 | | * gnolam hmms. |
14:21 | <@gnolam> | So far I've covered basic movement (WSAD), jumping, crouching and opening doors. Does an FPS tutorial really need much more? |
14:22 | < EvilDarkLord> | Well, you could look into covering the S. |
14:23 | <@TheWatcher> | Actually, I think he's pretty much got his s covered there. Maybe activating things... |
14:33 | | TarinakyKai [~Tarinaky@Nightstar-16638.plus.com] has quit [Ping Timeout] |
14:33 | | TarinakyKai [~Tarinaky@Nightstar-16638.plus.com] has joined #code |
14:35 | | Netsplit DeepThought.NY.US.Nightstar.Net <-> Blargh.CA.US.Nightstar.Net quits: crem |
14:36 | <@gnolam> | There'll be no steenkin' activation here. |
14:36 | <@gnolam> | So I guess I'm done with the basic tutorial then. :) |
14:41 | | Netsplit over, joins: crem |
14:41 | | simontwo [~simon@78.129.201.ns-20882] has joined #code |
14:42 | < simontwo> | at some point, someone threw a comic at me describing what one instantaneously learned when one turns 100 years old. I think it contained esperanto, talking with bees and one other thing. anyone remember it? |
14:49 | <@gnolam> | Twas probably me. |
14:50 | <@gnolam> | From "All Knowledge Is Strange". |
14:51 | <@gnolam> | http://www.moderntales.com//comics/knowledge.php?view=archive&chapter=14263&mpe= 0 |
15:26 | <@ToxicFrog> | gnolam: re FPS tools: general thingy activation if the doors don't cover that; combat |
15:27 | <@gnolam> | This is for RadiaX, so no combat. But I do have to make it absolutely idiot-proof though. |
15:32 | | Attilla [~The.Attil@92.11.7.ns-26496] has quit [Connection reset by peer] |
15:32 | | Attilla [~The.Attil@92.11.7.ns-26496] has joined #code |
15:38 | | Attilla [~The.Attil@92.11.7.ns-26496] has quit [Ping Timeout] |
15:40 | | Attilla [~The.Attil@92.11.7.ns-26496] has joined #code |
15:40 | | mode/#code [+o Attilla] by ChanServ |
15:51 | <@ToxicFrog> | RadiaX? |
15:51 | <@ToxicFrog> | Also, if there's no combat, how is it an FPS? |
15:53 | <@SmithKurosaki> | Puzzle FPS? |
15:57 | <@ToxicFrog> | Yeah, but the S stands for Shooter. |
15:57 | <@gnolam> | Ok, so it's not technically a shooter, but it's quicker to say than "first-person exercise tool based on half-life 2". |
15:58 | | Attilla [~The.Attil@92.11.7.ns-26496] has quit [No route to host] |
15:58 | < simontwo> | I guess Portal is an FPS even though you don't kill with your shooter. |
15:58 | | Attilla [~The.Attil@92.11.7.ns-26496] has joined #code |
15:59 | < simontwo> | at least people know what you mean when you say Puzzle FPS as opposed to some newly invented acronym :) |
16:07 | <@SmithKurosaki> | Where did he say shooter/ |
16:07 | <@SmithKurosaki> | or you mean where he said FPS? |
16:08 | | Syloqs_AFH [Syloq@Admin.Nightstar.Net] has joined #code |
16:08 | <@gnolam> | I assume so. |
16:08 | <@ToxicFrog> | SmithKurosaki: yes, when he said FPS, because that stands for "first person shooter" |
16:09 | <@ToxicFrog> | simontwo: I would actually call Portal a puzzle FPS (first person, involves shooting and combat but all challenges are puzzle-based), and, say, the Myst series FPP puzzle games. |
16:09 | | Syloqs_AFH is now known as Syloqs-AFH |
16:10 | <@SmithKurosaki> | (Just checking...) |
16:26 | | You're now known as TheWatcher[afk] |
18:32 | | You're now known as TheWatcher[ |
18:32 | | You're now known as TheWatcher |
18:32 | | Derakon [~Derakon@Nightstar-4912.hsd1.ca.comcast.net] has joined #code |
18:32 | | mode/#code [+o Derakon] by ChanServ |
18:49 | | aaaaa [~mx@Nightstar-16145.tc-cutuk-net1-67.team.ba] has joined #code |
18:50 | < aaaaa> | Volim te aaaaa! |
18:50 | | aaaaa [~mx@Nightstar-16145.tc-cutuk-net1-67.team.ba] has quit [Quit: ] |
18:50 | <@Derakon> | Indeed. |
18:51 | | * TheWatcher blinks |
18:51 | <@TheWatcher> | QUite. |
20:03 | < EvilDarkLord> | Quality spamming. |
20:12 | | Attilla [~The.Attil@92.11.7.ns-26496] has quit [Ping Timeout] |
20:13 | | Rhamphoryncus [~rhamph@Nightstar-7168.ed.shawcable.net] has joined #code |
20:13 | <@Derakon> | Hey, Rhamphoryncus! |
20:14 | < Rhamphoryncus> | heya Derakon, what's up? |
20:14 | <@Derakon> | While I was on vacation, I switched Jetblade from using tuples and lists for physics vectors to using a Vector2D class. |
20:14 | <@Derakon> | It's much cleaner, but dog-slow. Any suggestions for resources to guide me to converting the module to C? |
20:14 | < Rhamphoryncus> | hrm. Vector2D is your own class? |
20:15 | <@Derakon> | Yeah. |
20:15 | <@Derakon> | I mean, the game's not unplayable by any stretch. But it's an extra 15s or so for map generation to run. |
20:16 | <@Vornicus-Latens> | numpy I think has vector classes you can use. |
20:16 | < Rhamphoryncus> | Well, probably the easiest is to let me see if I can improve the python version at all |
20:16 | < Rhamphoryncus> | Next to that is numpy |
20:17 | <@Derakon> | Lemme get the code transferred off of my laptop... |
20:20 | | Attilla [~The.Attil@92.1.54.ns-25924] has joined #code |
20:21 | | mode/#code [+o Attilla] by ChanServ |
20:23 | | * Vornicus-Latens doesn't know anything about writing C for Python, really should though. |
20:25 | <@Derakon> | Okay, here's the module. http://paste.ubuntu.com/220015/ |
20:26 | < Namegduf> | Have you profiled it to work out where the slowness is? |
20:26 | <@Derakon> | I'm using Vector2Ds as keys into hashes during mapgen; I'm making over a million calls to __hash__ and __eq__ each because of that. |
20:28 | <@Derakon> | Lemme get a more detailed response... |
20:29 | <@Derakon> | Okay, for a map that took 36.536s to generate, I spent 3.838s in __hash__, 2.515s in __eq__, 1.768s in add, 1.159s in __init__, 1.046s in int, and about a second in toGridspace and toRealspace combined, then it gets into smaller chunks. |
20:30 | <@Derakon> | Looking at the top 40 most time-consuming functions, I spend 12.464s in Vector2D calls. |
20:32 | < Namegduf> | Hmm, there's nothing else you could use as a key? |
20:32 | < Namegduf> | Vector2D*, with the Vector2Ds stored outside the map, perhaps? |
20:32 | <@Derakon> | The dicts map locations to various data. I could use tuples instead of Vector2Ds, but that'd be very messy codewise. |
20:33 | <@Vornicus-Latens> | How are you hashing the vector2ds. |
20:33 | <@Derakon> | No, I can't use pointers because I need for two different Vector2D instances that hash to the same value to map to the same result in the dict. |
20:33 | < Namegduf> | Ah. |
20:33 | <@Derakon> | Vorn: at the moment, very hackishly. I didn't have much access to the Net while on vacation, so I couldn't look up hashing functions. So it's just self.x * BIGNUM + self.y. |
20:33 | <@Derakon> | Check the __hash__ function. |
20:34 | <@Vornicus-Latens> | The normal hashing method is hash(x) ^ hash(y) |
20:34 | <@Vornicus-Latens> | Or similar. |
20:34 | | * Derakon nods. |
20:35 | <@Vornicus-Latens> | This may give you slightly better performance. |
20:35 | | * Derakon nods. |
20:39 | <@Vornicus-Latens> | On the other hand that won't do much for other things, and it does look like you'll have to C it up. |
20:40 | <@Derakon> | Hm. Python's ^ operator doesn't work on floats, so I have to cast x and y to ints before applying it. Net result: about 50s spent in Vector2D calls instead of 12s. O_o |
20:41 | <@Vornicus-Latens> | hash, you nerd |
20:41 | <@Derakon> | Er. Right. |
20:42 | <@Vornicus-Latens> | you shouldn't be handing out floats from hash() anyway. |
20:42 | <@Derakon> | Right. |
20:42 | <@Derakon> | It's a difference of calling int() once or twice or not at all. |
20:43 | <@Vornicus-Latens> | When I said hash(x) ^ hash(y) I meant it literally. |
20:43 | <@Derakon> | Heh. |
20:44 | <@Derakon> | Still took ages, though. |
20:44 | <@Vornicus-Latens> | bleg. |
20:44 | <@Derakon> | Mind you, all the time seems to be getting spent in __eq__ now. |
20:44 | <@Vornicus-Latens> | Alternatively! |
20:45 | <@Derakon> | 47.384s in __eq__, next biggest Vector2D func is add at 1.912s. |
20:45 | <@Vornicus-Latens> | The way I did this was to store a tuple internally and make x and y properties. |
20:46 | <@Vornicus-Latens> | Which neatly turns hash and eq into passthroughs to tuple. |
20:46 | <@Derakon> | Could work... |
20:49 | <@Derakon> | Hmm...but how do you mean "make x and y properties"? |
20:53 | | TarinakyKai [~Tarinaky@Nightstar-16638.plus.com] has quit [Ping Timeout] |
20:53 | | TarinakyKai [~Tarinaky@Nightstar-16638.plus.com] has joined #code |
21:40 | <@Vornicus-Latens> | @property def x(self): return self[0] |
21:41 | <@Derakon> | What's the @property business? |
21:42 | <@Derakon> | Wait, this? http://adam.gomaa.us/blog/2008/aug/11/the-python-property-builtin/ |
21:42 | <@Derakon> | Interesting. |
21:42 | <@Vornicus-Latens> | This also neatly hides the actual business and makes x read-only. |
21:42 | <@Derakon> | That read-only bit is actually not helpful. ¬.¬ |
21:43 | <@Vornicus-Latens> | YOu aren't supposed to hash mutable objects. |
21:44 | <@Derakon> | I know. |
21:44 | <@Derakon> | I'm doing it anyway, at least until I make a class to hold the dicts in question. |
21:46 | < Rhamphoryncus> | It *might* help to cache (or precalculate) the hash value |
21:46 | <@Derakon> | FWIW I'm not changing the instances that are serving as keys. |
21:47 | < Rhamphoryncus> | Although a dict has a cache beside each key anyway |
21:47 | <@Derakon> | Rhamphoryncus: that only works if Vector2Ds are immutable, which I'd rather not do... |
21:47 | <@Derakon> | Though, I should check for places where I'm modifying the x and y values directly and see how often that happens. |
21:48 | < Rhamphoryncus> | having two versions of the class is an option |
21:48 | <@Derakon> | An immutable descendant? |
21:48 | < Rhamphoryncus> | ie a FrozenVector2D that adds hashability and prevents modification |
21:48 | <@Derakon> | Then I wouldn't be able to use mutable versions to look up into the hash, though. |
21:49 | < Rhamphoryncus> | yeah.. why do you need mutable again? |
21:49 | <@Derakon> | So I can do things like iterate over space without having to generate a new Vector2D instance every time I move over one square. |
21:50 | < Rhamphoryncus> | what's the content? Is it literally just a pair of floats? |
21:50 | <@Derakon> | Yeah. |
21:50 | <@Derakon> | Vector2D has two fields: x and y. |
21:51 | | * Rhamphoryncus had "vector is an array" stuck in his head.. didn't make sense |
21:51 | <@Derakon> | Heh. |
21:51 | < Rhamphoryncus> | hrm |
21:51 | <@Derakon> | I used to have that, but it looks much better to do e.g. "vel.x" instead of "vel[0]". |
21:52 | < Rhamphoryncus> | I'm thinking a tuple subclass may be better |
21:52 | <@Derakon> | So, looking through my code for the string '.x', there aren't too many cases where I mutate Vector2Ds. |
21:52 | < Rhamphoryncus> | using __slots__ to avoid getting a __dict__ |
21:53 | < Rhamphoryncus> | there's also some named tuple stuff in recent python versions, although I don't know if they're worth it |
21:53 | < Rhamphoryncus> | Possibly, since they should be in C |
21:53 | <@Derakon> | I don't think I can go further than 2.6. |
21:54 | <@Derakon> | So to use __slots__, I'd do e.g.: |
21:54 | <@Derakon> | class Foo: |
21:54 | <@Derakon> | def __init__(self, a, b): |
21:54 | <@Derakon> | self.a = a |
21:54 | <@Derakon> | self.b = b |
21:55 | <@Derakon> | self.__slots__ = [a, b] |
21:55 | <@Derakon> | Is that right? |
21:55 | < Rhamphoryncus> | nope |
21:56 | < Rhamphoryncus> | __slots__ is used to declare your attribute names. They get turned into fields rather than dict entries |
21:56 | < Rhamphoryncus> | namedtuple is in 2.6's collections module, but is pure python apparently |
21:57 | < Rhamphoryncus> | class Foo(tuple): |
21:57 | < Rhamphoryncus> | __slots__ = [] # Don't want any |
21:57 | < Rhamphoryncus> | def __new__(self, a, b): |
21:57 | < Rhamphoryncus> | return tuple.__new__(Foo, a, b) |
21:58 | < Rhamphoryncus> | That's what I meant |
21:58 | <@Derakon> | That would prevent you from adding new fields to a Foo instance? |
21:58 | < Rhamphoryncus> | right |
21:59 | < Rhamphoryncus> | @property def x(self): return self[0] |
21:59 | <@MyCatVerbs> | Wah. I was about to yell "What the fuck is all this Python doing in here?" |
22:00 | <@MyCatVerbs> | Then I realised that my hotkey for #code is adjacent to the one for #haskell, and I just happened to have looked into the wrong channel. :) |
22:00 | <@Derakon> | Heh. |
22:00 | < Rhamphoryncus> | heh |
22:01 | <@Derakon> | Okay, so if I understand your suggestion, it's to subclass Vector2D off of tuple, use __slots__ to prevent use of dicts, use properties to allow read-only access to .x and .y, and replace any situations where I write to .x and .y with creations of new Vector2D instances. |
22:01 | < Rhamphoryncus> | yup |
22:01 | <@Derakon> | Okay, I'll muck with that once I get this mess of code checked in. :) |
22:01 | <@Derakon> | Thanks. |
22:01 | < Rhamphoryncus> | And __hash__ is now in C for you |
22:02 | <@Derakon> | And __eq__ and other useful things, yes. |
22:02 | < Rhamphoryncus> | Also, rather than overriding __eq__, I suggest defining your own .approxeq(other) method |
22:02 | <@Derakon> | I needed __eq__ before I could use Vector2Ds in hashes. |
22:02 | < Rhamphoryncus> | your hashing is incompatible with your epsilon ;) |
22:02 | <@Derakon> | Otherwise it'd complain that two different Vector2D instances didn't hash to the same value. |
22:02 | <@Derakon> | Heh. |
22:03 | < Rhamphoryncus> | The results are inconsistent. Two values may be close enough to compare equal, but get different hash values |
22:04 | | * Derakon nods. |
22:05 | < Rhamphoryncus> | If you really wanted something like that I'd suggest truncating rather than using an epsilon. Storing only ints would be the easiest form of truncation |
22:06 | <@Derakon> | That would....not work, at all, for the simulation part of gameplay. :) |
22:06 | <@McMartin> | I believe he is suggesting "using ints to be fixedpoint" |
22:07 | < Rhamphoryncus> | Well, depending on the precision you need an int may work |
22:07 | <@McMartin> | He needs subpixel for this, at least for velocity and friends. |
22:07 | < Rhamphoryncus> | Otherwise you have to go for fixedpoint. I'm a fan of fixedpoint, but there's no builtin support in python |
22:07 | <@Derakon> | In any event, it happens that all situations where I use __hash__ are dealing with integers anyway. |
22:07 | <@Derakon> | Since they're looking up locations in a grid. |
22:08 | <@Derakon> | (In fact, if I didn't care about memory usage I could just use a grid -- a 2D array) |
22:08 | < Rhamphoryncus> | Derakon: could you go as far as to say it's nonsensical to pass float values into that? |
22:08 | <@Derakon> | Probably, yeah. |
22:08 | < Rhamphoryncus> | Then consider an IntVector2D class :) |
22:08 | <@Derakon> | Heh. |
22:09 | < Rhamphoryncus> | Although that may be overkill |
22:13 | < Rhamphoryncus> | hrm. I did want to implement a fixedpoint type once, but I don't know how to implement trigonometric functions for it |
22:13 | | * gnolam stabs Hammer's lack of UTF-8. |
22:15 | <@gnolam> | Having to hand-edit the maps is a royal PITA. |
22:19 | | Derakon is now known as Derakon[lunch] |
22:34 | <@gnolam> | Oh hey, spray-on traffic cones. |
22:37 | < Rhamphoryncus> | huh? |
22:40 | <@gnolam> | Trying to make my own decal entity, but can't get the sprite to show up. |
22:41 | <@gnolam> | The decals are supposed to be sprayed on surfaces like the spray logos in Half-Life/C-S/TF2. |
22:41 | <@gnolam> | But since I can't get the sprites working, I've temporarily replaced the entity with a model entity instead... |
22:41 | <@gnolam> | Press T and *PFFSSSSSH!* traffic cone! |
22:42 | <@AnnoDomini> | Traffic cone is not a budgerigar. |
22:55 | | Derakon[lunch] is now known as Derakon |
23:12 | | Tarinaky_ [~Tarinaky@Nightstar-16638.plus.com] has joined #code |
23:14 | | TarinakyKai [~Tarinaky@Nightstar-16638.plus.com] has quit [Operation timed out] |
23:32 | | * gnolam pffts. |
23:33 | <@gnolam> | Looks like the Swedish Rescue Services Agency uses the silly LNT model as well. |
23:50 | | AnnoDomini [~farkoff@Nightstar-29556.neoplus.adsl.tpnet.pl] has quit [Quit: Quem quer o garfo?] |
23:52 | <@ToxicFrog> | LNT? |
23:52 | <@Derakon> | At a guess, http://en.wikipedia.org/wiki/Linear_no-threshold_model |
--- Log closed Fri Jul 17 00:00:03 2009 |