/// <summary> /// ActorConfig から Actor を生成します。 /// </summary> /// <param name="config">ActorConfig。</param> /// <returns>生成された Actor。</returns> /// <remarks> /// このメソッドでは Actor のインスタンス生成のみを担い、 /// プロパティの設定やコンテンツのロードは行いません。 /// </remarks> protected abstract Actor CreateActorInstance(ActorConfig config);
/// <summary> /// 生成された Actor を ActorConfig の設定に従って初期化します。 /// </summary> /// <param name="config">ActorConfig。</param> /// <param name="instance">Actor。</param> /// <remarks> /// このメソッドでは Actor へのプロパティの設定のみを担い、 /// コンテンのロードは行いません。 /// </remarks> protected virtual void InitializeActorProperties(Actor instance, ActorConfig config) { instance.Name = config.Name; instance.Position = config.Position; Matrix.CreateFromYawPitchRoll( config.Orientation.Y, config.Orientation.X, config.Orientation.Z, out instance.Orientation); Matrix.CreateScale(ref config.Scale, out instance.Scale); instance.Enabled = config.Enabled; instance.Visible = config.Visible; }
/// <summary> /// ActorConfig から Actor を生成します。 /// </summary> /// <param name="config">ActorConfig。</param> /// <returns>生成された Actor。</returns> /// <remarks> /// このメソッドは、以下の順序でメソッドを呼び出して Actor を生成します。 /// /// 1. CreateActorInstance /// 2. InitializeActorProperties /// /// </remarks> public virtual Actor CreateActor(ActorConfig config) { var instance = CreateActorInstance(config); InitializeActorProperties(instance, config); return instance; }