コード例 #1
0
ファイル: CharacterBuilder.cs プロジェクト: ArtReeX/memoria
        private void SetActorPosition(Actor actor, ICharacterDescriptor desc)
        {
            Vector3 position = desc.StartupLocation;

            _engine.SetActorPosition(actor, position.x, position.y, position.z);
            _engine.clrdist(actor);
        }
コード例 #2
0
ファイル: CharacterBuilder.cs プロジェクト: ArtReeX/memoria
 private static Actor CreateActor(ICharacterDescriptor desc, Int32 characterId)
 {
     return(new Actor(characterId, characterId, EventEngine.sizeOfActor)
     {
         flags = (Byte)desc.ObjectFlags,
         actf = (UInt16)desc.ActorFlags,
         eye = desc.Eyes,
         collRad = desc.TrackingRadius,
         talkRad = desc.TalkingRadius,
         state = EventEngine.stateRunning,
         neckMyID = desc.NeckMyId,
         neckTargetID = desc.NeckTargetId
     });
 }
コード例 #3
0
ファイル: CharacterBuilder.cs プロジェクト: ArtReeX/memoria
        private void CreateModel(Actor actor, ICharacterDescriptor desc)
        {
            UInt16 modelId   = desc.Model;
            String modelName = FF9BattleDB.GEO.GetValue(modelId);

            GameObject modelObject = ModelFactory.CreateModel(modelName);

            modelObject.name = "obj" + actor.uid;

            actor.model = modelId;
            actor.go    = modelObject;
            GeoTexAnim.addTexAnim(actor.go, modelName);

            actor.meshIsRendering = CreateMeshRenderingState(modelObject);
        }
コード例 #4
0
ファイル: CharacterBuilder.cs プロジェクト: ArtReeX/memoria
        private void SetActorAnimation(Actor actor, ICharacterDescriptor desc)
        {
            CharacterAnimation animation = desc.GetAnimation();

            actor.idleSpeed = animation.IdleSpeed;
            actor.idle      = animation.Idle;
            actor.walk      = animation.Walk;
            actor.run       = animation.Run;
            actor.turnl     = animation.TurnLeft;
            actor.turnr     = animation.TurnRight;

            GameObject model = actor.go;

            AnimationFactory.AddAnimWithAnimatioName(model, FF9DBAll.AnimationDB.GetValue(actor.idle));
            AnimationFactory.AddAnimWithAnimatioName(model, FF9DBAll.AnimationDB.GetValue(actor.walk));
            AnimationFactory.AddAnimWithAnimatioName(model, FF9DBAll.AnimationDB.GetValue(actor.run));
            AnimationFactory.AddAnimWithAnimatioName(model, FF9DBAll.AnimationDB.GetValue(actor.turnl));
            AnimationFactory.AddAnimWithAnimatioName(model, FF9DBAll.AnimationDB.GetValue(actor.turnr));
        }
コード例 #5
0
ファイル: CharacterBuilder.cs プロジェクト: ArtReeX/memoria
        public void Spawn(ICharacterDescriptor desc)
        {
            try
            {
                Int32 characterId = CreateEmptyEntry();

                Actor actor = CreateActor(desc, characterId);
                CreateModel(actor, desc);
                CreateCharacter(actor);
                CreateState(actor);
                SetActorPosition(actor, desc);
                SetActorAnimation(actor, desc);
                SetActorRadius(actor);

                SpawnActor(actor);

                Log.Message($"The custom character [{desc.Name}] appeared.");
            }
            catch (Exception ex)
            {
                Log.Error(ex, $"Failed to spawn the custom character: [{desc?.Name}]");
            }
        }