diff options
Diffstat (limited to 'WorldlineKeepers/Assets/Scripts/Unit/Characters/CharacterBuilder.cs')
-rw-r--r-- | WorldlineKeepers/Assets/Scripts/Unit/Characters/CharacterBuilder.cs | 29 |
1 files changed, 21 insertions, 8 deletions
diff --git a/WorldlineKeepers/Assets/Scripts/Unit/Characters/CharacterBuilder.cs b/WorldlineKeepers/Assets/Scripts/Unit/Characters/CharacterBuilder.cs index c51d565..3293db4 100644 --- a/WorldlineKeepers/Assets/Scripts/Unit/Characters/CharacterBuilder.cs +++ b/WorldlineKeepers/Assets/Scripts/Unit/Characters/CharacterBuilder.cs @@ -11,29 +11,42 @@ namespace WK protected GameObject m_Root; protected CharacterMetadata m_Metadata; - public GameObject Build(CharacterMetadata metadata) + public PlayerController Build(CharacterMetadata metadata) { m_Metadata = metadata; - m_Root = BuildPhaseRootGameObject(); + PlayerController controller = BuildPhase_Controller(); - return m_Root; + m_Root = BuildPhase_RootGameObject(); + controller.SetGameObject(m_Root); + + CharacterBehaviour behaviour = BuildPhase_Behaviour(); + controller.SetBehaviour(behaviour); + + return controller; } - protected virtual GameObject BuildPhaseRootGameObject() + protected virtual GameObject BuildPhase_RootGameObject() { GameObject go = new GameObject(); + TransformUtils.ResetLocal(go.transform); + go.name = m_Metadata.uid; + + GameObject prefab = ResourceManager.Instance.LoadAssetFullPath<GameObject>(m_Metadata.prefab); + GameObject model = GameObject.Instantiate<GameObject>(prefab); + model.transform.SetParent(go.transform); return go; } - protected virtual PlayerController BuildPhaseController() + protected virtual CharacterBehaviour BuildPhase_Behaviour() { - return null; + CharacterBehaviour behaviour = CommonFunction.CreateInstance(m_Metadata.behaviour) as CharacterBehaviour; + return behaviour; } - protected virtual void BuildPhaseSpriteRenderer() + protected virtual PlayerController BuildPhase_Controller() { - + return null; } } |