示例#1
0
        public override void Begin(ExecutionWorker worker)
        {
            base.Begin(worker);

            var ch = worker.Context.GetCharacter(CharId);

            if (ch == null)
            {
                return;
            }

            if (ChipId == 65535)
            {
                worker.Context.ResetCharacterChip(CharId);
            }
            else
            {
                if (ChipId >= worker.Context.Scenario.ChipInfo.Length)
                {
                    return;
                }

                var chip  = worker.Context.Scenario.ChipInfo[ChipId];
                var entry = worker.Context.ResourceLoader.FindByIndex(chip.ChipIndex);
                ch.Chip = worker.Context.ResourceLoader.LoadAnimation(entry);
            }
        }
示例#2
0
        public override void Begin(ExecutionWorker worker)
        {
            base.Begin(worker);

            var character = worker.Context.GetCharacter(CharId);

            if (character == null)
            {
                return;
            }

            _initialPosition = character.Position;

            var delta = TargetPosition - _initialPosition;

            var angle = (int)(Math.Atan2(delta.Z, delta.X) * 360 / (2 * Math.PI)) + 90;

            if (angle < 0)
            {
                angle += 360;
            }

            var rotation = ExecutionContext.DegreesToAnimationStart(angle);

            character.AnimationStart = rotation;
            character.AnimationStep  = 8;
        }
示例#3
0
        public override void End(ExecutionWorker worker)
        {
            base.End(worker);

            // Set target position
            var targetPosition = TargetPosition;

            worker.Context.Scene.Camera.SetLookAt(targetPosition);
        }
示例#4
0
        public override void Begin(ExecutionWorker worker)
        {
            base.Begin(worker);

            var ch = worker.Context.GetCharacter(CharId);

            if (ch == null)
            {
                return;
            }

            worker.Context.Scene.Camera.SetLookAt(ch.Position);
        }
示例#5
0
        public override void Update(ExecutionWorker worker)
        {
            base.Update(worker);

            var targetPosition = TargetPosition;

            var part        = worker.InstructionPassedPart;
            var newPosition = new Vector3(_initialPosition.X + (targetPosition.X - _initialPosition.X) * part,
                                          _initialPosition.Y + (targetPosition.Y - _initialPosition.Y) * part,
                                          _initialPosition.Z + (targetPosition.Z - _initialPosition.Z) * part);

            worker.Context.Scene.Camera.SetLookAt(newPosition);
        }
示例#6
0
        public override void Begin(ExecutionWorker worker)
        {
            base.Begin(worker);

            var ch = worker.Context.GetCharacter(CharId);

            if (ch == null)
            {
                return;
            }

            ch.AnimationStart = ChipId;
        }
示例#7
0
        public override void Begin(ExecutionWorker worker)
        {
            base.Begin(worker);

            var ch = worker.Context.GetCharacter(CharId);

            if (ch == null)
            {
                return;
            }

            ch.AnimationStart = ExecutionContext.DegreesToAnimationStart(Angle);
        }
示例#8
0
        public override void Begin(ExecutionWorker worker)
        {
            base.Begin(worker);

            foreach (var ins in Block)
            {
                ins.Queue = this;
            }

            var newWorker = new ExecutionWorker(worker.Context)
            {
                Instructions = Block
            };

            newWorker.Context.AdditionalWorkers.Add(newWorker);
        }
示例#9
0
        public override void Begin(ExecutionWorker worker)
        {
            base.Begin(worker);

            var target = ExecutionContext.ToPosition(X, Y, Z);

            var ch = worker.Context.GetCharacter(CharId);

            if (ch == null)
            {
                return;
            }

            ch.Position       = target;
            ch.AnimationStart = ExecutionContext.DegreesToAnimationStart(Angle);
            ch.AnimationStep  = 0;
        }
示例#10
0
        public override void Update(ExecutionWorker worker)
        {
            base.Update(worker);

            EnsureStringsInternal();

            var passed = worker.InstructionPassedInMs;
            var i      = 0;

            TalkString str;

            for (; i < TalkStrings.Length; ++i)
            {
                str = TalkStrings[i];
                var duration = CalculateStringDuration(str.Text);
                if (passed < duration)
                {
                    break;
                }

                passed -= duration;
            }

            if (i >= TalkStrings.Length)
            {
                return;
            }

            str = TalkStrings[i];
            if (str.PortraitId != null && str.Portrait == null)
            {
                str.Portrait = new TextureRegion(worker.Context.ResourceLoader.GetCharacterPortrait(str.PortraitId));
            }

            int symbolsCount = str.Text.Length;

            if (passed < symbolsCount * SymbolDurationInMs)
            {
                symbolsCount = passed / SymbolDurationInMs;
            }

            str.Name = CharName;

            worker.Context.Scene.ShowTalk(str, symbolsCount);
        }
示例#11
0
        public override void End(ExecutionWorker worker)
        {
            base.End(worker);

            var character = worker.Context.GetCharacter(CharId);

            if (character == null)
            {
                return;
            }

            // Set target position
            var targetPosition = TargetPosition;

            character.Position = targetPosition;
            worker.Context.Scene.Camera.SetLookAt(targetPosition);

            // End the movement animation
            character.AnimationStep = 0;
        }
示例#12
0
        public override void Update(ExecutionWorker worker)
        {
            base.Update(worker);

            var character = worker.Context.GetCharacter(CharId);

            if (character == null)
            {
                return;
            }

            var targetPosition = TargetPosition;

            var part        = worker.InstructionPassedPart;
            var newPosition = new Vector3(_initialPosition.X + (targetPosition.X - _initialPosition.X) * part,
                                          _initialPosition.Y + (targetPosition.Y - _initialPosition.Y) * part,
                                          _initialPosition.Z + (targetPosition.Z - _initialPosition.Z) * part);

            character.Position = newPosition;
            worker.Context.Scene.Camera.SetLookAt(newPosition);
        }
示例#13
0
文件: Fade.cs 项目: rds1983/OpenSora
        public override void Begin(ExecutionWorker worker)
        {
            base.Begin(worker);

            worker.Context.Scene.Opacity = 0;
        }
示例#14
0
文件: Fade.cs 项目: rds1983/OpenSora
        public override void Update(ExecutionWorker worker)
        {
            base.Update(worker);

            worker.Context.Scene.Opacity = worker.InstructionPassedPart;
        }
示例#15
0
        public override void Begin(ExecutionWorker worker)
        {
            base.Begin(worker);

            worker.Finished = true;
        }
示例#16
0
        public override void Begin(ExecutionWorker worker)
        {
            base.Begin(worker);

            _initialPosition = worker.Context.Scene.Camera.Position;
        }
示例#17
0
        public override void Begin(ExecutionWorker worker)
        {
            base.Begin(worker);

            worker.Context.Scene.CloseMessageWindow();
        }
示例#18
0
文件: Fade.cs 项目: rds1983/OpenSora
        public override void End(ExecutionWorker worker)
        {
            base.End(worker);

            worker.Context.Scene.Opacity = 1;
        }