/// <summary> /// Attempts to save the static reference of the controller /// </summary> static void Save() { // This can only be true if the editor is going into playmode if (!Application.isPlaying && EditorApplication.isPlayingOrWillChangePlaymode) { IOHandler.SaveController(); } }
/// <summary> /// Get all the data in this instance of the class /// </summary> /// <param name="parents">A list of the crowd source objects in the scene</param> /// <returns>The data in this instance of the class</returns> public GroupData GetData(List <GameObject> parents) { var _outData = new GroupData(); _outData._name = _groupName; // save crowd members if (_crowdMembers.Count > 0) { _outData._groupMembers = new MemberData[_crowdMembers.Count]; for (int i = 0; i < _crowdMembers.Count; i++) { var _member = _crowdMembers[i]; var _memberData = new MemberData(); _memberData.source = -1; for (int j = 0; j < parents.Count; j++) { if (_member.transform.parent.gameObject == parents[j]) { Debug.Log("found the source"); _memberData.source = j; break; } } _memberData._transform = IOHandler.GetTransformData(_member.transform); } } if (_models.Count > 0) { _outData._models = new ModelData[_models.Count]; for (int i = 0; i < _models.Count; i++) { for (int j = 0; j < _models[i]._LODLevel.Length; j++) { //_outData._models[i]._modelNames[j] = _models[i]._LODLevel[j]; // Resources.Lo } } } return(_outData); }
/// <summary> /// Constructs a new crowd group based on data /// </summary> /// <param name="data">group object data</param> /// <param name="sources">list of crowd sources in the scene</param> /// <param name="prefab">crowd member to generate group for</param> public CrowdGroup(GroupData data, List <GameObject> sources, GameObject prefab) { _groupName = data._name; _crowdMembers = new List <GameObject>(); _models = new List <ModelWrapper>(); //instantiate and initialise crowd members inside new group if (data._groupMembers != null) { for (int i = 0; i < data._groupMembers.Length; i++) { var _newMember = GameObject.Instantiate(prefab); var _memberData = data._groupMembers[i]; _newMember.transform.position = IOHandler.GetPosition(_memberData._transform); _newMember.transform.rotation = IOHandler.GetRotation(_memberData._transform); if (_memberData.source > 0 && _memberData.source < sources.Count) { _newMember.transform.parent = sources[_memberData.source].transform; } _crowdMembers.Add(_newMember); } } if (data._models != null) { // not complete for (int i = 0; i < data._models.Length; i++) { int _length = data._models[i]._modelNames.Length; var _models = new GameObject[_length]; for (int j = 0; j < _length; j++) { var _modelName = data._models[i]._modelNames[j]; //_models[i] = Resources.Load() } } } }
/// <summary> /// Function for when the editor saves /// </summary> /// <param name="paths"> array of asset information</param> /// <returns> the array of paths unmodified</returns> static string[] OnWillSaveAssets(string[] paths) { IOHandler.SaveController(); return(paths); }