public override void Save(SaveInfo info) { base.Save(info); info.msg.ioEntity = Facepunch.Pool.Get <ProtoBuf.IOEntity>(); info.msg.ioEntity.inputs = Facepunch.Pool.GetList <ProtoBuf.IOEntity.IOConnection>(); info.msg.ioEntity.outputs = Facepunch.Pool.GetList <ProtoBuf.IOEntity.IOConnection>(); IOSlot[] array = inputs; foreach (IOSlot iOSlot in array) { ProtoBuf.IOEntity.IOConnection iOConnection = Facepunch.Pool.Get <ProtoBuf.IOEntity.IOConnection>(); iOConnection.connectedID = iOSlot.connectedTo.entityRef.uid; iOConnection.connectedToSlot = iOSlot.connectedToSlot; iOConnection.niceName = iOSlot.niceName; iOConnection.type = (int)iOSlot.type; iOConnection.inUse = iOConnection.connectedID != 0; iOConnection.colour = (int)iOSlot.wireColour; info.msg.ioEntity.inputs.Add(iOConnection); } array = outputs; foreach (IOSlot iOSlot2 in array) { ProtoBuf.IOEntity.IOConnection iOConnection2 = Facepunch.Pool.Get <ProtoBuf.IOEntity.IOConnection>(); iOConnection2.connectedID = iOSlot2.connectedTo.entityRef.uid; iOConnection2.connectedToSlot = iOSlot2.connectedToSlot; iOConnection2.niceName = iOSlot2.niceName; iOConnection2.type = (int)iOSlot2.type; iOConnection2.inUse = iOConnection2.connectedID != 0; iOConnection2.colour = (int)iOSlot2.wireColour; if (iOSlot2.linePoints != null) { iOConnection2.linePointList = Facepunch.Pool.GetList <ProtoBuf.IOEntity.IOConnection.LineVec>(); iOConnection2.linePointList.Clear(); for (int j = 0; j < iOSlot2.linePoints.Length; j++) { Vector3 vector = iOSlot2.linePoints[j]; ProtoBuf.IOEntity.IOConnection.LineVec lineVec = Facepunch.Pool.Get <ProtoBuf.IOEntity.IOConnection.LineVec>(); lineVec.vec = vector; if (iOSlot2.slackLevels.Length > j) { lineVec.vec.w = iOSlot2.slackLevels[j]; } iOConnection2.linePointList.Add(lineVec); } } info.msg.ioEntity.outputs.Add(iOConnection2); } }
public override void Save(BaseNetworkable.SaveInfo info) { int i; base.Save(info); info.msg.ioEntity = Facepunch.Pool.Get <ProtoBuf.IOEntity>(); info.msg.ioEntity.inputs = Facepunch.Pool.GetList <ProtoBuf.IOEntity.IOConnection>(); info.msg.ioEntity.outputs = Facepunch.Pool.GetList <ProtoBuf.IOEntity.IOConnection>(); IOEntity.IOSlot[] oSlotArray = this.inputs; for (i = 0; i < (int)oSlotArray.Length; i++) { IOEntity.IOSlot oSlot = oSlotArray[i]; ProtoBuf.IOEntity.IOConnection oConnection = Facepunch.Pool.Get <ProtoBuf.IOEntity.IOConnection>(); oConnection.connectedID = oSlot.connectedTo.entityRef.uid; oConnection.connectedToSlot = oSlot.connectedToSlot; oConnection.niceName = oSlot.niceName; oConnection.type = (int)oSlot.type; oConnection.inUse = oConnection.connectedID != 0; info.msg.ioEntity.inputs.Add(oConnection); } oSlotArray = this.outputs; for (i = 0; i < (int)oSlotArray.Length; i++) { IOEntity.IOSlot oSlot1 = oSlotArray[i]; ProtoBuf.IOEntity.IOConnection list = Facepunch.Pool.Get <ProtoBuf.IOEntity.IOConnection>(); list.connectedID = oSlot1.connectedTo.entityRef.uid; list.connectedToSlot = oSlot1.connectedToSlot; list.niceName = oSlot1.niceName; list.type = (int)oSlot1.type; list.inUse = list.connectedID != 0; if (oSlot1.linePoints != null) { list.linePointList = Facepunch.Pool.GetList <ProtoBuf.IOEntity.IOConnection.LineVec>(); list.linePointList.Clear(); Vector3[] vector3Array = oSlot1.linePoints; for (int j = 0; j < (int)vector3Array.Length; j++) { Vector3 vector3 = vector3Array[j]; ProtoBuf.IOEntity.IOConnection.LineVec lineVec = Facepunch.Pool.Get <ProtoBuf.IOEntity.IOConnection.LineVec>(); lineVec.vec = vector3; list.linePointList.Add(lineVec); } } info.msg.ioEntity.outputs.Add(list); } }
public override void Load(LoadInfo info) { base.Load(info); if (info.msg.ioEntity == null) { return; } if (!info.fromDisk && info.msg.ioEntity.inputs != null) { int count = info.msg.ioEntity.inputs.Count; if (inputs.Length != count) { inputs = new IOSlot[count]; } for (int i = 0; i < count; i++) { if (inputs[i] == null) { inputs[i] = new IOSlot(); } ProtoBuf.IOEntity.IOConnection iOConnection = info.msg.ioEntity.inputs[i]; inputs[i].connectedTo = new IORef(); inputs[i].connectedTo.entityRef.uid = iOConnection.connectedID; if (base.isClient) { inputs[i].connectedTo.InitClient(); } inputs[i].connectedToSlot = iOConnection.connectedToSlot; inputs[i].niceName = iOConnection.niceName; inputs[i].type = (IOType)iOConnection.type; inputs[i].wireColour = (WireTool.WireColour)iOConnection.colour; } } if (info.msg.ioEntity.outputs == null) { return; } if (!info.fromDisk && base.isClient) { IOSlot[] array = outputs; for (int j = 0; j < array.Length; j++) { array[j].Clear(); } } int count2 = info.msg.ioEntity.outputs.Count; IOSlot[] array2 = null; if (outputs.Length != count2 && count2 > 0) { array2 = outputs; outputs = new IOSlot[count2]; for (int k = 0; k < array2.Length; k++) { if (k < count2) { outputs[k] = array2[k]; } } } for (int l = 0; l < count2; l++) { if (outputs[l] == null) { outputs[l] = new IOSlot(); } ProtoBuf.IOEntity.IOConnection iOConnection2 = info.msg.ioEntity.outputs[l]; outputs[l].connectedTo = new IORef(); outputs[l].connectedTo.entityRef.uid = iOConnection2.connectedID; if (base.isClient) { outputs[l].connectedTo.InitClient(); } outputs[l].connectedToSlot = iOConnection2.connectedToSlot; outputs[l].niceName = iOConnection2.niceName; outputs[l].type = (IOType)iOConnection2.type; outputs[l].wireColour = (WireTool.WireColour)iOConnection2.colour; if (info.fromDisk || base.isClient) { List <ProtoBuf.IOEntity.IOConnection.LineVec> linePointList = iOConnection2.linePointList; if (outputs[l].linePoints == null || outputs[l].linePoints.Length != linePointList.Count) { outputs[l].linePoints = new Vector3[linePointList.Count]; } if (outputs[l].slackLevels == null || outputs[l].slackLevels.Length != linePointList.Count) { outputs[l].slackLevels = new float[linePointList.Count]; } for (int m = 0; m < linePointList.Count; m++) { outputs[l].linePoints[m] = linePointList[m].vec; outputs[l].slackLevels[m] = linePointList[m].vec.w; } } } }
public override void Load(BaseNetworkable.LoadInfo info) { base.Load(info); if (info.msg.ioEntity == null) { return; } if (!info.fromDisk && info.msg.ioEntity.inputs != null) { int count = info.msg.ioEntity.inputs.Count; if ((int)this.inputs.Length != count) { this.inputs = new IOEntity.IOSlot[count]; } for (int i = 0; i < count; i++) { if (this.inputs[i] == null) { this.inputs[i] = new IOEntity.IOSlot(); } ProtoBuf.IOEntity.IOConnection item = info.msg.ioEntity.inputs[i]; this.inputs[i].connectedTo = new IOEntity.IORef(); this.inputs[i].connectedTo.entityRef.uid = item.connectedID; if (base.isClient) { this.inputs[i].connectedTo.InitClient(); } this.inputs[i].connectedToSlot = item.connectedToSlot; this.inputs[i].niceName = item.niceName; this.inputs[i].type = (IOEntity.IOType)item.type; } } if (info.msg.ioEntity.outputs != null) { if (!info.fromDisk && base.isClient) { IOEntity.IOSlot[] oSlotArray = this.outputs; for (int j = 0; j < (int)oSlotArray.Length; j++) { oSlotArray[j].Clear(); } } int num = info.msg.ioEntity.outputs.Count; IOEntity.IOSlot[] oSlotArray1 = null; if ((int)this.outputs.Length != num && num > 0) { oSlotArray1 = this.outputs; this.outputs = new IOEntity.IOSlot[num]; for (int k = 0; k < (int)oSlotArray1.Length; k++) { if (k < num) { this.outputs[k] = oSlotArray1[k]; } } } for (int l = 0; l < num; l++) { if (this.outputs[l] == null) { this.outputs[l] = new IOEntity.IOSlot(); } ProtoBuf.IOEntity.IOConnection oConnection = info.msg.ioEntity.outputs[l]; this.outputs[l].connectedTo = new IOEntity.IORef(); this.outputs[l].connectedTo.entityRef.uid = oConnection.connectedID; if (base.isClient) { this.outputs[l].connectedTo.InitClient(); } this.outputs[l].connectedToSlot = oConnection.connectedToSlot; this.outputs[l].niceName = oConnection.niceName; this.outputs[l].type = (IOEntity.IOType)oConnection.type; if (info.fromDisk || base.isClient) { List <ProtoBuf.IOEntity.IOConnection.LineVec> lineVecs = oConnection.linePointList; if (this.outputs[l].linePoints == null || (int)this.outputs[l].linePoints.Length != lineVecs.Count) { this.outputs[l].linePoints = new Vector3[lineVecs.Count]; } for (int m = 0; m < lineVecs.Count; m++) { this.outputs[l].linePoints[m] = lineVecs[m].vec; } } } } }