private void SetActorPosition(Actor actor, ICharacterDescriptor desc) { Vector3 position = desc.StartupLocation; _engine.SetActorPosition(actor, position.x, position.y, position.z); _engine.clrdist(actor); }
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 }); }
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); }
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)); }
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}]"); } }