08:21 <+bridge> [ddnet] Should I be concerned about the ASan & UBSan check failing? 09:16 <+bridge> [ddnet] my tooltip reimplementation seems to work 09:16 <+bridge> [ddnet] :poggers: 09:32 <+bridge> [ddnet] no, I have a fix for it, waiting for submit 09:40 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/965517104033976330/unknown.png 09:40 <+bridge> [ddnet] troll chillerdragon stuff 09:40 <+bridge> [ddnet] :monkaS: 09:40 <+bridge> [ddnet] almost issue/pr #5000 09:41 <+bridge> [ddnet] > D:\a\ddnet\ddnet\src\game\client\components\tooltips.cpp(39,4): error C7555: use of designated initializers requires at least '/std:c++20' [D:\a\ddnet\ddnet\debug\DDNet.vcxproj] 09:41 <+bridge> [ddnet] wat 09:41 <+bridge> [ddnet] can u rly not do this 09:41 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/965517470540656640/unknown.png 09:44 <+bridge> [ddnet] when c++20 09:44 <+bridge> [ddnet] looks like the only least insane c++ 09:44 <+bridge> [ddnet] :monkalaugh: 09:45 <+ChillerDragon> Who frees this memory? https://github.com/ddnet/ddnet/blob/843acf6a5a80ef445ff134c90bee374212673464/src/engine/shared/console.cpp#L1221 09:47 <+bridge> [ddnet] i wonder 09:47 <+bridge> [ddnet] console has always been magical 09:48 <+bridge> [ddnet] Not until c++20. Designated initializers are a (superior) C feaure 09:48 <+bridge> [ddnet] Feature* 09:48 <+bridge> [ddnet] ah thats why i remember using this before 09:48 <+bridge> [ddnet] it was probs c 09:49 <+bridge> [ddnet] also even with designated inits 09:49 <+bridge> [ddnet] u need to keep the order 09:49 <+bridge> [ddnet] which is a bit insane 09:49 <+bridge> [ddnet] C99 gang 09:49 <+bridge> [ddnet] in c u dont need to keep the order 09:49 <+bridge> [ddnet] iirc 09:49 <+bridge> [ddnet] Yep 09:49 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/965519451720134697/unknown.png 09:49 <+bridge> [ddnet] Truly the language of gods 09:50 <+bridge> [ddnet] why this limitation tho? 09:50 <+bridge> [ddnet] I bet the bible was sent to earth written in C 09:51 <+bridge> [ddnet] man the ubsan CI check always fails 09:51 <+bridge> [ddnet] and its not my fault 09:51 <+bridge> [ddnet] I honestly don't know, maybe you can dig up the initial proposal, but I'd guess to make the compilers job easier, just discard the designators and pretend it's list-initialization 09:53 <+bridge> [ddnet] @Not Keks can u review my pr 09:54 <+bridge> [ddnet] it shouldnt be long 09:54 <+bridge> [ddnet] โ˜• 09:54 <+bridge> [ddnet] deen already merged it 09:54 <+bridge> [ddnet] xd 09:54 <+bridge> [ddnet] ah ok 09:54 <+bridge> [ddnet] xd 09:54 <+bridge> [ddnet] but 09:54 <+bridge> [ddnet] u forgot a new line 09:54 <+bridge> [ddnet] in menus.cpp 09:54 <+bridge> [ddnet] will probs fail 09:54 <+bridge> [ddnet] hmm 09:54 <+bridge> [ddnet] it passes the fix style 09:54 <+bridge> [ddnet] cuz i ran it 09:55 <+bridge> [ddnet] ok then heinrich will kill u once he pops up again 09:55 <+bridge> [ddnet] xd 09:55 <+bridge> [ddnet] wait i add it 09:55 <+bridge> [ddnet] then u bors retry or smth 09:55 <+bridge> [ddnet] yes 09:55 <+bridge> [ddnet] in tooltips.h too 09:55 <+bridge> [ddnet] pushed 10:11 <+bridge> [ddnet] now we only need physics tests 10:11 <+bridge> [ddnet] with the null client 10:12 <+bridge> [ddnet] ez af 10:12 <+bridge> [ddnet] soon the CI takes 2h 10:12 <+bridge> [ddnet] bcs the CI has to play teeworlds 10:13 <+bridge> [ddnet] to test all features 10:14 <+bridge> [ddnet] xd 10:18 <+bridge> [ddnet] We could use teehistorian replays as end-to-end tests for the server 10:22 <+bridge> [ddnet] any profiler on linux that splits cleanly between threads? 10:25 <+bridge> [ddnet] Use `--per-thread` with perf stat? 10:25 <+bridge> [ddnet] I was just about to say that :D 10:25 <+bridge> [ddnet] ok thanks 11:43 <+bridge> [ddnet] #5000 ๐Ÿ˜ฎ 11:43 <+bridge> [ddnet] https://github.com/ddnet/ddnet/pull/5000 11:44 <+bridge> [ddnet] @Ryozuki is this tooltip that information pops up when aiming at some settings? 11:51 <+bridge> [ddnet] yes 11:52 <+bridge> [ddnet] Much better 11:52 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/965550372217323560/screenshot-20220418115201.png 12:15 <+bridge> [ddnet] Nice 13:01 <+bridge> [ddnet] And the same for client ^ 13:27 <+bridge> [ddnet] Ddnet Admin discussing replay bots in public!! @heinrich ban him!! 13:27 <+bridge> [ddnet] (@deen) 13:29 <+bridge> [ddnet] If it's replayed at server side it's not a "replay bot", but a teehistorian to demo converter 13:30 <+bridge> [ddnet] I always thought about a simple map with a lot of code coverage when just falling afk at spawn. Like a headless client connects in the CI to the server and falls through start tile into finish tile etc. Then a bash script uses fifo to stop the client. What do you think? 13:30 <+bridge> [ddnet] The question is where this map comes from. I am not sure if we want that map file in the ddnet repo. 13:38 <+bridge> [ddnet] @Not Keks i cleaned my keyboard and it seems like it doesnt double press anymore 13:38 <+bridge> [ddnet] :monkalaugh: 13:38 <+bridge> [ddnet] it was rly dirty 13:38 <+bridge> [ddnet] :monkalaugh: 13:39 <+bridge> [ddnet] good advise: dont let ur cat on ur keyboard 13:59 <+bridge> [ddnet] xd 14:00 <+bridge> [ddnet] most effective way to clean dust from hardware: 14:00 <+bridge> [ddnet] use a compressor 14:00 <+bridge> [ddnet] e.g. a ball pump ventile on a bicycle pump 14:00 <+bridge> [ddnet] u wont believe how much shit there is 14:00 <+bridge> [ddnet] vacuum cleaners suck bcs they only work well when there is a vacuum 14:09 <+bridge> [ddnet] doesnt vacum generate static 14:10 <+bridge> [ddnet] Yes, should be in repo. Just call it something like coverage.map 14:11 <+bridge> [ddnet] I like the idea 14:24 <+ChillerDragon> I think maybe it would be cleaner to create a full new repo only for integration tests. With some bash scripts and the map. And the CI clones that. 14:32 <+bridge> [ddnet] makes it annoying when something fails to reproduce it locally 14:32 <+bridge> [ddnet] tests should be in the same repo as productive code imo 14:41 <+ChillerDragon> ok 14:52 <+bridge> [ddnet] congrats on the 5000th pr merged 14:52 <+bridge> [ddnet] #5000 14:53 <+bridge> [ddnet] https://github.com/ddnet/ddnet/pull/5000 14:53 <+bridge> [ddnet] :poggers: 14:57 <+ChillerDragon> pog 15:02 <+bridge> [ddnet] do i need to understand the blockworlds problems? xd 15:15 <+bridge> [ddnet] 5000 is the combined number of prs and issues 15:19 <+bridge> [ddnet] ah ok 15:20 <+bridge> [ddnet] https://youtu.be/BFld4EBO2RE I was going to post this in #off-topic but this is probably where it'd be appreciated more 15:21 <+bridge> [ddnet] @Learath2 :ban: 15:21 <+bridge> [ddnet] holy shit 15:21 <+bridge> [ddnet] the shader 15:21 <+bridge> [ddnet] looks rly good 15:21 <+bridge> [ddnet] https://www.shadertoy.com/view/4ttSWf 15:22 <+bridge> [ddnet] 144fps too 15:22 <+bridge> [ddnet] xd 15:22 <+bridge> [ddnet] The guy apparently used to work at pixar 15:22 <+bridge> [ddnet] He also explains his process extremely well, so well that I'm tempted to give it a go myself 15:23 <+bridge> [ddnet] when i see stuff like that i want to use raytracing xd 15:24 <+bridge> [ddnet] godot will probs only add it in 4.1 <.< 15:24 <+bridge> [ddnet] xd 15:24 <+bridge> [ddnet] make a ddnet shader 15:24 <+bridge> [ddnet] yeah i'd love to break map compability with vanilla 15:25 <+bridge> [ddnet] would give us so much more oppotunities ๐Ÿ˜„ 15:25 <+bridge> [ddnet] idk why we dont do that yet 15:25 <+bridge> [ddnet] vanilla is effectively dead 15:25 <+bridge> [ddnet] and old ddnet clients too tbf 15:25 <+bridge> [ddnet] but yeah 15:25 <+bridge> [ddnet] im anti anti-updaters 15:25 <+bridge> [ddnet] xd 15:25 <+bridge> [ddnet] yeah its annoying 15:25 <+bridge> [ddnet] and i think mappers also dislike it 15:25 <+bridge> [ddnet] pipou also wants more control over level of detail 15:26 <+bridge> [ddnet] understandable 15:26 <+bridge> [ddnet] the map format could maybe get improved a lot 15:26 <+bridge> [ddnet] I smell a coup brewing 15:26 <+bridge> [ddnet] im sure we can do better than a 15y old map format 15:26 <+bridge> [ddnet] yes 15:26 <+bridge> [ddnet] DDNET GOVERNMENT SUCKS xd 15:26 <+bridge> [ddnet] XD 15:26 <+bridge> [ddnet] konsti incoming 15:26 <+bridge> [ddnet] Hm, what are your concerns with it? 15:26 <+bridge> [ddnet] its not mod firnedly xd 15:26 <+bridge> [ddnet] @Learath2 have u ever tried to write a map parser 15:27 <+bridge> [ddnet] and it should embedd with PNG 15:27 <+bridge> [ddnet] not zlib 15:27 <+bridge> [ddnet] Not really, hence I asked what your concerns are 15:27 <+bridge> [ddnet] If we get a new map format, I want uuids for layer types 15:27 <+bridge> [ddnet] oh yeah 15:27 <+bridge> [ddnet] the mixing of uuid and non uuid 15:27 <+bridge> [ddnet] was a weird thing xd 15:28 <+bridge> [ddnet] yeah lets also break network while at it xD 15:28 <+bridge> [ddnet] same problem 15:28 <+bridge> [ddnet] yes 15:28 <+bridge> [ddnet] protobuf for network? 15:28 <+bridge> [ddnet] is protobuf used in games? 15:28 <+bridge> [ddnet] we should check how actual games do it 15:28 <+bridge> [ddnet] but QUIC & encryption for chat 15:28 <+bridge> [ddnet] would already be a good first step 15:29 <+bridge> [ddnet] make a more filter friendly protocol 15:30 <+bridge> [ddnet] one optimization that i can think of, maybe its a bit useless, but for example, i think all layers need to have the same size usually as the game layer 15:30 <+bridge> [ddnet] but for example 15:30 <+bridge> [ddnet] switch layer will have lot of empty wasted space 15:30 <+bridge> [ddnet] we could design it to not waste so much 15:30 <+bridge> [ddnet] a 10kx10k map is actually 10kx10kxNLAYERS 15:30 <+bridge> [ddnet] xd 15:31 <+bridge> [ddnet] only all physics layers need to be the same size, not the tiles layers 15:31 <+bridge> [ddnet] a 10kx10k map is actually 10k x 10k x NLAYERS 15:32 <+bridge> [ddnet] I think eeeee used RLE when doing the first emscripten version of ddnet 15:33 <+bridge> [ddnet] ye 15:35 <+bridge> [ddnet] Even that should save massive amounts of space on those very sparse layers 15:39 <+bridge> [ddnet] I think RLE is already used but only to skip empty tiles (and only to skip up to 255 tiles) 15:39 <+bridge> [ddnet] in the 0.7 format each tile stores the count, how many times it should get repeated 15:40 <+bridge> [ddnet] (ddnet pls don't add thats how twmap differentiates ddnet and 0.7 maps rn and I'll need to figure out a better way ๐Ÿ˜…) 15:41 <+bridge> [ddnet] i spent 30 mins figuring out why my change didnt work 15:41 <+bridge> [ddnet] most active ryo since a long time xd 15:41 <+bridge> [ddnet] and it didnt work because i forgot to set the server in test mode 15:41 <+bridge> [ddnet] stupid waste of time 15:41 <+bridge> [ddnet] xd 15:41 <+bridge> [ddnet] true xd 15:41 <+bridge> [ddnet] im on vacations 15:41 <+bridge> [ddnet] which end this wednesday tho 15:41 <+bridge> [ddnet] :fuckyousnail: 15:41 <+bridge> [ddnet] rtip 15:48 <+bridge> [ddnet] https://github.com/ddnet/ddnet/issues/4814 15:49 <+bridge> [ddnet] @Not Keks do u think we could somehow make teles predictable by e.g when server starts, generate a seed that is then known by the client 15:49 <+bridge> [ddnet] xd 15:49 <+bridge> [ddnet] could also just be tick based 15:49 <+bridge> [ddnet] doubt we need a seed 15:49 <+bridge> [ddnet] true 15:49 <+bridge> [ddnet] or remove randomness 15:49 <+bridge> [ddnet] random is never really cool ๐Ÿ˜„ 15:49 <+bridge> [ddnet] if we remove randomness it may be unfair 15:49 <+bridge> [ddnet] to existing runs 15:50 <+bridge> [ddnet] not if its easier 15:50 <+bridge> [ddnet] i think this was discussed 15:50 <+bridge> [ddnet] xd 15:50 <+bridge> [ddnet] just if it gets harder ๐Ÿ˜„ 15:50 <+bridge> [ddnet] i think we shouldnt always think too much about such things.. just do it and fix the 10 maps that are affected by it 15:50 <+bridge> [ddnet] xd 16:11 <+bridge> [ddnet] @Not Keks is this how its done? 16:11 <+bridge> [ddnet] xd 16:16 <+bridge> [ddnet] We discussed making tele predictable on the client, it's not exactly trivial though 16:20 <+bridge> [ddnet] To make it predictable the client needs to know the initial seed AND how far along we are on the generator. So I think it'll have to be a per client prng 16:21 <+bridge> [ddnet] just seed it everytime 4heafd 16:21 <+bridge> [ddnet] ez 16:22 <+bridge> [ddnet] Seeding it with tick idk, does the client even have a way to correctly predict the tick a tele will happen on? I think it'd be better if the destination was set as soon as someone begins a run maybe 16:22 <+bridge> [ddnet] use 0 as seed 16:22 <+bridge> [ddnet] problems solved 16:22 <+bridge> [ddnet] true 16:22 <+bridge> [ddnet] Or maybe make it windows of 10 sec within which the destination is set 16:23 <+bridge> [ddnet] we just need to fake a bit of randomness 16:23 <+bridge> [ddnet] so players dont see it 16:23 <+bridge> [ddnet] xdxd 16:23 <+bridge> [ddnet] changing it in any way could already be viewed as breaking old ranks anyway 16:23 <+bridge> [ddnet] just remove it xD 16:23 <+bridge> [ddnet] xDDD 16:23 <+bridge> [ddnet] true 16:23 <+bridge> [ddnet] the oldschool players are angry else 16:24 <+bridge> [ddnet] The problem isn't the quality of the randomness, whatever "fake" randomness you come up with will have to overcome the same problem 16:24 <+bridge> [ddnet] hm now that i did the tooltips, maybe i can implement a guide/tour/tutorial over the settings 16:24 <+bridge> [ddnet] xd 16:24 <+bridge> [ddnet] with a cute tee by the side 16:24 <+bridge> [ddnet] twinbop 16:24 <+bridge> [ddnet] The client needs to know the destination for a telein, it needs to be resistant to packets being dropped 16:27 <+bridge> [ddnet] ngl would love it 16:27 <+bridge> [ddnet] fan service 16:27 <+bridge> [ddnet] xD 16:45 <+bridge> [ddnet] still better then running the wrong code and wondering why your changes do nothing, reverting your changes and noticing 10min later that you have run the wrong code 16:47 <+bridge> [ddnet] wormup tick could be used for seed, so the tick you step over the start line 16:48 <+bridge> [ddnet] wormup tick could be used for seed, so the tick you step over the start line. 16:50 <+bridge> [ddnet] warm up tick could be used for seed, so the tick you step over the start line. 16:51 <+bridge> [ddnet] warm up tick (m_StartTime) could be used for seed, so the tick you step over the start line. 17:31 <+bridge> [ddnet] animated helper tee let's go :poggers: 17:32 <+bridge> [ddnet] :monkalaugh: 17:36 <+bridge> [ddnet] omg are you thinking about making a ddnet clippy 17:36 <+bridge> [ddnet] ye 17:36 <+bridge> [ddnet] like louis video 20:03 <+bridge> [ddnet] im trying i2p 20:03 <+bridge> [ddnet] looks like something way better than tor 20:31 <+bridge> [ddnet] Could we make the tooltip delay 500ms instead of 1000ms? 1000ms feels like forever 20:31 <+bridge> [ddnet] maybe we should make it a setting 20:31 <+bridge> [ddnet] xD 20:32 <+bridge> [ddnet] xd 20:32 <+bridge> [ddnet] firefox uses 500ms :) 20:32 <+bridge> [ddnet] just take 777ms 20:32 <+bridge> [ddnet] 666 20:32 <+bridge> [ddnet] 777 is lucky number xd 20:36 <+bridge> [ddnet] use 0 20:36 <+bridge> [ddnet] :deen_ban: 20:36 <+bridge> [ddnet] @Not Keks lets add AMD FSR 20:37 <+bridge> [ddnet] to get 20k fps 20:37 <+bridge> [ddnet] when you give someone a hammer, everything is a nail 20:38 <+bridge> [ddnet] does that only work with the devs enabling it? 20:38 <+bridge> [ddnet] https://github.com/GPUOpen-Effects/FidelityFX-FSR 20:38 <+bridge> [ddnet] is there not like a global setting? 20:38 <+bridge> [ddnet] no 20:38 <+bridge> [ddnet] it has to be implemented 20:38 <+bridge> [ddnet] by devs 20:38 <+bridge> [ddnet] iirc it has smth to do with shaders 20:39 <+bridge> [ddnet] https://github.com/GPUOpen-Effects/FidelityFX-FSR/tree/master/sample/src/VK 20:39 <+bridge> [ddnet] here is the vulkan code 20:39 <+bridge> [ddnet] (example vulkan code*) 20:40 <+bridge> [ddnet] we need faster CPUs, worth it more for ddnet xd 20:40 <+bridge> [ddnet] xd 20:40 <+bridge> [ddnet] ye 20:40 <+bridge> [ddnet] also this is wortth more for 3d 20:40 <+bridge> [ddnet] xd 20:40 <+bridge> [ddnet] but it rly gives shitload of fps 20:40 <+bridge> [ddnet] does ddnet even run faster at lower resolutions? I assumed it was cpu capped 20:41 <+bridge> [ddnet] eh having a gpu can increase ur fps 20:41 <+bridge> [ddnet] if u come from not having one 20:41 <+bridge> [ddnet] xd 20:41 <+bridge> [ddnet] afterwards it doesnt improve much 20:41 <+bridge> [ddnet] i think 20:41 <+bridge> [ddnet] that makes sense 20:41 <+bridge> [ddnet] maybe if we used rust 20:41 <+bridge> [ddnet] we could 20:42 <+bridge> [ddnet] safely paralelize the entities and the gameworld 20:42 <+bridge> [ddnet] but we live in c++ land 20:42 <+bridge> [ddnet] :monkalaugh: 20:42 <+bridge> [ddnet] and that would be more complicated 20:43 <+bridge> [ddnet] theorically the gameworld, which manages the entities 20:43 <+bridge> [ddnet] is like a ECS 20:43 <+bridge> [ddnet] and usually ECS are highly paralel 20:43 <+bridge> [ddnet] but not here 20:43 <+bridge> [ddnet] :feelsbadman: 20:43 <+bridge> [ddnet] as long it doesnt change pyshics, pls add 20:44 <+bridge> [ddnet] i wont do it in c++ 20:44 <+bridge> [ddnet] i would shoot my foot 20:44 <+bridge> [ddnet] yes do it in rust 20:44 <+bridge> [ddnet] xd 20:44 <+bridge> [ddnet] i take all perf hehehe 20:44 <+bridge> [ddnet] i think teeworlds would fit rly well using bevy 20:44 <+bridge> [ddnet] rust has something like a packet manager right? 20:44 <+bridge> [ddnet] @Not Keks https://bevyengine.org/learn/book/getting-started/ecs/ 20:44 <+bridge> [ddnet] so its ez to use libs 20:44 <+bridge> [ddnet] look how the ECS in bevy works 20:44 <+bridge> [ddnet] its rly gud 20:45 <+bridge> [ddnet] yes cargo 20:45 <+bridge> [ddnet] yes thats the best actually 20:45 <+bridge> [ddnet] no excuses anymore to just use libs xd 20:45 <+bridge> [ddnet] ye its only c land where deps suck to add 20:45 <+bridge> [ddnet] well its a windows problem actually 20:45 <+bridge> [ddnet] if we only target linux its fine 20:45 <+bridge> [ddnet] imo 20:46 <+bridge> [ddnet] ok and android, and maybe other os 20:46 <+bridge> [ddnet] lets say it would work on linux xd 20:46 <+bridge> [ddnet] xd 20:46 <+bridge> [ddnet] but crossplatform packet manager built in is awesome 20:46 <+bridge> [ddnet] cargo is awesome ngl 20:47 <+bridge> [ddnet] it makes life easier 20:47 <+bridge> [ddnet] start with server 20:47 <+bridge> [ddnet] its too much work 20:47 <+bridge> [ddnet] xd 20:47 <+bridge> [ddnet] bcs i also want to transfer fng to ddnet code 20:47 <+bridge> [ddnet] just do it xd 20:47 <+bridge> [ddnet] xd 20:47 <+bridge> [ddnet] dont think about it 22:32 <+bridge> [ddnet] can someone tell me how to use the `insert` function from array.h? 22:33 <+bridge> [ddnet] r u sure u want to use insert? not add? 22:34 <+bridge> [ddnet] insert is for a specific index iirc 22:34 <+bridge> [ddnet] Arguments: 22:34 <+bridge> [ddnet] item - Item to insert. 22:34 <+bridge> [ddnet] r - Range where to insert the item 22:34 <+bridge> [ddnet] r is of type range, you can create it like: 22:34 <+bridge> [ddnet] plain_range(T *begin, T *end) 22:34 <+bridge> [ddnet] add is just at the end, I want it in a specific spot 22:35 <+bridge> [ddnet] idk why we dont just use std::array 22:35 <+bridge> [ddnet] xd 22:35 <+bridge> [ddnet] basically I'm making duplicating of map layers & groups and it'd be nice to insert next to the original layer and not at the end 22:35 <+bridge> [ddnet] wasn't there a story about pulling stdlib dependency? 22:36 <+bridge> [ddnet] stop dreaming about parallelism and ECS 22:36 <+bridge> [ddnet] make accounts system, skin store and buy anti-DDoS hosting) 22:36 <+bridge> [ddnet] ๐Ÿฅบ๐Ÿฅบ๐Ÿฅบ 22:38 <+bridge> [ddnet] idk whats more a dream 22:38 <+bridge> [ddnet] what i said or urs 22:38 <+bridge> [ddnet] xd 22:38 <+bridge> [ddnet] lol I do not even see a reason why r is a range and not a index xD it is used like a index. only the beginning value is changed, so at r.front() is a new value inserted, all other are moved one step 22:38 <+bridge> [ddnet] and server side interaction with user interface, for custom mods ๐Ÿฅบ๐Ÿฅบ๐Ÿฅบ 22:38 <+bridge> [ddnet] Ok, let's split the tasks, we make account system, you buy the anti-ddos hosting 22:39 <+bridge> [ddnet] I buy skins in the store - you buy anti-ddos hosting :bluekitty: 22:39 <+bridge> [ddnet] @pinkrat 22:39 <+bridge> [ddnet] Since we obviously never tried any ddos protection, we most certainly didn't try all the accesible ones on the market. Maybe with your sage knowledge you can lead us to a better future 22:40 <+bridge> [ddnet] Hahaha learath being personally offended and emotional again \:D 22:40 <+bridge> [ddnet] Noo not at all 22:40 <+bridge> [ddnet] Nono 22:41 <+bridge> [ddnet] You are so toxic Iโ€™m literally laughing out loud 22:41 <+bridge> [ddnet] I as a completely mentally stable human being would never be toxic, I'm kind and nurturing 22:41 <+bridge> [ddnet] well that guy is just aasking features like they are free candy 22:41 <+bridge> [ddnet] thats toxic 22:41 <+bridge> [ddnet] Ikr 22:42 <+bridge> [ddnet] But poor learath letโ€™s it get the best of him 22:42 <+bridge> [ddnet] T should be the type of what I'm trying to insert? doesn't look like I can do it with `CLayer*` 22:42 <+bridge> [ddnet] no int 22:42 <+bridge> [ddnet] xD 22:42 <+bridge> [ddnet] I think 22:42 <+bridge> [ddnet] but just without T 22:43 <+bridge> [ddnet] ah I have no idea xD 22:43 <+bridge> [ddnet] No offense learath bae I love you! You know that right? 22:44 <+bridge> [ddnet] You want a one item range, the item to insert before. Something like `plain_range(&arr[idx], &arr[idx+1])` 22:44 <+bridge> [ddnet] xD that makes sense 22:45 <+bridge> [ddnet] but I think it should be range not plain_range 22:45 <+bridge> [ddnet] more like passive aggressive 22:45 <+bridge> [ddnet] Could be, I always forget the range classes available 22:46 <+bridge> [ddnet] `typeof(arr)::range` actually 22:47 <+bridge> [ddnet] `array::range` if you don't like typeof 22:49 <+bridge> [ddnet] Ah I understand now. 22:49 <+bridge> [ddnet] if your array is called "layers" you could do 22:49 <+bridge> [ddnet] 22:49 <+bridge> [ddnet] range all_layers = layers.all(); 22:49 <+bridge> [ddnet] 22:49 <+bridge> [ddnet] layers.insert(newitem, all_layers.slice(index_to_insert, index_to_insert + 1)); 22:50 <+bridge> [ddnet] who the fuck thought this is a good idea, and why is it not used anywhere xD 22:51 <+bridge> [ddnet] I guess a slice is better 22:52 <+bridge> [ddnet] It was an early attempt at creating something like the c++20 ranges, way back in the day 22:54 <+bridge> [ddnet] maybe but why is there then a remove_index(int index) function xD he could also made the function insert_index(const T &item, int index) instead, same effect, less strange 22:56 <+bridge> [ddnet] These early container types weren't exactly very thought out. I bet he found the range interface equally annoying when removing something one day and just added a remove_index 23:00 <+bridge> [ddnet] ah it is used only once, that is for sorted_array in the add() function 23:01 <+bridge> [ddnet] ah it is used only once, that is for sorted_array.h in the add() function 23:03 <+bridge> [ddnet] yep the lack of examples is what makes it so hard to figure out