Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using UnityEngine;
- using System.Collections;
- public class MissionTemplatesBase : MonoBehaviour {
- //This region contains a series of utility methods, to be called up above and down bellow.
- #region Utilities
- //This method grabs the prefab of a model, and returns it as a GameObject.
- private GameObject returnPrefabFromPath(string path)
- {
- return Resources.Load(path) as GameObject;
- }
- //This method instantiates a prefab with the GameObject as an argument. It returns the GameObject. It has an overloaded method without rotation and position.
- private GameObject instantiatePrefabFromGameObject(Vector3 position, Quaternion rotation, GameObject objectToInstantiate)
- {
- return ((GameObject)Instantiate(objectToInstantiate, position, rotation));
- }
- private GameObject instantiatePrefabFromGameObject(GameObject objectToInstantiate)
- {
- return ((GameObject)Instantiate(objectToInstantiate));
- }
- // This method instantiates a game object from a path argument. It returns the GameObject. It has an overloaded method without rotation and position.
- private GameObject instantiatePrefabFromPath(Vector3 position, Quaternion rotation, string path)
- {
- return instantiatePrefabFromGameObject(position, rotation, returnPrefabFromPath(path));
- }
- private GameObject instantiatePrefabFromPath(string path)
- {
- return instantiatePrefabFromGameObject(returnPrefabFromPath(path));
- }
- //This method grabs a material from a path and returns it.
- private Material returnMaterialFromPath(string path)
- {
- return Resources.Load<Material>(path);
- }
- //This method adds a material to a specific game object, with an overloaded method grabbing the material directly using a path.
- private void addMaterialToGameObject(Material material, GameObject gameObject)
- {
- if (gameObject.GetComponent<Renderer>() == null)
- {
- gameObject.AddComponent<MeshRenderer>();
- gameObject.GetComponent<Renderer>().sharedMaterial = material;
- }
- else
- {
- gameObject.GetComponent<Renderer>().sharedMaterial = material;
- }
- }
- private void addMaterialToGameObject(string materialPath, GameObject gameObject)
- {
- addMaterialToGameObject(returnMaterialFromPath(materialPath), gameObject);
- }
- //This method creates a parent-child relationship between two gameobjects
- private void setGameObjectParent(GameObject parent, GameObject child)
- {
- child.transform.parent = parent.transform;
- }
- //This method grabs the material from path, grabs the GameObject from path, and instantiates the object and returns its instance id.
- private GameObject setupActorModel(string materialPath, string gameObjectPath, Vector3 position, Quaternion rotation, GameObject parent)
- {
- GameObject cur_prefab = instantiatePrefabFromGameObject(position, rotation, returnPrefabFromPath(gameObjectPath));
- addMaterialToGameObject(materialPath, cur_prefab);
- setGameObjectParent(parent, cur_prefab);
- return cur_prefab;
- }
- #endregion
- //This region WILL contain stuff for AI calculations, but this isn't done yet!
- #region AI Stuffs
- #endregion
- //These methods are used for the actual creation of characters. Simply call these up above to make things happen!
- #region Actor Creation
- //This method makes a naked person, using the default constructor of Actor, at the given spawn object. Mostly used for bugtesting.
- public bool makeNaked(GameObject spawn)
- {
- Actor person = new Actor();
- if (person.getStatus())
- {
- //spawn the frame
- GameObject frame = instantiatePrefabFromGameObject(spawn.transform.position,spawn.transform.rotation, returnPrefabFromPath(BodyPart.bodyFrame()));
- //build the body
- setupActorModel(SkinMaterial.get(SkinColor.Caucasian()), BodyPart.Head(Gender.Male()), spawn.transform.position, spawn.transform.rotation, frame);
- setupActorModel(SkinMaterial.get(SkinColor.Caucasian()), BodyPart.Arms(Gender.Male()), spawn.transform.position, spawn.transform.rotation, frame);
- setupActorModel(SkinMaterial.get(SkinColor.Caucasian()), BodyPart.Ears(Gender.Male()), spawn.transform.position, spawn.transform.rotation, frame);
- setupActorModel(SkinMaterial.get(SkinColor.Caucasian()), BodyPart.Feet(Gender.Male()), spawn.transform.position, spawn.transform.rotation, frame);
- setupActorModel(SkinMaterial.get(SkinColor.Caucasian()), BodyPart.Legs(Gender.Male()), spawn.transform.position, spawn.transform.rotation, frame);
- setupActorModel(SkinMaterial.get(SkinColor.Caucasian()), BodyPart.Torso(Gender.Male()), spawn.transform.position, spawn.transform.rotation, frame);
- setupActorModel(SkinMaterial.get(SkinColor.Caucasian()), BodyPart.Hands(Gender.Male()), spawn.transform.position, spawn.transform.rotation, frame);
- setupActorModel(SkinMaterial.get(EyeColor.Brown()), BodyPart.Eyes(Gender.Male()), spawn.transform.position, spawn.transform.rotation, frame);
- setupActorModel(TongueMaterial.get(), BodyPart.Tongue(Gender.Male()), spawn.transform.position, spawn.transform.rotation, frame);
- //add components to frame
- frame.AddComponent<basicAIcontroller>();
- }
- else
- {
- Debug.Log("Creation of Naked Actor failed!");
- }
- return person.getStatus();
- }
- #endregion
- }
Advertisement
Add Comment
Please, Sign In to add comment