public override void JustDoIt(UndoRedoInfo info) { base.JustDoIt(info); switch (operation) { case OperationType.AddSceneObj: for (int i = 0; i < info.parma.Length; i++) { SceneObjectClass sceneObjectClass = info.parma[i] as SceneObjectClass; GameObjectPool.instance.InsertChild(sceneObjectClass.gameObject.name, sceneObjectClass.gameObject); } break; case OperationType.DeleteSceneObj: for (int i = 0; i < info.parma.Length; i++) { SceneObjectClass sceneObjectClass = info.parma[i] as SceneObjectClass; GameObjectPool.instance.RemoveTarge(sceneObjectClass.gameObject.name, sceneObjectClass.gameObject); sceneObjectClass.gameObject.SetActive(true); sceneObjectClass.Refresh(false); sceneObjectClass.cell.chunkParent.sceneObjectMgr.AddSceneObject(sceneObjectClass); } break; } }
//以地形块为主体的保存 public void Save(BinaryWriter writer) { int count = 0; foreach (Transform item in sceneObjectMgr.transform) { if (item.gameObject.activeSelf == true) { count++; } } writer.Write(count); foreach (Transform item in sceneObjectMgr.transform) { SceneObjectClass itemClass = null; if (item.gameObject.activeSelf == true) { itemClass = item.GetComponent <SceneObjectClass>(); writer.Write(int.Parse(itemClass.sceneObjectInfo.modelPathType)); writer.Write((double)itemClass.position.x); writer.Write((double)itemClass.position.y); writer.Write((double)itemClass.position.z); writer.Write((double)itemClass.rotation.x); writer.Write((double)itemClass.rotation.y); writer.Write((double)itemClass.rotation.z); writer.Write((double)itemClass.rotation.w); } } }
List <Vector2> pointList = new List <Vector2>(); //不规则六边形的边顶点 // List<List<Vector2>> edgePointList = new List<List<Vector2>>(); public SceneObjectClass Clone() { SceneObjectClass temp = new SceneObjectClass(); temp.position = position; temp.rotation = rotation; temp.modelName = modelName; return(temp); }
public bool isSame(SceneObjectClass other) { if (modelName == other.modelName && position == other.position && rotation == other.rotation) { return(true); } return(false); }
public void MinusSceneObject(SceneObjectClass item) { for (int i = sceneObjectList.Count - 1; i >= 0; i--) { if (ReferenceEquals(sceneObjectList[i], item)) { sceneObjectList.RemoveAt(i); break; } } GameObjectPool.instance.InsertChild(item.gameObject.name, item.gameObject); }
public void remindOriginList() { originList.Clear(); for (int i = 0; i < sceneObjectList.Count; i++) { if (sceneObjectList[i] != null) { SceneObjectClass temp = sceneObjectList[i].Clone(); originList.Add(temp); } } }
//以地形块为主体的加载 public List <SceneObjectClass> Load(BinaryReader reader) { int count = reader.ReadInt32(); Vector3 itemPosition; Quaternion itemRotaiton; int modelPathType; List <SceneObjectClass> sceneObjectClassList = new List <SceneObjectClass>(); for (int i = 0; i < count; i++) { SceneObjectClass itemClass = new SceneObjectClass(); itemClass.sceneObjectInfo = new SceneObjectInfo(); modelPathType = reader.ReadInt32(); itemClass.sceneObjectInfo.modelPathType = modelPathType.ToString(); itemClass.sceneObjectInfo.modelPath = FileManage.instance.CSVHashTable["sceneHashTable"][itemClass.sceneObjectInfo.modelPathType].ToString(); itemPosition = new Vector3((float)reader.ReadDouble(), (float)reader.ReadDouble(), (float)reader.ReadDouble()); itemRotaiton = new Quaternion((float)reader.ReadDouble(), (float)reader.ReadDouble(), (float)reader.ReadDouble(), (float)reader.ReadDouble()); itemClass.position = itemPosition; itemClass.rotation = itemRotaiton; sceneObjectClassList.Add(itemClass); } return(sceneObjectClassList); }
public void AddSceneObject(SceneObjectClass item) { sceneObjectList.Add(item); }