Mihara Posted November 13, 2013 Author Share Posted November 13, 2013 RasterPropMonitor 0.5 released.Significant changes:The only bug actually reported so far fixed, if you want your currently selected page to persist between vessel switches, you need to have MODULE { name = JSIInternalPersistence } on your pod part. It'll keep working if that module is not present, but obviously, won't remember active pages.The new JSIVariableAnimator module lets you create animated gauge props (or any other kind of props with animations on them) driven by the same variables as the RasterPropMonitorGenerator uses -- still using one calculator per pod, even.String.Format is extended by a special format specifier that lets you turn 802975628m into 802Mm right in the page definition file, which should make data displays considerably neater. I'll probably also make the degree/minute/second coordinates formatter and kerbal time formatter into format specifiers later, which will also involve some rewriting of page definitions, but make things much more flexible.Page handler mechanism. It is now possible to create your own plugins that can generate page data during execution in whichever way you please, while the pages are still processed through the same variable substitution system. This lets you do things like creating an onscreen menu in quite a trivial fashion. This might also be the way to hook kOS into the whole thing... I'm not up to doing an actual keyboard with buttons you have to click to make your kerbals type in kOS scripts, but if you want to, this is what I can do from my end to make it easier for you.Lots and lots and lots of minor refactoring all over the place, some of which might result in marginal speed improvements, but I doubt it.Next up, reaching into the guts of SCANsat and trying to get at the map therein, and, if I get sufficiently inspired to grok vector math, I'll look into making a primary flight display to replace the antiquated-looking navball... Both require teaching the monitor to present an arbitrary texture first, which can, apparently, be fairly tricky, since while you can paint a Texture2D onto a RenderTexture, going the other way incurs a significant performance penalty...And maybe, just maybe, I'll get IConfigNode to work at least for loading page definitions, so you'll be able to have any number of them in one prop.Download here: RasterPropMonitor_0.5.zip Link to comment Share on other sites More sharing options...
Vaisman Posted November 13, 2013 Share Posted November 13, 2013 Nice. i remembered the old games - "Privateer" and "Wing commander" Link to comment Share on other sites More sharing options...
DoubleOSeven1 Posted November 13, 2013 Share Posted November 13, 2013 RasterPropMonitor 0.5 released.Significant changes:The only bug actually reported so far fixed, if you want your currently selected page to persist between vessel switches, you need to have MODULE { name = JSIInternalPersistence } on your pod part. It'll keep working if that module is not present, but obviously, won't remember active pages. The new JSIVariableAnimator module lets you create animated gauge props (or any other kind of props with animations on them) driven by the same variables as the RasterPropMonitorGenerator uses -- still using one calculator per pod, even. String.Format is extended by a special format specifier that lets you turn 802975628m into 802Mm right in the page definition file, which should make data displays considerably neater. I'll probably also make the degree/minute/second coordinates formatter and kerbal time formatter into format specifiers later, which will also involve some rewriting of page definitions, but make things much more flexible. Page handler mechanism. It is now possible to create your own plugins that can generate page data during execution in whichever way you please, while the pages are still processed through the same variable substitution system. This lets you do things like creating an onscreen menu in quite a trivial fashion. This might also be the way to hook kOS into the whole thing... I'm not up to doing an actual keyboard with buttons you have to click to make your kerbals type in kOS scripts, but if you want to, this is what I can do from my end to make it easier for you. Lots and lots and lots of minor refactoring all over the place, some of which might result in marginal speed improvements, but I doubt it. Next up, reaching into the guts of SCANsat and trying to get at the map therein, and, if I get sufficiently inspired to grok vector math, I'll look into making a primary flight display to replace the antiquated-looking navball... Both require teaching the monitor to present an arbitrary texture first, which can, apparently, be fairly tricky, since while you can paint a Texture2D onto a RenderTexture, going the other way incurs a significant performance penalty...And maybe, just maybe, I'll get IConfigNode to work at least for loading page definitions, so you'll be able to have any number of them in one prop.Download here: RasterPropMonitor_0.5.zipThis is already an amazing plugin and it is going to be much more as well! Keep up the good work! Link to comment Share on other sites More sharing options...
Mihara Posted November 17, 2013 Author Share Posted November 17, 2013 Bump for new version release.Changes in version 0.6:Format specifiers for SI prefixes had a few bugs which were fixed, and now behave mostly as advertised. This is completely minor compared to...Syntax of prop.cfg files has been significantly changed, so if you customized anything in this package, you might have to do some fixing -- see the wickied documentation. This is very much worth it though, because the upsides of that change are...You can now have an unlimited number of pages per prop. Well, it'll crash at around 2.1 billion, but I think you'll run out of memory well before that.Page handlers now no longer need to be loaded as separate modules, RPM will take care of loading them by itself and passing them module configuration.The notion of a camera takes a step back, and now there's a more generalized notion of a page background -- which can be a camera, but it can be something else instead. Which permits such a nicety as a Background Handler plugin. Which permits me to make a Primary Flight Display, which is in the works for the next version(s), because I have finally figured out how to draw something rotated on a RenderTexture.But right now, you can assign a texture to be a page background already, which I'm sure you can find useful.In other news, JSIExternalCameraSelector PartModule is introduced to permit one to have a large array of external cameras without actually creating multiple unique parts and cluttering the part list. Amusingly, while it works on stock docking ports, the resulting cameras are facing the opposite direction of what you need...Do not install this version with the v0.5 release of ALCOR without understanding that you'll have to massage it's prop configuration files to conform to the new prop.cfg syntax. Link to comment Share on other sites More sharing options...
Kamsko Posted November 17, 2013 Share Posted November 17, 2013 This is a plugin initially conceived to handle the internal monitor displays of the ALCOR capsule, with the intent of supplanting MechJeb/Engineer windows when flying from IVA. It evolved to the point when it's quite a bit more than that. While it's not that much of a product for an end user, it's mostly for other modders to use in making neat IVAs, this here is a canonical package which adds a simple monitor into certain stock capsules, which I'm sure many people will find useful exactly as presented.Enough to actually send me bug reports, you know, because I'm pretty sure some of these things are not computed sensibly and I definitely missed something.-snip-Wow dude this is exactly what I had in mind when I think of the first step to "improved IVA" from the features list. You made the monitors happen, all that is left is wandering around inside your ship, and changing ships by going through the air lock. You sir have my props! Bravo! Link to comment Share on other sites More sharing options...
Nazari1382 Posted November 17, 2013 Share Posted November 17, 2013 How do I get the replacement background texture to not spin around in the screen with a blue background? Link to comment Share on other sites More sharing options...
Mihara Posted November 17, 2013 Author Share Posted November 17, 2013 How do I get the replacement background texture to not spin around in the screen with a blue background?Remove the entire BACKGROUNDHANDLER section, which takes precendence over textureURL. Link to comment Share on other sites More sharing options...
Mihara Posted November 17, 2013 Author Share Posted November 17, 2013 Meanwhile, mwahahaha, it's getting closer. Link to comment Share on other sites More sharing options...
Nazari1382 Posted November 17, 2013 Share Posted November 17, 2013 (edited) where am I telling it to find my background if I replace those lines?Also, could you make a version that is just the screen? literally just the glass panel, when you get that hud working? Edited November 17, 2013 by Nazari1382 Link to comment Share on other sites More sharing options...
Mihara Posted November 17, 2013 Author Share Posted November 17, 2013 where am I telling it to find my background if I replace those lines? PAGE { text = blah/blah/blah.txt button = mybuttontransform textureURL = blah/blah/texture }This loads a texture into the background directly. The BACKGROUNDHANDLER{} block actually calls a different module and passes it the screen to draw on, the one that I left in the config commented out was just the first experiment in making the PFD module.Also, could you make a version that is just the screen? literally just the glass panel, when you get that hud working?As I envision it, the PFD will be just a background handler, to be used as part of a PAGE{} which will have the text parts drawn in the usual way. That page itself can be part of a more complex display (as long as it's square) or used completely standalone. It should be possible to draw it on a glass panel as long as you make the appropriate textures to go into it, no problem. Link to comment Share on other sites More sharing options...
DoubleOSeven1 Posted November 17, 2013 Share Posted November 17, 2013 Meanwhile, mwahahaha, it's getting closer.Can't wait till I can get rid of that pesky navball! Link to comment Share on other sites More sharing options...
Mihara Posted November 17, 2013 Author Share Posted November 17, 2013 Can't wait till I can get rid of that pesky navball!It's going to take at least a week, I'm afraid, due to a) me not understanding vector math particularly well and having to work on the lowest level of drawing stuff available in Unity because more reasonable upper levels won't let me rotate stuff unless I'm working with a real 3d model and pointing a camera at it, which I'm obviously not. Link to comment Share on other sites More sharing options...
DoubleOSeven1 Posted November 17, 2013 Share Posted November 17, 2013 It's going to take at least a week, I'm afraid, due to a) me not understanding vector math particularly well and having to work on the lowest level of drawing stuff available in Unity because more reasonable upper levels won't let me rotate stuff unless I'm working with a real 3d model and pointing a camera at it, which I'm obviously not. Take your time, seriously this already has amazing features. I think one more can wait a little bit. Link to comment Share on other sites More sharing options...
mrfox Posted November 18, 2013 Share Posted November 18, 2013 A most impressive addition!I'd like to request an additional variable for Equivalent airspeed (EAS) which directly relates to the effectiveness of aerodynamic surfaces.{TAS} is true airspeed{EAS} is equivalent airspeed{p0} is the air density at sea level in the International Standard Atmosphere (15°C and 1013.25 hectopascals) (density of 1.225 kg/m3){p} is the density of the air in which the aircraft is flyingPlease consider adding this variable - its been the one essential thing that has been missing for flying planes in IVA with FAR. Link to comment Share on other sites More sharing options...
Mihara Posted November 18, 2013 Author Share Posted November 18, 2013 Please consider adding this variable - its been the one essential thing that has been missing for flying planes in IVA with FAR.Fixed, will be in the next version. At least it compiles, I've got no clue if it is correct. Link to comment Share on other sites More sharing options...
DasBananenbrot Posted November 18, 2013 Share Posted November 18, 2013 are the MM example files for the stock pods independent to the plugin version? Because I am using ALCOR so I have to use the 0.5 version but also want to have monitors in the stock pods and I don't have the 0.5 zip anymore. SO I want to know if I can use the MM files from 0.6 release or if I need the 0.5 release MM files.... Link to comment Share on other sites More sharing options...
Mihara Posted November 18, 2013 Author Share Posted November 18, 2013 are the MM example files for the stock pods independent to the plugin version? Because I am using ALCOR so I have to use the 0.5 version but also want to have monitors in the stock pods and I don't have the 0.5 zip anymore. SO I want to know if I can use the MM files from 0.6 release or if I need the 0.5 release MM files....You would need to edit the FlatMon40x10/prop.cfg and FlatMon60x20/prop.cfg files to fit the new syntax, everything else remains unchanged.In fact, here, these should apply to the 0.5 ALCOR and work with 0.6 plugin:FlatMon40x10/prop.cfgPROP{ name = FlatMon40x10 MODULE { name = RasterPropMonitor screenTransform = FlatMon40x10Screen // Name of transform for the screen surface. fontTransform = ASET/ASET_Lander_Cabin01/Props/FlatMon40x10/model003 // Name of transform containing the font texture OR a full texture URL, either should work. textureLayerID = _Emissive // Name of texture layer to work with on the screen surface. screenWidth = 40 // Screen width in letters. screenHeight = 10 // Screen height in lines. screenPixelWidth = 640 // Width of the generated screen texture in pixels. screenPixelHeight = 320 // Height of the generated screen texture in pixels. fontLetterWidth = 16 // Width of a font character. fontLetterHeight = 32 // Height of a font character. cameraAspect = 1.35 // Refresh once every 10 frames. refreshDrawRate = 2 refreshTextRate = 10 refreshDataRate = 10 PAGE { button = buttonR1 text = ASET/ASET_Lander_Cabin01/Props/FlatMon40x10/landing40x10.txt background = camera cameraTransform = Ext_B_CamTransform fov = 60 } PAGE { button = buttonR2 text = ASET/ASET_Lander_Cabin01/Props/FlatMon40x10/orbit40x10.txt } PAGE { button = buttonR3 page = ASET/ASET_Lander_Cabin01/Props/FlatMon40x10/target40x10.txt background = camera cameraTransform = DockingCamTransform fov = 20 } PAGE { button = buttonR4 text = ASET/ASET_Lander_Cabin01/Props/FlatMon40x10/shipinfo40x10.txt default = yes } PAGE { button = buttonR5 text = ASET/ASET_Lander_Cabin01/Props/FlatMon40x10/Crew40x10.txt } PAGE { button = buttonR6 text = ASET/ASET_Lander_Cabin01/Props/FlatMon40x10/resources40x10.txt } PAGE { button = buttonR7 text = ASET/ASET_Lander_Cabin01/Props/FlatMon40x10/misc-2-40x10.txt background = camera cameraTransform = Ext_A_CamTransform fov = 60 } PAGE { button = buttonR8 text = ASET/ASET_Lander_Cabin01/Props/FlatMon40x10/misc-1-40x10.txt } } MODULE { name = JSIActionGroupSwitch animationName = TargetCrossAnim switchTransform = buttonR9 actionName = dummy }}proxy = 0, 0, 0, 0.30, 0.20, 0.02, 0, 0, 1And FlatMon60x20/prop.cfg:PROP{ name = FlatMon60x20 MODULE { name = RasterPropMonitor screenTransform = FlatMon60x20Screen // Name of transform for the screen surface. fontTransform = ASET/ASET_Lander_Cabin01/Props/FlatMon40x10/model003 // Name of transform containing the font texture OR a full texture URL, either should work. textureLayerID = _Emissive // Name of texture layer to work with on the screen surface. screenWidth = 60 // Screen width in letters. screenHeight = 20 // Screen height in lines. screenPixelWidth = 960 // Width of the generated screen texture in pixels. screenPixelHeight = 640 // Height of the generated screen texture in pixels. fontLetterWidth = 16 // Width of a font character. fontLetterHeight = 32 // Height of a font character. cameraAspect = 1.0 emptyColor = 0,0,0,0 // Refresh once every 10 frames. refreshDrawRate = 2 refreshTextRate = 10 refreshDataRate = 10 PAGE { button = buttonR1 text = ASET/ASET_Lander_Cabin01/Props/FlatMon60x20/orbit60x20.txt } PAGE { button = buttonR2 text = ASET/ASET_Lander_Cabin01/Props/FlatMon60x20/landing60x20.txt background = camera cameraTransform = Ext_B_CamTransform fov = 60 } PAGE { button = buttonR3 text = ASET/ASET_Lander_Cabin01/Props/FlatMon60x20/target60x20.txt background = camera cameraTransform = DockingCamTransform fov = 50 } PAGE { button = buttonR4 text = ASET/ASET_Lander_Cabin01/Props/FlatMon60x20/shipinfo60x20.txt } PAGE { button = buttonR5 text = ASET/ASET_Lander_Cabin01/Props/FlatMon60x20/Crew60x20.txt } PAGE { button = buttonR6 text = ASET/ASET_Lander_Cabin01/Props/FlatMon60x20/resources60x20.txt } PAGE { button = buttonR7 text = ASET/ASET_Lander_Cabin01/Props/FlatMon60x20/misc-1-60x20.txt } PAGE { button = buttonR8 text = ASET/ASET_Lander_Cabin01/Props/FlatMon60x20/misc-2-60x20.txt background = camera cameraTransform = Ext_A_CamTransform fov = 70 } } }proxy = 0, 0, 0, 0.30, 0.275, 0.04, 0, 0, 1If you're still having problems after that, the old release is still up on MediaFire here. Link to comment Share on other sites More sharing options...
DasBananenbrot Posted November 18, 2013 Share Posted November 18, 2013 (edited) You would need to edit the FlatMon40x10/prop.cfg and FlatMon60x20/prop.cfg files to fit the new syntax, everything else remains unchanged.In fact, here, these should apply to the 0.5 ALCOR and work with 0.6 plugin:FlatMon40x10/prop.cfgPROP{ name = FlatMon40x10 MODULE { name = RasterPropMonitor screenTransform = FlatMon40x10Screen // Name of transform for the screen surface. fontTransform = ASET/ASET_Lander_Cabin01/Props/FlatMon40x10/model003 // Name of transform containing the font texture OR a full texture URL, either should work. textureLayerID = _Emissive // Name of texture layer to work with on the screen surface. screenWidth = 40 // Screen width in letters. screenHeight = 10 // Screen height in lines. screenPixelWidth = 640 // Width of the generated screen texture in pixels. screenPixelHeight = 320 // Height of the generated screen texture in pixels. fontLetterWidth = 16 // Width of a font character. fontLetterHeight = 32 // Height of a font character. cameraAspect = 1.35 // Refresh once every 10 frames. refreshDrawRate = 2 refreshTextRate = 10 refreshDataRate = 10 PAGE { button = buttonR1 text = ASET/ASET_Lander_Cabin01/Props/FlatMon40x10/landing40x10.txt background = camera cameraTransform = Ext_B_CamTransform fov = 60 } PAGE { button = buttonR2 text = ASET/ASET_Lander_Cabin01/Props/FlatMon40x10/orbit40x10.txt } PAGE { button = buttonR3 page = ASET/ASET_Lander_Cabin01/Props/FlatMon40x10/target40x10.txt background = camera cameraTransform = DockingCamTransform fov = 20 } PAGE { button = buttonR4 text = ASET/ASET_Lander_Cabin01/Props/FlatMon40x10/shipinfo40x10.txt default = yes } PAGE { button = buttonR5 text = ASET/ASET_Lander_Cabin01/Props/FlatMon40x10/Crew40x10.txt } PAGE { button = buttonR6 text = ASET/ASET_Lander_Cabin01/Props/FlatMon40x10/resources40x10.txt } PAGE { button = buttonR7 text = ASET/ASET_Lander_Cabin01/Props/FlatMon40x10/misc-2-40x10.txt background = camera cameraTransform = Ext_A_CamTransform fov = 60 } PAGE { button = buttonR8 text = ASET/ASET_Lander_Cabin01/Props/FlatMon40x10/misc-1-40x10.txt } } MODULE { name = JSIActionGroupSwitch animationName = TargetCrossAnim switchTransform = buttonR9 actionName = dummy }}proxy = 0, 0, 0, 0.30, 0.20, 0.02, 0, 0, 1And FlatMon60x20/prop.cfg:PROP{ name = FlatMon60x20 MODULE { name = RasterPropMonitor screenTransform = FlatMon60x20Screen // Name of transform for the screen surface. fontTransform = ASET/ASET_Lander_Cabin01/Props/FlatMon40x10/model003 // Name of transform containing the font texture OR a full texture URL, either should work. textureLayerID = _Emissive // Name of texture layer to work with on the screen surface. screenWidth = 60 // Screen width in letters. screenHeight = 20 // Screen height in lines. screenPixelWidth = 960 // Width of the generated screen texture in pixels. screenPixelHeight = 640 // Height of the generated screen texture in pixels. fontLetterWidth = 16 // Width of a font character. fontLetterHeight = 32 // Height of a font character. cameraAspect = 1.0 emptyColor = 0,0,0,0 // Refresh once every 10 frames. refreshDrawRate = 2 refreshTextRate = 10 refreshDataRate = 10 PAGE { button = buttonR1 text = ASET/ASET_Lander_Cabin01/Props/FlatMon60x20/orbit60x20.txt } PAGE { button = buttonR2 text = ASET/ASET_Lander_Cabin01/Props/FlatMon60x20/landing60x20.txt background = camera cameraTransform = Ext_B_CamTransform fov = 60 } PAGE { button = buttonR3 text = ASET/ASET_Lander_Cabin01/Props/FlatMon60x20/target60x20.txt background = camera cameraTransform = DockingCamTransform fov = 50 } PAGE { button = buttonR4 text = ASET/ASET_Lander_Cabin01/Props/FlatMon60x20/shipinfo60x20.txt } PAGE { button = buttonR5 text = ASET/ASET_Lander_Cabin01/Props/FlatMon60x20/Crew60x20.txt } PAGE { button = buttonR6 text = ASET/ASET_Lander_Cabin01/Props/FlatMon60x20/resources60x20.txt } PAGE { button = buttonR7 text = ASET/ASET_Lander_Cabin01/Props/FlatMon60x20/misc-1-60x20.txt } PAGE { button = buttonR8 text = ASET/ASET_Lander_Cabin01/Props/FlatMon60x20/misc-2-60x20.txt background = camera cameraTransform = Ext_A_CamTransform fov = 70 } } }proxy = 0, 0, 0, 0.30, 0.275, 0.04, 0, 0, 1If you're still having problems after that, the old release is still up on MediaFire here.Thanks that is very helpful will try out if it works Edited November 18, 2013 by DasBananenbrot Link to comment Share on other sites More sharing options...
nothke Posted November 18, 2013 Share Posted November 18, 2013 Exactly what I need for my jet cockpit mod! Link to comment Share on other sites More sharing options...
DasBananenbrot Posted November 18, 2013 Share Posted November 18, 2013 Exactly what I need for my jet cockpit mod!you have a jet cockpit mod? Link to comment Share on other sites More sharing options...
Mihara Posted November 18, 2013 Author Share Posted November 18, 2013 Speaking of which, will any aviation buffs in the audience be able to tell me what exactly is supposed to happen to a PFD's roll indicator as you pitch up through zenith and further, doing a full loop?What happens to my prototype is that as it approaches zero it rapidly flips around, and can spin wildly if you keep pointing upwards. Which is not entirely unexpected, since it's a piece of quad being rotated around the center by Euler angles, and texture-shifted up and down to get a pitch indicator, but -- do real PFDs that work in the similar fashion do that? Is it actually appropriate for a space vehicle, or only suitable for a plane? Link to comment Share on other sites More sharing options...
Themorris Posted November 18, 2013 Share Posted November 18, 2013 seems, they got round ones... Link to comment Share on other sites More sharing options...
Mihara Posted November 18, 2013 Author Share Posted November 18, 2013 seems, they got round ones...Doing a projection of a sphere onto a RenderTexture without the benefit of using an actual model, which is, unfortunately, impractical, is kind of beyond me. Unless someone knowledgeable in these things can explain how this could possibly be done using a matrix transformation.While something like this is already mostly done: Link to comment Share on other sites More sharing options...
Mihara Posted November 18, 2013 Author Share Posted November 18, 2013 Correction. Not beyond me, just difficult: Link to comment Share on other sites More sharing options...
nothke Posted November 18, 2013 Share Posted November 18, 2013 (edited) you have a jet cockpit mod? by jet I mean a commercial jet not a fighter jet, and yes I do it's in the works. I am also making some custom prop pieces. I made an action group switch panel and warning lights too, but looks like this mod actually has everything I made and what I was planning xDAnother suggestion I gave is to combine map sat maps into a "gps" like display like this in FSX: that would also be able to display runways and approach lines as you can see in the pictureI mean, that'd be great =)The only thing I'm worried is memory use.. This display will be quite heavy for fps, no? Edited November 18, 2013 by nothke Link to comment Share on other sites More sharing options...
Recommended Posts