public override void Save(BaseNetworkable.SaveInfo info) { base.Save(info); info.msg.ioEntity = (__Null)Pool.Get <IOEntity>(); ((IOEntity)info.msg.ioEntity).inputs = (__Null)Pool.GetList <IOEntity.IOConnection>(); ((IOEntity)info.msg.ioEntity).outputs = (__Null)Pool.GetList <IOEntity.IOConnection>(); foreach (IOEntity.IOSlot input in this.inputs) { IOEntity.IOConnection ioConnection = (IOEntity.IOConnection)Pool.Get <IOEntity.IOConnection>(); ioConnection.connectedID = (__Null)(int)input.connectedTo.entityRef.uid; ioConnection.connectedToSlot = (__Null)input.connectedToSlot; ioConnection.niceName = (__Null)input.niceName; ioConnection.type = (__Null)input.type; ioConnection.inUse = (__Null)(ioConnection.connectedID > 0 ? 1 : 0); ((List <IOEntity.IOConnection>)((IOEntity)info.msg.ioEntity).inputs).Add(ioConnection); } foreach (IOEntity.IOSlot output in this.outputs) { IOEntity.IOConnection ioConnection = (IOEntity.IOConnection)Pool.Get <IOEntity.IOConnection>(); ioConnection.connectedID = (__Null)(int)output.connectedTo.entityRef.uid; ioConnection.connectedToSlot = (__Null)output.connectedToSlot; ioConnection.niceName = (__Null)output.niceName; ioConnection.type = (__Null)output.type; ioConnection.inUse = (__Null)(ioConnection.connectedID > 0 ? 1 : 0); if (output.linePoints != null) { ioConnection.linePointList = (__Null)Pool.GetList <IOEntity.IOConnection.LineVec>(); ((List <IOEntity.IOConnection.LineVec>)ioConnection.linePointList).Clear(); foreach (Vector3 linePoint in output.linePoints) { IOEntity.IOConnection.LineVec lineVec = (IOEntity.IOConnection.LineVec)Pool.Get <IOEntity.IOConnection.LineVec>(); lineVec.vec = (__Null)linePoint; ((List <IOEntity.IOConnection.LineVec>)ioConnection.linePointList).Add(lineVec); } } ((List <IOEntity.IOConnection>)((IOEntity)info.msg.ioEntity).outputs).Add(ioConnection); } }
public override void Load(BaseNetworkable.LoadInfo info) { base.Load(info); if (info.msg.ioEntity == null) { return; } if (!info.fromDisk && ((IOEntity)info.msg.ioEntity).inputs != null) { int count = ((List <IOEntity.IOConnection>)((IOEntity)info.msg.ioEntity).inputs).Count; if (this.inputs.Length != count) { this.inputs = new IOEntity.IOSlot[count]; } for (int index = 0; index < count; ++index) { if (this.inputs[index] == null) { this.inputs[index] = new IOEntity.IOSlot(); } IOEntity.IOConnection input = ((List <IOEntity.IOConnection>)((IOEntity)info.msg.ioEntity).inputs)[index]; this.inputs[index].connectedTo = new IOEntity.IORef(); this.inputs[index].connectedTo.entityRef.uid = (uint)input.connectedID; if (this.isClient) { this.inputs[index].connectedTo.InitClient(); } this.inputs[index].connectedToSlot = (int)input.connectedToSlot; this.inputs[index].niceName = (string)input.niceName; this.inputs[index].type = (IOEntity.IOType)input.type; } } if (((IOEntity)info.msg.ioEntity).outputs == null) { return; } if (!info.fromDisk && this.isClient) { foreach (IOEntity.IOSlot output in this.outputs) { output.Clear(); } } int count1 = ((List <IOEntity.IOConnection>)((IOEntity)info.msg.ioEntity).outputs).Count; if (this.outputs.Length != count1 && count1 > 0) { IOEntity.IOSlot[] outputs = this.outputs; this.outputs = new IOEntity.IOSlot[count1]; for (int index = 0; index < outputs.Length; ++index) { if (index < count1) { this.outputs[index] = outputs[index]; } } } for (int index1 = 0; index1 < count1; ++index1) { if (this.outputs[index1] == null) { this.outputs[index1] = new IOEntity.IOSlot(); } IOEntity.IOConnection output = ((List <IOEntity.IOConnection>)((IOEntity)info.msg.ioEntity).outputs)[index1]; this.outputs[index1].connectedTo = new IOEntity.IORef(); this.outputs[index1].connectedTo.entityRef.uid = (uint)output.connectedID; if (this.isClient) { this.outputs[index1].connectedTo.InitClient(); } this.outputs[index1].connectedToSlot = (int)output.connectedToSlot; this.outputs[index1].niceName = (string)output.niceName; this.outputs[index1].type = (IOEntity.IOType)output.type; if (info.fromDisk || this.isClient) { List <IOEntity.IOConnection.LineVec> linePointList = (List <IOEntity.IOConnection.LineVec>)output.linePointList; if (this.outputs[index1].linePoints == null || this.outputs[index1].linePoints.Length != linePointList.Count) { this.outputs[index1].linePoints = new Vector3[linePointList.Count]; } for (int index2 = 0; index2 < linePointList.Count; ++index2) { this.outputs[index1].linePoints[index2] = (Vector3)linePointList[index2].vec; } } } }