pilot-assistant's People
Forkers
mjn33 deamonsix tivec esayers kerbas-ad-astra lemon1324 richarddastardly oghara xchgrbprsp olympic1 dhuth starwaster zolotiyeruki cybersyspilot-assistant's Issues
PA/SAS pause manager is broked yet again
go and make a function somewhere for activating/deactiving SAS dummy
Add a Quaternion process state to the control heirachy to improve control around vertical
If PA ever reaches a very high/low pitch, it loses control of the roll axis and enters a spin it can't recover from. This really shouldn't be a thing, and I've already solved it in SSAS
Pilot Assist working with other mods?
Hi, not sure if this is the place for requests but I couldn't get on the forums for some reason.
Sorry if it isn't.
First off. Pilot Assistant = Amazing!
Have you considered making PA compatible with other mods? There are other mods out there that your mod could work with, there would be unlimited potential.
RPM has updated to allow it to both get and set numeric data from a plugin to a persistent variable and from the persistent variable to a plugin. This means you could control PA from IVA without needing to go through menus. I currently have this set up for MJ, I can hold a specific heading and altitude without needing to go through any menus, unfortunately its MJ so it immediately spazzes out and rips my plane apart. If PA exposes its variable to RPM, it would be possible to build a very advanced autopilot.
NAV Utilities gives you directions to a runway and helps you line up, it also lets you set glide slope and runway. MJs autoland system either works badly or crashes the plane, even though you can set a glide slope, MJ will just nose dive to about 100m and then level off, only descending when it reaches the glide slope. Half the time MJ cant or wont level at 100 and just crashes. If PA had an autoland or approach function, it would be a great addition. PA has much more precision than MJ making less likely to crash.
Lastly, not really a mod but a feature. A Flight Director (FD). Basically, PA shows where it would be steering the plane but isn't in control. This leaves the pilot to fly and PA shows them where to go.
Once again, thank you for the impressive mod. I hope you consider my request and please let me know what you think. If you don't want to change it then that's fine, I understand.
Thanks again.
AoA hold mode
Should be a thing, but mode UI is right out of space. Not sure what I'm going to do here
Toggle keyboard control
I find that turning off PA in an emergency isn't really that easy and I try and use it with RPM so that I don't have the window covering half the screen.(and I use RPM inputs to change PA settings so I have no need for changing with keyboard)
If PA automatically turned off when a keyboard input is made, it could allow for quick intervention when the plane is in trouble.
There should be an option to toggle the usage of the keyboard with PA.
Making pitch or roll changes would affect the throttle control. And making throttle changes wouldn't affect the pitch and heading control.
Control Freezing
Reported on forum by Van Disaster:
http://forum.kerbalspaceprogram.com/threads/100073-0-90-Pilot-Assistant-Atmospheric-piloting-aids-1-3-%28Feb-15%29?p=1748648&viewfull=1#post1748648
http://forum.kerbalspaceprogram.com/threads/100073-0-90-Pilot-Assistant-Atmospheric-piloting-aids-1-3-%28Feb-15%29?p=1748703&viewfull=1#post1748703
http://forum.kerbalspaceprogram.com/threads/100073-0-90-Pilot-Assistant-Atmospheric-piloting-aids-1-3-%28Feb-15%29?p=1758562&viewfull=1#post1758562
Vertical speed and/or AoA controller (possibly others) is freezing up somewhere not at the desired SP. Occuring with WASD control inputs. Probably something to do with the changes made to create bumpless setpoint updates.
MM can no longer reload database.
I'm not entirely sure if this is Pilot Assistants fault but I have never had this problem until I installed it into KSP 1.1.
When pressing 'Quick Reload database', MM will start reloading the database but get stuck around 77%, at which point the log is full of:
[LOG 10:12:03.347] [ModuleManager] Ran in 5.806s
[LOG 10:12:03.399] [ModuleManager] Ran in 5.806s
[LOG 10:12:03.453] [ModuleManager] Ran in 5.806s
[LOG 10:12:03.500] [ModuleManager] Ran in 5.806s
[LOG 10:12:03.554] [ModuleManager] Ran in 5.806s
[LOG 10:12:03.605] [ModuleManager] Ran in 5.806s
[LOG 10:12:03.658] [ModuleManager] Ran in 5.806s
[LOG 10:12:03.710] [ModuleManager] Ran in 5.806s
[LOG 10:12:03.759] [ModuleManager] Ran in 5.806s
[LOG 10:12:03.807] [ModuleManager] Ran in 5.806s
[LOG 10:12:03.851] [ModuleManager] Ran in 5.806s
[LOG 10:12:03.899] [ModuleManager] Ran in 5.806s
It never finishes reloading database :(
Other than that, it seems to work ok.
Release for KSP 1.2.2
I noticed you already made the changes for KSP 1.2.2, but it would be very helpful if you would post a new release containing this commit.
Adaptive Control System
Hi Cryzrndm,
First off, I want to thank you for creating this add-on. The accuracy of the assistant is unbelievable for me in comparison to mechjeb and the stock SAS.
Secondly, this isn't an issue more like a suggestion, I wanted to message you directly but there is no mechanism for direct messaging. Have you ever considered implementing an adaptive control system? If so, I would like to be involved in that feature.
Cheers,
Supereaglecoder
Move presets and any other dynamic files out of sight of MM
Saving KSP files frequently causes MM to rebuild its cache for no reason. Either move everything inside PluginData or change the file extension
Broken version file
With the update for 1.3 you accidently removed the end closing bracket in the version file, which makes it an invalid json.
Hold heading to target.
Any chance of getting the ability to hold a heading to a target taking into account the shortest great circle distance?
Game crash : NullReferenceException
Hello,
Thank you for this great mod, I love it !
I installed your release 1.13.3.
However after installing it, my game sometimes crashes when I switch to/from the map. I've noticed this problem when i am not using pilot assistant on the mission.
I do have other mods installed but I think the logs points to this one.
Below is the error from the log.
See attached KSP.log for details.
Cheers !
[ERR 02:57:02.025] Exception handling event onTimeWarpRateChanged in class AsstVesselModule:System.NullReferenceException:
at (wrapper managed-to-native) UnityEngine.MonoBehaviour:StartCoroutine_Auto (System.Collections.IEnumerator)
at UnityEngine.MonoBehaviour.StartCoroutine (IEnumerator routine) [0x00000] in <filename unknown>:0
at PilotAssistant.FlightModules.PilotAssistant.StartCoroutine (IEnumerator routine) [0x00000] in <filename unknown>:0
at PilotAssistant.FlightModules.PilotAssistant.VertModeChanged (VertMode newMode, Boolean active, Boolean setTarget) [0x00000] in <filename unknown>:0
at PilotAssistant.FlightModules.PilotAssistant.WarpHandler () [0x00000] in <filename unknown>:0
at PilotAssistant.FlightModules.AsstVesselModule.WarpHandler () [0x00000] in <filename unknown>:0
at EventVoid.Fire () [0x00000] in <filename unknown>:0
[EXC 02:57:02.025] NullReferenceException
UnityEngine.MonoBehaviour.StartCoroutine (IEnumerator routine)
PilotAssistant.FlightModules.PilotAssistant.StartCoroutine (IEnumerator routine)
PilotAssistant.FlightModules.PilotAssistant.VertModeChanged (VertMode newMode, Boolean active, Boolean setTarget)
PilotAssistant.FlightModules.PilotAssistant.WarpHandler ()
PilotAssistant.FlightModules.AsstVesselModule.WarpHandler ()
EventVoid.Fire ()
UnityEngine.Debug:LogException(Exception)
EventVoid:Fire()
TimeWarp:assumeWarpRate(Single, Boolean, Boolean)
TimeWarp:setRate(Int32, Boolean, Boolean, Boolean, Boolean)
TimeWarp:Update()
[ERR 02:57:02.025] Exception handling event onTimeWarpRateChanged in class AsstVesselModule:System.NullReferenceException:
at (wrapper managed-to-native) UnityEngine.MonoBehaviour:StartCoroutine_Auto (System.Collections.IEnumerator)
at UnityEngine.MonoBehaviour.StartCoroutine (IEnumerator routine) [0x00000] in <filename unknown>:0
at PilotAssistant.FlightModules.PilotAssistant.StartCoroutine (IEnumerator routine) [0x00000] in <filename unknown>:0
at PilotAssistant.FlightModules.PilotAssistant.VertModeChanged (VertMode newMode, Boolean active, Boolean setTarget) [0x00000] in <filename unknown>:0
at PilotAssistant.FlightModules.PilotAssistant.WarpHandler () [0x00000] in <filename unknown>:0
at PilotAssistant.FlightModules.AsstVesselModule.WarpHandler () [0x00000] in <filename unknown>:0
at EventVoid.Fire () [0x00000] in <filename unknown>:0
[EXC 02:57:02.025] NullReferenceException
UnityEngine.MonoBehaviour.StartCoroutine (IEnumerator routine)
PilotAssistant.FlightModules.PilotAssistant.StartCoroutine (IEnumerator routine)
PilotAssistant.FlightModules.PilotAssistant.VertModeChanged (VertMode newMode, Boolean active, Boolean setTarget)
PilotAssistant.FlightModules.PilotAssistant.WarpHandler ()
PilotAssistant.FlightModules.AsstVesselModule.WarpHandler ()
EventVoid.Fire ()
UnityEngine.Debug:LogException(Exception)
EventVoid:Fire()
TimeWarp:assumeWarpRate(Single, Boolean, Boolean)
TimeWarp:setRate(Int32, Boolean, Boolean, Boolean, Boolean)
TimeWarp:Update()
[ERR 02:57:02.025] Exception handling event onTimeWarpRateChanged in class AsstVesselModule:System.NullReferenceException:
at (wrapper managed-to-native) UnityEngine.MonoBehaviour:StartCoroutine_Auto (System.Collections.IEnumerator)
at UnityEngine.MonoBehaviour.StartCoroutine (IEnumerator routine) [0x00000] in <filename unknown>:0
at PilotAssistant.FlightModules.PilotAssistant.StartCoroutine (IEnumerator routine) [0x00000] in <filename unknown>:0
at PilotAssistant.FlightModules.PilotAssistant.VertModeChanged (VertMode newMode, Boolean active, Boolean setTarget) [0x00000] in <filename unknown>:0
at PilotAssistant.FlightModules.PilotAssistant.WarpHandler () [0x00000] in <filename unknown>:0
at PilotAssistant.FlightModules.AsstVesselModule.WarpHandler () [0x00000] in <filename unknown>:0
at EventVoid.Fire () [0x00000] in <filename unknown>:0
[EXC 02:57:02.026] NullReferenceException
UnityEngine.MonoBehaviour.StartCoroutine (IEnumerator routine)
PilotAssistant.FlightModules.PilotAssistant.StartCoroutine (IEnumerator routine)
PilotAssistant.FlightModules.PilotAssistant.VertModeChanged (VertMode newMode, Boolean active, Boolean setTarget)
PilotAssistant.FlightModules.PilotAssistant.WarpHandler ()
PilotAssistant.FlightModules.AsstVesselModule.WarpHandler ()
EventVoid.Fire ()
UnityEngine.Debug:LogException(Exception)
EventVoid:Fire()
TimeWarp:assumeWarpRate(Single, Boolean, Boolean)
TimeWarp:setRate(Int32, Boolean, Boolean, Boolean, Boolean)
TimeWarp:Update()
[ERR 02:57:02.290] Exception handling event onTimeWarpRateChanged in class AsstVesselModule:System.NullReferenceException:
at (wrapper managed-to-native) UnityEngine.MonoBehaviour:StartCoroutine_Auto (System.Collections.IEnumerator)
at UnityEngine.MonoBehaviour.StartCoroutine (IEnumerator routine) [0x00000] in <filename unknown>:0
at PilotAssistant.FlightModules.PilotAssistant.StartCoroutine (IEnumerator routine) [0x00000] in <filename unknown>:0
at PilotAssistant.FlightModules.PilotAssistant.VertModeChanged (VertMode newMode, Boolean active, Boolean setTarget) [0x00000] in <filename unknown>:0
at PilotAssistant.FlightModules.PilotAssistant.WarpHandler () [0x00000] in <filename unknown>:0
at PilotAssistant.FlightModules.AsstVesselModule.WarpHandler () [0x00000] in <filename unknown>:0
at EventVoid.Fire () [0x00000] in <filename unknown>:0
[EXC 02:57:02.291] NullReferenceException
UnityEngine.MonoBehaviour.StartCoroutine (IEnumerator routine)
PilotAssistant.FlightModules.PilotAssistant.StartCoroutine (IEnumerator routine)
PilotAssistant.FlightModules.PilotAssistant.VertModeChanged (VertMode newMode, Boolean active, Boolean setTarget)
PilotAssistant.FlightModules.PilotAssistant.WarpHandler ()
PilotAssistant.FlightModules.AsstVesselModule.WarpHandler ()
EventVoid.Fire ()
UnityEngine.Debug:LogException(Exception)
EventVoid:Fire()
TimeWarp:assumeWarpRate(Single, Boolean, Boolean)
TimeWarp:setRate(Int32, Boolean, Boolean, Boolean, Boolean)
TimeWarp:Update()
[ERR 02:57:02.291] Exception handling event onTimeWarpRateChanged in class AsstVesselModule:System.NullReferenceException:
at (wrapper managed-to-native) UnityEngine.MonoBehaviour:StartCoroutine_Auto (System.Collections.IEnumerator)
at UnityEngine.MonoBehaviour.StartCoroutine (IEnumerator routine) [0x00000] in <filename unknown>:0
at PilotAssistant.FlightModules.PilotAssistant.StartCoroutine (IEnumerator routine) [0x00000] in <filename unknown>:0
at PilotAssistant.FlightModules.PilotAssistant.VertModeChanged (VertMode newMode, Boolean active, Boolean setTarget) [0x00000] in <filename unknown>:0
at PilotAssistant.FlightModules.PilotAssistant.WarpHandler () [0x00000] in <filename unknown>:0
at PilotAssistant.FlightModules.AsstVesselModule.WarpHandler () [0x00000] in <filename unknown>:0
at EventVoid.Fire () [0x00000] in <filename unknown>:0
[EXC 02:57:02.291] NullReferenceException
UnityEngine.MonoBehaviour.StartCoroutine (IEnumerator routine)
PilotAssistant.FlightModules.PilotAssistant.StartCoroutine (IEnumerator routine)
PilotAssistant.FlightModules.PilotAssistant.VertModeChanged (VertMode newMode, Boolean active, Boolean setTarget)
PilotAssistant.FlightModules.PilotAssistant.WarpHandler ()
PilotAssistant.FlightModules.AsstVesselModule.WarpHandler ()
EventVoid.Fire ()
UnityEngine.Debug:LogException(Exception)
EventVoid:Fire()
TimeWarp:assumeWarpRate(Single, Boolean, Boolean)
TimeWarp:setRate(Int32, Boolean, Boolean, Boolean, Boolean)
TimeWarp:Update()
[ERR 02:57:02.291] Exception handling event onTimeWarpRateChanged in class AsstVesselModule:System.NullReferenceException:
at (wrapper managed-to-native) UnityEngine.MonoBehaviour:StartCoroutine_Auto (System.Collections.IEnumerator)
at UnityEngine.MonoBehaviour.StartCoroutine (IEnumerator routine) [0x00000] in <filename unknown>:0
at PilotAssistant.FlightModules.PilotAssistant.StartCoroutine (IEnumerator routine) [0x00000] in <filename unknown>:0
at PilotAssistant.FlightModules.PilotAssistant.VertModeChanged (VertMode newMode, Boolean active, Boolean setTarget) [0x00000] in <filename unknown>:0
at PilotAssistant.FlightModules.PilotAssistant.WarpHandler () [0x00000] in <filename unknown>:0
at PilotAssistant.FlightModules.AsstVesselModule.WarpHandler () [0x00000] in <filename unknown>:0
at EventVoid.Fire () [0x00000] in <filename unknown>:0
[EXC 02:57:02.291] NullReferenceException
UnityEngine.MonoBehaviour.StartCoroutine (IEnumerator routine)
PilotAssistant.FlightModules.PilotAssistant.StartCoroutine (IEnumerator routine)
PilotAssistant.FlightModules.PilotAssistant.VertModeChanged (VertMode newMode, Boolean active, Boolean setTarget)
PilotAssistant.FlightModules.PilotAssistant.WarpHandler ()
PilotAssistant.FlightModules.AsstVesselModule.WarpHandler ()
EventVoid.Fire ()
UnityEngine.Debug:LogException(Exception)
EventVoid:Fire()
TimeWarp:assumeWarpRate(Single, Boolean, Boolean)
TimeWarp:setRate(Int32, Boolean, Boolean, Boolean, Boolean)
TimeWarp:Update()
Hold Heading through 0/360* gets confused.
I think there was an issue like this before, if you are flying heading 10* and set PA to fly 350* the plane will turn the right and attempt to do a 340* turn to the target heading.
Only difference now is that the plane will start the wrong turn and then change its mind after about 10 seconds and slam the controls in the opposite direction to turn the right way.
I've also noticed that the 'Alt Hold' autopilot will first react by diving/climbing the plane in the opposite direction to what the plane was already doing. Meaning that if the plane is climbing and you set a higher altitude, PA will immediately put the plane into a dive (disregarding any limits you set) and then very slowly levels out and starts to climb. For obvious reasons, it means I cant use it during take off.
PA speed control
I think it would be useful for PA to remember your speed settings when you load a craft. I know its a little thing but it would be very handy. Maybe just make it so that speed setting can be saved in presets.
By speed settings I mean IAS, EAS, TAS and knots, m/s, etc...
Also, I noticed that PAs speed control stopped working with RPM after the speed update.
Is that RPMs problem?
Lastly, there is an inconsistency between the 3 mods that I use that show me airspeed
(PA, FAR, RPM). I know that's not PAs fault but I was wondering if there would be an easy way to match the IAS in PA with the IAS in RPM and FAR (both in knots). If no then that's fine, ill try and figure a way round it.
SAS totally overrides functionality
Look at integrating PID tune functionality, disabling SAS on enabling assistant functions, etc.
Move config cfg files to PluginData
ModuleManger builds up a new cache file on every start when changing config cfg files are not stored in a PluginData folder.
GameData\Pilot Assistant\Presets.cfg
-> GameData\Pilot Assistant\PluginData\Presets.cfg
Vessel launch w/ command seat + Take Command mod disables Pilot Assistant
If a vehicle has only a command seat attached and is launched with the Take Command mod (so Kerbal spawns inside a "cockpit" in the command seat and then is auto-transfered to be in the seat itself) Pilot Assistant loses track of the vessel and cannot control it. This does not affect vehicles that only have control via a Kerbal in a command seat that are loaded with the Kerbal already sitting in the seat.
Reproduction steps:
- Install Take Command + Pilot Assistant 1.12.1 (no other mods necessary)
- Create vehicle with command seat (no other parts necessary)
- Use crew section of editor to ensure that Kerbal is placed in command seat
- Launch.
- Vehicle will have active Pilot Assistant until Kerbal is shifted by Take Command into command seat. After that, vehicle requires save -> reload to have active Pilot Assistant
Note: this was not an issue under Pilot Assistant 1.11.7.
AVC data is blocking CKAN distribution
NetKAN crawler uses the AVC version compatibility in the latest release to determine which versions of KSP the mod is compatible with. PilotAssistant.version marks this mod as only 1.1.0 compatible.
Would you mind bumping the version at some point? I'll submit a PR if you want it.
VSpeed measurement includes planetary curvature
This causes it to be reporting a value higher than it actually is, breaking altitude hold
SSAS is non-functional for joystick/controller users
Pausing only considers keyboard input. Need to investigate just how KSP handles controller input.
Loss of window & PA control when vehicle grabs another command part with a claw
Haven't seen this with KAS, so an interesting one.
- Have a plane with an armed claw (klaw? the stock grabber thing) in a cargo bay
- Have a pod floating
- Land plane, scoop pod into cargo bay
- When the claw grabs the pod, the camera resets * the PA window disappears & can't be reopened.
- Nothing in the log.
- Going to the space centre & back to the vessel resets PA ( awkward as hell for something floating, takes forever to slow down enough... )
This isn't something that we do a lot so not really surprised it's not happened before, but what a wierd bug. Will try it on the runway, PA does take it's time resetting after splashdown sometimes.
Remove right click hiding the window in IVA.
I like the concept of being able to hide the display, but then its a nightmare trying to find it again. You end up right clicking everywhere before it actually appears again. If there is some method I'm missing then please let me know what it is.
PA / RasterPropMonitor API request
I've had an outstanding request to expose Pilot Assistant capabilities in RasterPropMonitor. I've looked at the PA source, and it looks like the methods I'd most likely need aren't all directly exposed.
It looks like I can query the PilotAssistant class to determine which control modes are enabled, and what mode they're in, so that part's easy.
What wasn't immediately obvious was how to query the current value (eg, if I determine VertActive == true && CurrentVerMode == VertMode.Altitude, how do I query the target hold altitude?). It would be nice if I could call a method like GetCurrentVertSetPoint(VertMode.Altitude) and get a double in response.
The other API methods that would be nice are a method to disengage the pilots (unless setting the appropriate *Active Boolean directly is benign), and a method to engage a pilot / mode with a supplied set point (eg, SetVertPilot(VertMode.Altitude, 14000) ) that would enable the pilot, switch the mode, and set the altitude as requested.
I don't know how many of those changes are practical, so please let me know.
No RAlt mode
What happened to RAlt mode?
PID controller derivative
derivative reacts badly to changes in setpoint even when the change is actually nothing, causing unwanted jerking.
PA "set value" usability request
One thing I've noticed with PA is that I can't set a target value (say, altitude), and then press the button to hold altitude. In this instance, when I activate the control, the current altitude is selected, and then I have to re-enter the hold altitude. This can be dicey if I have just cleared the runway. Is it possible to read the current value in the input field, and use it if it makes sense? Or, have a button / checkbox that tells PA "use the value in the input field, do not load the current setting"?
PA window no longer opens when i press the button in flight
I have no earthly idea what i did, but suddenly i can't open the window with controls, but i can still see the button, it just does nothing..
To the best of my knowledge i've not installed any mods or done anything.. Not sure what to do, but i tried reinstalling to no avail..
Binds to tab key.
Which means that switching focus becomes difficult without re-binding KSP default keybindings.
OS: Linux x64
Pitch Control with Speed as input
Hey Crzyrndm! I love your mods. I put a lot of mileage on them and I make sure PA is always in my screencaps (instructions to viewers and shout out to you.)
https://www.facebook.com/groups/KerbalSpaceProgram/permalink/1572714352785893/
https://imgur.com/gallery/Fxdrh
https://imgur.com/a/kANTz
https://imgur.com/a/QDPpb
https://www.facebook.com/groups/KerbalSpaceProgram/permalink/1552253851498610/
https://www.facebook.com/groups/KerbalSpaceProgram/permalink/1508687519188577/
https://www.facebook.com/groups/KerbalSpaceProgram/permalink/1547911085266220/
https://www.facebook.com/groups/KerbalSpaceProgram/permalink/1548410938549568/
https://www.facebook.com/groups/KerbalSpaceProgram/permalink/1551585144898814/
I make a lot of endurance planes and I often tax engines at the limits of their speed. For instance, my first link at the top, my KU-95, I have the speed fixed to 205m/s because any faster and the turboprops go in to a flameout condition.
However, this sacrifices performance especially in regards to altitude, which might give me a better range. Basically, I am losing TWR and altitude, or I have to constantly babysit the flight.
If I could adjust pitch based on speed, I could assure that TWR is always at peak.
Would this be a difficult request?
Thanks!
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. ๐๐๐
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google โค๏ธ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.