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");
                }
            }
        }
Пример #2
0
        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");
                }
            }
        }
Пример #3
0
        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);
        }
Пример #5
0
        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");
                }
            }
        }