@Preach
#1510 posted by sock on 2014/07/31 00:05:53
The latest version of DP does sky pointcontent detection different, hence the function, but a working example of detecting surface information can be adapted for what Qmaster wanted. ;)
<--the Icon Intended For The Last Post
#1511 posted by Preach on 2014/07/31 00:29:41
nt
Cool
#1512 posted by Qmaster on 2014/07/31 01:32:59
As ever yall are awesome. Thank you!
Okay Then.
#1513 posted by Qmaster on 2014/07/31 02:34:54
That one was too easy for the masters. Here's a real stumper for you.
I want to simulate a halucinagenic side-effect for one of my power-ups in game. Here's how I want to achieve it, in psuedo code:
float TRIPPY_EFFECT_INTERVAL = 5.000 //5 seconds
// string "gfx/palette_trippy1.lmp"
// string "gfx/palette_trippy2.lmp"
// string "gfx/palette_trippy3.lmp"
void () trippydrug_think = {
if (trippydrug > FALSE)
{
setpalettefile("gfx/palette_trippy", trippydrug, ".lmp");
trippydrug++;
self.owner.trippy_power = (trippy_power * 2)
self.think = trippydrug_think;
self.nextthink = (time + TRIPPY_EFFECT_INTERVAL);
}
};
The 1st palette file will have the colors shifted over 4 colors so most things are similar to what they should be, then mixed up a little bit in the 2nd, with the 3rd palette file looking like crayola barf making it hard to see.
So... I can't find out how to change the palette on the fly within the engine code? I can override palette.lmp in the gfx folder, but... more than once, during runtime...?
#1514 posted by Spike on 2014/07/31 12:40:30
host_basepal or something stores the palette.lmp file in memory. mix that up with the "bf" command to figure out how the engine applies a new palette in a software renderer. or something.
in gl renderers things get much more messy, figure that one out on your own, if you dare.
Ooh Goody
#1515 posted by Qmaster on 2014/07/31 16:32:53
Its like a treasure hunt!
Question On QC Syntax
#1516 posted by Preach on 2014/08/02 17:49:54
I've got two questions, and I suspect that spike might be able to answer for fteqcc if nobody else can.
1) Is it possible in QC to have a function that returns a function - and if so, what is the syntax for that?
2) If 1) is possible, I would like a function that can return itself (or other functions with the same signature as itself). Is this possible, and how?
#1517 posted by Spike on 2014/08/02 18:51:08
if in doubt, typedef it.
typedef void() fnc;
fnc bar = {}; //or: void() bar={}; depends which you consider more correct/easier
fnc() foo = {return bar;};
void() test = {local var fnc t;t = foo();t();};
foo()(); isn't supported for some reason.
nor is void()(). bah.
seems the return statement doesn't do strict checks beyond basic types, must fix some day.
needing to define a local function as var is also worrying, one day I'll want to be able to define functions inside functions, I believe it should be possible to parse nested functions automatically, but I'm paranoid enough to not fix that until then.
on the plus side, void()foo()={return bar;}; also works! yay for mixing notation.
a function that returns itself ad infinitum is problematic. probably best to define the function as returning a __variant, seeing as you'll need to store it anyway before you can call it. qc can then suffer from the infinite type recursion itself. :P
I'm not sure what the advantage is though.
Cool
#1518 posted by Preach on 2014/08/04 22:25:38
Thanks for that, the plan is to do some contination-passing, state machine stuff. Thinking it might be easier to use a global rather than passing a return value, but the __variant trick would probably make it work...
Quake Web Tools Progress
#1519 posted by than on 2014/08/05 11:43:00
http://pecope.co/experiments/quake_web_tools/QuakeWebTools.html
I haven't really been working on this until the last couple of days, so it hasn't changed that much, but I added camera controls to the MDL viewer and you can now preview BSPs in 3d (though there is no lighting currently) with first person controls.
Seems to handle anything I throw at it too, which is surprising. Thought it would be easier to break :)
Anyway, I'm still planning to implement a proper UI at some point, but I have been concentrating on core file type support, which is about done now, but there is still a lot of cleanup that needs doing.
#1520 posted by Lunaran on 2014/08/05 17:00:54
in firefox the 3d panel doesn't capture keyboard input without bubbling it back to the browser, so when I try to hold w to move forward in a map the search bar appears and fills with wwwwwwwwwwwwww and then I lose the bsp forever in the darkness
I fed it a few jam2 maps and it seemed to like them, but I got to jam2_tronyn and a number of faces have flat colors or skewed stripes instead of properly projected textures.
Reposting For Coder Help
#1521 posted by necros on 2014/08/05 20:18:39
Aguirre's TXQBSP:
Error: NewWinding: 65 points?
After piles of healing point of plane warnings.
Tried using different epsilon values, but nothing gets rid of the error.
#1522 posted by mfx on 2014/08/05 21:50:52
Guessing in the dark i am.
Too many faces share the same plane?
Ok
#1523 posted by mfx on 2014/08/05 22:24:42
here what i got after talking to rebb.
There a hardcoded limit on MAX_POINTS_ON_WINDING
of 64 in TXQBSP. This "should be enough".
One can replace that with a dynamic array, resulting in performance loss.
Anyway, QBSP isn�t the deal here, vis does this check too. Again longer vistimes are the result(~ factor of 1.5 with a small testmap).
Oh God My English
#1524 posted by mfx on 2014/08/05 22:26:13
Necros, there are testbuilds available at http://www.voidspark.net/projects/bjptools_xt/
soon..
One More Thing
#1525 posted by mfx on 2014/08/05 22:31:36
rebb told me: those limits could just be raised in the codebase, but there are dangers of stackoverflows. Even today?
idk tbh
Well
#1526 posted by rebb on 2014/08/05 23:33:39
It's probably safe to bump that limit to at least Half-Life compiler level where it's 128 instead of 64, and stack limits can be increased when compiling the compiler. The whole thing is meant to be a performance-optimization that matters mainly for Vis calculation times.
#1527 posted by necros on 2014/08/06 03:40:34
thanks for helping me understand this mfx/rebb.
So yeah, the latest test version lets the map compile but what exactly is this winding stuff?
From what I remember when I briefly dabbled in 3D and openGL stuff, winding is some kind of method of storing your vertices and faces in memory...
I guess I'm asking how can I avoid doing this?
Too many faces share the same plane?
I think someone once said that there is a limited number of planes than can be used in one map, but that if you have faces with the same plane, it'll reuse that plane or something..?
Also rebb: texture offset for rotating objects!!!!!!! <3
Lunaran
#1528 posted by than on 2014/08/06 04:18:37
Thanks for the feedback. I haven't really tested in multiple browsers yet, but I'll check that out next time I work on it.
Not sure how I can fix the texture problem though, I noticed that myself but since the uvs are just generated from the bsp data I have no idea what is causing the problem. There are also some limitations with webgl, so any non-power of two textures could potentially cause problems depending on the system.
The bsp preview isn't really meant as an accurate bsp viewing tool though. Would be nice to add lightmaps and have a few display options though.
@than
#1529 posted by Spike on 2014/08/06 05:35:09
extensions appear to be case-sensitive, meaning it'll refuse to load files copied off a fat32 drive (FOO.BSP).
no error message from trying to load q3/rbsp/bsp2 maps.
clicking files within a .pak doesn't seem to do anything (firefox).
it doesn't recognise .qc!
mdl rendering consumes an entire cpu core even when not given user input.
Spike
#1530 posted by than on 2014/08/07 01:56:39
thanks. I'll look into all those things.
Not sure what I should do with .qc files... What would you like it to do?
Firefox doesn't seem to handle the file url the same as chrome, since I'm not generating a data url until the user clicks a link, which basically equals me auto downloading a generated file for the user - perhaps it's a security risk? Anyway, chrome allows you to extract files currently, but I want to make it able to modify paks at some point.
Anyway, it's currently very hacky (esp. rendering), so I will fix some of this during the next code cleanup.
Also Rebb: Texture Offset For Rotating Objects!!!!!!!
#1531 posted by Nurax on 2014/08/08 03:17:21
Thanks a lot for this rebbor!!
Necros
#1532 posted by Preach on 2014/08/09 02:26:34
I have a vague recollections that windings are to do with the number of sides a polygon has. Do you possibly have a face anywhere with more than 64 edges? Perhaps not intentionally, but if you had lots of adjacent planes that nearly meet at the vertices but actually cut tiny slices, that might create one....
#1533 posted by necros on 2014/08/09 05:04:16
I'm not exactly sure what you mean. How could a face have 64 edges? They are all triangles. Or do you mean one plane that has been divided more than 64 times?
The Bsp Is Actually Made Of Polygons
#1534 posted by ericw on 2014/08/09 05:39:33
In fact in glquake they're still polygons when passed to OpenGL. Just for fun I checked start.bsp and it has a 20-sided poly somewhere!
So "r_showtris 1" is a bit deceptive; it shows you the polygons as they come out of the bsp, plus a bunch of lines drawn in to divide them into triangles, but you can't see which lines are which.
|