Пример #1
0
        public virtual void OnSpawn(IBodyOwner owner)
        {
            if (RootBodyPart == null || BaseBodyPart == null)
            {
                for (int i = 0; i < BodyParts.Count; i++)
                {
                    if (BodyParts [i].Type == BodyPartType.Hip)
                    {
                        RootBodyPart = BodyParts [i];
                    }
                    else if (BodyParts [i].Type == BodyPartType.Base)
                    {
                        BaseBodyPart = BodyParts [i];
                    }
                    if (RootBodyPart != null && BaseBodyPart != null)
                    {
                        break;
                    }
                }
            }

            Owner      = owner;
            owner.Body = this;
            SetVisible(true);
            IgnoreCollisions(false);
            Animator.enabled = true;
            enabled          = true;

            rb.MovePosition(Owner.Position);
            rb.MoveRotation(Owner.Rotation);
            SmoothPosition = Owner.Position;
            SmoothRotation = Owner.Rotation;

            HasSpawned = true;
        }
Пример #2
0
        public IEnumerator PlayCutsceneOverTime()
        {
            double start = Frontiers.WorldClock.AdjustedRealTime;

            while (Frontiers.WorldClock.AdjustedRealTime < start + State.InitialDelay)
            {
                yield return(null);
            }
            //get the creature body - we're only using a shell here
            CreatureBody     body     = null;
            CreatureTemplate template = null;
            AnimationClip    clip     = null;

            if (Creatures.GetBody(State.CreatureBodyName, out body))
            {
                if (Creatures.GetCutsceneClip(State.CutsceneClipName, out clip))
                {
                    //create the base object and add the animation
                    //parent it under this trigger
                    CreatureCutsceneObject    = gameObject.CreateChild(State.Name + " - " + State.CreatureBodyName).gameObject;
                    CreatureCutsceneAnimation = CreatureCutsceneObject.AddComponent <Animation>();
                    CreatureCutsceneAnimation.AddClip(clip, State.CutsceneClipName);
                    //this script will implement the IBodyOwner interface
                    UnityEngineInternal.APIUpdaterRuntimeServices.AddComponent(CreatureCutsceneObject, "Assets/Scripts/GameWorld/Triggers/TriggerCreatureCutscene.cs (46,11)", State.CutsceneScriptName);
                    IBodyOwner bodyOwner = CreatureCutsceneObject.GetComponent(typeof(IBodyOwner)) as IBodyOwner;
                    //create an empty body shell
                    GameObject creatureCutsceneBodyObject = GameObject.Instantiate(body.gameObject, transform.position, Quaternion.identity) as GameObject;
                    CreatureCutsceneBody       = creatureCutsceneBodyObject.GetComponent <CreatureBody>();
                    CreatureCutsceneBody.Owner = bodyOwner;
                    bodyOwner.Body             = CreatureCutsceneBody;
                    //and we're off!
                    CreatureCutsceneAnimation.Play(State.CutsceneClipName, PlayMode.StopAll);
                }
            }

            while (CreatureCutsceneObject != null)
            {
                yield return(null);
            }

            GameObject.Destroy(CreatureCutsceneBody.gameObject);

            mPlayingCutscene = false;

            Missions.Get.ChangeVariableValue(State.MissionVariableMissionName, State.MissionVariableVariableName, State.MissionVariableChangeValue, State.MissionVariableChangeType);

            yield break;
        }
Пример #3
0
 public override void OnSpawn(IBodyOwner owner)
 {
     base.OnSpawn(owner);
     SetVisible(true);
 }