private void Smile() { foreach (Vessel v in FlightGlobals.Vessels) { if (v.evaController == null) { continue; } KerbalEVA eva = v.evaController; kerbalExpressionSystem expression = getOrCreateExpressionSystem(eva); ProtoCrewMember crew = v.GetVesselCrew()[0]; if (expression != null) { if (tourists.TryGetValue(crew.name, out Tourist t)) { expression.wheeLevel = t.whee; expression.fearFactor = t.fear; } else // Allows crew members to always behave nicely! { expression.wheeLevel = 1f; expression.fearFactor = 0f; } /*FlightCamera camera = FlightCamera.fetch; * camera.transform.position = eva.transform.position + Vector3.forward * 2; * camera.transform.rotation = eva.transform.rotation;*/ } else { Log.warn("Slf: No expression system"); } } }
private void Smile() { foreach (Vessel v in FlightGlobals.Vessels) { if (v.evaController == null) { continue; } KerbalEVA eva = v.evaController; kerbalExpressionSystem expression = getOrCreateExpressionSystem(eva); if (expression != null) { Tourist t; if (!tourists.TryGetValue(v.GetVesselCrew()[0].name, out t)) { continue; } expression.wheeLevel = t.whee; expression.fearFactor = t.fear; /*FlightCamera camera = FlightCamera.fetch; * camera.transform.position = eva.transform.position + Vector3.forward * 2; * camera.transform.rotation = eva.transform.rotation;*/ } else { printDebug("Slf: No expression system"); } } }
private void UpdateLocalVars() { if (vessel.patchedConicSolver != null) { node = vessel.patchedConicSolver.maneuverNodes.Count > 0 ? vessel.patchedConicSolver.maneuverNodes[0] : null; } else { node = null; } orbitSensibility = JUtil.OrbitMakesSense(vessel); if (part.internalModel != null && part.internalModel.seats.Count == localCrew.Count) { // For some reason, the localCrewMedical value seems to get nulled after // we update crew assignments, so we keep polling it here. for (int i = 0; i < part.internalModel.seats.Count; i++) { if (localCrew[i] != null) { kerbalExpressionSystem kES = localCrewMedical[i]; localCrew[i].KerbalRef.GetComponentCached <kerbalExpressionSystem>(ref kES); localCrewMedical[i] = kES; } else { localCrewMedical[i] = null; } } } }
private kerbalExpressionSystem getOrCreateExpressionSystem(KerbalEVA p) { kerbalExpressionSystem e = p.part.GetComponent <kerbalExpressionSystem>(); Log.dbg("expr. system: {0}", dumper(e)); Log.dbg("kerbalEVA: {0}", dumper(p)); Log.dbg("part: {0}", dumper(p.part)); if (e == null) { AvailablePart evaPrefab = PartLoader.getPartInfoByName("kerbalEVA"); Log.dbg("eva prefab: {0}", dumper(evaPrefab)); Part prefabEvaPart = evaPrefab.partPrefab; Log.dbg("eva prefab part: {0}", prefabEvaPart); ProtoCrewMember protoCrew = FlightGlobals.ActiveVessel.GetVesselCrew() [0]; Log.dbg("proto crew: {0}", protoCrew); //kerbalExpressionSystem prefabExpr = prefabEva.GetComponent<kerbalExpressionSystem> (); Animator a = p.part.GetComponent <Animator> (); if (a == null) { Log.dbg("Creating Animator..."); Animator prefabAnim = prefabEvaPart.GetComponent <Animator> (); Log.dbg("animator prefab: {0}", dumper(prefabAnim)); a = p.part.gameObject.AddComponent <Animator> (); Log.dbg("animator component: {0}", dumper(a)); a.avatar = prefabAnim.avatar; a.runtimeAnimatorController = prefabAnim.runtimeAnimatorController; a.cullingMode = AnimatorCullingMode.CullUpdateTransforms; a.rootRotation = Quaternion.identity; a.applyRootMotion = false; //Animator.rootPosition = new Vector3(0.4f, 1.5f, 0.4f); //Animator.rootRotation = new Quaternion(-0.7f, 0.5f, -0.1f, -0.5f); } Log.dbg("Creating kerbalExpressionSystem..."); e = p.part.gameObject.AddComponent <kerbalExpressionSystem> (); e.evaPart = p.part; e.animator = a; e.protoCrewMember = protoCrew; Log.dbg("expression component: {0}", dumper(e)); } return(e); }
public override void OnStart(StartState state) { if (vessel.evaController == null) { Utils.LogError("null evaController! ABORT"); this.isEnabled = false; } foreach (var crew in vessel.GetVesselCrew()) { KerbalName = crew.name; this.crew = crew; } foreach (var system in Resources.FindObjectsOfTypeAll <kerbalExpressionSystem>()) { if (system.protoCrewMember == crew) { exSystem = system; Utils.Log("Found expressionSystem"); } } }