diff options
author | sacha | 2010-08-07 21:05:18 +0000 |
---|---|---|
committer | sacha | 2010-08-07 21:05:18 +0000 |
commit | 4900d39b7d86cdeb511c15f64dd691aaf04227eb (patch) | |
tree | 17401ec9523245c05e41d012ec21c471d0576ac6 | |
parent | removing more stains ... (diff) | |
parent | Fix the distance from which autopilot is negated when sitting on an unscripte... (diff) | |
download | opensim-SC_OLD-4900d39b7d86cdeb511c15f64dd691aaf04227eb.zip opensim-SC_OLD-4900d39b7d86cdeb511c15f64dd691aaf04227eb.tar.gz opensim-SC_OLD-4900d39b7d86cdeb511c15f64dd691aaf04227eb.tar.bz2 opensim-SC_OLD-4900d39b7d86cdeb511c15f64dd691aaf04227eb.tar.xz |
Merge branch 'careminster-presence-refactor' of ssh://3dhosting.de/var/git/careminster into careminster-presence-refactor
-rw-r--r-- | OpenSim/Region/ClientStack/LindenUDP/UnackedPacketCollection.cs | 353 | ||||
-rw-r--r-- | OpenSim/Region/CoreModules/Avatar/Dialog/DialogModule.cs | 443 | ||||
-rw-r--r-- | OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs | 7 | ||||
-rw-r--r-- | OpenSim/Region/Framework/Scenes/SceneObjectPart.cs | 4 | ||||
-rw-r--r-- | OpenSim/Region/Framework/Scenes/ScenePresence.cs | 8658 | ||||
-rw-r--r-- | OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Constants.cs | 1 | ||||
-rw-r--r-- | bin/ICSharpCode.SharpZipLib.xml | 9055 | ||||
-rw-r--r-- | bin/hdfsdll.dll.config | 3 | ||||
-rwxr-xr-x | bin/hdfsdll.so | bin | 6557 -> 0 bytes | |||
-rwxr-xr-x | bin/xmrhelpers.so | bin | 18357 -> 0 bytes |
10 files changed, 4745 insertions, 13779 deletions
diff --git a/OpenSim/Region/ClientStack/LindenUDP/UnackedPacketCollection.cs b/OpenSim/Region/ClientStack/LindenUDP/UnackedPacketCollection.cs index e43f7cf..c120a12 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/UnackedPacketCollection.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/UnackedPacketCollection.cs | |||
@@ -1,169 +1,184 @@ | |||
1 | /* | 1 | /* |
2 | * Copyright (c) Contributors, http://opensimulator.org/ | 2 | * Copyright (c) Contributors, http://opensimulator.org/ |
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | 3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. |
4 | * | 4 | * |
5 | * Redistribution and use in source and binary forms, with or without | 5 | * Redistribution and use in source and binary forms, with or without |
6 | * modification, are permitted provided that the following conditions are met: | 6 | * modification, are permitted provided that the following conditions are met: |
7 | * * Redistributions of source code must retain the above copyright | 7 | * * Redistributions of source code must retain the above copyright |
8 | * notice, this list of conditions and the following disclaimer. | 8 | * notice, this list of conditions and the following disclaimer. |
9 | * * Redistributions in binary form must reproduce the above copyright | 9 | * * Redistributions in binary form must reproduce the above copyright |
10 | * notice, this list of conditions and the following disclaimer in the | 10 | * notice, this list of conditions and the following disclaimer in the |
11 | * documentation and/or other materials provided with the distribution. | 11 | * documentation and/or other materials provided with the distribution. |
12 | * * Neither the name of the OpenSimulator Project nor the | 12 | * * Neither the name of the OpenSimulator Project nor the |
13 | * names of its contributors may be used to endorse or promote products | 13 | * names of its contributors may be used to endorse or promote products |
14 | * derived from this software without specific prior written permission. | 14 | * derived from this software without specific prior written permission. |
15 | * | 15 | * |
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY | 16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY |
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | 17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | 18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE |
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | 19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY |
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | 20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES |
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | 21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; |
22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | 22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND |
23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | 23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | 24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS |
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
26 | */ | 26 | */ |
27 | 27 | ||
28 | using System; | 28 | using System; |
29 | using System.Collections.Generic; | 29 | using System.Collections.Generic; |
30 | using System.Net; | 30 | using System.Net; |
31 | using OpenMetaverse; | 31 | using OpenMetaverse; |
32 | 32 | ||
33 | namespace OpenSim.Region.ClientStack.LindenUDP | 33 | namespace OpenSim.Region.ClientStack.LindenUDP |
34 | { | 34 | { |
35 | /// <summary> | 35 | /// <summary> |
36 | /// Special collection that is optimized for tracking unacknowledged packets | 36 | /// Special collection that is optimized for tracking unacknowledged packets |
37 | /// </summary> | 37 | /// </summary> |
38 | public sealed class UnackedPacketCollection | 38 | public sealed class UnackedPacketCollection |
39 | { | 39 | { |
40 | /// <summary> | 40 | /// <summary> |
41 | /// Holds information about a pending acknowledgement | 41 | /// Holds information about a pending acknowledgement |
42 | /// </summary> | 42 | /// </summary> |
43 | private struct PendingAck | 43 | private struct PendingAck |
44 | { | 44 | { |
45 | /// <summary>Sequence number of the packet to remove</summary> | 45 | /// <summary>Sequence number of the packet to remove</summary> |
46 | public uint SequenceNumber; | 46 | public uint SequenceNumber; |
47 | /// <summary>Environment.TickCount value when the remove was queued. | 47 | /// <summary>Environment.TickCount value when the remove was queued. |
48 | /// This is used to update round-trip times for packets</summary> | 48 | /// This is used to update round-trip times for packets</summary> |
49 | public int RemoveTime; | 49 | public int RemoveTime; |
50 | /// <summary>Whether or not this acknowledgement was attached to a | 50 | /// <summary>Whether or not this acknowledgement was attached to a |
51 | /// resent packet. If so, round-trip time will not be calculated</summary> | 51 | /// resent packet. If so, round-trip time will not be calculated</summary> |
52 | public bool FromResend; | 52 | public bool FromResend; |
53 | 53 | ||
54 | public PendingAck(uint sequenceNumber, int currentTime, bool fromResend) | 54 | public PendingAck(uint sequenceNumber, int currentTime, bool fromResend) |
55 | { | 55 | { |
56 | SequenceNumber = sequenceNumber; | 56 | SequenceNumber = sequenceNumber; |
57 | RemoveTime = currentTime; | 57 | RemoveTime = currentTime; |
58 | FromResend = fromResend; | 58 | FromResend = fromResend; |
59 | } | 59 | } |
60 | } | 60 | } |
61 | 61 | ||
62 | /// <summary>Holds the actual unacked packet data, sorted by sequence number</summary> | 62 | /// <summary>Holds the actual unacked packet data, sorted by sequence number</summary> |
63 | private Dictionary<uint, OutgoingPacket> m_packets = new Dictionary<uint, OutgoingPacket>(); | 63 | private Dictionary<uint, OutgoingPacket> m_packets = new Dictionary<uint, OutgoingPacket>(); |
64 | /// <summary>Holds packets that need to be added to the unacknowledged list</summary> | 64 | /// <summary>Holds packets that need to be added to the unacknowledged list</summary> |
65 | private LocklessQueue<OutgoingPacket> m_pendingAdds = new LocklessQueue<OutgoingPacket>(); | 65 | private LocklessQueue<OutgoingPacket> m_pendingAdds = new LocklessQueue<OutgoingPacket>(); |
66 | /// <summary>Holds information about pending acknowledgements</summary> | 66 | /// <summary>Holds information about pending acknowledgements</summary> |
67 | private LocklessQueue<PendingAck> m_pendingRemoves = new LocklessQueue<PendingAck>(); | 67 | private LocklessQueue<PendingAck> m_pendingRemoves = new LocklessQueue<PendingAck>(); |
68 | 68 | ||
69 | /// <summary> | 69 | /// <summary> |
70 | /// Add an unacked packet to the collection | 70 | /// Add an unacked packet to the collection |
71 | /// </summary> | 71 | /// </summary> |
72 | /// <param name="packet">Packet that is awaiting acknowledgement</param> | 72 | /// <param name="packet">Packet that is awaiting acknowledgement</param> |
73 | /// <returns>True if the packet was successfully added, false if the | 73 | /// <returns>True if the packet was successfully added, false if the |
74 | /// packet already existed in the collection</returns> | 74 | /// packet already existed in the collection</returns> |
75 | /// <remarks>This does not immediately add the ACK to the collection, | 75 | /// <remarks>This does not immediately add the ACK to the collection, |
76 | /// it only queues it so it can be added in a thread-safe way later</remarks> | 76 | /// it only queues it so it can be added in a thread-safe way later</remarks> |
77 | public void Add(OutgoingPacket packet) | 77 | public void Add(OutgoingPacket packet) |
78 | { | 78 | { |
79 | m_pendingAdds.Enqueue(packet); | 79 | m_pendingAdds.Enqueue(packet); |
80 | } | 80 | } |
81 | 81 | ||
82 | /// <summary> | 82 | /// <summary> |
83 | /// Marks a packet as acknowledged | 83 | /// Marks a packet as acknowledged |
84 | /// </summary> | 84 | /// </summary> |
85 | /// <param name="sequenceNumber">Sequence number of the packet to | 85 | /// <param name="sequenceNumber">Sequence number of the packet to |
86 | /// acknowledge</param> | 86 | /// acknowledge</param> |
87 | /// <param name="currentTime">Current value of Environment.TickCount</param> | 87 | /// <param name="currentTime">Current value of Environment.TickCount</param> |
88 | /// <remarks>This does not immediately acknowledge the packet, it only | 88 | /// <remarks>This does not immediately acknowledge the packet, it only |
89 | /// queues the ack so it can be handled in a thread-safe way later</remarks> | 89 | /// queues the ack so it can be handled in a thread-safe way later</remarks> |
90 | public void Remove(uint sequenceNumber, int currentTime, bool fromResend) | 90 | public void Remove(uint sequenceNumber, int currentTime, bool fromResend) |
91 | { | 91 | { |
92 | m_pendingRemoves.Enqueue(new PendingAck(sequenceNumber, currentTime, fromResend)); | 92 | m_pendingRemoves.Enqueue(new PendingAck(sequenceNumber, currentTime, fromResend)); |
93 | } | 93 | } |
94 | 94 | ||
95 | /// <summary> | 95 | /// <summary> |
96 | /// Returns a list of all of the packets with a TickCount older than | 96 | /// Returns a list of all of the packets with a TickCount older than |
97 | /// the specified timeout | 97 | /// the specified timeout |
98 | /// </summary> | 98 | /// </summary> |
99 | /// <param name="timeoutMS">Number of ticks (milliseconds) before a | 99 | /// <param name="timeoutMS">Number of ticks (milliseconds) before a |
100 | /// packet is considered expired</param> | 100 | /// packet is considered expired</param> |
101 | /// <returns>A list of all expired packets according to the given | 101 | /// <returns>A list of all expired packets according to the given |
102 | /// expiration timeout</returns> | 102 | /// expiration timeout</returns> |
103 | /// <remarks>This function is not thread safe, and cannot be called | 103 | /// <remarks>This function is not thread safe, and cannot be called |
104 | /// multiple times concurrently</remarks> | 104 | /// multiple times concurrently</remarks> |
105 | public List<OutgoingPacket> GetExpiredPackets(int timeoutMS) | 105 | public List<OutgoingPacket> GetExpiredPackets(int timeoutMS) |
106 | { | 106 | { |
107 | ProcessQueues(); | 107 | ProcessQueues(); |
108 | 108 | ||
109 | List<OutgoingPacket> expiredPackets = null; | 109 | List<OutgoingPacket> expiredPackets = null; |
110 | 110 | ||
111 | if (m_packets.Count > 0) | 111 | if (m_packets.Count > 0) |
112 | { | 112 | { |
113 | int now = Environment.TickCount & Int32.MaxValue; | 113 | int now = Environment.TickCount & Int32.MaxValue; |
114 | 114 | ||
115 | foreach (OutgoingPacket packet in m_packets.Values) | 115 | foreach (OutgoingPacket packet in m_packets.Values) |
116 | { | 116 | { |
117 | // TickCount of zero means a packet is in the resend queue | 117 | // TickCount of zero means a packet is in the resend queue |
118 | // but hasn't actually been sent over the wire yet | 118 | // but hasn't actually been sent over the wire yet |
119 | if (packet.TickCount == 0) | 119 | if (packet.TickCount == 0) |
120 | continue; | 120 | continue; |
121 | 121 | ||
122 | if (now - packet.TickCount >= timeoutMS) | 122 | if (now - packet.TickCount >= timeoutMS) |
123 | { | 123 | { |
124 | if (expiredPackets == null) | 124 | if (expiredPackets == null) |
125 | expiredPackets = new List<OutgoingPacket>(); | 125 | expiredPackets = new List<OutgoingPacket>(); |
126 | 126 | ||
127 | // The TickCount will be set to the current time when the packet | 127 | // The TickCount will be set to the current time when the packet |
128 | // is actually sent out again | 128 | // is actually sent out again |
129 | packet.TickCount = 0; | 129 | packet.TickCount = 0; |
130 | 130 | ||
131 | expiredPackets.Add(packet); | 131 | expiredPackets.Add(packet); |
132 | } | 132 | } |
133 | } | 133 | } |
134 | } | 134 | } |
135 | 135 | ||
136 | return expiredPackets; | 136 | return expiredPackets; |
137 | } | 137 | } |
138 | 138 | ||
139 | private void ProcessQueues() | 139 | private void ProcessQueues() |
140 | { | 140 | { |
141 | // Process all the pending adds | 141 | // Process all the pending adds |
142 | OutgoingPacket pendingAdd; | 142 | |
143 | while (m_pendingAdds.Dequeue(out pendingAdd)) | 143 | OutgoingPacket pendingAdd; |
144 | m_packets[pendingAdd.SequenceNumber] = pendingAdd; | 144 | if (m_pendingAdds != null) |
145 | 145 | { | |
146 | // Process all the pending removes, including updating statistics and round-trip times | 146 | while (m_pendingAdds.Dequeue(out pendingAdd)) |
147 | PendingAck pendingRemove; | 147 | { |
148 | OutgoingPacket ackedPacket; | 148 | if (pendingAdd != null && m_packets != null) |
149 | while (m_pendingRemoves.Dequeue(out pendingRemove)) | 149 | { |
150 | { | 150 | m_packets[pendingAdd.SequenceNumber] = pendingAdd; |
151 | if (m_packets.TryGetValue(pendingRemove.SequenceNumber, out ackedPacket)) | 151 | } |
152 | { | 152 | } |
153 | m_packets.Remove(pendingRemove.SequenceNumber); | 153 | } |
154 | 154 | ||
155 | // Update stats | 155 | // Process all the pending removes, including updating statistics and round-trip times |
156 | System.Threading.Interlocked.Add(ref ackedPacket.Client.UnackedBytes, -ackedPacket.Buffer.DataLength); | 156 | PendingAck pendingRemove; |
157 | 157 | OutgoingPacket ackedPacket; | |
158 | if (!pendingRemove.FromResend) | 158 | if (m_pendingRemoves != null) |
159 | { | 159 | { |
160 | // Calculate the round-trip time for this packet and its ACK | 160 | while (m_pendingRemoves.Dequeue(out pendingRemove)) |
161 | int rtt = pendingRemove.RemoveTime - ackedPacket.TickCount; | 161 | { |
162 | if (rtt > 0) | 162 | if (m_pendingRemoves != null && m_packets != null) |
163 | ackedPacket.Client.UpdateRoundTrip(rtt); | 163 | { |
164 | } | 164 | if (m_packets.TryGetValue(pendingRemove.SequenceNumber, out ackedPacket)) |
165 | } | 165 | { |
166 | } | 166 | m_packets.Remove(pendingRemove.SequenceNumber); |
167 | } | 167 | |
168 | } | 168 | // Update stats |
169 | } | 169 | System.Threading.Interlocked.Add(ref ackedPacket.Client.UnackedBytes, -ackedPacket.Buffer.DataLength); |
170 | |||
171 | if (!pendingRemove.FromResend) | ||
172 | { | ||
173 | // Calculate the round-trip time for this packet and its ACK | ||
174 | int rtt = pendingRemove.RemoveTime - ackedPacket.TickCount; | ||
175 | if (rtt > 0) | ||
176 | ackedPacket.Client.UpdateRoundTrip(rtt); | ||
177 | } | ||
178 | } | ||
179 | } | ||
180 | } | ||
181 | } | ||
182 | } | ||
183 | } | ||
184 | } | ||
diff --git a/OpenSim/Region/CoreModules/Avatar/Dialog/DialogModule.cs b/OpenSim/Region/CoreModules/Avatar/Dialog/DialogModule.cs index fb0bd1a..1498dba 100644 --- a/OpenSim/Region/CoreModules/Avatar/Dialog/DialogModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/Dialog/DialogModule.cs | |||
@@ -1,220 +1,223 @@ | |||
1 | /* | 1 | /* |
2 | * Copyright (c) Contributors, http://opensimulator.org/ | 2 | * Copyright (c) Contributors, http://opensimulator.org/ |
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | 3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. |
4 | * | 4 | * |
5 | * Redistribution and use in source and binary forms, with or without | 5 | * Redistribution and use in source and binary forms, with or without |
6 | * modification, are permitted provided that the following conditions are met: | 6 | * modification, are permitted provided that the following conditions are met: |
7 | * * Redistributions of source code must retain the above copyright | 7 | * * Redistributions of source code must retain the above copyright |
8 | * notice, this list of conditions and the following disclaimer. | 8 | * notice, this list of conditions and the following disclaimer. |
9 | * * Redistributions in binary form must reproduce the above copyright | 9 | * * Redistributions in binary form must reproduce the above copyright |
10 | * notice, this list of conditions and the following disclaimer in the | 10 | * notice, this list of conditions and the following disclaimer in the |
11 | * documentation and/or other materials provided with the distribution. | 11 | * documentation and/or other materials provided with the distribution. |
12 | * * Neither the name of the OpenSimulator Project nor the | 12 | * * Neither the name of the OpenSimulator Project nor the |
13 | * names of its contributors may be used to endorse or promote products | 13 | * names of its contributors may be used to endorse or promote products |
14 | * derived from this software without specific prior written permission. | 14 | * derived from this software without specific prior written permission. |
15 | * | 15 | * |
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY | 16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY |
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | 17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | 18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE |
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | 19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY |
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | 20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES |
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | 21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; |
22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | 22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND |
23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | 23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | 24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS |
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
26 | */ | 26 | */ |
27 | 27 | ||
28 | using System; | 28 | using System; |
29 | using System.Collections.Generic; | 29 | using System.Collections.Generic; |
30 | using System.Reflection; | 30 | using System.Reflection; |
31 | using log4net; | 31 | using log4net; |
32 | using Nini.Config; | 32 | using Nini.Config; |
33 | using OpenMetaverse; | 33 | using OpenMetaverse; |
34 | using OpenSim.Framework; | 34 | using OpenSim.Framework; |
35 | 35 | ||
36 | using OpenSim.Region.Framework.Interfaces; | 36 | using OpenSim.Region.Framework.Interfaces; |
37 | using OpenSim.Region.Framework.Scenes; | 37 | using OpenSim.Region.Framework.Scenes; |
38 | using OpenSim.Services.Interfaces; | 38 | using OpenSim.Services.Interfaces; |
39 | 39 | ||
40 | namespace OpenSim.Region.CoreModules.Avatar.Dialog | 40 | namespace OpenSim.Region.CoreModules.Avatar.Dialog |
41 | { | 41 | { |
42 | public class DialogModule : IRegionModule, IDialogModule | 42 | public class DialogModule : IRegionModule, IDialogModule |
43 | { | 43 | { |
44 | private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); | 44 | private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); |
45 | 45 | ||
46 | protected Scene m_scene; | 46 | protected Scene m_scene; |
47 | 47 | ||
48 | public void Initialise(Scene scene, IConfigSource source) | 48 | public void Initialise(Scene scene, IConfigSource source) |
49 | { | 49 | { |
50 | m_scene = scene; | 50 | m_scene = scene; |
51 | m_scene.RegisterModuleInterface<IDialogModule>(this); | 51 | m_scene.RegisterModuleInterface<IDialogModule>(this); |
52 | 52 | ||
53 | m_scene.AddCommand( | 53 | m_scene.AddCommand( |
54 | this, "alert", "alert <first> <last> <message>", "Send an alert to a user", HandleAlertConsoleCommand); | 54 | this, "alert", "alert <first> <last> <message>", "Send an alert to a user", HandleAlertConsoleCommand); |
55 | 55 | ||
56 | m_scene.AddCommand( | 56 | m_scene.AddCommand( |
57 | this, "alert general", "alert general <message>", "Send an alert to everyone", HandleAlertConsoleCommand); | 57 | this, "alert general", "alert general <message>", "Send an alert to everyone", HandleAlertConsoleCommand); |
58 | 58 | ||
59 | m_scene.AddCommand( | 59 | m_scene.AddCommand( |
60 | this, "alert dialog", "alert dialog <message>", "Send a dialog alert to everyone", HandleAlertConsoleCommand); | 60 | this, "alert dialog", "alert dialog <message>", "Send a dialog alert to everyone", HandleAlertConsoleCommand); |
61 | 61 | ||
62 | 62 | ||
63 | } | 63 | } |
64 | 64 | ||
65 | public void PostInitialise() {} | 65 | public void PostInitialise() {} |
66 | public void Close() {} | 66 | public void Close() {} |
67 | public string Name { get { return "Dialog Module"; } } | 67 | public string Name { get { return "Dialog Module"; } } |
68 | public bool IsSharedModule { get { return false; } } | 68 | public bool IsSharedModule { get { return false; } } |
69 | 69 | ||
70 | public void SendAlertToUser(IClientAPI client, string message) | 70 | public void SendAlertToUser(IClientAPI client, string message) |
71 | { | 71 | { |
72 | SendAlertToUser(client, message, false); | 72 | SendAlertToUser(client, message, false); |
73 | } | 73 | } |
74 | 74 | ||
75 | public void SendAlertToUser(IClientAPI client, string message, bool modal) | 75 | public void SendAlertToUser(IClientAPI client, string message, bool modal) |
76 | { | 76 | { |
77 | client.SendAgentAlertMessage(message, modal); | 77 | client.SendAgentAlertMessage(message, modal); |
78 | } | 78 | } |
79 | 79 | ||
80 | public void SendAlertToUser(UUID agentID, string message) | 80 | public void SendAlertToUser(UUID agentID, string message) |
81 | { | 81 | { |
82 | SendAlertToUser(agentID, message, false); | 82 | SendAlertToUser(agentID, message, false); |
83 | } | 83 | } |
84 | 84 | ||
85 | public void SendAlertToUser(UUID agentID, string message, bool modal) | 85 | public void SendAlertToUser(UUID agentID, string message, bool modal) |
86 | { | 86 | { |
87 | ScenePresence sp = m_scene.GetScenePresence(agentID); | 87 | ScenePresence sp = m_scene.GetScenePresence(agentID); |
88 | 88 | ||
89 | if (sp != null) | 89 | if (sp != null) |
90 | sp.ControllingClient.SendAgentAlertMessage(message, modal); | 90 | sp.ControllingClient.SendAgentAlertMessage(message, modal); |
91 | } | 91 | } |
92 | 92 | ||
93 | public void SendAlertToUser(string firstName, string lastName, string message, bool modal) | 93 | public void SendAlertToUser(string firstName, string lastName, string message, bool modal) |
94 | { | 94 | { |
95 | ScenePresence presence = m_scene.GetScenePresence(firstName, lastName); | 95 | ScenePresence presence = m_scene.GetScenePresence(firstName, lastName); |
96 | if (presence != null) | 96 | if (presence != null) |
97 | presence.ControllingClient.SendAgentAlertMessage(message, modal); | 97 | presence.ControllingClient.SendAgentAlertMessage(message, modal); |
98 | } | 98 | } |
99 | 99 | ||
100 | public void SendGeneralAlert(string message) | 100 | public void SendGeneralAlert(string message) |
101 | { | 101 | { |
102 | m_scene.ForEachScenePresence(delegate(ScenePresence presence) | 102 | m_scene.ForEachScenePresence(delegate(ScenePresence presence) |
103 | { | 103 | { |
104 | presence.ControllingClient.SendAlertMessage(message); | 104 | if (!presence.IsChildAgent) |
105 | }); | 105 | { |
106 | } | 106 | presence.ControllingClient.SendAlertMessage(message); |
107 | 107 | } | |
108 | public void SendDialogToUser( | 108 | }); |
109 | UUID avatarID, string objectName, UUID objectID, UUID ownerID, | 109 | } |
110 | string message, UUID textureID, int ch, string[] buttonlabels) | 110 | |
111 | { | 111 | public void SendDialogToUser( |
112 | UserAccount account = m_scene.UserAccountService.GetUserAccount(m_scene.RegionInfo.ScopeID, ownerID); | 112 | UUID avatarID, string objectName, UUID objectID, UUID ownerID, |
113 | string ownerFirstName, ownerLastName; | 113 | string message, UUID textureID, int ch, string[] buttonlabels) |
114 | if (account != null) | 114 | { |
115 | { | 115 | UserAccount account = m_scene.UserAccountService.GetUserAccount(m_scene.RegionInfo.ScopeID, ownerID); |
116 | ownerFirstName = account.FirstName; | 116 | string ownerFirstName, ownerLastName; |
117 | ownerLastName = account.LastName; | 117 | if (account != null) |
118 | } | 118 | { |
119 | else | 119 | ownerFirstName = account.FirstName; |
120 | { | 120 | ownerLastName = account.LastName; |
121 | ownerFirstName = "(unknown"; | 121 | } |
122 | ownerLastName = "user)"; | 122 | else |
123 | } | 123 | { |
124 | 124 | ownerFirstName = "(unknown"; | |
125 | ScenePresence sp = m_scene.GetScenePresence(avatarID); | 125 | ownerLastName = "user)"; |
126 | if (sp != null) | 126 | } |
127 | sp.ControllingClient.SendDialog(objectName, objectID, ownerFirstName, ownerLastName, message, textureID, ch, buttonlabels); | 127 | |
128 | } | 128 | ScenePresence sp = m_scene.GetScenePresence(avatarID); |
129 | 129 | if (sp != null) | |
130 | public void SendUrlToUser( | 130 | sp.ControllingClient.SendDialog(objectName, objectID, ownerFirstName, ownerLastName, message, textureID, ch, buttonlabels); |
131 | UUID avatarID, string objectName, UUID objectID, UUID ownerID, bool groupOwned, string message, string url) | 131 | } |
132 | { | 132 | |
133 | ScenePresence sp = m_scene.GetScenePresence(avatarID); | 133 | public void SendUrlToUser( |
134 | 134 | UUID avatarID, string objectName, UUID objectID, UUID ownerID, bool groupOwned, string message, string url) | |
135 | if (sp != null) | 135 | { |
136 | sp.ControllingClient.SendLoadURL(objectName, objectID, ownerID, groupOwned, message, url); | 136 | ScenePresence sp = m_scene.GetScenePresence(avatarID); |
137 | } | 137 | |
138 | 138 | if (sp != null) | |
139 | public void SendTextBoxToUser(UUID avatarid, string message, int chatChannel, string name, UUID objectid, UUID ownerid) | 139 | sp.ControllingClient.SendLoadURL(objectName, objectID, ownerID, groupOwned, message, url); |
140 | { | 140 | } |
141 | UserAccount account = m_scene.UserAccountService.GetUserAccount(m_scene.RegionInfo.ScopeID, ownerid); | 141 | |
142 | string ownerFirstName, ownerLastName; | 142 | public void SendTextBoxToUser(UUID avatarid, string message, int chatChannel, string name, UUID objectid, UUID ownerid) |
143 | if (account != null) | 143 | { |
144 | { | 144 | UserAccount account = m_scene.UserAccountService.GetUserAccount(m_scene.RegionInfo.ScopeID, ownerid); |
145 | ownerFirstName = account.FirstName; | 145 | string ownerFirstName, ownerLastName; |
146 | ownerLastName = account.LastName; | 146 | if (account != null) |
147 | } | 147 | { |
148 | else | 148 | ownerFirstName = account.FirstName; |
149 | { | 149 | ownerLastName = account.LastName; |
150 | ownerFirstName = "(unknown"; | 150 | } |
151 | ownerLastName = "user)"; | 151 | else |
152 | } | 152 | { |
153 | 153 | ownerFirstName = "(unknown"; | |
154 | ScenePresence sp = m_scene.GetScenePresence(avatarid); | 154 | ownerLastName = "user)"; |
155 | 155 | } | |
156 | if (sp != null) | 156 | |
157 | sp.ControllingClient.SendTextBoxRequest(message, chatChannel, name, ownerFirstName, ownerLastName, objectid); | 157 | ScenePresence sp = m_scene.GetScenePresence(avatarid); |
158 | } | 158 | |
159 | 159 | if (sp != null) | |
160 | public void SendNotificationToUsersInRegion( | 160 | sp.ControllingClient.SendTextBoxRequest(message, chatChannel, name, ownerFirstName, ownerLastName, objectid); |
161 | UUID fromAvatarID, string fromAvatarName, string message) | 161 | } |
162 | { | 162 | |
163 | m_scene.ForEachScenePresence(delegate(ScenePresence presence) | 163 | public void SendNotificationToUsersInRegion( |
164 | { | 164 | UUID fromAvatarID, string fromAvatarName, string message) |
165 | if (!presence.IsChildAgent) | 165 | { |
166 | presence.ControllingClient.SendBlueBoxMessage(fromAvatarID, fromAvatarName, message); | 166 | m_scene.ForEachScenePresence(delegate(ScenePresence presence) |
167 | }); | 167 | { |
168 | } | 168 | if (!presence.IsChildAgent) |
169 | 169 | presence.ControllingClient.SendBlueBoxMessage(fromAvatarID, fromAvatarName, message); | |
170 | /// <summary> | 170 | }); |
171 | /// Handle an alert command from the console. | 171 | } |
172 | /// </summary> | 172 | |
173 | /// <param name="module"></param> | 173 | /// <summary> |
174 | /// <param name="cmdparams"></param> | 174 | /// Handle an alert command from the console. |
175 | public void HandleAlertConsoleCommand(string module, string[] cmdparams) | 175 | /// </summary> |
176 | { | 176 | /// <param name="module"></param> |
177 | if (m_scene.ConsoleScene() != null && m_scene.ConsoleScene() != m_scene) | 177 | /// <param name="cmdparams"></param> |
178 | return; | 178 | public void HandleAlertConsoleCommand(string module, string[] cmdparams) |
179 | 179 | { | |
180 | if (cmdparams[1] == "general") | 180 | if (m_scene.ConsoleScene() != null && m_scene.ConsoleScene() != m_scene) |
181 | { | 181 | return; |
182 | string message = CombineParams(cmdparams, 2); | 182 | |
183 | 183 | if (cmdparams[1] == "general") | |
184 | m_log.InfoFormat( | 184 | { |
185 | "[DIALOG]: Sending general alert in region {0} with message {1}", m_scene.RegionInfo.RegionName, message); | 185 | string message = CombineParams(cmdparams, 2); |
186 | SendGeneralAlert(message); | 186 | |
187 | } | 187 | m_log.InfoFormat( |
188 | else if (cmdparams[1] == "dialog") | 188 | "[DIALOG]: Sending general alert in region {0} with message {1}", m_scene.RegionInfo.RegionName, message); |
189 | { | 189 | SendGeneralAlert(message); |
190 | string message = CombineParams(cmdparams, 2); | 190 | } |
191 | 191 | else if (cmdparams[1] == "dialog") | |
192 | m_log.InfoFormat( | 192 | { |
193 | "[DIALOG]: Sending dialog alert in region {0} with message {1}", m_scene.RegionInfo.RegionName, message); | 193 | string message = CombineParams(cmdparams, 2); |
194 | SendNotificationToUsersInRegion(UUID.Zero, "System", message); | 194 | |
195 | } | 195 | m_log.InfoFormat( |
196 | else | 196 | "[DIALOG]: Sending dialog alert in region {0} with message {1}", m_scene.RegionInfo.RegionName, message); |
197 | { | 197 | SendNotificationToUsersInRegion(UUID.Zero, "System", message); |
198 | string firstName = cmdparams[1]; | 198 | } |
199 | string lastName = cmdparams[2]; | 199 | else |
200 | string message = CombineParams(cmdparams, 3); | 200 | { |
201 | 201 | string firstName = cmdparams[1]; | |
202 | m_log.InfoFormat( | 202 | string lastName = cmdparams[2]; |
203 | "[DIALOG]: Sending alert in region {0} to {1} {2} with message {3}", | 203 | string message = CombineParams(cmdparams, 3); |
204 | m_scene.RegionInfo.RegionName, firstName, lastName, message); | 204 | |
205 | SendAlertToUser(firstName, lastName, message, false); | 205 | m_log.InfoFormat( |
206 | } | 206 | "[DIALOG]: Sending alert in region {0} to {1} {2} with message {3}", |
207 | } | 207 | m_scene.RegionInfo.RegionName, firstName, lastName, message); |
208 | 208 | SendAlertToUser(firstName, lastName, message, false); | |
209 | private string CombineParams(string[] commandParams, int pos) | 209 | } |
210 | { | 210 | } |
211 | string result = string.Empty; | 211 | |
212 | for (int i = pos; i < commandParams.Length; i++) | 212 | private string CombineParams(string[] commandParams, int pos) |
213 | { | 213 | { |
214 | result += commandParams[i] + " "; | 214 | string result = string.Empty; |
215 | } | 215 | for (int i = pos; i < commandParams.Length; i++) |
216 | 216 | { | |
217 | return result; | 217 | result += commandParams[i] + " "; |
218 | } | 218 | } |
219 | } | 219 | |
220 | } | 220 | return result; |
221 | } | ||
222 | } | ||
223 | } | ||
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs index 8ce79a2..a828127 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs | |||
@@ -476,6 +476,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
476 | part.IgnoreUndoUpdate = false; | 476 | part.IgnoreUndoUpdate = false; |
477 | part.StoreUndoState(UndoType.STATE_GROUP_POSITION); | 477 | part.StoreUndoState(UndoType.STATE_GROUP_POSITION); |
478 | part.GroupPosition = val; | 478 | part.GroupPosition = val; |
479 | part.TriggerScriptChangedEvent(Changed.POSITION); | ||
479 | } | 480 | } |
480 | 481 | ||
481 | foreach (ScenePresence av in m_linkedAvatars) | 482 | foreach (ScenePresence av in m_linkedAvatars) |
@@ -1734,9 +1735,9 @@ namespace OpenSim.Region.Framework.Scenes | |||
1734 | // don't backup while it's selected or you're asking for changes mid stream. | 1735 | // don't backup while it's selected or you're asking for changes mid stream. |
1735 | if ((isTimeToPersist()) || (forcedBackup)) | 1736 | if ((isTimeToPersist()) || (forcedBackup)) |
1736 | { | 1737 | { |
1737 | m_log.DebugFormat( | 1738 | // m_log.DebugFormat( |
1738 | "[SCENE]: Storing {0}, {1} in {2}", | 1739 | // "[SCENE]: Storing {0}, {1} in {2}", |
1739 | Name, UUID, m_scene.RegionInfo.RegionName); | 1740 | // Name, UUID, m_scene.RegionInfo.RegionName); |
1740 | 1741 | ||
1741 | SceneObjectGroup backup_group = Copy(false); | 1742 | SceneObjectGroup backup_group = Copy(false); |
1742 | backup_group.RootPart.Velocity = RootPart.Velocity; | 1743 | backup_group.RootPart.Velocity = RootPart.Velocity; |
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs index 773b012..b0ce450 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs | |||
@@ -60,7 +60,8 @@ namespace OpenSim.Region.Framework.Scenes | |||
60 | TELEPORT = 512, | 60 | TELEPORT = 512, |
61 | REGION_RESTART = 1024, | 61 | REGION_RESTART = 1024, |
62 | MEDIA = 2048, | 62 | MEDIA = 2048, |
63 | ANIMATION = 16384 | 63 | ANIMATION = 16384, |
64 | POSITION = 32768 | ||
64 | } | 65 | } |
65 | 66 | ||
66 | // I don't really know where to put this except here. | 67 | // I don't really know where to put this except here. |
@@ -730,6 +731,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
730 | } | 731 | } |
731 | } | 732 | } |
732 | } | 733 | } |
734 | TriggerScriptChangedEvent(Changed.POSITION); | ||
733 | } | 735 | } |
734 | } | 736 | } |
735 | 737 | ||
diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs index b3fa2f4..56e7e93 100644 --- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs | |||
@@ -1,4328 +1,4330 @@ | |||
1 | /* | 1 | /* |
2 | * Copyright (c) Contributors, http://opensimulator.org/ | 2 | * Copyright (c) Contributors, http://opensimulator.org/ |
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | 3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. |
4 | * | 4 | * |
5 | * Redistribution and use in source and binary forms, with or without | 5 | * Redistribution and use in source and binary forms, with or without |
6 | * modification, are permitted provided that the following conditions are met: | 6 | * modification, are permitted provided that the following conditions are met: |
7 | * * Redistributions of source code must retain the above copyright | 7 | * * Redistributions of source code must retain the above copyright |
8 | * notice, this list of conditions and the following disclaimer. | 8 | * notice, this list of conditions and the following disclaimer. |
9 | * * Redistributions in binary form must reproduce the above copyright | 9 | * * Redistributions in binary form must reproduce the above copyright |
10 | * notice, this list of conditions and the following disclaimer in the | 10 | * notice, this list of conditions and the following disclaimer in the |
11 | * documentation and/or other materials provided with the distribution. | 11 | * documentation and/or other materials provided with the distribution. |
12 | * * Neither the name of the OpenSimulator Project nor the | 12 | * * Neither the name of the OpenSimulator Project nor the |
13 | * names of its contributors may be used to endorse or promote products | 13 | * names of its contributors may be used to endorse or promote products |
14 | * derived from this software without specific prior written permission. | 14 | * derived from this software without specific prior written permission. |
15 | * | 15 | * |
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY | 16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY |
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | 17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | 18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE |
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | 19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY |
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | 20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES |
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | 21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; |
22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | 22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND |
23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | 23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | 24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS |
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
26 | */ | 26 | */ |
27 | 27 | ||
28 | using System; | 28 | using System; |
29 | using System.Xml; | 29 | using System.Xml; |
30 | using System.Collections.Generic; | 30 | using System.Collections.Generic; |
31 | using System.Reflection; | 31 | using System.Reflection; |
32 | using System.Timers; | 32 | using System.Timers; |
33 | using OpenMetaverse; | 33 | using OpenMetaverse; |
34 | using log4net; | 34 | using log4net; |
35 | using OpenSim.Framework; | 35 | using OpenSim.Framework; |
36 | using OpenSim.Framework.Client; | 36 | using OpenSim.Framework.Client; |
37 | using OpenSim.Region.Framework.Interfaces; | 37 | using OpenSim.Region.Framework.Interfaces; |
38 | using OpenSim.Region.Framework.Scenes.Animation; | 38 | using OpenSim.Region.Framework.Scenes.Animation; |
39 | using OpenSim.Region.Framework.Scenes.Types; | 39 | using OpenSim.Region.Framework.Scenes.Types; |
40 | using OpenSim.Region.Physics.Manager; | 40 | using OpenSim.Region.Physics.Manager; |
41 | using GridRegion = OpenSim.Services.Interfaces.GridRegion; | 41 | using GridRegion = OpenSim.Services.Interfaces.GridRegion; |
42 | using OpenSim.Services.Interfaces; | 42 | using OpenSim.Services.Interfaces; |
43 | 43 | ||
44 | namespace OpenSim.Region.Framework.Scenes | 44 | namespace OpenSim.Region.Framework.Scenes |
45 | { | 45 | { |
46 | enum ScriptControlled : uint | 46 | enum ScriptControlled : uint |
47 | { | 47 | { |
48 | CONTROL_ZERO = 0, | 48 | CONTROL_ZERO = 0, |
49 | CONTROL_FWD = 1, | 49 | CONTROL_FWD = 1, |
50 | CONTROL_BACK = 2, | 50 | CONTROL_BACK = 2, |
51 | CONTROL_LEFT = 4, | 51 | CONTROL_LEFT = 4, |
52 | CONTROL_RIGHT = 8, | 52 | CONTROL_RIGHT = 8, |
53 | CONTROL_UP = 16, | 53 | CONTROL_UP = 16, |
54 | CONTROL_DOWN = 32, | 54 | CONTROL_DOWN = 32, |
55 | CONTROL_ROT_LEFT = 256, | 55 | CONTROL_ROT_LEFT = 256, |
56 | CONTROL_ROT_RIGHT = 512, | 56 | CONTROL_ROT_RIGHT = 512, |
57 | CONTROL_LBUTTON = 268435456, | 57 | CONTROL_LBUTTON = 268435456, |
58 | CONTROL_ML_LBUTTON = 1073741824 | 58 | CONTROL_ML_LBUTTON = 1073741824 |
59 | } | 59 | } |
60 | 60 | ||
61 | struct ScriptControllers | 61 | struct ScriptControllers |
62 | { | 62 | { |
63 | public UUID itemID; | 63 | public UUID itemID; |
64 | public ScriptControlled ignoreControls; | 64 | public ScriptControlled ignoreControls; |
65 | public ScriptControlled eventControls; | 65 | public ScriptControlled eventControls; |
66 | } | 66 | } |
67 | 67 | ||
68 | public delegate void SendCourseLocationsMethod(UUID scene, ScenePresence presence, List<Vector3> coarseLocations, List<UUID> avatarUUIDs); | 68 | public delegate void SendCourseLocationsMethod(UUID scene, ScenePresence presence, List<Vector3> coarseLocations, List<UUID> avatarUUIDs); |
69 | 69 | ||
70 | public class ScenePresence : EntityBase, ISceneEntity | 70 | public class ScenePresence : EntityBase, ISceneEntity |
71 | { | 71 | { |
72 | // ~ScenePresence() | 72 | // ~ScenePresence() |
73 | // { | 73 | // { |
74 | // m_log.Debug("[ScenePresence] Destructor called"); | 74 | // m_log.Debug("[ScenePresence] Destructor called"); |
75 | // } | 75 | // } |
76 | 76 | ||
77 | private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); | 77 | private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); |
78 | 78 | ||
79 | private static readonly byte[] BAKE_INDICES = new byte[] { 8, 9, 10, 11, 19, 20 }; | 79 | private static readonly byte[] BAKE_INDICES = new byte[] { 8, 9, 10, 11, 19, 20 }; |
80 | // private static readonly byte[] DEFAULT_TEXTURE = AvatarAppearance.GetDefaultTexture().GetBytes(); | 80 | // private static readonly byte[] DEFAULT_TEXTURE = AvatarAppearance.GetDefaultTexture().GetBytes(); |
81 | private static readonly Array DIR_CONTROL_FLAGS = Enum.GetValues(typeof(Dir_ControlFlags)); | 81 | private static readonly Array DIR_CONTROL_FLAGS = Enum.GetValues(typeof(Dir_ControlFlags)); |
82 | private static readonly Vector3 HEAD_ADJUSTMENT = new Vector3(0f, 0f, 0.3f); | 82 | private static readonly Vector3 HEAD_ADJUSTMENT = new Vector3(0f, 0f, 0.3f); |
83 | 83 | ||
84 | /// <summary> | 84 | /// <summary> |
85 | /// Experimentally determined "fudge factor" to make sit-target positions | 85 | /// Experimentally determined "fudge factor" to make sit-target positions |
86 | /// the same as in SecondLife. Fudge factor was tested for 36 different | 86 | /// the same as in SecondLife. Fudge factor was tested for 36 different |
87 | /// test cases including prims of type box, sphere, cylinder, and torus, | 87 | /// test cases including prims of type box, sphere, cylinder, and torus, |
88 | /// with varying parameters for sit target location, prim size, prim | 88 | /// with varying parameters for sit target location, prim size, prim |
89 | /// rotation, prim cut, prim twist, prim taper, and prim shear. See mantis | 89 | /// rotation, prim cut, prim twist, prim taper, and prim shear. See mantis |
90 | /// issue #1716 | 90 | /// issue #1716 |
91 | /// </summary> | 91 | /// </summary> |
92 | // private static readonly Vector3 SIT_TARGET_ADJUSTMENT = new Vector3(0.1f, 0.0f, 0.3f); | 92 | // private static readonly Vector3 SIT_TARGET_ADJUSTMENT = new Vector3(0.1f, 0.0f, 0.3f); |
93 | // Value revised by KF 091121 by comparison with SL. | 93 | // Value revised by KF 091121 by comparison with SL. |
94 | private static readonly Vector3 SIT_TARGET_ADJUSTMENT = new Vector3(0.0f, 0.0f, 0.418f); | 94 | private static readonly Vector3 SIT_TARGET_ADJUSTMENT = new Vector3(0.0f, 0.0f, 0.418f); |
95 | 95 | ||
96 | public UUID currentParcelUUID = UUID.Zero; | 96 | public UUID currentParcelUUID = UUID.Zero; |
97 | 97 | ||
98 | private ISceneViewer m_sceneViewer; | 98 | private ISceneViewer m_sceneViewer; |
99 | 99 | ||
100 | /// <value> | 100 | /// <value> |
101 | /// The animator for this avatar | 101 | /// The animator for this avatar |
102 | /// </value> | 102 | /// </value> |
103 | public ScenePresenceAnimator Animator | 103 | public ScenePresenceAnimator Animator |
104 | { | 104 | { |
105 | get { return m_animator; } | 105 | get { return m_animator; } |
106 | } | 106 | } |
107 | protected ScenePresenceAnimator m_animator; | 107 | protected ScenePresenceAnimator m_animator; |
108 | 108 | ||
109 | /// <value> | 109 | /// <value> |
110 | /// The scene objects attached to this avatar. Do not change this list directly - use methods such as | 110 | /// The scene objects attached to this avatar. Do not change this list directly - use methods such as |
111 | /// AddAttachment() and RemoveAttachment(). Lock this list when performing any read operations upon it. | 111 | /// AddAttachment() and RemoveAttachment(). Lock this list when performing any read operations upon it. |
112 | /// </value> | 112 | /// </value> |
113 | public List<SceneObjectGroup> Attachments | 113 | public List<SceneObjectGroup> Attachments |
114 | { | 114 | { |
115 | get { return m_attachments; } | 115 | get { return m_attachments; } |
116 | } | 116 | } |
117 | protected List<SceneObjectGroup> m_attachments = new List<SceneObjectGroup>(); | 117 | protected List<SceneObjectGroup> m_attachments = new List<SceneObjectGroup>(); |
118 | 118 | ||
119 | private Dictionary<UUID, ScriptControllers> scriptedcontrols = new Dictionary<UUID, ScriptControllers>(); | 119 | private Dictionary<UUID, ScriptControllers> scriptedcontrols = new Dictionary<UUID, ScriptControllers>(); |
120 | private ScriptControlled IgnoredControls = ScriptControlled.CONTROL_ZERO; | 120 | private ScriptControlled IgnoredControls = ScriptControlled.CONTROL_ZERO; |
121 | private ScriptControlled LastCommands = ScriptControlled.CONTROL_ZERO; | 121 | private ScriptControlled LastCommands = ScriptControlled.CONTROL_ZERO; |
122 | private bool MouseDown = false; | 122 | private bool MouseDown = false; |
123 | private SceneObjectGroup proxyObjectGroup; | 123 | private SceneObjectGroup proxyObjectGroup; |
124 | //private SceneObjectPart proxyObjectPart = null; | 124 | //private SceneObjectPart proxyObjectPart = null; |
125 | public Vector3 lastKnownAllowedPosition; | 125 | public Vector3 lastKnownAllowedPosition; |
126 | public bool sentMessageAboutRestrictedParcelFlyingDown; | 126 | public bool sentMessageAboutRestrictedParcelFlyingDown; |
127 | public Vector4 CollisionPlane = Vector4.UnitW; | 127 | public Vector4 CollisionPlane = Vector4.UnitW; |
128 | 128 | ||
129 | private Vector3 m_avInitialPos; // used to calculate unscripted sit rotation | 129 | private Vector3 m_avInitialPos; // used to calculate unscripted sit rotation |
130 | private Vector3 m_avUnscriptedSitPos; // for non-scripted prims | 130 | private Vector3 m_avUnscriptedSitPos; // for non-scripted prims |
131 | private Vector3 m_lastPosition; | 131 | private Vector3 m_lastPosition; |
132 | private Vector3 m_lastWorldPosition; | 132 | private Vector3 m_lastWorldPosition; |
133 | private Quaternion m_lastRotation; | 133 | private Quaternion m_lastRotation; |
134 | private Vector3 m_lastVelocity; | 134 | private Vector3 m_lastVelocity; |
135 | //private int m_lastTerseSent; | 135 | //private int m_lastTerseSent; |
136 | 136 | ||
137 | private bool m_updateflag; | 137 | private bool m_updateflag; |
138 | private byte m_movementflag; | 138 | private byte m_movementflag; |
139 | private Vector3? m_forceToApply; | 139 | private Vector3? m_forceToApply; |
140 | private uint m_requestedSitTargetID; | 140 | private uint m_requestedSitTargetID; |
141 | private UUID m_requestedSitTargetUUID; | 141 | private UUID m_requestedSitTargetUUID; |
142 | public bool SitGround = false; | 142 | public bool SitGround = false; |
143 | 143 | ||
144 | private SendCourseLocationsMethod m_sendCourseLocationsMethod; | 144 | private SendCourseLocationsMethod m_sendCourseLocationsMethod; |
145 | 145 | ||
146 | private bool m_startAnimationSet; | 146 | private bool m_startAnimationSet; |
147 | 147 | ||
148 | //private Vector3 m_requestedSitOffset = new Vector3(); | 148 | //private Vector3 m_requestedSitOffset = new Vector3(); |
149 | 149 | ||
150 | private Vector3 m_LastFinitePos; | 150 | private Vector3 m_LastFinitePos; |
151 | 151 | ||
152 | private float m_sitAvatarHeight = 2.0f; | 152 | private float m_sitAvatarHeight = 2.0f; |
153 | 153 | ||
154 | private int m_godLevel; | 154 | private int m_godLevel; |
155 | private int m_userLevel; | 155 | private int m_userLevel; |
156 | 156 | ||
157 | private bool m_invulnerable = true; | 157 | private bool m_invulnerable = true; |
158 | 158 | ||
159 | private Vector3 m_lastChildAgentUpdatePosition; | 159 | private Vector3 m_lastChildAgentUpdatePosition; |
160 | private Vector3 m_lastChildAgentUpdateCamPosition; | 160 | private Vector3 m_lastChildAgentUpdateCamPosition; |
161 | 161 | ||
162 | private int m_perfMonMS; | 162 | private int m_perfMonMS; |
163 | 163 | ||
164 | private bool m_setAlwaysRun; | 164 | private bool m_setAlwaysRun; |
165 | private bool m_forceFly; | 165 | private bool m_forceFly; |
166 | private bool m_flyDisabled; | 166 | private bool m_flyDisabled; |
167 | 167 | ||
168 | private float m_speedModifier = 1.0f; | 168 | private float m_speedModifier = 1.0f; |
169 | 169 | ||
170 | private Quaternion m_bodyRot= Quaternion.Identity; | 170 | private Quaternion m_bodyRot= Quaternion.Identity; |
171 | 171 | ||
172 | private Quaternion m_bodyRotPrevious = Quaternion.Identity; | 172 | private Quaternion m_bodyRotPrevious = Quaternion.Identity; |
173 | 173 | ||
174 | private const int LAND_VELOCITYMAG_MAX = 12; | 174 | private const int LAND_VELOCITYMAG_MAX = 12; |
175 | 175 | ||
176 | public bool IsRestrictedToRegion; | 176 | public bool IsRestrictedToRegion; |
177 | 177 | ||
178 | public string JID = String.Empty; | 178 | public string JID = String.Empty; |
179 | 179 | ||
180 | private float m_health = 100f; | 180 | private float m_health = 100f; |
181 | 181 | ||
182 | // Default AV Height | 182 | // Default AV Height |
183 | private float m_avHeight = 127.0f; | 183 | private float m_avHeight = 127.0f; |
184 | 184 | ||
185 | protected RegionInfo m_regionInfo; | 185 | protected RegionInfo m_regionInfo; |
186 | protected ulong crossingFromRegion; | 186 | protected ulong crossingFromRegion; |
187 | 187 | ||
188 | private readonly Vector3[] Dir_Vectors = new Vector3[11]; | 188 | private readonly Vector3[] Dir_Vectors = new Vector3[11]; |
189 | private bool m_isNudging = false; | 189 | private bool m_isNudging = false; |
190 | 190 | ||
191 | // Position of agent's camera in world (region cordinates) | 191 | // Position of agent's camera in world (region cordinates) |
192 | protected Vector3 m_CameraCenter; | 192 | protected Vector3 m_CameraCenter; |
193 | protected Vector3 m_lastCameraCenter; | 193 | protected Vector3 m_lastCameraCenter; |
194 | 194 | ||
195 | protected Timer m_reprioritization_timer; | 195 | protected Timer m_reprioritization_timer; |
196 | protected bool m_reprioritizing; | 196 | protected bool m_reprioritizing; |
197 | protected bool m_reprioritization_called; | 197 | protected bool m_reprioritization_called; |
198 | 198 | ||
199 | // Use these three vectors to figure out what the agent is looking at | 199 | // Use these three vectors to figure out what the agent is looking at |
200 | // Convert it to a Matrix and/or Quaternion | 200 | // Convert it to a Matrix and/or Quaternion |
201 | protected Vector3 m_CameraAtAxis; | 201 | protected Vector3 m_CameraAtAxis; |
202 | protected Vector3 m_CameraLeftAxis; | 202 | protected Vector3 m_CameraLeftAxis; |
203 | protected Vector3 m_CameraUpAxis; | 203 | protected Vector3 m_CameraUpAxis; |
204 | private AgentManager.ControlFlags m_AgentControlFlags; | 204 | private AgentManager.ControlFlags m_AgentControlFlags; |
205 | private Quaternion m_headrotation = Quaternion.Identity; | 205 | private Quaternion m_headrotation = Quaternion.Identity; |
206 | private byte m_state; | 206 | private byte m_state; |
207 | 207 | ||
208 | //Reuse the Vector3 instead of creating a new one on the UpdateMovement method | 208 | //Reuse the Vector3 instead of creating a new one on the UpdateMovement method |
209 | // private Vector3 movementvector; | 209 | // private Vector3 movementvector; |
210 | 210 | ||
211 | private bool m_autopilotMoving; | 211 | private bool m_autopilotMoving; |
212 | private Vector3 m_autoPilotTarget; | 212 | private Vector3 m_autoPilotTarget; |
213 | private bool m_sitAtAutoTarget; | 213 | private bool m_sitAtAutoTarget; |
214 | private Vector3 m_initialSitTarget = Vector3.Zero; //KF: First estimate of where to sit | 214 | private Vector3 m_initialSitTarget = Vector3.Zero; //KF: First estimate of where to sit |
215 | 215 | ||
216 | private string m_nextSitAnimation = String.Empty; | 216 | private string m_nextSitAnimation = String.Empty; |
217 | 217 | ||
218 | //PauPaw:Proper PID Controler for autopilot************ | 218 | //PauPaw:Proper PID Controler for autopilot************ |
219 | private bool m_moveToPositionInProgress; | 219 | private bool m_moveToPositionInProgress; |
220 | private Vector3 m_moveToPositionTarget; | 220 | private Vector3 m_moveToPositionTarget; |
221 | private Quaternion m_offsetRotation = new Quaternion(0.0f, 0.0f, 0.0f, 1.0f); | 221 | private Quaternion m_offsetRotation = new Quaternion(0.0f, 0.0f, 0.0f, 1.0f); |
222 | 222 | ||
223 | private bool m_followCamAuto; | 223 | private bool m_followCamAuto; |
224 | 224 | ||
225 | private int m_movementUpdateCount; | 225 | private int m_movementUpdateCount; |
226 | private int m_lastColCount = -1; //KF: Look for Collision chnages | 226 | private int m_lastColCount = -1; //KF: Look for Collision chnages |
227 | private int m_updateCount = 0; //KF: Update Anims for a while | 227 | private int m_updateCount = 0; //KF: Update Anims for a while |
228 | private static readonly int UPDATE_COUNT = 10; // how many frames to update for | 228 | private static readonly int UPDATE_COUNT = 10; // how many frames to update for |
229 | private const int NumMovementsBetweenRayCast = 5; | 229 | private const int NumMovementsBetweenRayCast = 5; |
230 | private List<uint> m_lastColliders = new List<uint>(); | 230 | private List<uint> m_lastColliders = new List<uint>(); |
231 | 231 | ||
232 | private bool CameraConstraintActive; | 232 | private bool CameraConstraintActive; |
233 | //private int m_moveToPositionStateStatus; | 233 | //private int m_moveToPositionStateStatus; |
234 | //***************************************************** | 234 | //***************************************************** |
235 | 235 | ||
236 | // Agent's Draw distance. | 236 | // Agent's Draw distance. |
237 | protected float m_DrawDistance; | 237 | protected float m_DrawDistance; |
238 | 238 | ||
239 | protected AvatarAppearance m_appearance; | 239 | protected AvatarAppearance m_appearance; |
240 | 240 | ||
241 | // neighbouring regions we have enabled a child agent in | 241 | // neighbouring regions we have enabled a child agent in |
242 | // holds the seed cap for the child agent in that region | 242 | // holds the seed cap for the child agent in that region |
243 | private Dictionary<ulong, string> m_knownChildRegions = new Dictionary<ulong, string>(); | 243 | private Dictionary<ulong, string> m_knownChildRegions = new Dictionary<ulong, string>(); |
244 | 244 | ||
245 | /// <summary> | 245 | /// <summary> |
246 | /// Implemented Control Flags | 246 | /// Implemented Control Flags |
247 | /// </summary> | 247 | /// </summary> |
248 | private enum Dir_ControlFlags | 248 | private enum Dir_ControlFlags |
249 | { | 249 | { |
250 | DIR_CONTROL_FLAG_FORWARD = AgentManager.ControlFlags.AGENT_CONTROL_AT_POS, | 250 | DIR_CONTROL_FLAG_FORWARD = AgentManager.ControlFlags.AGENT_CONTROL_AT_POS, |
251 | DIR_CONTROL_FLAG_BACK = AgentManager.ControlFlags.AGENT_CONTROL_AT_NEG, | 251 | DIR_CONTROL_FLAG_BACK = AgentManager.ControlFlags.AGENT_CONTROL_AT_NEG, |
252 | DIR_CONTROL_FLAG_LEFT = AgentManager.ControlFlags.AGENT_CONTROL_LEFT_POS, | 252 | DIR_CONTROL_FLAG_LEFT = AgentManager.ControlFlags.AGENT_CONTROL_LEFT_POS, |
253 | DIR_CONTROL_FLAG_RIGHT = AgentManager.ControlFlags.AGENT_CONTROL_LEFT_NEG, | 253 | DIR_CONTROL_FLAG_RIGHT = AgentManager.ControlFlags.AGENT_CONTROL_LEFT_NEG, |
254 | DIR_CONTROL_FLAG_UP = AgentManager.ControlFlags.AGENT_CONTROL_UP_POS, | 254 | DIR_CONTROL_FLAG_UP = AgentManager.ControlFlags.AGENT_CONTROL_UP_POS, |
255 | DIR_CONTROL_FLAG_DOWN = AgentManager.ControlFlags.AGENT_CONTROL_UP_NEG, | 255 | DIR_CONTROL_FLAG_DOWN = AgentManager.ControlFlags.AGENT_CONTROL_UP_NEG, |
256 | DIR_CONTROL_FLAG_FORWARD_NUDGE = AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_AT_POS, | 256 | DIR_CONTROL_FLAG_FORWARD_NUDGE = AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_AT_POS, |
257 | DIR_CONTROL_FLAG_BACK_NUDGE = AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_AT_NEG, | 257 | DIR_CONTROL_FLAG_BACK_NUDGE = AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_AT_NEG, |
258 | DIR_CONTROL_FLAG_LEFT_NUDGE = AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_LEFT_POS, | 258 | DIR_CONTROL_FLAG_LEFT_NUDGE = AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_LEFT_POS, |
259 | DIR_CONTROL_FLAG_RIGHT_NUDGE = AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_LEFT_NEG, | 259 | DIR_CONTROL_FLAG_RIGHT_NUDGE = AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_LEFT_NEG, |
260 | DIR_CONTROL_FLAG_DOWN_NUDGE = AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_UP_NEG | 260 | DIR_CONTROL_FLAG_DOWN_NUDGE = AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_UP_NEG |
261 | } | 261 | } |
262 | 262 | ||
263 | /// <summary> | 263 | /// <summary> |
264 | /// Position at which a significant movement was made | 264 | /// Position at which a significant movement was made |
265 | /// </summary> | 265 | /// </summary> |
266 | private Vector3 posLastSignificantMove; | 266 | private Vector3 posLastSignificantMove; |
267 | 267 | ||
268 | // For teleports and crossings callbacks | 268 | // For teleports and crossings callbacks |
269 | string m_callbackURI; | 269 | string m_callbackURI; |
270 | UUID m_originRegionID; | 270 | UUID m_originRegionID; |
271 | 271 | ||
272 | ulong m_rootRegionHandle; | 272 | ulong m_rootRegionHandle; |
273 | 273 | ||
274 | /// <value> | 274 | /// <value> |
275 | /// Script engines present in the scene | 275 | /// Script engines present in the scene |
276 | /// </value> | 276 | /// </value> |
277 | private IScriptModule[] m_scriptEngines; | 277 | private IScriptModule[] m_scriptEngines; |
278 | 278 | ||
279 | #region Properties | 279 | #region Properties |
280 | 280 | ||
281 | /// <summary> | 281 | /// <summary> |
282 | /// Physical scene representation of this Avatar. | 282 | /// Physical scene representation of this Avatar. |
283 | /// </summary> | 283 | /// </summary> |
284 | public PhysicsActor PhysicsActor | 284 | public PhysicsActor PhysicsActor |
285 | { | 285 | { |
286 | set { m_physicsActor = value; } | 286 | set { m_physicsActor = value; } |
287 | get { return m_physicsActor; } | 287 | get { return m_physicsActor; } |
288 | } | 288 | } |
289 | 289 | ||
290 | public byte MovementFlag | 290 | public byte MovementFlag |
291 | { | 291 | { |
292 | set { m_movementflag = value; } | 292 | set { m_movementflag = value; } |
293 | get { return m_movementflag; } | 293 | get { return m_movementflag; } |
294 | } | 294 | } |
295 | 295 | ||
296 | public bool Updated | 296 | public bool Updated |
297 | { | 297 | { |
298 | set { m_updateflag = value; } | 298 | set { m_updateflag = value; } |
299 | get { return m_updateflag; } | 299 | get { return m_updateflag; } |
300 | } | 300 | } |
301 | 301 | ||
302 | public bool Invulnerable | 302 | public bool Invulnerable |
303 | { | 303 | { |
304 | set { m_invulnerable = value; } | 304 | set { m_invulnerable = value; } |
305 | get { return m_invulnerable; } | 305 | get { return m_invulnerable; } |
306 | } | 306 | } |
307 | 307 | ||
308 | public int UserLevel | 308 | public int UserLevel |
309 | { | 309 | { |
310 | get { return m_userLevel; } | 310 | get { return m_userLevel; } |
311 | } | 311 | } |
312 | 312 | ||
313 | public int GodLevel | 313 | public int GodLevel |
314 | { | 314 | { |
315 | get { return m_godLevel; } | 315 | get { return m_godLevel; } |
316 | } | 316 | } |
317 | 317 | ||
318 | public ulong RegionHandle | 318 | public ulong RegionHandle |
319 | { | 319 | { |
320 | get { return m_rootRegionHandle; } | 320 | get { return m_rootRegionHandle; } |
321 | } | 321 | } |
322 | 322 | ||
323 | public Vector3 CameraPosition | 323 | public Vector3 CameraPosition |
324 | { | 324 | { |
325 | get { return m_CameraCenter; } | 325 | get { return m_CameraCenter; } |
326 | } | 326 | } |
327 | 327 | ||
328 | public Quaternion CameraRotation | 328 | public Quaternion CameraRotation |
329 | { | 329 | { |
330 | get { return Util.Axes2Rot(m_CameraAtAxis, m_CameraLeftAxis, m_CameraUpAxis); } | 330 | get { return Util.Axes2Rot(m_CameraAtAxis, m_CameraLeftAxis, m_CameraUpAxis); } |
331 | } | 331 | } |
332 | 332 | ||
333 | public Vector3 CameraAtAxis | 333 | public Vector3 CameraAtAxis |
334 | { | 334 | { |
335 | get { return m_CameraAtAxis; } | 335 | get { return m_CameraAtAxis; } |
336 | } | 336 | } |
337 | 337 | ||
338 | public Vector3 CameraLeftAxis | 338 | public Vector3 CameraLeftAxis |
339 | { | 339 | { |
340 | get { return m_CameraLeftAxis; } | 340 | get { return m_CameraLeftAxis; } |
341 | } | 341 | } |
342 | 342 | ||
343 | public Vector3 CameraUpAxis | 343 | public Vector3 CameraUpAxis |
344 | { | 344 | { |
345 | get { return m_CameraUpAxis; } | 345 | get { return m_CameraUpAxis; } |
346 | } | 346 | } |
347 | 347 | ||
348 | public Vector3 Lookat | 348 | public Vector3 Lookat |
349 | { | 349 | { |
350 | get | 350 | get |
351 | { | 351 | { |
352 | Vector3 a = new Vector3(m_CameraAtAxis.X, m_CameraAtAxis.Y, 0); | 352 | Vector3 a = new Vector3(m_CameraAtAxis.X, m_CameraAtAxis.Y, 0); |
353 | 353 | ||
354 | if (a == Vector3.Zero) | 354 | if (a == Vector3.Zero) |
355 | return a; | 355 | return a; |
356 | 356 | ||
357 | return Util.GetNormalizedVector(a); | 357 | return Util.GetNormalizedVector(a); |
358 | } | 358 | } |
359 | } | 359 | } |
360 | 360 | ||
361 | private readonly string m_firstname; | 361 | private readonly string m_firstname; |
362 | 362 | ||
363 | public string Firstname | 363 | public string Firstname |
364 | { | 364 | { |
365 | get { return m_firstname; } | 365 | get { return m_firstname; } |
366 | } | 366 | } |
367 | 367 | ||
368 | private readonly string m_lastname; | 368 | private readonly string m_lastname; |
369 | 369 | ||
370 | public string Lastname | 370 | public string Lastname |
371 | { | 371 | { |
372 | get { return m_lastname; } | 372 | get { return m_lastname; } |
373 | } | 373 | } |
374 | 374 | ||
375 | private string m_grouptitle; | 375 | private string m_grouptitle; |
376 | 376 | ||
377 | public string Grouptitle | 377 | public string Grouptitle |
378 | { | 378 | { |
379 | get { return m_grouptitle; } | 379 | get { return m_grouptitle; } |
380 | set { m_grouptitle = value; } | 380 | set { m_grouptitle = value; } |
381 | } | 381 | } |
382 | 382 | ||
383 | public float DrawDistance | 383 | public float DrawDistance |
384 | { | 384 | { |
385 | get { return m_DrawDistance; } | 385 | get { return m_DrawDistance; } |
386 | } | 386 | } |
387 | 387 | ||
388 | protected bool m_allowMovement = true; | 388 | protected bool m_allowMovement = true; |
389 | 389 | ||
390 | public bool AllowMovement | 390 | public bool AllowMovement |
391 | { | 391 | { |
392 | get { return m_allowMovement; } | 392 | get { return m_allowMovement; } |
393 | set { m_allowMovement = value; } | 393 | set { m_allowMovement = value; } |
394 | } | 394 | } |
395 | 395 | ||
396 | public bool SetAlwaysRun | 396 | public bool SetAlwaysRun |
397 | { | 397 | { |
398 | get | 398 | get |
399 | { | 399 | { |
400 | if (PhysicsActor != null) | 400 | if (PhysicsActor != null) |
401 | { | 401 | { |
402 | return PhysicsActor.SetAlwaysRun; | 402 | return PhysicsActor.SetAlwaysRun; |
403 | } | 403 | } |
404 | else | 404 | else |
405 | { | 405 | { |
406 | return m_setAlwaysRun; | 406 | return m_setAlwaysRun; |
407 | } | 407 | } |
408 | } | 408 | } |
409 | set | 409 | set |
410 | { | 410 | { |
411 | m_setAlwaysRun = value; | 411 | m_setAlwaysRun = value; |
412 | if (PhysicsActor != null) | 412 | if (PhysicsActor != null) |
413 | { | 413 | { |
414 | PhysicsActor.SetAlwaysRun = value; | 414 | PhysicsActor.SetAlwaysRun = value; |
415 | } | 415 | } |
416 | } | 416 | } |
417 | } | 417 | } |
418 | 418 | ||
419 | public byte State | 419 | public byte State |
420 | { | 420 | { |
421 | get { return m_state; } | 421 | get { return m_state; } |
422 | set { m_state = value; } | 422 | set { m_state = value; } |
423 | } | 423 | } |
424 | 424 | ||
425 | public uint AgentControlFlags | 425 | public uint AgentControlFlags |
426 | { | 426 | { |
427 | get { return (uint)m_AgentControlFlags; } | 427 | get { return (uint)m_AgentControlFlags; } |
428 | set { m_AgentControlFlags = (AgentManager.ControlFlags)value; } | 428 | set { m_AgentControlFlags = (AgentManager.ControlFlags)value; } |
429 | } | 429 | } |
430 | 430 | ||
431 | /// <summary> | 431 | /// <summary> |
432 | /// This works out to be the ClientView object associated with this avatar, or it's client connection manager | 432 | /// This works out to be the ClientView object associated with this avatar, or it's client connection manager |
433 | /// </summary> | 433 | /// </summary> |
434 | private IClientAPI m_controllingClient; | 434 | private IClientAPI m_controllingClient; |
435 | 435 | ||
436 | protected PhysicsActor m_physicsActor; | 436 | protected PhysicsActor m_physicsActor; |
437 | 437 | ||
438 | /// <value> | 438 | /// <value> |
439 | /// The client controlling this presence | 439 | /// The client controlling this presence |
440 | /// </value> | 440 | /// </value> |
441 | public IClientAPI ControllingClient | 441 | public IClientAPI ControllingClient |
442 | { | 442 | { |
443 | get { return m_controllingClient; } | 443 | get { return m_controllingClient; } |
444 | } | 444 | } |
445 | 445 | ||
446 | public IClientCore ClientView | 446 | public IClientCore ClientView |
447 | { | 447 | { |
448 | get { return (IClientCore) m_controllingClient; } | 448 | get { return (IClientCore) m_controllingClient; } |
449 | } | 449 | } |
450 | 450 | ||
451 | protected Vector3 m_parentPosition; | 451 | protected Vector3 m_parentPosition; |
452 | public Vector3 ParentPosition | 452 | public Vector3 ParentPosition |
453 | { | 453 | { |
454 | get { return m_parentPosition; } | 454 | get { return m_parentPosition; } |
455 | set { m_parentPosition = value; } | 455 | set { m_parentPosition = value; } |
456 | } | 456 | } |
457 | 457 | ||
458 | /// <summary> | 458 | /// <summary> |
459 | /// Position of this avatar relative to the region the avatar is in | 459 | /// Position of this avatar relative to the region the avatar is in |
460 | /// </summary> | 460 | /// </summary> |
461 | public override Vector3 AbsolutePosition | 461 | public override Vector3 AbsolutePosition |
462 | { | 462 | { |
463 | get | 463 | get |
464 | { | 464 | { |
465 | PhysicsActor actor = m_physicsActor; | 465 | PhysicsActor actor = m_physicsActor; |
466 | // if (actor != null) | 466 | // if (actor != null) |
467 | if ((actor != null) && (m_parentID == 0)) // KF Do NOT update m_pos here if Av is sitting! | 467 | if ((actor != null) && (m_parentID == 0)) // KF Do NOT update m_pos here if Av is sitting! |
468 | m_pos = actor.Position; | 468 | m_pos = actor.Position; |
469 | 469 | ||
470 | // If we're sitting, we need to update our position | 470 | // If we're sitting, we need to update our position |
471 | if (m_parentID != 0) | 471 | if (m_parentID != 0) |
472 | { | 472 | { |
473 | SceneObjectPart part = m_scene.GetSceneObjectPart(m_parentID); | 473 | SceneObjectPart part = m_scene.GetSceneObjectPart(m_parentID); |
474 | if (part != null) | 474 | if (part != null) |
475 | m_parentPosition = part.AbsolutePosition; | 475 | m_parentPosition = part.AbsolutePosition; |
476 | } | 476 | } |
477 | 477 | ||
478 | return m_parentPosition + m_pos; | 478 | return m_parentPosition + m_pos; |
479 | } | 479 | } |
480 | set | 480 | set |
481 | { | 481 | { |
482 | PhysicsActor actor = m_physicsActor; | 482 | PhysicsActor actor = m_physicsActor; |
483 | if (actor != null) | 483 | if (actor != null) |
484 | { | 484 | { |
485 | try | 485 | try |
486 | { | 486 | { |
487 | lock (m_scene.SyncRoot) | 487 | lock (m_scene.SyncRoot) |
488 | m_physicsActor.Position = value; | 488 | m_physicsActor.Position = value; |
489 | } | 489 | } |
490 | catch (Exception e) | 490 | catch (Exception e) |
491 | { | 491 | { |
492 | m_log.Error("[SCENEPRESENCE]: ABSOLUTE POSITION " + e.Message); | 492 | m_log.Error("[SCENEPRESENCE]: ABSOLUTE POSITION " + e.Message); |
493 | } | 493 | } |
494 | } | 494 | } |
495 | 495 | ||
496 | if (m_parentID == 0) // KF Do NOT update m_pos here if Av is sitting! | 496 | if (m_parentID == 0) // KF Do NOT update m_pos here if Av is sitting! |
497 | m_pos = value; | 497 | m_pos = value; |
498 | m_parentPosition = Vector3.Zero; | 498 | m_parentPosition = Vector3.Zero; |
499 | } | 499 | } |
500 | } | 500 | } |
501 | 501 | ||
502 | public Vector3 OffsetPosition | 502 | public Vector3 OffsetPosition |
503 | { | 503 | { |
504 | get { return m_pos; } | 504 | get { return m_pos; } |
505 | set { m_pos = value; } | 505 | set { m_pos = value; } |
506 | } | 506 | } |
507 | 507 | ||
508 | /// <summary> | 508 | /// <summary> |
509 | /// Current velocity of the avatar. | 509 | /// Current velocity of the avatar. |
510 | /// </summary> | 510 | /// </summary> |
511 | public override Vector3 Velocity | 511 | public override Vector3 Velocity |
512 | { | 512 | { |
513 | get | 513 | get |
514 | { | 514 | { |
515 | PhysicsActor actor = m_physicsActor; | 515 | PhysicsActor actor = m_physicsActor; |
516 | if (actor != null) | 516 | if (actor != null) |
517 | m_velocity = actor.Velocity; | 517 | m_velocity = actor.Velocity; |
518 | 518 | ||
519 | return m_velocity; | 519 | return m_velocity; |
520 | } | 520 | } |
521 | set | 521 | set |
522 | { | 522 | { |
523 | PhysicsActor actor = m_physicsActor; | 523 | PhysicsActor actor = m_physicsActor; |
524 | if (actor != null) | 524 | if (actor != null) |
525 | { | 525 | { |
526 | try | 526 | try |
527 | { | 527 | { |
528 | lock (m_scene.SyncRoot) | 528 | lock (m_scene.SyncRoot) |
529 | actor.Velocity = value; | 529 | actor.Velocity = value; |
530 | } | 530 | } |
531 | catch (Exception e) | 531 | catch (Exception e) |
532 | { | 532 | { |
533 | m_log.Error("[SCENEPRESENCE]: VELOCITY " + e.Message); | 533 | m_log.Error("[SCENEPRESENCE]: VELOCITY " + e.Message); |
534 | } | 534 | } |
535 | } | 535 | } |
536 | 536 | ||
537 | m_velocity = value; | 537 | m_velocity = value; |
538 | } | 538 | } |
539 | } | 539 | } |
540 | 540 | ||
541 | public Quaternion OffsetRotation | 541 | public Quaternion OffsetRotation |
542 | { | 542 | { |
543 | get { return m_offsetRotation; } | 543 | get { return m_offsetRotation; } |
544 | set { m_offsetRotation = value; } | 544 | set { m_offsetRotation = value; } |
545 | } | 545 | } |
546 | 546 | ||
547 | public Quaternion Rotation | 547 | public Quaternion Rotation |
548 | { | 548 | { |
549 | get { | 549 | get { |
550 | if (m_parentID != 0) | 550 | if (m_parentID != 0) |
551 | { | 551 | { |
552 | if (m_offsetRotation != null) | 552 | if (m_offsetRotation != null) |
553 | { | 553 | { |
554 | return m_offsetRotation; | 554 | return m_offsetRotation; |
555 | } | 555 | } |
556 | else | 556 | else |
557 | { | 557 | { |
558 | return new Quaternion(0.0f, 0.0f, 0.0f, 1.0f); | 558 | return new Quaternion(0.0f, 0.0f, 0.0f, 1.0f); |
559 | } | 559 | } |
560 | 560 | ||
561 | } | 561 | } |
562 | else | 562 | else |
563 | { | 563 | { |
564 | return m_bodyRot; | 564 | return m_bodyRot; |
565 | } | 565 | } |
566 | } | 566 | } |
567 | set { | 567 | set { |
568 | m_bodyRot = value; | 568 | m_bodyRot = value; |
569 | if (m_parentID != 0) | 569 | if (m_parentID != 0) |
570 | { | 570 | { |
571 | m_offsetRotation = new Quaternion(0.0f, 0.0f, 0.0f, 1.0f); | 571 | m_offsetRotation = new Quaternion(0.0f, 0.0f, 0.0f, 1.0f); |
572 | } | 572 | } |
573 | } | 573 | } |
574 | } | 574 | } |
575 | 575 | ||
576 | public Quaternion PreviousRotation | 576 | public Quaternion PreviousRotation |
577 | { | 577 | { |
578 | get { return m_bodyRotPrevious; } | 578 | get { return m_bodyRotPrevious; } |
579 | set { m_bodyRotPrevious = value; } | 579 | set { m_bodyRotPrevious = value; } |
580 | } | 580 | } |
581 | 581 | ||
582 | /// <summary> | 582 | /// <summary> |
583 | /// If this is true, agent doesn't have a representation in this scene. | 583 | /// If this is true, agent doesn't have a representation in this scene. |
584 | /// this is an agent 'looking into' this scene from a nearby scene(region) | 584 | /// this is an agent 'looking into' this scene from a nearby scene(region) |
585 | /// | 585 | /// |
586 | /// if False, this agent has a representation in this scene | 586 | /// if False, this agent has a representation in this scene |
587 | /// </summary> | 587 | /// </summary> |
588 | private bool m_isChildAgent = true; | 588 | private bool m_isChildAgent = true; |
589 | 589 | ||
590 | public bool IsChildAgent | 590 | public bool IsChildAgent |
591 | { | 591 | { |
592 | get { return m_isChildAgent; } | 592 | get { return m_isChildAgent; } |
593 | set { m_isChildAgent = value; } | 593 | set { m_isChildAgent = value; } |
594 | } | 594 | } |
595 | 595 | ||
596 | private uint m_parentID; | 596 | private uint m_parentID; |
597 | 597 | ||
598 | 598 | ||
599 | private UUID m_linkedPrim; | 599 | private UUID m_linkedPrim; |
600 | 600 | ||
601 | public uint ParentID | 601 | public uint ParentID |
602 | { | 602 | { |
603 | get { return m_parentID; } | 603 | get { return m_parentID; } |
604 | set { m_parentID = value; } | 604 | set { m_parentID = value; } |
605 | } | 605 | } |
606 | 606 | ||
607 | public UUID LinkedPrim | 607 | public UUID LinkedPrim |
608 | { | 608 | { |
609 | get { return m_linkedPrim; } | 609 | get { return m_linkedPrim; } |
610 | set { m_linkedPrim = value; } | 610 | set { m_linkedPrim = value; } |
611 | } | 611 | } |
612 | 612 | ||
613 | public float Health | 613 | public float Health |
614 | { | 614 | { |
615 | get { return m_health; } | 615 | get { return m_health; } |
616 | set { m_health = value; } | 616 | set { m_health = value; } |
617 | } | 617 | } |
618 | 618 | ||
619 | /// <summary> | 619 | /// <summary> |
620 | /// These are the region handles known by the avatar. | 620 | /// These are the region handles known by the avatar. |
621 | /// </summary> | 621 | /// </summary> |
622 | public List<ulong> KnownChildRegionHandles | 622 | public List<ulong> KnownChildRegionHandles |
623 | { | 623 | { |
624 | get | 624 | get |
625 | { | 625 | { |
626 | if (m_knownChildRegions.Count == 0) | 626 | if (m_knownChildRegions.Count == 0) |
627 | return new List<ulong>(); | 627 | return new List<ulong>(); |
628 | else | 628 | else |
629 | return new List<ulong>(m_knownChildRegions.Keys); | 629 | return new List<ulong>(m_knownChildRegions.Keys); |
630 | } | 630 | } |
631 | } | 631 | } |
632 | 632 | ||
633 | public Dictionary<ulong, string> KnownRegions | 633 | public Dictionary<ulong, string> KnownRegions |
634 | { | 634 | { |
635 | get { return m_knownChildRegions; } | 635 | get { return m_knownChildRegions; } |
636 | set | 636 | set |
637 | { | 637 | { |
638 | m_knownChildRegions = value; | 638 | m_knownChildRegions = value; |
639 | } | 639 | } |
640 | } | 640 | } |
641 | 641 | ||
642 | public ISceneViewer SceneViewer | 642 | public ISceneViewer SceneViewer |
643 | { | 643 | { |
644 | get { return m_sceneViewer; } | 644 | get { return m_sceneViewer; } |
645 | } | 645 | } |
646 | 646 | ||
647 | public void AdjustKnownSeeds() | 647 | public void AdjustKnownSeeds() |
648 | { | 648 | { |
649 | Dictionary<ulong, string> seeds; | 649 | Dictionary<ulong, string> seeds; |
650 | 650 | ||
651 | if (Scene.CapsModule != null) | 651 | if (Scene.CapsModule != null) |
652 | seeds = Scene.CapsModule.GetChildrenSeeds(UUID); | 652 | seeds = Scene.CapsModule.GetChildrenSeeds(UUID); |
653 | else | 653 | else |
654 | seeds = new Dictionary<ulong, string>(); | 654 | seeds = new Dictionary<ulong, string>(); |
655 | 655 | ||
656 | List<ulong> old = new List<ulong>(); | 656 | List<ulong> old = new List<ulong>(); |
657 | foreach (ulong handle in seeds.Keys) | 657 | foreach (ulong handle in seeds.Keys) |
658 | { | 658 | { |
659 | uint x, y; | 659 | uint x, y; |
660 | Utils.LongToUInts(handle, out x, out y); | 660 | Utils.LongToUInts(handle, out x, out y); |
661 | x = x / Constants.RegionSize; | 661 | x = x / Constants.RegionSize; |
662 | y = y / Constants.RegionSize; | 662 | y = y / Constants.RegionSize; |
663 | if (Util.IsOutsideView(x, Scene.RegionInfo.RegionLocX, y, Scene.RegionInfo.RegionLocY)) | 663 | if (Util.IsOutsideView(x, Scene.RegionInfo.RegionLocX, y, Scene.RegionInfo.RegionLocY)) |
664 | { | 664 | { |
665 | old.Add(handle); | 665 | old.Add(handle); |
666 | } | 666 | } |
667 | } | 667 | } |
668 | DropOldNeighbours(old); | 668 | DropOldNeighbours(old); |
669 | 669 | ||
670 | if (Scene.CapsModule != null) | 670 | if (Scene.CapsModule != null) |
671 | Scene.CapsModule.SetChildrenSeed(UUID, seeds); | 671 | Scene.CapsModule.SetChildrenSeed(UUID, seeds); |
672 | 672 | ||
673 | KnownRegions = seeds; | 673 | KnownRegions = seeds; |
674 | //m_log.Debug(" ++++++++++AFTER+++++++++++++ "); | 674 | //m_log.Debug(" ++++++++++AFTER+++++++++++++ "); |
675 | //DumpKnownRegions(); | 675 | //DumpKnownRegions(); |
676 | } | 676 | } |
677 | 677 | ||
678 | public void DumpKnownRegions() | 678 | public void DumpKnownRegions() |
679 | { | 679 | { |
680 | m_log.Info("================ KnownRegions "+Scene.RegionInfo.RegionName+" ================"); | 680 | m_log.Info("================ KnownRegions "+Scene.RegionInfo.RegionName+" ================"); |
681 | foreach (KeyValuePair<ulong, string> kvp in KnownRegions) | 681 | foreach (KeyValuePair<ulong, string> kvp in KnownRegions) |
682 | { | 682 | { |
683 | uint x, y; | 683 | uint x, y; |
684 | Utils.LongToUInts(kvp.Key, out x, out y); | 684 | Utils.LongToUInts(kvp.Key, out x, out y); |
685 | x = x / Constants.RegionSize; | 685 | x = x / Constants.RegionSize; |
686 | y = y / Constants.RegionSize; | 686 | y = y / Constants.RegionSize; |
687 | m_log.Info(" >> "+x+", "+y+": "+kvp.Value); | 687 | m_log.Info(" >> "+x+", "+y+": "+kvp.Value); |
688 | } | 688 | } |
689 | } | 689 | } |
690 | 690 | ||
691 | private bool m_inTransit; | 691 | private bool m_inTransit; |
692 | private bool m_mouseLook; | 692 | private bool m_mouseLook; |
693 | private bool m_leftButtonDown; | 693 | private bool m_leftButtonDown; |
694 | 694 | ||
695 | public bool IsInTransit | 695 | public bool IsInTransit |
696 | { | 696 | { |
697 | get { return m_inTransit; } | 697 | get { return m_inTransit; } |
698 | set { m_inTransit = value; } | 698 | set { m_inTransit = value; } |
699 | } | 699 | } |
700 | 700 | ||
701 | public float SpeedModifier | 701 | public float SpeedModifier |
702 | { | 702 | { |
703 | get { return m_speedModifier; } | 703 | get { return m_speedModifier; } |
704 | set { m_speedModifier = value; } | 704 | set { m_speedModifier = value; } |
705 | } | 705 | } |
706 | 706 | ||
707 | public bool ForceFly | 707 | public bool ForceFly |
708 | { | 708 | { |
709 | get { return m_forceFly; } | 709 | get { return m_forceFly; } |
710 | set { m_forceFly = value; } | 710 | set { m_forceFly = value; } |
711 | } | 711 | } |
712 | 712 | ||
713 | public bool FlyDisabled | 713 | public bool FlyDisabled |
714 | { | 714 | { |
715 | get { return m_flyDisabled; } | 715 | get { return m_flyDisabled; } |
716 | set { m_flyDisabled = value; } | 716 | set { m_flyDisabled = value; } |
717 | } | 717 | } |
718 | 718 | ||
719 | public string Viewer | 719 | public string Viewer |
720 | { | 720 | { |
721 | get { return m_scene.AuthenticateHandler.GetAgentCircuitData(ControllingClient.CircuitCode).Viewer; } | 721 | get { return m_scene.AuthenticateHandler.GetAgentCircuitData(ControllingClient.CircuitCode).Viewer; } |
722 | } | 722 | } |
723 | 723 | ||
724 | #endregion | 724 | #endregion |
725 | 725 | ||
726 | #region Constructor(s) | 726 | #region Constructor(s) |
727 | 727 | ||
728 | public ScenePresence() | 728 | public ScenePresence() |
729 | { | 729 | { |
730 | m_sendCourseLocationsMethod = SendCoarseLocationsDefault; | 730 | m_sendCourseLocationsMethod = SendCoarseLocationsDefault; |
731 | CreateSceneViewer(); | 731 | CreateSceneViewer(); |
732 | m_animator = new ScenePresenceAnimator(this); | 732 | m_animator = new ScenePresenceAnimator(this); |
733 | } | 733 | } |
734 | 734 | ||
735 | private ScenePresence(IClientAPI client, Scene world, RegionInfo reginfo) : this() | 735 | private ScenePresence(IClientAPI client, Scene world, RegionInfo reginfo) : this() |
736 | { | 736 | { |
737 | m_rootRegionHandle = reginfo.RegionHandle; | 737 | m_rootRegionHandle = reginfo.RegionHandle; |
738 | m_controllingClient = client; | 738 | m_controllingClient = client; |
739 | m_firstname = m_controllingClient.FirstName; | 739 | m_firstname = m_controllingClient.FirstName; |
740 | m_lastname = m_controllingClient.LastName; | 740 | m_lastname = m_controllingClient.LastName; |
741 | m_name = String.Format("{0} {1}", m_firstname, m_lastname); | 741 | m_name = String.Format("{0} {1}", m_firstname, m_lastname); |
742 | m_scene = world; | 742 | m_scene = world; |
743 | m_uuid = client.AgentId; | 743 | m_uuid = client.AgentId; |
744 | m_regionInfo = reginfo; | 744 | m_regionInfo = reginfo; |
745 | m_localId = m_scene.AllocateLocalId(); | 745 | m_localId = m_scene.AllocateLocalId(); |
746 | 746 | ||
747 | UserAccount account = m_scene.UserAccountService.GetUserAccount(m_scene.RegionInfo.ScopeID, m_uuid); | 747 | UserAccount account = m_scene.UserAccountService.GetUserAccount(m_scene.RegionInfo.ScopeID, m_uuid); |
748 | 748 | ||
749 | if (account != null) | 749 | if (account != null) |
750 | m_userLevel = account.UserLevel; | 750 | m_userLevel = account.UserLevel; |
751 | 751 | ||
752 | IGroupsModule gm = m_scene.RequestModuleInterface<IGroupsModule>(); | 752 | IGroupsModule gm = m_scene.RequestModuleInterface<IGroupsModule>(); |
753 | if (gm != null) | 753 | if (gm != null) |
754 | m_grouptitle = gm.GetGroupTitle(m_uuid); | 754 | m_grouptitle = gm.GetGroupTitle(m_uuid); |
755 | 755 | ||
756 | m_scriptEngines = m_scene.RequestModuleInterfaces<IScriptModule>(); | 756 | m_scriptEngines = m_scene.RequestModuleInterfaces<IScriptModule>(); |
757 | 757 | ||
758 | AbsolutePosition = posLastSignificantMove = m_CameraCenter = | 758 | AbsolutePosition = posLastSignificantMove = m_CameraCenter = |
759 | m_lastCameraCenter = m_controllingClient.StartPos; | 759 | m_lastCameraCenter = m_controllingClient.StartPos; |
760 | 760 | ||
761 | m_reprioritization_timer = new Timer(world.ReprioritizationInterval); | 761 | m_reprioritization_timer = new Timer(world.ReprioritizationInterval); |
762 | m_reprioritization_timer.Elapsed += new ElapsedEventHandler(Reprioritize); | 762 | m_reprioritization_timer.Elapsed += new ElapsedEventHandler(Reprioritize); |
763 | m_reprioritization_timer.AutoReset = false; | 763 | m_reprioritization_timer.AutoReset = false; |
764 | 764 | ||
765 | AdjustKnownSeeds(); | 765 | AdjustKnownSeeds(); |
766 | Animator.TrySetMovementAnimation("STAND"); | 766 | Animator.TrySetMovementAnimation("STAND"); |
767 | // we created a new ScenePresence (a new child agent) in a fresh region. | 767 | // we created a new ScenePresence (a new child agent) in a fresh region. |
768 | // Request info about all the (root) agents in this region | 768 | // Request info about all the (root) agents in this region |
769 | // Note: This won't send data *to* other clients in that region (children don't send) | 769 | // Note: This won't send data *to* other clients in that region (children don't send) |
770 | SendInitialFullUpdateToAllClients(); | 770 | SendInitialFullUpdateToAllClients(); |
771 | RegisterToEvents(); | 771 | RegisterToEvents(); |
772 | if (m_controllingClient != null) | 772 | if (m_controllingClient != null) |
773 | { | 773 | { |
774 | m_controllingClient.ProcessPendingPackets(); | 774 | m_controllingClient.ProcessPendingPackets(); |
775 | } | 775 | } |
776 | SetDirectionVectors(); | 776 | SetDirectionVectors(); |
777 | } | 777 | } |
778 | 778 | ||
779 | public ScenePresence(IClientAPI client, Scene world, RegionInfo reginfo, byte[] visualParams, | 779 | public ScenePresence(IClientAPI client, Scene world, RegionInfo reginfo, byte[] visualParams, |
780 | AvatarWearable[] wearables) | 780 | AvatarWearable[] wearables) |
781 | : this(client, world, reginfo) | 781 | : this(client, world, reginfo) |
782 | { | 782 | { |
783 | m_appearance = new AvatarAppearance(m_uuid, wearables, visualParams); | 783 | m_appearance = new AvatarAppearance(m_uuid, wearables, visualParams); |
784 | } | 784 | } |
785 | 785 | ||
786 | public ScenePresence(IClientAPI client, Scene world, RegionInfo reginfo, AvatarAppearance appearance) | 786 | public ScenePresence(IClientAPI client, Scene world, RegionInfo reginfo, AvatarAppearance appearance) |
787 | : this(client, world, reginfo) | 787 | : this(client, world, reginfo) |
788 | { | 788 | { |
789 | m_appearance = appearance; | 789 | m_appearance = appearance; |
790 | } | 790 | } |
791 | 791 | ||
792 | private void CreateSceneViewer() | 792 | private void CreateSceneViewer() |
793 | { | 793 | { |
794 | m_sceneViewer = new SceneViewer(this); | 794 | m_sceneViewer = new SceneViewer(this); |
795 | } | 795 | } |
796 | 796 | ||
797 | public void RegisterToEvents() | 797 | public void RegisterToEvents() |
798 | { | 798 | { |
799 | m_controllingClient.OnRequestWearables += SendWearables; | 799 | m_controllingClient.OnRequestWearables += SendWearables; |
800 | m_controllingClient.OnSetAppearance += SetAppearance; | 800 | m_controllingClient.OnSetAppearance += SetAppearance; |
801 | m_controllingClient.OnCompleteMovementToRegion += CompleteMovement; | 801 | m_controllingClient.OnCompleteMovementToRegion += CompleteMovement; |
802 | //m_controllingClient.OnCompleteMovementToRegion += SendInitialData; | 802 | //m_controllingClient.OnCompleteMovementToRegion += SendInitialData; |
803 | m_controllingClient.OnAgentUpdate += HandleAgentUpdate; | 803 | m_controllingClient.OnAgentUpdate += HandleAgentUpdate; |
804 | m_controllingClient.OnAgentRequestSit += HandleAgentRequestSit; | 804 | m_controllingClient.OnAgentRequestSit += HandleAgentRequestSit; |
805 | m_controllingClient.OnAgentSit += HandleAgentSit; | 805 | m_controllingClient.OnAgentSit += HandleAgentSit; |
806 | m_controllingClient.OnSetAlwaysRun += HandleSetAlwaysRun; | 806 | m_controllingClient.OnSetAlwaysRun += HandleSetAlwaysRun; |
807 | m_controllingClient.OnStartAnim += HandleStartAnim; | 807 | m_controllingClient.OnStartAnim += HandleStartAnim; |
808 | m_controllingClient.OnStopAnim += HandleStopAnim; | 808 | m_controllingClient.OnStopAnim += HandleStopAnim; |
809 | m_controllingClient.OnForceReleaseControls += HandleForceReleaseControls; | 809 | m_controllingClient.OnForceReleaseControls += HandleForceReleaseControls; |
810 | m_controllingClient.OnAutoPilotGo += DoAutoPilot; | 810 | m_controllingClient.OnAutoPilotGo += DoAutoPilot; |
811 | m_controllingClient.AddGenericPacketHandler("autopilot", DoMoveToPosition); | 811 | m_controllingClient.AddGenericPacketHandler("autopilot", DoMoveToPosition); |
812 | 812 | ||
813 | // ControllingClient.OnChildAgentStatus += new StatusChange(this.ChildStatusChange); | 813 | // ControllingClient.OnChildAgentStatus += new StatusChange(this.ChildStatusChange); |
814 | // ControllingClient.OnStopMovement += new GenericCall2(this.StopMovement); | 814 | // ControllingClient.OnStopMovement += new GenericCall2(this.StopMovement); |
815 | } | 815 | } |
816 | 816 | ||
817 | private void SetDirectionVectors() | 817 | private void SetDirectionVectors() |
818 | { | 818 | { |
819 | Dir_Vectors[0] = Vector3.UnitX; //FORWARD | 819 | Dir_Vectors[0] = Vector3.UnitX; //FORWARD |
820 | Dir_Vectors[1] = -Vector3.UnitX; //BACK | 820 | Dir_Vectors[1] = -Vector3.UnitX; //BACK |
821 | Dir_Vectors[2] = Vector3.UnitY; //LEFT | 821 | Dir_Vectors[2] = Vector3.UnitY; //LEFT |
822 | Dir_Vectors[3] = -Vector3.UnitY; //RIGHT | 822 | Dir_Vectors[3] = -Vector3.UnitY; //RIGHT |
823 | Dir_Vectors[4] = Vector3.UnitZ; //UP | 823 | Dir_Vectors[4] = Vector3.UnitZ; //UP |
824 | Dir_Vectors[5] = -Vector3.UnitZ; //DOWN | 824 | Dir_Vectors[5] = -Vector3.UnitZ; //DOWN |
825 | Dir_Vectors[6] = new Vector3(0.5f, 0f, 0f); //FORWARD_NUDGE | 825 | Dir_Vectors[6] = new Vector3(0.5f, 0f, 0f); //FORWARD_NUDGE |
826 | Dir_Vectors[7] = new Vector3(-0.5f, 0f, 0f); //BACK_NUDGE | 826 | Dir_Vectors[7] = new Vector3(-0.5f, 0f, 0f); //BACK_NUDGE |
827 | Dir_Vectors[8] = new Vector3(0f, 0.5f, 0f); //LEFT_NUDGE | 827 | Dir_Vectors[8] = new Vector3(0f, 0.5f, 0f); //LEFT_NUDGE |
828 | Dir_Vectors[9] = new Vector3(0f, -0.5f, 0f); //RIGHT_NUDGE | 828 | Dir_Vectors[9] = new Vector3(0f, -0.5f, 0f); //RIGHT_NUDGE |
829 | Dir_Vectors[10] = new Vector3(0f, 0f, -0.5f); //DOWN_Nudge | 829 | Dir_Vectors[10] = new Vector3(0f, 0f, -0.5f); //DOWN_Nudge |
830 | } | 830 | } |
831 | 831 | ||
832 | private Vector3[] GetWalkDirectionVectors() | 832 | private Vector3[] GetWalkDirectionVectors() |
833 | { | 833 | { |
834 | Vector3[] vector = new Vector3[11]; | 834 | Vector3[] vector = new Vector3[11]; |
835 | vector[0] = new Vector3(m_CameraUpAxis.Z, 0f, -m_CameraAtAxis.Z); //FORWARD | 835 | vector[0] = new Vector3(m_CameraUpAxis.Z, 0f, -m_CameraAtAxis.Z); //FORWARD |
836 | vector[1] = new Vector3(-m_CameraUpAxis.Z, 0f, m_CameraAtAxis.Z); //BACK | 836 | vector[1] = new Vector3(-m_CameraUpAxis.Z, 0f, m_CameraAtAxis.Z); //BACK |
837 | vector[2] = Vector3.UnitY; //LEFT | 837 | vector[2] = Vector3.UnitY; //LEFT |
838 | vector[3] = -Vector3.UnitY; //RIGHT | 838 | vector[3] = -Vector3.UnitY; //RIGHT |
839 | vector[4] = new Vector3(m_CameraAtAxis.Z, 0f, m_CameraUpAxis.Z); //UP | 839 | vector[4] = new Vector3(m_CameraAtAxis.Z, 0f, m_CameraUpAxis.Z); //UP |
840 | vector[5] = new Vector3(-m_CameraAtAxis.Z, 0f, -m_CameraUpAxis.Z); //DOWN | 840 | vector[5] = new Vector3(-m_CameraAtAxis.Z, 0f, -m_CameraUpAxis.Z); //DOWN |
841 | vector[6] = new Vector3(m_CameraUpAxis.Z, 0f, -m_CameraAtAxis.Z); //FORWARD_NUDGE | 841 | vector[6] = new Vector3(m_CameraUpAxis.Z, 0f, -m_CameraAtAxis.Z); //FORWARD_NUDGE |
842 | vector[7] = new Vector3(-m_CameraUpAxis.Z, 0f, m_CameraAtAxis.Z); //BACK_NUDGE | 842 | vector[7] = new Vector3(-m_CameraUpAxis.Z, 0f, m_CameraAtAxis.Z); //BACK_NUDGE |
843 | vector[8] = Vector3.UnitY; //LEFT_NUDGE | 843 | vector[8] = Vector3.UnitY; //LEFT_NUDGE |
844 | vector[9] = -Vector3.UnitY; //RIGHT_NUDGE | 844 | vector[9] = -Vector3.UnitY; //RIGHT_NUDGE |
845 | vector[10] = new Vector3(-m_CameraAtAxis.Z, 0f, -m_CameraUpAxis.Z); //DOWN_NUDGE | 845 | vector[10] = new Vector3(-m_CameraAtAxis.Z, 0f, -m_CameraUpAxis.Z); //DOWN_NUDGE |
846 | return vector; | 846 | return vector; |
847 | } | 847 | } |
848 | 848 | ||
849 | private bool[] GetDirectionIsNudge() | 849 | private bool[] GetDirectionIsNudge() |
850 | { | 850 | { |
851 | bool[] isNudge = new bool[11]; | 851 | bool[] isNudge = new bool[11]; |
852 | isNudge[0] = false; //FORWARD | 852 | isNudge[0] = false; //FORWARD |
853 | isNudge[1] = false; //BACK | 853 | isNudge[1] = false; //BACK |
854 | isNudge[2] = false; //LEFT | 854 | isNudge[2] = false; //LEFT |
855 | isNudge[3] = false; //RIGHT | 855 | isNudge[3] = false; //RIGHT |
856 | isNudge[4] = false; //UP | 856 | isNudge[4] = false; //UP |
857 | isNudge[5] = false; //DOWN | 857 | isNudge[5] = false; //DOWN |
858 | isNudge[6] = true; //FORWARD_NUDGE | 858 | isNudge[6] = true; //FORWARD_NUDGE |
859 | isNudge[7] = true; //BACK_NUDGE | 859 | isNudge[7] = true; //BACK_NUDGE |
860 | isNudge[8] = true; //LEFT_NUDGE | 860 | isNudge[8] = true; //LEFT_NUDGE |
861 | isNudge[9] = true; //RIGHT_NUDGE | 861 | isNudge[9] = true; //RIGHT_NUDGE |
862 | isNudge[10] = true; //DOWN_Nudge | 862 | isNudge[10] = true; //DOWN_Nudge |
863 | return isNudge; | 863 | return isNudge; |
864 | } | 864 | } |
865 | 865 | ||
866 | 866 | ||
867 | #endregion | 867 | #endregion |
868 | 868 | ||
869 | public uint GenerateClientFlags(UUID ObjectID) | 869 | public uint GenerateClientFlags(UUID ObjectID) |
870 | { | 870 | { |
871 | return m_scene.Permissions.GenerateClientFlags(m_uuid, ObjectID); | 871 | return m_scene.Permissions.GenerateClientFlags(m_uuid, ObjectID); |
872 | } | 872 | } |
873 | 873 | ||
874 | /// <summary> | 874 | /// <summary> |
875 | /// Send updates to the client about prims which have been placed on the update queue. We don't | 875 | /// Send updates to the client about prims which have been placed on the update queue. We don't |
876 | /// necessarily send updates for all the parts on the queue, e.g. if an updates with a more recent | 876 | /// necessarily send updates for all the parts on the queue, e.g. if an updates with a more recent |
877 | /// timestamp has already been sent. | 877 | /// timestamp has already been sent. |
878 | /// </summary> | 878 | /// </summary> |
879 | public void SendPrimUpdates() | 879 | public void SendPrimUpdates() |
880 | { | 880 | { |
881 | m_perfMonMS = Util.EnvironmentTickCount(); | 881 | m_perfMonMS = Util.EnvironmentTickCount(); |
882 | 882 | ||
883 | m_sceneViewer.SendPrimUpdates(); | 883 | m_sceneViewer.SendPrimUpdates(); |
884 | 884 | ||
885 | m_scene.StatsReporter.AddAgentTime(Util.EnvironmentTickCountSubtract(m_perfMonMS)); | 885 | m_scene.StatsReporter.AddAgentTime(Util.EnvironmentTickCountSubtract(m_perfMonMS)); |
886 | } | 886 | } |
887 | 887 | ||
888 | #region Status Methods | 888 | #region Status Methods |
889 | 889 | ||
890 | /// <summary> | 890 | /// <summary> |
891 | /// This turns a child agent, into a root agent | 891 | /// This turns a child agent, into a root agent |
892 | /// This is called when an agent teleports into a region, or if an | 892 | /// This is called when an agent teleports into a region, or if an |
893 | /// agent crosses into this region from a neighbor over the border | 893 | /// agent crosses into this region from a neighbor over the border |
894 | /// </summary> | 894 | /// </summary> |
895 | public void MakeRootAgent(Vector3 pos, bool isFlying) | 895 | public void MakeRootAgent(Vector3 pos, bool isFlying) |
896 | { | 896 | { |
897 | m_log.DebugFormat( | 897 | m_log.DebugFormat( |
898 | "[SCENE]: Upgrading child to root agent for {0} in {1}", | 898 | "[SCENE]: Upgrading child to root agent for {0} in {1}", |
899 | Name, m_scene.RegionInfo.RegionName); | 899 | Name, m_scene.RegionInfo.RegionName); |
900 | 900 | ||
901 | //m_log.DebugFormat("[SCENE]: known regions in {0}: {1}", Scene.RegionInfo.RegionName, KnownChildRegionHandles.Count); | 901 | //m_log.DebugFormat("[SCENE]: known regions in {0}: {1}", Scene.RegionInfo.RegionName, KnownChildRegionHandles.Count); |
902 | 902 | ||
903 | IGroupsModule gm = m_scene.RequestModuleInterface<IGroupsModule>(); | 903 | IGroupsModule gm = m_scene.RequestModuleInterface<IGroupsModule>(); |
904 | if (gm != null) | 904 | if (gm != null) |
905 | m_grouptitle = gm.GetGroupTitle(m_uuid); | 905 | m_grouptitle = gm.GetGroupTitle(m_uuid); |
906 | 906 | ||
907 | m_rootRegionHandle = m_scene.RegionInfo.RegionHandle; | 907 | m_rootRegionHandle = m_scene.RegionInfo.RegionHandle; |
908 | m_scene.SetRootAgentScene(m_uuid); | 908 | m_scene.SetRootAgentScene(m_uuid); |
909 | 909 | ||
910 | // Moved this from SendInitialData to ensure that m_appearance is initialized | 910 | // Moved this from SendInitialData to ensure that m_appearance is initialized |
911 | // before the inventory is processed in MakeRootAgent. This fixes a race condition | 911 | // before the inventory is processed in MakeRootAgent. This fixes a race condition |
912 | // related to the handling of attachments | 912 | // related to the handling of attachments |
913 | //m_scene.GetAvatarAppearance(m_controllingClient, out m_appearance); | 913 | //m_scene.GetAvatarAppearance(m_controllingClient, out m_appearance); |
914 | if (m_scene.TestBorderCross(pos, Cardinals.E)) | 914 | if (m_scene.TestBorderCross(pos, Cardinals.E)) |
915 | { | 915 | { |
916 | Border crossedBorder = m_scene.GetCrossedBorder(pos, Cardinals.E); | 916 | Border crossedBorder = m_scene.GetCrossedBorder(pos, Cardinals.E); |
917 | pos.X = crossedBorder.BorderLine.Z - 1; | 917 | pos.X = crossedBorder.BorderLine.Z - 1; |
918 | } | 918 | } |
919 | 919 | ||
920 | if (m_scene.TestBorderCross(pos, Cardinals.N)) | 920 | if (m_scene.TestBorderCross(pos, Cardinals.N)) |
921 | { | 921 | { |
922 | Border crossedBorder = m_scene.GetCrossedBorder(pos, Cardinals.N); | 922 | Border crossedBorder = m_scene.GetCrossedBorder(pos, Cardinals.N); |
923 | pos.Y = crossedBorder.BorderLine.Z - 1; | 923 | pos.Y = crossedBorder.BorderLine.Z - 1; |
924 | } | 924 | } |
925 | 925 | ||
926 | //If they're TP'ing in or logging in, we haven't had time to add any known child regions yet. | 926 | //If they're TP'ing in or logging in, we haven't had time to add any known child regions yet. |
927 | //This has the unfortunate consequence that if somebody is TP'ing who is already a child agent, | 927 | //This has the unfortunate consequence that if somebody is TP'ing who is already a child agent, |
928 | //they'll bypass the landing point. But I can't think of any decent way of fixing this. | 928 | //they'll bypass the landing point. But I can't think of any decent way of fixing this. |
929 | if (KnownChildRegionHandles.Count == 0) | 929 | if (KnownChildRegionHandles.Count == 0) |
930 | { | 930 | { |
931 | ILandObject land = m_scene.LandChannel.GetLandObject(pos.X, pos.Y); | 931 | ILandObject land = m_scene.LandChannel.GetLandObject(pos.X, pos.Y); |
932 | if (land != null) | 932 | if (land != null) |
933 | { | 933 | { |
934 | //Don't restrict gods, estate managers, or land owners to the TP point. This behaviour mimics agni. | 934 | //Don't restrict gods, estate managers, or land owners to the TP point. This behaviour mimics agni. |
935 | if (land.LandData.LandingType == (byte)1 && land.LandData.UserLocation != Vector3.Zero && UserLevel < 200 && !m_scene.RegionInfo.EstateSettings.IsEstateManager(m_uuid) && land.LandData.OwnerID != m_uuid) | 935 | if (land.LandData.LandingType == (byte)1 && land.LandData.UserLocation != Vector3.Zero && UserLevel < 200 && !m_scene.RegionInfo.EstateSettings.IsEstateManager(m_uuid) && land.LandData.OwnerID != m_uuid) |
936 | { | 936 | { |
937 | pos = land.LandData.UserLocation; | 937 | pos = land.LandData.UserLocation; |
938 | } | 938 | } |
939 | } | 939 | } |
940 | } | 940 | } |
941 | 941 | ||
942 | if (pos.X < 0 || pos.Y < 0 || pos.Z < 0) | 942 | if (pos.X < 0 || pos.Y < 0 || pos.Z < 0) |
943 | { | 943 | { |
944 | Vector3 emergencyPos = new Vector3(((int)Constants.RegionSize * 0.5f), ((int)Constants.RegionSize * 0.5f), 128); | 944 | Vector3 emergencyPos = new Vector3(((int)Constants.RegionSize * 0.5f), ((int)Constants.RegionSize * 0.5f), 128); |
945 | 945 | ||
946 | if (pos.X < 0) | 946 | if (pos.X < 0) |
947 | { | 947 | { |
948 | emergencyPos.X = (int)Constants.RegionSize + pos.X; | 948 | emergencyPos.X = (int)Constants.RegionSize + pos.X; |
949 | if (!(pos.Y < 0)) | 949 | if (!(pos.Y < 0)) |
950 | emergencyPos.Y = pos.Y; | 950 | emergencyPos.Y = pos.Y; |
951 | if (!(pos.Z < 0)) | 951 | if (!(pos.Z < 0)) |
952 | emergencyPos.Z = pos.Z; | 952 | emergencyPos.Z = pos.Z; |
953 | } | 953 | } |
954 | if (pos.Y < 0) | 954 | if (pos.Y < 0) |
955 | { | 955 | { |
956 | emergencyPos.Y = (int)Constants.RegionSize + pos.Y; | 956 | emergencyPos.Y = (int)Constants.RegionSize + pos.Y; |
957 | if (!(pos.X < 0)) | 957 | if (!(pos.X < 0)) |
958 | emergencyPos.X = pos.X; | 958 | emergencyPos.X = pos.X; |
959 | if (!(pos.Z < 0)) | 959 | if (!(pos.Z < 0)) |
960 | emergencyPos.Z = pos.Z; | 960 | emergencyPos.Z = pos.Z; |
961 | } | 961 | } |
962 | if (pos.Z < 0) | 962 | if (pos.Z < 0) |
963 | { | 963 | { |
964 | emergencyPos.Z = 128; | 964 | emergencyPos.Z = 128; |
965 | if (!(pos.Y < 0)) | 965 | if (!(pos.Y < 0)) |
966 | emergencyPos.Y = pos.Y; | 966 | emergencyPos.Y = pos.Y; |
967 | if (!(pos.X < 0)) | 967 | if (!(pos.X < 0)) |
968 | emergencyPos.X = pos.X; | 968 | emergencyPos.X = pos.X; |
969 | } | 969 | } |
970 | } | 970 | } |
971 | 971 | ||
972 | if (pos.X < 0f || pos.Y < 0f || pos.Z < 0f) | 972 | if (pos.X < 0f || pos.Y < 0f || pos.Z < 0f) |
973 | { | 973 | { |
974 | m_log.WarnFormat( | 974 | m_log.WarnFormat( |
975 | "[SCENE PRESENCE]: MakeRootAgent() was given an illegal position of {0} for avatar {1}, {2}. Clamping", | 975 | "[SCENE PRESENCE]: MakeRootAgent() was given an illegal position of {0} for avatar {1}, {2}. Clamping", |
976 | pos, Name, UUID); | 976 | pos, Name, UUID); |
977 | 977 | ||
978 | if (pos.X < 0f) pos.X = 0f; | 978 | if (pos.X < 0f) pos.X = 0f; |
979 | if (pos.Y < 0f) pos.Y = 0f; | 979 | if (pos.Y < 0f) pos.Y = 0f; |
980 | if (pos.Z < 0f) pos.Z = 0f; | 980 | if (pos.Z < 0f) pos.Z = 0f; |
981 | } | 981 | } |
982 | 982 | ||
983 | float localAVHeight = 1.56f; | 983 | float localAVHeight = 1.56f; |
984 | if (m_avHeight != 127.0f) | 984 | if (m_avHeight != 127.0f) |
985 | { | 985 | { |
986 | localAVHeight = m_avHeight; | 986 | localAVHeight = m_avHeight; |
987 | } | 987 | } |
988 | 988 | ||
989 | float posZLimit = 0; | 989 | float posZLimit = 0; |
990 | 990 | ||
991 | if (pos.X < Constants.RegionSize && pos.Y < Constants.RegionSize) | 991 | if (pos.X < Constants.RegionSize && pos.Y < Constants.RegionSize) |
992 | posZLimit = (float)m_scene.Heightmap[(int)pos.X, (int)pos.Y]; | 992 | posZLimit = (float)m_scene.Heightmap[(int)pos.X, (int)pos.Y]; |
993 | 993 | ||
994 | float newPosZ = posZLimit + localAVHeight / 2; | 994 | float newPosZ = posZLimit + localAVHeight / 2; |
995 | if (posZLimit >= (pos.Z - (localAVHeight / 2)) && !(Single.IsInfinity(newPosZ) || Single.IsNaN(newPosZ))) | 995 | if (posZLimit >= (pos.Z - (localAVHeight / 2)) && !(Single.IsInfinity(newPosZ) || Single.IsNaN(newPosZ))) |
996 | { | 996 | { |
997 | pos.Z = newPosZ; | 997 | pos.Z = newPosZ; |
998 | } | 998 | } |
999 | AbsolutePosition = pos; | 999 | AbsolutePosition = pos; |
1000 | 1000 | ||
1001 | AddToPhysicalScene(isFlying); | 1001 | AddToPhysicalScene(isFlying); |
1002 | 1002 | ||
1003 | if (m_forceFly) | 1003 | if (m_forceFly) |
1004 | { | 1004 | { |
1005 | m_physicsActor.Flying = true; | 1005 | m_physicsActor.Flying = true; |
1006 | } | 1006 | } |
1007 | else if (m_flyDisabled) | 1007 | else if (m_flyDisabled) |
1008 | { | 1008 | { |
1009 | m_physicsActor.Flying = false; | 1009 | m_physicsActor.Flying = false; |
1010 | } | 1010 | } |
1011 | 1011 | ||
1012 | if (m_appearance != null) | 1012 | if (m_appearance != null) |
1013 | { | 1013 | { |
1014 | if (m_appearance.AvatarHeight > 0) | 1014 | if (m_appearance.AvatarHeight > 0) |
1015 | SetHeight(m_appearance.AvatarHeight); | 1015 | SetHeight(m_appearance.AvatarHeight); |
1016 | } | 1016 | } |
1017 | else | 1017 | else |
1018 | { | 1018 | { |
1019 | m_log.ErrorFormat("[SCENE PRESENCE]: null appearance in MakeRoot in {0}", Scene.RegionInfo.RegionName); | 1019 | m_log.ErrorFormat("[SCENE PRESENCE]: null appearance in MakeRoot in {0}", Scene.RegionInfo.RegionName); |
1020 | // emergency; this really shouldn't happen | 1020 | // emergency; this really shouldn't happen |
1021 | m_appearance = new AvatarAppearance(UUID); | 1021 | m_appearance = new AvatarAppearance(UUID); |
1022 | } | 1022 | } |
1023 | 1023 | ||
1024 | // Don't send an animation pack here, since on a region crossing this will sometimes cause a flying | 1024 | // Don't send an animation pack here, since on a region crossing this will sometimes cause a flying |
1025 | // avatar to return to the standing position in mid-air. On login it looks like this is being sent | 1025 | // avatar to return to the standing position in mid-air. On login it looks like this is being sent |
1026 | // elsewhere anyway | 1026 | // elsewhere anyway |
1027 | // Animator.SendAnimPack(); | 1027 | // Animator.SendAnimPack(); |
1028 | 1028 | ||
1029 | m_scene.SwapRootAgentCount(false); | 1029 | m_scene.SwapRootAgentCount(false); |
1030 | 1030 | ||
1031 | //CachedUserInfo userInfo = m_scene.CommsManager.UserProfileCacheService.GetUserDetails(m_uuid); | 1031 | //CachedUserInfo userInfo = m_scene.CommsManager.UserProfileCacheService.GetUserDetails(m_uuid); |
1032 | //if (userInfo != null) | 1032 | //if (userInfo != null) |
1033 | // userInfo.FetchInventory(); | 1033 | // userInfo.FetchInventory(); |
1034 | //else | 1034 | //else |
1035 | // m_log.ErrorFormat("[SCENE]: Could not find user info for {0} when making it a root agent", m_uuid); | 1035 | // m_log.ErrorFormat("[SCENE]: Could not find user info for {0} when making it a root agent", m_uuid); |
1036 | 1036 | ||
1037 | // On the next prim update, all objects will be sent | 1037 | // On the next prim update, all objects will be sent |
1038 | // | 1038 | // |
1039 | m_sceneViewer.Reset(); | 1039 | m_sceneViewer.Reset(); |
1040 | 1040 | ||
1041 | m_isChildAgent = false; | 1041 | m_isChildAgent = false; |
1042 | 1042 | ||
1043 | // send the animations of the other presences to me | 1043 | // send the animations of the other presences to me |
1044 | m_scene.ForEachScenePresence(delegate(ScenePresence presence) | 1044 | m_scene.ForEachScenePresence(delegate(ScenePresence presence) |
1045 | { | 1045 | { |
1046 | if (presence != this) | 1046 | if (presence != this) |
1047 | presence.Animator.SendAnimPackToClient(ControllingClient); | 1047 | presence.Animator.SendAnimPackToClient(ControllingClient); |
1048 | }); | 1048 | }); |
1049 | 1049 | ||
1050 | m_scene.EventManager.TriggerOnMakeRootAgent(this); | 1050 | m_scene.EventManager.TriggerOnMakeRootAgent(this); |
1051 | } | 1051 | } |
1052 | 1052 | ||
1053 | /// <summary> | 1053 | /// <summary> |
1054 | /// This turns a root agent into a child agent | 1054 | /// This turns a root agent into a child agent |
1055 | /// when an agent departs this region for a neighbor, this gets called. | 1055 | /// when an agent departs this region for a neighbor, this gets called. |
1056 | /// | 1056 | /// |
1057 | /// It doesn't get called for a teleport. Reason being, an agent that | 1057 | /// It doesn't get called for a teleport. Reason being, an agent that |
1058 | /// teleports out may not end up anywhere near this region | 1058 | /// teleports out may not end up anywhere near this region |
1059 | /// </summary> | 1059 | /// </summary> |
1060 | public void MakeChildAgent() | 1060 | public void MakeChildAgent() |
1061 | { | 1061 | { |
1062 | // It looks like m_animator is set to null somewhere, and MakeChild | 1062 | // It looks like m_animator is set to null somewhere, and MakeChild |
1063 | // is called after that. Probably in aborted teleports. | 1063 | // is called after that. Probably in aborted teleports. |
1064 | if (m_animator == null) | 1064 | if (m_animator == null) |
1065 | m_animator = new ScenePresenceAnimator(this); | 1065 | m_animator = new ScenePresenceAnimator(this); |
1066 | else | 1066 | else |
1067 | Animator.ResetAnimations(); | 1067 | Animator.ResetAnimations(); |
1068 | 1068 | ||
1069 | // m_log.DebugFormat( | 1069 | // m_log.DebugFormat( |
1070 | // "[SCENEPRESENCE]: Downgrading root agent {0}, {1} to a child agent in {2}", | 1070 | // "[SCENEPRESENCE]: Downgrading root agent {0}, {1} to a child agent in {2}", |
1071 | // Name, UUID, m_scene.RegionInfo.RegionName); | 1071 | // Name, UUID, m_scene.RegionInfo.RegionName); |
1072 | 1072 | ||
1073 | // Don't zero out the velocity since this can cause problems when an avatar is making a region crossing, | 1073 | // Don't zero out the velocity since this can cause problems when an avatar is making a region crossing, |
1074 | // depending on the exact timing. This shouldn't matter anyway since child agent positions are not updated. | 1074 | // depending on the exact timing. This shouldn't matter anyway since child agent positions are not updated. |
1075 | //Velocity = new Vector3(0, 0, 0); | 1075 | //Velocity = new Vector3(0, 0, 0); |
1076 | 1076 | ||
1077 | m_isChildAgent = true; | 1077 | m_isChildAgent = true; |
1078 | m_scene.SwapRootAgentCount(true); | 1078 | m_scene.SwapRootAgentCount(true); |
1079 | RemoveFromPhysicalScene(); | 1079 | RemoveFromPhysicalScene(); |
1080 | 1080 | ||
1081 | // FIXME: Set m_rootRegionHandle to the region handle of the scene this agent is moving into | 1081 | // FIXME: Set m_rootRegionHandle to the region handle of the scene this agent is moving into |
1082 | 1082 | ||
1083 | m_scene.EventManager.TriggerOnMakeChildAgent(this); | 1083 | m_scene.EventManager.TriggerOnMakeChildAgent(this); |
1084 | } | 1084 | } |
1085 | 1085 | ||
1086 | /// <summary> | 1086 | /// <summary> |
1087 | /// Removes physics plugin scene representation of this agent if it exists. | 1087 | /// Removes physics plugin scene representation of this agent if it exists. |
1088 | /// </summary> | 1088 | /// </summary> |
1089 | private void RemoveFromPhysicalScene() | 1089 | private void RemoveFromPhysicalScene() |
1090 | { | 1090 | { |
1091 | if (PhysicsActor != null) | 1091 | if (PhysicsActor != null) |
1092 | { | 1092 | { |
1093 | m_physicsActor.OnRequestTerseUpdate -= SendTerseUpdateToAllClients; | 1093 | m_physicsActor.OnRequestTerseUpdate -= SendTerseUpdateToAllClients; |
1094 | m_physicsActor.OnOutOfBounds -= OutOfBoundsCall; | 1094 | m_physicsActor.OnOutOfBounds -= OutOfBoundsCall; |
1095 | m_scene.PhysicsScene.RemoveAvatar(PhysicsActor); | 1095 | m_scene.PhysicsScene.RemoveAvatar(PhysicsActor); |
1096 | m_physicsActor.UnSubscribeEvents(); | 1096 | m_physicsActor.UnSubscribeEvents(); |
1097 | m_physicsActor.OnCollisionUpdate -= PhysicsCollisionUpdate; | 1097 | m_physicsActor.OnCollisionUpdate -= PhysicsCollisionUpdate; |
1098 | PhysicsActor = null; | 1098 | PhysicsActor = null; |
1099 | } | 1099 | } |
1100 | } | 1100 | } |
1101 | 1101 | ||
1102 | /// <summary> | 1102 | /// <summary> |
1103 | /// | 1103 | /// |
1104 | /// </summary> | 1104 | /// </summary> |
1105 | /// <param name="pos"></param> | 1105 | /// <param name="pos"></param> |
1106 | public void Teleport(Vector3 pos) | 1106 | public void Teleport(Vector3 pos) |
1107 | { | 1107 | { |
1108 | bool isFlying = false; | 1108 | bool isFlying = false; |
1109 | 1109 | ||
1110 | if (m_physicsActor != null) | 1110 | if (m_physicsActor != null) |
1111 | isFlying = m_physicsActor.Flying; | 1111 | isFlying = m_physicsActor.Flying; |
1112 | 1112 | ||
1113 | RemoveFromPhysicalScene(); | 1113 | RemoveFromPhysicalScene(); |
1114 | Velocity = Vector3.Zero; | 1114 | Velocity = Vector3.Zero; |
1115 | AbsolutePosition = pos; | 1115 | AbsolutePosition = pos; |
1116 | AddToPhysicalScene(isFlying); | 1116 | AddToPhysicalScene(isFlying); |
1117 | if (m_appearance != null) | 1117 | if (m_appearance != null) |
1118 | { | 1118 | { |
1119 | if (m_appearance.AvatarHeight > 0) | 1119 | if (m_appearance.AvatarHeight > 0) |
1120 | SetHeight(m_appearance.AvatarHeight); | 1120 | SetHeight(m_appearance.AvatarHeight); |
1121 | } | 1121 | } |
1122 | 1122 | ||
1123 | SendTerseUpdateToAllClients(); | 1123 | SendTerseUpdateToAllClients(); |
1124 | 1124 | ||
1125 | } | 1125 | } |
1126 | 1126 | ||
1127 | public void TeleportWithMomentum(Vector3 pos) | 1127 | public void TeleportWithMomentum(Vector3 pos) |
1128 | { | 1128 | { |
1129 | bool isFlying = false; | 1129 | bool isFlying = false; |
1130 | if (m_physicsActor != null) | 1130 | if (m_physicsActor != null) |
1131 | isFlying = m_physicsActor.Flying; | 1131 | isFlying = m_physicsActor.Flying; |
1132 | 1132 | ||
1133 | RemoveFromPhysicalScene(); | 1133 | RemoveFromPhysicalScene(); |
1134 | AbsolutePosition = pos; | 1134 | AbsolutePosition = pos; |
1135 | AddToPhysicalScene(isFlying); | 1135 | AddToPhysicalScene(isFlying); |
1136 | if (m_appearance != null) | 1136 | if (m_appearance != null) |
1137 | { | 1137 | { |
1138 | if (m_appearance.AvatarHeight > 0) | 1138 | if (m_appearance.AvatarHeight > 0) |
1139 | SetHeight(m_appearance.AvatarHeight); | 1139 | SetHeight(m_appearance.AvatarHeight); |
1140 | } | 1140 | } |
1141 | 1141 | ||
1142 | SendTerseUpdateToAllClients(); | 1142 | SendTerseUpdateToAllClients(); |
1143 | } | 1143 | } |
1144 | 1144 | ||
1145 | /// <summary> | 1145 | /// <summary> |
1146 | /// | 1146 | /// |
1147 | /// </summary> | 1147 | /// </summary> |
1148 | public void StopMovement() | 1148 | public void StopMovement() |
1149 | { | 1149 | { |
1150 | } | 1150 | } |
1151 | 1151 | ||
1152 | public void StopFlying() | 1152 | public void StopFlying() |
1153 | { | 1153 | { |
1154 | ControllingClient.StopFlying(this); | 1154 | ControllingClient.StopFlying(this); |
1155 | } | 1155 | } |
1156 | 1156 | ||
1157 | public void AddNeighbourRegion(ulong regionHandle, string cap) | 1157 | public void AddNeighbourRegion(ulong regionHandle, string cap) |
1158 | { | 1158 | { |
1159 | lock (m_knownChildRegions) | 1159 | lock (m_knownChildRegions) |
1160 | { | 1160 | { |
1161 | if (!m_knownChildRegions.ContainsKey(regionHandle)) | 1161 | if (!m_knownChildRegions.ContainsKey(regionHandle)) |
1162 | { | 1162 | { |
1163 | uint x, y; | 1163 | uint x, y; |
1164 | Utils.LongToUInts(regionHandle, out x, out y); | 1164 | Utils.LongToUInts(regionHandle, out x, out y); |
1165 | m_knownChildRegions.Add(regionHandle, cap); | 1165 | m_knownChildRegions.Add(regionHandle, cap); |
1166 | } | 1166 | } |
1167 | } | 1167 | } |
1168 | } | 1168 | } |
1169 | 1169 | ||
1170 | public void RemoveNeighbourRegion(ulong regionHandle) | 1170 | public void RemoveNeighbourRegion(ulong regionHandle) |
1171 | { | 1171 | { |
1172 | lock (m_knownChildRegions) | 1172 | lock (m_knownChildRegions) |
1173 | { | 1173 | { |
1174 | if (m_knownChildRegions.ContainsKey(regionHandle)) | 1174 | if (m_knownChildRegions.ContainsKey(regionHandle)) |
1175 | { | 1175 | { |
1176 | m_knownChildRegions.Remove(regionHandle); | 1176 | m_knownChildRegions.Remove(regionHandle); |
1177 | //m_log.Debug(" !!! removing known region {0} in {1}. Count = {2}", regionHandle, Scene.RegionInfo.RegionName, m_knownChildRegions.Count); | 1177 | //m_log.Debug(" !!! removing known region {0} in {1}. Count = {2}", regionHandle, Scene.RegionInfo.RegionName, m_knownChildRegions.Count); |
1178 | } | 1178 | } |
1179 | } | 1179 | } |
1180 | } | 1180 | } |
1181 | 1181 | ||
1182 | public void DropOldNeighbours(List<ulong> oldRegions) | 1182 | public void DropOldNeighbours(List<ulong> oldRegions) |
1183 | { | 1183 | { |
1184 | foreach (ulong handle in oldRegions) | 1184 | foreach (ulong handle in oldRegions) |
1185 | { | 1185 | { |
1186 | RemoveNeighbourRegion(handle); | 1186 | RemoveNeighbourRegion(handle); |
1187 | Scene.CapsModule.DropChildSeed(UUID, handle); | 1187 | Scene.CapsModule.DropChildSeed(UUID, handle); |
1188 | } | 1188 | } |
1189 | } | 1189 | } |
1190 | 1190 | ||
1191 | public List<ulong> GetKnownRegionList() | 1191 | public List<ulong> GetKnownRegionList() |
1192 | { | 1192 | { |
1193 | return new List<ulong>(m_knownChildRegions.Keys); | 1193 | return new List<ulong>(m_knownChildRegions.Keys); |
1194 | } | 1194 | } |
1195 | 1195 | ||
1196 | #endregion | 1196 | #endregion |
1197 | 1197 | ||
1198 | #region Event Handlers | 1198 | #region Event Handlers |
1199 | 1199 | ||
1200 | /// <summary> | 1200 | /// <summary> |
1201 | /// Sets avatar height in the phyiscs plugin | 1201 | /// Sets avatar height in the phyiscs plugin |
1202 | /// </summary> | 1202 | /// </summary> |
1203 | internal void SetHeight(float height) | 1203 | internal void SetHeight(float height) |
1204 | { | 1204 | { |
1205 | m_avHeight = height; | 1205 | m_avHeight = height; |
1206 | if (PhysicsActor != null && !IsChildAgent) | 1206 | if (PhysicsActor != null && !IsChildAgent) |
1207 | { | 1207 | { |
1208 | Vector3 SetSize = new Vector3(0.45f, 0.6f, m_avHeight); | 1208 | Vector3 SetSize = new Vector3(0.45f, 0.6f, m_avHeight); |
1209 | PhysicsActor.Size = SetSize; | 1209 | PhysicsActor.Size = SetSize; |
1210 | } | 1210 | } |
1211 | } | 1211 | } |
1212 | 1212 | ||
1213 | /// <summary> | 1213 | /// <summary> |
1214 | /// Complete Avatar's movement into the region. | 1214 | /// Complete Avatar's movement into the region. |
1215 | /// This is called upon a very important packet sent from the client, | 1215 | /// This is called upon a very important packet sent from the client, |
1216 | /// so it's client-controlled. Never call this method directly. | 1216 | /// so it's client-controlled. Never call this method directly. |
1217 | /// </summary> | 1217 | /// </summary> |
1218 | public void CompleteMovement(IClientAPI client) | 1218 | public void CompleteMovement(IClientAPI client) |
1219 | { | 1219 | { |
1220 | //m_log.Debug("[SCENE PRESENCE]: CompleteMovement"); | 1220 | //m_log.Debug("[SCENE PRESENCE]: CompleteMovement"); |
1221 | 1221 | ||
1222 | Vector3 look = Velocity; | 1222 | Vector3 look = Velocity; |
1223 | if ((look.X == 0) && (look.Y == 0) && (look.Z == 0)) | 1223 | if ((look.X == 0) && (look.Y == 0) && (look.Z == 0)) |
1224 | { | 1224 | { |
1225 | look = new Vector3(0.99f, 0.042f, 0); | 1225 | look = new Vector3(0.99f, 0.042f, 0); |
1226 | } | 1226 | } |
1227 | 1227 | ||
1228 | // Prevent teleporting to an underground location | 1228 | // Prevent teleporting to an underground location |
1229 | // (may crash client otherwise) | 1229 | // (may crash client otherwise) |
1230 | // | 1230 | // |
1231 | Vector3 pos = AbsolutePosition; | 1231 | Vector3 pos = AbsolutePosition; |
1232 | float ground = m_scene.GetGroundHeight(pos.X, pos.Y); | 1232 | float ground = m_scene.GetGroundHeight(pos.X, pos.Y); |
1233 | if (pos.Z < ground + 1.5f) | 1233 | if (pos.Z < ground + 1.5f) |
1234 | { | 1234 | { |
1235 | pos.Z = ground + 1.5f; | 1235 | pos.Z = ground + 1.5f; |
1236 | AbsolutePosition = pos; | 1236 | AbsolutePosition = pos; |
1237 | } | 1237 | } |
1238 | m_isChildAgent = false; | 1238 | m_isChildAgent = false; |
1239 | bool m_flying = ((m_AgentControlFlags & AgentManager.ControlFlags.AGENT_CONTROL_FLY) != 0); | 1239 | bool m_flying = ((m_AgentControlFlags & AgentManager.ControlFlags.AGENT_CONTROL_FLY) != 0); |
1240 | MakeRootAgent(AbsolutePosition, m_flying); | 1240 | MakeRootAgent(AbsolutePosition, m_flying); |
1241 | 1241 | ||
1242 | if ((m_callbackURI != null) && !m_callbackURI.Equals("")) | 1242 | if ((m_callbackURI != null) && !m_callbackURI.Equals("")) |
1243 | { | 1243 | { |
1244 | m_log.DebugFormat("[SCENE PRESENCE]: Releasing agent in URI {0}", m_callbackURI); | 1244 | m_log.DebugFormat("[SCENE PRESENCE]: Releasing agent in URI {0}", m_callbackURI); |
1245 | Scene.SimulationService.ReleaseAgent(m_originRegionID, UUID, m_callbackURI); | 1245 | Scene.SimulationService.ReleaseAgent(m_originRegionID, UUID, m_callbackURI); |
1246 | m_callbackURI = null; | 1246 | m_callbackURI = null; |
1247 | } | 1247 | } |
1248 | 1248 | ||
1249 | //m_log.DebugFormat("Completed movement"); | 1249 | //m_log.DebugFormat("Completed movement"); |
1250 | 1250 | ||
1251 | m_controllingClient.MoveAgentIntoRegion(m_regionInfo, AbsolutePosition, look); | 1251 | m_controllingClient.MoveAgentIntoRegion(m_regionInfo, AbsolutePosition, look); |
1252 | SendInitialData(); | 1252 | SendInitialData(); |
1253 | 1253 | ||
1254 | // Create child agents in neighbouring regions | 1254 | // Create child agents in neighbouring regions |
1255 | if (!m_isChildAgent) | 1255 | if (!m_isChildAgent) |
1256 | { | 1256 | { |
1257 | IEntityTransferModule m_agentTransfer = m_scene.RequestModuleInterface<IEntityTransferModule>(); | 1257 | IEntityTransferModule m_agentTransfer = m_scene.RequestModuleInterface<IEntityTransferModule>(); |
1258 | if (m_agentTransfer != null) | 1258 | if (m_agentTransfer != null) |
1259 | m_agentTransfer.EnableChildAgents(this); | 1259 | m_agentTransfer.EnableChildAgents(this); |
1260 | else | 1260 | else |
1261 | m_log.DebugFormat("[SCENE PRESENCE]: Unable to create child agents in neighbours, because AgentTransferModule is not active"); | 1261 | m_log.DebugFormat("[SCENE PRESENCE]: Unable to create child agents in neighbours, because AgentTransferModule is not active"); |
1262 | 1262 | ||
1263 | IFriendsModule friendsModule = m_scene.RequestModuleInterface<IFriendsModule>(); | 1263 | IFriendsModule friendsModule = m_scene.RequestModuleInterface<IFriendsModule>(); |
1264 | if (friendsModule != null) | 1264 | if (friendsModule != null) |
1265 | friendsModule.SendFriendsOnlineIfNeeded(ControllingClient); | 1265 | friendsModule.SendFriendsOnlineIfNeeded(ControllingClient); |
1266 | } | 1266 | } |
1267 | 1267 | ||
1268 | } | 1268 | } |
1269 | 1269 | ||
1270 | /// <summary> | 1270 | /// <summary> |
1271 | /// Callback for the Camera view block check. Gets called with the results of the camera view block test | 1271 | /// Callback for the Camera view block check. Gets called with the results of the camera view block test |
1272 | /// hitYN is true when there's something in the way. | 1272 | /// hitYN is true when there's something in the way. |
1273 | /// </summary> | 1273 | /// </summary> |
1274 | /// <param name="hitYN"></param> | 1274 | /// <param name="hitYN"></param> |
1275 | /// <param name="collisionPoint"></param> | 1275 | /// <param name="collisionPoint"></param> |
1276 | /// <param name="localid"></param> | 1276 | /// <param name="localid"></param> |
1277 | /// <param name="distance"></param> | 1277 | /// <param name="distance"></param> |
1278 | public void RayCastCameraCallback(bool hitYN, Vector3 collisionPoint, uint localid, float distance, Vector3 pNormal) | 1278 | public void RayCastCameraCallback(bool hitYN, Vector3 collisionPoint, uint localid, float distance, Vector3 pNormal) |
1279 | { | 1279 | { |
1280 | const float POSITION_TOLERANCE = 0.02f; | 1280 | const float POSITION_TOLERANCE = 0.02f; |
1281 | const float VELOCITY_TOLERANCE = 0.02f; | 1281 | const float VELOCITY_TOLERANCE = 0.02f; |
1282 | const float ROTATION_TOLERANCE = 0.02f; | 1282 | const float ROTATION_TOLERANCE = 0.02f; |
1283 | 1283 | ||
1284 | if (m_followCamAuto) | 1284 | if (m_followCamAuto) |
1285 | { | 1285 | { |
1286 | if (hitYN) | 1286 | if (hitYN) |
1287 | { | 1287 | { |
1288 | CameraConstraintActive = true; | 1288 | CameraConstraintActive = true; |
1289 | //m_log.DebugFormat("[RAYCASTRESULT]: {0}, {1}, {2}, {3}", hitYN, collisionPoint, localid, distance); | 1289 | //m_log.DebugFormat("[RAYCASTRESULT]: {0}, {1}, {2}, {3}", hitYN, collisionPoint, localid, distance); |
1290 | 1290 | ||
1291 | Vector3 normal = Vector3.Normalize(new Vector3(0f, 0f, collisionPoint.Z) - collisionPoint); | 1291 | Vector3 normal = Vector3.Normalize(new Vector3(0f, 0f, collisionPoint.Z) - collisionPoint); |
1292 | ControllingClient.SendCameraConstraint(new Vector4(normal.X, normal.Y, normal.Z, -1 * Vector3.Distance(new Vector3(0,0,collisionPoint.Z),collisionPoint))); | 1292 | ControllingClient.SendCameraConstraint(new Vector4(normal.X, normal.Y, normal.Z, -1 * Vector3.Distance(new Vector3(0,0,collisionPoint.Z),collisionPoint))); |
1293 | } | 1293 | } |
1294 | else | 1294 | else |
1295 | { | 1295 | { |
1296 | if (!m_pos.ApproxEquals(m_lastPosition, POSITION_TOLERANCE) || | 1296 | if (!m_pos.ApproxEquals(m_lastPosition, POSITION_TOLERANCE) || |
1297 | !Velocity.ApproxEquals(m_lastVelocity, VELOCITY_TOLERANCE) || | 1297 | !Velocity.ApproxEquals(m_lastVelocity, VELOCITY_TOLERANCE) || |
1298 | !m_bodyRot.ApproxEquals(m_lastRotation, ROTATION_TOLERANCE)) | 1298 | !m_bodyRot.ApproxEquals(m_lastRotation, ROTATION_TOLERANCE)) |
1299 | { | 1299 | { |
1300 | if (CameraConstraintActive) | 1300 | if (CameraConstraintActive) |
1301 | { | 1301 | { |
1302 | ControllingClient.SendCameraConstraint(new Vector4(0f, 0.5f, 0.9f, -3000f)); | 1302 | ControllingClient.SendCameraConstraint(new Vector4(0f, 0.5f, 0.9f, -3000f)); |
1303 | CameraConstraintActive = false; | 1303 | CameraConstraintActive = false; |
1304 | } | 1304 | } |
1305 | } | 1305 | } |
1306 | } | 1306 | } |
1307 | } | 1307 | } |
1308 | } | 1308 | } |
1309 | 1309 | ||
1310 | /// <summary> | 1310 | /// <summary> |
1311 | /// This is the event handler for client movement. If a client is moving, this event is triggering. | 1311 | /// This is the event handler for client movement. If a client is moving, this event is triggering. |
1312 | /// </summary> | 1312 | /// </summary> |
1313 | public void HandleAgentUpdate(IClientAPI remoteClient, AgentUpdateArgs agentData) | 1313 | public void HandleAgentUpdate(IClientAPI remoteClient, AgentUpdateArgs agentData) |
1314 | { | 1314 | { |
1315 | //if (m_isChildAgent) | 1315 | //if (m_isChildAgent) |
1316 | //{ | 1316 | //{ |
1317 | // // m_log.Debug("DEBUG: HandleAgentUpdate: child agent"); | 1317 | // // m_log.Debug("DEBUG: HandleAgentUpdate: child agent"); |
1318 | // return; | 1318 | // return; |
1319 | //} | 1319 | //} |
1320 | 1320 | ||
1321 | m_perfMonMS = Util.EnvironmentTickCount(); | 1321 | m_perfMonMS = Util.EnvironmentTickCount(); |
1322 | 1322 | ||
1323 | ++m_movementUpdateCount; | 1323 | ++m_movementUpdateCount; |
1324 | if (m_movementUpdateCount < 1) | 1324 | if (m_movementUpdateCount < 1) |
1325 | m_movementUpdateCount = 1; | 1325 | m_movementUpdateCount = 1; |
1326 | 1326 | ||
1327 | #region Sanity Checking | 1327 | #region Sanity Checking |
1328 | 1328 | ||
1329 | // This is irritating. Really. | 1329 | // This is irritating. Really. |
1330 | if (!AbsolutePosition.IsFinite()) | 1330 | if (!AbsolutePosition.IsFinite()) |
1331 | { | 1331 | { |
1332 | RemoveFromPhysicalScene(); | 1332 | RemoveFromPhysicalScene(); |
1333 | m_log.Error("[AVATAR]: NonFinite Avatar position detected... Reset Position. Mantis this please. Error #9999902"); | 1333 | m_log.Error("[AVATAR]: NonFinite Avatar position detected... Reset Position. Mantis this please. Error #9999902"); |
1334 | 1334 | ||
1335 | m_pos = m_LastFinitePos; | 1335 | m_pos = m_LastFinitePos; |
1336 | 1336 | ||
1337 | if (!m_pos.IsFinite()) | 1337 | if (!m_pos.IsFinite()) |
1338 | { | 1338 | { |
1339 | m_pos.X = 127f; | 1339 | m_pos.X = 127f; |
1340 | m_pos.Y = 127f; | 1340 | m_pos.Y = 127f; |
1341 | m_pos.Z = 127f; | 1341 | m_pos.Z = 127f; |
1342 | m_log.Error("[AVATAR]: NonFinite Avatar position detected... Reset Position. Mantis this please. Error #9999903"); | 1342 | m_log.Error("[AVATAR]: NonFinite Avatar position detected... Reset Position. Mantis this please. Error #9999903"); |
1343 | } | 1343 | } |
1344 | 1344 | ||
1345 | AddToPhysicalScene(false); | 1345 | AddToPhysicalScene(false); |
1346 | } | 1346 | } |
1347 | else | 1347 | else |
1348 | { | 1348 | { |
1349 | m_LastFinitePos = m_pos; | 1349 | m_LastFinitePos = m_pos; |
1350 | } | 1350 | } |
1351 | 1351 | ||
1352 | #endregion Sanity Checking | 1352 | #endregion Sanity Checking |
1353 | 1353 | ||
1354 | #region Inputs | 1354 | #region Inputs |
1355 | 1355 | ||
1356 | AgentManager.ControlFlags flags = (AgentManager.ControlFlags)agentData.ControlFlags; | 1356 | AgentManager.ControlFlags flags = (AgentManager.ControlFlags)agentData.ControlFlags; |
1357 | Quaternion bodyRotation = agentData.BodyRotation; | 1357 | Quaternion bodyRotation = agentData.BodyRotation; |
1358 | 1358 | ||
1359 | // Camera location in world. We'll need to raytrace | 1359 | // Camera location in world. We'll need to raytrace |
1360 | // from this location from time to time. | 1360 | // from this location from time to time. |
1361 | m_CameraCenter = agentData.CameraCenter; | 1361 | m_CameraCenter = agentData.CameraCenter; |
1362 | if (Vector3.Distance(m_lastCameraCenter, m_CameraCenter) >= Scene.RootReprioritizationDistance) | 1362 | if (Vector3.Distance(m_lastCameraCenter, m_CameraCenter) >= Scene.RootReprioritizationDistance) |
1363 | { | 1363 | { |
1364 | ReprioritizeUpdates(); | 1364 | ReprioritizeUpdates(); |
1365 | m_lastCameraCenter = m_CameraCenter; | 1365 | m_lastCameraCenter = m_CameraCenter; |
1366 | } | 1366 | } |
1367 | 1367 | ||
1368 | // Use these three vectors to figure out what the agent is looking at | 1368 | // Use these three vectors to figure out what the agent is looking at |
1369 | // Convert it to a Matrix and/or Quaternion | 1369 | // Convert it to a Matrix and/or Quaternion |
1370 | m_CameraAtAxis = agentData.CameraAtAxis; | 1370 | m_CameraAtAxis = agentData.CameraAtAxis; |
1371 | m_CameraLeftAxis = agentData.CameraLeftAxis; | 1371 | m_CameraLeftAxis = agentData.CameraLeftAxis; |
1372 | m_CameraUpAxis = agentData.CameraUpAxis; | 1372 | m_CameraUpAxis = agentData.CameraUpAxis; |
1373 | 1373 | ||
1374 | // The Agent's Draw distance setting | 1374 | // The Agent's Draw distance setting |
1375 | m_DrawDistance = agentData.Far; | 1375 | m_DrawDistance = agentData.Far; |
1376 | 1376 | ||
1377 | // Check if Client has camera in 'follow cam' or 'build' mode. | 1377 | // Check if Client has camera in 'follow cam' or 'build' mode. |
1378 | Vector3 camdif = (Vector3.One * m_bodyRot - Vector3.One * CameraRotation); | 1378 | Vector3 camdif = (Vector3.One * m_bodyRot - Vector3.One * CameraRotation); |
1379 | 1379 | ||
1380 | m_followCamAuto = ((m_CameraUpAxis.Z > 0.959f && m_CameraUpAxis.Z < 0.98f) | 1380 | m_followCamAuto = ((m_CameraUpAxis.Z > 0.959f && m_CameraUpAxis.Z < 0.98f) |
1381 | && (Math.Abs(camdif.X) < 0.4f && Math.Abs(camdif.Y) < 0.4f)) ? true : false; | 1381 | && (Math.Abs(camdif.X) < 0.4f && Math.Abs(camdif.Y) < 0.4f)) ? true : false; |
1382 | 1382 | ||
1383 | m_mouseLook = (flags & AgentManager.ControlFlags.AGENT_CONTROL_MOUSELOOK) != 0; | 1383 | m_mouseLook = (flags & AgentManager.ControlFlags.AGENT_CONTROL_MOUSELOOK) != 0; |
1384 | m_leftButtonDown = (flags & AgentManager.ControlFlags.AGENT_CONTROL_LBUTTON_DOWN) != 0; | 1384 | m_leftButtonDown = (flags & AgentManager.ControlFlags.AGENT_CONTROL_LBUTTON_DOWN) != 0; |
1385 | 1385 | ||
1386 | #endregion Inputs | 1386 | #endregion Inputs |
1387 | 1387 | ||
1388 | if ((flags & AgentManager.ControlFlags.AGENT_CONTROL_STAND_UP) != 0) | 1388 | if ((flags & AgentManager.ControlFlags.AGENT_CONTROL_STAND_UP) != 0) |
1389 | { | 1389 | { |
1390 | StandUp(); | 1390 | StandUp(); |
1391 | } | 1391 | } |
1392 | 1392 | ||
1393 | //m_log.DebugFormat("[FollowCam]: {0}", m_followCamAuto); | 1393 | //m_log.DebugFormat("[FollowCam]: {0}", m_followCamAuto); |
1394 | // Raycast from the avatar's head to the camera to see if there's anything blocking the view | 1394 | // Raycast from the avatar's head to the camera to see if there's anything blocking the view |
1395 | if ((m_movementUpdateCount % NumMovementsBetweenRayCast) == 0 && m_scene.PhysicsScene.SupportsRayCast()) | 1395 | if ((m_movementUpdateCount % NumMovementsBetweenRayCast) == 0 && m_scene.PhysicsScene.SupportsRayCast()) |
1396 | { | 1396 | { |
1397 | if (m_followCamAuto) | 1397 | if (m_followCamAuto) |
1398 | { | 1398 | { |
1399 | Vector3 posAdjusted = m_pos + HEAD_ADJUSTMENT; | 1399 | Vector3 posAdjusted = m_pos + HEAD_ADJUSTMENT; |
1400 | m_scene.PhysicsScene.RaycastWorld(m_pos, Vector3.Normalize(m_CameraCenter - posAdjusted), Vector3.Distance(m_CameraCenter, posAdjusted) + 0.3f, RayCastCameraCallback); | 1400 | m_scene.PhysicsScene.RaycastWorld(m_pos, Vector3.Normalize(m_CameraCenter - posAdjusted), Vector3.Distance(m_CameraCenter, posAdjusted) + 0.3f, RayCastCameraCallback); |
1401 | } | 1401 | } |
1402 | } | 1402 | } |
1403 | lock (scriptedcontrols) | 1403 | lock (scriptedcontrols) |
1404 | { | 1404 | { |
1405 | if (scriptedcontrols.Count > 0) | 1405 | if (scriptedcontrols.Count > 0) |
1406 | { | 1406 | { |
1407 | SendControlToScripts((uint)flags); | 1407 | SendControlToScripts((uint)flags); |
1408 | flags = RemoveIgnoredControls(flags, IgnoredControls); | 1408 | flags = RemoveIgnoredControls(flags, IgnoredControls); |
1409 | } | 1409 | } |
1410 | } | 1410 | } |
1411 | 1411 | ||
1412 | if (m_autopilotMoving) | 1412 | if (m_autopilotMoving) |
1413 | CheckAtSitTarget(); | 1413 | CheckAtSitTarget(); |
1414 | 1414 | ||
1415 | if ((flags & AgentManager.ControlFlags.AGENT_CONTROL_SIT_ON_GROUND) != 0) | 1415 | if ((flags & AgentManager.ControlFlags.AGENT_CONTROL_SIT_ON_GROUND) != 0) |
1416 | { | 1416 | { |
1417 | m_updateCount = 0; // Kill animation update burst so that the SIT_G.. will stick. | 1417 | m_updateCount = 0; // Kill animation update burst so that the SIT_G.. will stick. |
1418 | Animator.TrySetMovementAnimation("SIT_GROUND_CONSTRAINED"); | 1418 | Animator.TrySetMovementAnimation("SIT_GROUND_CONSTRAINED"); |
1419 | 1419 | ||
1420 | // TODO: This doesn't prevent the user from walking yet. | 1420 | // TODO: This doesn't prevent the user from walking yet. |
1421 | // Setting parent ID would fix this, if we knew what value | 1421 | // Setting parent ID would fix this, if we knew what value |
1422 | // to use. Or we could add a m_isSitting variable. | 1422 | // to use. Or we could add a m_isSitting variable. |
1423 | //Animator.TrySetMovementAnimation("SIT_GROUND_CONSTRAINED"); | 1423 | //Animator.TrySetMovementAnimation("SIT_GROUND_CONSTRAINED"); |
1424 | SitGround = true; | 1424 | SitGround = true; |
1425 | } | 1425 | } |
1426 | 1426 | ||
1427 | // In the future, these values might need to go global. | 1427 | // In the future, these values might need to go global. |
1428 | // Here's where you get them. | 1428 | // Here's where you get them. |
1429 | m_AgentControlFlags = flags; | 1429 | m_AgentControlFlags = flags; |
1430 | m_headrotation = agentData.HeadRotation; | 1430 | m_headrotation = agentData.HeadRotation; |
1431 | m_state = agentData.State; | 1431 | m_state = agentData.State; |
1432 | 1432 | ||
1433 | PhysicsActor actor = PhysicsActor; | 1433 | PhysicsActor actor = PhysicsActor; |
1434 | if (actor == null) | 1434 | if (actor == null) |
1435 | { | 1435 | { |
1436 | return; | 1436 | return; |
1437 | } | 1437 | } |
1438 | 1438 | ||
1439 | bool update_movementflag = false; | 1439 | bool update_movementflag = false; |
1440 | 1440 | ||
1441 | if (m_allowMovement && !SitGround) | 1441 | if (m_allowMovement && !SitGround) |
1442 | { | 1442 | { |
1443 | if (agentData.UseClientAgentPosition) | 1443 | if (agentData.UseClientAgentPosition) |
1444 | { | 1444 | { |
1445 | m_moveToPositionInProgress = (agentData.ClientAgentPosition - AbsolutePosition).Length() > 0.2f; | 1445 | m_moveToPositionInProgress = (agentData.ClientAgentPosition - AbsolutePosition).Length() > 0.2f; |
1446 | m_moveToPositionTarget = agentData.ClientAgentPosition; | 1446 | m_moveToPositionTarget = agentData.ClientAgentPosition; |
1447 | } | 1447 | } |
1448 | 1448 | ||
1449 | int i = 0; | 1449 | int i = 0; |
1450 | 1450 | ||
1451 | bool update_rotation = false; | 1451 | bool update_rotation = false; |
1452 | bool DCFlagKeyPressed = false; | 1452 | bool DCFlagKeyPressed = false; |
1453 | Vector3 agent_control_v3 = Vector3.Zero; | 1453 | Vector3 agent_control_v3 = Vector3.Zero; |
1454 | Quaternion q = bodyRotation; | 1454 | Quaternion q = bodyRotation; |
1455 | 1455 | ||
1456 | bool oldflying = PhysicsActor.Flying; | 1456 | bool oldflying = PhysicsActor.Flying; |
1457 | 1457 | ||
1458 | if (m_forceFly) | 1458 | if (m_forceFly) |
1459 | actor.Flying = true; | 1459 | actor.Flying = true; |
1460 | else if (m_flyDisabled) | 1460 | else if (m_flyDisabled) |
1461 | actor.Flying = false; | 1461 | actor.Flying = false; |
1462 | else | 1462 | else |
1463 | actor.Flying = ((flags & AgentManager.ControlFlags.AGENT_CONTROL_FLY) != 0); | 1463 | actor.Flying = ((flags & AgentManager.ControlFlags.AGENT_CONTROL_FLY) != 0); |
1464 | 1464 | ||
1465 | if (actor.Flying != oldflying) | 1465 | if (actor.Flying != oldflying) |
1466 | update_movementflag = true; | 1466 | update_movementflag = true; |
1467 | 1467 | ||
1468 | if (q != m_bodyRot) | 1468 | if (q != m_bodyRot) |
1469 | { | 1469 | { |
1470 | m_bodyRot = q; | 1470 | m_bodyRot = q; |
1471 | update_rotation = true; | 1471 | update_rotation = true; |
1472 | } | 1472 | } |
1473 | 1473 | ||
1474 | //guilty until proven innocent.. | 1474 | //guilty until proven innocent.. |
1475 | bool Nudging = true; | 1475 | bool Nudging = true; |
1476 | //Basically, if there is at least one non-nudge control then we don't need | 1476 | //Basically, if there is at least one non-nudge control then we don't need |
1477 | //to worry about stopping the avatar | 1477 | //to worry about stopping the avatar |
1478 | 1478 | ||
1479 | if (m_parentID == 0) | 1479 | if (m_parentID == 0) |
1480 | { | 1480 | { |
1481 | bool bAllowUpdateMoveToPosition = false; | 1481 | bool bAllowUpdateMoveToPosition = false; |
1482 | bool bResetMoveToPosition = false; | 1482 | bool bResetMoveToPosition = false; |
1483 | 1483 | ||
1484 | Vector3[] dirVectors; | 1484 | Vector3[] dirVectors; |
1485 | 1485 | ||
1486 | // use camera up angle when in mouselook and not flying or when holding the left mouse button down and not flying | 1486 | // use camera up angle when in mouselook and not flying or when holding the left mouse button down and not flying |
1487 | // this prevents 'jumping' in inappropriate situations. | 1487 | // this prevents 'jumping' in inappropriate situations. |
1488 | if ((m_mouseLook && !m_physicsActor.Flying) || (m_leftButtonDown && !m_physicsActor.Flying)) | 1488 | if ((m_mouseLook && !m_physicsActor.Flying) || (m_leftButtonDown && !m_physicsActor.Flying)) |
1489 | dirVectors = GetWalkDirectionVectors(); | 1489 | dirVectors = GetWalkDirectionVectors(); |
1490 | else | 1490 | else |
1491 | dirVectors = Dir_Vectors; | 1491 | dirVectors = Dir_Vectors; |
1492 | 1492 | ||
1493 | bool[] isNudge = GetDirectionIsNudge(); | 1493 | bool[] isNudge = GetDirectionIsNudge(); |
1494 | 1494 | ||
1495 | 1495 | ||
1496 | 1496 | ||
1497 | 1497 | ||
1498 | 1498 | ||
1499 | foreach (Dir_ControlFlags DCF in DIR_CONTROL_FLAGS) | 1499 | foreach (Dir_ControlFlags DCF in DIR_CONTROL_FLAGS) |
1500 | { | 1500 | { |
1501 | if (((uint)flags & (uint)DCF) != 0) | 1501 | if (((uint)flags & (uint)DCF) != 0) |
1502 | { | 1502 | { |
1503 | bResetMoveToPosition = true; | 1503 | bResetMoveToPosition = true; |
1504 | DCFlagKeyPressed = true; | 1504 | DCFlagKeyPressed = true; |
1505 | try | 1505 | try |
1506 | { | 1506 | { |
1507 | agent_control_v3 += dirVectors[i]; | 1507 | agent_control_v3 += dirVectors[i]; |
1508 | if (isNudge[i] == false) | 1508 | if (isNudge[i] == false) |
1509 | { | 1509 | { |
1510 | Nudging = false; | 1510 | Nudging = false; |
1511 | } | 1511 | } |
1512 | } | 1512 | } |
1513 | catch (IndexOutOfRangeException) | 1513 | catch (IndexOutOfRangeException) |
1514 | { | 1514 | { |
1515 | // Why did I get this? | 1515 | // Why did I get this? |
1516 | } | 1516 | } |
1517 | 1517 | ||
1518 | if ((m_movementflag & (uint)DCF) == 0) | 1518 | if ((m_movementflag & (uint)DCF) == 0) |
1519 | { | 1519 | { |
1520 | m_movementflag += (byte)(uint)DCF; | 1520 | m_movementflag += (byte)(uint)DCF; |
1521 | update_movementflag = true; | 1521 | update_movementflag = true; |
1522 | } | 1522 | } |
1523 | } | 1523 | } |
1524 | else | 1524 | else |
1525 | { | 1525 | { |
1526 | if ((m_movementflag & (uint)DCF) != 0) | 1526 | if ((m_movementflag & (uint)DCF) != 0) |
1527 | { | 1527 | { |
1528 | m_movementflag -= (byte)(uint)DCF; | 1528 | m_movementflag -= (byte)(uint)DCF; |
1529 | update_movementflag = true; | 1529 | update_movementflag = true; |
1530 | } | 1530 | } |
1531 | else | 1531 | else |
1532 | { | 1532 | { |
1533 | bAllowUpdateMoveToPosition = true; | 1533 | bAllowUpdateMoveToPosition = true; |
1534 | } | 1534 | } |
1535 | } | 1535 | } |
1536 | i++; | 1536 | i++; |
1537 | } | 1537 | } |
1538 | //Paupaw:Do Proper PID for Autopilot here | 1538 | //Paupaw:Do Proper PID for Autopilot here |
1539 | if (bResetMoveToPosition) | 1539 | if (bResetMoveToPosition) |
1540 | { | 1540 | { |
1541 | m_moveToPositionTarget = Vector3.Zero; | 1541 | m_moveToPositionTarget = Vector3.Zero; |
1542 | m_moveToPositionInProgress = false; | 1542 | m_moveToPositionInProgress = false; |
1543 | update_movementflag = true; | 1543 | update_movementflag = true; |
1544 | bAllowUpdateMoveToPosition = false; | 1544 | bAllowUpdateMoveToPosition = false; |
1545 | } | 1545 | } |
1546 | 1546 | ||
1547 | if (bAllowUpdateMoveToPosition && (m_moveToPositionInProgress && !m_autopilotMoving)) | 1547 | if (bAllowUpdateMoveToPosition && (m_moveToPositionInProgress && !m_autopilotMoving)) |
1548 | { | 1548 | { |
1549 | //Check the error term of the current position in relation to the target position | 1549 | //Check the error term of the current position in relation to the target position |
1550 | if (Util.GetDistanceTo(AbsolutePosition, m_moveToPositionTarget) <= 0.5f) | 1550 | if (Util.GetDistanceTo(AbsolutePosition, m_moveToPositionTarget) <= 0.5f) |
1551 | { | 1551 | { |
1552 | // we are close enough to the target | 1552 | // we are close enough to the target |
1553 | m_moveToPositionTarget = Vector3.Zero; | 1553 | m_moveToPositionTarget = Vector3.Zero; |
1554 | m_moveToPositionInProgress = false; | 1554 | m_moveToPositionInProgress = false; |
1555 | update_movementflag = true; | 1555 | update_movementflag = true; |
1556 | } | 1556 | } |
1557 | else | 1557 | else |
1558 | { | 1558 | { |
1559 | try | 1559 | try |
1560 | { | 1560 | { |
1561 | // move avatar in 2D at one meter/second towards target, in avatar coordinate frame. | 1561 | // move avatar in 2D at one meter/second towards target, in avatar coordinate frame. |
1562 | // This movement vector gets added to the velocity through AddNewMovement(). | 1562 | // This movement vector gets added to the velocity through AddNewMovement(). |
1563 | // Theoretically we might need a more complex PID approach here if other | 1563 | // Theoretically we might need a more complex PID approach here if other |
1564 | // unknown forces are acting on the avatar and we need to adaptively respond | 1564 | // unknown forces are acting on the avatar and we need to adaptively respond |
1565 | // to such forces, but the following simple approach seems to works fine. | 1565 | // to such forces, but the following simple approach seems to works fine. |
1566 | Vector3 LocalVectorToTarget3D = | 1566 | Vector3 LocalVectorToTarget3D = |
1567 | (m_moveToPositionTarget - AbsolutePosition) // vector from cur. pos to target in global coords | 1567 | (m_moveToPositionTarget - AbsolutePosition) // vector from cur. pos to target in global coords |
1568 | * Matrix4.CreateFromQuaternion(Quaternion.Inverse(bodyRotation)); // change to avatar coords | 1568 | * Matrix4.CreateFromQuaternion(Quaternion.Inverse(bodyRotation)); // change to avatar coords |
1569 | // Ignore z component of vector | 1569 | // Ignore z component of vector |
1570 | Vector3 LocalVectorToTarget2D = new Vector3((float)(LocalVectorToTarget3D.X), (float)(LocalVectorToTarget3D.Y), 0f); | 1570 | Vector3 LocalVectorToTarget2D = new Vector3((float)(LocalVectorToTarget3D.X), (float)(LocalVectorToTarget3D.Y), 0f); |
1571 | LocalVectorToTarget2D.Normalize(); | 1571 | LocalVectorToTarget2D.Normalize(); |
1572 | 1572 | ||
1573 | //We're not nudging | 1573 | //We're not nudging |
1574 | Nudging = false; | 1574 | Nudging = false; |
1575 | agent_control_v3 += LocalVectorToTarget2D; | 1575 | agent_control_v3 += LocalVectorToTarget2D; |
1576 | 1576 | ||
1577 | // update avatar movement flags. the avatar coordinate system is as follows: | 1577 | // update avatar movement flags. the avatar coordinate system is as follows: |
1578 | // | 1578 | // |
1579 | // +X (forward) | 1579 | // +X (forward) |
1580 | // | 1580 | // |
1581 | // ^ | 1581 | // ^ |
1582 | // | | 1582 | // | |
1583 | // | | 1583 | // | |
1584 | // | | 1584 | // | |
1585 | // | | 1585 | // | |
1586 | // (left) +Y <--------o--------> -Y | 1586 | // (left) +Y <--------o--------> -Y |
1587 | // avatar | 1587 | // avatar |
1588 | // | | 1588 | // | |
1589 | // | | 1589 | // | |
1590 | // | | 1590 | // | |
1591 | // | | 1591 | // | |
1592 | // v | 1592 | // v |
1593 | // -X | 1593 | // -X |
1594 | // | 1594 | // |
1595 | 1595 | ||
1596 | // based on the above avatar coordinate system, classify the movement into | 1596 | // based on the above avatar coordinate system, classify the movement into |
1597 | // one of left/right/back/forward. | 1597 | // one of left/right/back/forward. |
1598 | if (LocalVectorToTarget2D.Y > 0)//MoveLeft | 1598 | if (LocalVectorToTarget2D.Y > 0)//MoveLeft |
1599 | { | 1599 | { |
1600 | m_movementflag += (byte)(uint)Dir_ControlFlags.DIR_CONTROL_FLAG_LEFT; | 1600 | m_movementflag += (byte)(uint)Dir_ControlFlags.DIR_CONTROL_FLAG_LEFT; |
1601 | //AgentControlFlags | 1601 | //AgentControlFlags |
1602 | AgentControlFlags |= (uint)Dir_ControlFlags.DIR_CONTROL_FLAG_LEFT; | 1602 | AgentControlFlags |= (uint)Dir_ControlFlags.DIR_CONTROL_FLAG_LEFT; |
1603 | update_movementflag = true; | 1603 | update_movementflag = true; |
1604 | } | 1604 | } |
1605 | else if (LocalVectorToTarget2D.Y < 0) //MoveRight | 1605 | else if (LocalVectorToTarget2D.Y < 0) //MoveRight |
1606 | { | 1606 | { |
1607 | m_movementflag += (byte)(uint)Dir_ControlFlags.DIR_CONTROL_FLAG_RIGHT; | 1607 | m_movementflag += (byte)(uint)Dir_ControlFlags.DIR_CONTROL_FLAG_RIGHT; |
1608 | AgentControlFlags |= (uint)Dir_ControlFlags.DIR_CONTROL_FLAG_RIGHT; | 1608 | AgentControlFlags |= (uint)Dir_ControlFlags.DIR_CONTROL_FLAG_RIGHT; |
1609 | update_movementflag = true; | 1609 | update_movementflag = true; |
1610 | } | 1610 | } |
1611 | if (LocalVectorToTarget2D.X < 0) //MoveBack | 1611 | if (LocalVectorToTarget2D.X < 0) //MoveBack |
1612 | { | 1612 | { |
1613 | m_movementflag += (byte)(uint)Dir_ControlFlags.DIR_CONTROL_FLAG_BACK; | 1613 | m_movementflag += (byte)(uint)Dir_ControlFlags.DIR_CONTROL_FLAG_BACK; |
1614 | AgentControlFlags |= (uint)Dir_ControlFlags.DIR_CONTROL_FLAG_BACK; | 1614 | AgentControlFlags |= (uint)Dir_ControlFlags.DIR_CONTROL_FLAG_BACK; |
1615 | update_movementflag = true; | 1615 | update_movementflag = true; |
1616 | } | 1616 | } |
1617 | else if (LocalVectorToTarget2D.X > 0) //Move Forward | 1617 | else if (LocalVectorToTarget2D.X > 0) //Move Forward |
1618 | { | 1618 | { |
1619 | m_movementflag += (byte)(uint)Dir_ControlFlags.DIR_CONTROL_FLAG_FORWARD; | 1619 | m_movementflag += (byte)(uint)Dir_ControlFlags.DIR_CONTROL_FLAG_FORWARD; |
1620 | AgentControlFlags |= (uint)Dir_ControlFlags.DIR_CONTROL_FLAG_FORWARD; | 1620 | AgentControlFlags |= (uint)Dir_ControlFlags.DIR_CONTROL_FLAG_FORWARD; |
1621 | update_movementflag = true; | 1621 | update_movementflag = true; |
1622 | } | 1622 | } |
1623 | } | 1623 | } |
1624 | catch (Exception e) | 1624 | catch (Exception e) |
1625 | { | 1625 | { |
1626 | //Avoid system crash, can be slower but... | 1626 | //Avoid system crash, can be slower but... |
1627 | m_log.DebugFormat("Crash! {0}", e.ToString()); | 1627 | m_log.DebugFormat("Crash! {0}", e.ToString()); |
1628 | } | 1628 | } |
1629 | } | 1629 | } |
1630 | } | 1630 | } |
1631 | } | 1631 | } |
1632 | 1632 | ||
1633 | // Cause the avatar to stop flying if it's colliding | 1633 | // Cause the avatar to stop flying if it's colliding |
1634 | // with something with the down arrow pressed. | 1634 | // with something with the down arrow pressed. |
1635 | 1635 | ||
1636 | // Only do this if we're flying | 1636 | // Only do this if we're flying |
1637 | if (m_physicsActor != null && m_physicsActor.Flying && !m_forceFly) | 1637 | if (m_physicsActor != null && m_physicsActor.Flying && !m_forceFly) |
1638 | { | 1638 | { |
1639 | // Landing detection code | 1639 | // Landing detection code |
1640 | 1640 | ||
1641 | // Are the landing controls requirements filled? | 1641 | // Are the landing controls requirements filled? |
1642 | bool controlland = (((flags & AgentManager.ControlFlags.AGENT_CONTROL_UP_NEG) != 0) || | 1642 | bool controlland = (((flags & AgentManager.ControlFlags.AGENT_CONTROL_UP_NEG) != 0) || |
1643 | ((flags & AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_UP_NEG) != 0)); | 1643 | ((flags & AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_UP_NEG) != 0)); |
1644 | 1644 | ||
1645 | // Are the collision requirements fulfilled? | 1645 | // Are the collision requirements fulfilled? |
1646 | bool colliding = (m_physicsActor.IsColliding == true); | 1646 | bool colliding = (m_physicsActor.IsColliding == true); |
1647 | 1647 | ||
1648 | if (m_physicsActor.Flying && colliding && controlland) | 1648 | if (m_physicsActor.Flying && colliding && controlland) |
1649 | { | 1649 | { |
1650 | // nesting this check because LengthSquared() is expensive and we don't | 1650 | // nesting this check because LengthSquared() is expensive and we don't |
1651 | // want to do it every step when flying. | 1651 | // want to do it every step when flying. |
1652 | if ((Velocity.LengthSquared() <= LAND_VELOCITYMAG_MAX)) | 1652 | if ((Velocity.LengthSquared() <= LAND_VELOCITYMAG_MAX)) |
1653 | StopFlying(); | 1653 | StopFlying(); |
1654 | } | 1654 | } |
1655 | } | 1655 | } |
1656 | 1656 | ||
1657 | if (update_movementflag || (update_rotation && DCFlagKeyPressed)) | 1657 | if (update_movementflag || (update_rotation && DCFlagKeyPressed)) |
1658 | { | 1658 | { |
1659 | // m_log.DebugFormat("{0} {1}", update_movementflag, (update_rotation && DCFlagKeyPressed)); | 1659 | // m_log.DebugFormat("{0} {1}", update_movementflag, (update_rotation && DCFlagKeyPressed)); |
1660 | // m_log.DebugFormat( | 1660 | // m_log.DebugFormat( |
1661 | // "In {0} adding velocity to {1} of {2}", m_scene.RegionInfo.RegionName, Name, agent_control_v3); | 1661 | // "In {0} adding velocity to {1} of {2}", m_scene.RegionInfo.RegionName, Name, agent_control_v3); |
1662 | 1662 | ||
1663 | AddNewMovement(agent_control_v3, q, Nudging); | 1663 | AddNewMovement(agent_control_v3, q, Nudging); |
1664 | 1664 | ||
1665 | 1665 | ||
1666 | } | 1666 | } |
1667 | } | 1667 | } |
1668 | 1668 | ||
1669 | if (update_movementflag && !SitGround) | 1669 | if (update_movementflag && !SitGround) |
1670 | Animator.UpdateMovementAnimations(); | 1670 | Animator.UpdateMovementAnimations(); |
1671 | 1671 | ||
1672 | m_scene.EventManager.TriggerOnClientMovement(this); | 1672 | m_scene.EventManager.TriggerOnClientMovement(this); |
1673 | 1673 | ||
1674 | m_scene.StatsReporter.AddAgentTime(Util.EnvironmentTickCountSubtract(m_perfMonMS)); | 1674 | m_scene.StatsReporter.AddAgentTime(Util.EnvironmentTickCountSubtract(m_perfMonMS)); |
1675 | } | 1675 | } |
1676 | 1676 | ||
1677 | public void DoAutoPilot(uint not_used, Vector3 Pos, IClientAPI remote_client) | 1677 | public void DoAutoPilot(uint not_used, Vector3 Pos, IClientAPI remote_client) |
1678 | { | 1678 | { |
1679 | m_autopilotMoving = true; | 1679 | m_autopilotMoving = true; |
1680 | m_autoPilotTarget = Pos; | 1680 | m_autoPilotTarget = Pos; |
1681 | m_sitAtAutoTarget = false; | 1681 | m_sitAtAutoTarget = false; |
1682 | PrimitiveBaseShape proxy = PrimitiveBaseShape.Default; | 1682 | PrimitiveBaseShape proxy = PrimitiveBaseShape.Default; |
1683 | //proxy.PCode = (byte)PCode.ParticleSystem; | 1683 | //proxy.PCode = (byte)PCode.ParticleSystem; |
1684 | proxyObjectGroup = new SceneObjectGroup(UUID, Pos, Rotation, proxy); | 1684 | proxyObjectGroup = new SceneObjectGroup(UUID, Pos, Rotation, proxy); |
1685 | proxyObjectGroup.AttachToScene(m_scene); | 1685 | proxyObjectGroup.AttachToScene(m_scene); |
1686 | 1686 | ||
1687 | // Commented out this code since it could never have executed, but might still be informative. | 1687 | // Commented out this code since it could never have executed, but might still be informative. |
1688 | // if (proxyObjectGroup != null) | 1688 | // if (proxyObjectGroup != null) |
1689 | // { | 1689 | // { |
1690 | proxyObjectGroup.SendGroupFullUpdate(); | 1690 | proxyObjectGroup.SendGroupFullUpdate(); |
1691 | remote_client.SendSitResponse(proxyObjectGroup.UUID, Vector3.Zero, Quaternion.Identity, true, Vector3.Zero, Vector3.Zero, false); | 1691 | remote_client.SendSitResponse(proxyObjectGroup.UUID, Vector3.Zero, Quaternion.Identity, true, Vector3.Zero, Vector3.Zero, false); |
1692 | m_scene.DeleteSceneObject(proxyObjectGroup, false); | 1692 | m_scene.DeleteSceneObject(proxyObjectGroup, false); |
1693 | // } | 1693 | // } |
1694 | // else | 1694 | // else |
1695 | // { | 1695 | // { |
1696 | // m_autopilotMoving = false; | 1696 | // m_autopilotMoving = false; |
1697 | // m_autoPilotTarget = Vector3.Zero; | 1697 | // m_autoPilotTarget = Vector3.Zero; |
1698 | // ControllingClient.SendAlertMessage("Autopilot cancelled"); | 1698 | // ControllingClient.SendAlertMessage("Autopilot cancelled"); |
1699 | // } | 1699 | // } |
1700 | } | 1700 | } |
1701 | 1701 | ||
1702 | public void DoMoveToPosition(Object sender, string method, List<String> args) | 1702 | public void DoMoveToPosition(Object sender, string method, List<String> args) |
1703 | { | 1703 | { |
1704 | try | 1704 | try |
1705 | { | 1705 | { |
1706 | float locx = 0f; | 1706 | float locx = 0f; |
1707 | float locy = 0f; | 1707 | float locy = 0f; |
1708 | float locz = 0f; | 1708 | float locz = 0f; |
1709 | uint regionX = 0; | 1709 | uint regionX = 0; |
1710 | uint regionY = 0; | 1710 | uint regionY = 0; |
1711 | try | 1711 | try |
1712 | { | 1712 | { |
1713 | Utils.LongToUInts(Scene.RegionInfo.RegionHandle, out regionX, out regionY); | 1713 | Utils.LongToUInts(Scene.RegionInfo.RegionHandle, out regionX, out regionY); |
1714 | locx = Convert.ToSingle(args[0]) - (float)regionX; | 1714 | locx = Convert.ToSingle(args[0]) - (float)regionX; |
1715 | locy = Convert.ToSingle(args[1]) - (float)regionY; | 1715 | locy = Convert.ToSingle(args[1]) - (float)regionY; |
1716 | locz = Convert.ToSingle(args[2]); | 1716 | locz = Convert.ToSingle(args[2]); |
1717 | } | 1717 | } |
1718 | catch (InvalidCastException) | 1718 | catch (InvalidCastException) |
1719 | { | 1719 | { |
1720 | m_log.Error("[CLIENT]: Invalid autopilot request"); | 1720 | m_log.Error("[CLIENT]: Invalid autopilot request"); |
1721 | return; | 1721 | return; |
1722 | } | 1722 | } |
1723 | m_moveToPositionInProgress = true; | 1723 | m_moveToPositionInProgress = true; |
1724 | m_moveToPositionTarget = new Vector3(locx, locy, locz); | 1724 | m_moveToPositionTarget = new Vector3(locx, locy, locz); |
1725 | } | 1725 | } |
1726 | catch (Exception ex) | 1726 | catch (Exception ex) |
1727 | { | 1727 | { |
1728 | //Why did I get this error? | 1728 | //Why did I get this error? |
1729 | m_log.Error("[SCENEPRESENCE]: DoMoveToPosition" + ex); | 1729 | m_log.Error("[SCENEPRESENCE]: DoMoveToPosition" + ex); |
1730 | } | 1730 | } |
1731 | } | 1731 | } |
1732 | 1732 | ||
1733 | private void CheckAtSitTarget() | 1733 | private void CheckAtSitTarget() |
1734 | { | 1734 | { |
1735 | //m_log.Debug("[AUTOPILOT]: " + Util.GetDistanceTo(AbsolutePosition, m_autoPilotTarget).ToString()); | 1735 | //m_log.Debug("[AUTOPILOT]: " + Util.GetDistanceTo(AbsolutePosition, m_autoPilotTarget).ToString()); |
1736 | if (Util.GetDistanceTo(AbsolutePosition, m_autoPilotTarget) <= 1.5) | 1736 | if (Util.GetDistanceTo(AbsolutePosition, m_autoPilotTarget) <= 1.5) |
1737 | { | 1737 | { |
1738 | if (m_sitAtAutoTarget) | 1738 | if (m_sitAtAutoTarget) |
1739 | { | 1739 | { |
1740 | SceneObjectPart part = m_scene.GetSceneObjectPart(m_requestedSitTargetUUID); | 1740 | SceneObjectPart part = m_scene.GetSceneObjectPart(m_requestedSitTargetUUID); |
1741 | if (part != null) | 1741 | if (part != null) |
1742 | { | 1742 | { |
1743 | AbsolutePosition = part.AbsolutePosition; | 1743 | AbsolutePosition = part.AbsolutePosition; |
1744 | Velocity = Vector3.Zero; | 1744 | Velocity = Vector3.Zero; |
1745 | SendFullUpdateToAllClients(); | 1745 | SendFullUpdateToAllClients(); |
1746 | 1746 | ||
1747 | HandleAgentSit(ControllingClient, m_requestedSitTargetUUID); //KF ?? | 1747 | HandleAgentSit(ControllingClient, m_requestedSitTargetUUID); //KF ?? |
1748 | } | 1748 | } |
1749 | //ControllingClient.SendSitResponse(m_requestedSitTargetID, m_requestedSitOffset, Quaternion.Identity, false, Vector3.Zero, Vector3.Zero, false); | 1749 | //ControllingClient.SendSitResponse(m_requestedSitTargetID, m_requestedSitOffset, Quaternion.Identity, false, Vector3.Zero, Vector3.Zero, false); |
1750 | m_requestedSitTargetUUID = UUID.Zero; | 1750 | m_requestedSitTargetUUID = UUID.Zero; |
1751 | } | 1751 | } |
1752 | /* | 1752 | /* |
1753 | else | 1753 | else |
1754 | { | 1754 | { |
1755 | //ControllingClient.SendAlertMessage("Autopilot cancelled"); | 1755 | //ControllingClient.SendAlertMessage("Autopilot cancelled"); |
1756 | //SendTerseUpdateToAllClients(); | 1756 | //SendTerseUpdateToAllClients(); |
1757 | //PrimitiveBaseShape proxy = PrimitiveBaseShape.Default; | 1757 | //PrimitiveBaseShape proxy = PrimitiveBaseShape.Default; |
1758 | //proxy.PCode = (byte)PCode.ParticleSystem; | 1758 | //proxy.PCode = (byte)PCode.ParticleSystem; |
1759 | ////uint nextUUID = m_scene.NextLocalId; | 1759 | ////uint nextUUID = m_scene.NextLocalId; |
1760 | 1760 | ||
1761 | //proxyObjectGroup = new SceneObjectGroup(m_scene, m_scene.RegionInfo.RegionHandle, UUID, nextUUID, m_autoPilotTarget, Quaternion.Identity, proxy); | 1761 | //proxyObjectGroup = new SceneObjectGroup(m_scene, m_scene.RegionInfo.RegionHandle, UUID, nextUUID, m_autoPilotTarget, Quaternion.Identity, proxy); |
1762 | //if (proxyObjectGroup != null) | 1762 | //if (proxyObjectGroup != null) |
1763 | //{ | 1763 | //{ |
1764 | //proxyObjectGroup.SendGroupFullUpdate(); | 1764 | //proxyObjectGroup.SendGroupFullUpdate(); |
1765 | //ControllingClient.SendSitResponse(UUID.Zero, m_autoPilotTarget, Quaternion.Identity, true, Vector3.Zero, Vector3.Zero, false); | 1765 | //ControllingClient.SendSitResponse(UUID.Zero, m_autoPilotTarget, Quaternion.Identity, true, Vector3.Zero, Vector3.Zero, false); |
1766 | //m_scene.DeleteSceneObject(proxyObjectGroup); | 1766 | //m_scene.DeleteSceneObject(proxyObjectGroup); |
1767 | //} | 1767 | //} |
1768 | } | 1768 | } |
1769 | */ | 1769 | */ |
1770 | m_autoPilotTarget = Vector3.Zero; | 1770 | m_autoPilotTarget = Vector3.Zero; |
1771 | m_autopilotMoving = false; | 1771 | m_autopilotMoving = false; |
1772 | } | 1772 | } |
1773 | } | 1773 | } |
1774 | /// <summary> | 1774 | /// <summary> |
1775 | /// Perform the logic necessary to stand the avatar up. This method also executes | 1775 | /// Perform the logic necessary to stand the avatar up. This method also executes |
1776 | /// the stand animation. | 1776 | /// the stand animation. |
1777 | /// </summary> | 1777 | /// </summary> |
1778 | public void StandUp() | 1778 | public void StandUp() |
1779 | { | 1779 | { |
1780 | SitGround = false; | 1780 | SitGround = false; |
1781 | 1781 | ||
1782 | if (m_parentID != 0) | 1782 | if (m_parentID != 0) |
1783 | { | 1783 | { |
1784 | SceneObjectPart part = m_scene.GetSceneObjectPart(m_requestedSitTargetID); | 1784 | SceneObjectPart part = m_scene.GetSceneObjectPart(m_requestedSitTargetID); |
1785 | if (part != null) | 1785 | if (part != null) |
1786 | { | 1786 | { |
1787 | part.TaskInventory.LockItemsForRead(true); | 1787 | part.TaskInventory.LockItemsForRead(true); |
1788 | TaskInventoryDictionary taskIDict = part.TaskInventory; | 1788 | TaskInventoryDictionary taskIDict = part.TaskInventory; |
1789 | if (taskIDict != null) | 1789 | if (taskIDict != null) |
1790 | { | 1790 | { |
1791 | foreach (UUID taskID in taskIDict.Keys) | 1791 | foreach (UUID taskID in taskIDict.Keys) |
1792 | { | 1792 | { |
1793 | UnRegisterControlEventsToScript(LocalId, taskID); | 1793 | UnRegisterControlEventsToScript(LocalId, taskID); |
1794 | taskIDict[taskID].PermsMask &= ~( | 1794 | taskIDict[taskID].PermsMask &= ~( |
1795 | 2048 | //PERMISSION_CONTROL_CAMERA | 1795 | 2048 | //PERMISSION_CONTROL_CAMERA |
1796 | 4); // PERMISSION_TAKE_CONTROLS | 1796 | 4); // PERMISSION_TAKE_CONTROLS |
1797 | } | 1797 | } |
1798 | } | 1798 | } |
1799 | part.TaskInventory.LockItemsForRead(false); | 1799 | part.TaskInventory.LockItemsForRead(false); |
1800 | // Reset sit target. | 1800 | // Reset sit target. |
1801 | if (part.GetAvatarOnSitTarget() == UUID) | 1801 | if (part.GetAvatarOnSitTarget() == UUID) |
1802 | part.SetAvatarOnSitTarget(UUID.Zero); | 1802 | part.SetAvatarOnSitTarget(UUID.Zero); |
1803 | m_parentPosition = part.GetWorldPosition(); | 1803 | m_parentPosition = part.GetWorldPosition(); |
1804 | ControllingClient.SendClearFollowCamProperties(part.ParentUUID); | 1804 | ControllingClient.SendClearFollowCamProperties(part.ParentUUID); |
1805 | } | 1805 | } |
1806 | // part.GetWorldRotation() is the rotation of the object being sat on | 1806 | // part.GetWorldRotation() is the rotation of the object being sat on |
1807 | // Rotation is the sittiing Av's rotation | 1807 | // Rotation is the sittiing Av's rotation |
1808 | 1808 | ||
1809 | Quaternion partRot; | 1809 | Quaternion partRot; |
1810 | // if (part.LinkNum == 1) | 1810 | // if (part.LinkNum == 1) |
1811 | // { // Root prim of linkset | 1811 | // { // Root prim of linkset |
1812 | // partRot = part.ParentGroup.RootPart.RotationOffset; | 1812 | // partRot = part.ParentGroup.RootPart.RotationOffset; |
1813 | // } | 1813 | // } |
1814 | // else | 1814 | // else |
1815 | // { // single or child prim | 1815 | // { // single or child prim |
1816 | 1816 | ||
1817 | // } | 1817 | // } |
1818 | if (part == null) //CW: Part may be gone. llDie() for example. | 1818 | if (part == null) //CW: Part may be gone. llDie() for example. |
1819 | { | 1819 | { |
1820 | partRot = new Quaternion(0.0f, 0.0f, 0.0f, 1.0f); | 1820 | partRot = new Quaternion(0.0f, 0.0f, 0.0f, 1.0f); |
1821 | } | 1821 | } |
1822 | else | 1822 | else |
1823 | { | 1823 | { |
1824 | partRot = part.GetWorldRotation(); | 1824 | partRot = part.GetWorldRotation(); |
1825 | } | 1825 | } |
1826 | 1826 | ||
1827 | Quaternion partIRot = Quaternion.Inverse(partRot); | 1827 | Quaternion partIRot = Quaternion.Inverse(partRot); |
1828 | 1828 | ||
1829 | Quaternion avatarRot = Quaternion.Inverse(Quaternion.Inverse(Rotation) * partIRot); // world or. of the av | 1829 | Quaternion avatarRot = Quaternion.Inverse(Quaternion.Inverse(Rotation) * partIRot); // world or. of the av |
1830 | Vector3 avStandUp = new Vector3(1.0f, 0f, 0f) * avatarRot; // 1M infront of av | 1830 | Vector3 avStandUp = new Vector3(1.0f, 0f, 0f) * avatarRot; // 1M infront of av |
1831 | 1831 | ||
1832 | 1832 | ||
1833 | if (m_physicsActor == null) | 1833 | if (m_physicsActor == null) |
1834 | { | 1834 | { |
1835 | AddToPhysicalScene(false); | 1835 | AddToPhysicalScene(false); |
1836 | } | 1836 | } |
1837 | //CW: If the part isn't null then we can set the current position | 1837 | //CW: If the part isn't null then we can set the current position |
1838 | if (part != null) | 1838 | if (part != null) |
1839 | { | 1839 | { |
1840 | Vector3 avWorldStandUp = avStandUp + part.GetWorldPosition() + ((m_pos - part.OffsetPosition) * partRot); // + av sit offset! | 1840 | Vector3 avWorldStandUp = avStandUp + part.GetWorldPosition() + ((m_pos - part.OffsetPosition) * partRot); // + av sit offset! |
1841 | AbsolutePosition = avWorldStandUp; //KF: Fix stand up. | 1841 | AbsolutePosition = avWorldStandUp; //KF: Fix stand up. |
1842 | part.IsOccupied = false; | 1842 | part.IsOccupied = false; |
1843 | part.ParentGroup.DeleteAvatar(ControllingClient.AgentId); | 1843 | part.ParentGroup.DeleteAvatar(ControllingClient.AgentId); |
1844 | } | 1844 | } |
1845 | else | 1845 | else |
1846 | { | 1846 | { |
1847 | //CW: Since the part doesn't exist, a coarse standup position isn't an issue | 1847 | //CW: Since the part doesn't exist, a coarse standup position isn't an issue |
1848 | AbsolutePosition = m_lastWorldPosition; | 1848 | AbsolutePosition = m_lastWorldPosition; |
1849 | } | 1849 | } |
1850 | 1850 | ||
1851 | m_parentPosition = Vector3.Zero; | 1851 | m_parentPosition = Vector3.Zero; |
1852 | m_parentID = 0; | 1852 | m_parentID = 0; |
1853 | m_linkedPrim = UUID.Zero; | 1853 | m_linkedPrim = UUID.Zero; |
1854 | m_offsetRotation = new Quaternion(0.0f, 0.0f, 0.0f, 1.0f); | 1854 | m_offsetRotation = new Quaternion(0.0f, 0.0f, 0.0f, 1.0f); |
1855 | SendFullUpdateToAllClients(); | 1855 | SendFullUpdateToAllClients(); |
1856 | m_requestedSitTargetID = 0; | 1856 | m_requestedSitTargetID = 0; |
1857 | 1857 | ||
1858 | if ((m_physicsActor != null) && (m_avHeight > 0)) | 1858 | if ((m_physicsActor != null) && (m_avHeight > 0)) |
1859 | { | 1859 | { |
1860 | SetHeight(m_avHeight); | 1860 | SetHeight(m_avHeight); |
1861 | } | 1861 | } |
1862 | } | 1862 | } |
1863 | Animator.TrySetMovementAnimation("STAND"); | 1863 | Animator.TrySetMovementAnimation("STAND"); |
1864 | } | 1864 | } |
1865 | 1865 | ||
1866 | private SceneObjectPart FindNextAvailableSitTarget(UUID targetID) | 1866 | private SceneObjectPart FindNextAvailableSitTarget(UUID targetID) |
1867 | { | 1867 | { |
1868 | SceneObjectPart targetPart = m_scene.GetSceneObjectPart(targetID); | 1868 | SceneObjectPart targetPart = m_scene.GetSceneObjectPart(targetID); |
1869 | if (targetPart == null) | 1869 | if (targetPart == null) |
1870 | return null; | 1870 | return null; |
1871 | 1871 | ||
1872 | // If the primitive the player clicked on has a sit target and that sit target is not full, that sit target is used. | 1872 | // If the primitive the player clicked on has a sit target and that sit target is not full, that sit target is used. |
1873 | // If the primitive the player clicked on has no sit target, and one or more other linked objects have sit targets that are not full, the sit target of the object with the lowest link number will be used. | 1873 | // If the primitive the player clicked on has no sit target, and one or more other linked objects have sit targets that are not full, the sit target of the object with the lowest link number will be used. |
1874 | 1874 | ||
1875 | // Get our own copy of the part array, and sort into the order we want to test | 1875 | // Get our own copy of the part array, and sort into the order we want to test |
1876 | SceneObjectPart[] partArray = targetPart.ParentGroup.GetParts(); | 1876 | SceneObjectPart[] partArray = targetPart.ParentGroup.GetParts(); |
1877 | Array.Sort(partArray, delegate(SceneObjectPart p1, SceneObjectPart p2) | 1877 | Array.Sort(partArray, delegate(SceneObjectPart p1, SceneObjectPart p2) |
1878 | { | 1878 | { |
1879 | // we want the originally selected part first, then the rest in link order -- so make the selected part link num (-1) | 1879 | // we want the originally selected part first, then the rest in link order -- so make the selected part link num (-1) |
1880 | int linkNum1 = p1==targetPart ? -1 : p1.LinkNum; | 1880 | int linkNum1 = p1==targetPart ? -1 : p1.LinkNum; |
1881 | int linkNum2 = p2==targetPart ? -1 : p2.LinkNum; | 1881 | int linkNum2 = p2==targetPart ? -1 : p2.LinkNum; |
1882 | return linkNum1 - linkNum2; | 1882 | return linkNum1 - linkNum2; |
1883 | } | 1883 | } |
1884 | ); | 1884 | ); |
1885 | 1885 | ||
1886 | //look for prims with explicit sit targets that are available | 1886 | //look for prims with explicit sit targets that are available |
1887 | foreach (SceneObjectPart part in partArray) | 1887 | foreach (SceneObjectPart part in partArray) |
1888 | { | 1888 | { |
1889 | // Is a sit target available? | 1889 | // Is a sit target available? |
1890 | Vector3 avSitOffSet = part.SitTargetPosition; | 1890 | Vector3 avSitOffSet = part.SitTargetPosition; |
1891 | Quaternion avSitOrientation = part.SitTargetOrientation; | 1891 | Quaternion avSitOrientation = part.SitTargetOrientation; |
1892 | UUID avOnTargetAlready = part.GetAvatarOnSitTarget(); | 1892 | UUID avOnTargetAlready = part.GetAvatarOnSitTarget(); |
1893 | bool SitTargetOccupied = (avOnTargetAlready != UUID.Zero); | 1893 | bool SitTargetOccupied = (avOnTargetAlready != UUID.Zero); |
1894 | bool SitTargetisSet = (Vector3.Zero != avSitOffSet); //NB Latest SL Spec shows Sit Rotation setting is ignored. | 1894 | bool SitTargetisSet = (Vector3.Zero != avSitOffSet); //NB Latest SL Spec shows Sit Rotation setting is ignored. |
1895 | if (SitTargetisSet && !SitTargetOccupied) | 1895 | if (SitTargetisSet && !SitTargetOccupied) |
1896 | { | 1896 | { |
1897 | //switch the target to this prim | 1897 | //switch the target to this prim |
1898 | return part; | 1898 | return part; |
1899 | } | 1899 | } |
1900 | } | 1900 | } |
1901 | 1901 | ||
1902 | // no explicit sit target found - use original target | 1902 | // no explicit sit target found - use original target |
1903 | return targetPart; | 1903 | return targetPart; |
1904 | } | 1904 | } |
1905 | 1905 | ||
1906 | private void SendSitResponse(IClientAPI remoteClient, UUID targetID, Vector3 offset, Quaternion pSitOrientation) | 1906 | private void SendSitResponse(IClientAPI remoteClient, UUID targetID, Vector3 offset, Quaternion pSitOrientation) |
1907 | { | 1907 | { |
1908 | bool autopilot = true; | 1908 | bool autopilot = true; |
1909 | Vector3 autopilotTarget = new Vector3(); | 1909 | Vector3 autopilotTarget = new Vector3(); |
1910 | Quaternion sitOrientation = Quaternion.Identity; | 1910 | Quaternion sitOrientation = Quaternion.Identity; |
1911 | Vector3 pos = new Vector3(); | 1911 | Vector3 pos = new Vector3(); |
1912 | Vector3 cameraEyeOffset = Vector3.Zero; | 1912 | Vector3 cameraEyeOffset = Vector3.Zero; |
1913 | Vector3 cameraAtOffset = Vector3.Zero; | 1913 | Vector3 cameraAtOffset = Vector3.Zero; |
1914 | bool forceMouselook = false; | 1914 | bool forceMouselook = false; |
1915 | 1915 | ||
1916 | //SceneObjectPart part = m_scene.GetSceneObjectPart(targetID); | 1916 | //SceneObjectPart part = m_scene.GetSceneObjectPart(targetID); |
1917 | SceneObjectPart part = FindNextAvailableSitTarget(targetID); | 1917 | SceneObjectPart part = FindNextAvailableSitTarget(targetID); |
1918 | if (part == null) return; | 1918 | if (part == null) return; |
1919 | 1919 | ||
1920 | // TODO: determine position to sit at based on scene geometry; don't trust offset from client | 1920 | // TODO: determine position to sit at based on scene geometry; don't trust offset from client |
1921 | // see http://wiki.secondlife.com/wiki/User:Andrew_Linden/Office_Hours/2007_11_06 for details on how LL does it | 1921 | // see http://wiki.secondlife.com/wiki/User:Andrew_Linden/Office_Hours/2007_11_06 for details on how LL does it |
1922 | 1922 | ||
1923 | // part is the prim to sit on | 1923 | // part is the prim to sit on |
1924 | // offset is the world-ref vector distance from that prim center to the click-spot | 1924 | // offset is the world-ref vector distance from that prim center to the click-spot |
1925 | // UUID is the UUID of the Avatar doing the clicking | 1925 | // UUID is the UUID of the Avatar doing the clicking |
1926 | 1926 | ||
1927 | m_avInitialPos = AbsolutePosition; // saved to calculate unscripted sit rotation | 1927 | m_avInitialPos = AbsolutePosition; // saved to calculate unscripted sit rotation |
1928 | 1928 | ||
1929 | // Is a sit target available? | 1929 | // Is a sit target available? |
1930 | Vector3 avSitOffSet = part.SitTargetPosition; | 1930 | Vector3 avSitOffSet = part.SitTargetPosition; |
1931 | Quaternion avSitOrientation = part.SitTargetOrientation; | 1931 | Quaternion avSitOrientation = part.SitTargetOrientation; |
1932 | 1932 | ||
1933 | bool SitTargetisSet = (Vector3.Zero != avSitOffSet); //NB Latest SL Spec shows Sit Rotation setting is ignored. | 1933 | bool SitTargetisSet = (Vector3.Zero != avSitOffSet); //NB Latest SL Spec shows Sit Rotation setting is ignored. |
1934 | // Quaternion partIRot = Quaternion.Inverse(part.GetWorldRotation()); | 1934 | // Quaternion partIRot = Quaternion.Inverse(part.GetWorldRotation()); |
1935 | Quaternion partRot; | 1935 | Quaternion partRot; |
1936 | // if (part.LinkNum == 1) | 1936 | // if (part.LinkNum == 1) |
1937 | // { // Root prim of linkset | 1937 | // { // Root prim of linkset |
1938 | // partRot = part.ParentGroup.RootPart.RotationOffset; | 1938 | // partRot = part.ParentGroup.RootPart.RotationOffset; |
1939 | // } | 1939 | // } |
1940 | // else | 1940 | // else |
1941 | // { // single or child prim | 1941 | // { // single or child prim |
1942 | partRot = part.GetWorldRotation(); | 1942 | partRot = part.GetWorldRotation(); |
1943 | // } | 1943 | // } |
1944 | Quaternion partIRot = Quaternion.Inverse(partRot); | 1944 | Quaternion partIRot = Quaternion.Inverse(partRot); |
1945 | //Console.WriteLine("SendSitResponse offset=" + offset + " Occup=" + part.IsOccupied + " TargSet=" + SitTargetisSet); | 1945 | //Console.WriteLine("SendSitResponse offset=" + offset + " Occup=" + part.IsOccupied + " TargSet=" + SitTargetisSet); |
1946 | // Sit analysis rewritten by KF 091125 | 1946 | // Sit analysis rewritten by KF 091125 |
1947 | if (SitTargetisSet) // scipted sit | 1947 | if (SitTargetisSet) // scipted sit |
1948 | { | 1948 | { |
1949 | if (!part.IsOccupied) | 1949 | if (!part.IsOccupied) |
1950 | { | 1950 | { |
1951 | //Console.WriteLine("Scripted, unoccupied"); | 1951 | //Console.WriteLine("Scripted, unoccupied"); |
1952 | part.SetAvatarOnSitTarget(UUID); // set that Av will be on it | 1952 | part.SetAvatarOnSitTarget(UUID); // set that Av will be on it |
1953 | offset = new Vector3(avSitOffSet.X, avSitOffSet.Y, avSitOffSet.Z); // change ofset to the scripted one | 1953 | offset = new Vector3(avSitOffSet.X, avSitOffSet.Y, avSitOffSet.Z); // change ofset to the scripted one |
1954 | 1954 | ||
1955 | Quaternion nrot = avSitOrientation; | 1955 | Quaternion nrot = avSitOrientation; |
1956 | if (!part.IsRoot) | 1956 | if (!part.IsRoot) |
1957 | { | 1957 | { |
1958 | nrot = part.RotationOffset * avSitOrientation; | 1958 | nrot = part.RotationOffset * avSitOrientation; |
1959 | } | 1959 | } |
1960 | sitOrientation = nrot; // Change rotatione to the scripted one | 1960 | sitOrientation = nrot; // Change rotatione to the scripted one |
1961 | OffsetRotation = nrot; | 1961 | OffsetRotation = nrot; |
1962 | autopilot = false; // Jump direct to scripted llSitPos() | 1962 | autopilot = false; // Jump direct to scripted llSitPos() |
1963 | } | 1963 | } |
1964 | else | 1964 | else |
1965 | { | 1965 | { |
1966 | //Console.WriteLine("Scripted, occupied"); | 1966 | //Console.WriteLine("Scripted, occupied"); |
1967 | return; | 1967 | return; |
1968 | } | 1968 | } |
1969 | } | 1969 | } |
1970 | else // Not Scripted | 1970 | else // Not Scripted |
1971 | { | 1971 | { |
1972 | if ( (Math.Abs(offset.X) > 0.5f) || (Math.Abs(offset.Y) > 0.5f) ) | 1972 | if ( (Math.Abs(offset.X) > 0.5f) || (Math.Abs(offset.Y) > 0.5f) ) |
1973 | { | 1973 | { |
1974 | // large prim & offset, ignore if other Avs sitting | 1974 | // large prim & offset, ignore if other Avs sitting |
1975 | // offset.Z -= 0.05f; | 1975 | // offset.Z -= 0.05f; |
1976 | m_avUnscriptedSitPos = offset * partIRot; // (non-zero) sit where clicked | 1976 | m_avUnscriptedSitPos = offset * partIRot; // (non-zero) sit where clicked |
1977 | autopilotTarget = part.AbsolutePosition + offset; // World location of clicked point | 1977 | autopilotTarget = part.AbsolutePosition + offset; // World location of clicked point |
1978 | 1978 | ||
1979 | //Console.WriteLine(" offset ={0}", offset); | 1979 | //Console.WriteLine(" offset ={0}", offset); |
1980 | //Console.WriteLine(" UnscriptedSitPos={0}", m_avUnscriptedSitPos); | 1980 | //Console.WriteLine(" UnscriptedSitPos={0}", m_avUnscriptedSitPos); |
1981 | //Console.WriteLine(" autopilotTarget={0}", autopilotTarget); | 1981 | //Console.WriteLine(" autopilotTarget={0}", autopilotTarget); |
1982 | 1982 | ||
1983 | } | 1983 | } |
1984 | else // small offset | 1984 | else // small offset |
1985 | { | 1985 | { |
1986 | //Console.WriteLine("Small offset"); | 1986 | //Console.WriteLine("Small offset"); |
1987 | if (!part.IsOccupied) | 1987 | if (!part.IsOccupied) |
1988 | { | 1988 | { |
1989 | m_avUnscriptedSitPos = Vector3.Zero; // Zero = Sit on prim center | 1989 | m_avUnscriptedSitPos = Vector3.Zero; // Zero = Sit on prim center |
1990 | autopilotTarget = part.AbsolutePosition; | 1990 | autopilotTarget = part.AbsolutePosition; |
1991 | //Console.WriteLine("UsSmall autopilotTarget={0}", autopilotTarget); | 1991 | //Console.WriteLine("UsSmall autopilotTarget={0}", autopilotTarget); |
1992 | } | 1992 | } |
1993 | else return; // occupied small | 1993 | else return; // occupied small |
1994 | } // end large/small | 1994 | } // end large/small |
1995 | } // end Scripted/not | 1995 | } // end Scripted/not |
1996 | cameraAtOffset = part.GetCameraAtOffset(); | 1996 | cameraAtOffset = part.GetCameraAtOffset(); |
1997 | cameraEyeOffset = part.GetCameraEyeOffset(); | 1997 | cameraEyeOffset = part.GetCameraEyeOffset(); |
1998 | forceMouselook = part.GetForceMouselook(); | 1998 | forceMouselook = part.GetForceMouselook(); |
1999 | if(cameraAtOffset == Vector3.Zero) cameraAtOffset = new Vector3(0f, 0f, 0.1f); // | 1999 | if(cameraAtOffset == Vector3.Zero) cameraAtOffset = new Vector3(0f, 0f, 0.1f); // |
2000 | if(cameraEyeOffset == Vector3.Zero) cameraEyeOffset = new Vector3(0f, 0f, 0.1f); // | 2000 | if(cameraEyeOffset == Vector3.Zero) cameraEyeOffset = new Vector3(0f, 0f, 0.1f); // |
2001 | 2001 | ||
2002 | if (m_physicsActor != null) | 2002 | if (m_physicsActor != null) |
2003 | { | 2003 | { |
2004 | // If we're not using the client autopilot, we're immediately warping the avatar to the location | 2004 | // If we're not using the client autopilot, we're immediately warping the avatar to the location |
2005 | // We can remove the physicsActor until they stand up. | 2005 | // We can remove the physicsActor until they stand up. |
2006 | m_sitAvatarHeight = m_physicsActor.Size.Z; | 2006 | m_sitAvatarHeight = m_physicsActor.Size.Z; |
2007 | if (autopilot) | 2007 | if (autopilot) |
2008 | { // its not a scripted sit | 2008 | { // its not a scripted sit |
2009 | // if (Util.GetDistanceTo(AbsolutePosition, autopilotTarget) < 4.5) | 2009 | // if (Util.GetDistanceTo(AbsolutePosition, autopilotTarget) < 4.5) |
2010 | if( (Math.Abs(AbsolutePosition.X - autopilotTarget.X) < 2.0f) && (Math.Abs(AbsolutePosition.Y - autopilotTarget.Y) < 2.0f) ) | 2010 | if( (Math.Abs(AbsolutePosition.X - autopilotTarget.X) < 10.0f) && (Math.Abs(AbsolutePosition.Y - autopilotTarget.Y) < 10.0f) ) |
2011 | { | 2011 | { |
2012 | autopilot = false; // close enough | 2012 | autopilot = false; // close enough |
2013 | m_lastWorldPosition = m_pos; /* CW - This give us a position to return the avatar to if the part is killed before standup. | 2013 | m_lastWorldPosition = m_pos; /* CW - This give us a position to return the avatar to if the part is killed before standup. |
2014 | Not using the part's position because returning the AV to the last known standing | 2014 | Not using the part's position because returning the AV to the last known standing |
2015 | position is likely to be more friendly, isn't it? */ | 2015 | position is likely to be more friendly, isn't it? */ |
2016 | RemoveFromPhysicalScene(); | 2016 | RemoveFromPhysicalScene(); |
2017 | AbsolutePosition = autopilotTarget + new Vector3(0.0f, 0.0f, (m_sitAvatarHeight / 2.0f)); // Warp av to over sit target | 2017 | Velocity = Vector3.Zero; |
2018 | } // else the autopilot will get us close | 2018 | AbsolutePosition = autopilotTarget + new Vector3(0.0f, 0.0f, (m_sitAvatarHeight / 2.0f)); // Warp av to over sit target |
2019 | } | 2019 | } // else the autopilot will get us close |
2020 | else | 2020 | } |
2021 | { // its a scripted sit | 2021 | else |
2022 | m_lastWorldPosition = part.AbsolutePosition; /* CW - This give us a position to return the avatar to if the part is killed before standup. | 2022 | { // its a scripted sit |
2023 | I *am* using the part's position this time because we have no real idea how far away | 2023 | m_lastWorldPosition = part.AbsolutePosition; /* CW - This give us a position to return the avatar to if the part is killed before standup. |
2024 | the avatar is from the sit target. */ | 2024 | I *am* using the part's position this time because we have no real idea how far away |
2025 | RemoveFromPhysicalScene(); | 2025 | the avatar is from the sit target. */ |
2026 | } | 2026 | RemoveFromPhysicalScene(); |
2027 | } | 2027 | Velocity = Vector3.Zero; |
2028 | else return; // physactor is null! | 2028 | } |
2029 | 2029 | } | |
2030 | Vector3 offsetr; // = offset * partIRot; | 2030 | else return; // physactor is null! |
2031 | // KF: In a linkset, offsetr needs to be relative to the group root! 091208 | 2031 | |
2032 | // offsetr = (part.OffsetPosition * Quaternion.Inverse(part.ParentGroup.RootPart.RotationOffset)) + (offset * partIRot); | 2032 | Vector3 offsetr; // = offset * partIRot; |
2033 | // if (part.LinkNum < 2) 091216 All this was necessary because of the GetWorldRotation error. | 2033 | // KF: In a linkset, offsetr needs to be relative to the group root! 091208 |
2034 | // { // Single, or Root prim of linkset, target is ClickOffset * RootRot | 2034 | // offsetr = (part.OffsetPosition * Quaternion.Inverse(part.ParentGroup.RootPart.RotationOffset)) + (offset * partIRot); |
2035 | //offsetr = offset * partIRot; | 2035 | // if (part.LinkNum < 2) 091216 All this was necessary because of the GetWorldRotation error. |
2036 | // | 2036 | // { // Single, or Root prim of linkset, target is ClickOffset * RootRot |
2037 | // else | 2037 | //offsetr = offset * partIRot; |
2038 | // { // Child prim, offset is (ChildOffset * RootRot) + (ClickOffset * ChildRot) | 2038 | // |
2039 | // offsetr = //(part.OffsetPosition * Quaternion.Inverse(part.ParentGroup.RootPart.RotationOffset)) + | 2039 | // else |
2040 | // (offset * partRot); | 2040 | // { // Child prim, offset is (ChildOffset * RootRot) + (ClickOffset * ChildRot) |
2041 | // } | 2041 | // offsetr = //(part.OffsetPosition * Quaternion.Inverse(part.ParentGroup.RootPart.RotationOffset)) + |
2042 | 2042 | // (offset * partRot); | |
2043 | //Console.WriteLine(" "); | 2043 | // } |
2044 | //Console.WriteLine("link number ={0}", part.LinkNum); | 2044 | |
2045 | //Console.WriteLine("Prim offset ={0}", part.OffsetPosition ); | 2045 | //Console.WriteLine(" "); |
2046 | //Console.WriteLine("Root Rotate ={0}", part.ParentGroup.RootPart.RotationOffset); | 2046 | //Console.WriteLine("link number ={0}", part.LinkNum); |
2047 | //Console.WriteLine("Click offst ={0}", offset); | 2047 | //Console.WriteLine("Prim offset ={0}", part.OffsetPosition ); |
2048 | //Console.WriteLine("Prim Rotate ={0}", part.GetWorldRotation()); | 2048 | //Console.WriteLine("Root Rotate ={0}", part.ParentGroup.RootPart.RotationOffset); |
2049 | //Console.WriteLine("offsetr ={0}", offsetr); | 2049 | //Console.WriteLine("Click offst ={0}", offset); |
2050 | //Console.WriteLine("Camera At ={0}", cameraAtOffset); | 2050 | //Console.WriteLine("Prim Rotate ={0}", part.GetWorldRotation()); |
2051 | //Console.WriteLine("Camera Eye ={0}", cameraEyeOffset); | 2051 | //Console.WriteLine("offsetr ={0}", offsetr); |
2052 | 2052 | //Console.WriteLine("Camera At ={0}", cameraAtOffset); | |
2053 | //NOTE: SendSitResponse should be relative to the GROUP *NOT* THE PRIM if we're sitting on a child | 2053 | //Console.WriteLine("Camera Eye ={0}", cameraEyeOffset); |
2054 | ControllingClient.SendSitResponse(part.ParentGroup.UUID, ((offset * part.RotationOffset) + part.OffsetPosition), sitOrientation, autopilot, cameraAtOffset, cameraEyeOffset, forceMouselook); | 2054 | |
2055 | 2055 | //NOTE: SendSitResponse should be relative to the GROUP *NOT* THE PRIM if we're sitting on a child | |
2056 | m_requestedSitTargetUUID = part.UUID; //KF: Correct autopilot target | 2056 | ControllingClient.SendSitResponse(part.ParentGroup.UUID, ((offset * part.RotationOffset) + part.OffsetPosition), sitOrientation, autopilot, cameraAtOffset, cameraEyeOffset, forceMouselook); |
2057 | // This calls HandleAgentSit twice, once from here, and the client calls | 2057 | |
2058 | // HandleAgentSit itself after it gets to the location | 2058 | m_requestedSitTargetUUID = part.UUID; //KF: Correct autopilot target |
2059 | // It doesn't get to the location until we've moved them there though | 2059 | // This calls HandleAgentSit twice, once from here, and the client calls |
2060 | // which happens in HandleAgentSit :P | 2060 | // HandleAgentSit itself after it gets to the location |
2061 | m_autopilotMoving = autopilot; | 2061 | // It doesn't get to the location until we've moved them there though |
2062 | m_autoPilotTarget = autopilotTarget; | 2062 | // which happens in HandleAgentSit :P |
2063 | m_sitAtAutoTarget = autopilot; | 2063 | m_autopilotMoving = autopilot; |
2064 | m_initialSitTarget = autopilotTarget; | 2064 | m_autoPilotTarget = autopilotTarget; |
2065 | if (!autopilot) | 2065 | m_sitAtAutoTarget = autopilot; |
2066 | HandleAgentSit(remoteClient, UUID); | 2066 | m_initialSitTarget = autopilotTarget; |
2067 | } | 2067 | if (!autopilot) |
2068 | 2068 | HandleAgentSit(remoteClient, UUID); | |
2069 | public void HandleAgentRequestSit(IClientAPI remoteClient, UUID agentID, UUID targetID, Vector3 offset) | 2069 | } |
2070 | { | 2070 | |
2071 | if (m_parentID != 0) | 2071 | public void HandleAgentRequestSit(IClientAPI remoteClient, UUID agentID, UUID targetID, Vector3 offset) |
2072 | { | 2072 | { |
2073 | StandUp(); | 2073 | if (m_parentID != 0) |
2074 | } | 2074 | { |
2075 | m_nextSitAnimation = "SIT"; | 2075 | StandUp(); |
2076 | 2076 | } | |
2077 | //SceneObjectPart part = m_scene.GetSceneObjectPart(targetID); | 2077 | m_nextSitAnimation = "SIT"; |
2078 | SceneObjectPart part = FindNextAvailableSitTarget(targetID); | 2078 | |
2079 | 2079 | //SceneObjectPart part = m_scene.GetSceneObjectPart(targetID); | |
2080 | if (part != null) | 2080 | SceneObjectPart part = FindNextAvailableSitTarget(targetID); |
2081 | { | 2081 | |
2082 | if (!String.IsNullOrEmpty(part.SitAnimation)) | 2082 | if (part != null) |
2083 | { | 2083 | { |
2084 | m_nextSitAnimation = part.SitAnimation; | 2084 | if (!String.IsNullOrEmpty(part.SitAnimation)) |
2085 | } | 2085 | { |
2086 | m_requestedSitTargetID = part.LocalId; | 2086 | m_nextSitAnimation = part.SitAnimation; |
2087 | //m_requestedSitOffset = offset; | 2087 | } |
2088 | m_requestedSitTargetUUID = targetID; | 2088 | m_requestedSitTargetID = part.LocalId; |
2089 | 2089 | //m_requestedSitOffset = offset; | |
2090 | m_log.DebugFormat("[SIT]: Client requested Sit Position: {0}", offset); | 2090 | m_requestedSitTargetUUID = targetID; |
2091 | 2091 | ||
2092 | if (m_scene.PhysicsScene.SupportsRayCast()) | 2092 | m_log.DebugFormat("[SIT]: Client requested Sit Position: {0}", offset); |
2093 | { | 2093 | |
2094 | //m_scene.PhysicsScene.RaycastWorld(Vector3.Zero,Vector3.Zero, 0.01f,new RaycastCallback()); | 2094 | if (m_scene.PhysicsScene.SupportsRayCast()) |
2095 | //SitRayCastAvatarPosition(part); | 2095 | { |
2096 | //return; | 2096 | //m_scene.PhysicsScene.RaycastWorld(Vector3.Zero,Vector3.Zero, 0.01f,new RaycastCallback()); |
2097 | } | 2097 | //SitRayCastAvatarPosition(part); |
2098 | } | 2098 | //return; |
2099 | else | 2099 | } |
2100 | { | 2100 | } |
2101 | 2101 | else | |
2102 | m_log.Warn("Sit requested on unknown object: " + targetID.ToString()); | 2102 | { |
2103 | } | 2103 | |
2104 | 2104 | m_log.Warn("Sit requested on unknown object: " + targetID.ToString()); | |
2105 | 2105 | } | |
2106 | 2106 | ||
2107 | SendSitResponse(remoteClient, targetID, offset, Quaternion.Identity); | 2107 | |
2108 | } | 2108 | |
2109 | /* | 2109 | SendSitResponse(remoteClient, targetID, offset, Quaternion.Identity); |
2110 | public void SitRayCastAvatarPosition(SceneObjectPart part) | 2110 | } |
2111 | { | 2111 | /* |
2112 | Vector3 EndRayCastPosition = part.AbsolutePosition + m_requestedSitOffset; | 2112 | public void SitRayCastAvatarPosition(SceneObjectPart part) |
2113 | Vector3 StartRayCastPosition = AbsolutePosition; | 2113 | { |
2114 | Vector3 direction = Vector3.Normalize(EndRayCastPosition - StartRayCastPosition); | 2114 | Vector3 EndRayCastPosition = part.AbsolutePosition + m_requestedSitOffset; |
2115 | float distance = Vector3.Distance(EndRayCastPosition, StartRayCastPosition); | 2115 | Vector3 StartRayCastPosition = AbsolutePosition; |
2116 | m_scene.PhysicsScene.RaycastWorld(StartRayCastPosition, direction, distance, SitRayCastAvatarPositionResponse); | 2116 | Vector3 direction = Vector3.Normalize(EndRayCastPosition - StartRayCastPosition); |
2117 | } | 2117 | float distance = Vector3.Distance(EndRayCastPosition, StartRayCastPosition); |
2118 | 2118 | m_scene.PhysicsScene.RaycastWorld(StartRayCastPosition, direction, distance, SitRayCastAvatarPositionResponse); | |
2119 | public void SitRayCastAvatarPositionResponse(bool hitYN, Vector3 collisionPoint, uint localid, float pdistance, Vector3 normal) | 2119 | } |
2120 | { | 2120 | |
2121 | SceneObjectPart part = FindNextAvailableSitTarget(m_requestedSitTargetUUID); | 2121 | public void SitRayCastAvatarPositionResponse(bool hitYN, Vector3 collisionPoint, uint localid, float pdistance, Vector3 normal) |
2122 | if (part != null) | 2122 | { |
2123 | { | 2123 | SceneObjectPart part = FindNextAvailableSitTarget(m_requestedSitTargetUUID); |
2124 | if (hitYN) | 2124 | if (part != null) |
2125 | { | 2125 | { |
2126 | if (collisionPoint.ApproxEquals(m_requestedSitOffset + part.AbsolutePosition, 0.2f)) | 2126 | if (hitYN) |
2127 | { | 2127 | { |
2128 | SitRaycastFindEdge(collisionPoint, normal); | 2128 | if (collisionPoint.ApproxEquals(m_requestedSitOffset + part.AbsolutePosition, 0.2f)) |
2129 | m_log.DebugFormat("[SIT]: Raycast Avatar Position succeeded at point: {0}, normal:{1}", collisionPoint, normal); | 2129 | { |
2130 | } | 2130 | SitRaycastFindEdge(collisionPoint, normal); |
2131 | else | 2131 | m_log.DebugFormat("[SIT]: Raycast Avatar Position succeeded at point: {0}, normal:{1}", collisionPoint, normal); |
2132 | { | 2132 | } |
2133 | SitRayCastAvatarPositionCameraZ(part); | 2133 | else |
2134 | } | 2134 | { |
2135 | } | 2135 | SitRayCastAvatarPositionCameraZ(part); |
2136 | else | 2136 | } |
2137 | { | 2137 | } |
2138 | SitRayCastAvatarPositionCameraZ(part); | 2138 | else |
2139 | } | 2139 | { |
2140 | } | 2140 | SitRayCastAvatarPositionCameraZ(part); |
2141 | else | 2141 | } |
2142 | { | 2142 | } |
2143 | ControllingClient.SendAlertMessage("Sit position no longer exists"); | 2143 | else |
2144 | m_requestedSitTargetUUID = UUID.Zero; | 2144 | { |
2145 | m_requestedSitTargetID = 0; | 2145 | ControllingClient.SendAlertMessage("Sit position no longer exists"); |
2146 | m_requestedSitOffset = Vector3.Zero; | 2146 | m_requestedSitTargetUUID = UUID.Zero; |
2147 | } | 2147 | m_requestedSitTargetID = 0; |
2148 | 2148 | m_requestedSitOffset = Vector3.Zero; | |
2149 | } | 2149 | } |
2150 | 2150 | ||
2151 | public void SitRayCastAvatarPositionCameraZ(SceneObjectPart part) | 2151 | } |
2152 | { | 2152 | |
2153 | // Next, try to raycast from the camera Z position | 2153 | public void SitRayCastAvatarPositionCameraZ(SceneObjectPart part) |
2154 | Vector3 EndRayCastPosition = part.AbsolutePosition + m_requestedSitOffset; | 2154 | { |
2155 | Vector3 StartRayCastPosition = AbsolutePosition; StartRayCastPosition.Z = CameraPosition.Z; | 2155 | // Next, try to raycast from the camera Z position |
2156 | Vector3 direction = Vector3.Normalize(EndRayCastPosition - StartRayCastPosition); | 2156 | Vector3 EndRayCastPosition = part.AbsolutePosition + m_requestedSitOffset; |
2157 | float distance = Vector3.Distance(EndRayCastPosition, StartRayCastPosition); | 2157 | Vector3 StartRayCastPosition = AbsolutePosition; StartRayCastPosition.Z = CameraPosition.Z; |
2158 | m_scene.PhysicsScene.RaycastWorld(StartRayCastPosition, direction, distance, SitRayCastAvatarPositionCameraZResponse); | 2158 | Vector3 direction = Vector3.Normalize(EndRayCastPosition - StartRayCastPosition); |
2159 | } | 2159 | float distance = Vector3.Distance(EndRayCastPosition, StartRayCastPosition); |
2160 | 2160 | m_scene.PhysicsScene.RaycastWorld(StartRayCastPosition, direction, distance, SitRayCastAvatarPositionCameraZResponse); | |
2161 | public void SitRayCastAvatarPositionCameraZResponse(bool hitYN, Vector3 collisionPoint, uint localid, float pdistance, Vector3 normal) | 2161 | } |
2162 | { | 2162 | |
2163 | SceneObjectPart part = FindNextAvailableSitTarget(m_requestedSitTargetUUID); | 2163 | public void SitRayCastAvatarPositionCameraZResponse(bool hitYN, Vector3 collisionPoint, uint localid, float pdistance, Vector3 normal) |
2164 | if (part != null) | 2164 | { |
2165 | { | 2165 | SceneObjectPart part = FindNextAvailableSitTarget(m_requestedSitTargetUUID); |
2166 | if (hitYN) | 2166 | if (part != null) |
2167 | { | 2167 | { |
2168 | if (collisionPoint.ApproxEquals(m_requestedSitOffset + part.AbsolutePosition, 0.2f)) | 2168 | if (hitYN) |
2169 | { | 2169 | { |
2170 | SitRaycastFindEdge(collisionPoint, normal); | 2170 | if (collisionPoint.ApproxEquals(m_requestedSitOffset + part.AbsolutePosition, 0.2f)) |
2171 | m_log.DebugFormat("[SIT]: Raycast Avatar Position + CameraZ succeeded at point: {0}, normal:{1}", collisionPoint, normal); | 2171 | { |
2172 | } | 2172 | SitRaycastFindEdge(collisionPoint, normal); |
2173 | else | 2173 | m_log.DebugFormat("[SIT]: Raycast Avatar Position + CameraZ succeeded at point: {0}, normal:{1}", collisionPoint, normal); |
2174 | { | 2174 | } |
2175 | SitRayCastCameraPosition(part); | 2175 | else |
2176 | } | 2176 | { |
2177 | } | 2177 | SitRayCastCameraPosition(part); |
2178 | else | 2178 | } |
2179 | { | 2179 | } |
2180 | SitRayCastCameraPosition(part); | 2180 | else |
2181 | } | 2181 | { |
2182 | } | 2182 | SitRayCastCameraPosition(part); |
2183 | else | 2183 | } |
2184 | { | 2184 | } |
2185 | ControllingClient.SendAlertMessage("Sit position no longer exists"); | 2185 | else |
2186 | m_requestedSitTargetUUID = UUID.Zero; | 2186 | { |
2187 | m_requestedSitTargetID = 0; | 2187 | ControllingClient.SendAlertMessage("Sit position no longer exists"); |
2188 | m_requestedSitOffset = Vector3.Zero; | 2188 | m_requestedSitTargetUUID = UUID.Zero; |
2189 | } | 2189 | m_requestedSitTargetID = 0; |
2190 | 2190 | m_requestedSitOffset = Vector3.Zero; | |
2191 | } | 2191 | } |
2192 | 2192 | ||
2193 | public void SitRayCastCameraPosition(SceneObjectPart part) | 2193 | } |
2194 | { | 2194 | |
2195 | // Next, try to raycast from the camera position | 2195 | public void SitRayCastCameraPosition(SceneObjectPart part) |
2196 | Vector3 EndRayCastPosition = part.AbsolutePosition + m_requestedSitOffset; | 2196 | { |
2197 | Vector3 StartRayCastPosition = CameraPosition; | 2197 | // Next, try to raycast from the camera position |
2198 | Vector3 direction = Vector3.Normalize(EndRayCastPosition - StartRayCastPosition); | 2198 | Vector3 EndRayCastPosition = part.AbsolutePosition + m_requestedSitOffset; |
2199 | float distance = Vector3.Distance(EndRayCastPosition, StartRayCastPosition); | 2199 | Vector3 StartRayCastPosition = CameraPosition; |
2200 | m_scene.PhysicsScene.RaycastWorld(StartRayCastPosition, direction, distance, SitRayCastCameraPositionResponse); | 2200 | Vector3 direction = Vector3.Normalize(EndRayCastPosition - StartRayCastPosition); |
2201 | } | 2201 | float distance = Vector3.Distance(EndRayCastPosition, StartRayCastPosition); |
2202 | 2202 | m_scene.PhysicsScene.RaycastWorld(StartRayCastPosition, direction, distance, SitRayCastCameraPositionResponse); | |
2203 | public void SitRayCastCameraPositionResponse(bool hitYN, Vector3 collisionPoint, uint localid, float pdistance, Vector3 normal) | 2203 | } |
2204 | { | 2204 | |
2205 | SceneObjectPart part = FindNextAvailableSitTarget(m_requestedSitTargetUUID); | 2205 | public void SitRayCastCameraPositionResponse(bool hitYN, Vector3 collisionPoint, uint localid, float pdistance, Vector3 normal) |
2206 | if (part != null) | 2206 | { |
2207 | { | 2207 | SceneObjectPart part = FindNextAvailableSitTarget(m_requestedSitTargetUUID); |
2208 | if (hitYN) | 2208 | if (part != null) |
2209 | { | 2209 | { |
2210 | if (collisionPoint.ApproxEquals(m_requestedSitOffset + part.AbsolutePosition, 0.2f)) | 2210 | if (hitYN) |
2211 | { | 2211 | { |
2212 | SitRaycastFindEdge(collisionPoint, normal); | 2212 | if (collisionPoint.ApproxEquals(m_requestedSitOffset + part.AbsolutePosition, 0.2f)) |
2213 | m_log.DebugFormat("[SIT]: Raycast Camera Position succeeded at point: {0}, normal:{1}", collisionPoint, normal); | 2213 | { |
2214 | } | 2214 | SitRaycastFindEdge(collisionPoint, normal); |
2215 | else | 2215 | m_log.DebugFormat("[SIT]: Raycast Camera Position succeeded at point: {0}, normal:{1}", collisionPoint, normal); |
2216 | { | 2216 | } |
2217 | SitRayHorizontal(part); | 2217 | else |
2218 | } | 2218 | { |
2219 | } | 2219 | SitRayHorizontal(part); |
2220 | else | 2220 | } |
2221 | { | 2221 | } |
2222 | SitRayHorizontal(part); | 2222 | else |
2223 | } | 2223 | { |
2224 | } | 2224 | SitRayHorizontal(part); |
2225 | else | 2225 | } |
2226 | { | 2226 | } |
2227 | ControllingClient.SendAlertMessage("Sit position no longer exists"); | 2227 | else |
2228 | m_requestedSitTargetUUID = UUID.Zero; | 2228 | { |
2229 | m_requestedSitTargetID = 0; | 2229 | ControllingClient.SendAlertMessage("Sit position no longer exists"); |
2230 | m_requestedSitOffset = Vector3.Zero; | 2230 | m_requestedSitTargetUUID = UUID.Zero; |
2231 | } | 2231 | m_requestedSitTargetID = 0; |
2232 | 2232 | m_requestedSitOffset = Vector3.Zero; | |
2233 | } | 2233 | } |
2234 | 2234 | ||
2235 | public void SitRayHorizontal(SceneObjectPart part) | 2235 | } |
2236 | { | 2236 | |
2237 | // Next, try to raycast from the avatar position to fwd | 2237 | public void SitRayHorizontal(SceneObjectPart part) |
2238 | Vector3 EndRayCastPosition = part.AbsolutePosition + m_requestedSitOffset; | 2238 | { |
2239 | Vector3 StartRayCastPosition = CameraPosition; | 2239 | // Next, try to raycast from the avatar position to fwd |
2240 | Vector3 direction = Vector3.Normalize(EndRayCastPosition - StartRayCastPosition); | 2240 | Vector3 EndRayCastPosition = part.AbsolutePosition + m_requestedSitOffset; |
2241 | float distance = Vector3.Distance(EndRayCastPosition, StartRayCastPosition); | 2241 | Vector3 StartRayCastPosition = CameraPosition; |
2242 | m_scene.PhysicsScene.RaycastWorld(StartRayCastPosition, direction, distance, SitRayCastHorizontalResponse); | 2242 | Vector3 direction = Vector3.Normalize(EndRayCastPosition - StartRayCastPosition); |
2243 | } | 2243 | float distance = Vector3.Distance(EndRayCastPosition, StartRayCastPosition); |
2244 | 2244 | m_scene.PhysicsScene.RaycastWorld(StartRayCastPosition, direction, distance, SitRayCastHorizontalResponse); | |
2245 | public void SitRayCastHorizontalResponse(bool hitYN, Vector3 collisionPoint, uint localid, float pdistance, Vector3 normal) | 2245 | } |
2246 | { | 2246 | |
2247 | SceneObjectPart part = FindNextAvailableSitTarget(m_requestedSitTargetUUID); | 2247 | public void SitRayCastHorizontalResponse(bool hitYN, Vector3 collisionPoint, uint localid, float pdistance, Vector3 normal) |
2248 | if (part != null) | 2248 | { |
2249 | { | 2249 | SceneObjectPart part = FindNextAvailableSitTarget(m_requestedSitTargetUUID); |
2250 | if (hitYN) | 2250 | if (part != null) |
2251 | { | 2251 | { |
2252 | if (collisionPoint.ApproxEquals(m_requestedSitOffset + part.AbsolutePosition, 0.2f)) | 2252 | if (hitYN) |
2253 | { | 2253 | { |
2254 | SitRaycastFindEdge(collisionPoint, normal); | 2254 | if (collisionPoint.ApproxEquals(m_requestedSitOffset + part.AbsolutePosition, 0.2f)) |
2255 | m_log.DebugFormat("[SIT]: Raycast Horizontal Position succeeded at point: {0}, normal:{1}", collisionPoint, normal); | 2255 | { |
2256 | // Next, try to raycast from the camera position | 2256 | SitRaycastFindEdge(collisionPoint, normal); |
2257 | Vector3 EndRayCastPosition = part.AbsolutePosition + m_requestedSitOffset; | 2257 | m_log.DebugFormat("[SIT]: Raycast Horizontal Position succeeded at point: {0}, normal:{1}", collisionPoint, normal); |
2258 | Vector3 StartRayCastPosition = CameraPosition; | 2258 | // Next, try to raycast from the camera position |
2259 | Vector3 direction = Vector3.Normalize(EndRayCastPosition - StartRayCastPosition); | 2259 | Vector3 EndRayCastPosition = part.AbsolutePosition + m_requestedSitOffset; |
2260 | float distance = Vector3.Distance(EndRayCastPosition, StartRayCastPosition); | 2260 | Vector3 StartRayCastPosition = CameraPosition; |
2261 | //m_scene.PhysicsScene.RaycastWorld(StartRayCastPosition, direction, distance, SitRayCastResponseAvatarPosition); | 2261 | Vector3 direction = Vector3.Normalize(EndRayCastPosition - StartRayCastPosition); |
2262 | } | 2262 | float distance = Vector3.Distance(EndRayCastPosition, StartRayCastPosition); |
2263 | else | 2263 | //m_scene.PhysicsScene.RaycastWorld(StartRayCastPosition, direction, distance, SitRayCastResponseAvatarPosition); |
2264 | { | 2264 | } |
2265 | ControllingClient.SendAlertMessage("Sit position not accessable."); | 2265 | else |
2266 | m_requestedSitTargetUUID = UUID.Zero; | 2266 | { |
2267 | m_requestedSitTargetID = 0; | 2267 | ControllingClient.SendAlertMessage("Sit position not accessable."); |
2268 | m_requestedSitOffset = Vector3.Zero; | 2268 | m_requestedSitTargetUUID = UUID.Zero; |
2269 | } | 2269 | m_requestedSitTargetID = 0; |
2270 | } | 2270 | m_requestedSitOffset = Vector3.Zero; |
2271 | else | 2271 | } |
2272 | { | 2272 | } |
2273 | ControllingClient.SendAlertMessage("Sit position not accessable."); | 2273 | else |
2274 | m_requestedSitTargetUUID = UUID.Zero; | 2274 | { |
2275 | m_requestedSitTargetID = 0; | 2275 | ControllingClient.SendAlertMessage("Sit position not accessable."); |
2276 | m_requestedSitOffset = Vector3.Zero; | 2276 | m_requestedSitTargetUUID = UUID.Zero; |
2277 | } | 2277 | m_requestedSitTargetID = 0; |
2278 | } | 2278 | m_requestedSitOffset = Vector3.Zero; |
2279 | else | 2279 | } |
2280 | { | 2280 | } |
2281 | ControllingClient.SendAlertMessage("Sit position no longer exists"); | 2281 | else |
2282 | m_requestedSitTargetUUID = UUID.Zero; | 2282 | { |
2283 | m_requestedSitTargetID = 0; | 2283 | ControllingClient.SendAlertMessage("Sit position no longer exists"); |
2284 | m_requestedSitOffset = Vector3.Zero; | 2284 | m_requestedSitTargetUUID = UUID.Zero; |
2285 | } | 2285 | m_requestedSitTargetID = 0; |
2286 | 2286 | m_requestedSitOffset = Vector3.Zero; | |
2287 | } | 2287 | } |
2288 | 2288 | ||
2289 | private void SitRaycastFindEdge(Vector3 collisionPoint, Vector3 collisionNormal) | 2289 | } |
2290 | { | 2290 | |
2291 | int i = 0; | 2291 | private void SitRaycastFindEdge(Vector3 collisionPoint, Vector3 collisionNormal) |
2292 | //throw new NotImplementedException(); | 2292 | { |
2293 | //m_requestedSitTargetUUID = UUID.Zero; | 2293 | int i = 0; |
2294 | //m_requestedSitTargetID = 0; | 2294 | //throw new NotImplementedException(); |
2295 | //m_requestedSitOffset = Vector3.Zero; | 2295 | //m_requestedSitTargetUUID = UUID.Zero; |
2296 | 2296 | //m_requestedSitTargetID = 0; | |
2297 | SendSitResponse(ControllingClient, m_requestedSitTargetUUID, collisionPoint - m_requestedSitOffset, Quaternion.Identity); | 2297 | //m_requestedSitOffset = Vector3.Zero; |
2298 | } | 2298 | |
2299 | */ | 2299 | SendSitResponse(ControllingClient, m_requestedSitTargetUUID, collisionPoint - m_requestedSitOffset, Quaternion.Identity); |
2300 | public void HandleAgentRequestSit(IClientAPI remoteClient, UUID agentID, UUID targetID, Vector3 offset, string sitAnimation) | 2300 | } |
2301 | { | 2301 | */ |
2302 | if (m_parentID != 0) | 2302 | public void HandleAgentRequestSit(IClientAPI remoteClient, UUID agentID, UUID targetID, Vector3 offset, string sitAnimation) |
2303 | { | 2303 | { |
2304 | StandUp(); | 2304 | if (m_parentID != 0) |
2305 | } | 2305 | { |
2306 | if (!String.IsNullOrEmpty(sitAnimation)) | 2306 | StandUp(); |
2307 | { | 2307 | } |
2308 | m_nextSitAnimation = sitAnimation; | 2308 | if (!String.IsNullOrEmpty(sitAnimation)) |
2309 | } | 2309 | { |
2310 | else | 2310 | m_nextSitAnimation = sitAnimation; |
2311 | { | 2311 | } |
2312 | m_nextSitAnimation = "SIT"; | 2312 | else |
2313 | } | 2313 | { |
2314 | 2314 | m_nextSitAnimation = "SIT"; | |
2315 | //SceneObjectPart part = m_scene.GetSceneObjectPart(targetID); | 2315 | } |
2316 | SceneObjectPart part = FindNextAvailableSitTarget(targetID); | 2316 | |
2317 | if (part != null) | 2317 | //SceneObjectPart part = m_scene.GetSceneObjectPart(targetID); |
2318 | { | 2318 | SceneObjectPart part = FindNextAvailableSitTarget(targetID); |
2319 | m_requestedSitTargetID = part.LocalId; | 2319 | if (part != null) |
2320 | //m_requestedSitOffset = offset; | 2320 | { |
2321 | m_requestedSitTargetUUID = targetID; | 2321 | m_requestedSitTargetID = part.LocalId; |
2322 | 2322 | //m_requestedSitOffset = offset; | |
2323 | m_log.DebugFormat("[SIT]: Client requested Sit Position: {0}", offset); | 2323 | m_requestedSitTargetUUID = targetID; |
2324 | 2324 | ||
2325 | if (m_scene.PhysicsScene.SupportsRayCast()) | 2325 | m_log.DebugFormat("[SIT]: Client requested Sit Position: {0}", offset); |
2326 | { | 2326 | |
2327 | //SitRayCastAvatarPosition(part); | 2327 | if (m_scene.PhysicsScene.SupportsRayCast()) |
2328 | //return; | 2328 | { |
2329 | } | 2329 | //SitRayCastAvatarPosition(part); |
2330 | } | 2330 | //return; |
2331 | else | 2331 | } |
2332 | { | 2332 | } |
2333 | m_log.Warn("Sit requested on unknown object: " + targetID); | 2333 | else |
2334 | } | 2334 | { |
2335 | 2335 | m_log.Warn("Sit requested on unknown object: " + targetID); | |
2336 | SendSitResponse(remoteClient, targetID, offset, Quaternion.Identity); | 2336 | } |
2337 | } | 2337 | |
2338 | 2338 | SendSitResponse(remoteClient, targetID, offset, Quaternion.Identity); | |
2339 | public void HandleAgentSit(IClientAPI remoteClient, UUID agentID) | 2339 | } |
2340 | { | 2340 | |
2341 | if (!String.IsNullOrEmpty(m_nextSitAnimation)) | 2341 | public void HandleAgentSit(IClientAPI remoteClient, UUID agentID) |
2342 | { | 2342 | { |
2343 | HandleAgentSit(remoteClient, agentID, m_nextSitAnimation); | 2343 | if (!String.IsNullOrEmpty(m_nextSitAnimation)) |
2344 | } | 2344 | { |
2345 | else | 2345 | HandleAgentSit(remoteClient, agentID, m_nextSitAnimation); |
2346 | { | 2346 | } |
2347 | HandleAgentSit(remoteClient, agentID, "SIT"); | 2347 | else |
2348 | } | 2348 | { |
2349 | } | 2349 | HandleAgentSit(remoteClient, agentID, "SIT"); |
2350 | 2350 | } | |
2351 | public void HandleAgentSit(IClientAPI remoteClient, UUID agentID, string sitAnimation) | 2351 | } |
2352 | { | 2352 | |
2353 | SceneObjectPart part = m_scene.GetSceneObjectPart(m_requestedSitTargetID); | 2353 | public void HandleAgentSit(IClientAPI remoteClient, UUID agentID, string sitAnimation) |
2354 | 2354 | { | |
2355 | if (m_sitAtAutoTarget || !m_autopilotMoving) | 2355 | SceneObjectPart part = m_scene.GetSceneObjectPart(m_requestedSitTargetID); |
2356 | { | 2356 | |
2357 | if (part != null) | 2357 | if (m_sitAtAutoTarget || !m_autopilotMoving) |
2358 | { | 2358 | { |
2359 | //Console.WriteLine("Link #{0}, Rot {1}", part.LinkNum, part.GetWorldRotation()); | 2359 | if (part != null) |
2360 | if (part.GetAvatarOnSitTarget() == UUID) | 2360 | { |
2361 | { | 2361 | //Console.WriteLine("Link #{0}, Rot {1}", part.LinkNum, part.GetWorldRotation()); |
2362 | //Console.WriteLine("Scripted Sit"); | 2362 | if (part.GetAvatarOnSitTarget() == UUID) |
2363 | // Scripted sit | 2363 | { |
2364 | Vector3 sitTargetPos = part.SitTargetPosition; | 2364 | //Console.WriteLine("Scripted Sit"); |
2365 | Quaternion sitTargetOrient = part.SitTargetOrientation; | 2365 | // Scripted sit |
2366 | m_pos = new Vector3(sitTargetPos.X, sitTargetPos.Y, sitTargetPos.Z); | 2366 | Vector3 sitTargetPos = part.SitTargetPosition; |
2367 | m_pos += SIT_TARGET_ADJUSTMENT; | 2367 | Quaternion sitTargetOrient = part.SitTargetOrientation; |
2368 | if (!part.IsRoot) | 2368 | m_pos = new Vector3(sitTargetPos.X, sitTargetPos.Y, sitTargetPos.Z); |
2369 | { | 2369 | m_pos += SIT_TARGET_ADJUSTMENT; |
2370 | m_pos *= part.RotationOffset; | 2370 | if (!part.IsRoot) |
2371 | } | 2371 | { |
2372 | m_bodyRot = sitTargetOrient; | 2372 | m_pos *= part.RotationOffset; |
2373 | m_parentPosition = part.AbsolutePosition; | 2373 | } |
2374 | part.IsOccupied = true; | 2374 | m_bodyRot = sitTargetOrient; |
2375 | part.ParentGroup.AddAvatar(agentID); | 2375 | m_parentPosition = part.AbsolutePosition; |
2376 | Console.WriteLine("Scripted Sit ofset {0}", m_pos); | 2376 | part.IsOccupied = true; |
2377 | } | 2377 | part.ParentGroup.AddAvatar(agentID); |
2378 | else | 2378 | Console.WriteLine("Scripted Sit ofset {0}", m_pos); |
2379 | { | 2379 | } |
2380 | // if m_avUnscriptedSitPos is zero then Av sits above center | 2380 | else |
2381 | // Else Av sits at m_avUnscriptedSitPos | 2381 | { |
2382 | 2382 | // if m_avUnscriptedSitPos is zero then Av sits above center | |
2383 | // Non-scripted sit by Kitto Flora 21Nov09 | 2383 | // Else Av sits at m_avUnscriptedSitPos |
2384 | // Calculate angle of line from prim to Av | 2384 | |
2385 | Quaternion partIRot; | 2385 | // Non-scripted sit by Kitto Flora 21Nov09 |
2386 | // if (part.LinkNum == 1) | 2386 | // Calculate angle of line from prim to Av |
2387 | // { // Root prim of linkset | 2387 | Quaternion partIRot; |
2388 | // partIRot = Quaternion.Inverse(part.ParentGroup.RootPart.RotationOffset); | 2388 | // if (part.LinkNum == 1) |
2389 | // } | 2389 | // { // Root prim of linkset |
2390 | // else | 2390 | // partIRot = Quaternion.Inverse(part.ParentGroup.RootPart.RotationOffset); |
2391 | // { // single or child prim | 2391 | // } |
2392 | partIRot = Quaternion.Inverse(part.GetWorldRotation()); | 2392 | // else |
2393 | // } | 2393 | // { // single or child prim |
2394 | Vector3 sitTargetPos= part.AbsolutePosition + m_avUnscriptedSitPos; | 2394 | partIRot = Quaternion.Inverse(part.GetWorldRotation()); |
2395 | float y_diff = (m_avInitialPos.Y - sitTargetPos.Y); | 2395 | // } |
2396 | float x_diff = ( m_avInitialPos.X - sitTargetPos.X); | 2396 | Vector3 sitTargetPos= part.AbsolutePosition + m_avUnscriptedSitPos; |
2397 | if(Math.Abs(x_diff) < 0.001f) x_diff = 0.001f; // avoid div by 0 | 2397 | float y_diff = (m_avInitialPos.Y - sitTargetPos.Y); |
2398 | if(Math.Abs(y_diff) < 0.001f) y_diff = 0.001f; // avoid pol flip at 0 | 2398 | float x_diff = ( m_avInitialPos.X - sitTargetPos.X); |
2399 | float sit_angle = (float)Math.Atan2( (double)y_diff, (double)x_diff); | 2399 | if(Math.Abs(x_diff) < 0.001f) x_diff = 0.001f; // avoid div by 0 |
2400 | // NOTE: when sitting m_ pos and m_bodyRot are *relative* to the prim location/rotation, not 'World'. | 2400 | if(Math.Abs(y_diff) < 0.001f) y_diff = 0.001f; // avoid pol flip at 0 |
2401 | // Av sits at world euler <0,0, z>, translated by part rotation | 2401 | float sit_angle = (float)Math.Atan2( (double)y_diff, (double)x_diff); |
2402 | m_bodyRot = partIRot * Quaternion.CreateFromEulers(0f, 0f, sit_angle); // sit at 0,0,inv-click | 2402 | // NOTE: when sitting m_ pos and m_bodyRot are *relative* to the prim location/rotation, not 'World'. |
2403 | 2403 | // Av sits at world euler <0,0, z>, translated by part rotation | |
2404 | m_parentPosition = part.AbsolutePosition; | 2404 | m_bodyRot = partIRot * Quaternion.CreateFromEulers(0f, 0f, sit_angle); // sit at 0,0,inv-click |
2405 | part.IsOccupied = true; | 2405 | |
2406 | part.ParentGroup.AddAvatar(agentID); | 2406 | m_parentPosition = part.AbsolutePosition; |
2407 | m_pos = new Vector3(0f, 0f, 0.05f) + // corrections to get Sit Animation | 2407 | part.IsOccupied = true; |
2408 | (new Vector3(0.0f, 0f, 0.61f) * partIRot) + // located on center | 2408 | part.ParentGroup.AddAvatar(agentID); |
2409 | (new Vector3(0.34f, 0f, 0.0f) * m_bodyRot) + | 2409 | m_pos = new Vector3(0f, 0f, 0.05f) + // corrections to get Sit Animation |
2410 | m_avUnscriptedSitPos; // adds click offset, if any | 2410 | (new Vector3(0.0f, 0f, 0.61f) * partIRot) + // located on center |
2411 | //Set up raytrace to find top surface of prim | 2411 | (new Vector3(0.34f, 0f, 0.0f) * m_bodyRot) + |
2412 | Vector3 size = part.Scale; | 2412 | m_avUnscriptedSitPos; // adds click offset, if any |
2413 | float mag = 2.0f; // 0.1f + (float)Math.Sqrt((size.X * size.X) + (size.Y * size.Y) + (size.Z * size.Z)); | 2413 | //Set up raytrace to find top surface of prim |
2414 | Vector3 start = part.AbsolutePosition + new Vector3(0f, 0f, mag); | 2414 | Vector3 size = part.Scale; |
2415 | Vector3 down = new Vector3(0f, 0f, -1f); | 2415 | float mag = 2.0f; // 0.1f + (float)Math.Sqrt((size.X * size.X) + (size.Y * size.Y) + (size.Z * size.Z)); |
2416 | //Console.WriteLine("st={0} do={1} ma={2}", start, down, mag); | 2416 | Vector3 start = part.AbsolutePosition + new Vector3(0f, 0f, mag); |
2417 | m_scene.PhysicsScene.RaycastWorld( | 2417 | Vector3 down = new Vector3(0f, 0f, -1f); |
2418 | start, // Vector3 position, | 2418 | //Console.WriteLine("st={0} do={1} ma={2}", start, down, mag); |
2419 | down, // Vector3 direction, | 2419 | m_scene.PhysicsScene.RaycastWorld( |
2420 | mag, // float length, | 2420 | start, // Vector3 position, |
2421 | SitAltitudeCallback); // retMethod | 2421 | down, // Vector3 direction, |
2422 | } // end scripted/not | 2422 | mag, // float length, |
2423 | } | 2423 | SitAltitudeCallback); // retMethod |
2424 | else // no Av | 2424 | } // end scripted/not |
2425 | { | 2425 | } |
2426 | return; | 2426 | else // no Av |
2427 | } | 2427 | { |
2428 | } | 2428 | return; |
2429 | 2429 | } | |
2430 | //We want our offsets to reference the root prim, not the child we may have sat on | 2430 | } |
2431 | if (!part.IsRoot) | 2431 | |
2432 | { | 2432 | //We want our offsets to reference the root prim, not the child we may have sat on |
2433 | m_parentID = part.ParentGroup.RootPart.LocalId; | 2433 | if (!part.IsRoot) |
2434 | m_pos += part.OffsetPosition; | 2434 | { |
2435 | } | 2435 | m_parentID = part.ParentGroup.RootPart.LocalId; |
2436 | else | 2436 | m_pos += part.OffsetPosition; |
2437 | { | 2437 | } |
2438 | m_parentID = m_requestedSitTargetID; | 2438 | else |
2439 | } | 2439 | { |
2440 | 2440 | m_parentID = m_requestedSitTargetID; | |
2441 | m_linkedPrim = part.UUID; | 2441 | } |
2442 | 2442 | ||
2443 | Velocity = Vector3.Zero; | 2443 | m_linkedPrim = part.UUID; |
2444 | RemoveFromPhysicalScene(); | 2444 | |
2445 | 2445 | Velocity = Vector3.Zero; | |
2446 | Animator.TrySetMovementAnimation(sitAnimation); | 2446 | RemoveFromPhysicalScene(); |
2447 | SendFullUpdateToAllClients(); | 2447 | Animator.TrySetMovementAnimation(sitAnimation); |
2448 | } | 2448 | SendFullUpdateToAllClients(); |
2449 | 2449 | SendTerseUpdateToAllClients(); | |
2450 | public void SitAltitudeCallback(bool hitYN, Vector3 collisionPoint, uint localid, float distance, Vector3 normal) | 2450 | } |
2451 | { | 2451 | |
2452 | // KF: 091202 There appears to be a bug in Prim Edit Size - the process sometimes make a prim that RayTrace no longer | 2452 | public void SitAltitudeCallback(bool hitYN, Vector3 collisionPoint, uint localid, float distance, Vector3 normal) |
2453 | // sees. Take/re-rez, or sim restart corrects the condition. Result of bug is incorrect sit height. | 2453 | { |
2454 | if(hitYN) | 2454 | // KF: 091202 There appears to be a bug in Prim Edit Size - the process sometimes make a prim that RayTrace no longer |
2455 | { | 2455 | // sees. Take/re-rez, or sim restart corrects the condition. Result of bug is incorrect sit height. |
2456 | // m_pos = Av offset from prim center to make look like on center | 2456 | if(hitYN) |
2457 | // m_parentPosition = Actual center pos of prim | 2457 | { |
2458 | // collisionPoint = spot on prim where we want to sit | 2458 | // m_pos = Av offset from prim center to make look like on center |
2459 | // collisionPoint.Z = global sit surface height | 2459 | // m_parentPosition = Actual center pos of prim |
2460 | SceneObjectPart part = m_scene.GetSceneObjectPart(localid); | 2460 | // collisionPoint = spot on prim where we want to sit |
2461 | Quaternion partIRot; | 2461 | // collisionPoint.Z = global sit surface height |
2462 | // if (part.LinkNum == 1) | 2462 | SceneObjectPart part = m_scene.GetSceneObjectPart(localid); |
2463 | /// { // Root prim of linkset | 2463 | Quaternion partIRot; |
2464 | // partIRot = Quaternion.Inverse(part.ParentGroup.RootPart.RotationOffset); | 2464 | // if (part.LinkNum == 1) |
2465 | // } | 2465 | /// { // Root prim of linkset |
2466 | // else | 2466 | // partIRot = Quaternion.Inverse(part.ParentGroup.RootPart.RotationOffset); |
2467 | // { // single or child prim | 2467 | // } |
2468 | partIRot = Quaternion.Inverse(part.GetWorldRotation()); | 2468 | // else |
2469 | // } | 2469 | // { // single or child prim |
2470 | if (m_initialSitTarget != null) | 2470 | partIRot = Quaternion.Inverse(part.GetWorldRotation()); |
2471 | { | 2471 | // } |
2472 | float offZ = collisionPoint.Z - m_initialSitTarget.Z; | 2472 | if (m_initialSitTarget != null) |
2473 | Vector3 offset = new Vector3(0.0f, 0.0f, offZ) * partIRot; // Altitude correction | 2473 | { |
2474 | //Console.WriteLine("sitPoint={0}, offset={1}", sitPoint, offset); | 2474 | float offZ = collisionPoint.Z - m_initialSitTarget.Z; |
2475 | m_pos += offset; | 2475 | Vector3 offset = new Vector3(0.0f, 0.0f, offZ) * partIRot; // Altitude correction |
2476 | // ControllingClient.SendClearFollowCamProperties(part.UUID); | 2476 | //Console.WriteLine("sitPoint={0}, offset={1}", sitPoint, offset); |
2477 | } | 2477 | m_pos += offset; |
2478 | 2478 | // ControllingClient.SendClearFollowCamProperties(part.UUID); | |
2479 | } | 2479 | } |
2480 | } // End SitAltitudeCallback KF. | 2480 | |
2481 | 2481 | } | |
2482 | /// <summary> | 2482 | } // End SitAltitudeCallback KF. |
2483 | /// Event handler for the 'Always run' setting on the client | 2483 | |
2484 | /// Tells the physics plugin to increase speed of movement. | 2484 | /// <summary> |
2485 | /// </summary> | 2485 | /// Event handler for the 'Always run' setting on the client |
2486 | public void HandleSetAlwaysRun(IClientAPI remoteClient, bool pSetAlwaysRun) | 2486 | /// Tells the physics plugin to increase speed of movement. |
2487 | { | 2487 | /// </summary> |
2488 | m_setAlwaysRun = pSetAlwaysRun; | 2488 | public void HandleSetAlwaysRun(IClientAPI remoteClient, bool pSetAlwaysRun) |
2489 | if (PhysicsActor != null) | 2489 | { |
2490 | { | 2490 | m_setAlwaysRun = pSetAlwaysRun; |
2491 | PhysicsActor.SetAlwaysRun = pSetAlwaysRun; | 2491 | if (PhysicsActor != null) |
2492 | } | 2492 | { |
2493 | } | 2493 | PhysicsActor.SetAlwaysRun = pSetAlwaysRun; |
2494 | 2494 | } | |
2495 | public void HandleStartAnim(IClientAPI remoteClient, UUID animID) | 2495 | } |
2496 | { | 2496 | |
2497 | Animator.AddAnimation(animID, UUID.Zero); | 2497 | public void HandleStartAnim(IClientAPI remoteClient, UUID animID) |
2498 | } | 2498 | { |
2499 | 2499 | Animator.AddAnimation(animID, UUID.Zero); | |
2500 | public void HandleStopAnim(IClientAPI remoteClient, UUID animID) | 2500 | } |
2501 | { | 2501 | |
2502 | Animator.RemoveAnimation(animID); | 2502 | public void HandleStopAnim(IClientAPI remoteClient, UUID animID) |
2503 | } | 2503 | { |
2504 | 2504 | Animator.RemoveAnimation(animID); | |
2505 | /// <summary> | 2505 | } |
2506 | /// Rotate the avatar to the given rotation and apply a movement in the given relative vector | 2506 | |
2507 | /// </summary> | 2507 | /// <summary> |
2508 | /// <param name="vec">The vector in which to move. This is relative to the rotation argument</param> | 2508 | /// Rotate the avatar to the given rotation and apply a movement in the given relative vector |
2509 | /// <param name="rotation">The direction in which this avatar should now face. | 2509 | /// </summary> |
2510 | public void AddNewMovement(Vector3 vec, Quaternion rotation, bool Nudging) | 2510 | /// <param name="vec">The vector in which to move. This is relative to the rotation argument</param> |
2511 | { | 2511 | /// <param name="rotation">The direction in which this avatar should now face. |
2512 | if (m_isChildAgent) | 2512 | public void AddNewMovement(Vector3 vec, Quaternion rotation, bool Nudging) |
2513 | { | 2513 | { |
2514 | // WHAT??? | 2514 | if (m_isChildAgent) |
2515 | m_log.Debug("[SCENEPRESENCE]: AddNewMovement() called on child agent, making root agent!"); | 2515 | { |
2516 | 2516 | // WHAT??? | |
2517 | // we have to reset the user's child agent connections. | 2517 | m_log.Debug("[SCENEPRESENCE]: AddNewMovement() called on child agent, making root agent!"); |
2518 | // Likely, here they've lost the eventqueue for other regions so border | 2518 | |
2519 | // crossings will fail at this point unless we reset them. | 2519 | // we have to reset the user's child agent connections. |
2520 | 2520 | // Likely, here they've lost the eventqueue for other regions so border | |
2521 | List<ulong> regions = new List<ulong>(KnownChildRegionHandles); | 2521 | // crossings will fail at this point unless we reset them. |
2522 | regions.Remove(m_scene.RegionInfo.RegionHandle); | 2522 | |
2523 | 2523 | List<ulong> regions = new List<ulong>(KnownChildRegionHandles); | |
2524 | MakeRootAgent(new Vector3(127f, 127f, 127f), true); | 2524 | regions.Remove(m_scene.RegionInfo.RegionHandle); |
2525 | 2525 | ||
2526 | // Async command | 2526 | MakeRootAgent(new Vector3(127f, 127f, 127f), true); |
2527 | if (m_scene.SceneGridService != null) | 2527 | |
2528 | { | 2528 | // Async command |
2529 | m_scene.SceneGridService.SendCloseChildAgentConnections(UUID, regions); | 2529 | if (m_scene.SceneGridService != null) |
2530 | 2530 | { | |
2531 | // Give the above command some time to try and close the connections. | 2531 | m_scene.SceneGridService.SendCloseChildAgentConnections(UUID, regions); |
2532 | // this is really an emergency.. so sleep, or we'll get all discombobulated. | 2532 | |
2533 | System.Threading.Thread.Sleep(500); | 2533 | // Give the above command some time to try and close the connections. |
2534 | } | 2534 | // this is really an emergency.. so sleep, or we'll get all discombobulated. |
2535 | 2535 | System.Threading.Thread.Sleep(500); | |
2536 | if (m_scene.SceneGridService != null) | 2536 | } |
2537 | { | 2537 | |
2538 | IEntityTransferModule m_agentTransfer = m_scene.RequestModuleInterface<IEntityTransferModule>(); | 2538 | if (m_scene.SceneGridService != null) |
2539 | if (m_agentTransfer != null) | 2539 | { |
2540 | m_agentTransfer.EnableChildAgents(this); | 2540 | IEntityTransferModule m_agentTransfer = m_scene.RequestModuleInterface<IEntityTransferModule>(); |
2541 | } | 2541 | if (m_agentTransfer != null) |
2542 | 2542 | m_agentTransfer.EnableChildAgents(this); | |
2543 | return; | 2543 | } |
2544 | } | 2544 | |
2545 | 2545 | return; | |
2546 | m_perfMonMS = Util.EnvironmentTickCount(); | 2546 | } |
2547 | 2547 | ||
2548 | Rotation = rotation; | 2548 | m_perfMonMS = Util.EnvironmentTickCount(); |
2549 | Vector3 direc = vec * rotation; | 2549 | |
2550 | direc.Normalize(); | 2550 | Rotation = rotation; |
2551 | PhysicsActor actor = m_physicsActor; | 2551 | Vector3 direc = vec * rotation; |
2552 | if ((vec.Z == 0f) && !actor.Flying) direc.Z = 0f; // Prevent camera WASD up. | 2552 | direc.Normalize(); |
2553 | 2553 | PhysicsActor actor = m_physicsActor; | |
2554 | direc *= 0.03f * 128f * m_speedModifier; | 2554 | if ((vec.Z == 0f) && !actor.Flying) direc.Z = 0f; // Prevent camera WASD up. |
2555 | 2555 | ||
2556 | if (actor != null) | 2556 | direc *= 0.03f * 128f * m_speedModifier; |
2557 | { | 2557 | |
2558 | if (actor.Flying) | 2558 | if (actor != null) |
2559 | { | 2559 | { |
2560 | direc *= 4.0f; | 2560 | if (actor.Flying) |
2561 | //bool controlland = (((m_AgentControlFlags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_UP_NEG) != 0) || ((m_AgentControlFlags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_UP_NEG) != 0)); | 2561 | { |
2562 | //bool colliding = (m_physicsActor.IsColliding==true); | 2562 | direc *= 4.0f; |
2563 | //if (controlland) | 2563 | //bool controlland = (((m_AgentControlFlags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_UP_NEG) != 0) || ((m_AgentControlFlags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_UP_NEG) != 0)); |
2564 | // m_log.Info("[AGENT]: landCommand"); | 2564 | //bool colliding = (m_physicsActor.IsColliding==true); |
2565 | //if (colliding) | 2565 | //if (controlland) |
2566 | // m_log.Info("[AGENT]: colliding"); | 2566 | // m_log.Info("[AGENT]: landCommand"); |
2567 | //if (m_physicsActor.Flying && colliding && controlland) | 2567 | //if (colliding) |
2568 | //{ | 2568 | // m_log.Info("[AGENT]: colliding"); |
2569 | // StopFlying(); | 2569 | //if (m_physicsActor.Flying && colliding && controlland) |
2570 | // m_log.Info("[AGENT]: Stop FLying"); | 2570 | //{ |
2571 | //} | 2571 | // StopFlying(); |
2572 | } | 2572 | // m_log.Info("[AGENT]: Stop FLying"); |
2573 | else if (!actor.Flying && actor.IsColliding) | 2573 | //} |
2574 | { | 2574 | } |
2575 | if (direc.Z > 2.0f) | 2575 | else if (!actor.Flying && actor.IsColliding) |
2576 | { | 2576 | { |
2577 | if(m_animator.m_animTickJump == -1) | 2577 | if (direc.Z > 2.0f) |
2578 | { | 2578 | { |
2579 | direc.Z *= 3.0f; // jump | 2579 | if(m_animator.m_animTickJump == -1) |
2580 | } | 2580 | { |
2581 | else | 2581 | direc.Z *= 3.0f; // jump |
2582 | { | 2582 | } |
2583 | direc.Z *= 0.1f; // prejump | 2583 | else |
2584 | } | 2584 | { |
2585 | /* Animations are controlled via GetMovementAnimation() in ScenePresenceAnimator.cs | 2585 | direc.Z *= 0.1f; // prejump |
2586 | Animator.TrySetMovementAnimation("PREJUMP"); | 2586 | } |
2587 | Animator.TrySetMovementAnimation("JUMP"); | 2587 | /* Animations are controlled via GetMovementAnimation() in ScenePresenceAnimator.cs |
2588 | */ | 2588 | Animator.TrySetMovementAnimation("PREJUMP"); |
2589 | } | 2589 | Animator.TrySetMovementAnimation("JUMP"); |
2590 | } | 2590 | */ |
2591 | } | 2591 | } |
2592 | 2592 | } | |
2593 | // TODO: Add the force instead of only setting it to support multiple forces per frame? | 2593 | } |
2594 | m_forceToApply = direc; | 2594 | |
2595 | m_isNudging = Nudging; | 2595 | // TODO: Add the force instead of only setting it to support multiple forces per frame? |
2596 | m_scene.StatsReporter.AddAgentTime(Util.EnvironmentTickCountSubtract(m_perfMonMS)); | 2596 | m_forceToApply = direc; |
2597 | } | 2597 | m_isNudging = Nudging; |
2598 | 2598 | m_scene.StatsReporter.AddAgentTime(Util.EnvironmentTickCountSubtract(m_perfMonMS)); | |
2599 | #endregion | 2599 | } |
2600 | 2600 | ||
2601 | #region Overridden Methods | 2601 | #endregion |
2602 | 2602 | ||
2603 | public override void Update() | 2603 | #region Overridden Methods |
2604 | { | 2604 | |
2605 | const float ROTATION_TOLERANCE = 0.01f; | 2605 | public override void Update() |
2606 | const float VELOCITY_TOLERANCE = 0.001f; | 2606 | { |
2607 | const float POSITION_TOLERANCE = 0.05f; | 2607 | const float ROTATION_TOLERANCE = 0.01f; |
2608 | //const int TIME_MS_TOLERANCE = 3000; | 2608 | const float VELOCITY_TOLERANCE = 0.001f; |
2609 | 2609 | const float POSITION_TOLERANCE = 0.05f; | |
2610 | 2610 | //const int TIME_MS_TOLERANCE = 3000; | |
2611 | 2611 | ||
2612 | if (m_isChildAgent == false) | 2612 | |
2613 | { | 2613 | |
2614 | // PhysicsActor actor = m_physicsActor; | 2614 | if (m_isChildAgent == false) |
2615 | 2615 | { | |
2616 | // NOTE: Velocity is not the same as m_velocity. Velocity will attempt to | 2616 | // PhysicsActor actor = m_physicsActor; |
2617 | // grab the latest PhysicsActor velocity, whereas m_velocity is often | 2617 | |
2618 | // storing a requested force instead of an actual traveling velocity | 2618 | // NOTE: Velocity is not the same as m_velocity. Velocity will attempt to |
2619 | 2619 | // grab the latest PhysicsActor velocity, whereas m_velocity is often | |
2620 | // Throw away duplicate or insignificant updates | 2620 | // storing a requested force instead of an actual traveling velocity |
2621 | if (!m_bodyRot.ApproxEquals(m_lastRotation, ROTATION_TOLERANCE) || | 2621 | |
2622 | !Velocity.ApproxEquals(m_lastVelocity, VELOCITY_TOLERANCE) || | 2622 | // Throw away duplicate or insignificant updates |
2623 | !m_pos.ApproxEquals(m_lastPosition, POSITION_TOLERANCE)) | 2623 | if (!m_bodyRot.ApproxEquals(m_lastRotation, ROTATION_TOLERANCE) || |
2624 | //Environment.TickCount - m_lastTerseSent > TIME_MS_TOLERANCE) | 2624 | !Velocity.ApproxEquals(m_lastVelocity, VELOCITY_TOLERANCE) || |
2625 | { | 2625 | !m_pos.ApproxEquals(m_lastPosition, POSITION_TOLERANCE)) |
2626 | SendTerseUpdateToAllClients(); | 2626 | //Environment.TickCount - m_lastTerseSent > TIME_MS_TOLERANCE) |
2627 | 2627 | { | |
2628 | // Update the "last" values | 2628 | SendTerseUpdateToAllClients(); |
2629 | m_lastPosition = m_pos; | 2629 | |
2630 | m_lastRotation = m_bodyRot; | 2630 | // Update the "last" values |
2631 | m_lastVelocity = Velocity; | 2631 | m_lastPosition = m_pos; |
2632 | //m_lastTerseSent = Environment.TickCount; | 2632 | m_lastRotation = m_bodyRot; |
2633 | } | 2633 | m_lastVelocity = Velocity; |
2634 | 2634 | //m_lastTerseSent = Environment.TickCount; | |
2635 | // followed suggestion from mic bowman. reversed the two lines below. | 2635 | } |
2636 | if (m_parentID == 0 && m_physicsActor != null || m_parentID != 0) // Check that we have a physics actor or we're sitting on something | 2636 | |
2637 | CheckForBorderCrossing(); | 2637 | // followed suggestion from mic bowman. reversed the two lines below. |
2638 | CheckForSignificantMovement(); // sends update to the modules. | 2638 | if (m_parentID == 0 && m_physicsActor != null || m_parentID != 0) // Check that we have a physics actor or we're sitting on something |
2639 | } | 2639 | CheckForBorderCrossing(); |
2640 | 2640 | CheckForSignificantMovement(); // sends update to the modules. | |
2641 | //Sending prim updates AFTER the avatar terse updates are sent | 2641 | } |
2642 | SendPrimUpdates(); | 2642 | |
2643 | } | 2643 | //Sending prim updates AFTER the avatar terse updates are sent |
2644 | 2644 | SendPrimUpdates(); | |
2645 | #endregion | 2645 | } |
2646 | 2646 | ||
2647 | #region Update Client(s) | 2647 | #endregion |
2648 | 2648 | ||
2649 | /// <summary> | 2649 | #region Update Client(s) |
2650 | /// Sends a location update to the client connected to this scenePresence | 2650 | |
2651 | /// </summary> | 2651 | /// <summary> |
2652 | /// <param name="remoteClient"></param> | 2652 | /// Sends a location update to the client connected to this scenePresence |
2653 | public void SendTerseUpdateToClient(IClientAPI remoteClient) | 2653 | /// </summary> |
2654 | { | 2654 | /// <param name="remoteClient"></param> |
2655 | // If the client is inactive, it's getting its updates from another | 2655 | public void SendTerseUpdateToClient(IClientAPI remoteClient) |
2656 | // server. | 2656 | { |
2657 | if (remoteClient.IsActive) | 2657 | // If the client is inactive, it's getting its updates from another |
2658 | { | 2658 | // server. |
2659 | m_perfMonMS = Util.EnvironmentTickCount(); | 2659 | if (remoteClient.IsActive) |
2660 | 2660 | { | |
2661 | PhysicsActor actor = m_physicsActor; | 2661 | m_perfMonMS = Util.EnvironmentTickCount(); |
2662 | Vector3 velocity = (actor != null) ? actor.Velocity : Vector3.Zero; | 2662 | |
2663 | 2663 | PhysicsActor actor = m_physicsActor; | |
2664 | Vector3 pos = m_pos; | 2664 | Vector3 velocity = (actor != null) ? actor.Velocity : Vector3.Zero; |
2665 | pos.Z += m_appearance.HipOffset; | 2665 | |
2666 | 2666 | Vector3 pos = m_pos; | |
2667 | //m_log.DebugFormat("[SCENEPRESENCE]: TerseUpdate: Pos={0} Rot={1} Vel={2}", m_pos, m_bodyRot, m_velocity); | 2667 | pos.Z += m_appearance.HipOffset; |
2668 | 2668 | ||
2669 | remoteClient.SendPrimUpdate(this, PrimUpdateFlags.Position | PrimUpdateFlags.Rotation | PrimUpdateFlags.Velocity | PrimUpdateFlags.Acceleration | PrimUpdateFlags.AngularVelocity); | 2669 | //m_log.DebugFormat("[SCENEPRESENCE]: TerseUpdate: Pos={0} Rot={1} Vel={2}", m_pos, m_bodyRot, m_velocity); |
2670 | 2670 | ||
2671 | m_scene.StatsReporter.AddAgentTime(Util.EnvironmentTickCountSubtract(m_perfMonMS)); | 2671 | remoteClient.SendPrimUpdate(this, PrimUpdateFlags.Position | PrimUpdateFlags.Rotation | PrimUpdateFlags.Velocity | PrimUpdateFlags.Acceleration | PrimUpdateFlags.AngularVelocity); |
2672 | m_scene.StatsReporter.AddAgentUpdates(1); | 2672 | |
2673 | } | 2673 | m_scene.StatsReporter.AddAgentTime(Util.EnvironmentTickCountSubtract(m_perfMonMS)); |
2674 | } | 2674 | m_scene.StatsReporter.AddAgentUpdates(1); |
2675 | 2675 | } | |
2676 | /// <summary> | 2676 | } |
2677 | /// Send a location/velocity/accelleration update to all agents in scene | 2677 | |
2678 | /// </summary> | 2678 | /// <summary> |
2679 | public void SendTerseUpdateToAllClients() | 2679 | /// Send a location/velocity/accelleration update to all agents in scene |
2680 | { | 2680 | /// </summary> |
2681 | m_perfMonMS = Util.EnvironmentTickCount(); | 2681 | public void SendTerseUpdateToAllClients() |
2682 | 2682 | { | |
2683 | m_scene.ForEachClient(SendTerseUpdateToClient); | 2683 | m_perfMonMS = Util.EnvironmentTickCount(); |
2684 | 2684 | ||
2685 | m_scene.StatsReporter.AddAgentTime(Util.EnvironmentTickCountSubtract(m_perfMonMS)); | 2685 | m_scene.ForEachClient(SendTerseUpdateToClient); |
2686 | } | 2686 | |
2687 | 2687 | m_scene.StatsReporter.AddAgentTime(Util.EnvironmentTickCountSubtract(m_perfMonMS)); | |
2688 | public void SendCoarseLocations(List<Vector3> coarseLocations, List<UUID> avatarUUIDs) | 2688 | } |
2689 | { | 2689 | |
2690 | SendCourseLocationsMethod d = m_sendCourseLocationsMethod; | 2690 | public void SendCoarseLocations(List<Vector3> coarseLocations, List<UUID> avatarUUIDs) |
2691 | if (d != null) | 2691 | { |
2692 | { | 2692 | SendCourseLocationsMethod d = m_sendCourseLocationsMethod; |
2693 | d.Invoke(m_scene.RegionInfo.originRegionID, this, coarseLocations, avatarUUIDs); | 2693 | if (d != null) |
2694 | } | 2694 | { |
2695 | } | 2695 | d.Invoke(m_scene.RegionInfo.originRegionID, this, coarseLocations, avatarUUIDs); |
2696 | 2696 | } | |
2697 | public void SetSendCourseLocationMethod(SendCourseLocationsMethod d) | 2697 | } |
2698 | { | 2698 | |
2699 | if (d != null) | 2699 | public void SetSendCourseLocationMethod(SendCourseLocationsMethod d) |
2700 | m_sendCourseLocationsMethod = d; | 2700 | { |
2701 | } | 2701 | if (d != null) |
2702 | 2702 | m_sendCourseLocationsMethod = d; | |
2703 | public void SendCoarseLocationsDefault(UUID sceneId, ScenePresence p, List<Vector3> coarseLocations, List<UUID> avatarUUIDs) | 2703 | } |
2704 | { | 2704 | |
2705 | m_perfMonMS = Util.EnvironmentTickCount(); | 2705 | public void SendCoarseLocationsDefault(UUID sceneId, ScenePresence p, List<Vector3> coarseLocations, List<UUID> avatarUUIDs) |
2706 | m_controllingClient.SendCoarseLocationUpdate(avatarUUIDs, coarseLocations); | 2706 | { |
2707 | m_scene.StatsReporter.AddAgentTime(Util.EnvironmentTickCountSubtract(m_perfMonMS)); | 2707 | m_perfMonMS = Util.EnvironmentTickCount(); |
2708 | } | 2708 | m_controllingClient.SendCoarseLocationUpdate(avatarUUIDs, coarseLocations); |
2709 | 2709 | m_scene.StatsReporter.AddAgentTime(Util.EnvironmentTickCountSubtract(m_perfMonMS)); | |
2710 | /// <summary> | 2710 | } |
2711 | /// Tell other client about this avatar (The client previously didn't know or had outdated details about this avatar) | 2711 | |
2712 | /// </summary> | 2712 | /// <summary> |
2713 | /// <param name="remoteAvatar"></param> | 2713 | /// Tell other client about this avatar (The client previously didn't know or had outdated details about this avatar) |
2714 | public void SendFullUpdateToOtherClient(ScenePresence remoteAvatar) | 2714 | /// </summary> |
2715 | { | 2715 | /// <param name="remoteAvatar"></param> |
2716 | // 2 stage check is needed. | 2716 | public void SendFullUpdateToOtherClient(ScenePresence remoteAvatar) |
2717 | if (remoteAvatar == null) | 2717 | { |
2718 | return; | 2718 | // 2 stage check is needed. |
2719 | IClientAPI cl=remoteAvatar.ControllingClient; | 2719 | if (remoteAvatar == null) |
2720 | if (cl == null) | 2720 | return; |
2721 | return; | 2721 | IClientAPI cl=remoteAvatar.ControllingClient; |
2722 | if (m_appearance.Texture == null) | 2722 | if (cl == null) |
2723 | return; | 2723 | return; |
2724 | 2724 | if (m_appearance.Texture == null) | |
2725 | Vector3 pos = m_pos; | 2725 | return; |
2726 | pos.Z += m_appearance.HipOffset; | 2726 | |
2727 | 2727 | Vector3 pos = m_pos; | |
2728 | remoteAvatar.m_controllingClient.SendAvatarDataImmediate(this); | 2728 | pos.Z += m_appearance.HipOffset; |
2729 | m_scene.StatsReporter.AddAgentUpdates(1); | 2729 | |
2730 | } | 2730 | remoteAvatar.m_controllingClient.SendAvatarDataImmediate(this); |
2731 | 2731 | m_scene.StatsReporter.AddAgentUpdates(1); | |
2732 | /// <summary> | 2732 | } |
2733 | /// Tell *ALL* agents about this agent | 2733 | |
2734 | /// </summary> | 2734 | /// <summary> |
2735 | public void SendInitialFullUpdateToAllClients() | 2735 | /// Tell *ALL* agents about this agent |
2736 | { | 2736 | /// </summary> |
2737 | m_perfMonMS = Util.EnvironmentTickCount(); | 2737 | public void SendInitialFullUpdateToAllClients() |
2738 | int avUpdates = 0; | 2738 | { |
2739 | m_scene.ForEachScenePresence(delegate(ScenePresence avatar) | 2739 | m_perfMonMS = Util.EnvironmentTickCount(); |
2740 | { | 2740 | int avUpdates = 0; |
2741 | ++avUpdates; | 2741 | m_scene.ForEachScenePresence(delegate(ScenePresence avatar) |
2742 | // only send if this is the root (children are only "listening posts" in a foreign region) | 2742 | { |
2743 | if (!IsChildAgent) | 2743 | ++avUpdates; |
2744 | { | 2744 | // only send if this is the root (children are only "listening posts" in a foreign region) |
2745 | SendFullUpdateToOtherClient(avatar); | 2745 | if (!IsChildAgent) |
2746 | } | 2746 | { |
2747 | 2747 | SendFullUpdateToOtherClient(avatar); | |
2748 | if (avatar.LocalId != LocalId) | 2748 | } |
2749 | { | 2749 | |
2750 | if (!avatar.IsChildAgent) | 2750 | if (avatar.LocalId != LocalId) |
2751 | { | 2751 | { |
2752 | avatar.SendFullUpdateToOtherClient(this); | 2752 | if (!avatar.IsChildAgent) |
2753 | avatar.SendAppearanceToOtherAgent(this); | 2753 | { |
2754 | avatar.Animator.SendAnimPackToClient(ControllingClient); | 2754 | avatar.SendFullUpdateToOtherClient(this); |
2755 | } | 2755 | avatar.SendAppearanceToOtherAgent(this); |
2756 | } | 2756 | avatar.Animator.SendAnimPackToClient(ControllingClient); |
2757 | }); | 2757 | } |
2758 | 2758 | } | |
2759 | m_scene.StatsReporter.AddAgentUpdates(avUpdates); | 2759 | }); |
2760 | m_scene.StatsReporter.AddAgentTime(Util.EnvironmentTickCountSubtract(m_perfMonMS)); | 2760 | |
2761 | 2761 | m_scene.StatsReporter.AddAgentUpdates(avUpdates); | |
2762 | //Animator.SendAnimPack(); | 2762 | m_scene.StatsReporter.AddAgentTime(Util.EnvironmentTickCountSubtract(m_perfMonMS)); |
2763 | } | 2763 | |
2764 | 2764 | //Animator.SendAnimPack(); | |
2765 | public void SendFullUpdateToAllClients() | 2765 | } |
2766 | { | 2766 | |
2767 | m_perfMonMS = Util.EnvironmentTickCount(); | 2767 | public void SendFullUpdateToAllClients() |
2768 | 2768 | { | |
2769 | // only send update from root agents to other clients; children are only "listening posts" | 2769 | m_perfMonMS = Util.EnvironmentTickCount(); |
2770 | int count = 0; | 2770 | |
2771 | m_scene.ForEachScenePresence(delegate(ScenePresence sp) | 2771 | // only send update from root agents to other clients; children are only "listening posts" |
2772 | { | 2772 | int count = 0; |
2773 | if (sp.IsChildAgent) | 2773 | m_scene.ForEachScenePresence(delegate(ScenePresence sp) |
2774 | return; | 2774 | { |
2775 | SendFullUpdateToOtherClient(sp); | 2775 | if (sp.IsChildAgent) |
2776 | ++count; | 2776 | return; |
2777 | }); | 2777 | SendFullUpdateToOtherClient(sp); |
2778 | m_scene.StatsReporter.AddAgentUpdates(count); | 2778 | ++count; |
2779 | m_scene.StatsReporter.AddAgentTime(Util.EnvironmentTickCountSubtract(m_perfMonMS)); | 2779 | }); |
2780 | 2780 | m_scene.StatsReporter.AddAgentUpdates(count); | |
2781 | Animator.SendAnimPack(); | 2781 | m_scene.StatsReporter.AddAgentTime(Util.EnvironmentTickCountSubtract(m_perfMonMS)); |
2782 | } | 2782 | |
2783 | 2783 | Animator.SendAnimPack(); | |
2784 | /// <summary> | 2784 | } |
2785 | /// Do everything required once a client completes its movement into a region | 2785 | |
2786 | /// </summary> | 2786 | /// <summary> |
2787 | public void SendInitialData() | 2787 | /// Do everything required once a client completes its movement into a region |
2788 | { | 2788 | /// </summary> |
2789 | // Moved this into CompleteMovement to ensure that m_appearance is initialized before | 2789 | public void SendInitialData() |
2790 | // the inventory arrives | 2790 | { |
2791 | // m_scene.GetAvatarAppearance(m_controllingClient, out m_appearance); | 2791 | // Moved this into CompleteMovement to ensure that m_appearance is initialized before |
2792 | 2792 | // the inventory arrives | |
2793 | Vector3 pos = m_pos; | 2793 | // m_scene.GetAvatarAppearance(m_controllingClient, out m_appearance); |
2794 | pos.Z += m_appearance.HipOffset; | 2794 | |
2795 | 2795 | Vector3 pos = m_pos; | |
2796 | m_controllingClient.SendAvatarDataImmediate(this); | 2796 | pos.Z += m_appearance.HipOffset; |
2797 | 2797 | ||
2798 | SendInitialFullUpdateToAllClients(); | 2798 | m_controllingClient.SendAvatarDataImmediate(this); |
2799 | SendAppearanceToAllOtherAgents(); | 2799 | |
2800 | } | 2800 | SendInitialFullUpdateToAllClients(); |
2801 | 2801 | SendAppearanceToAllOtherAgents(); | |
2802 | /// <summary> | 2802 | } |
2803 | /// Tell the client for this scene presence what items it should be wearing now | 2803 | |
2804 | /// </summary> | 2804 | /// <summary> |
2805 | public void SendWearables() | 2805 | /// Tell the client for this scene presence what items it should be wearing now |
2806 | { | 2806 | /// </summary> |
2807 | m_log.DebugFormat("[SCENE]: Received request for wearables of {0}", Name); | 2807 | public void SendWearables() |
2808 | 2808 | { | |
2809 | ControllingClient.SendWearables(m_appearance.Wearables, m_appearance.Serial++); | 2809 | m_log.DebugFormat("[SCENE]: Received request for wearables of {0}", Name); |
2810 | } | 2810 | |
2811 | 2811 | ControllingClient.SendWearables(m_appearance.Wearables, m_appearance.Serial++); | |
2812 | /// <summary> | 2812 | } |
2813 | /// | 2813 | |
2814 | /// </summary> | 2814 | /// <summary> |
2815 | public void SendAppearanceToAllOtherAgents() | 2815 | /// |
2816 | { | 2816 | /// </summary> |
2817 | m_perfMonMS = Util.EnvironmentTickCount(); | 2817 | public void SendAppearanceToAllOtherAgents() |
2818 | 2818 | { | |
2819 | m_scene.ForEachScenePresence(delegate(ScenePresence scenePresence) | 2819 | m_perfMonMS = Util.EnvironmentTickCount(); |
2820 | { | 2820 | |
2821 | if (scenePresence.UUID != UUID) | 2821 | m_scene.ForEachScenePresence(delegate(ScenePresence scenePresence) |
2822 | { | 2822 | { |
2823 | SendAppearanceToOtherAgent(scenePresence); | 2823 | if (scenePresence.UUID != UUID) |
2824 | } | 2824 | { |
2825 | }); | 2825 | SendAppearanceToOtherAgent(scenePresence); |
2826 | 2826 | } | |
2827 | m_scene.StatsReporter.AddAgentTime(Util.EnvironmentTickCountSubtract(m_perfMonMS)); | 2827 | }); |
2828 | } | 2828 | |
2829 | 2829 | m_scene.StatsReporter.AddAgentTime(Util.EnvironmentTickCountSubtract(m_perfMonMS)); | |
2830 | /// <summary> | 2830 | } |
2831 | /// Send appearance data to an agent that isn't this one. | 2831 | |
2832 | /// </summary> | 2832 | /// <summary> |
2833 | /// <param name="avatar"></param> | 2833 | /// Send appearance data to an agent that isn't this one. |
2834 | public void SendAppearanceToOtherAgent(ScenePresence avatar) | 2834 | /// </summary> |
2835 | { | 2835 | /// <param name="avatar"></param> |
2836 | avatar.ControllingClient.SendAppearance( | 2836 | public void SendAppearanceToOtherAgent(ScenePresence avatar) |
2837 | m_appearance.Owner, m_appearance.VisualParams, m_appearance.Texture.GetBytes()); | 2837 | { |
2838 | } | 2838 | avatar.ControllingClient.SendAppearance( |
2839 | 2839 | m_appearance.Owner, m_appearance.VisualParams, m_appearance.Texture.GetBytes()); | |
2840 | /// <summary> | 2840 | } |
2841 | /// Set appearance data (textureentry and slider settings) received from the client | 2841 | |
2842 | /// </summary> | 2842 | /// <summary> |
2843 | /// <param name="texture"></param> | 2843 | /// Set appearance data (textureentry and slider settings) received from the client |
2844 | /// <param name="visualParam"></param> | 2844 | /// </summary> |
2845 | public void SetAppearance(Primitive.TextureEntry textureEntry, byte[] visualParams) | 2845 | /// <param name="texture"></param> |
2846 | { | 2846 | /// <param name="visualParam"></param> |
2847 | if (m_physicsActor != null) | 2847 | public void SetAppearance(Primitive.TextureEntry textureEntry, byte[] visualParams) |
2848 | { | 2848 | { |
2849 | if (!IsChildAgent) | 2849 | if (m_physicsActor != null) |
2850 | { | 2850 | { |
2851 | // This may seem like it's redundant, remove the avatar from the physics scene | 2851 | if (!IsChildAgent) |
2852 | // just to add it back again, but it saves us from having to update | 2852 | { |
2853 | // 3 variables 10 times a second. | 2853 | // This may seem like it's redundant, remove the avatar from the physics scene |
2854 | bool flyingTemp = m_physicsActor.Flying; | 2854 | // just to add it back again, but it saves us from having to update |
2855 | RemoveFromPhysicalScene(); | 2855 | // 3 variables 10 times a second. |
2856 | //m_scene.PhysicsScene.RemoveAvatar(m_physicsActor); | 2856 | bool flyingTemp = m_physicsActor.Flying; |
2857 | 2857 | RemoveFromPhysicalScene(); | |
2858 | //PhysicsActor = null; | 2858 | //m_scene.PhysicsScene.RemoveAvatar(m_physicsActor); |
2859 | 2859 | ||
2860 | AddToPhysicalScene(flyingTemp); | 2860 | //PhysicsActor = null; |
2861 | } | 2861 | |
2862 | } | 2862 | AddToPhysicalScene(flyingTemp); |
2863 | 2863 | } | |
2864 | #region Bake Cache Check | 2864 | } |
2865 | 2865 | ||
2866 | if (textureEntry != null) | 2866 | #region Bake Cache Check |
2867 | { | 2867 | |
2868 | for (int i = 0; i < BAKE_INDICES.Length; i++) | 2868 | if (textureEntry != null) |
2869 | { | 2869 | { |
2870 | int j = BAKE_INDICES[i]; | 2870 | for (int i = 0; i < BAKE_INDICES.Length; i++) |
2871 | Primitive.TextureEntryFace face = textureEntry.FaceTextures[j]; | 2871 | { |
2872 | 2872 | int j = BAKE_INDICES[i]; | |
2873 | if (face != null && face.TextureID != AppearanceManager.DEFAULT_AVATAR_TEXTURE) | 2873 | Primitive.TextureEntryFace face = textureEntry.FaceTextures[j]; |
2874 | { | 2874 | |
2875 | if (m_scene.AssetService.Get(face.TextureID.ToString()) == null) | 2875 | if (face != null && face.TextureID != AppearanceManager.DEFAULT_AVATAR_TEXTURE) |
2876 | { | 2876 | { |
2877 | m_log.Warn("[APPEARANCE]: Missing baked texture " + face.TextureID + " (" + j + ") for avatar " + this.Name); | 2877 | if (m_scene.AssetService.Get(face.TextureID.ToString()) == null) |
2878 | this.ControllingClient.SendRebakeAvatarTextures(face.TextureID); | 2878 | { |
2879 | } | 2879 | m_log.Warn("[APPEARANCE]: Missing baked texture " + face.TextureID + " (" + j + ") for avatar " + this.Name); |
2880 | } | 2880 | this.ControllingClient.SendRebakeAvatarTextures(face.TextureID); |
2881 | } | 2881 | } |
2882 | 2882 | } | |
2883 | } | 2883 | } |
2884 | 2884 | ||
2885 | 2885 | } | |
2886 | #endregion Bake Cache Check | 2886 | |
2887 | 2887 | ||
2888 | m_appearance.SetAppearance(textureEntry, visualParams); | 2888 | #endregion Bake Cache Check |
2889 | if (m_appearance.AvatarHeight > 0) | 2889 | |
2890 | SetHeight(m_appearance.AvatarHeight); | 2890 | m_appearance.SetAppearance(textureEntry, visualParams); |
2891 | 2891 | if (m_appearance.AvatarHeight > 0) | |
2892 | // This is not needed, because only the transient data changed | 2892 | SetHeight(m_appearance.AvatarHeight); |
2893 | //AvatarData adata = new AvatarData(m_appearance); | 2893 | |
2894 | //m_scene.AvatarService.SetAvatar(m_controllingClient.AgentId, adata); | 2894 | // This is not needed, because only the transient data changed |
2895 | 2895 | //AvatarData adata = new AvatarData(m_appearance); | |
2896 | SendAppearanceToAllOtherAgents(); | 2896 | //m_scene.AvatarService.SetAvatar(m_controllingClient.AgentId, adata); |
2897 | if (!m_startAnimationSet) | 2897 | |
2898 | { | 2898 | SendAppearanceToAllOtherAgents(); |
2899 | Animator.UpdateMovementAnimations(); | 2899 | if (!m_startAnimationSet) |
2900 | m_startAnimationSet = true; | 2900 | { |
2901 | } | 2901 | Animator.UpdateMovementAnimations(); |
2902 | 2902 | m_startAnimationSet = true; | |
2903 | Vector3 pos = m_pos; | 2903 | } |
2904 | pos.Z += m_appearance.HipOffset; | 2904 | |
2905 | 2905 | Vector3 pos = m_pos; | |
2906 | m_controllingClient.SendAvatarDataImmediate(this); | 2906 | pos.Z += m_appearance.HipOffset; |
2907 | } | 2907 | |
2908 | 2908 | m_controllingClient.SendAvatarDataImmediate(this); | |
2909 | public void SetWearable(int wearableId, AvatarWearable wearable) | 2909 | } |
2910 | { | 2910 | |
2911 | m_appearance.SetWearable(wearableId, wearable); | 2911 | public void SetWearable(int wearableId, AvatarWearable wearable) |
2912 | AvatarData adata = new AvatarData(m_appearance); | 2912 | { |
2913 | m_scene.AvatarService.SetAvatar(m_controllingClient.AgentId, adata); | 2913 | m_appearance.SetWearable(wearableId, wearable); |
2914 | m_controllingClient.SendWearables(m_appearance.Wearables, m_appearance.Serial++); | 2914 | AvatarData adata = new AvatarData(m_appearance); |
2915 | } | 2915 | m_scene.AvatarService.SetAvatar(m_controllingClient.AgentId, adata); |
2916 | 2916 | m_controllingClient.SendWearables(m_appearance.Wearables, m_appearance.Serial++); | |
2917 | // Because appearance setting is in a module, we actually need | 2917 | } |
2918 | // to give it access to our appearance directly, otherwise we | 2918 | |
2919 | // get a synchronization issue. | 2919 | // Because appearance setting is in a module, we actually need |
2920 | public AvatarAppearance Appearance | 2920 | // to give it access to our appearance directly, otherwise we |
2921 | { | 2921 | // get a synchronization issue. |
2922 | get { return m_appearance; } | 2922 | public AvatarAppearance Appearance |
2923 | set { m_appearance = value; } | 2923 | { |
2924 | } | 2924 | get { return m_appearance; } |
2925 | 2925 | set { m_appearance = value; } | |
2926 | #endregion | 2926 | } |
2927 | 2927 | ||
2928 | #region Significant Movement Method | 2928 | #endregion |
2929 | 2929 | ||
2930 | /// <summary> | 2930 | #region Significant Movement Method |
2931 | /// This checks for a significant movement and sends a courselocationchange update | 2931 | |
2932 | /// </summary> | 2932 | /// <summary> |
2933 | protected void CheckForSignificantMovement() | 2933 | /// This checks for a significant movement and sends a courselocationchange update |
2934 | { | 2934 | /// </summary> |
2935 | // Movement updates for agents in neighboring regions are sent directly to clients. | 2935 | protected void CheckForSignificantMovement() |
2936 | // This value only affects how often agent positions are sent to neighbor regions | 2936 | { |
2937 | // for things such as distance-based update prioritization | 2937 | // Movement updates for agents in neighboring regions are sent directly to clients. |
2938 | const float SIGNIFICANT_MOVEMENT = 2.0f; | 2938 | // This value only affects how often agent positions are sent to neighbor regions |
2939 | 2939 | // for things such as distance-based update prioritization | |
2940 | if (Util.GetDistanceTo(AbsolutePosition, posLastSignificantMove) > SIGNIFICANT_MOVEMENT) | 2940 | const float SIGNIFICANT_MOVEMENT = 2.0f; |
2941 | { | 2941 | |
2942 | posLastSignificantMove = AbsolutePosition; | 2942 | if (Util.GetDistanceTo(AbsolutePosition, posLastSignificantMove) > SIGNIFICANT_MOVEMENT) |
2943 | m_scene.EventManager.TriggerSignificantClientMovement(m_controllingClient); | 2943 | { |
2944 | } | 2944 | posLastSignificantMove = AbsolutePosition; |
2945 | 2945 | m_scene.EventManager.TriggerSignificantClientMovement(m_controllingClient); | |
2946 | // Minimum Draw distance is 64 meters, the Radius of the draw distance sphere is 32m | 2946 | } |
2947 | if (Util.GetDistanceTo(AbsolutePosition, m_lastChildAgentUpdatePosition) >= Scene.ChildReprioritizationDistance || | 2947 | |
2948 | Util.GetDistanceTo(CameraPosition, m_lastChildAgentUpdateCamPosition) >= Scene.ChildReprioritizationDistance) | 2948 | // Minimum Draw distance is 64 meters, the Radius of the draw distance sphere is 32m |
2949 | { | 2949 | if (Util.GetDistanceTo(AbsolutePosition, m_lastChildAgentUpdatePosition) >= Scene.ChildReprioritizationDistance || |
2950 | m_lastChildAgentUpdatePosition = AbsolutePosition; | 2950 | Util.GetDistanceTo(CameraPosition, m_lastChildAgentUpdateCamPosition) >= Scene.ChildReprioritizationDistance) |
2951 | m_lastChildAgentUpdateCamPosition = CameraPosition; | 2951 | { |
2952 | 2952 | m_lastChildAgentUpdatePosition = AbsolutePosition; | |
2953 | ChildAgentDataUpdate cadu = new ChildAgentDataUpdate(); | 2953 | m_lastChildAgentUpdateCamPosition = CameraPosition; |
2954 | cadu.ActiveGroupID = UUID.Zero.Guid; | 2954 | |
2955 | cadu.AgentID = UUID.Guid; | 2955 | ChildAgentDataUpdate cadu = new ChildAgentDataUpdate(); |
2956 | cadu.alwaysrun = m_setAlwaysRun; | 2956 | cadu.ActiveGroupID = UUID.Zero.Guid; |
2957 | cadu.AVHeight = m_avHeight; | 2957 | cadu.AgentID = UUID.Guid; |
2958 | Vector3 tempCameraCenter = m_CameraCenter; | 2958 | cadu.alwaysrun = m_setAlwaysRun; |
2959 | cadu.cameraPosition = tempCameraCenter; | 2959 | cadu.AVHeight = m_avHeight; |
2960 | cadu.drawdistance = m_DrawDistance; | 2960 | Vector3 tempCameraCenter = m_CameraCenter; |
2961 | cadu.GroupAccess = 0; | 2961 | cadu.cameraPosition = tempCameraCenter; |
2962 | cadu.Position = AbsolutePosition; | 2962 | cadu.drawdistance = m_DrawDistance; |
2963 | cadu.regionHandle = m_rootRegionHandle; | 2963 | cadu.GroupAccess = 0; |
2964 | float multiplier = 1; | 2964 | cadu.Position = AbsolutePosition; |
2965 | int innacurateNeighbors = m_scene.GetInaccurateNeighborCount(); | 2965 | cadu.regionHandle = m_rootRegionHandle; |
2966 | if (innacurateNeighbors != 0) | 2966 | float multiplier = 1; |
2967 | { | 2967 | int innacurateNeighbors = m_scene.GetInaccurateNeighborCount(); |
2968 | multiplier = 1f / (float)innacurateNeighbors; | 2968 | if (innacurateNeighbors != 0) |
2969 | } | 2969 | { |
2970 | if (multiplier <= 0f) | 2970 | multiplier = 1f / (float)innacurateNeighbors; |
2971 | { | 2971 | } |
2972 | multiplier = 0.25f; | 2972 | if (multiplier <= 0f) |
2973 | } | 2973 | { |
2974 | 2974 | multiplier = 0.25f; | |
2975 | //m_log.Info("[NeighborThrottle]: " + m_scene.GetInaccurateNeighborCount().ToString() + " - m: " + multiplier.ToString()); | 2975 | } |
2976 | cadu.throttles = ControllingClient.GetThrottlesPacked(multiplier); | 2976 | |
2977 | cadu.Velocity = Velocity; | 2977 | //m_log.Info("[NeighborThrottle]: " + m_scene.GetInaccurateNeighborCount().ToString() + " - m: " + multiplier.ToString()); |
2978 | 2978 | cadu.throttles = ControllingClient.GetThrottlesPacked(multiplier); | |
2979 | AgentPosition agentpos = new AgentPosition(); | 2979 | cadu.Velocity = Velocity; |
2980 | agentpos.CopyFrom(cadu); | 2980 | |
2981 | 2981 | AgentPosition agentpos = new AgentPosition(); | |
2982 | m_scene.SendOutChildAgentUpdates(agentpos, this); | 2982 | agentpos.CopyFrom(cadu); |
2983 | } | 2983 | |
2984 | } | 2984 | m_scene.SendOutChildAgentUpdates(agentpos, this); |
2985 | 2985 | } | |
2986 | #endregion | 2986 | } |
2987 | 2987 | ||
2988 | #region Border Crossing Methods | 2988 | #endregion |
2989 | 2989 | ||
2990 | /// <summary> | 2990 | #region Border Crossing Methods |
2991 | /// Checks to see if the avatar is in range of a border and calls CrossToNewRegion | 2991 | |
2992 | /// </summary> | 2992 | /// <summary> |
2993 | protected void CheckForBorderCrossing() | 2993 | /// Checks to see if the avatar is in range of a border and calls CrossToNewRegion |
2994 | { | 2994 | /// </summary> |
2995 | if (IsChildAgent) | 2995 | protected void CheckForBorderCrossing() |
2996 | return; | 2996 | { |
2997 | 2997 | if (IsChildAgent) | |
2998 | Vector3 pos2 = AbsolutePosition; | 2998 | return; |
2999 | Vector3 vel = Velocity; | 2999 | |
3000 | int neighbor = 0; | 3000 | Vector3 pos2 = AbsolutePosition; |
3001 | int[] fix = new int[2]; | 3001 | Vector3 vel = Velocity; |
3002 | 3002 | int neighbor = 0; | |
3003 | float timeStep = 0.1f; | 3003 | int[] fix = new int[2]; |
3004 | pos2.X = pos2.X + (vel.X*timeStep); | 3004 | |
3005 | pos2.Y = pos2.Y + (vel.Y*timeStep); | 3005 | float timeStep = 0.1f; |
3006 | pos2.Z = pos2.Z + (vel.Z*timeStep); | 3006 | pos2.X = pos2.X + (vel.X*timeStep); |
3007 | 3007 | pos2.Y = pos2.Y + (vel.Y*timeStep); | |
3008 | if (!IsInTransit) | 3008 | pos2.Z = pos2.Z + (vel.Z*timeStep); |
3009 | { | 3009 | |
3010 | // Checks if where it's headed exists a region | 3010 | if (!IsInTransit) |
3011 | 3011 | { | |
3012 | bool needsTransit = false; | 3012 | // Checks if where it's headed exists a region |
3013 | if (m_scene.TestBorderCross(pos2, Cardinals.W)) | 3013 | |
3014 | { | 3014 | bool needsTransit = false; |
3015 | if (m_scene.TestBorderCross(pos2, Cardinals.S)) | 3015 | if (m_scene.TestBorderCross(pos2, Cardinals.W)) |
3016 | { | 3016 | { |
3017 | needsTransit = true; | 3017 | if (m_scene.TestBorderCross(pos2, Cardinals.S)) |
3018 | neighbor = HaveNeighbor(Cardinals.SW, ref fix); | 3018 | { |
3019 | } | 3019 | needsTransit = true; |
3020 | else if (m_scene.TestBorderCross(pos2, Cardinals.N)) | 3020 | neighbor = HaveNeighbor(Cardinals.SW, ref fix); |
3021 | { | 3021 | } |
3022 | needsTransit = true; | 3022 | else if (m_scene.TestBorderCross(pos2, Cardinals.N)) |
3023 | neighbor = HaveNeighbor(Cardinals.NW, ref fix); | 3023 | { |
3024 | } | 3024 | needsTransit = true; |
3025 | else | 3025 | neighbor = HaveNeighbor(Cardinals.NW, ref fix); |
3026 | { | 3026 | } |
3027 | needsTransit = true; | 3027 | else |
3028 | neighbor = HaveNeighbor(Cardinals.W, ref fix); | 3028 | { |
3029 | } | 3029 | needsTransit = true; |
3030 | } | 3030 | neighbor = HaveNeighbor(Cardinals.W, ref fix); |
3031 | else if (m_scene.TestBorderCross(pos2, Cardinals.E)) | 3031 | } |
3032 | { | 3032 | } |
3033 | if (m_scene.TestBorderCross(pos2, Cardinals.S)) | 3033 | else if (m_scene.TestBorderCross(pos2, Cardinals.E)) |
3034 | { | 3034 | { |
3035 | needsTransit = true; | 3035 | if (m_scene.TestBorderCross(pos2, Cardinals.S)) |
3036 | neighbor = HaveNeighbor(Cardinals.SE, ref fix); | 3036 | { |
3037 | } | 3037 | needsTransit = true; |
3038 | else if (m_scene.TestBorderCross(pos2, Cardinals.N)) | 3038 | neighbor = HaveNeighbor(Cardinals.SE, ref fix); |
3039 | { | 3039 | } |
3040 | needsTransit = true; | 3040 | else if (m_scene.TestBorderCross(pos2, Cardinals.N)) |
3041 | neighbor = HaveNeighbor(Cardinals.NE, ref fix); | 3041 | { |
3042 | } | 3042 | needsTransit = true; |
3043 | else | 3043 | neighbor = HaveNeighbor(Cardinals.NE, ref fix); |
3044 | { | 3044 | } |
3045 | needsTransit = true; | 3045 | else |
3046 | neighbor = HaveNeighbor(Cardinals.E, ref fix); | 3046 | { |
3047 | } | 3047 | needsTransit = true; |
3048 | } | 3048 | neighbor = HaveNeighbor(Cardinals.E, ref fix); |
3049 | else if (m_scene.TestBorderCross(pos2, Cardinals.S)) | 3049 | } |
3050 | { | 3050 | } |
3051 | needsTransit = true; | 3051 | else if (m_scene.TestBorderCross(pos2, Cardinals.S)) |
3052 | neighbor = HaveNeighbor(Cardinals.S, ref fix); | 3052 | { |
3053 | } | 3053 | needsTransit = true; |
3054 | else if (m_scene.TestBorderCross(pos2, Cardinals.N)) | 3054 | neighbor = HaveNeighbor(Cardinals.S, ref fix); |
3055 | { | 3055 | } |
3056 | needsTransit = true; | 3056 | else if (m_scene.TestBorderCross(pos2, Cardinals.N)) |
3057 | neighbor = HaveNeighbor(Cardinals.N, ref fix); | 3057 | { |
3058 | } | 3058 | needsTransit = true; |
3059 | 3059 | neighbor = HaveNeighbor(Cardinals.N, ref fix); | |
3060 | 3060 | } | |
3061 | // Makes sure avatar does not end up outside region | 3061 | |
3062 | if (neighbor <= 0) | 3062 | |
3063 | { | 3063 | // Makes sure avatar does not end up outside region |
3064 | if (!needsTransit) | 3064 | if (neighbor <= 0) |
3065 | { | 3065 | { |
3066 | if (m_requestedSitTargetUUID == UUID.Zero) | 3066 | if (!needsTransit) |
3067 | { | 3067 | { |
3068 | Vector3 pos = AbsolutePosition; | 3068 | if (m_requestedSitTargetUUID == UUID.Zero) |
3069 | if (AbsolutePosition.X < 0) | 3069 | { |
3070 | pos.X += Velocity.X; | 3070 | Vector3 pos = AbsolutePosition; |
3071 | else if (AbsolutePosition.X > Constants.RegionSize) | 3071 | if (AbsolutePosition.X < 0) |
3072 | pos.X -= Velocity.X; | 3072 | pos.X += Velocity.X; |
3073 | if (AbsolutePosition.Y < 0) | 3073 | else if (AbsolutePosition.X > Constants.RegionSize) |
3074 | pos.Y += Velocity.Y; | 3074 | pos.X -= Velocity.X; |
3075 | else if (AbsolutePosition.Y > Constants.RegionSize) | 3075 | if (AbsolutePosition.Y < 0) |
3076 | pos.Y -= Velocity.Y; | 3076 | pos.Y += Velocity.Y; |
3077 | AbsolutePosition = pos; | 3077 | else if (AbsolutePosition.Y > Constants.RegionSize) |
3078 | } | 3078 | pos.Y -= Velocity.Y; |
3079 | } | 3079 | AbsolutePosition = pos; |
3080 | } | 3080 | } |
3081 | else if (neighbor > 0) | 3081 | } |
3082 | CrossToNewRegion(); | 3082 | } |
3083 | } | 3083 | else if (neighbor > 0) |
3084 | else | 3084 | CrossToNewRegion(); |
3085 | { | 3085 | } |
3086 | RemoveFromPhysicalScene(); | 3086 | else |
3087 | // This constant has been inferred from experimentation | 3087 | { |
3088 | // I'm not sure what this value should be, so I tried a few values. | 3088 | RemoveFromPhysicalScene(); |
3089 | timeStep = 0.04f; | 3089 | // This constant has been inferred from experimentation |
3090 | pos2 = AbsolutePosition; | 3090 | // I'm not sure what this value should be, so I tried a few values. |
3091 | pos2.X = pos2.X + (vel.X * timeStep); | 3091 | timeStep = 0.04f; |
3092 | pos2.Y = pos2.Y + (vel.Y * timeStep); | 3092 | pos2 = AbsolutePosition; |
3093 | pos2.Z = pos2.Z + (vel.Z * timeStep); | 3093 | pos2.X = pos2.X + (vel.X * timeStep); |
3094 | m_pos = pos2; | 3094 | pos2.Y = pos2.Y + (vel.Y * timeStep); |
3095 | } | 3095 | pos2.Z = pos2.Z + (vel.Z * timeStep); |
3096 | } | 3096 | m_pos = pos2; |
3097 | 3097 | } | |
3098 | protected int HaveNeighbor(Cardinals car, ref int[] fix) | 3098 | } |
3099 | { | 3099 | |
3100 | uint neighbourx = m_regionInfo.RegionLocX; | 3100 | protected int HaveNeighbor(Cardinals car, ref int[] fix) |
3101 | uint neighboury = m_regionInfo.RegionLocY; | 3101 | { |
3102 | 3102 | uint neighbourx = m_regionInfo.RegionLocX; | |
3103 | int dir = (int)car; | 3103 | uint neighboury = m_regionInfo.RegionLocY; |
3104 | 3104 | ||
3105 | if (dir > 1 && dir < 5) //Heading East | 3105 | int dir = (int)car; |
3106 | neighbourx++; | 3106 | |
3107 | else if (dir > 5) // Heading West | 3107 | if (dir > 1 && dir < 5) //Heading East |
3108 | neighbourx--; | 3108 | neighbourx++; |
3109 | 3109 | else if (dir > 5) // Heading West | |
3110 | if (dir < 3 || dir == 8) // Heading North | 3110 | neighbourx--; |
3111 | neighboury++; | 3111 | |
3112 | else if (dir > 3 && dir < 7) // Heading Sout | 3112 | if (dir < 3 || dir == 8) // Heading North |
3113 | neighboury--; | 3113 | neighboury++; |
3114 | 3114 | else if (dir > 3 && dir < 7) // Heading Sout | |
3115 | int x = (int)(neighbourx * Constants.RegionSize); | 3115 | neighboury--; |
3116 | int y = (int)(neighboury * Constants.RegionSize); | 3116 | |
3117 | GridRegion neighbourRegion = m_scene.GridService.GetRegionByPosition(m_scene.RegionInfo.ScopeID, x, y); | 3117 | int x = (int)(neighbourx * Constants.RegionSize); |
3118 | 3118 | int y = (int)(neighboury * Constants.RegionSize); | |
3119 | if (neighbourRegion == null) | 3119 | GridRegion neighbourRegion = m_scene.GridService.GetRegionByPosition(m_scene.RegionInfo.ScopeID, x, y); |
3120 | { | 3120 | |
3121 | fix[0] = (int)(m_regionInfo.RegionLocX - neighbourx); | 3121 | if (neighbourRegion == null) |
3122 | fix[1] = (int)(m_regionInfo.RegionLocY - neighboury); | 3122 | { |
3123 | return dir * (-1); | 3123 | fix[0] = (int)(m_regionInfo.RegionLocX - neighbourx); |
3124 | } | 3124 | fix[1] = (int)(m_regionInfo.RegionLocY - neighboury); |
3125 | else | 3125 | return dir * (-1); |
3126 | return dir; | 3126 | } |
3127 | } | 3127 | else |
3128 | 3128 | return dir; | |
3129 | /// <summary> | 3129 | } |
3130 | /// Moves the agent outside the region bounds | 3130 | |
3131 | /// Tells neighbor region that we're crossing to it | 3131 | /// <summary> |
3132 | /// If the neighbor accepts, remove the agent's viewable avatar from this scene | 3132 | /// Moves the agent outside the region bounds |
3133 | /// set them to a child agent. | 3133 | /// Tells neighbor region that we're crossing to it |
3134 | /// </summary> | 3134 | /// If the neighbor accepts, remove the agent's viewable avatar from this scene |
3135 | protected void CrossToNewRegion() | 3135 | /// set them to a child agent. |
3136 | { | 3136 | /// </summary> |
3137 | InTransit(); | 3137 | protected void CrossToNewRegion() |
3138 | try | 3138 | { |
3139 | { | 3139 | InTransit(); |
3140 | m_scene.CrossAgentToNewRegion(this, m_physicsActor.Flying); | 3140 | try |
3141 | } | 3141 | { |
3142 | catch | 3142 | m_scene.CrossAgentToNewRegion(this, m_physicsActor.Flying); |
3143 | { | 3143 | } |
3144 | m_scene.CrossAgentToNewRegion(this, false); | 3144 | catch |
3145 | } | 3145 | { |
3146 | } | 3146 | m_scene.CrossAgentToNewRegion(this, false); |
3147 | 3147 | } | |
3148 | public void InTransit() | 3148 | } |
3149 | { | 3149 | |
3150 | m_inTransit = true; | 3150 | public void InTransit() |
3151 | 3151 | { | |
3152 | if ((m_physicsActor != null) && m_physicsActor.Flying) | 3152 | m_inTransit = true; |
3153 | m_AgentControlFlags |= AgentManager.ControlFlags.AGENT_CONTROL_FLY; | 3153 | |
3154 | else if ((m_AgentControlFlags & AgentManager.ControlFlags.AGENT_CONTROL_FLY) != 0) | 3154 | if ((m_physicsActor != null) && m_physicsActor.Flying) |
3155 | m_AgentControlFlags &= ~AgentManager.ControlFlags.AGENT_CONTROL_FLY; | 3155 | m_AgentControlFlags |= AgentManager.ControlFlags.AGENT_CONTROL_FLY; |
3156 | } | 3156 | else if ((m_AgentControlFlags & AgentManager.ControlFlags.AGENT_CONTROL_FLY) != 0) |
3157 | 3157 | m_AgentControlFlags &= ~AgentManager.ControlFlags.AGENT_CONTROL_FLY; | |
3158 | public void NotInTransit() | 3158 | } |
3159 | { | 3159 | |
3160 | m_inTransit = false; | 3160 | public void NotInTransit() |
3161 | } | 3161 | { |
3162 | 3162 | m_inTransit = false; | |
3163 | public void RestoreInCurrentScene() | 3163 | } |
3164 | { | 3164 | |
3165 | AddToPhysicalScene(false); // not exactly false | 3165 | public void RestoreInCurrentScene() |
3166 | } | 3166 | { |
3167 | 3167 | AddToPhysicalScene(false); // not exactly false | |
3168 | public void Reset() | 3168 | } |
3169 | { | 3169 | |
3170 | // Put the child agent back at the center | 3170 | public void Reset() |
3171 | AbsolutePosition | 3171 | { |
3172 | = new Vector3(((float)Constants.RegionSize * 0.5f), ((float)Constants.RegionSize * 0.5f), 70); | 3172 | // Put the child agent back at the center |
3173 | Animator.ResetAnimations(); | 3173 | AbsolutePosition |
3174 | } | 3174 | = new Vector3(((float)Constants.RegionSize * 0.5f), ((float)Constants.RegionSize * 0.5f), 70); |
3175 | 3175 | Animator.ResetAnimations(); | |
3176 | /// <summary> | 3176 | } |
3177 | /// Computes which child agents to close when the scene presence moves to another region. | 3177 | |
3178 | /// Removes those regions from m_knownRegions. | 3178 | /// <summary> |
3179 | /// </summary> | 3179 | /// Computes which child agents to close when the scene presence moves to another region. |
3180 | /// <param name="newRegionX">The new region's x on the map</param> | 3180 | /// Removes those regions from m_knownRegions. |
3181 | /// <param name="newRegionY">The new region's y on the map</param> | 3181 | /// </summary> |
3182 | /// <returns></returns> | 3182 | /// <param name="newRegionX">The new region's x on the map</param> |
3183 | public void CloseChildAgents(uint newRegionX, uint newRegionY) | 3183 | /// <param name="newRegionY">The new region's y on the map</param> |
3184 | { | 3184 | /// <returns></returns> |
3185 | List<ulong> byebyeRegions = new List<ulong>(); | 3185 | public void CloseChildAgents(uint newRegionX, uint newRegionY) |
3186 | m_log.DebugFormat( | 3186 | { |
3187 | "[SCENE PRESENCE]: Closing child agents. Checking {0} regions in {1}", | 3187 | List<ulong> byebyeRegions = new List<ulong>(); |
3188 | m_knownChildRegions.Keys.Count, Scene.RegionInfo.RegionName); | 3188 | m_log.DebugFormat( |
3189 | //DumpKnownRegions(); | 3189 | "[SCENE PRESENCE]: Closing child agents. Checking {0} regions in {1}", |
3190 | 3190 | m_knownChildRegions.Keys.Count, Scene.RegionInfo.RegionName); | |
3191 | lock (m_knownChildRegions) | 3191 | //DumpKnownRegions(); |
3192 | { | 3192 | |
3193 | foreach (ulong handle in m_knownChildRegions.Keys) | 3193 | lock (m_knownChildRegions) |
3194 | { | 3194 | { |
3195 | // Don't close the agent on this region yet | 3195 | foreach (ulong handle in m_knownChildRegions.Keys) |
3196 | if (handle != Scene.RegionInfo.RegionHandle) | 3196 | { |
3197 | { | 3197 | // Don't close the agent on this region yet |
3198 | uint x, y; | 3198 | if (handle != Scene.RegionInfo.RegionHandle) |
3199 | Utils.LongToUInts(handle, out x, out y); | 3199 | { |
3200 | x = x / Constants.RegionSize; | 3200 | uint x, y; |
3201 | y = y / Constants.RegionSize; | 3201 | Utils.LongToUInts(handle, out x, out y); |
3202 | 3202 | x = x / Constants.RegionSize; | |
3203 | //m_log.Debug("---> x: " + x + "; newx:" + newRegionX + "; Abs:" + (int)Math.Abs((int)(x - newRegionX))); | 3203 | y = y / Constants.RegionSize; |
3204 | //m_log.Debug("---> y: " + y + "; newy:" + newRegionY + "; Abs:" + (int)Math.Abs((int)(y - newRegionY))); | 3204 | |
3205 | if (Util.IsOutsideView(x, newRegionX, y, newRegionY)) | 3205 | //m_log.Debug("---> x: " + x + "; newx:" + newRegionX + "; Abs:" + (int)Math.Abs((int)(x - newRegionX))); |
3206 | { | 3206 | //m_log.Debug("---> y: " + y + "; newy:" + newRegionY + "; Abs:" + (int)Math.Abs((int)(y - newRegionY))); |
3207 | byebyeRegions.Add(handle); | 3207 | if (Util.IsOutsideView(x, newRegionX, y, newRegionY)) |
3208 | } | 3208 | { |
3209 | } | 3209 | byebyeRegions.Add(handle); |
3210 | } | 3210 | } |
3211 | } | 3211 | } |
3212 | 3212 | } | |
3213 | if (byebyeRegions.Count > 0) | 3213 | } |
3214 | { | 3214 | |
3215 | m_log.Debug("[SCENE PRESENCE]: Closing " + byebyeRegions.Count + " child agents"); | 3215 | if (byebyeRegions.Count > 0) |
3216 | m_scene.SceneGridService.SendCloseChildAgentConnections(m_controllingClient.AgentId, byebyeRegions); | 3216 | { |
3217 | } | 3217 | m_log.Debug("[SCENE PRESENCE]: Closing " + byebyeRegions.Count + " child agents"); |
3218 | 3218 | m_scene.SceneGridService.SendCloseChildAgentConnections(m_controllingClient.AgentId, byebyeRegions); | |
3219 | foreach (ulong handle in byebyeRegions) | 3219 | } |
3220 | { | 3220 | |
3221 | RemoveNeighbourRegion(handle); | 3221 | foreach (ulong handle in byebyeRegions) |
3222 | } | 3222 | { |
3223 | } | 3223 | RemoveNeighbourRegion(handle); |
3224 | 3224 | } | |
3225 | #endregion | 3225 | } |
3226 | 3226 | ||
3227 | /// <summary> | 3227 | #endregion |
3228 | /// This allows the Sim owner the abiility to kick users from their sim currently. | 3228 | |
3229 | /// It tells the client that the agent has permission to do so. | 3229 | /// <summary> |
3230 | /// </summary> | 3230 | /// This allows the Sim owner the abiility to kick users from their sim currently. |
3231 | public void GrantGodlikePowers(UUID agentID, UUID sessionID, UUID token, bool godStatus) | 3231 | /// It tells the client that the agent has permission to do so. |
3232 | { | 3232 | /// </summary> |
3233 | if (godStatus) | 3233 | public void GrantGodlikePowers(UUID agentID, UUID sessionID, UUID token, bool godStatus) |
3234 | { | 3234 | { |
3235 | // For now, assign god level 200 to anyone | 3235 | if (godStatus) |
3236 | // who is granted god powers, but has no god level set. | 3236 | { |
3237 | // | 3237 | // For now, assign god level 200 to anyone |
3238 | UserAccount account = m_scene.UserAccountService.GetUserAccount(m_scene.RegionInfo.ScopeID, agentID); | 3238 | // who is granted god powers, but has no god level set. |
3239 | if (account != null) | 3239 | // |
3240 | { | 3240 | UserAccount account = m_scene.UserAccountService.GetUserAccount(m_scene.RegionInfo.ScopeID, agentID); |
3241 | if (account.UserLevel > 0) | 3241 | if (account != null) |
3242 | m_godLevel = account.UserLevel; | 3242 | { |
3243 | else | 3243 | if (account.UserLevel > 0) |
3244 | m_godLevel = 200; | 3244 | m_godLevel = account.UserLevel; |
3245 | } | 3245 | else |
3246 | } | 3246 | m_godLevel = 200; |
3247 | else | 3247 | } |
3248 | { | 3248 | } |
3249 | m_godLevel = 0; | 3249 | else |
3250 | } | 3250 | { |
3251 | 3251 | m_godLevel = 0; | |
3252 | ControllingClient.SendAdminResponse(token, (uint)m_godLevel); | 3252 | } |
3253 | } | 3253 | |
3254 | 3254 | ControllingClient.SendAdminResponse(token, (uint)m_godLevel); | |
3255 | #region Child Agent Updates | 3255 | } |
3256 | 3256 | ||
3257 | public void ChildAgentDataUpdate(AgentData cAgentData) | 3257 | #region Child Agent Updates |
3258 | { | 3258 | |
3259 | //m_log.Debug(" >>> ChildAgentDataUpdate <<< " + Scene.RegionInfo.RegionName); | 3259 | public void ChildAgentDataUpdate(AgentData cAgentData) |
3260 | if (!IsChildAgent) | 3260 | { |
3261 | return; | 3261 | //m_log.Debug(" >>> ChildAgentDataUpdate <<< " + Scene.RegionInfo.RegionName); |
3262 | 3262 | if (!IsChildAgent) | |
3263 | CopyFrom(cAgentData); | 3263 | return; |
3264 | } | 3264 | |
3265 | 3265 | CopyFrom(cAgentData); | |
3266 | /// <summary> | 3266 | } |
3267 | /// This updates important decision making data about a child agent | 3267 | |
3268 | /// The main purpose is to figure out what objects to send to a child agent that's in a neighboring region | 3268 | /// <summary> |
3269 | /// </summary> | 3269 | /// This updates important decision making data about a child agent |
3270 | public void ChildAgentDataUpdate(AgentPosition cAgentData, uint tRegionX, uint tRegionY, uint rRegionX, uint rRegionY) | 3270 | /// The main purpose is to figure out what objects to send to a child agent that's in a neighboring region |
3271 | { | 3271 | /// </summary> |
3272 | if (!IsChildAgent) | 3272 | public void ChildAgentDataUpdate(AgentPosition cAgentData, uint tRegionX, uint tRegionY, uint rRegionX, uint rRegionY) |
3273 | return; | 3273 | { |
3274 | 3274 | if (!IsChildAgent) | |
3275 | //m_log.Debug(" >>> ChildAgentPositionUpdate <<< " + rRegionX + "-" + rRegionY); | 3275 | return; |
3276 | int shiftx = ((int)rRegionX - (int)tRegionX) * (int)Constants.RegionSize; | 3276 | |
3277 | int shifty = ((int)rRegionY - (int)tRegionY) * (int)Constants.RegionSize; | 3277 | //m_log.Debug(" >>> ChildAgentPositionUpdate <<< " + rRegionX + "-" + rRegionY); |
3278 | 3278 | int shiftx = ((int)rRegionX - (int)tRegionX) * (int)Constants.RegionSize; | |
3279 | Vector3 offset = new Vector3(shiftx, shifty, 0f); | 3279 | int shifty = ((int)rRegionY - (int)tRegionY) * (int)Constants.RegionSize; |
3280 | 3280 | ||
3281 | m_DrawDistance = cAgentData.Far; | 3281 | Vector3 offset = new Vector3(shiftx, shifty, 0f); |
3282 | if (cAgentData.Position != new Vector3(-1f, -1f, -1f)) // UGH!! | 3282 | |
3283 | m_pos = cAgentData.Position + offset; | 3283 | m_DrawDistance = cAgentData.Far; |
3284 | 3284 | if (cAgentData.Position != new Vector3(-1f, -1f, -1f)) // UGH!! | |
3285 | if (Vector3.Distance(AbsolutePosition, posLastSignificantMove) >= Scene.ChildReprioritizationDistance) | 3285 | m_pos = cAgentData.Position + offset; |
3286 | { | 3286 | |
3287 | posLastSignificantMove = AbsolutePosition; | 3287 | if (Vector3.Distance(AbsolutePosition, posLastSignificantMove) >= Scene.ChildReprioritizationDistance) |
3288 | ReprioritizeUpdates(); | 3288 | { |
3289 | } | 3289 | posLastSignificantMove = AbsolutePosition; |
3290 | 3290 | ReprioritizeUpdates(); | |
3291 | m_CameraCenter = cAgentData.Center + offset; | 3291 | } |
3292 | 3292 | ||
3293 | m_avHeight = cAgentData.Size.Z; | 3293 | m_CameraCenter = cAgentData.Center + offset; |
3294 | //SetHeight(cAgentData.AVHeight); | 3294 | |
3295 | 3295 | m_avHeight = cAgentData.Size.Z; | |
3296 | if ((cAgentData.Throttles != null) && cAgentData.Throttles.Length > 0) | 3296 | //SetHeight(cAgentData.AVHeight); |
3297 | ControllingClient.SetChildAgentThrottle(cAgentData.Throttles); | 3297 | |
3298 | 3298 | if ((cAgentData.Throttles != null) && cAgentData.Throttles.Length > 0) | |
3299 | // Sends out the objects in the user's draw distance if m_sendTasksToChild is true. | 3299 | ControllingClient.SetChildAgentThrottle(cAgentData.Throttles); |
3300 | if (m_scene.m_seeIntoRegionFromNeighbor) | 3300 | |
3301 | m_sceneViewer.Reset(); | 3301 | // Sends out the objects in the user's draw distance if m_sendTasksToChild is true. |
3302 | 3302 | if (m_scene.m_seeIntoRegionFromNeighbor) | |
3303 | //cAgentData.AVHeight; | 3303 | m_sceneViewer.Reset(); |
3304 | m_rootRegionHandle = cAgentData.RegionHandle; | 3304 | |
3305 | //m_velocity = cAgentData.Velocity; | 3305 | //cAgentData.AVHeight; |
3306 | } | 3306 | m_rootRegionHandle = cAgentData.RegionHandle; |
3307 | 3307 | //m_velocity = cAgentData.Velocity; | |
3308 | public void CopyTo(AgentData cAgent) | 3308 | } |
3309 | { | 3309 | |
3310 | cAgent.AgentID = UUID; | 3310 | public void CopyTo(AgentData cAgent) |
3311 | cAgent.RegionID = Scene.RegionInfo.RegionID; | 3311 | { |
3312 | 3312 | cAgent.AgentID = UUID; | |
3313 | cAgent.Position = AbsolutePosition; | 3313 | cAgent.RegionID = Scene.RegionInfo.RegionID; |
3314 | cAgent.Velocity = m_velocity; | 3314 | |
3315 | cAgent.Center = m_CameraCenter; | 3315 | cAgent.Position = AbsolutePosition; |
3316 | // Don't copy the size; it is inferred from apearance parameters | 3316 | cAgent.Velocity = m_velocity; |
3317 | //cAgent.Size = new Vector3(0, 0, m_avHeight); | 3317 | cAgent.Center = m_CameraCenter; |
3318 | cAgent.AtAxis = m_CameraAtAxis; | 3318 | // Don't copy the size; it is inferred from apearance parameters |
3319 | cAgent.LeftAxis = m_CameraLeftAxis; | 3319 | //cAgent.Size = new Vector3(0, 0, m_avHeight); |
3320 | cAgent.UpAxis = m_CameraUpAxis; | 3320 | cAgent.AtAxis = m_CameraAtAxis; |
3321 | 3321 | cAgent.LeftAxis = m_CameraLeftAxis; | |
3322 | cAgent.Far = m_DrawDistance; | 3322 | cAgent.UpAxis = m_CameraUpAxis; |
3323 | 3323 | ||
3324 | // Throttles | 3324 | cAgent.Far = m_DrawDistance; |
3325 | float multiplier = 1; | 3325 | |
3326 | int innacurateNeighbors = m_scene.GetInaccurateNeighborCount(); | 3326 | // Throttles |
3327 | if (innacurateNeighbors != 0) | 3327 | float multiplier = 1; |
3328 | { | 3328 | int innacurateNeighbors = m_scene.GetInaccurateNeighborCount(); |
3329 | multiplier = 1f / innacurateNeighbors; | 3329 | if (innacurateNeighbors != 0) |
3330 | } | 3330 | { |
3331 | if (multiplier <= 0f) | 3331 | multiplier = 1f / innacurateNeighbors; |
3332 | { | 3332 | } |
3333 | multiplier = 0.25f; | 3333 | if (multiplier <= 0f) |
3334 | } | 3334 | { |
3335 | //m_log.Info("[NeighborThrottle]: " + m_scene.GetInaccurateNeighborCount().ToString() + " - m: " + multiplier.ToString()); | 3335 | multiplier = 0.25f; |
3336 | cAgent.Throttles = ControllingClient.GetThrottlesPacked(multiplier); | 3336 | } |
3337 | 3337 | //m_log.Info("[NeighborThrottle]: " + m_scene.GetInaccurateNeighborCount().ToString() + " - m: " + multiplier.ToString()); | |
3338 | cAgent.HeadRotation = m_headrotation; | 3338 | cAgent.Throttles = ControllingClient.GetThrottlesPacked(multiplier); |
3339 | cAgent.BodyRotation = m_bodyRot; | 3339 | |
3340 | cAgent.ControlFlags = (uint)m_AgentControlFlags; | 3340 | cAgent.HeadRotation = m_headrotation; |
3341 | 3341 | cAgent.BodyRotation = m_bodyRot; | |
3342 | if (m_scene.Permissions.IsGod(new UUID(cAgent.AgentID))) | 3342 | cAgent.ControlFlags = (uint)m_AgentControlFlags; |
3343 | cAgent.GodLevel = (byte)m_godLevel; | 3343 | |
3344 | else | 3344 | if (m_scene.Permissions.IsGod(new UUID(cAgent.AgentID))) |
3345 | cAgent.GodLevel = (byte) 0; | 3345 | cAgent.GodLevel = (byte)m_godLevel; |
3346 | 3346 | else | |
3347 | cAgent.AlwaysRun = m_setAlwaysRun; | 3347 | cAgent.GodLevel = (byte) 0; |
3348 | 3348 | ||
3349 | try | 3349 | cAgent.AlwaysRun = m_setAlwaysRun; |
3350 | { | 3350 | |
3351 | // We might not pass the Wearables in all cases... | 3351 | try |
3352 | // They're only needed so that persistent changes to the appearance | 3352 | { |
3353 | // are preserved in the new region where the user is moving to. | 3353 | // We might not pass the Wearables in all cases... |
3354 | // But in Hypergrid we might not let this happen. | 3354 | // They're only needed so that persistent changes to the appearance |
3355 | int i = 0; | 3355 | // are preserved in the new region where the user is moving to. |
3356 | UUID[] wears = new UUID[m_appearance.Wearables.Length * 2]; | 3356 | // But in Hypergrid we might not let this happen. |
3357 | foreach (AvatarWearable aw in m_appearance.Wearables) | 3357 | int i = 0; |
3358 | { | 3358 | UUID[] wears = new UUID[m_appearance.Wearables.Length * 2]; |
3359 | if (aw != null) | 3359 | foreach (AvatarWearable aw in m_appearance.Wearables) |
3360 | { | 3360 | { |
3361 | wears[i++] = aw.ItemID; | 3361 | if (aw != null) |
3362 | wears[i++] = aw.AssetID; | 3362 | { |
3363 | } | 3363 | wears[i++] = aw.ItemID; |
3364 | else | 3364 | wears[i++] = aw.AssetID; |
3365 | { | 3365 | } |
3366 | wears[i++] = UUID.Zero; | 3366 | else |
3367 | wears[i++] = UUID.Zero; | 3367 | { |
3368 | } | 3368 | wears[i++] = UUID.Zero; |
3369 | } | 3369 | wears[i++] = UUID.Zero; |
3370 | cAgent.Wearables = wears; | 3370 | } |
3371 | 3371 | } | |
3372 | cAgent.VisualParams = m_appearance.VisualParams; | 3372 | cAgent.Wearables = wears; |
3373 | 3373 | ||
3374 | if (m_appearance.Texture != null) | 3374 | cAgent.VisualParams = m_appearance.VisualParams; |
3375 | cAgent.AgentTextures = m_appearance.Texture.GetBytes(); | 3375 | |
3376 | } | 3376 | if (m_appearance.Texture != null) |
3377 | catch (Exception e) | 3377 | cAgent.AgentTextures = m_appearance.Texture.GetBytes(); |
3378 | { | 3378 | } |
3379 | m_log.Warn("[SCENE PRESENCE]: exception in CopyTo " + e.Message); | 3379 | catch (Exception e) |
3380 | } | 3380 | { |
3381 | 3381 | m_log.Warn("[SCENE PRESENCE]: exception in CopyTo " + e.Message); | |
3382 | //Attachments | 3382 | } |
3383 | List<int> attPoints = m_appearance.GetAttachedPoints(); | 3383 | |
3384 | if (attPoints != null) | 3384 | //Attachments |
3385 | { | 3385 | List<int> attPoints = m_appearance.GetAttachedPoints(); |
3386 | //m_log.DebugFormat("[SCENE PRESENCE]: attachments {0}", attPoints.Count); | 3386 | if (attPoints != null) |
3387 | int i = 0; | 3387 | { |
3388 | AttachmentData[] attachs = new AttachmentData[attPoints.Count]; | 3388 | //m_log.DebugFormat("[SCENE PRESENCE]: attachments {0}", attPoints.Count); |
3389 | foreach (int point in attPoints) | 3389 | int i = 0; |
3390 | { | 3390 | AttachmentData[] attachs = new AttachmentData[attPoints.Count]; |
3391 | attachs[i++] = new AttachmentData(point, m_appearance.GetAttachedItem(point), m_appearance.GetAttachedAsset(point)); | 3391 | foreach (int point in attPoints) |
3392 | } | 3392 | { |
3393 | cAgent.Attachments = attachs; | 3393 | attachs[i++] = new AttachmentData(point, m_appearance.GetAttachedItem(point), m_appearance.GetAttachedAsset(point)); |
3394 | } | 3394 | } |
3395 | 3395 | cAgent.Attachments = attachs; | |
3396 | lock (scriptedcontrols) | 3396 | } |
3397 | { | 3397 | |
3398 | ControllerData[] controls = new ControllerData[scriptedcontrols.Count]; | 3398 | lock (scriptedcontrols) |
3399 | int i = 0; | 3399 | { |
3400 | 3400 | ControllerData[] controls = new ControllerData[scriptedcontrols.Count]; | |
3401 | foreach (ScriptControllers c in scriptedcontrols.Values) | 3401 | int i = 0; |
3402 | { | 3402 | |
3403 | controls[i++] = new ControllerData(c.itemID, (uint)c.ignoreControls, (uint)c.eventControls); | 3403 | foreach (ScriptControllers c in scriptedcontrols.Values) |
3404 | } | 3404 | { |
3405 | cAgent.Controllers = controls; | 3405 | controls[i++] = new ControllerData(c.itemID, (uint)c.ignoreControls, (uint)c.eventControls); |
3406 | } | 3406 | } |
3407 | 3407 | cAgent.Controllers = controls; | |
3408 | // Animations | 3408 | } |
3409 | try | 3409 | |
3410 | { | 3410 | // Animations |
3411 | cAgent.Anims = Animator.Animations.ToArray(); | 3411 | try |
3412 | } | 3412 | { |
3413 | catch { } | 3413 | cAgent.Anims = Animator.Animations.ToArray(); |
3414 | 3414 | } | |
3415 | // cAgent.GroupID = ?? | 3415 | catch { } |
3416 | // Groups??? | 3416 | |
3417 | 3417 | // cAgent.GroupID = ?? | |
3418 | } | 3418 | // Groups??? |
3419 | 3419 | ||
3420 | public void CopyFrom(AgentData cAgent) | 3420 | } |
3421 | { | 3421 | |
3422 | m_originRegionID = cAgent.RegionID; | 3422 | public void CopyFrom(AgentData cAgent) |
3423 | 3423 | { | |
3424 | m_callbackURI = cAgent.CallbackURI; | 3424 | m_originRegionID = cAgent.RegionID; |
3425 | 3425 | ||
3426 | m_pos = cAgent.Position; | 3426 | m_callbackURI = cAgent.CallbackURI; |
3427 | 3427 | ||
3428 | m_velocity = cAgent.Velocity; | 3428 | m_pos = cAgent.Position; |
3429 | m_CameraCenter = cAgent.Center; | 3429 | |
3430 | //m_avHeight = cAgent.Size.Z; | 3430 | m_velocity = cAgent.Velocity; |
3431 | m_CameraAtAxis = cAgent.AtAxis; | 3431 | m_CameraCenter = cAgent.Center; |
3432 | m_CameraLeftAxis = cAgent.LeftAxis; | 3432 | //m_avHeight = cAgent.Size.Z; |
3433 | m_CameraUpAxis = cAgent.UpAxis; | 3433 | m_CameraAtAxis = cAgent.AtAxis; |
3434 | 3434 | m_CameraLeftAxis = cAgent.LeftAxis; | |
3435 | m_DrawDistance = cAgent.Far; | 3435 | m_CameraUpAxis = cAgent.UpAxis; |
3436 | 3436 | ||
3437 | if ((cAgent.Throttles != null) && cAgent.Throttles.Length > 0) | 3437 | m_DrawDistance = cAgent.Far; |
3438 | ControllingClient.SetChildAgentThrottle(cAgent.Throttles); | 3438 | |
3439 | 3439 | if ((cAgent.Throttles != null) && cAgent.Throttles.Length > 0) | |
3440 | m_headrotation = cAgent.HeadRotation; | 3440 | ControllingClient.SetChildAgentThrottle(cAgent.Throttles); |
3441 | m_bodyRot = cAgent.BodyRotation; | 3441 | |
3442 | m_AgentControlFlags = (AgentManager.ControlFlags)cAgent.ControlFlags; | 3442 | m_headrotation = cAgent.HeadRotation; |
3443 | 3443 | m_bodyRot = cAgent.BodyRotation; | |
3444 | if (m_scene.Permissions.IsGod(new UUID(cAgent.AgentID))) | 3444 | m_AgentControlFlags = (AgentManager.ControlFlags)cAgent.ControlFlags; |
3445 | m_godLevel = cAgent.GodLevel; | 3445 | |
3446 | m_setAlwaysRun = cAgent.AlwaysRun; | 3446 | if (m_scene.Permissions.IsGod(new UUID(cAgent.AgentID))) |
3447 | 3447 | m_godLevel = cAgent.GodLevel; | |
3448 | uint i = 0; | 3448 | m_setAlwaysRun = cAgent.AlwaysRun; |
3449 | try | 3449 | |
3450 | { | 3450 | uint i = 0; |
3451 | if (cAgent.Wearables == null) | 3451 | try |
3452 | cAgent.Wearables = new UUID[0]; | 3452 | { |
3453 | AvatarWearable[] wears = new AvatarWearable[cAgent.Wearables.Length / 2]; | 3453 | if (cAgent.Wearables == null) |
3454 | for (uint n = 0; n < cAgent.Wearables.Length; n += 2) | 3454 | cAgent.Wearables = new UUID[0]; |
3455 | { | 3455 | AvatarWearable[] wears = new AvatarWearable[cAgent.Wearables.Length / 2]; |
3456 | UUID itemId = cAgent.Wearables[n]; | 3456 | for (uint n = 0; n < cAgent.Wearables.Length; n += 2) |
3457 | UUID assetId = cAgent.Wearables[n + 1]; | 3457 | { |
3458 | wears[i++] = new AvatarWearable(itemId, assetId); | 3458 | UUID itemId = cAgent.Wearables[n]; |
3459 | } | 3459 | UUID assetId = cAgent.Wearables[n + 1]; |
3460 | m_appearance.Wearables = wears; | 3460 | wears[i++] = new AvatarWearable(itemId, assetId); |
3461 | Primitive.TextureEntry te; | 3461 | } |
3462 | if (cAgent.AgentTextures != null && cAgent.AgentTextures.Length > 1) | 3462 | m_appearance.Wearables = wears; |
3463 | te = new Primitive.TextureEntry(cAgent.AgentTextures, 0, cAgent.AgentTextures.Length); | 3463 | Primitive.TextureEntry te; |
3464 | else | 3464 | if (cAgent.AgentTextures != null && cAgent.AgentTextures.Length > 1) |
3465 | te = AvatarAppearance.GetDefaultTexture(); | 3465 | te = new Primitive.TextureEntry(cAgent.AgentTextures, 0, cAgent.AgentTextures.Length); |
3466 | if ((cAgent.VisualParams == null) || (cAgent.VisualParams.Length < AvatarAppearance.VISUALPARAM_COUNT)) | 3466 | else |
3467 | cAgent.VisualParams = AvatarAppearance.GetDefaultVisualParams(); | 3467 | te = AvatarAppearance.GetDefaultTexture(); |
3468 | m_appearance.SetAppearance(te, (byte[])cAgent.VisualParams.Clone()); | 3468 | if ((cAgent.VisualParams == null) || (cAgent.VisualParams.Length < AvatarAppearance.VISUALPARAM_COUNT)) |
3469 | } | 3469 | cAgent.VisualParams = AvatarAppearance.GetDefaultVisualParams(); |
3470 | catch (Exception e) | 3470 | m_appearance.SetAppearance(te, (byte[])cAgent.VisualParams.Clone()); |
3471 | { | 3471 | } |
3472 | m_log.Warn("[SCENE PRESENCE]: exception in CopyFrom " + e.Message); | 3472 | catch (Exception e) |
3473 | } | 3473 | { |
3474 | 3474 | m_log.Warn("[SCENE PRESENCE]: exception in CopyFrom " + e.Message); | |
3475 | // Attachments | 3475 | } |
3476 | try | 3476 | |
3477 | { | 3477 | // Attachments |
3478 | if (cAgent.Attachments != null) | 3478 | try |
3479 | { | 3479 | { |
3480 | m_appearance.ClearAttachments(); | 3480 | if (cAgent.Attachments != null) |
3481 | foreach (AttachmentData att in cAgent.Attachments) | 3481 | { |
3482 | { | 3482 | m_appearance.ClearAttachments(); |
3483 | m_appearance.SetAttachment(att.AttachPoint, att.ItemID, att.AssetID); | 3483 | foreach (AttachmentData att in cAgent.Attachments) |
3484 | } | 3484 | { |
3485 | } | 3485 | m_appearance.SetAttachment(att.AttachPoint, att.ItemID, att.AssetID); |
3486 | } | 3486 | } |
3487 | catch { } | 3487 | } |
3488 | 3488 | } | |
3489 | try | 3489 | catch { } |
3490 | { | 3490 | |
3491 | lock (scriptedcontrols) | 3491 | try |
3492 | { | 3492 | { |
3493 | if (cAgent.Controllers != null) | 3493 | lock (scriptedcontrols) |
3494 | { | 3494 | { |
3495 | scriptedcontrols.Clear(); | 3495 | if (cAgent.Controllers != null) |
3496 | 3496 | { | |
3497 | foreach (ControllerData c in cAgent.Controllers) | 3497 | scriptedcontrols.Clear(); |
3498 | { | 3498 | |
3499 | ScriptControllers sc = new ScriptControllers(); | 3499 | foreach (ControllerData c in cAgent.Controllers) |
3500 | sc.itemID = c.ItemID; | 3500 | { |
3501 | sc.ignoreControls = (ScriptControlled)c.IgnoreControls; | 3501 | ScriptControllers sc = new ScriptControllers(); |
3502 | sc.eventControls = (ScriptControlled)c.EventControls; | 3502 | sc.itemID = c.ItemID; |
3503 | 3503 | sc.ignoreControls = (ScriptControlled)c.IgnoreControls; | |
3504 | scriptedcontrols[sc.itemID] = sc; | 3504 | sc.eventControls = (ScriptControlled)c.EventControls; |
3505 | } | 3505 | |
3506 | } | 3506 | scriptedcontrols[sc.itemID] = sc; |
3507 | } | 3507 | } |
3508 | } | 3508 | } |
3509 | catch { } | 3509 | } |
3510 | // Animations | 3510 | } |
3511 | try | 3511 | catch { } |
3512 | { | 3512 | // Animations |
3513 | Animator.ResetAnimations(); | 3513 | try |
3514 | Animator.Animations.FromArray(cAgent.Anims); | 3514 | { |
3515 | } | 3515 | Animator.ResetAnimations(); |
3516 | catch { } | 3516 | Animator.Animations.FromArray(cAgent.Anims); |
3517 | 3517 | } | |
3518 | //cAgent.GroupID = ?? | 3518 | catch { } |
3519 | //Groups??? | 3519 | |
3520 | } | 3520 | //cAgent.GroupID = ?? |
3521 | 3521 | //Groups??? | |
3522 | public bool CopyAgent(out IAgentData agent) | 3522 | } |
3523 | { | 3523 | |
3524 | agent = new CompleteAgentData(); | 3524 | public bool CopyAgent(out IAgentData agent) |
3525 | CopyTo((AgentData)agent); | 3525 | { |
3526 | return true; | 3526 | agent = new CompleteAgentData(); |
3527 | } | 3527 | CopyTo((AgentData)agent); |
3528 | 3528 | return true; | |
3529 | #endregion Child Agent Updates | 3529 | } |
3530 | 3530 | ||
3531 | /// <summary> | 3531 | #endregion Child Agent Updates |
3532 | /// Handles part of the PID controller function for moving an avatar. | 3532 | |
3533 | /// </summary> | 3533 | /// <summary> |
3534 | public override void UpdateMovement() | 3534 | /// Handles part of the PID controller function for moving an avatar. |
3535 | { | 3535 | /// </summary> |
3536 | if (m_forceToApply.HasValue) | 3536 | public override void UpdateMovement() |
3537 | { | 3537 | { |
3538 | 3538 | if (m_forceToApply.HasValue) | |
3539 | Vector3 force = m_forceToApply.Value; | 3539 | { |
3540 | m_updateflag = true; | 3540 | |
3541 | Velocity = force; | 3541 | Vector3 force = m_forceToApply.Value; |
3542 | 3542 | m_updateflag = true; | |
3543 | m_forceToApply = null; | 3543 | Velocity = force; |
3544 | } | 3544 | |
3545 | else | 3545 | m_forceToApply = null; |
3546 | { | 3546 | } |
3547 | if (m_isNudging) | 3547 | else |
3548 | { | 3548 | { |
3549 | Vector3 force = Vector3.Zero; | 3549 | if (m_isNudging) |
3550 | 3550 | { | |
3551 | m_updateflag = true; | 3551 | Vector3 force = Vector3.Zero; |
3552 | Velocity = force; | 3552 | |
3553 | m_isNudging = false; | 3553 | m_updateflag = true; |
3554 | m_updateCount = UPDATE_COUNT; //KF: Update anims to pickup "STAND" | 3554 | Velocity = force; |
3555 | } | 3555 | m_isNudging = false; |
3556 | } | 3556 | m_updateCount = UPDATE_COUNT; //KF: Update anims to pickup "STAND" |
3557 | } | 3557 | } |
3558 | 3558 | } | |
3559 | public override void SetText(string text, Vector3 color, double alpha) | 3559 | } |
3560 | { | 3560 | |
3561 | throw new Exception("Can't set Text on avatar."); | 3561 | public override void SetText(string text, Vector3 color, double alpha) |
3562 | } | 3562 | { |
3563 | 3563 | throw new Exception("Can't set Text on avatar."); | |
3564 | /// <summary> | 3564 | } |
3565 | /// Adds a physical representation of the avatar to the Physics plugin | 3565 | |
3566 | /// </summary> | 3566 | /// <summary> |
3567 | public void AddToPhysicalScene(bool isFlying) | 3567 | /// Adds a physical representation of the avatar to the Physics plugin |
3568 | { | 3568 | /// </summary> |
3569 | PhysicsScene scene = m_scene.PhysicsScene; | 3569 | public void AddToPhysicalScene(bool isFlying) |
3570 | 3570 | { | |
3571 | Vector3 pVec = AbsolutePosition; | 3571 | PhysicsScene scene = m_scene.PhysicsScene; |
3572 | 3572 | ||
3573 | // Old bug where the height was in centimeters instead of meters | 3573 | Vector3 pVec = AbsolutePosition; |
3574 | if (m_avHeight == 127.0f) | 3574 | |
3575 | { | 3575 | // Old bug where the height was in centimeters instead of meters |
3576 | m_physicsActor = scene.AddAvatar(Firstname + "." + Lastname, pVec, new Vector3(0f, 0f, 1.56f), | 3576 | if (m_avHeight == 127.0f) |
3577 | isFlying); | 3577 | { |
3578 | } | 3578 | m_physicsActor = scene.AddAvatar(Firstname + "." + Lastname, pVec, new Vector3(0f, 0f, 1.56f), |
3579 | else | 3579 | isFlying); |
3580 | { | 3580 | } |
3581 | m_physicsActor = scene.AddAvatar(Firstname + "." + Lastname, pVec, | 3581 | else |
3582 | new Vector3(0f, 0f, m_avHeight), isFlying); | 3582 | { |
3583 | } | 3583 | m_physicsActor = scene.AddAvatar(Firstname + "." + Lastname, pVec, |
3584 | scene.AddPhysicsActorTaint(m_physicsActor); | 3584 | new Vector3(0f, 0f, m_avHeight), isFlying); |
3585 | //m_physicsActor.OnRequestTerseUpdate += SendTerseUpdateToAllClients; | 3585 | } |
3586 | m_physicsActor.OnCollisionUpdate += PhysicsCollisionUpdate; | 3586 | scene.AddPhysicsActorTaint(m_physicsActor); |
3587 | m_physicsActor.OnOutOfBounds += OutOfBoundsCall; // Called for PhysicsActors when there's something wrong | 3587 | //m_physicsActor.OnRequestTerseUpdate += SendTerseUpdateToAllClients; |
3588 | m_physicsActor.SubscribeEvents(500); | 3588 | m_physicsActor.OnCollisionUpdate += PhysicsCollisionUpdate; |
3589 | m_physicsActor.LocalID = LocalId; | 3589 | m_physicsActor.OnOutOfBounds += OutOfBoundsCall; // Called for PhysicsActors when there's something wrong |
3590 | } | 3590 | m_physicsActor.SubscribeEvents(500); |
3591 | 3591 | m_physicsActor.LocalID = LocalId; | |
3592 | private void OutOfBoundsCall(Vector3 pos) | 3592 | } |
3593 | { | 3593 | |
3594 | //bool flying = m_physicsActor.Flying; | 3594 | private void OutOfBoundsCall(Vector3 pos) |
3595 | //RemoveFromPhysicalScene(); | 3595 | { |
3596 | 3596 | //bool flying = m_physicsActor.Flying; | |
3597 | //AddToPhysicalScene(flying); | 3597 | //RemoveFromPhysicalScene(); |
3598 | if (ControllingClient != null) | 3598 | |
3599 | ControllingClient.SendAgentAlertMessage("Physics is having a problem with your avatar. You may not be able to move until you relog.", true); | 3599 | //AddToPhysicalScene(flying); |
3600 | } | 3600 | if (ControllingClient != null) |
3601 | 3601 | ControllingClient.SendAgentAlertMessage("Physics is having a problem with your avatar. You may not be able to move until you relog.", true); | |
3602 | // Event called by the physics plugin to tell the avatar about a collision. | 3602 | } |
3603 | private void PhysicsCollisionUpdate(EventArgs e) | 3603 | |
3604 | { | 3604 | // Event called by the physics plugin to tell the avatar about a collision. |
3605 | if (e == null) | 3605 | private void PhysicsCollisionUpdate(EventArgs e) |
3606 | return; | 3606 | { |
3607 | 3607 | if (e == null) | |
3608 | // The Physics Scene will send (spam!) updates every 500 ms grep: m_physicsActor.SubscribeEvents( | 3608 | return; |
3609 | // as of this comment the interval is set in AddToPhysicalScene | 3609 | |
3610 | if (Animator!=null) | 3610 | // The Physics Scene will send (spam!) updates every 500 ms grep: m_physicsActor.SubscribeEvents( |
3611 | { | 3611 | // as of this comment the interval is set in AddToPhysicalScene |
3612 | if (m_updateCount > 0) //KF: DO NOT call UpdateMovementAnimations outside of the m_updateCount wrapper, | 3612 | if (Animator!=null) |
3613 | { // else its will lock out other animation changes, like ground sit. | 3613 | { |
3614 | Animator.UpdateMovementAnimations(); | 3614 | if (m_updateCount > 0) //KF: DO NOT call UpdateMovementAnimations outside of the m_updateCount wrapper, |
3615 | m_updateCount--; | 3615 | { // else its will lock out other animation changes, like ground sit. |
3616 | } | 3616 | Animator.UpdateMovementAnimations(); |
3617 | } | 3617 | m_updateCount--; |
3618 | 3618 | } | |
3619 | CollisionEventUpdate collisionData = (CollisionEventUpdate)e; | 3619 | } |
3620 | Dictionary<uint, ContactPoint> coldata = collisionData.m_objCollisionList; | 3620 | |
3621 | 3621 | CollisionEventUpdate collisionData = (CollisionEventUpdate)e; | |
3622 | CollisionPlane = Vector4.UnitW; | 3622 | Dictionary<uint, ContactPoint> coldata = collisionData.m_objCollisionList; |
3623 | 3623 | ||
3624 | if (m_lastColCount != coldata.Count) | 3624 | CollisionPlane = Vector4.UnitW; |
3625 | { | 3625 | |
3626 | m_updateCount = UPDATE_COUNT; | 3626 | if (m_lastColCount != coldata.Count) |
3627 | m_lastColCount = coldata.Count; | 3627 | { |
3628 | } | 3628 | m_updateCount = UPDATE_COUNT; |
3629 | 3629 | m_lastColCount = coldata.Count; | |
3630 | if (coldata.Count != 0 && Animator != null) | 3630 | } |
3631 | { | 3631 | |
3632 | switch (Animator.CurrentMovementAnimation) | 3632 | if (coldata.Count != 0 && Animator != null) |
3633 | { | 3633 | { |
3634 | case "STAND": | 3634 | switch (Animator.CurrentMovementAnimation) |
3635 | case "WALK": | 3635 | { |
3636 | case "RUN": | 3636 | case "STAND": |
3637 | case "CROUCH": | 3637 | case "WALK": |
3638 | case "CROUCHWALK": | 3638 | case "RUN": |
3639 | { | 3639 | case "CROUCH": |
3640 | ContactPoint lowest; | 3640 | case "CROUCHWALK": |
3641 | lowest.SurfaceNormal = Vector3.Zero; | 3641 | { |
3642 | lowest.Position = Vector3.Zero; | 3642 | ContactPoint lowest; |
3643 | lowest.Position.Z = Single.NaN; | 3643 | lowest.SurfaceNormal = Vector3.Zero; |
3644 | 3644 | lowest.Position = Vector3.Zero; | |
3645 | foreach (ContactPoint contact in coldata.Values) | 3645 | lowest.Position.Z = Single.NaN; |
3646 | { | 3646 | |
3647 | if (Single.IsNaN(lowest.Position.Z) || contact.Position.Z < lowest.Position.Z) | 3647 | foreach (ContactPoint contact in coldata.Values) |
3648 | { | 3648 | { |
3649 | lowest = contact; | 3649 | if (Single.IsNaN(lowest.Position.Z) || contact.Position.Z < lowest.Position.Z) |
3650 | } | 3650 | { |
3651 | } | 3651 | lowest = contact; |
3652 | 3652 | } | |
3653 | CollisionPlane = new Vector4(-lowest.SurfaceNormal, -Vector3.Dot(lowest.Position, lowest.SurfaceNormal)); | 3653 | } |
3654 | } | 3654 | |
3655 | break; | 3655 | CollisionPlane = new Vector4(-lowest.SurfaceNormal, -Vector3.Dot(lowest.Position, lowest.SurfaceNormal)); |
3656 | } | 3656 | } |
3657 | } | 3657 | break; |
3658 | 3658 | } | |
3659 | List<uint> thisHitColliders = new List<uint>(); | 3659 | } |
3660 | List<uint> endedColliders = new List<uint>(); | 3660 | |
3661 | List<uint> startedColliders = new List<uint>(); | 3661 | List<uint> thisHitColliders = new List<uint>(); |
3662 | 3662 | List<uint> endedColliders = new List<uint>(); | |
3663 | foreach (uint localid in coldata.Keys) | 3663 | List<uint> startedColliders = new List<uint>(); |
3664 | { | 3664 | |
3665 | thisHitColliders.Add(localid); | 3665 | foreach (uint localid in coldata.Keys) |
3666 | if (!m_lastColliders.Contains(localid)) | 3666 | { |
3667 | { | 3667 | thisHitColliders.Add(localid); |
3668 | startedColliders.Add(localid); | 3668 | if (!m_lastColliders.Contains(localid)) |
3669 | } | 3669 | { |
3670 | //m_log.Debug("[SCENE PRESENCE]: Collided with:" + localid.ToString() + " at depth of: " + collissionswith[localid].ToString()); | 3670 | startedColliders.Add(localid); |
3671 | } | 3671 | } |
3672 | 3672 | //m_log.Debug("[SCENE PRESENCE]: Collided with:" + localid.ToString() + " at depth of: " + collissionswith[localid].ToString()); | |
3673 | // calculate things that ended colliding | 3673 | } |
3674 | foreach (uint localID in m_lastColliders) | 3674 | |
3675 | { | 3675 | // calculate things that ended colliding |
3676 | if (!thisHitColliders.Contains(localID)) | 3676 | foreach (uint localID in m_lastColliders) |
3677 | { | 3677 | { |
3678 | endedColliders.Add(localID); | 3678 | if (!thisHitColliders.Contains(localID)) |
3679 | } | 3679 | { |
3680 | } | 3680 | endedColliders.Add(localID); |
3681 | //add the items that started colliding this time to the last colliders list. | 3681 | } |
3682 | foreach (uint localID in startedColliders) | 3682 | } |
3683 | { | 3683 | //add the items that started colliding this time to the last colliders list. |
3684 | m_lastColliders.Add(localID); | 3684 | foreach (uint localID in startedColliders) |
3685 | } | 3685 | { |
3686 | // remove things that ended colliding from the last colliders list | 3686 | m_lastColliders.Add(localID); |
3687 | foreach (uint localID in endedColliders) | 3687 | } |
3688 | { | 3688 | // remove things that ended colliding from the last colliders list |
3689 | m_lastColliders.Remove(localID); | 3689 | foreach (uint localID in endedColliders) |
3690 | } | 3690 | { |
3691 | 3691 | m_lastColliders.Remove(localID); | |
3692 | // do event notification | 3692 | } |
3693 | if (startedColliders.Count > 0) | 3693 | |
3694 | { | 3694 | // do event notification |
3695 | ColliderArgs StartCollidingMessage = new ColliderArgs(); | 3695 | if (startedColliders.Count > 0) |
3696 | List<DetectedObject> colliding = new List<DetectedObject>(); | 3696 | { |
3697 | foreach (uint localId in startedColliders) | 3697 | ColliderArgs StartCollidingMessage = new ColliderArgs(); |
3698 | { | 3698 | List<DetectedObject> colliding = new List<DetectedObject>(); |
3699 | if (localId == 0) | 3699 | foreach (uint localId in startedColliders) |
3700 | continue; | 3700 | { |
3701 | 3701 | if (localId == 0) | |
3702 | SceneObjectPart obj = Scene.GetSceneObjectPart(localId); | 3702 | continue; |
3703 | string data = ""; | 3703 | |
3704 | if (obj != null) | 3704 | SceneObjectPart obj = Scene.GetSceneObjectPart(localId); |
3705 | { | 3705 | string data = ""; |
3706 | DetectedObject detobj = new DetectedObject(); | 3706 | if (obj != null) |
3707 | detobj.keyUUID = obj.UUID; | 3707 | { |
3708 | detobj.nameStr = obj.Name; | 3708 | DetectedObject detobj = new DetectedObject(); |
3709 | detobj.ownerUUID = obj.OwnerID; | 3709 | detobj.keyUUID = obj.UUID; |
3710 | detobj.posVector = obj.AbsolutePosition; | 3710 | detobj.nameStr = obj.Name; |
3711 | detobj.rotQuat = obj.GetWorldRotation(); | 3711 | detobj.ownerUUID = obj.OwnerID; |
3712 | detobj.velVector = obj.Velocity; | 3712 | detobj.posVector = obj.AbsolutePosition; |
3713 | detobj.colliderType = 0; | 3713 | detobj.rotQuat = obj.GetWorldRotation(); |
3714 | detobj.groupUUID = obj.GroupID; | 3714 | detobj.velVector = obj.Velocity; |
3715 | colliding.Add(detobj); | 3715 | detobj.colliderType = 0; |
3716 | } | 3716 | detobj.groupUUID = obj.GroupID; |
3717 | } | 3717 | colliding.Add(detobj); |
3718 | 3718 | } | |
3719 | if (colliding.Count > 0) | 3719 | } |
3720 | { | 3720 | |
3721 | StartCollidingMessage.Colliders = colliding; | 3721 | if (colliding.Count > 0) |
3722 | 3722 | { | |
3723 | foreach (SceneObjectGroup att in Attachments) | 3723 | StartCollidingMessage.Colliders = colliding; |
3724 | Scene.EventManager.TriggerScriptCollidingStart(att.LocalId, StartCollidingMessage); | 3724 | |
3725 | } | 3725 | foreach (SceneObjectGroup att in Attachments) |
3726 | } | 3726 | Scene.EventManager.TriggerScriptCollidingStart(att.LocalId, StartCollidingMessage); |
3727 | 3727 | } | |
3728 | if (endedColliders.Count > 0) | 3728 | } |
3729 | { | 3729 | |
3730 | ColliderArgs EndCollidingMessage = new ColliderArgs(); | 3730 | if (endedColliders.Count > 0) |
3731 | List<DetectedObject> colliding = new List<DetectedObject>(); | 3731 | { |
3732 | foreach (uint localId in endedColliders) | 3732 | ColliderArgs EndCollidingMessage = new ColliderArgs(); |
3733 | { | 3733 | List<DetectedObject> colliding = new List<DetectedObject>(); |
3734 | if (localId == 0) | 3734 | foreach (uint localId in endedColliders) |
3735 | continue; | 3735 | { |
3736 | 3736 | if (localId == 0) | |
3737 | SceneObjectPart obj = Scene.GetSceneObjectPart(localId); | 3737 | continue; |
3738 | string data = ""; | 3738 | |
3739 | if (obj != null) | 3739 | SceneObjectPart obj = Scene.GetSceneObjectPart(localId); |
3740 | { | 3740 | string data = ""; |
3741 | DetectedObject detobj = new DetectedObject(); | 3741 | if (obj != null) |
3742 | detobj.keyUUID = obj.UUID; | 3742 | { |
3743 | detobj.nameStr = obj.Name; | 3743 | DetectedObject detobj = new DetectedObject(); |
3744 | detobj.ownerUUID = obj.OwnerID; | 3744 | detobj.keyUUID = obj.UUID; |
3745 | detobj.posVector = obj.AbsolutePosition; | 3745 | detobj.nameStr = obj.Name; |
3746 | detobj.rotQuat = obj.GetWorldRotation(); | 3746 | detobj.ownerUUID = obj.OwnerID; |
3747 | detobj.velVector = obj.Velocity; | 3747 | detobj.posVector = obj.AbsolutePosition; |
3748 | detobj.colliderType = 0; | 3748 | detobj.rotQuat = obj.GetWorldRotation(); |
3749 | detobj.groupUUID = obj.GroupID; | 3749 | detobj.velVector = obj.Velocity; |
3750 | colliding.Add(detobj); | 3750 | detobj.colliderType = 0; |
3751 | } | 3751 | detobj.groupUUID = obj.GroupID; |
3752 | } | 3752 | colliding.Add(detobj); |
3753 | 3753 | } | |
3754 | if (colliding.Count > 0) | 3754 | } |
3755 | { | 3755 | |
3756 | EndCollidingMessage.Colliders = colliding; | 3756 | if (colliding.Count > 0) |
3757 | 3757 | { | |
3758 | foreach (SceneObjectGroup att in Attachments) | 3758 | EndCollidingMessage.Colliders = colliding; |
3759 | Scene.EventManager.TriggerScriptCollidingEnd(att.LocalId, EndCollidingMessage); | 3759 | |
3760 | } | 3760 | foreach (SceneObjectGroup att in Attachments) |
3761 | } | 3761 | Scene.EventManager.TriggerScriptCollidingEnd(att.LocalId, EndCollidingMessage); |
3762 | 3762 | } | |
3763 | if (thisHitColliders.Count > 0) | 3763 | } |
3764 | { | 3764 | |
3765 | ColliderArgs CollidingMessage = new ColliderArgs(); | 3765 | if (thisHitColliders.Count > 0) |
3766 | List<DetectedObject> colliding = new List<DetectedObject>(); | 3766 | { |
3767 | foreach (uint localId in thisHitColliders) | 3767 | ColliderArgs CollidingMessage = new ColliderArgs(); |
3768 | { | 3768 | List<DetectedObject> colliding = new List<DetectedObject>(); |
3769 | if (localId == 0) | 3769 | foreach (uint localId in thisHitColliders) |
3770 | continue; | 3770 | { |
3771 | 3771 | if (localId == 0) | |
3772 | SceneObjectPart obj = Scene.GetSceneObjectPart(localId); | 3772 | continue; |
3773 | string data = ""; | 3773 | |
3774 | if (obj != null) | 3774 | SceneObjectPart obj = Scene.GetSceneObjectPart(localId); |
3775 | { | 3775 | string data = ""; |
3776 | DetectedObject detobj = new DetectedObject(); | 3776 | if (obj != null) |
3777 | detobj.keyUUID = obj.UUID; | 3777 | { |
3778 | detobj.nameStr = obj.Name; | 3778 | DetectedObject detobj = new DetectedObject(); |
3779 | detobj.ownerUUID = obj.OwnerID; | 3779 | detobj.keyUUID = obj.UUID; |
3780 | detobj.posVector = obj.AbsolutePosition; | 3780 | detobj.nameStr = obj.Name; |
3781 | detobj.rotQuat = obj.GetWorldRotation(); | 3781 | detobj.ownerUUID = obj.OwnerID; |
3782 | detobj.velVector = obj.Velocity; | 3782 | detobj.posVector = obj.AbsolutePosition; |
3783 | detobj.colliderType = 0; | 3783 | detobj.rotQuat = obj.GetWorldRotation(); |
3784 | detobj.groupUUID = obj.GroupID; | 3784 | detobj.velVector = obj.Velocity; |
3785 | colliding.Add(detobj); | 3785 | detobj.colliderType = 0; |
3786 | } | 3786 | detobj.groupUUID = obj.GroupID; |
3787 | } | 3787 | colliding.Add(detobj); |
3788 | 3788 | } | |
3789 | if (colliding.Count > 0) | 3789 | } |
3790 | { | 3790 | |
3791 | CollidingMessage.Colliders = colliding; | 3791 | if (colliding.Count > 0) |
3792 | 3792 | { | |
3793 | lock (m_attachments) | 3793 | CollidingMessage.Colliders = colliding; |
3794 | { | 3794 | |
3795 | foreach (SceneObjectGroup att in m_attachments) | 3795 | lock (m_attachments) |
3796 | Scene.EventManager.TriggerScriptColliding(att.LocalId, CollidingMessage); | 3796 | { |
3797 | } | 3797 | foreach (SceneObjectGroup att in m_attachments) |
3798 | } | 3798 | Scene.EventManager.TriggerScriptColliding(att.LocalId, CollidingMessage); |
3799 | } | 3799 | } |
3800 | 3800 | } | |
3801 | if (m_invulnerable) | 3801 | } |
3802 | return; | 3802 | |
3803 | 3803 | if (m_invulnerable) | |
3804 | float starthealth = Health; | 3804 | return; |
3805 | uint killerObj = 0; | 3805 | |
3806 | foreach (uint localid in coldata.Keys) | 3806 | float starthealth = Health; |
3807 | { | 3807 | uint killerObj = 0; |
3808 | SceneObjectPart part = Scene.GetSceneObjectPart(localid); | 3808 | foreach (uint localid in coldata.Keys) |
3809 | 3809 | { | |
3810 | if (part != null && part.ParentGroup.Damage != -1.0f) | 3810 | SceneObjectPart part = Scene.GetSceneObjectPart(localid); |
3811 | Health -= part.ParentGroup.Damage; | 3811 | |
3812 | else | 3812 | if (part != null && part.ParentGroup.Damage != -1.0f) |
3813 | { | 3813 | Health -= part.ParentGroup.Damage; |
3814 | if (coldata[localid].PenetrationDepth >= 0.10f) | 3814 | else |
3815 | Health -= coldata[localid].PenetrationDepth * 5.0f; | 3815 | { |
3816 | } | 3816 | if (coldata[localid].PenetrationDepth >= 0.10f) |
3817 | 3817 | Health -= coldata[localid].PenetrationDepth * 5.0f; | |
3818 | if (Health <= 0.0f) | 3818 | } |
3819 | { | 3819 | |
3820 | if (localid != 0) | 3820 | if (Health <= 0.0f) |
3821 | killerObj = localid; | 3821 | { |
3822 | } | 3822 | if (localid != 0) |
3823 | //m_log.Debug("[AVATAR]: Collision with localid: " + localid.ToString() + " at depth: " + coldata[localid].ToString()); | 3823 | killerObj = localid; |
3824 | } | 3824 | } |
3825 | //Health = 100; | 3825 | //m_log.Debug("[AVATAR]: Collision with localid: " + localid.ToString() + " at depth: " + coldata[localid].ToString()); |
3826 | if (!m_invulnerable) | 3826 | } |
3827 | { | 3827 | //Health = 100; |
3828 | if (starthealth != Health) | 3828 | if (!m_invulnerable) |
3829 | { | 3829 | { |
3830 | ControllingClient.SendHealth(Health); | 3830 | if (starthealth != Health) |
3831 | } | 3831 | { |
3832 | if (m_health <= 0) | 3832 | ControllingClient.SendHealth(Health); |
3833 | m_scene.EventManager.TriggerAvatarKill(killerObj, this); | 3833 | } |
3834 | } | 3834 | if (m_health <= 0) |
3835 | } | 3835 | m_scene.EventManager.TriggerAvatarKill(killerObj, this); |
3836 | 3836 | } | |
3837 | public void setHealthWithUpdate(float health) | 3837 | } |
3838 | { | 3838 | |
3839 | Health = health; | 3839 | public void setHealthWithUpdate(float health) |
3840 | ControllingClient.SendHealth(Health); | 3840 | { |
3841 | } | 3841 | Health = health; |
3842 | 3842 | ControllingClient.SendHealth(Health); | |
3843 | public void Close() | 3843 | } |
3844 | { | 3844 | |
3845 | lock (m_attachments) | 3845 | public void Close() |
3846 | { | 3846 | { |
3847 | // Delete attachments from scene | 3847 | lock (m_attachments) |
3848 | // Don't try to save, as this thread won't live long | 3848 | { |
3849 | // enough to complete the save. This would cause no copy | 3849 | // Delete attachments from scene |
3850 | // attachments to poof! | 3850 | // Don't try to save, as this thread won't live long |
3851 | // | 3851 | // enough to complete the save. This would cause no copy |
3852 | foreach (SceneObjectGroup grp in m_attachments) | 3852 | // attachments to poof! |
3853 | { | 3853 | // |
3854 | m_scene.DeleteSceneObject(grp, false); | 3854 | foreach (SceneObjectGroup grp in m_attachments) |
3855 | } | 3855 | { |
3856 | m_attachments.Clear(); | 3856 | m_scene.DeleteSceneObject(grp, false); |
3857 | } | 3857 | } |
3858 | 3858 | m_attachments.Clear(); | |
3859 | lock (m_knownChildRegions) | 3859 | } |
3860 | { | 3860 | |
3861 | m_knownChildRegions.Clear(); | 3861 | lock (m_knownChildRegions) |
3862 | } | 3862 | { |
3863 | 3863 | m_knownChildRegions.Clear(); | |
3864 | lock (m_reprioritization_timer) | 3864 | } |
3865 | { | 3865 | |
3866 | m_reprioritization_timer.Enabled = false; | 3866 | lock (m_reprioritization_timer) |
3867 | m_reprioritization_timer.Elapsed -= new ElapsedEventHandler(Reprioritize); | 3867 | { |
3868 | } | 3868 | m_reprioritization_timer.Enabled = false; |
3869 | 3869 | m_reprioritization_timer.Elapsed -= new ElapsedEventHandler(Reprioritize); | |
3870 | // I don't get it but mono crashes when you try to dispose of this timer, | 3870 | } |
3871 | // unsetting the elapsed callback should be enough to allow for cleanup however. | 3871 | |
3872 | // m_reprioritizationTimer.Dispose(); | 3872 | // I don't get it but mono crashes when you try to dispose of this timer, |
3873 | 3873 | // unsetting the elapsed callback should be enough to allow for cleanup however. | |
3874 | m_sceneViewer.Close(); | 3874 | // m_reprioritizationTimer.Dispose(); |
3875 | 3875 | ||
3876 | RemoveFromPhysicalScene(); | 3876 | m_sceneViewer.Close(); |
3877 | m_animator.Close(); | 3877 | |
3878 | m_animator = null; | 3878 | RemoveFromPhysicalScene(); |
3879 | } | 3879 | m_animator.Close(); |
3880 | 3880 | m_animator = null; | |
3881 | public void AddAttachment(SceneObjectGroup gobj) | 3881 | } |
3882 | { | 3882 | |
3883 | lock (m_attachments) | 3883 | public void AddAttachment(SceneObjectGroup gobj) |
3884 | { | 3884 | { |
3885 | m_attachments.Add(gobj); | 3885 | lock (m_attachments) |
3886 | } | 3886 | { |
3887 | } | 3887 | m_attachments.Add(gobj); |
3888 | 3888 | } | |
3889 | public bool HasAttachments() | 3889 | } |
3890 | { | 3890 | |
3891 | return m_attachments.Count > 0; | 3891 | public bool HasAttachments() |
3892 | } | 3892 | { |
3893 | 3893 | return m_attachments.Count > 0; | |
3894 | public bool HasScriptedAttachments() | 3894 | } |
3895 | { | 3895 | |
3896 | lock (m_attachments) | 3896 | public bool HasScriptedAttachments() |
3897 | { | 3897 | { |
3898 | foreach (SceneObjectGroup gobj in m_attachments) | 3898 | lock (m_attachments) |
3899 | { | 3899 | { |
3900 | if (gobj != null) | 3900 | foreach (SceneObjectGroup gobj in m_attachments) |
3901 | { | 3901 | { |
3902 | if (gobj.RootPart.Inventory.ContainsScripts()) | 3902 | if (gobj != null) |
3903 | return true; | 3903 | { |
3904 | } | 3904 | if (gobj.RootPart.Inventory.ContainsScripts()) |
3905 | } | 3905 | return true; |
3906 | } | 3906 | } |
3907 | return false; | 3907 | } |
3908 | } | 3908 | } |
3909 | 3909 | return false; | |
3910 | public void RemoveAttachment(SceneObjectGroup gobj) | 3910 | } |
3911 | { | 3911 | |
3912 | lock (m_attachments) | 3912 | public void RemoveAttachment(SceneObjectGroup gobj) |
3913 | { | 3913 | { |
3914 | if (m_attachments.Contains(gobj)) | 3914 | lock (m_attachments) |
3915 | { | 3915 | { |
3916 | m_attachments.Remove(gobj); | 3916 | if (m_attachments.Contains(gobj)) |
3917 | } | 3917 | { |
3918 | } | 3918 | m_attachments.Remove(gobj); |
3919 | } | 3919 | } |
3920 | 3920 | } | |
3921 | public bool ValidateAttachments() | 3921 | } |
3922 | { | 3922 | |
3923 | lock (m_attachments) | 3923 | public bool ValidateAttachments() |
3924 | { | 3924 | { |
3925 | // Validate | 3925 | lock (m_attachments) |
3926 | foreach (SceneObjectGroup gobj in m_attachments) | 3926 | { |
3927 | { | 3927 | // Validate |
3928 | if (gobj == null) | 3928 | foreach (SceneObjectGroup gobj in m_attachments) |
3929 | return false; | 3929 | { |
3930 | 3930 | if (gobj == null) | |
3931 | if (gobj.IsDeleted) | 3931 | return false; |
3932 | return false; | 3932 | |
3933 | } | 3933 | if (gobj.IsDeleted) |
3934 | } | 3934 | return false; |
3935 | return true; | 3935 | } |
3936 | } | 3936 | } |
3937 | 3937 | return true; | |
3938 | /// <summary> | 3938 | } |
3939 | /// Send a script event to this scene presence's attachments | 3939 | |
3940 | /// </summary> | 3940 | /// <summary> |
3941 | /// <param name="eventName">The name of the event</param> | 3941 | /// Send a script event to this scene presence's attachments |
3942 | /// <param name="args">The arguments for the event</param> | 3942 | /// </summary> |
3943 | public void SendScriptEventToAttachments(string eventName, Object[] args) | 3943 | /// <param name="eventName">The name of the event</param> |
3944 | { | 3944 | /// <param name="args">The arguments for the event</param> |
3945 | if (m_scriptEngines != null) | 3945 | public void SendScriptEventToAttachments(string eventName, Object[] args) |
3946 | { | 3946 | { |
3947 | lock (m_attachments) | 3947 | if (m_scriptEngines != null) |
3948 | { | 3948 | { |
3949 | foreach (SceneObjectGroup grp in m_attachments) | 3949 | lock (m_attachments) |
3950 | { | 3950 | { |
3951 | // 16384 is CHANGED_ANIMATION | 3951 | foreach (SceneObjectGroup grp in m_attachments) |
3952 | // | 3952 | { |
3953 | // Send this to all attachment root prims | 3953 | // 16384 is CHANGED_ANIMATION |
3954 | // | 3954 | // |
3955 | foreach (IScriptModule m in m_scriptEngines) | 3955 | // Send this to all attachment root prims |
3956 | { | 3956 | // |
3957 | if (m == null) // No script engine loaded | 3957 | foreach (IScriptModule m in m_scriptEngines) |
3958 | continue; | 3958 | { |
3959 | 3959 | if (m == null) // No script engine loaded | |
3960 | m.PostObjectEvent(grp.RootPart.UUID, "changed", new Object[] { (int)Changed.ANIMATION }); | 3960 | continue; |
3961 | } | 3961 | |
3962 | } | 3962 | m.PostObjectEvent(grp.RootPart.UUID, "changed", new Object[] { (int)Changed.ANIMATION }); |
3963 | } | 3963 | } |
3964 | } | 3964 | } |
3965 | } | 3965 | } |
3966 | 3966 | } | |
3967 | 3967 | } | |
3968 | public void initializeScenePresence(IClientAPI client, RegionInfo region, Scene scene) | 3968 | |
3969 | { | 3969 | |
3970 | m_controllingClient = client; | 3970 | public void initializeScenePresence(IClientAPI client, RegionInfo region, Scene scene) |
3971 | m_regionInfo = region; | 3971 | { |
3972 | m_scene = scene; | 3972 | m_controllingClient = client; |
3973 | 3973 | m_regionInfo = region; | |
3974 | RegisterToEvents(); | 3974 | m_scene = scene; |
3975 | if (m_controllingClient != null) | 3975 | |
3976 | { | 3976 | RegisterToEvents(); |
3977 | m_controllingClient.ProcessPendingPackets(); | 3977 | if (m_controllingClient != null) |
3978 | } | 3978 | { |
3979 | /* | 3979 | m_controllingClient.ProcessPendingPackets(); |
3980 | AbsolutePosition = client.StartPos; | 3980 | } |
3981 | 3981 | /* | |
3982 | Animations = new AvatarAnimations(); | 3982 | AbsolutePosition = client.StartPos; |
3983 | Animations.LoadAnims(); | 3983 | |
3984 | 3984 | Animations = new AvatarAnimations(); | |
3985 | m_animations = new List<UUID>(); | 3985 | Animations.LoadAnims(); |
3986 | m_animations.Add(Animations.AnimsUUID["STAND"]); | 3986 | |
3987 | m_animationSeqs.Add(m_controllingClient.NextAnimationSequenceNumber); | 3987 | m_animations = new List<UUID>(); |
3988 | 3988 | m_animations.Add(Animations.AnimsUUID["STAND"]); | |
3989 | SetDirectionVectors(); | 3989 | m_animationSeqs.Add(m_controllingClient.NextAnimationSequenceNumber); |
3990 | */ | 3990 | |
3991 | } | 3991 | SetDirectionVectors(); |
3992 | 3992 | */ | |
3993 | internal void PushForce(Vector3 impulse) | 3993 | } |
3994 | { | 3994 | |
3995 | if (PhysicsActor != null) | 3995 | internal void PushForce(Vector3 impulse) |
3996 | { | 3996 | { |
3997 | PhysicsActor.AddForce(impulse,true); | 3997 | if (PhysicsActor != null) |
3998 | } | 3998 | { |
3999 | } | 3999 | PhysicsActor.AddForce(impulse,true); |
4000 | 4000 | } | |
4001 | public void RegisterControlEventsToScript(int controls, int accept, int pass_on, uint Obj_localID, UUID Script_item_UUID) | 4001 | } |
4002 | { | 4002 | |
4003 | ScriptControllers obj = new ScriptControllers(); | 4003 | public void RegisterControlEventsToScript(int controls, int accept, int pass_on, uint Obj_localID, UUID Script_item_UUID) |
4004 | obj.ignoreControls = ScriptControlled.CONTROL_ZERO; | 4004 | { |
4005 | obj.eventControls = ScriptControlled.CONTROL_ZERO; | 4005 | ScriptControllers obj = new ScriptControllers(); |
4006 | 4006 | obj.ignoreControls = ScriptControlled.CONTROL_ZERO; | |
4007 | obj.itemID = Script_item_UUID; | 4007 | obj.eventControls = ScriptControlled.CONTROL_ZERO; |
4008 | if (pass_on == 0 && accept == 0) | 4008 | |
4009 | { | 4009 | obj.itemID = Script_item_UUID; |
4010 | IgnoredControls |= (ScriptControlled)controls; | 4010 | if (pass_on == 0 && accept == 0) |
4011 | obj.ignoreControls = (ScriptControlled)controls; | 4011 | { |
4012 | } | 4012 | IgnoredControls |= (ScriptControlled)controls; |
4013 | 4013 | obj.ignoreControls = (ScriptControlled)controls; | |
4014 | if (pass_on == 0 && accept == 1) | 4014 | } |
4015 | { | 4015 | |
4016 | IgnoredControls |= (ScriptControlled)controls; | 4016 | if (pass_on == 0 && accept == 1) |
4017 | obj.ignoreControls = (ScriptControlled)controls; | 4017 | { |
4018 | obj.eventControls = (ScriptControlled)controls; | 4018 | IgnoredControls |= (ScriptControlled)controls; |
4019 | } | 4019 | obj.ignoreControls = (ScriptControlled)controls; |
4020 | if (pass_on == 1 && accept == 1) | 4020 | obj.eventControls = (ScriptControlled)controls; |
4021 | { | 4021 | } |
4022 | IgnoredControls = ScriptControlled.CONTROL_ZERO; | 4022 | if (pass_on == 1 && accept == 1) |
4023 | obj.eventControls = (ScriptControlled)controls; | 4023 | { |
4024 | obj.ignoreControls = ScriptControlled.CONTROL_ZERO; | 4024 | IgnoredControls = ScriptControlled.CONTROL_ZERO; |
4025 | } | 4025 | obj.eventControls = (ScriptControlled)controls; |
4026 | 4026 | obj.ignoreControls = ScriptControlled.CONTROL_ZERO; | |
4027 | lock (scriptedcontrols) | 4027 | } |
4028 | { | 4028 | |
4029 | if (pass_on == 1 && accept == 0) | 4029 | lock (scriptedcontrols) |
4030 | { | 4030 | { |
4031 | IgnoredControls &= ~(ScriptControlled)controls; | 4031 | if (pass_on == 1 && accept == 0) |
4032 | if (scriptedcontrols.ContainsKey(Script_item_UUID)) | 4032 | { |
4033 | scriptedcontrols.Remove(Script_item_UUID); | 4033 | IgnoredControls &= ~(ScriptControlled)controls; |
4034 | } | 4034 | if (scriptedcontrols.ContainsKey(Script_item_UUID)) |
4035 | else | 4035 | scriptedcontrols.Remove(Script_item_UUID); |
4036 | { | 4036 | } |
4037 | scriptedcontrols[Script_item_UUID] = obj; | 4037 | else |
4038 | } | 4038 | { |
4039 | } | 4039 | scriptedcontrols[Script_item_UUID] = obj; |
4040 | ControllingClient.SendTakeControls(controls, pass_on == 1 ? true : false, true); | 4040 | } |
4041 | } | 4041 | } |
4042 | 4042 | ControllingClient.SendTakeControls(controls, pass_on == 1 ? true : false, true); | |
4043 | public void HandleForceReleaseControls(IClientAPI remoteClient, UUID agentID) | 4043 | } |
4044 | { | 4044 | |
4045 | IgnoredControls = ScriptControlled.CONTROL_ZERO; | 4045 | public void HandleForceReleaseControls(IClientAPI remoteClient, UUID agentID) |
4046 | lock (scriptedcontrols) | 4046 | { |
4047 | { | 4047 | IgnoredControls = ScriptControlled.CONTROL_ZERO; |
4048 | scriptedcontrols.Clear(); | 4048 | lock (scriptedcontrols) |
4049 | } | 4049 | { |
4050 | ControllingClient.SendTakeControls(int.MaxValue, false, false); | 4050 | scriptedcontrols.Clear(); |
4051 | } | 4051 | } |
4052 | 4052 | ControllingClient.SendTakeControls(int.MaxValue, false, false); | |
4053 | public void UnRegisterControlEventsToScript(uint Obj_localID, UUID Script_item_UUID) | 4053 | } |
4054 | { | 4054 | |
4055 | ScriptControllers takecontrols; | 4055 | public void UnRegisterControlEventsToScript(uint Obj_localID, UUID Script_item_UUID) |
4056 | 4056 | { | |
4057 | lock (scriptedcontrols) | 4057 | ScriptControllers takecontrols; |
4058 | { | 4058 | |
4059 | if (scriptedcontrols.TryGetValue(Script_item_UUID, out takecontrols)) | 4059 | lock (scriptedcontrols) |
4060 | { | 4060 | { |
4061 | ScriptControlled sctc = takecontrols.eventControls; | 4061 | if (scriptedcontrols.TryGetValue(Script_item_UUID, out takecontrols)) |
4062 | 4062 | { | |
4063 | ControllingClient.SendTakeControls((int)sctc, false, false); | 4063 | ScriptControlled sctc = takecontrols.eventControls; |
4064 | ControllingClient.SendTakeControls((int)sctc, true, false); | 4064 | |
4065 | 4065 | ControllingClient.SendTakeControls((int)sctc, false, false); | |
4066 | scriptedcontrols.Remove(Script_item_UUID); | 4066 | ControllingClient.SendTakeControls((int)sctc, true, false); |
4067 | IgnoredControls = ScriptControlled.CONTROL_ZERO; | 4067 | |
4068 | foreach (ScriptControllers scData in scriptedcontrols.Values) | 4068 | scriptedcontrols.Remove(Script_item_UUID); |
4069 | { | 4069 | IgnoredControls = ScriptControlled.CONTROL_ZERO; |
4070 | IgnoredControls |= scData.ignoreControls; | 4070 | foreach (ScriptControllers scData in scriptedcontrols.Values) |
4071 | } | 4071 | { |
4072 | } | 4072 | IgnoredControls |= scData.ignoreControls; |
4073 | } | 4073 | } |
4074 | } | 4074 | } |
4075 | 4075 | } | |
4076 | internal void SendControlToScripts(uint flags) | 4076 | } |
4077 | { | 4077 | |
4078 | ScriptControlled allflags = ScriptControlled.CONTROL_ZERO; | 4078 | internal void SendControlToScripts(uint flags) |
4079 | 4079 | { | |
4080 | if (MouseDown) | 4080 | ScriptControlled allflags = ScriptControlled.CONTROL_ZERO; |
4081 | { | 4081 | |
4082 | allflags = LastCommands & (ScriptControlled.CONTROL_ML_LBUTTON | ScriptControlled.CONTROL_LBUTTON); | 4082 | if (MouseDown) |
4083 | if ((flags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_LBUTTON_UP) != 0 || (flags & unchecked((uint)AgentManager.ControlFlags.AGENT_CONTROL_ML_LBUTTON_UP)) != 0) | 4083 | { |
4084 | { | 4084 | allflags = LastCommands & (ScriptControlled.CONTROL_ML_LBUTTON | ScriptControlled.CONTROL_LBUTTON); |
4085 | allflags = ScriptControlled.CONTROL_ZERO; | 4085 | if ((flags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_LBUTTON_UP) != 0 || (flags & unchecked((uint)AgentManager.ControlFlags.AGENT_CONTROL_ML_LBUTTON_UP)) != 0) |
4086 | MouseDown = true; | 4086 | { |
4087 | } | 4087 | allflags = ScriptControlled.CONTROL_ZERO; |
4088 | } | 4088 | MouseDown = true; |
4089 | 4089 | } | |
4090 | if ((flags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_ML_LBUTTON_DOWN) != 0) | 4090 | } |
4091 | { | 4091 | |
4092 | allflags |= ScriptControlled.CONTROL_ML_LBUTTON; | 4092 | if ((flags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_ML_LBUTTON_DOWN) != 0) |
4093 | MouseDown = true; | 4093 | { |
4094 | } | 4094 | allflags |= ScriptControlled.CONTROL_ML_LBUTTON; |
4095 | if ((flags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_LBUTTON_DOWN) != 0) | 4095 | MouseDown = true; |
4096 | { | 4096 | } |
4097 | allflags |= ScriptControlled.CONTROL_LBUTTON; | 4097 | if ((flags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_LBUTTON_DOWN) != 0) |
4098 | MouseDown = true; | 4098 | { |
4099 | } | 4099 | allflags |= ScriptControlled.CONTROL_LBUTTON; |
4100 | 4100 | MouseDown = true; | |
4101 | // find all activated controls, whether the scripts are interested in them or not | 4101 | } |
4102 | if ((flags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_AT_POS) != 0 || (flags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_AT_POS) != 0) | 4102 | |
4103 | { | 4103 | // find all activated controls, whether the scripts are interested in them or not |
4104 | allflags |= ScriptControlled.CONTROL_FWD; | 4104 | if ((flags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_AT_POS) != 0 || (flags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_AT_POS) != 0) |
4105 | } | 4105 | { |
4106 | if ((flags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_AT_NEG) != 0 || (flags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_AT_NEG) != 0) | 4106 | allflags |= ScriptControlled.CONTROL_FWD; |
4107 | { | 4107 | } |
4108 | allflags |= ScriptControlled.CONTROL_BACK; | 4108 | if ((flags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_AT_NEG) != 0 || (flags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_AT_NEG) != 0) |
4109 | } | 4109 | { |
4110 | if ((flags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_UP_POS) != 0 || (flags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_UP_POS) != 0) | 4110 | allflags |= ScriptControlled.CONTROL_BACK; |
4111 | { | 4111 | } |
4112 | allflags |= ScriptControlled.CONTROL_UP; | 4112 | if ((flags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_UP_POS) != 0 || (flags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_UP_POS) != 0) |
4113 | } | 4113 | { |
4114 | if ((flags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_UP_NEG) != 0 || (flags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_UP_NEG) != 0) | 4114 | allflags |= ScriptControlled.CONTROL_UP; |
4115 | { | 4115 | } |
4116 | allflags |= ScriptControlled.CONTROL_DOWN; | 4116 | if ((flags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_UP_NEG) != 0 || (flags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_UP_NEG) != 0) |
4117 | } | 4117 | { |
4118 | if ((flags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_LEFT_POS) != 0 || (flags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_LEFT_POS) != 0) | 4118 | allflags |= ScriptControlled.CONTROL_DOWN; |
4119 | { | 4119 | } |
4120 | allflags |= ScriptControlled.CONTROL_LEFT; | 4120 | if ((flags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_LEFT_POS) != 0 || (flags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_LEFT_POS) != 0) |
4121 | } | 4121 | { |
4122 | if ((flags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_LEFT_NEG) != 0 || (flags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_LEFT_NEG) != 0) | 4122 | allflags |= ScriptControlled.CONTROL_LEFT; |
4123 | { | 4123 | } |
4124 | allflags |= ScriptControlled.CONTROL_RIGHT; | 4124 | if ((flags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_LEFT_NEG) != 0 || (flags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_LEFT_NEG) != 0) |
4125 | } | 4125 | { |
4126 | if ((flags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_YAW_NEG) != 0) | 4126 | allflags |= ScriptControlled.CONTROL_RIGHT; |
4127 | { | 4127 | } |
4128 | allflags |= ScriptControlled.CONTROL_ROT_RIGHT; | 4128 | if ((flags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_YAW_NEG) != 0) |
4129 | } | 4129 | { |
4130 | if ((flags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_YAW_POS) != 0) | 4130 | allflags |= ScriptControlled.CONTROL_ROT_RIGHT; |
4131 | { | 4131 | } |
4132 | allflags |= ScriptControlled.CONTROL_ROT_LEFT; | 4132 | if ((flags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_YAW_POS) != 0) |
4133 | } | 4133 | { |
4134 | // optimization; we have to check per script, but if nothing is pressed and nothing changed, we can skip that | 4134 | allflags |= ScriptControlled.CONTROL_ROT_LEFT; |
4135 | if (allflags != ScriptControlled.CONTROL_ZERO || allflags != LastCommands) | 4135 | } |
4136 | { | 4136 | // optimization; we have to check per script, but if nothing is pressed and nothing changed, we can skip that |
4137 | lock (scriptedcontrols) | 4137 | if (allflags != ScriptControlled.CONTROL_ZERO || allflags != LastCommands) |
4138 | { | 4138 | { |
4139 | foreach (KeyValuePair<UUID, ScriptControllers> kvp in scriptedcontrols) | 4139 | lock (scriptedcontrols) |
4140 | { | 4140 | { |
4141 | UUID scriptUUID = kvp.Key; | 4141 | foreach (KeyValuePair<UUID, ScriptControllers> kvp in scriptedcontrols) |
4142 | ScriptControllers scriptControlData = kvp.Value; | 4142 | { |
4143 | 4143 | UUID scriptUUID = kvp.Key; | |
4144 | ScriptControlled localHeld = allflags & scriptControlData.eventControls; // the flags interesting for us | 4144 | ScriptControllers scriptControlData = kvp.Value; |
4145 | ScriptControlled localLast = LastCommands & scriptControlData.eventControls; // the activated controls in the last cycle | 4145 | |
4146 | ScriptControlled localChange = localHeld ^ localLast; // the changed bits | 4146 | ScriptControlled localHeld = allflags & scriptControlData.eventControls; // the flags interesting for us |
4147 | if (localHeld != ScriptControlled.CONTROL_ZERO || localChange != ScriptControlled.CONTROL_ZERO) | 4147 | ScriptControlled localLast = LastCommands & scriptControlData.eventControls; // the activated controls in the last cycle |
4148 | { | 4148 | ScriptControlled localChange = localHeld ^ localLast; // the changed bits |
4149 | // only send if still pressed or just changed | 4149 | if (localHeld != ScriptControlled.CONTROL_ZERO || localChange != ScriptControlled.CONTROL_ZERO) |
4150 | m_scene.EventManager.TriggerControlEvent(scriptUUID, UUID, (uint)localHeld, (uint)localChange); | 4150 | { |
4151 | } | 4151 | // only send if still pressed or just changed |
4152 | } | 4152 | m_scene.EventManager.TriggerControlEvent(scriptUUID, UUID, (uint)localHeld, (uint)localChange); |
4153 | } | 4153 | } |
4154 | } | 4154 | } |
4155 | 4155 | } | |
4156 | LastCommands = allflags; | 4156 | } |
4157 | } | 4157 | |
4158 | 4158 | LastCommands = allflags; | |
4159 | internal static AgentManager.ControlFlags RemoveIgnoredControls(AgentManager.ControlFlags flags, ScriptControlled ignored) | 4159 | } |
4160 | { | 4160 | |
4161 | if (ignored == ScriptControlled.CONTROL_ZERO) | 4161 | internal static AgentManager.ControlFlags RemoveIgnoredControls(AgentManager.ControlFlags flags, ScriptControlled ignored) |
4162 | return flags; | 4162 | { |
4163 | 4163 | if (ignored == ScriptControlled.CONTROL_ZERO) | |
4164 | if ((ignored & ScriptControlled.CONTROL_BACK) != 0) | 4164 | return flags; |
4165 | flags &= ~(AgentManager.ControlFlags.AGENT_CONTROL_AT_NEG | AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_AT_NEG); | 4165 | |
4166 | if ((ignored & ScriptControlled.CONTROL_FWD) != 0) | 4166 | if ((ignored & ScriptControlled.CONTROL_BACK) != 0) |
4167 | flags &= ~(AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_AT_POS | AgentManager.ControlFlags.AGENT_CONTROL_AT_POS); | 4167 | flags &= ~(AgentManager.ControlFlags.AGENT_CONTROL_AT_NEG | AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_AT_NEG); |
4168 | if ((ignored & ScriptControlled.CONTROL_DOWN) != 0) | 4168 | if ((ignored & ScriptControlled.CONTROL_FWD) != 0) |
4169 | flags &= ~(AgentManager.ControlFlags.AGENT_CONTROL_UP_NEG | AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_UP_NEG); | 4169 | flags &= ~(AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_AT_POS | AgentManager.ControlFlags.AGENT_CONTROL_AT_POS); |
4170 | if ((ignored & ScriptControlled.CONTROL_UP) != 0) | 4170 | if ((ignored & ScriptControlled.CONTROL_DOWN) != 0) |
4171 | flags &= ~(AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_UP_POS | AgentManager.ControlFlags.AGENT_CONTROL_UP_POS); | 4171 | flags &= ~(AgentManager.ControlFlags.AGENT_CONTROL_UP_NEG | AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_UP_NEG); |
4172 | if ((ignored & ScriptControlled.CONTROL_LEFT) != 0) | 4172 | if ((ignored & ScriptControlled.CONTROL_UP) != 0) |
4173 | flags &= ~(AgentManager.ControlFlags.AGENT_CONTROL_LEFT_POS | AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_LEFT_POS); | 4173 | flags &= ~(AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_UP_POS | AgentManager.ControlFlags.AGENT_CONTROL_UP_POS); |
4174 | if ((ignored & ScriptControlled.CONTROL_RIGHT) != 0) | 4174 | if ((ignored & ScriptControlled.CONTROL_LEFT) != 0) |
4175 | flags &= ~(AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_LEFT_NEG | AgentManager.ControlFlags.AGENT_CONTROL_LEFT_NEG); | 4175 | flags &= ~(AgentManager.ControlFlags.AGENT_CONTROL_LEFT_POS | AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_LEFT_POS); |
4176 | if ((ignored & ScriptControlled.CONTROL_ROT_LEFT) != 0) | 4176 | if ((ignored & ScriptControlled.CONTROL_RIGHT) != 0) |
4177 | flags &= ~(AgentManager.ControlFlags.AGENT_CONTROL_YAW_NEG); | 4177 | flags &= ~(AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_LEFT_NEG | AgentManager.ControlFlags.AGENT_CONTROL_LEFT_NEG); |
4178 | if ((ignored & ScriptControlled.CONTROL_ROT_RIGHT) != 0) | 4178 | if ((ignored & ScriptControlled.CONTROL_ROT_LEFT) != 0) |
4179 | flags &= ~(AgentManager.ControlFlags.AGENT_CONTROL_YAW_POS); | 4179 | flags &= ~(AgentManager.ControlFlags.AGENT_CONTROL_YAW_NEG); |
4180 | if ((ignored & ScriptControlled.CONTROL_ML_LBUTTON) != 0) | 4180 | if ((ignored & ScriptControlled.CONTROL_ROT_RIGHT) != 0) |
4181 | flags &= ~(AgentManager.ControlFlags.AGENT_CONTROL_ML_LBUTTON_DOWN); | 4181 | flags &= ~(AgentManager.ControlFlags.AGENT_CONTROL_YAW_POS); |
4182 | if ((ignored & ScriptControlled.CONTROL_LBUTTON) != 0) | 4182 | if ((ignored & ScriptControlled.CONTROL_ML_LBUTTON) != 0) |
4183 | flags &= ~(AgentManager.ControlFlags.AGENT_CONTROL_LBUTTON_UP | AgentManager.ControlFlags.AGENT_CONTROL_LBUTTON_DOWN); | 4183 | flags &= ~(AgentManager.ControlFlags.AGENT_CONTROL_ML_LBUTTON_DOWN); |
4184 | 4184 | if ((ignored & ScriptControlled.CONTROL_LBUTTON) != 0) | |
4185 | //DIR_CONTROL_FLAG_FORWARD = AgentManager.ControlFlags.AGENT_CONTROL_AT_POS, | 4185 | flags &= ~(AgentManager.ControlFlags.AGENT_CONTROL_LBUTTON_UP | AgentManager.ControlFlags.AGENT_CONTROL_LBUTTON_DOWN); |
4186 | //DIR_CONTROL_FLAG_BACK = AgentManager.ControlFlags.AGENT_CONTROL_AT_NEG, | 4186 | |
4187 | //DIR_CONTROL_FLAG_LEFT = AgentManager.ControlFlags.AGENT_CONTROL_LEFT_POS, | 4187 | //DIR_CONTROL_FLAG_FORWARD = AgentManager.ControlFlags.AGENT_CONTROL_AT_POS, |
4188 | //DIR_CONTROL_FLAG_RIGHT = AgentManager.ControlFlags.AGENT_CONTROL_LEFT_NEG, | 4188 | //DIR_CONTROL_FLAG_BACK = AgentManager.ControlFlags.AGENT_CONTROL_AT_NEG, |
4189 | //DIR_CONTROL_FLAG_UP = AgentManager.ControlFlags.AGENT_CONTROL_UP_POS, | 4189 | //DIR_CONTROL_FLAG_LEFT = AgentManager.ControlFlags.AGENT_CONTROL_LEFT_POS, |
4190 | //DIR_CONTROL_FLAG_DOWN = AgentManager.ControlFlags.AGENT_CONTROL_UP_NEG, | 4190 | //DIR_CONTROL_FLAG_RIGHT = AgentManager.ControlFlags.AGENT_CONTROL_LEFT_NEG, |
4191 | //DIR_CONTROL_FLAG_DOWN_NUDGE = AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_UP_NEG | 4191 | //DIR_CONTROL_FLAG_UP = AgentManager.ControlFlags.AGENT_CONTROL_UP_POS, |
4192 | 4192 | //DIR_CONTROL_FLAG_DOWN = AgentManager.ControlFlags.AGENT_CONTROL_UP_NEG, | |
4193 | return flags; | 4193 | //DIR_CONTROL_FLAG_DOWN_NUDGE = AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_UP_NEG |
4194 | } | 4194 | |
4195 | 4195 | return flags; | |
4196 | /// <summary> | 4196 | } |
4197 | /// RezAttachments. This should only be called upon login on the first region. | 4197 | |
4198 | /// Attachment rezzings on crossings and TPs are done in a different way. | 4198 | /// <summary> |
4199 | /// </summary> | 4199 | /// RezAttachments. This should only be called upon login on the first region. |
4200 | public void RezAttachments() | 4200 | /// Attachment rezzings on crossings and TPs are done in a different way. |
4201 | { | 4201 | /// </summary> |
4202 | if (null == m_appearance) | 4202 | public void RezAttachments() |
4203 | { | 4203 | { |
4204 | m_log.WarnFormat("[ATTACHMENT]: Appearance has not been initialized for agent {0}", UUID); | 4204 | if (null == m_appearance) |
4205 | return; | 4205 | { |
4206 | } | 4206 | m_log.WarnFormat("[ATTACHMENT]: Appearance has not been initialized for agent {0}", UUID); |
4207 | 4207 | return; | |
4208 | XmlDocument doc = new XmlDocument(); | 4208 | } |
4209 | string stateData = String.Empty; | 4209 | |
4210 | 4210 | XmlDocument doc = new XmlDocument(); | |
4211 | IAttachmentsService attServ = m_scene.RequestModuleInterface<IAttachmentsService>(); | 4211 | string stateData = String.Empty; |
4212 | if (attServ != null) | 4212 | |
4213 | { | 4213 | IAttachmentsService attServ = m_scene.RequestModuleInterface<IAttachmentsService>(); |
4214 | m_log.DebugFormat("[ATTACHMENT]: Loading attachment data from attachment service"); | 4214 | if (attServ != null) |
4215 | stateData = attServ.Get(ControllingClient.AgentId.ToString()); | 4215 | { |
4216 | if (stateData != String.Empty) | 4216 | m_log.DebugFormat("[ATTACHMENT]: Loading attachment data from attachment service"); |
4217 | { | 4217 | stateData = attServ.Get(ControllingClient.AgentId.ToString()); |
4218 | try | 4218 | if (stateData != String.Empty) |
4219 | { | 4219 | { |
4220 | doc.LoadXml(stateData); | 4220 | try |
4221 | } | 4221 | { |
4222 | catch { } | 4222 | doc.LoadXml(stateData); |
4223 | } | 4223 | } |
4224 | } | 4224 | catch { } |
4225 | 4225 | } | |
4226 | Dictionary<UUID, string> itemData = new Dictionary<UUID, string>(); | 4226 | } |
4227 | 4227 | ||
4228 | XmlNodeList nodes = doc.GetElementsByTagName("Attachment"); | 4228 | Dictionary<UUID, string> itemData = new Dictionary<UUID, string>(); |
4229 | if (nodes.Count > 0) | 4229 | |
4230 | { | 4230 | XmlNodeList nodes = doc.GetElementsByTagName("Attachment"); |
4231 | foreach (XmlNode n in nodes) | 4231 | if (nodes.Count > 0) |
4232 | { | 4232 | { |
4233 | XmlElement elem = (XmlElement)n; | 4233 | foreach (XmlNode n in nodes) |
4234 | string itemID = elem.GetAttribute("ItemID"); | 4234 | { |
4235 | string xml = elem.InnerXml; | 4235 | XmlElement elem = (XmlElement)n; |
4236 | 4236 | string itemID = elem.GetAttribute("ItemID"); | |
4237 | itemData[new UUID(itemID)] = xml; | 4237 | string xml = elem.InnerXml; |
4238 | } | 4238 | |
4239 | } | 4239 | itemData[new UUID(itemID)] = xml; |
4240 | 4240 | } | |
4241 | List<int> attPoints = m_appearance.GetAttachedPoints(); | 4241 | } |
4242 | foreach (int p in attPoints) | 4242 | |
4243 | { | 4243 | List<int> attPoints = m_appearance.GetAttachedPoints(); |
4244 | if (m_isDeleted) | 4244 | foreach (int p in attPoints) |
4245 | return; | 4245 | { |
4246 | 4246 | if (m_isDeleted) | |
4247 | UUID itemID = m_appearance.GetAttachedItem(p); | 4247 | return; |
4248 | UUID assetID = m_appearance.GetAttachedAsset(p); | 4248 | |
4249 | 4249 | UUID itemID = m_appearance.GetAttachedItem(p); | |
4250 | // For some reason assetIDs are being written as Zero's in the DB -- need to track tat down | 4250 | UUID assetID = m_appearance.GetAttachedAsset(p); |
4251 | // But they're not used anyway, the item is being looked up for now, so let's proceed. | 4251 | |
4252 | //if (UUID.Zero == assetID) | 4252 | // For some reason assetIDs are being written as Zero's in the DB -- need to track tat down |
4253 | //{ | 4253 | // But they're not used anyway, the item is being looked up for now, so let's proceed. |
4254 | // m_log.DebugFormat("[ATTACHMENT]: Cannot rez attachment in point {0} with itemID {1}", p, itemID); | 4254 | //if (UUID.Zero == assetID) |
4255 | // continue; | 4255 | //{ |
4256 | //} | 4256 | // m_log.DebugFormat("[ATTACHMENT]: Cannot rez attachment in point {0} with itemID {1}", p, itemID); |
4257 | 4257 | // continue; | |
4258 | try | 4258 | //} |
4259 | { | 4259 | |
4260 | string xmlData; | 4260 | try |
4261 | XmlDocument d = new XmlDocument(); | 4261 | { |
4262 | UUID asset; | 4262 | string xmlData; |
4263 | if (itemData.TryGetValue(itemID, out xmlData)) | 4263 | XmlDocument d = new XmlDocument(); |
4264 | { | 4264 | UUID asset; |
4265 | d.LoadXml(xmlData); | 4265 | if (itemData.TryGetValue(itemID, out xmlData)) |
4266 | m_log.InfoFormat("[ATTACHMENT]: Found saved state for item {0}, loading it", itemID); | 4266 | { |
4267 | 4267 | d.LoadXml(xmlData); | |
4268 | // Rez from inventory | 4268 | m_log.InfoFormat("[ATTACHMENT]: Found saved state for item {0}, loading it", itemID); |
4269 | asset | 4269 | |
4270 | = m_scene.AttachmentsModule.RezSingleAttachmentFromInventory(ControllingClient, itemID, (uint)p, true, d); | 4270 | // Rez from inventory |
4271 | 4271 | asset | |
4272 | } | 4272 | = m_scene.AttachmentsModule.RezSingleAttachmentFromInventory(ControllingClient, itemID, (uint)p, true, d); |
4273 | else | 4273 | |
4274 | { | 4274 | } |
4275 | // Rez from inventory (with a null doc to let | 4275 | else |
4276 | // CHANGED_OWNER happen) | 4276 | { |
4277 | asset | 4277 | // Rez from inventory (with a null doc to let |
4278 | = m_scene.AttachmentsModule.RezSingleAttachmentFromInventory(ControllingClient, itemID, (uint)p, true, null); | 4278 | // CHANGED_OWNER happen) |
4279 | } | 4279 | asset |
4280 | 4280 | = m_scene.AttachmentsModule.RezSingleAttachmentFromInventory(ControllingClient, itemID, (uint)p, true, null); | |
4281 | m_log.InfoFormat( | 4281 | } |
4282 | "[ATTACHMENT]: Rezzed attachment in point {0} from item {1} and asset {2} ({3})", | 4282 | |
4283 | p, itemID, assetID, asset); | 4283 | m_log.InfoFormat( |
4284 | } | 4284 | "[ATTACHMENT]: Rezzed attachment in point {0} from item {1} and asset {2} ({3})", |
4285 | catch (Exception e) | 4285 | p, itemID, assetID, asset); |
4286 | { | 4286 | } |
4287 | m_log.ErrorFormat("[ATTACHMENT]: Unable to rez attachment: {0}", e.ToString()); | 4287 | catch (Exception e) |
4288 | } | 4288 | { |
4289 | } | 4289 | m_log.ErrorFormat("[ATTACHMENT]: Unable to rez attachment: {0}", e.ToString()); |
4290 | } | 4290 | } |
4291 | 4291 | } | |
4292 | private void ReprioritizeUpdates() | 4292 | } |
4293 | { | 4293 | |
4294 | if (Scene.IsReprioritizationEnabled && Scene.UpdatePrioritizationScheme != UpdatePrioritizationSchemes.Time) | 4294 | private void ReprioritizeUpdates() |
4295 | { | 4295 | { |
4296 | lock (m_reprioritization_timer) | 4296 | if (Scene.IsReprioritizationEnabled && Scene.UpdatePrioritizationScheme != UpdatePrioritizationSchemes.Time) |
4297 | { | 4297 | { |
4298 | if (!m_reprioritizing) | 4298 | lock (m_reprioritization_timer) |
4299 | m_reprioritization_timer.Enabled = m_reprioritizing = true; | 4299 | { |
4300 | else | 4300 | if (!m_reprioritizing) |
4301 | m_reprioritization_called = true; | 4301 | m_reprioritization_timer.Enabled = m_reprioritizing = true; |
4302 | } | 4302 | else |
4303 | } | 4303 | m_reprioritization_called = true; |
4304 | } | 4304 | } |
4305 | 4305 | } | |
4306 | private void Reprioritize(object sender, ElapsedEventArgs e) | 4306 | } |
4307 | { | 4307 | |
4308 | m_controllingClient.ReprioritizeUpdates(); | 4308 | private void Reprioritize(object sender, ElapsedEventArgs e) |
4309 | 4309 | { | |
4310 | lock (m_reprioritization_timer) | 4310 | m_controllingClient.ReprioritizeUpdates(); |
4311 | { | 4311 | |
4312 | m_reprioritization_timer.Enabled = m_reprioritizing = m_reprioritization_called; | 4312 | lock (m_reprioritization_timer) |
4313 | m_reprioritization_called = false; | 4313 | { |
4314 | } | 4314 | m_reprioritization_timer.Enabled = m_reprioritizing = m_reprioritization_called; |
4315 | } | 4315 | m_reprioritization_called = false; |
4316 | 4316 | } | |
4317 | private Vector3 Quat2Euler(Quaternion rot){ | 4317 | } |
4318 | float x = Utils.RAD_TO_DEG * (float)Math.Atan2((double)((2.0f * rot.X * rot.W) - (2.0f * rot.Y * rot.Z)) , | 4318 | |
4319 | (double)(1 - (2.0f * rot.X * rot.X) - (2.0f * rot.Z * rot.Z))); | 4319 | private Vector3 Quat2Euler(Quaternion rot){ |
4320 | float y = Utils.RAD_TO_DEG * (float)Math.Asin ((double)((2.0f * rot.X * rot.Y) + (2.0f * rot.Z * rot.W))); | 4320 | float x = Utils.RAD_TO_DEG * (float)Math.Atan2((double)((2.0f * rot.X * rot.W) - (2.0f * rot.Y * rot.Z)) , |
4321 | float z = Utils.RAD_TO_DEG * (float)Math.Atan2(((double)(2.0f * rot.Y * rot.W) - (2.0f * rot.X * rot.Z)) , | 4321 | (double)(1 - (2.0f * rot.X * rot.X) - (2.0f * rot.Z * rot.Z))); |
4322 | (double)(1 - (2.0f * rot.Y * rot.Y) - (2.0f * rot.Z * rot.Z))); | 4322 | float y = Utils.RAD_TO_DEG * (float)Math.Asin ((double)((2.0f * rot.X * rot.Y) + (2.0f * rot.Z * rot.W))); |
4323 | return(new Vector3(x,y,z)); | 4323 | float z = Utils.RAD_TO_DEG * (float)Math.Atan2(((double)(2.0f * rot.Y * rot.W) - (2.0f * rot.X * rot.Z)) , |
4324 | } | 4324 | (double)(1 - (2.0f * rot.Y * rot.Y) - (2.0f * rot.Z * rot.Z))); |
4325 | 4325 | return(new Vector3(x,y,z)); | |
4326 | 4326 | } | |
4327 | } | 4327 | |
4328 | } | 4328 | |
4329 | } | ||
4330 | } | ||
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Constants.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Constants.cs index 5da6bb9..6e8435d 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Constants.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Constants.cs | |||
@@ -279,6 +279,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase | |||
279 | public const int CHANGED_REGION_START = 1024; //LL Changed the constant from CHANGED_REGION_RESTART | 279 | public const int CHANGED_REGION_START = 1024; //LL Changed the constant from CHANGED_REGION_RESTART |
280 | public const int CHANGED_MEDIA = 2048; | 280 | public const int CHANGED_MEDIA = 2048; |
281 | public const int CHANGED_ANIMATION = 16384; | 281 | public const int CHANGED_ANIMATION = 16384; |
282 | public const int CHANGED_POSITION = 32768; | ||
282 | public const int TYPE_INVALID = 0; | 283 | public const int TYPE_INVALID = 0; |
283 | public const int TYPE_INTEGER = 1; | 284 | public const int TYPE_INTEGER = 1; |
284 | public const int TYPE_FLOAT = 2; | 285 | public const int TYPE_FLOAT = 2; |
diff --git a/bin/ICSharpCode.SharpZipLib.xml b/bin/ICSharpCode.SharpZipLib.xml deleted file mode 100644 index 98cb51e..0000000 --- a/bin/ICSharpCode.SharpZipLib.xml +++ /dev/null | |||
@@ -1,9055 +0,0 @@ | |||
1 | <?xml version="1.0"?> | ||
2 | <doc> | ||
3 | <assembly> | ||
4 | <name>ICSharpCode.SharpZipLib</name> | ||
5 | </assembly> | ||
6 | <members> | ||
7 | <member name="T:ICSharpCode.SharpZipLib.Zip.FastZipEvents"> | ||
8 | <summary> | ||
9 | FastZipEvents supports all events applicable to <see cref="T:ICSharpCode.SharpZipLib.Zip.FastZip">FastZip</see> operations. | ||
10 | </summary> | ||
11 | </member> | ||
12 | <member name="F:ICSharpCode.SharpZipLib.Zip.FastZipEvents.ProcessDirectory"> | ||
13 | <summary> | ||
14 | Delegate to invoke when processing directories. | ||
15 | </summary> | ||
16 | </member> | ||
17 | <member name="F:ICSharpCode.SharpZipLib.Zip.FastZipEvents.ProcessFile"> | ||
18 | <summary> | ||
19 | Delegate to invoke when processing files. | ||
20 | </summary> | ||
21 | </member> | ||
22 | <member name="F:ICSharpCode.SharpZipLib.Zip.FastZipEvents.Progress"> | ||
23 | <summary> | ||
24 | Delegate to invoke during processing of files. | ||
25 | </summary> | ||
26 | </member> | ||
27 | <member name="F:ICSharpCode.SharpZipLib.Zip.FastZipEvents.CompletedFile"> | ||
28 | <summary> | ||
29 | Delegate to invoke when processing for a file has been completed. | ||
30 | </summary> | ||
31 | </member> | ||
32 | <member name="F:ICSharpCode.SharpZipLib.Zip.FastZipEvents.DirectoryFailure"> | ||
33 | <summary> | ||
34 | Delegate to invoke when processing directory failures. | ||
35 | </summary> | ||
36 | </member> | ||
37 | <member name="F:ICSharpCode.SharpZipLib.Zip.FastZipEvents.FileFailure"> | ||
38 | <summary> | ||
39 | Delegate to invoke when processing file failures. | ||
40 | </summary> | ||
41 | </member> | ||
42 | <member name="M:ICSharpCode.SharpZipLib.Zip.FastZipEvents.OnDirectoryFailure(System.String,System.Exception)"> | ||
43 | <summary> | ||
44 | Raise the <see cref="F:ICSharpCode.SharpZipLib.Zip.FastZipEvents.DirectoryFailure">directory failure</see> event. | ||
45 | </summary> | ||
46 | <param name="directory">The directory causing the failure.</param> | ||
47 | <param name="e">The exception for this event.</param> | ||
48 | <returns>A boolean indicating if execution should continue or not.</returns> | ||
49 | </member> | ||
50 | <member name="M:ICSharpCode.SharpZipLib.Zip.FastZipEvents.OnFileFailure(System.String,System.Exception)"> | ||
51 | <summary> | ||
52 | Raises the <see cref="F:ICSharpCode.SharpZipLib.Zip.FastZipEvents.FileFailure">file failure delegate</see>. | ||
53 | </summary> | ||
54 | <param name="file">The file causing the failure.</param> | ||
55 | <param name="e">The exception for this failure.</param> | ||
56 | <returns>A boolean indicating if execution should continue or not.</returns> | ||
57 | </member> | ||
58 | <member name="M:ICSharpCode.SharpZipLib.Zip.FastZipEvents.OnProcessFile(System.String)"> | ||
59 | <summary> | ||
60 | Fires the <see cref="F:ICSharpCode.SharpZipLib.Zip.FastZipEvents.ProcessFile">Process File delegate</see>. | ||
61 | </summary> | ||
62 | <param name="file">The file being processed.</param> | ||
63 | <returns>A boolean indicating if execution should continue or not.</returns> | ||
64 | </member> | ||
65 | <member name="M:ICSharpCode.SharpZipLib.Zip.FastZipEvents.OnCompletedFile(System.String)"> | ||
66 | <summary> | ||
67 | Fires the CompletedFile delegate | ||
68 | </summary> | ||
69 | <param name="file">The file whose processing has been completed.</param> | ||
70 | <returns>A boolean indicating if execution should continue or not.</returns> | ||
71 | </member> | ||
72 | <member name="M:ICSharpCode.SharpZipLib.Zip.FastZipEvents.OnProcessDirectory(System.String,System.Boolean)"> | ||
73 | <summary> | ||
74 | Fires the <see cref="F:ICSharpCode.SharpZipLib.Zip.FastZipEvents.ProcessDirectory">process directory</see> delegate. | ||
75 | </summary> | ||
76 | <param name="directory">The directory being processed.</param> | ||
77 | <param name="hasMatchingFiles">Flag indicating if the directory has matching files as determined by the current filter.</param> | ||
78 | <returns>A <see cref="T:System.Boolean"/> of true if the operation should continue; false otherwise.</returns> | ||
79 | </member> | ||
80 | <member name="P:ICSharpCode.SharpZipLib.Zip.FastZipEvents.ProgressInterval"> | ||
81 | <summary> | ||
82 | The minimum timespan between <see cref="F:ICSharpCode.SharpZipLib.Zip.FastZipEvents.Progress"/> events. | ||
83 | </summary> | ||
84 | <value>The minimum period of time between <see cref="F:ICSharpCode.SharpZipLib.Zip.FastZipEvents.Progress"/> events.</value> | ||
85 | <seealso cref="F:ICSharpCode.SharpZipLib.Zip.FastZipEvents.Progress"/> | ||
86 | </member> | ||
87 | <member name="T:ICSharpCode.SharpZipLib.Zip.FastZip"> | ||
88 | <summary> | ||
89 | FastZip provides facilities for creating and extracting zip files. | ||
90 | </summary> | ||
91 | </member> | ||
92 | <member name="M:ICSharpCode.SharpZipLib.Zip.FastZip.#ctor"> | ||
93 | <summary> | ||
94 | Initialise a default instance of <see cref="T:ICSharpCode.SharpZipLib.Zip.FastZip"/>. | ||
95 | </summary> | ||
96 | </member> | ||
97 | <member name="M:ICSharpCode.SharpZipLib.Zip.FastZip.#ctor(ICSharpCode.SharpZipLib.Zip.FastZipEvents)"> | ||
98 | <summary> | ||
99 | Initialise a new instance of <see cref="T:ICSharpCode.SharpZipLib.Zip.FastZip"/> | ||
100 | </summary> | ||
101 | <param name="events">The <see cref="T:ICSharpCode.SharpZipLib.Zip.FastZipEvents">events</see> to use during operations.</param> | ||
102 | </member> | ||
103 | <member name="M:ICSharpCode.SharpZipLib.Zip.FastZip.CreateZip(System.String,System.String,System.Boolean,System.String,System.String)"> | ||
104 | <summary> | ||
105 | Create a zip file. | ||
106 | </summary> | ||
107 | <param name="zipFileName">The name of the zip file to create.</param> | ||
108 | <param name="sourceDirectory">The directory to source files from.</param> | ||
109 | <param name="recurse">True to recurse directories, false for no recursion.</param> | ||
110 | <param name="fileFilter">The <see cref="T:ICSharpCode.SharpZipLib.Core.PathFilter">file filter</see> to apply.</param> | ||
111 | <param name="directoryFilter">The <see cref="T:ICSharpCode.SharpZipLib.Core.PathFilter">directory filter</see> to apply.</param> | ||
112 | </member> | ||
113 | <member name="M:ICSharpCode.SharpZipLib.Zip.FastZip.CreateZip(System.String,System.String,System.Boolean,System.String)"> | ||
114 | <summary> | ||
115 | Create a zip file/archive. | ||
116 | </summary> | ||
117 | <param name="zipFileName">The name of the zip file to create.</param> | ||
118 | <param name="sourceDirectory">The directory to obtain files and directories from.</param> | ||
119 | <param name="recurse">True to recurse directories, false for no recursion.</param> | ||
120 | <param name="fileFilter">The file filter to apply.</param> | ||
121 | </member> | ||
122 | <member name="M:ICSharpCode.SharpZipLib.Zip.FastZip.CreateZip(System.IO.Stream,System.String,System.Boolean,System.String,System.String)"> | ||
123 | <summary> | ||
124 | Create a zip archive sending output to the <paramref name="outputStream"/> passed. | ||
125 | </summary> | ||
126 | <param name="outputStream">The stream to write archive data to.</param> | ||
127 | <param name="sourceDirectory">The directory to source files from.</param> | ||
128 | <param name="recurse">True to recurse directories, false for no recursion.</param> | ||
129 | <param name="fileFilter">The <see cref="T:ICSharpCode.SharpZipLib.Core.PathFilter">file filter</see> to apply.</param> | ||
130 | <param name="directoryFilter">The <see cref="T:ICSharpCode.SharpZipLib.Core.PathFilter">directory filter</see> to apply.</param> | ||
131 | </member> | ||
132 | <member name="M:ICSharpCode.SharpZipLib.Zip.FastZip.ExtractZip(System.String,System.String,System.String)"> | ||
133 | <summary> | ||
134 | Extract the contents of a zip file. | ||
135 | </summary> | ||
136 | <param name="zipFileName">The zip file to extract from.</param> | ||
137 | <param name="targetDirectory">The directory to save extracted information in.</param> | ||
138 | <param name="fileFilter">A filter to apply to files.</param> | ||
139 | </member> | ||
140 | <member name="M:ICSharpCode.SharpZipLib.Zip.FastZip.ExtractZip(System.String,System.String,ICSharpCode.SharpZipLib.Zip.FastZip.Overwrite,ICSharpCode.SharpZipLib.Zip.FastZip.ConfirmOverwriteDelegate,System.String,System.String,System.Boolean)"> | ||
141 | <summary> | ||
142 | Extract the contents of a zip file. | ||
143 | </summary> | ||
144 | <param name="zipFileName">The zip file to extract from.</param> | ||
145 | <param name="targetDirectory">The directory to save extracted information in.</param> | ||
146 | <param name="overwrite">The style of <see cref="T:ICSharpCode.SharpZipLib.Zip.FastZip.Overwrite">overwriting</see> to apply.</param> | ||
147 | <param name="confirmDelegate">A delegate to invoke when confirming overwriting.</param> | ||
148 | <param name="fileFilter">A filter to apply to files.</param> | ||
149 | <param name="directoryFilter">A filter to apply to directories.</param> | ||
150 | <param name="restoreDateTime">Flag indicating wether to restore the date and time for extracted files.</param> | ||
151 | </member> | ||
152 | <member name="P:ICSharpCode.SharpZipLib.Zip.FastZip.CreateEmptyDirectories"> | ||
153 | <summary> | ||
154 | Get/set a value indicating wether empty directories should be created. | ||
155 | </summary> | ||
156 | </member> | ||
157 | <member name="P:ICSharpCode.SharpZipLib.Zip.FastZip.Password"> | ||
158 | <summary> | ||
159 | Get / set the password value. | ||
160 | </summary> | ||
161 | </member> | ||
162 | <member name="P:ICSharpCode.SharpZipLib.Zip.FastZip.NameTransform"> | ||
163 | <summary> | ||
164 | Get or set the <see cref="T:ICSharpCode.SharpZipLib.Core.INameTransform"></see> active when creating Zip files. | ||
165 | </summary> | ||
166 | <seealso cref="P:ICSharpCode.SharpZipLib.Zip.FastZip.EntryFactory"></seealso> | ||
167 | </member> | ||
168 | <member name="P:ICSharpCode.SharpZipLib.Zip.FastZip.EntryFactory"> | ||
169 | <summary> | ||
170 | Get or set the <see cref="T:ICSharpCode.SharpZipLib.Zip.IEntryFactory"></see> active when creating Zip files. | ||
171 | </summary> | ||
172 | </member> | ||
173 | <member name="P:ICSharpCode.SharpZipLib.Zip.FastZip.RestoreDateTimeOnExtract"> | ||
174 | <summary> | ||
175 | Get/set a value indicating wether file dates and times should | ||
176 | be restored when extracting files from an archive. | ||
177 | </summary> | ||
178 | <remarks>The default value is false.</remarks> | ||
179 | </member> | ||
180 | <member name="P:ICSharpCode.SharpZipLib.Zip.FastZip.RestoreAttributesOnExtract"> | ||
181 | <summary> | ||
182 | Get/set a value indicating wether file attributes should | ||
183 | be restored during extract operations | ||
184 | </summary> | ||
185 | </member> | ||
186 | <member name="T:ICSharpCode.SharpZipLib.Zip.FastZip.Overwrite"> | ||
187 | <summary> | ||
188 | Defines the desired handling when overwriting files during extraction. | ||
189 | </summary> | ||
190 | </member> | ||
191 | <member name="F:ICSharpCode.SharpZipLib.Zip.FastZip.Overwrite.Prompt"> | ||
192 | <summary> | ||
193 | Prompt the user to confirm overwriting | ||
194 | </summary> | ||
195 | </member> | ||
196 | <member name="F:ICSharpCode.SharpZipLib.Zip.FastZip.Overwrite.Never"> | ||
197 | <summary> | ||
198 | Never overwrite files. | ||
199 | </summary> | ||
200 | </member> | ||
201 | <member name="F:ICSharpCode.SharpZipLib.Zip.FastZip.Overwrite.Always"> | ||
202 | <summary> | ||
203 | Always overwrite files. | ||
204 | </summary> | ||
205 | </member> | ||
206 | <member name="T:ICSharpCode.SharpZipLib.Zip.FastZip.ConfirmOverwriteDelegate"> | ||
207 | <summary> | ||
208 | Delegate called when confirming overwriting of files. | ||
209 | </summary> | ||
210 | </member> | ||
211 | <member name="T:ICSharpCode.SharpZipLib.Core.NameFilter"> | ||
212 | <summary> | ||
213 | NameFilter is a string matching class which allows for both positive and negative | ||
214 | matching. | ||
215 | A filter is a sequence of independant <see cref="T:System.Text.RegularExpressions.Regex">regular expressions</see> separated by semi-colons ';' | ||
216 | Each expression can be prefixed by a plus '+' sign or a minus '-' sign to denote the expression | ||
217 | is intended to include or exclude names. If neither a plus or minus sign is found include is the default | ||
218 | A given name is tested for inclusion before checking exclusions. Only names matching an include spec | ||
219 | and not matching an exclude spec are deemed to match the filter. | ||
220 | An empty filter matches any name. | ||
221 | </summary> | ||
222 | <example>The following expression includes all name ending in '.dat' with the exception of 'dummy.dat' | ||
223 | "+\.dat$;-^dummy\.dat$" | ||
224 | </example> | ||
225 | </member> | ||
226 | <member name="T:ICSharpCode.SharpZipLib.Core.IScanFilter"> | ||
227 | <summary> | ||
228 | Scanning filters support filtering of names. | ||
229 | </summary> | ||
230 | </member> | ||
231 | <member name="M:ICSharpCode.SharpZipLib.Core.IScanFilter.IsMatch(System.String)"> | ||
232 | <summary> | ||
233 | Test a name to see if it 'matches' the filter. | ||
234 | </summary> | ||
235 | <param name="name">The name to test.</param> | ||
236 | <returns>Returns true if the name matches the filter, false if it does not match.</returns> | ||
237 | </member> | ||
238 | <member name="M:ICSharpCode.SharpZipLib.Core.NameFilter.#ctor(System.String)"> | ||
239 | <summary> | ||
240 | Construct an instance based on the filter expression passed | ||
241 | </summary> | ||
242 | <param name="filter">The filter expression.</param> | ||
243 | </member> | ||
244 | <member name="M:ICSharpCode.SharpZipLib.Core.NameFilter.IsValidExpression(System.String)"> | ||
245 | <summary> | ||
246 | Test a string to see if it is a valid regular expression. | ||
247 | </summary> | ||
248 | <param name="expression">The expression to test.</param> | ||
249 | <returns>True if expression is a valid <see cref="T:System.Text.RegularExpressions.Regex"/> false otherwise.</returns> | ||
250 | </member> | ||
251 | <member name="M:ICSharpCode.SharpZipLib.Core.NameFilter.IsValidFilterExpression(System.String)"> | ||
252 | <summary> | ||
253 | Test an expression to see if it is valid as a filter. | ||
254 | </summary> | ||
255 | <param name="toTest">The filter expression to test.</param> | ||
256 | <returns>True if the expression is valid, false otherwise.</returns> | ||
257 | </member> | ||
258 | <member name="M:ICSharpCode.SharpZipLib.Core.NameFilter.ToString"> | ||
259 | <summary> | ||
260 | Convert this filter to its string equivalent. | ||
261 | </summary> | ||
262 | <returns>The string equivalent for this filter.</returns> | ||
263 | </member> | ||
264 | <member name="M:ICSharpCode.SharpZipLib.Core.NameFilter.IsIncluded(System.String)"> | ||
265 | <summary> | ||
266 | Test a value to see if it is included by the filter. | ||
267 | </summary> | ||
268 | <param name="name">The value to test.</param> | ||
269 | <returns>True if the value is included, false otherwise.</returns> | ||
270 | </member> | ||
271 | <member name="M:ICSharpCode.SharpZipLib.Core.NameFilter.IsExcluded(System.String)"> | ||
272 | <summary> | ||
273 | Test a value to see if it is excluded by the filter. | ||
274 | </summary> | ||
275 | <param name="name">The value to test.</param> | ||
276 | <returns>True if the value is excluded, false otherwise.</returns> | ||
277 | </member> | ||
278 | <member name="M:ICSharpCode.SharpZipLib.Core.NameFilter.IsMatch(System.String)"> | ||
279 | <summary> | ||
280 | Test a value to see if it matches the filter. | ||
281 | </summary> | ||
282 | <param name="name">The value to test.</param> | ||
283 | <returns>True if the value matches, false otherwise.</returns> | ||
284 | </member> | ||
285 | <member name="M:ICSharpCode.SharpZipLib.Core.NameFilter.Compile"> | ||
286 | <summary> | ||
287 | Compile this filter. | ||
288 | </summary> | ||
289 | </member> | ||
290 | <member name="T:ICSharpCode.SharpZipLib.Zip.Compression.InflaterHuffmanTree"> | ||
291 | <summary> | ||
292 | Huffman tree used for inflation | ||
293 | </summary> | ||
294 | </member> | ||
295 | <member name="F:ICSharpCode.SharpZipLib.Zip.Compression.InflaterHuffmanTree.defLitLenTree"> | ||
296 | <summary> | ||
297 | Literal length tree | ||
298 | </summary> | ||
299 | </member> | ||
300 | <member name="F:ICSharpCode.SharpZipLib.Zip.Compression.InflaterHuffmanTree.defDistTree"> | ||
301 | <summary> | ||
302 | Distance tree | ||
303 | </summary> | ||
304 | </member> | ||
305 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.InflaterHuffmanTree.#ctor(System.Byte[])"> | ||
306 | <summary> | ||
307 | Constructs a Huffman tree from the array of code lengths. | ||
308 | </summary> | ||
309 | <param name = "codeLengths"> | ||
310 | the array of code lengths | ||
311 | </param> | ||
312 | </member> | ||
313 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.InflaterHuffmanTree.GetSymbol(ICSharpCode.SharpZipLib.Zip.Compression.Streams.StreamManipulator)"> | ||
314 | <summary> | ||
315 | Reads the next symbol from input. The symbol is encoded using the | ||
316 | huffman tree. | ||
317 | </summary> | ||
318 | <param name="input"> | ||
319 | input the input source. | ||
320 | </param> | ||
321 | <returns> | ||
322 | the next symbol, or -1 if not enough input is available. | ||
323 | </returns> | ||
324 | </member> | ||
325 | <member name="T:ICSharpCode.SharpZipLib.Zip.Compression.PendingBuffer"> | ||
326 | <summary> | ||
327 | This class is general purpose class for writing data to a buffer. | ||
328 | |||
329 | It allows you to write bits as well as bytes | ||
330 | Based on DeflaterPending.java | ||
331 | |||
332 | author of the original java version : Jochen Hoenicke | ||
333 | </summary> | ||
334 | </member> | ||
335 | <member name="F:ICSharpCode.SharpZipLib.Zip.Compression.PendingBuffer.buffer_"> | ||
336 | <summary> | ||
337 | Internal work buffer | ||
338 | </summary> | ||
339 | </member> | ||
340 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.PendingBuffer.#ctor"> | ||
341 | <summary> | ||
342 | construct instance using default buffer size of 4096 | ||
343 | </summary> | ||
344 | </member> | ||
345 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.PendingBuffer.#ctor(System.Int32)"> | ||
346 | <summary> | ||
347 | construct instance using specified buffer size | ||
348 | </summary> | ||
349 | <param name="bufferSize"> | ||
350 | size to use for internal buffer | ||
351 | </param> | ||
352 | </member> | ||
353 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.PendingBuffer.Reset"> | ||
354 | <summary> | ||
355 | Clear internal state/buffers | ||
356 | </summary> | ||
357 | </member> | ||
358 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.PendingBuffer.WriteByte(System.Int32)"> | ||
359 | <summary> | ||
360 | Write a byte to buffer | ||
361 | </summary> | ||
362 | <param name="value"> | ||
363 | The value to write | ||
364 | </param> | ||
365 | </member> | ||
366 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.PendingBuffer.WriteShort(System.Int32)"> | ||
367 | <summary> | ||
368 | Write a short value to buffer LSB first | ||
369 | </summary> | ||
370 | <param name="value"> | ||
371 | The value to write. | ||
372 | </param> | ||
373 | </member> | ||
374 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.PendingBuffer.WriteInt(System.Int32)"> | ||
375 | <summary> | ||
376 | write an integer LSB first | ||
377 | </summary> | ||
378 | <param name="value">The value to write.</param> | ||
379 | </member> | ||
380 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.PendingBuffer.WriteBlock(System.Byte[],System.Int32,System.Int32)"> | ||
381 | <summary> | ||
382 | Write a block of data to buffer | ||
383 | </summary> | ||
384 | <param name="block">data to write</param> | ||
385 | <param name="offset">offset of first byte to write</param> | ||
386 | <param name="length">number of bytes to write</param> | ||
387 | </member> | ||
388 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.PendingBuffer.AlignToByte"> | ||
389 | <summary> | ||
390 | Align internal buffer on a byte boundary | ||
391 | </summary> | ||
392 | </member> | ||
393 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.PendingBuffer.WriteBits(System.Int32,System.Int32)"> | ||
394 | <summary> | ||
395 | Write bits to internal buffer | ||
396 | </summary> | ||
397 | <param name="b">source of bits</param> | ||
398 | <param name="count">number of bits to write</param> | ||
399 | </member> | ||
400 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.PendingBuffer.WriteShortMSB(System.Int32)"> | ||
401 | <summary> | ||
402 | Write a short value to internal buffer most significant byte first | ||
403 | </summary> | ||
404 | <param name="s">value to write</param> | ||
405 | </member> | ||
406 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.PendingBuffer.Flush(System.Byte[],System.Int32,System.Int32)"> | ||
407 | <summary> | ||
408 | Flushes the pending buffer into the given output array. If the | ||
409 | output array is to small, only a partial flush is done. | ||
410 | </summary> | ||
411 | <param name="output">The output array.</param> | ||
412 | <param name="offset">The offset into output array.</param> | ||
413 | <param name="length">The maximum number of bytes to store.</param> | ||
414 | <returns>The number of bytes flushed.</returns> | ||
415 | </member> | ||
416 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.PendingBuffer.ToByteArray"> | ||
417 | <summary> | ||
418 | Convert internal buffer to byte array. | ||
419 | Buffer is empty on completion | ||
420 | </summary> | ||
421 | <returns> | ||
422 | The internal buffer contents converted to a byte array. | ||
423 | </returns> | ||
424 | </member> | ||
425 | <member name="P:ICSharpCode.SharpZipLib.Zip.Compression.PendingBuffer.BitCount"> | ||
426 | <summary> | ||
427 | The number of bits written to the buffer | ||
428 | </summary> | ||
429 | </member> | ||
430 | <member name="P:ICSharpCode.SharpZipLib.Zip.Compression.PendingBuffer.IsFlushed"> | ||
431 | <summary> | ||
432 | Indicates if buffer has been flushed | ||
433 | </summary> | ||
434 | </member> | ||
435 | <member name="T:ICSharpCode.SharpZipLib.Tar.ProgressMessageHandler"> | ||
436 | <summary> | ||
437 | Used to advise clients of 'events' while processing archives | ||
438 | </summary> | ||
439 | </member> | ||
440 | <member name="T:ICSharpCode.SharpZipLib.Tar.TarArchive"> | ||
441 | <summary> | ||
442 | The TarArchive class implements the concept of a | ||
443 | 'Tape Archive'. A tar archive is a series of entries, each of | ||
444 | which represents a file system object. Each entry in | ||
445 | the archive consists of a header block followed by 0 or more data blocks. | ||
446 | Directory entries consist only of the header block, and are followed by entries | ||
447 | for the directory's contents. File entries consist of a | ||
448 | header followed by the number of blocks needed to | ||
449 | contain the file's contents. All entries are written on | ||
450 | block boundaries. Blocks are 512 bytes long. | ||
451 | |||
452 | TarArchives are instantiated in either read or write mode, | ||
453 | based upon whether they are instantiated with an InputStream | ||
454 | or an OutputStream. Once instantiated TarArchives read/write | ||
455 | mode can not be changed. | ||
456 | |||
457 | There is currently no support for random access to tar archives. | ||
458 | However, it seems that subclassing TarArchive, and using the | ||
459 | TarBuffer.CurrentRecord and TarBuffer.CurrentBlock | ||
460 | properties, this would be rather trivial. | ||
461 | </summary> | ||
462 | </member> | ||
463 | <member name="M:ICSharpCode.SharpZipLib.Tar.TarArchive.OnProgressMessageEvent(ICSharpCode.SharpZipLib.Tar.TarEntry,System.String)"> | ||
464 | <summary> | ||
465 | Raises the ProgressMessage event | ||
466 | </summary> | ||
467 | <param name="entry">The <see cref="T:ICSharpCode.SharpZipLib.Tar.TarEntry">TarEntry</see> for this event</param> | ||
468 | <param name="message">message for this event. Null is no message</param> | ||
469 | </member> | ||
470 | <member name="M:ICSharpCode.SharpZipLib.Tar.TarArchive.#ctor"> | ||
471 | <summary> | ||
472 | Constructor for a default <see cref="T:ICSharpCode.SharpZipLib.Tar.TarArchive"/>. | ||
473 | </summary> | ||
474 | </member> | ||
475 | <member name="M:ICSharpCode.SharpZipLib.Tar.TarArchive.#ctor(ICSharpCode.SharpZipLib.Tar.TarInputStream)"> | ||
476 | <summary> | ||
477 | Initalise a TarArchive for input. | ||
478 | </summary> | ||
479 | <param name="stream">The <see cref="T:ICSharpCode.SharpZipLib.Tar.TarInputStream"/> to use for input.</param> | ||
480 | </member> | ||
481 | <member name="M:ICSharpCode.SharpZipLib.Tar.TarArchive.#ctor(ICSharpCode.SharpZipLib.Tar.TarOutputStream)"> | ||
482 | <summary> | ||
483 | Initialise a TarArchive for output. | ||
484 | </summary> | ||
485 | <param name="stream">The <see cref="T:ICSharpCode.SharpZipLib.Tar.TarOutputStream"/> to use for output.</param> | ||
486 | </member> | ||
487 | <member name="M:ICSharpCode.SharpZipLib.Tar.TarArchive.CreateInputTarArchive(System.IO.Stream)"> | ||
488 | <summary> | ||
489 | The InputStream based constructors create a TarArchive for the | ||
490 | purposes of extracting or listing a tar archive. Thus, use | ||
491 | these constructors when you wish to extract files from or list | ||
492 | the contents of an existing tar archive. | ||
493 | </summary> | ||
494 | <param name="inputStream">The stream to retrieve archive data from.</param> | ||
495 | <returns>Returns a new <see cref="T:ICSharpCode.SharpZipLib.Tar.TarArchive"/> suitable for reading from.</returns> | ||
496 | </member> | ||
497 | <member name="M:ICSharpCode.SharpZipLib.Tar.TarArchive.CreateInputTarArchive(System.IO.Stream,System.Int32)"> | ||
498 | <summary> | ||
499 | Create TarArchive for reading setting block factor | ||
500 | </summary> | ||
501 | <param name="inputStream">Stream for tar archive contents</param> | ||
502 | <param name="blockFactor">The blocking factor to apply</param> | ||
503 | <returns>Returns a <see cref="T:ICSharpCode.SharpZipLib.Tar.TarArchive"/> suitable for reading.</returns> | ||
504 | </member> | ||
505 | <member name="M:ICSharpCode.SharpZipLib.Tar.TarArchive.CreateOutputTarArchive(System.IO.Stream)"> | ||
506 | <summary> | ||
507 | Create a TarArchive for writing to, using the default blocking factor | ||
508 | </summary> | ||
509 | <param name="outputStream">The <see cref="T:System.IO.Stream"/> to write to</param> | ||
510 | <returns>Returns a <see cref="T:ICSharpCode.SharpZipLib.Tar.TarArchive"/> suitable for writing.</returns> | ||
511 | </member> | ||
512 | <member name="M:ICSharpCode.SharpZipLib.Tar.TarArchive.CreateOutputTarArchive(System.IO.Stream,System.Int32)"> | ||
513 | <summary> | ||
514 | Create a TarArchive for writing to | ||
515 | </summary> | ||
516 | <param name="outputStream">The stream to write to</param> | ||
517 | <param name="blockFactor">The blocking factor to use for buffering.</param> | ||
518 | <returns>Returns a <see cref="T:ICSharpCode.SharpZipLib.Tar.TarArchive"/> suitable for writing.</returns> | ||
519 | </member> | ||
520 | <member name="M:ICSharpCode.SharpZipLib.Tar.TarArchive.SetKeepOldFiles(System.Boolean)"> | ||
521 | <summary> | ||
522 | Set the flag that determines whether existing files are | ||
523 | kept, or overwritten during extraction. | ||
524 | </summary> | ||
525 | <param name="keepOldFiles"> | ||
526 | If true, do not overwrite existing files. | ||
527 | </param> | ||
528 | </member> | ||
529 | <member name="M:ICSharpCode.SharpZipLib.Tar.TarArchive.SetAsciiTranslation(System.Boolean)"> | ||
530 | <summary> | ||
531 | Set the ascii file translation flag. | ||
532 | </summary> | ||
533 | <param name= "asciiTranslate"> | ||
534 | If true, translate ascii text files. | ||
535 | </param> | ||
536 | </member> | ||
537 | <member name="M:ICSharpCode.SharpZipLib.Tar.TarArchive.SetUserInfo(System.Int32,System.String,System.Int32,System.String)"> | ||
538 | <summary> | ||
539 | Set user and group information that will be used to fill in the | ||
540 | tar archive's entry headers. This information based on that available | ||
541 | for the linux operating system, which is not always available on other | ||
542 | operating systems. TarArchive allows the programmer to specify values | ||
543 | to be used in their place. | ||
544 | <see cref="P:ICSharpCode.SharpZipLib.Tar.TarArchive.ApplyUserInfoOverrides"/> is set to true by this call. | ||
545 | </summary> | ||
546 | <param name="userId"> | ||
547 | The user id to use in the headers. | ||
548 | </param> | ||
549 | <param name="userName"> | ||
550 | The user name to use in the headers. | ||
551 | </param> | ||
552 | <param name="groupId"> | ||
553 | The group id to use in the headers. | ||
554 | </param> | ||
555 | <param name="groupName"> | ||
556 | The group name to use in the headers. | ||
557 | </param> | ||
558 | </member> | ||
559 | <member name="M:ICSharpCode.SharpZipLib.Tar.TarArchive.CloseArchive"> | ||
560 | <summary> | ||
561 | Close the archive. | ||
562 | </summary> | ||
563 | </member> | ||
564 | <member name="M:ICSharpCode.SharpZipLib.Tar.TarArchive.ListContents"> | ||
565 | <summary> | ||
566 | Perform the "list" command for the archive contents. | ||
567 | |||
568 | NOTE That this method uses the <see cref="E:ICSharpCode.SharpZipLib.Tar.TarArchive.ProgressMessageEvent"> progress event</see> to actually list | ||
569 | the contents. If the progress display event is not set, nothing will be listed! | ||
570 | </summary> | ||
571 | </member> | ||
572 | <member name="M:ICSharpCode.SharpZipLib.Tar.TarArchive.ExtractContents(System.String)"> | ||
573 | <summary> | ||
574 | Perform the "extract" command and extract the contents of the archive. | ||
575 | </summary> | ||
576 | <param name="destinationDirectory"> | ||
577 | The destination directory into which to extract. | ||
578 | </param> | ||
579 | </member> | ||
580 | <member name="M:ICSharpCode.SharpZipLib.Tar.TarArchive.ExtractEntry(System.String,ICSharpCode.SharpZipLib.Tar.TarEntry)"> | ||
581 | <summary> | ||
582 | Extract an entry from the archive. This method assumes that the | ||
583 | tarIn stream has been properly set with a call to GetNextEntry(). | ||
584 | </summary> | ||
585 | <param name="destDir"> | ||
586 | The destination directory into which to extract. | ||
587 | </param> | ||
588 | <param name="entry"> | ||
589 | The TarEntry returned by tarIn.GetNextEntry(). | ||
590 | </param> | ||
591 | </member> | ||
592 | <member name="M:ICSharpCode.SharpZipLib.Tar.TarArchive.WriteEntry(ICSharpCode.SharpZipLib.Tar.TarEntry,System.Boolean)"> | ||
593 | <summary> | ||
594 | Write an entry to the archive. This method will call the putNextEntry | ||
595 | and then write the contents of the entry, and finally call closeEntry() | ||
596 | for entries that are files. For directories, it will call putNextEntry(), | ||
597 | and then, if the recurse flag is true, process each entry that is a | ||
598 | child of the directory. | ||
599 | </summary> | ||
600 | <param name="sourceEntry"> | ||
601 | The TarEntry representing the entry to write to the archive. | ||
602 | </param> | ||
603 | <param name="recurse"> | ||
604 | If true, process the children of directory entries. | ||
605 | </param> | ||
606 | </member> | ||
607 | <member name="M:ICSharpCode.SharpZipLib.Tar.TarArchive.InternalWriteEntry(ICSharpCode.SharpZipLib.Tar.TarEntry,System.Boolean)"> | ||
608 | <summary> | ||
609 | Write an entry to the archive. This method will call the putNextEntry | ||
610 | and then write the contents of the entry, and finally call closeEntry() | ||
611 | for entries that are files. For directories, it will call putNextEntry(), | ||
612 | and then, if the recurse flag is true, process each entry that is a | ||
613 | child of the directory. | ||
614 | </summary> | ||
615 | <param name="sourceEntry"> | ||
616 | The TarEntry representing the entry to write to the archive. | ||
617 | </param> | ||
618 | <param name="recurse"> | ||
619 | If true, process the children of directory entries. | ||
620 | </param> | ||
621 | </member> | ||
622 | <member name="M:ICSharpCode.SharpZipLib.Tar.TarArchive.Dispose(System.Boolean)"> | ||
623 | <summary> | ||
624 | Releases the unmanaged resources used by the FileStream and optionally releases the managed resources. | ||
625 | </summary> | ||
626 | <param name="disposing">true to release both managed and unmanaged resources; | ||
627 | false to release only unmanaged resources.</param> | ||
628 | </member> | ||
629 | <member name="M:ICSharpCode.SharpZipLib.Tar.TarArchive.Close"> | ||
630 | <summary> | ||
631 | Closes the archive and releases any associated resources. | ||
632 | </summary> | ||
633 | </member> | ||
634 | <member name="M:ICSharpCode.SharpZipLib.Tar.TarArchive.Finalize"> | ||
635 | <summary> | ||
636 | Ensures that resources are freed and other cleanup operations are performed | ||
637 | when the garbage collector reclaims the <see cref="T:ICSharpCode.SharpZipLib.Tar.TarArchive"/>. | ||
638 | </summary> | ||
639 | </member> | ||
640 | <member name="E:ICSharpCode.SharpZipLib.Tar.TarArchive.ProgressMessageEvent"> | ||
641 | <summary> | ||
642 | Client hook allowing detailed information to be reported during processing | ||
643 | </summary> | ||
644 | </member> | ||
645 | <member name="P:ICSharpCode.SharpZipLib.Tar.TarArchive.AsciiTranslate"> | ||
646 | <summary> | ||
647 | Get/set the ascii file translation flag. If ascii file translation | ||
648 | is true, then the file is checked to see if it a binary file or not. | ||
649 | If the flag is true and the test indicates it is ascii text | ||
650 | file, it will be translated. The translation converts the local | ||
651 | operating system's concept of line ends into the UNIX line end, | ||
652 | '\n', which is the defacto standard for a TAR archive. This makes | ||
653 | text files compatible with UNIX. | ||
654 | </summary> | ||
655 | </member> | ||
656 | <member name="P:ICSharpCode.SharpZipLib.Tar.TarArchive.PathPrefix"> | ||
657 | <summary> | ||
658 | PathPrefix is added to entry names as they are written if the value is not null. | ||
659 | A slash character is appended after PathPrefix | ||
660 | </summary> | ||
661 | </member> | ||
662 | <member name="P:ICSharpCode.SharpZipLib.Tar.TarArchive.RootPath"> | ||
663 | <summary> | ||
664 | RootPath is removed from entry names if it is found at the | ||
665 | beginning of the name. | ||
666 | </summary> | ||
667 | </member> | ||
668 | <member name="P:ICSharpCode.SharpZipLib.Tar.TarArchive.ApplyUserInfoOverrides"> | ||
669 | <summary> | ||
670 | Get or set a value indicating if overrides defined by <see cref="M:ICSharpCode.SharpZipLib.Tar.TarArchive.SetUserInfo(System.Int32,System.String,System.Int32,System.String)">SetUserInfo</see> should be applied. | ||
671 | </summary> | ||
672 | <remarks>If overrides are not applied then the values as set in each header will be used.</remarks> | ||
673 | </member> | ||
674 | <member name="P:ICSharpCode.SharpZipLib.Tar.TarArchive.UserId"> | ||
675 | <summary> | ||
676 | Get the archive user id. | ||
677 | See <see cref="P:ICSharpCode.SharpZipLib.Tar.TarArchive.ApplyUserInfoOverrides">ApplyUserInfoOverrides</see> for detail | ||
678 | on how to allow setting values on a per entry basis. | ||
679 | </summary> | ||
680 | <returns> | ||
681 | The current user id. | ||
682 | </returns> | ||
683 | </member> | ||
684 | <member name="P:ICSharpCode.SharpZipLib.Tar.TarArchive.UserName"> | ||
685 | <summary> | ||
686 | Get the archive user name. | ||
687 | See <see cref="P:ICSharpCode.SharpZipLib.Tar.TarArchive.ApplyUserInfoOverrides">ApplyUserInfoOverrides</see> for detail | ||
688 | on how to allow setting values on a per entry basis. | ||
689 | </summary> | ||
690 | <returns> | ||
691 | The current user name. | ||
692 | </returns> | ||
693 | </member> | ||
694 | <member name="P:ICSharpCode.SharpZipLib.Tar.TarArchive.GroupId"> | ||
695 | <summary> | ||
696 | Get the archive group id. | ||
697 | See <see cref="P:ICSharpCode.SharpZipLib.Tar.TarArchive.ApplyUserInfoOverrides">ApplyUserInfoOverrides</see> for detail | ||
698 | on how to allow setting values on a per entry basis. | ||
699 | </summary> | ||
700 | <returns> | ||
701 | The current group id. | ||
702 | </returns> | ||
703 | </member> | ||
704 | <member name="P:ICSharpCode.SharpZipLib.Tar.TarArchive.GroupName"> | ||
705 | <summary> | ||
706 | Get the archive group name. | ||
707 | See <see cref="P:ICSharpCode.SharpZipLib.Tar.TarArchive.ApplyUserInfoOverrides">ApplyUserInfoOverrides</see> for detail | ||
708 | on how to allow setting values on a per entry basis. | ||
709 | </summary> | ||
710 | <returns> | ||
711 | The current group name. | ||
712 | </returns> | ||
713 | </member> | ||
714 | <member name="P:ICSharpCode.SharpZipLib.Tar.TarArchive.RecordSize"> | ||
715 | <summary> | ||
716 | Get the archive's record size. Tar archives are composed of | ||
717 | a series of RECORDS each containing a number of BLOCKS. | ||
718 | This allowed tar archives to match the IO characteristics of | ||
719 | the physical device being used. Archives are expected | ||
720 | to be properly "blocked". | ||
721 | </summary> | ||
722 | <returns> | ||
723 | The record size this archive is using. | ||
724 | </returns> | ||
725 | </member> | ||
726 | <member name="T:ICSharpCode.SharpZipLib.BZip2.BZip2OutputStream"> | ||
727 | <summary> | ||
728 | An output stream that compresses into the BZip2 format | ||
729 | including file header chars into another stream. | ||
730 | </summary> | ||
731 | </member> | ||
732 | <member name="M:ICSharpCode.SharpZipLib.BZip2.BZip2OutputStream.#ctor(System.IO.Stream)"> | ||
733 | <summary> | ||
734 | Construct a default output stream with maximum block size | ||
735 | </summary> | ||
736 | <param name="stream">The stream to write BZip data onto.</param> | ||
737 | </member> | ||
738 | <member name="M:ICSharpCode.SharpZipLib.BZip2.BZip2OutputStream.#ctor(System.IO.Stream,System.Int32)"> | ||
739 | <summary> | ||
740 | Initialise a new instance of the <see cref="T:ICSharpCode.SharpZipLib.BZip2.BZip2OutputStream"></see> | ||
741 | for the specified stream, using the given blocksize. | ||
742 | </summary> | ||
743 | <param name="stream">The stream to write compressed data to.</param> | ||
744 | <param name="blockSize">The block size to use.</param> | ||
745 | <remarks> | ||
746 | Valid block sizes are in the range 1..9, with 1 giving | ||
747 | the lowest compression and 9 the highest. | ||
748 | </remarks> | ||
749 | </member> | ||
750 | <member name="M:ICSharpCode.SharpZipLib.BZip2.BZip2OutputStream.Finalize"> | ||
751 | <summary> | ||
752 | Ensures that resources are freed and other cleanup operations | ||
753 | are performed when the garbage collector reclaims the BZip2OutputStream. | ||
754 | </summary> | ||
755 | </member> | ||
756 | <member name="M:ICSharpCode.SharpZipLib.BZip2.BZip2OutputStream.Seek(System.Int64,System.IO.SeekOrigin)"> | ||
757 | <summary> | ||
758 | Sets the current position of this stream to the given value. | ||
759 | </summary> | ||
760 | <param name="offset">The point relative to the offset from which to being seeking.</param> | ||
761 | <param name="origin">The reference point from which to begin seeking.</param> | ||
762 | <returns>The new position in the stream.</returns> | ||
763 | </member> | ||
764 | <member name="M:ICSharpCode.SharpZipLib.BZip2.BZip2OutputStream.SetLength(System.Int64)"> | ||
765 | <summary> | ||
766 | Sets the length of this stream to the given value. | ||
767 | </summary> | ||
768 | <param name="value">The new stream length.</param> | ||
769 | </member> | ||
770 | <member name="M:ICSharpCode.SharpZipLib.BZip2.BZip2OutputStream.ReadByte"> | ||
771 | <summary> | ||
772 | Read a byte from the stream advancing the position. | ||
773 | </summary> | ||
774 | <returns>The byte read cast to an int; -1 if end of stream.</returns> | ||
775 | </member> | ||
776 | <member name="M:ICSharpCode.SharpZipLib.BZip2.BZip2OutputStream.Read(System.Byte[],System.Int32,System.Int32)"> | ||
777 | <summary> | ||
778 | Read a block of bytes | ||
779 | </summary> | ||
780 | <param name="buffer">The buffer to read into.</param> | ||
781 | <param name="offset">The offset in the buffer to start storing data at.</param> | ||
782 | <param name="count">The maximum number of bytes to read.</param> | ||
783 | <returns>The total number of bytes read. This might be less than the number of bytes | ||
784 | requested if that number of bytes are not currently available, or zero | ||
785 | if the end of the stream is reached.</returns> | ||
786 | </member> | ||
787 | <member name="M:ICSharpCode.SharpZipLib.BZip2.BZip2OutputStream.Write(System.Byte[],System.Int32,System.Int32)"> | ||
788 | <summary> | ||
789 | Write a block of bytes to the stream | ||
790 | </summary> | ||
791 | <param name="buffer">The buffer containing data to write.</param> | ||
792 | <param name="offset">The offset of the first byte to write.</param> | ||
793 | <param name="count">The number of bytes to write.</param> | ||
794 | </member> | ||
795 | <member name="M:ICSharpCode.SharpZipLib.BZip2.BZip2OutputStream.WriteByte(System.Byte)"> | ||
796 | <summary> | ||
797 | Write a byte to the stream. | ||
798 | </summary> | ||
799 | <param name="value">The byte to write to the stream.</param> | ||
800 | </member> | ||
801 | <member name="M:ICSharpCode.SharpZipLib.BZip2.BZip2OutputStream.Close"> | ||
802 | <summary> | ||
803 | End the current block and end compression. | ||
804 | Close the stream and free any resources | ||
805 | </summary> | ||
806 | </member> | ||
807 | <member name="M:ICSharpCode.SharpZipLib.BZip2.BZip2OutputStream.WriteRun"> | ||
808 | <summary> | ||
809 | Get the number of bytes written to output. | ||
810 | </summary> | ||
811 | </member> | ||
812 | <member name="M:ICSharpCode.SharpZipLib.BZip2.BZip2OutputStream.Dispose(System.Boolean)"> | ||
813 | <summary> | ||
814 | Releases the unmanaged resources used by the <see cref="T:ICSharpCode.SharpZipLib.BZip2.BZip2OutputStream"/> and optionally releases the managed resources. | ||
815 | </summary> | ||
816 | <param name="disposing">true to release both managed and unmanaged resources; false to release only unmanaged resources.</param> | ||
817 | </member> | ||
818 | <member name="M:ICSharpCode.SharpZipLib.BZip2.BZip2OutputStream.Flush"> | ||
819 | <summary> | ||
820 | Flush output buffers | ||
821 | </summary> | ||
822 | </member> | ||
823 | <member name="P:ICSharpCode.SharpZipLib.BZip2.BZip2OutputStream.IsStreamOwner"> | ||
824 | <summary> | ||
825 | Get/set flag indicating ownership of underlying stream. | ||
826 | When the flag is true <see cref="M:ICSharpCode.SharpZipLib.BZip2.BZip2OutputStream.Close"></see> will close the underlying stream also. | ||
827 | </summary> | ||
828 | </member> | ||
829 | <member name="P:ICSharpCode.SharpZipLib.BZip2.BZip2OutputStream.CanRead"> | ||
830 | <summary> | ||
831 | Gets a value indicating whether the current stream supports reading | ||
832 | </summary> | ||
833 | </member> | ||
834 | <member name="P:ICSharpCode.SharpZipLib.BZip2.BZip2OutputStream.CanSeek"> | ||
835 | <summary> | ||
836 | Gets a value indicating whether the current stream supports seeking | ||
837 | </summary> | ||
838 | </member> | ||
839 | <member name="P:ICSharpCode.SharpZipLib.BZip2.BZip2OutputStream.CanWrite"> | ||
840 | <summary> | ||
841 | Gets a value indicating whether the current stream supports writing | ||
842 | </summary> | ||
843 | </member> | ||
844 | <member name="P:ICSharpCode.SharpZipLib.BZip2.BZip2OutputStream.Length"> | ||
845 | <summary> | ||
846 | Gets the length in bytes of the stream | ||
847 | </summary> | ||
848 | </member> | ||
849 | <member name="P:ICSharpCode.SharpZipLib.BZip2.BZip2OutputStream.Position"> | ||
850 | <summary> | ||
851 | Gets or sets the current position of this stream. | ||
852 | </summary> | ||
853 | </member> | ||
854 | <member name="P:ICSharpCode.SharpZipLib.BZip2.BZip2OutputStream.BytesWritten"> | ||
855 | <summary> | ||
856 | Get the number of bytes written to the output. | ||
857 | </summary> | ||
858 | </member> | ||
859 | <member name="T:ICSharpCode.SharpZipLib.Zip.ZipException"> | ||
860 | <summary> | ||
861 | Represents exception conditions specific to Zip archive handling | ||
862 | </summary> | ||
863 | </member> | ||
864 | <member name="T:ICSharpCode.SharpZipLib.SharpZipBaseException"> | ||
865 | <summary> | ||
866 | SharpZipBaseException is the base exception class for the SharpZipLibrary. | ||
867 | All library exceptions are derived from this. | ||
868 | </summary> | ||
869 | <remarks>NOTE: Not all exceptions thrown will be derived from this class. | ||
870 | A variety of other exceptions are possible for example <see cref="T:System.ArgumentNullException"></see></remarks> | ||
871 | </member> | ||
872 | <member name="M:ICSharpCode.SharpZipLib.SharpZipBaseException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)"> | ||
873 | <summary> | ||
874 | Deserialization constructor | ||
875 | </summary> | ||
876 | <param name="info"><see cref="T:System.Runtime.Serialization.SerializationInfo"/> for this constructor</param> | ||
877 | <param name="context"><see cref="T:System.Runtime.Serialization.StreamingContext"/> for this constructor</param> | ||
878 | </member> | ||
879 | <member name="M:ICSharpCode.SharpZipLib.SharpZipBaseException.#ctor"> | ||
880 | <summary> | ||
881 | Initializes a new instance of the SharpZipBaseException class. | ||
882 | </summary> | ||
883 | </member> | ||
884 | <member name="M:ICSharpCode.SharpZipLib.SharpZipBaseException.#ctor(System.String)"> | ||
885 | <summary> | ||
886 | Initializes a new instance of the SharpZipBaseException class with a specified error message. | ||
887 | </summary> | ||
888 | <param name="message">A message describing the exception.</param> | ||
889 | </member> | ||
890 | <member name="M:ICSharpCode.SharpZipLib.SharpZipBaseException.#ctor(System.String,System.Exception)"> | ||
891 | <summary> | ||
892 | Initializes a new instance of the SharpZipBaseException class with a specified | ||
893 | error message and a reference to the inner exception that is the cause of this exception. | ||
894 | </summary> | ||
895 | <param name="message">A message describing the exception.</param> | ||
896 | <param name="innerException">The inner exception</param> | ||
897 | </member> | ||
898 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)"> | ||
899 | <summary> | ||
900 | Deserialization constructor | ||
901 | </summary> | ||
902 | <param name="info"><see cref="T:System.Runtime.Serialization.SerializationInfo"/> for this constructor</param> | ||
903 | <param name="context"><see cref="T:System.Runtime.Serialization.StreamingContext"/> for this constructor</param> | ||
904 | </member> | ||
905 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipException.#ctor"> | ||
906 | <summary> | ||
907 | Initializes a new instance of the ZipException class. | ||
908 | </summary> | ||
909 | </member> | ||
910 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipException.#ctor(System.String)"> | ||
911 | <summary> | ||
912 | Initializes a new instance of the ZipException class with a specified error message. | ||
913 | </summary> | ||
914 | <param name="message">The error message that explains the reason for the exception.</param> | ||
915 | </member> | ||
916 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipException.#ctor(System.String,System.Exception)"> | ||
917 | <summary> | ||
918 | Initialise a new instance of ZipException. | ||
919 | </summary> | ||
920 | <param name="message">A message describing the error.</param> | ||
921 | <param name="exception">The exception that is the cause of the current exception.</param> | ||
922 | </member> | ||
923 | <member name="T:ICSharpCode.SharpZipLib.BZip2.BZip2"> | ||
924 | <summary> | ||
925 | A helper class to simplify compressing and decompressing streams. | ||
926 | </summary> | ||
927 | </member> | ||
928 | <member name="M:ICSharpCode.SharpZipLib.BZip2.BZip2.Decompress(System.IO.Stream,System.IO.Stream)"> | ||
929 | <summary> | ||
930 | Decompress <paramref name="inStream">input</paramref> writing | ||
931 | decompressed data to the <paramref name="outStream">output stream</paramref> | ||
932 | </summary> | ||
933 | <param name="inStream">The stream containing data to decompress.</param> | ||
934 | <param name="outStream">The stream to write decompressed data to.</param> | ||
935 | <remarks>Both streams are closed on completion</remarks> | ||
936 | </member> | ||
937 | <member name="M:ICSharpCode.SharpZipLib.BZip2.BZip2.Compress(System.IO.Stream,System.IO.Stream,System.Int32)"> | ||
938 | <summary> | ||
939 | Compress <paramref name="inStream">input stream</paramref> sending | ||
940 | result to <paramref name="outStream">output stream</paramref> | ||
941 | </summary> | ||
942 | <param name="inStream">The stream to compress.</param> | ||
943 | <param name="outStream">The stream to write compressed data to.</param> | ||
944 | <param name="blockSize">The block size to use.</param> | ||
945 | <remarks>Both streams are closed on completion</remarks> | ||
946 | </member> | ||
947 | <member name="M:ICSharpCode.SharpZipLib.BZip2.BZip2.#ctor"> | ||
948 | <summary> | ||
949 | Initialise a default instance of this class. | ||
950 | </summary> | ||
951 | </member> | ||
952 | <member name="T:ICSharpCode.SharpZipLib.Zip.UseZip64"> | ||
953 | <summary> | ||
954 | Determines how entries are tested to see if they should use Zip64 extensions or not. | ||
955 | </summary> | ||
956 | </member> | ||
957 | <member name="F:ICSharpCode.SharpZipLib.Zip.UseZip64.Off"> | ||
958 | <summary> | ||
959 | Zip64 will not be forced on entries during processing. | ||
960 | </summary> | ||
961 | <remarks>An entry can have this overridden if required <see cref="M:ICSharpCode.SharpZipLib.Zip.ZipEntry.ForceZip64"></see></remarks> | ||
962 | </member> | ||
963 | <member name="F:ICSharpCode.SharpZipLib.Zip.UseZip64.On"> | ||
964 | <summary> | ||
965 | Zip64 should always be used. | ||
966 | </summary> | ||
967 | </member> | ||
968 | <member name="F:ICSharpCode.SharpZipLib.Zip.UseZip64.Dynamic"> | ||
969 | <summary> | ||
970 | #ZipLib will determine use based on entry values when added to archive. | ||
971 | </summary> | ||
972 | </member> | ||
973 | <member name="T:ICSharpCode.SharpZipLib.Zip.CompressionMethod"> | ||
974 | <summary> | ||
975 | The kind of compression used for an entry in an archive | ||
976 | </summary> | ||
977 | </member> | ||
978 | <member name="F:ICSharpCode.SharpZipLib.Zip.CompressionMethod.Stored"> | ||
979 | <summary> | ||
980 | A direct copy of the file contents is held in the archive | ||
981 | </summary> | ||
982 | </member> | ||
983 | <member name="F:ICSharpCode.SharpZipLib.Zip.CompressionMethod.Deflated"> | ||
984 | <summary> | ||
985 | Common Zip compression method using a sliding dictionary | ||
986 | of up to 32KB and secondary compression from Huffman/Shannon-Fano trees | ||
987 | </summary> | ||
988 | </member> | ||
989 | <member name="F:ICSharpCode.SharpZipLib.Zip.CompressionMethod.Deflate64"> | ||
990 | <summary> | ||
991 | An extension to deflate with a 64KB window. Not supported by #Zip currently | ||
992 | </summary> | ||
993 | </member> | ||
994 | <member name="F:ICSharpCode.SharpZipLib.Zip.CompressionMethod.BZip2"> | ||
995 | <summary> | ||
996 | Not supported by #Zip currently | ||
997 | </summary> | ||
998 | </member> | ||
999 | <member name="F:ICSharpCode.SharpZipLib.Zip.CompressionMethod.WinZipAES"> | ||
1000 | <summary> | ||
1001 | WinZip special for AES encryption, Not supported by #Zip | ||
1002 | </summary> | ||
1003 | </member> | ||
1004 | <member name="T:ICSharpCode.SharpZipLib.Zip.EncryptionAlgorithm"> | ||
1005 | <summary> | ||
1006 | Identifies the encryption algorithm used for an entry | ||
1007 | </summary> | ||
1008 | </member> | ||
1009 | <member name="F:ICSharpCode.SharpZipLib.Zip.EncryptionAlgorithm.None"> | ||
1010 | <summary> | ||
1011 | No encryption has been used. | ||
1012 | </summary> | ||
1013 | </member> | ||
1014 | <member name="F:ICSharpCode.SharpZipLib.Zip.EncryptionAlgorithm.PkzipClassic"> | ||
1015 | <summary> | ||
1016 | Encrypted using PKZIP 2.0 or 'classic' encryption. | ||
1017 | </summary> | ||
1018 | </member> | ||
1019 | <member name="F:ICSharpCode.SharpZipLib.Zip.EncryptionAlgorithm.Des"> | ||
1020 | <summary> | ||
1021 | DES encryption has been used. | ||
1022 | </summary> | ||
1023 | </member> | ||
1024 | <member name="F:ICSharpCode.SharpZipLib.Zip.EncryptionAlgorithm.RC2"> | ||
1025 | <summary> | ||
1026 | RCS encryption has been used for encryption. | ||
1027 | </summary> | ||
1028 | </member> | ||
1029 | <member name="F:ICSharpCode.SharpZipLib.Zip.EncryptionAlgorithm.TripleDes168"> | ||
1030 | <summary> | ||
1031 | Triple DES encryption with 168 bit keys has been used for this entry. | ||
1032 | </summary> | ||
1033 | </member> | ||
1034 | <member name="F:ICSharpCode.SharpZipLib.Zip.EncryptionAlgorithm.TripleDes112"> | ||
1035 | <summary> | ||
1036 | Triple DES with 112 bit keys has been used for this entry. | ||
1037 | </summary> | ||
1038 | </member> | ||
1039 | <member name="F:ICSharpCode.SharpZipLib.Zip.EncryptionAlgorithm.Aes128"> | ||
1040 | <summary> | ||
1041 | AES 128 has been used for encryption. | ||
1042 | </summary> | ||
1043 | </member> | ||
1044 | <member name="F:ICSharpCode.SharpZipLib.Zip.EncryptionAlgorithm.Aes192"> | ||
1045 | <summary> | ||
1046 | AES 192 has been used for encryption. | ||
1047 | </summary> | ||
1048 | </member> | ||
1049 | <member name="F:ICSharpCode.SharpZipLib.Zip.EncryptionAlgorithm.Aes256"> | ||
1050 | <summary> | ||
1051 | AES 256 has been used for encryption. | ||
1052 | </summary> | ||
1053 | </member> | ||
1054 | <member name="F:ICSharpCode.SharpZipLib.Zip.EncryptionAlgorithm.RC2Corrected"> | ||
1055 | <summary> | ||
1056 | RC2 corrected has been used for encryption. | ||
1057 | </summary> | ||
1058 | </member> | ||
1059 | <member name="F:ICSharpCode.SharpZipLib.Zip.EncryptionAlgorithm.Blowfish"> | ||
1060 | <summary> | ||
1061 | Blowfish has been used for encryption. | ||
1062 | </summary> | ||
1063 | </member> | ||
1064 | <member name="F:ICSharpCode.SharpZipLib.Zip.EncryptionAlgorithm.Twofish"> | ||
1065 | <summary> | ||
1066 | Twofish has been used for encryption. | ||
1067 | </summary> | ||
1068 | </member> | ||
1069 | <member name="F:ICSharpCode.SharpZipLib.Zip.EncryptionAlgorithm.RC4"> | ||
1070 | <summary> | ||
1071 | RCS has been used for encryption. | ||
1072 | </summary> | ||
1073 | </member> | ||
1074 | <member name="F:ICSharpCode.SharpZipLib.Zip.EncryptionAlgorithm.Unknown"> | ||
1075 | <summary> | ||
1076 | An unknown algorithm has been used for encryption. | ||
1077 | </summary> | ||
1078 | </member> | ||
1079 | <member name="T:ICSharpCode.SharpZipLib.Zip.GeneralBitFlags"> | ||
1080 | <summary> | ||
1081 | Defines the contents of the general bit flags field for an archive entry. | ||
1082 | </summary> | ||
1083 | </member> | ||
1084 | <member name="F:ICSharpCode.SharpZipLib.Zip.GeneralBitFlags.Encrypted"> | ||
1085 | <summary> | ||
1086 | Bit 0 if set indicates that the file is encrypted | ||
1087 | </summary> | ||
1088 | </member> | ||
1089 | <member name="F:ICSharpCode.SharpZipLib.Zip.GeneralBitFlags.Method"> | ||
1090 | <summary> | ||
1091 | Bits 1 and 2 - Two bits defining the compression method (only for Method 6 Imploding and 8,9 Deflating) | ||
1092 | </summary> | ||
1093 | </member> | ||
1094 | <member name="F:ICSharpCode.SharpZipLib.Zip.GeneralBitFlags.Descriptor"> | ||
1095 | <summary> | ||
1096 | Bit 3 if set indicates a trailing data desciptor is appended to the entry data | ||
1097 | </summary> | ||
1098 | </member> | ||
1099 | <member name="F:ICSharpCode.SharpZipLib.Zip.GeneralBitFlags.ReservedPKware4"> | ||
1100 | <summary> | ||
1101 | Bit 4 is reserved for use with method 8 for enhanced deflation | ||
1102 | </summary> | ||
1103 | </member> | ||
1104 | <member name="F:ICSharpCode.SharpZipLib.Zip.GeneralBitFlags.Patched"> | ||
1105 | <summary> | ||
1106 | Bit 5 if set indicates the file contains Pkzip compressed patched data. | ||
1107 | Requires version 2.7 or greater. | ||
1108 | </summary> | ||
1109 | </member> | ||
1110 | <member name="F:ICSharpCode.SharpZipLib.Zip.GeneralBitFlags.StrongEncryption"> | ||
1111 | <summary> | ||
1112 | Bit 6 if set strong encryption has been used for this entry. | ||
1113 | </summary> | ||
1114 | </member> | ||
1115 | <member name="F:ICSharpCode.SharpZipLib.Zip.GeneralBitFlags.Unused7"> | ||
1116 | <summary> | ||
1117 | Bit 7 is currently unused | ||
1118 | </summary> | ||
1119 | </member> | ||
1120 | <member name="F:ICSharpCode.SharpZipLib.Zip.GeneralBitFlags.Unused8"> | ||
1121 | <summary> | ||
1122 | Bit 8 is currently unused | ||
1123 | </summary> | ||
1124 | </member> | ||
1125 | <member name="F:ICSharpCode.SharpZipLib.Zip.GeneralBitFlags.Unused9"> | ||
1126 | <summary> | ||
1127 | Bit 9 is currently unused | ||
1128 | </summary> | ||
1129 | </member> | ||
1130 | <member name="F:ICSharpCode.SharpZipLib.Zip.GeneralBitFlags.Unused10"> | ||
1131 | <summary> | ||
1132 | Bit 10 is currently unused | ||
1133 | </summary> | ||
1134 | </member> | ||
1135 | <member name="F:ICSharpCode.SharpZipLib.Zip.GeneralBitFlags.UnicodeText"> | ||
1136 | <summary> | ||
1137 | Bit 11 if set indicates the filename and | ||
1138 | comment fields for this file must be encoded using UTF-8. | ||
1139 | </summary> | ||
1140 | </member> | ||
1141 | <member name="F:ICSharpCode.SharpZipLib.Zip.GeneralBitFlags.EnhancedCompress"> | ||
1142 | <summary> | ||
1143 | Bit 12 is documented as being reserved by PKware for enhanced compression. | ||
1144 | </summary> | ||
1145 | </member> | ||
1146 | <member name="F:ICSharpCode.SharpZipLib.Zip.GeneralBitFlags.HeaderMasked"> | ||
1147 | <summary> | ||
1148 | Bit 13 if set indicates that values in the local header are masked to hide | ||
1149 | their actual values, and the central directory is encrypted. | ||
1150 | </summary> | ||
1151 | <remarks> | ||
1152 | Used when encrypting the central directory contents. | ||
1153 | </remarks> | ||
1154 | </member> | ||
1155 | <member name="F:ICSharpCode.SharpZipLib.Zip.GeneralBitFlags.ReservedPkware14"> | ||
1156 | <summary> | ||
1157 | Bit 14 is documented as being reserved for use by PKware | ||
1158 | </summary> | ||
1159 | </member> | ||
1160 | <member name="F:ICSharpCode.SharpZipLib.Zip.GeneralBitFlags.ReservedPkware15"> | ||
1161 | <summary> | ||
1162 | Bit 15 is documented as being reserved for use by PKware | ||
1163 | </summary> | ||
1164 | </member> | ||
1165 | <member name="T:ICSharpCode.SharpZipLib.Zip.ZipConstants"> | ||
1166 | <summary> | ||
1167 | This class contains constants used for Zip format files | ||
1168 | </summary> | ||
1169 | </member> | ||
1170 | <member name="F:ICSharpCode.SharpZipLib.Zip.ZipConstants.VersionMadeBy"> | ||
1171 | <summary> | ||
1172 | The version made by field for entries in the central header when created by this library | ||
1173 | </summary> | ||
1174 | <remarks> | ||
1175 | This is also the Zip version for the library when comparing against the version required to extract | ||
1176 | for an entry. See <see cref="P:ICSharpCode.SharpZipLib.Zip.ZipEntry.CanDecompress"/>. | ||
1177 | </remarks> | ||
1178 | </member> | ||
1179 | <member name="F:ICSharpCode.SharpZipLib.Zip.ZipConstants.VERSION_MADE_BY"> | ||
1180 | <summary> | ||
1181 | The version made by field for entries in the central header when created by this library | ||
1182 | </summary> | ||
1183 | <remarks> | ||
1184 | This is also the Zip version for the library when comparing against the version required to extract | ||
1185 | for an entry. See <see cref="P:ICSharpCode.SharpZipLib.Zip.ZipInputStream.CanDecompressEntry">ZipInputStream.CanDecompressEntry</see>. | ||
1186 | </remarks> | ||
1187 | </member> | ||
1188 | <member name="F:ICSharpCode.SharpZipLib.Zip.ZipConstants.VersionStrongEncryption"> | ||
1189 | <summary> | ||
1190 | The minimum version required to support strong encryption | ||
1191 | </summary> | ||
1192 | </member> | ||
1193 | <member name="F:ICSharpCode.SharpZipLib.Zip.ZipConstants.VERSION_STRONG_ENCRYPTION"> | ||
1194 | <summary> | ||
1195 | The minimum version required to support strong encryption | ||
1196 | </summary> | ||
1197 | </member> | ||
1198 | <member name="F:ICSharpCode.SharpZipLib.Zip.ZipConstants.VersionZip64"> | ||
1199 | <summary> | ||
1200 | The version required for Zip64 extensions | ||
1201 | </summary> | ||
1202 | </member> | ||
1203 | <member name="F:ICSharpCode.SharpZipLib.Zip.ZipConstants.LocalHeaderBaseSize"> | ||
1204 | <summary> | ||
1205 | Size of local entry header (excluding variable length fields at end) | ||
1206 | </summary> | ||
1207 | </member> | ||
1208 | <member name="F:ICSharpCode.SharpZipLib.Zip.ZipConstants.LOCHDR"> | ||
1209 | <summary> | ||
1210 | Size of local entry header (excluding variable length fields at end) | ||
1211 | </summary> | ||
1212 | </member> | ||
1213 | <member name="F:ICSharpCode.SharpZipLib.Zip.ZipConstants.Zip64DataDescriptorSize"> | ||
1214 | <summary> | ||
1215 | Size of Zip64 data descriptor | ||
1216 | </summary> | ||
1217 | </member> | ||
1218 | <member name="F:ICSharpCode.SharpZipLib.Zip.ZipConstants.DataDescriptorSize"> | ||
1219 | <summary> | ||
1220 | Size of data descriptor | ||
1221 | </summary> | ||
1222 | </member> | ||
1223 | <member name="F:ICSharpCode.SharpZipLib.Zip.ZipConstants.EXTHDR"> | ||
1224 | <summary> | ||
1225 | Size of data descriptor | ||
1226 | </summary> | ||
1227 | </member> | ||
1228 | <member name="F:ICSharpCode.SharpZipLib.Zip.ZipConstants.CentralHeaderBaseSize"> | ||
1229 | <summary> | ||
1230 | Size of central header entry (excluding variable fields) | ||
1231 | </summary> | ||
1232 | </member> | ||
1233 | <member name="F:ICSharpCode.SharpZipLib.Zip.ZipConstants.CENHDR"> | ||
1234 | <summary> | ||
1235 | Size of central header entry | ||
1236 | </summary> | ||
1237 | </member> | ||
1238 | <member name="F:ICSharpCode.SharpZipLib.Zip.ZipConstants.EndOfCentralRecordBaseSize"> | ||
1239 | <summary> | ||
1240 | Size of end of central record (excluding variable fields) | ||
1241 | </summary> | ||
1242 | </member> | ||
1243 | <member name="F:ICSharpCode.SharpZipLib.Zip.ZipConstants.ENDHDR"> | ||
1244 | <summary> | ||
1245 | Size of end of central record (excluding variable fields) | ||
1246 | </summary> | ||
1247 | </member> | ||
1248 | <member name="F:ICSharpCode.SharpZipLib.Zip.ZipConstants.CryptoHeaderSize"> | ||
1249 | <summary> | ||
1250 | Size of 'classic' cryptographic header stored before any entry data | ||
1251 | </summary> | ||
1252 | </member> | ||
1253 | <member name="F:ICSharpCode.SharpZipLib.Zip.ZipConstants.CRYPTO_HEADER_SIZE"> | ||
1254 | <summary> | ||
1255 | Size of cryptographic header stored before entry data | ||
1256 | </summary> | ||
1257 | </member> | ||
1258 | <member name="F:ICSharpCode.SharpZipLib.Zip.ZipConstants.LocalHeaderSignature"> | ||
1259 | <summary> | ||
1260 | Signature for local entry header | ||
1261 | </summary> | ||
1262 | </member> | ||
1263 | <member name="F:ICSharpCode.SharpZipLib.Zip.ZipConstants.LOCSIG"> | ||
1264 | <summary> | ||
1265 | Signature for local entry header | ||
1266 | </summary> | ||
1267 | </member> | ||
1268 | <member name="F:ICSharpCode.SharpZipLib.Zip.ZipConstants.SpanningSignature"> | ||
1269 | <summary> | ||
1270 | Signature for spanning entry | ||
1271 | </summary> | ||
1272 | </member> | ||
1273 | <member name="F:ICSharpCode.SharpZipLib.Zip.ZipConstants.SPANNINGSIG"> | ||
1274 | <summary> | ||
1275 | Signature for spanning entry | ||
1276 | </summary> | ||
1277 | </member> | ||
1278 | <member name="F:ICSharpCode.SharpZipLib.Zip.ZipConstants.SpanningTempSignature"> | ||
1279 | <summary> | ||
1280 | Signature for temporary spanning entry | ||
1281 | </summary> | ||
1282 | </member> | ||
1283 | <member name="F:ICSharpCode.SharpZipLib.Zip.ZipConstants.SPANTEMPSIG"> | ||
1284 | <summary> | ||
1285 | Signature for temporary spanning entry | ||
1286 | </summary> | ||
1287 | </member> | ||
1288 | <member name="F:ICSharpCode.SharpZipLib.Zip.ZipConstants.DataDescriptorSignature"> | ||
1289 | <summary> | ||
1290 | Signature for data descriptor | ||
1291 | </summary> | ||
1292 | <remarks> | ||
1293 | This is only used where the length, Crc, or compressed size isnt known when the | ||
1294 | entry is created and the output stream doesnt support seeking. | ||
1295 | The local entry cannot be 'patched' with the correct values in this case | ||
1296 | so the values are recorded after the data prefixed by this header, as well as in the central directory. | ||
1297 | </remarks> | ||
1298 | </member> | ||
1299 | <member name="F:ICSharpCode.SharpZipLib.Zip.ZipConstants.EXTSIG"> | ||
1300 | <summary> | ||
1301 | Signature for data descriptor | ||
1302 | </summary> | ||
1303 | <remarks> | ||
1304 | This is only used where the length, Crc, or compressed size isnt known when the | ||
1305 | entry is created and the output stream doesnt support seeking. | ||
1306 | The local entry cannot be 'patched' with the correct values in this case | ||
1307 | so the values are recorded after the data prefixed by this header, as well as in the central directory. | ||
1308 | </remarks> | ||
1309 | </member> | ||
1310 | <member name="F:ICSharpCode.SharpZipLib.Zip.ZipConstants.CENSIG"> | ||
1311 | <summary> | ||
1312 | Signature for central header | ||
1313 | </summary> | ||
1314 | </member> | ||
1315 | <member name="F:ICSharpCode.SharpZipLib.Zip.ZipConstants.CentralHeaderSignature"> | ||
1316 | <summary> | ||
1317 | Signature for central header | ||
1318 | </summary> | ||
1319 | </member> | ||
1320 | <member name="F:ICSharpCode.SharpZipLib.Zip.ZipConstants.Zip64CentralFileHeaderSignature"> | ||
1321 | <summary> | ||
1322 | Signature for Zip64 central file header | ||
1323 | </summary> | ||
1324 | </member> | ||
1325 | <member name="F:ICSharpCode.SharpZipLib.Zip.ZipConstants.CENSIG64"> | ||
1326 | <summary> | ||
1327 | Signature for Zip64 central file header | ||
1328 | </summary> | ||
1329 | </member> | ||
1330 | <member name="F:ICSharpCode.SharpZipLib.Zip.ZipConstants.Zip64CentralDirLocatorSignature"> | ||
1331 | <summary> | ||
1332 | Signature for Zip64 central directory locator | ||
1333 | </summary> | ||
1334 | </member> | ||
1335 | <member name="F:ICSharpCode.SharpZipLib.Zip.ZipConstants.ArchiveExtraDataSignature"> | ||
1336 | <summary> | ||
1337 | Signature for archive extra data signature (were headers are encrypted). | ||
1338 | </summary> | ||
1339 | </member> | ||
1340 | <member name="F:ICSharpCode.SharpZipLib.Zip.ZipConstants.CentralHeaderDigitalSignature"> | ||
1341 | <summary> | ||
1342 | Central header digitial signature | ||
1343 | </summary> | ||
1344 | </member> | ||
1345 | <member name="F:ICSharpCode.SharpZipLib.Zip.ZipConstants.CENDIGITALSIG"> | ||
1346 | <summary> | ||
1347 | Central header digitial signature | ||
1348 | </summary> | ||
1349 | </member> | ||
1350 | <member name="F:ICSharpCode.SharpZipLib.Zip.ZipConstants.EndOfCentralDirectorySignature"> | ||
1351 | <summary> | ||
1352 | End of central directory record signature | ||
1353 | </summary> | ||
1354 | </member> | ||
1355 | <member name="F:ICSharpCode.SharpZipLib.Zip.ZipConstants.ENDSIG"> | ||
1356 | <summary> | ||
1357 | End of central directory record signature | ||
1358 | </summary> | ||
1359 | </member> | ||
1360 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipConstants.ConvertToString(System.Byte[],System.Int32)"> | ||
1361 | <summary> | ||
1362 | Convert a portion of a byte array to a string. | ||
1363 | </summary> | ||
1364 | <param name="data"> | ||
1365 | Data to convert to string | ||
1366 | </param> | ||
1367 | <param name="count"> | ||
1368 | Number of bytes to convert starting from index 0 | ||
1369 | </param> | ||
1370 | <returns> | ||
1371 | data[0]..data[length - 1] converted to a string | ||
1372 | </returns> | ||
1373 | </member> | ||
1374 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipConstants.ConvertToString(System.Byte[])"> | ||
1375 | <summary> | ||
1376 | Convert a byte array to string | ||
1377 | </summary> | ||
1378 | <param name="data"> | ||
1379 | Byte array to convert | ||
1380 | </param> | ||
1381 | <returns> | ||
1382 | <paramref name="data">data</paramref>converted to a string | ||
1383 | </returns> | ||
1384 | </member> | ||
1385 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipConstants.ConvertToStringExt(System.Int32,System.Byte[],System.Int32)"> | ||
1386 | <summary> | ||
1387 | Convert a byte array to string | ||
1388 | </summary> | ||
1389 | <param name="flags">The applicable general purpose bits flags</param> | ||
1390 | <param name="data"> | ||
1391 | Byte array to convert | ||
1392 | </param> | ||
1393 | <param name="count">The number of bytes to convert.</param> | ||
1394 | <returns> | ||
1395 | <paramref name="data">data</paramref>converted to a string | ||
1396 | </returns> | ||
1397 | </member> | ||
1398 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipConstants.ConvertToStringExt(System.Int32,System.Byte[])"> | ||
1399 | <summary> | ||
1400 | Convert a byte array to string | ||
1401 | </summary> | ||
1402 | <param name="data"> | ||
1403 | Byte array to convert | ||
1404 | </param> | ||
1405 | <param name="flags">The applicable general purpose bits flags</param> | ||
1406 | <returns> | ||
1407 | <paramref name="data">data</paramref>converted to a string | ||
1408 | </returns> | ||
1409 | </member> | ||
1410 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipConstants.ConvertToArray(System.String)"> | ||
1411 | <summary> | ||
1412 | Convert a string to a byte array | ||
1413 | </summary> | ||
1414 | <param name="str"> | ||
1415 | String to convert to an array | ||
1416 | </param> | ||
1417 | <returns>Converted array</returns> | ||
1418 | </member> | ||
1419 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipConstants.ConvertToArray(System.Int32,System.String)"> | ||
1420 | <summary> | ||
1421 | Convert a string to a byte array | ||
1422 | </summary> | ||
1423 | <param name="flags">The applicable general purpose bits flags</param> | ||
1424 | <param name="str"> | ||
1425 | String to convert to an array | ||
1426 | </param> | ||
1427 | <returns>Converted array</returns> | ||
1428 | </member> | ||
1429 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipConstants.#ctor"> | ||
1430 | <summary> | ||
1431 | Initialise default instance of <see cref="T:ICSharpCode.SharpZipLib.Zip.ZipConstants">ZipConstants</see> | ||
1432 | </summary> | ||
1433 | <remarks> | ||
1434 | Private to prevent instances being created. | ||
1435 | </remarks> | ||
1436 | </member> | ||
1437 | <member name="P:ICSharpCode.SharpZipLib.Zip.ZipConstants.DefaultCodePage"> | ||
1438 | <summary> | ||
1439 | Default encoding used for string conversion. 0 gives the default system OEM code page. | ||
1440 | Dont use unicode encodings if you want to be Zip compatible! | ||
1441 | Using the default code page isnt the full solution neccessarily | ||
1442 | there are many variable factors, codepage 850 is often a good choice for | ||
1443 | European users, however be careful about compatability. | ||
1444 | </summary> | ||
1445 | </member> | ||
1446 | <member name="T:ICSharpCode.SharpZipLib.Zip.ZipOutputStream"> | ||
1447 | <summary> | ||
1448 | This is a DeflaterOutputStream that writes the files into a zip | ||
1449 | archive one after another. It has a special method to start a new | ||
1450 | zip entry. The zip entries contains information about the file name | ||
1451 | size, compressed size, CRC, etc. | ||
1452 | |||
1453 | It includes support for Stored and Deflated entries. | ||
1454 | This class is not thread safe. | ||
1455 | <br/> | ||
1456 | <br/>Author of the original java version : Jochen Hoenicke | ||
1457 | </summary> | ||
1458 | <example> This sample shows how to create a zip file | ||
1459 | <code> | ||
1460 | using System; | ||
1461 | using System.IO; | ||
1462 | |||
1463 | using ICSharpCode.SharpZipLib.Core; | ||
1464 | using ICSharpCode.SharpZipLib.Zip; | ||
1465 | |||
1466 | class MainClass | ||
1467 | { | ||
1468 | public static void Main(string[] args) | ||
1469 | { | ||
1470 | string[] filenames = Directory.GetFiles(args[0]); | ||
1471 | byte[] buffer = new byte[4096]; | ||
1472 | |||
1473 | using ( ZipOutputStream s = new ZipOutputStream(File.Create(args[1])) ) { | ||
1474 | |||
1475 | s.SetLevel(9); // 0 - store only to 9 - means best compression | ||
1476 | |||
1477 | foreach (string file in filenames) { | ||
1478 | ZipEntry entry = new ZipEntry(file); | ||
1479 | s.PutNextEntry(entry); | ||
1480 | |||
1481 | using (FileStream fs = File.OpenRead(file)) { | ||
1482 | StreamUtils.Copy(fs, s, buffer); | ||
1483 | } | ||
1484 | } | ||
1485 | } | ||
1486 | } | ||
1487 | } | ||
1488 | </code> | ||
1489 | </example> | ||
1490 | </member> | ||
1491 | <member name="T:ICSharpCode.SharpZipLib.Zip.Compression.Streams.DeflaterOutputStream"> | ||
1492 | <summary> | ||
1493 | A special stream deflating or compressing the bytes that are | ||
1494 | written to it. It uses a Deflater to perform actual deflating.<br/> | ||
1495 | Authors of the original java version : Tom Tromey, Jochen Hoenicke | ||
1496 | </summary> | ||
1497 | </member> | ||
1498 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.Streams.DeflaterOutputStream.#ctor(System.IO.Stream)"> | ||
1499 | <summary> | ||
1500 | Creates a new DeflaterOutputStream with a default Deflater and default buffer size. | ||
1501 | </summary> | ||
1502 | <param name="baseOutputStream"> | ||
1503 | the output stream where deflated output should be written. | ||
1504 | </param> | ||
1505 | </member> | ||
1506 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.Streams.DeflaterOutputStream.#ctor(System.IO.Stream,ICSharpCode.SharpZipLib.Zip.Compression.Deflater)"> | ||
1507 | <summary> | ||
1508 | Creates a new DeflaterOutputStream with the given Deflater and | ||
1509 | default buffer size. | ||
1510 | </summary> | ||
1511 | <param name="baseOutputStream"> | ||
1512 | the output stream where deflated output should be written. | ||
1513 | </param> | ||
1514 | <param name="deflater"> | ||
1515 | the underlying deflater. | ||
1516 | </param> | ||
1517 | </member> | ||
1518 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.Streams.DeflaterOutputStream.#ctor(System.IO.Stream,ICSharpCode.SharpZipLib.Zip.Compression.Deflater,System.Int32)"> | ||
1519 | <summary> | ||
1520 | Creates a new DeflaterOutputStream with the given Deflater and | ||
1521 | buffer size. | ||
1522 | </summary> | ||
1523 | <param name="baseOutputStream"> | ||
1524 | The output stream where deflated output is written. | ||
1525 | </param> | ||
1526 | <param name="deflater"> | ||
1527 | The underlying deflater to use | ||
1528 | </param> | ||
1529 | <param name="bufferSize"> | ||
1530 | The buffer size to use when deflating | ||
1531 | </param> | ||
1532 | <exception cref="T:System.ArgumentOutOfRangeException"> | ||
1533 | bufsize is less than or equal to zero. | ||
1534 | </exception> | ||
1535 | <exception cref="T:System.ArgumentException"> | ||
1536 | baseOutputStream does not support writing | ||
1537 | </exception> | ||
1538 | <exception cref="T:System.ArgumentNullException"> | ||
1539 | deflater instance is null | ||
1540 | </exception> | ||
1541 | </member> | ||
1542 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.Streams.DeflaterOutputStream.Finish"> | ||
1543 | <summary> | ||
1544 | Finishes the stream by calling finish() on the deflater. | ||
1545 | </summary> | ||
1546 | <exception cref="T:ICSharpCode.SharpZipLib.SharpZipBaseException"> | ||
1547 | Not all input is deflated | ||
1548 | </exception> | ||
1549 | </member> | ||
1550 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.Streams.DeflaterOutputStream.EncryptBlock(System.Byte[],System.Int32,System.Int32)"> | ||
1551 | <summary> | ||
1552 | Encrypt a block of data | ||
1553 | </summary> | ||
1554 | <param name="buffer"> | ||
1555 | Data to encrypt. NOTE the original contents of the buffer are lost | ||
1556 | </param> | ||
1557 | <param name="offset"> | ||
1558 | Offset of first byte in buffer to encrypt | ||
1559 | </param> | ||
1560 | <param name="length"> | ||
1561 | Number of bytes in buffer to encrypt | ||
1562 | </param> | ||
1563 | </member> | ||
1564 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.Streams.DeflaterOutputStream.InitializePassword(System.String)"> | ||
1565 | <summary> | ||
1566 | Initializes encryption keys based on given password | ||
1567 | </summary> | ||
1568 | <param name="password">The password.</param> | ||
1569 | </member> | ||
1570 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.Streams.DeflaterOutputStream.Deflate"> | ||
1571 | <summary> | ||
1572 | Deflates everything in the input buffers. This will call | ||
1573 | <code>def.deflate()</code> until all bytes from the input buffers | ||
1574 | are processed. | ||
1575 | </summary> | ||
1576 | </member> | ||
1577 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.Streams.DeflaterOutputStream.Seek(System.Int64,System.IO.SeekOrigin)"> | ||
1578 | <summary> | ||
1579 | Sets the current position of this stream to the given value. Not supported by this class! | ||
1580 | </summary> | ||
1581 | <param name="offset">The offset relative to the <paramref name="origin"/> to seek.</param> | ||
1582 | <param name="origin">The <see cref="T:System.IO.SeekOrigin"/> to seek from.</param> | ||
1583 | <returns>The new position in the stream.</returns> | ||
1584 | <exception cref="T:System.NotSupportedException">Any access</exception> | ||
1585 | </member> | ||
1586 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.Streams.DeflaterOutputStream.SetLength(System.Int64)"> | ||
1587 | <summary> | ||
1588 | Sets the length of this stream to the given value. Not supported by this class! | ||
1589 | </summary> | ||
1590 | <param name="value">The new stream length.</param> | ||
1591 | <exception cref="T:System.NotSupportedException">Any access</exception> | ||
1592 | </member> | ||
1593 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.Streams.DeflaterOutputStream.ReadByte"> | ||
1594 | <summary> | ||
1595 | Read a byte from stream advancing position by one | ||
1596 | </summary> | ||
1597 | <returns>The byte read cast to an int. THe value is -1 if at the end of the stream.</returns> | ||
1598 | <exception cref="T:System.NotSupportedException">Any access</exception> | ||
1599 | </member> | ||
1600 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.Streams.DeflaterOutputStream.Read(System.Byte[],System.Int32,System.Int32)"> | ||
1601 | <summary> | ||
1602 | Read a block of bytes from stream | ||
1603 | </summary> | ||
1604 | <param name="buffer">The buffer to store read data in.</param> | ||
1605 | <param name="offset">The offset to start storing at.</param> | ||
1606 | <param name="count">The maximum number of bytes to read.</param> | ||
1607 | <returns>The actual number of bytes read. Zero if end of stream is detected.</returns> | ||
1608 | <exception cref="T:System.NotSupportedException">Any access</exception> | ||
1609 | </member> | ||
1610 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.Streams.DeflaterOutputStream.BeginRead(System.Byte[],System.Int32,System.Int32,System.AsyncCallback,System.Object)"> | ||
1611 | <summary> | ||
1612 | Asynchronous reads are not supported a NotSupportedException is always thrown | ||
1613 | </summary> | ||
1614 | <param name="buffer">The buffer to read into.</param> | ||
1615 | <param name="offset">The offset to start storing data at.</param> | ||
1616 | <param name="count">The number of bytes to read</param> | ||
1617 | <param name="callback">The async callback to use.</param> | ||
1618 | <param name="state">The state to use.</param> | ||
1619 | <returns>Returns an <see cref="T:System.IAsyncResult"/></returns> | ||
1620 | <exception cref="T:System.NotSupportedException">Any access</exception> | ||
1621 | </member> | ||
1622 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.Streams.DeflaterOutputStream.BeginWrite(System.Byte[],System.Int32,System.Int32,System.AsyncCallback,System.Object)"> | ||
1623 | <summary> | ||
1624 | Asynchronous writes arent supported, a NotSupportedException is always thrown | ||
1625 | </summary> | ||
1626 | <param name="buffer">The buffer to write.</param> | ||
1627 | <param name="offset">The offset to begin writing at.</param> | ||
1628 | <param name="count">The number of bytes to write.</param> | ||
1629 | <param name="callback">The <see cref="T:System.AsyncCallback"/> to use.</param> | ||
1630 | <param name="state">The state object.</param> | ||
1631 | <returns>Returns an IAsyncResult.</returns> | ||
1632 | <exception cref="T:System.NotSupportedException">Any access</exception> | ||
1633 | </member> | ||
1634 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.Streams.DeflaterOutputStream.Flush"> | ||
1635 | <summary> | ||
1636 | Flushes the stream by calling <see cref="M:ICSharpCode.SharpZipLib.Zip.Compression.Streams.DeflaterOutputStream.Flush">Flush</see> on the deflater and then | ||
1637 | on the underlying stream. This ensures that all bytes are flushed. | ||
1638 | </summary> | ||
1639 | </member> | ||
1640 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.Streams.DeflaterOutputStream.Close"> | ||
1641 | <summary> | ||
1642 | Calls <see cref="M:ICSharpCode.SharpZipLib.Zip.Compression.Streams.DeflaterOutputStream.Finish"/> and closes the underlying | ||
1643 | stream when <see cref="P:ICSharpCode.SharpZipLib.Zip.Compression.Streams.DeflaterOutputStream.IsStreamOwner"></see> is true. | ||
1644 | </summary> | ||
1645 | </member> | ||
1646 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.Streams.DeflaterOutputStream.WriteByte(System.Byte)"> | ||
1647 | <summary> | ||
1648 | Writes a single byte to the compressed output stream. | ||
1649 | </summary> | ||
1650 | <param name="value"> | ||
1651 | The byte value. | ||
1652 | </param> | ||
1653 | </member> | ||
1654 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.Streams.DeflaterOutputStream.Write(System.Byte[],System.Int32,System.Int32)"> | ||
1655 | <summary> | ||
1656 | Writes bytes from an array to the compressed stream. | ||
1657 | </summary> | ||
1658 | <param name="buffer"> | ||
1659 | The byte array | ||
1660 | </param> | ||
1661 | <param name="offset"> | ||
1662 | The offset into the byte array where to start. | ||
1663 | </param> | ||
1664 | <param name="count"> | ||
1665 | The number of bytes to write. | ||
1666 | </param> | ||
1667 | </member> | ||
1668 | <member name="F:ICSharpCode.SharpZipLib.Zip.Compression.Streams.DeflaterOutputStream.buffer_"> | ||
1669 | <summary> | ||
1670 | This buffer is used temporarily to retrieve the bytes from the | ||
1671 | deflater and write them to the underlying output stream. | ||
1672 | </summary> | ||
1673 | </member> | ||
1674 | <member name="F:ICSharpCode.SharpZipLib.Zip.Compression.Streams.DeflaterOutputStream.deflater_"> | ||
1675 | <summary> | ||
1676 | The deflater which is used to deflate the stream. | ||
1677 | </summary> | ||
1678 | </member> | ||
1679 | <member name="F:ICSharpCode.SharpZipLib.Zip.Compression.Streams.DeflaterOutputStream.baseOutputStream_"> | ||
1680 | <summary> | ||
1681 | Base stream the deflater depends on. | ||
1682 | </summary> | ||
1683 | </member> | ||
1684 | <member name="P:ICSharpCode.SharpZipLib.Zip.Compression.Streams.DeflaterOutputStream.IsStreamOwner"> | ||
1685 | <summary> | ||
1686 | Get/set flag indicating ownership of the underlying stream. | ||
1687 | When the flag is true <see cref="M:ICSharpCode.SharpZipLib.Zip.Compression.Streams.DeflaterOutputStream.Close"></see> will close the underlying stream also. | ||
1688 | </summary> | ||
1689 | </member> | ||
1690 | <member name="P:ICSharpCode.SharpZipLib.Zip.Compression.Streams.DeflaterOutputStream.CanPatchEntries"> | ||
1691 | <summary> | ||
1692 | Allows client to determine if an entry can be patched after its added | ||
1693 | </summary> | ||
1694 | </member> | ||
1695 | <member name="P:ICSharpCode.SharpZipLib.Zip.Compression.Streams.DeflaterOutputStream.Password"> | ||
1696 | <summary> | ||
1697 | Get/set the password used for encryption. | ||
1698 | </summary> | ||
1699 | <remarks>When set to null or if the password is empty no encryption is performed</remarks> | ||
1700 | </member> | ||
1701 | <member name="P:ICSharpCode.SharpZipLib.Zip.Compression.Streams.DeflaterOutputStream.CanRead"> | ||
1702 | <summary> | ||
1703 | Gets value indicating stream can be read from | ||
1704 | </summary> | ||
1705 | </member> | ||
1706 | <member name="P:ICSharpCode.SharpZipLib.Zip.Compression.Streams.DeflaterOutputStream.CanSeek"> | ||
1707 | <summary> | ||
1708 | Gets a value indicating if seeking is supported for this stream | ||
1709 | This property always returns false | ||
1710 | </summary> | ||
1711 | </member> | ||
1712 | <member name="P:ICSharpCode.SharpZipLib.Zip.Compression.Streams.DeflaterOutputStream.CanWrite"> | ||
1713 | <summary> | ||
1714 | Get value indicating if this stream supports writing | ||
1715 | </summary> | ||
1716 | </member> | ||
1717 | <member name="P:ICSharpCode.SharpZipLib.Zip.Compression.Streams.DeflaterOutputStream.Length"> | ||
1718 | <summary> | ||
1719 | Get current length of stream | ||
1720 | </summary> | ||
1721 | </member> | ||
1722 | <member name="P:ICSharpCode.SharpZipLib.Zip.Compression.Streams.DeflaterOutputStream.Position"> | ||
1723 | <summary> | ||
1724 | Gets the current position within the stream. | ||
1725 | </summary> | ||
1726 | <exception cref="T:System.NotSupportedException">Any attempt to set position</exception> | ||
1727 | </member> | ||
1728 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipOutputStream.#ctor(System.IO.Stream)"> | ||
1729 | <summary> | ||
1730 | Creates a new Zip output stream, writing a zip archive. | ||
1731 | </summary> | ||
1732 | <param name="baseOutputStream"> | ||
1733 | The output stream to which the archive contents are written. | ||
1734 | </param> | ||
1735 | </member> | ||
1736 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipOutputStream.SetComment(System.String)"> | ||
1737 | <summary> | ||
1738 | Set the zip file comment. | ||
1739 | </summary> | ||
1740 | <param name="comment"> | ||
1741 | The comment text for the entire archive. | ||
1742 | </param> | ||
1743 | <exception name ="ArgumentOutOfRangeException"> | ||
1744 | The converted comment is longer than 0xffff bytes. | ||
1745 | </exception> | ||
1746 | </member> | ||
1747 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipOutputStream.SetLevel(System.Int32)"> | ||
1748 | <summary> | ||
1749 | Sets the compression level. The new level will be activated | ||
1750 | immediately. | ||
1751 | </summary> | ||
1752 | <param name="level">The new compression level (1 to 9).</param> | ||
1753 | <exception cref="T:System.ArgumentOutOfRangeException"> | ||
1754 | Level specified is not supported. | ||
1755 | </exception> | ||
1756 | <see cref="T:ICSharpCode.SharpZipLib.Zip.Compression.Deflater"/> | ||
1757 | </member> | ||
1758 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipOutputStream.GetLevel"> | ||
1759 | <summary> | ||
1760 | Get the current deflater compression level | ||
1761 | </summary> | ||
1762 | <returns>The current compression level</returns> | ||
1763 | </member> | ||
1764 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipOutputStream.WriteLeShort(System.Int32)"> | ||
1765 | <summary> | ||
1766 | Write an unsigned short in little endian byte order. | ||
1767 | </summary> | ||
1768 | </member> | ||
1769 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipOutputStream.WriteLeInt(System.Int32)"> | ||
1770 | <summary> | ||
1771 | Write an int in little endian byte order. | ||
1772 | </summary> | ||
1773 | </member> | ||
1774 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipOutputStream.WriteLeLong(System.Int64)"> | ||
1775 | <summary> | ||
1776 | Write an int in little endian byte order. | ||
1777 | </summary> | ||
1778 | </member> | ||
1779 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipOutputStream.PutNextEntry(ICSharpCode.SharpZipLib.Zip.ZipEntry)"> | ||
1780 | <summary> | ||
1781 | Starts a new Zip entry. It automatically closes the previous | ||
1782 | entry if present. | ||
1783 | All entry elements bar name are optional, but must be correct if present. | ||
1784 | If the compression method is stored and the output is not patchable | ||
1785 | the compression for that entry is automatically changed to deflate level 0 | ||
1786 | </summary> | ||
1787 | <param name="entry"> | ||
1788 | the entry. | ||
1789 | </param> | ||
1790 | <exception cref="T:System.ArgumentNullException"> | ||
1791 | if entry passed is null. | ||
1792 | </exception> | ||
1793 | <exception cref="T:System.IO.IOException"> | ||
1794 | if an I/O error occured. | ||
1795 | </exception> | ||
1796 | <exception cref="T:System.InvalidOperationException"> | ||
1797 | if stream was finished | ||
1798 | </exception> | ||
1799 | <exception cref="T:ICSharpCode.SharpZipLib.Zip.ZipException"> | ||
1800 | Too many entries in the Zip file<br/> | ||
1801 | Entry name is too long<br/> | ||
1802 | Finish has already been called<br/> | ||
1803 | </exception> | ||
1804 | </member> | ||
1805 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipOutputStream.CloseEntry"> | ||
1806 | <summary> | ||
1807 | Closes the current entry, updating header and footer information as required | ||
1808 | </summary> | ||
1809 | <exception cref="T:System.IO.IOException"> | ||
1810 | An I/O error occurs. | ||
1811 | </exception> | ||
1812 | <exception cref="T:System.InvalidOperationException"> | ||
1813 | No entry is active. | ||
1814 | </exception> | ||
1815 | </member> | ||
1816 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipOutputStream.Write(System.Byte[],System.Int32,System.Int32)"> | ||
1817 | <summary> | ||
1818 | Writes the given buffer to the current entry. | ||
1819 | </summary> | ||
1820 | <param name="buffer">The buffer containing data to write.</param> | ||
1821 | <param name="offset">The offset of the first byte to write.</param> | ||
1822 | <param name="count">The number of bytes to write.</param> | ||
1823 | <exception cref="T:ICSharpCode.SharpZipLib.Zip.ZipException">Archive size is invalid</exception> | ||
1824 | <exception cref="T:System.InvalidOperationException">No entry is active.</exception> | ||
1825 | </member> | ||
1826 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipOutputStream.Finish"> | ||
1827 | <summary> | ||
1828 | Finishes the stream. This will write the central directory at the | ||
1829 | end of the zip file and flush the stream. | ||
1830 | </summary> | ||
1831 | <remarks> | ||
1832 | This is automatically called when the stream is closed. | ||
1833 | </remarks> | ||
1834 | <exception cref="T:System.IO.IOException"> | ||
1835 | An I/O error occurs. | ||
1836 | </exception> | ||
1837 | <exception cref="T:ICSharpCode.SharpZipLib.Zip.ZipException"> | ||
1838 | Comment exceeds the maximum length<br/> | ||
1839 | Entry name exceeds the maximum length | ||
1840 | </exception> | ||
1841 | </member> | ||
1842 | <member name="F:ICSharpCode.SharpZipLib.Zip.ZipOutputStream.entries"> | ||
1843 | <summary> | ||
1844 | The entries for the archive. | ||
1845 | </summary> | ||
1846 | </member> | ||
1847 | <member name="F:ICSharpCode.SharpZipLib.Zip.ZipOutputStream.crc"> | ||
1848 | <summary> | ||
1849 | Used to track the crc of data added to entries. | ||
1850 | </summary> | ||
1851 | </member> | ||
1852 | <member name="F:ICSharpCode.SharpZipLib.Zip.ZipOutputStream.curEntry"> | ||
1853 | <summary> | ||
1854 | The current entry being added. | ||
1855 | </summary> | ||
1856 | </member> | ||
1857 | <member name="F:ICSharpCode.SharpZipLib.Zip.ZipOutputStream.size"> | ||
1858 | <summary> | ||
1859 | Used to track the size of data for an entry during writing. | ||
1860 | </summary> | ||
1861 | </member> | ||
1862 | <member name="F:ICSharpCode.SharpZipLib.Zip.ZipOutputStream.offset"> | ||
1863 | <summary> | ||
1864 | Offset to be recorded for each entry in the central header. | ||
1865 | </summary> | ||
1866 | </member> | ||
1867 | <member name="F:ICSharpCode.SharpZipLib.Zip.ZipOutputStream.zipComment"> | ||
1868 | <summary> | ||
1869 | Comment for the entire archive recorded in central header. | ||
1870 | </summary> | ||
1871 | </member> | ||
1872 | <member name="F:ICSharpCode.SharpZipLib.Zip.ZipOutputStream.patchEntryHeader"> | ||
1873 | <summary> | ||
1874 | Flag indicating that header patching is required for the current entry. | ||
1875 | </summary> | ||
1876 | </member> | ||
1877 | <member name="F:ICSharpCode.SharpZipLib.Zip.ZipOutputStream.crcPatchPos"> | ||
1878 | <summary> | ||
1879 | Position to patch crc | ||
1880 | </summary> | ||
1881 | </member> | ||
1882 | <member name="F:ICSharpCode.SharpZipLib.Zip.ZipOutputStream.sizePatchPos"> | ||
1883 | <summary> | ||
1884 | Position to patch size. | ||
1885 | </summary> | ||
1886 | </member> | ||
1887 | <member name="P:ICSharpCode.SharpZipLib.Zip.ZipOutputStream.IsFinished"> | ||
1888 | <summary> | ||
1889 | Gets a flag value of true if the central header has been added for this archive; false if it has not been added. | ||
1890 | </summary> | ||
1891 | <remarks>No further entries can be added once this has been done.</remarks> | ||
1892 | </member> | ||
1893 | <member name="P:ICSharpCode.SharpZipLib.Zip.ZipOutputStream.UseZip64"> | ||
1894 | <summary> | ||
1895 | Get / set a value indicating how Zip64 Extension usage is determined when adding entries. | ||
1896 | </summary> | ||
1897 | <remarks>Older archivers may not understand Zip64 extensions. | ||
1898 | If backwards compatability is an issue be careful when adding <see cref="P:ICSharpCode.SharpZipLib.Zip.ZipEntry.Size">entries</see> to an archive. | ||
1899 | Setting this property to off is workable but less desirable as in those circumstances adding a file | ||
1900 | larger then 4GB will fail.</remarks> | ||
1901 | </member> | ||
1902 | <member name="T:ICSharpCode.SharpZipLib.Core.INameTransform"> | ||
1903 | <summary> | ||
1904 | INameTransform defines how file system names are transformed for use with archives. | ||
1905 | </summary> | ||
1906 | </member> | ||
1907 | <member name="M:ICSharpCode.SharpZipLib.Core.INameTransform.TransformFile(System.String)"> | ||
1908 | <summary> | ||
1909 | Given a file name determine the transformed value. | ||
1910 | </summary> | ||
1911 | <param name="name">The name to transform.</param> | ||
1912 | <returns>The transformed file name.</returns> | ||
1913 | </member> | ||
1914 | <member name="M:ICSharpCode.SharpZipLib.Core.INameTransform.TransformDirectory(System.String)"> | ||
1915 | <summary> | ||
1916 | Given a directory name determine the transformed value. | ||
1917 | </summary> | ||
1918 | <param name="name">The name to transform.</param> | ||
1919 | <returns>The transformed directory name</returns> | ||
1920 | </member> | ||
1921 | <member name="T:ICSharpCode.SharpZipLib.Zip.Compression.DeflaterConstants"> | ||
1922 | <summary> | ||
1923 | This class contains constants used for deflation. | ||
1924 | </summary> | ||
1925 | </member> | ||
1926 | <member name="F:ICSharpCode.SharpZipLib.Zip.Compression.DeflaterConstants.DEBUGGING"> | ||
1927 | <summary> | ||
1928 | Set to true to enable debugging | ||
1929 | </summary> | ||
1930 | </member> | ||
1931 | <member name="F:ICSharpCode.SharpZipLib.Zip.Compression.DeflaterConstants.STORED_BLOCK"> | ||
1932 | <summary> | ||
1933 | Written to Zip file to identify a stored block | ||
1934 | </summary> | ||
1935 | </member> | ||
1936 | <member name="F:ICSharpCode.SharpZipLib.Zip.Compression.DeflaterConstants.STATIC_TREES"> | ||
1937 | <summary> | ||
1938 | Identifies static tree in Zip file | ||
1939 | </summary> | ||
1940 | </member> | ||
1941 | <member name="F:ICSharpCode.SharpZipLib.Zip.Compression.DeflaterConstants.DYN_TREES"> | ||
1942 | <summary> | ||
1943 | Identifies dynamic tree in Zip file | ||
1944 | </summary> | ||
1945 | </member> | ||
1946 | <member name="F:ICSharpCode.SharpZipLib.Zip.Compression.DeflaterConstants.PRESET_DICT"> | ||
1947 | <summary> | ||
1948 | Header flag indicating a preset dictionary for deflation | ||
1949 | </summary> | ||
1950 | </member> | ||
1951 | <member name="F:ICSharpCode.SharpZipLib.Zip.Compression.DeflaterConstants.DEFAULT_MEM_LEVEL"> | ||
1952 | <summary> | ||
1953 | Sets internal buffer sizes for Huffman encoding | ||
1954 | </summary> | ||
1955 | </member> | ||
1956 | <member name="F:ICSharpCode.SharpZipLib.Zip.Compression.DeflaterConstants.MAX_MATCH"> | ||
1957 | <summary> | ||
1958 | Internal compression engine constant | ||
1959 | </summary> | ||
1960 | </member> | ||
1961 | <member name="F:ICSharpCode.SharpZipLib.Zip.Compression.DeflaterConstants.MIN_MATCH"> | ||
1962 | <summary> | ||
1963 | Internal compression engine constant | ||
1964 | </summary> | ||
1965 | </member> | ||
1966 | <member name="F:ICSharpCode.SharpZipLib.Zip.Compression.DeflaterConstants.MAX_WBITS"> | ||
1967 | <summary> | ||
1968 | Internal compression engine constant | ||
1969 | </summary> | ||
1970 | </member> | ||
1971 | <member name="F:ICSharpCode.SharpZipLib.Zip.Compression.DeflaterConstants.WSIZE"> | ||
1972 | <summary> | ||
1973 | Internal compression engine constant | ||
1974 | </summary> | ||
1975 | </member> | ||
1976 | <member name="F:ICSharpCode.SharpZipLib.Zip.Compression.DeflaterConstants.WMASK"> | ||
1977 | <summary> | ||
1978 | Internal compression engine constant | ||
1979 | </summary> | ||
1980 | </member> | ||
1981 | <member name="F:ICSharpCode.SharpZipLib.Zip.Compression.DeflaterConstants.HASH_BITS"> | ||
1982 | <summary> | ||
1983 | Internal compression engine constant | ||
1984 | </summary> | ||
1985 | </member> | ||
1986 | <member name="F:ICSharpCode.SharpZipLib.Zip.Compression.DeflaterConstants.HASH_SIZE"> | ||
1987 | <summary> | ||
1988 | Internal compression engine constant | ||
1989 | </summary> | ||
1990 | </member> | ||
1991 | <member name="F:ICSharpCode.SharpZipLib.Zip.Compression.DeflaterConstants.HASH_MASK"> | ||
1992 | <summary> | ||
1993 | Internal compression engine constant | ||
1994 | </summary> | ||
1995 | </member> | ||
1996 | <member name="F:ICSharpCode.SharpZipLib.Zip.Compression.DeflaterConstants.HASH_SHIFT"> | ||
1997 | <summary> | ||
1998 | Internal compression engine constant | ||
1999 | </summary> | ||
2000 | </member> | ||
2001 | <member name="F:ICSharpCode.SharpZipLib.Zip.Compression.DeflaterConstants.MIN_LOOKAHEAD"> | ||
2002 | <summary> | ||
2003 | Internal compression engine constant | ||
2004 | </summary> | ||
2005 | </member> | ||
2006 | <member name="F:ICSharpCode.SharpZipLib.Zip.Compression.DeflaterConstants.MAX_DIST"> | ||
2007 | <summary> | ||
2008 | Internal compression engine constant | ||
2009 | </summary> | ||
2010 | </member> | ||
2011 | <member name="F:ICSharpCode.SharpZipLib.Zip.Compression.DeflaterConstants.PENDING_BUF_SIZE"> | ||
2012 | <summary> | ||
2013 | Internal compression engine constant | ||
2014 | </summary> | ||
2015 | </member> | ||
2016 | <member name="F:ICSharpCode.SharpZipLib.Zip.Compression.DeflaterConstants.DEFLATE_STORED"> | ||
2017 | <summary> | ||
2018 | Internal compression engine constant | ||
2019 | </summary> | ||
2020 | </member> | ||
2021 | <member name="F:ICSharpCode.SharpZipLib.Zip.Compression.DeflaterConstants.DEFLATE_FAST"> | ||
2022 | <summary> | ||
2023 | Internal compression engine constant | ||
2024 | </summary> | ||
2025 | </member> | ||
2026 | <member name="F:ICSharpCode.SharpZipLib.Zip.Compression.DeflaterConstants.DEFLATE_SLOW"> | ||
2027 | <summary> | ||
2028 | Internal compression engine constant | ||
2029 | </summary> | ||
2030 | </member> | ||
2031 | <member name="F:ICSharpCode.SharpZipLib.Zip.Compression.DeflaterConstants.MAX_BLOCK_SIZE"> | ||
2032 | <summary> | ||
2033 | Internal compression engine constant | ||
2034 | </summary> | ||
2035 | </member> | ||
2036 | <member name="F:ICSharpCode.SharpZipLib.Zip.Compression.DeflaterConstants.GOOD_LENGTH"> | ||
2037 | <summary> | ||
2038 | Internal compression engine constant | ||
2039 | </summary> | ||
2040 | </member> | ||
2041 | <member name="F:ICSharpCode.SharpZipLib.Zip.Compression.DeflaterConstants.MAX_LAZY"> | ||
2042 | <summary> | ||
2043 | Internal compression engine constant | ||
2044 | </summary> | ||
2045 | </member> | ||
2046 | <member name="F:ICSharpCode.SharpZipLib.Zip.Compression.DeflaterConstants.NICE_LENGTH"> | ||
2047 | <summary> | ||
2048 | Internal compression engine constant | ||
2049 | </summary> | ||
2050 | </member> | ||
2051 | <member name="F:ICSharpCode.SharpZipLib.Zip.Compression.DeflaterConstants.MAX_CHAIN"> | ||
2052 | <summary> | ||
2053 | Internal compression engine constant | ||
2054 | </summary> | ||
2055 | </member> | ||
2056 | <member name="F:ICSharpCode.SharpZipLib.Zip.Compression.DeflaterConstants.COMPR_FUNC"> | ||
2057 | <summary> | ||
2058 | Internal compression engine constant | ||
2059 | </summary> | ||
2060 | </member> | ||
2061 | <member name="T:ICSharpCode.SharpZipLib.Zip.Compression.DeflaterPending"> | ||
2062 | <summary> | ||
2063 | This class stores the pending output of the Deflater. | ||
2064 | |||
2065 | author of the original java version : Jochen Hoenicke | ||
2066 | </summary> | ||
2067 | </member> | ||
2068 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.DeflaterPending.#ctor"> | ||
2069 | <summary> | ||
2070 | Construct instance with default buffer size | ||
2071 | </summary> | ||
2072 | </member> | ||
2073 | <member name="T:ICSharpCode.SharpZipLib.Core.PathFilter"> | ||
2074 | <summary> | ||
2075 | PathFilter filters directories and files using a form of <see cref="T:System.Text.RegularExpressions.Regex">regular expressions</see> | ||
2076 | by full path name. | ||
2077 | See <see cref="T:ICSharpCode.SharpZipLib.Core.NameFilter">NameFilter</see> for more detail on filtering. | ||
2078 | </summary> | ||
2079 | </member> | ||
2080 | <member name="M:ICSharpCode.SharpZipLib.Core.PathFilter.#ctor(System.String)"> | ||
2081 | <summary> | ||
2082 | Initialise a new instance of <see cref="T:ICSharpCode.SharpZipLib.Core.PathFilter"></see>. | ||
2083 | </summary> | ||
2084 | <param name="filter">The <see cref="T:ICSharpCode.SharpZipLib.Core.NameFilter">filter</see> expression to apply.</param> | ||
2085 | </member> | ||
2086 | <member name="M:ICSharpCode.SharpZipLib.Core.PathFilter.IsMatch(System.String)"> | ||
2087 | <summary> | ||
2088 | Test a name to see if it matches the filter. | ||
2089 | </summary> | ||
2090 | <param name="name">The name to test.</param> | ||
2091 | <returns>True if the name matches, false otherwise.</returns> | ||
2092 | </member> | ||
2093 | <member name="T:ICSharpCode.SharpZipLib.Core.ExtendedPathFilter"> | ||
2094 | <summary> | ||
2095 | ExtendedPathFilter filters based on name, file size, and the last write time of the file. | ||
2096 | </summary> | ||
2097 | <remarks>Provides an example of how to customise filtering.</remarks> | ||
2098 | </member> | ||
2099 | <member name="M:ICSharpCode.SharpZipLib.Core.ExtendedPathFilter.#ctor(System.String,System.Int64,System.Int64)"> | ||
2100 | <summary> | ||
2101 | Initialise a new instance of ExtendedPathFilter. | ||
2102 | </summary> | ||
2103 | <param name="filter">The filter to apply.</param> | ||
2104 | <param name="minSize">The minimum file size to include.</param> | ||
2105 | <param name="maxSize">The maximum file size to include.</param> | ||
2106 | </member> | ||
2107 | <member name="M:ICSharpCode.SharpZipLib.Core.ExtendedPathFilter.#ctor(System.String,System.DateTime,System.DateTime)"> | ||
2108 | <summary> | ||
2109 | Initialise a new instance of ExtendedPathFilter. | ||
2110 | </summary> | ||
2111 | <param name="filter">The filter to apply.</param> | ||
2112 | <param name="minDate">The minimum <see cref="T:System.DateTime"/> to include.</param> | ||
2113 | <param name="maxDate">The maximum <see cref="T:System.DateTime"/> to include.</param> | ||
2114 | </member> | ||
2115 | <member name="M:ICSharpCode.SharpZipLib.Core.ExtendedPathFilter.#ctor(System.String,System.Int64,System.Int64,System.DateTime,System.DateTime)"> | ||
2116 | <summary> | ||
2117 | Initialise a new instance of ExtendedPathFilter. | ||
2118 | </summary> | ||
2119 | <param name="filter">The filter to apply.</param> | ||
2120 | <param name="minSize">The minimum file size to include.</param> | ||
2121 | <param name="maxSize">The maximum file size to include.</param> | ||
2122 | <param name="minDate">The minimum <see cref="T:System.DateTime"/> to include.</param> | ||
2123 | <param name="maxDate">The maximum <see cref="T:System.DateTime"/> to include.</param> | ||
2124 | </member> | ||
2125 | <member name="M:ICSharpCode.SharpZipLib.Core.ExtendedPathFilter.IsMatch(System.String)"> | ||
2126 | <summary> | ||
2127 | Test a filename to see if it matches the filter. | ||
2128 | </summary> | ||
2129 | <param name="name">The filename to test.</param> | ||
2130 | <returns>True if the filter matches, false otherwise.</returns> | ||
2131 | </member> | ||
2132 | <member name="P:ICSharpCode.SharpZipLib.Core.ExtendedPathFilter.MinSize"> | ||
2133 | <summary> | ||
2134 | Get/set the minimum size for a file that will match this filter. | ||
2135 | </summary> | ||
2136 | </member> | ||
2137 | <member name="P:ICSharpCode.SharpZipLib.Core.ExtendedPathFilter.MaxSize"> | ||
2138 | <summary> | ||
2139 | Get/set the maximum size for a file that will match this filter. | ||
2140 | </summary> | ||
2141 | </member> | ||
2142 | <member name="P:ICSharpCode.SharpZipLib.Core.ExtendedPathFilter.MinDate"> | ||
2143 | <summary> | ||
2144 | Get/set the minimum <see cref="T:System.DateTime"/> value that will match for this filter. | ||
2145 | </summary> | ||
2146 | <remarks>Files with a LastWrite time less than this value are excluded by the filter.</remarks> | ||
2147 | </member> | ||
2148 | <member name="P:ICSharpCode.SharpZipLib.Core.ExtendedPathFilter.MaxDate"> | ||
2149 | <summary> | ||
2150 | Get/set the maximum <see cref="T:System.DateTime"/> value that will match for this filter. | ||
2151 | </summary> | ||
2152 | <remarks>Files with a LastWrite time greater than this value are excluded by the filter.</remarks> | ||
2153 | </member> | ||
2154 | <member name="T:ICSharpCode.SharpZipLib.Core.NameAndSizeFilter"> | ||
2155 | <summary> | ||
2156 | NameAndSizeFilter filters based on name and file size. | ||
2157 | </summary> | ||
2158 | <remarks>A sample showing how filters might be extended.</remarks> | ||
2159 | </member> | ||
2160 | <member name="M:ICSharpCode.SharpZipLib.Core.NameAndSizeFilter.#ctor(System.String,System.Int64,System.Int64)"> | ||
2161 | <summary> | ||
2162 | Initialise a new instance of NameAndSizeFilter. | ||
2163 | </summary> | ||
2164 | <param name="filter">The filter to apply.</param> | ||
2165 | <param name="minSize">The minimum file size to include.</param> | ||
2166 | <param name="maxSize">The maximum file size to include.</param> | ||
2167 | </member> | ||
2168 | <member name="M:ICSharpCode.SharpZipLib.Core.NameAndSizeFilter.IsMatch(System.String)"> | ||
2169 | <summary> | ||
2170 | Test a filename to see if it matches the filter. | ||
2171 | </summary> | ||
2172 | <param name="name">The filename to test.</param> | ||
2173 | <returns>True if the filter matches, false otherwise.</returns> | ||
2174 | </member> | ||
2175 | <member name="P:ICSharpCode.SharpZipLib.Core.NameAndSizeFilter.MinSize"> | ||
2176 | <summary> | ||
2177 | Get/set the minimum size for a file that will match this filter. | ||
2178 | </summary> | ||
2179 | </member> | ||
2180 | <member name="P:ICSharpCode.SharpZipLib.Core.NameAndSizeFilter.MaxSize"> | ||
2181 | <summary> | ||
2182 | Get/set the maximum size for a file that will match this filter. | ||
2183 | </summary> | ||
2184 | </member> | ||
2185 | <member name="T:ICSharpCode.SharpZipLib.BZip2.BZip2Exception"> | ||
2186 | <summary> | ||
2187 | BZip2Exception represents exceptions specific to Bzip2 algorithm | ||
2188 | </summary> | ||
2189 | </member> | ||
2190 | <member name="M:ICSharpCode.SharpZipLib.BZip2.BZip2Exception.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)"> | ||
2191 | <summary> | ||
2192 | Deserialization constructor | ||
2193 | </summary> | ||
2194 | <param name="info"><see cref="T:System.Runtime.Serialization.SerializationInfo"/> for this constructor</param> | ||
2195 | <param name="context"><see cref="T:System.Runtime.Serialization.StreamingContext"/> for this constructor</param> | ||
2196 | </member> | ||
2197 | <member name="M:ICSharpCode.SharpZipLib.BZip2.BZip2Exception.#ctor"> | ||
2198 | <summary> | ||
2199 | Initialise a new instance of BZip2Exception. | ||
2200 | </summary> | ||
2201 | </member> | ||
2202 | <member name="M:ICSharpCode.SharpZipLib.BZip2.BZip2Exception.#ctor(System.String)"> | ||
2203 | <summary> | ||
2204 | Initialise a new instance of BZip2Exception with its message set to message. | ||
2205 | </summary> | ||
2206 | <param name="message">The message describing the error.</param> | ||
2207 | </member> | ||
2208 | <member name="M:ICSharpCode.SharpZipLib.BZip2.BZip2Exception.#ctor(System.String,System.Exception)"> | ||
2209 | <summary> | ||
2210 | Initialise an instance of BZip2Exception | ||
2211 | </summary> | ||
2212 | <param name="message">A message describing the error.</param> | ||
2213 | <param name="exception">The exception that is the cause of the current exception.</param> | ||
2214 | </member> | ||
2215 | <member name="T:ICSharpCode.SharpZipLib.GZip.GZipException"> | ||
2216 | <summary> | ||
2217 | GZipException represents a Gzip specific exception | ||
2218 | </summary> | ||
2219 | </member> | ||
2220 | <member name="M:ICSharpCode.SharpZipLib.GZip.GZipException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)"> | ||
2221 | <summary> | ||
2222 | Deserialization constructor | ||
2223 | </summary> | ||
2224 | <param name="info"><see cref="T:System.Runtime.Serialization.SerializationInfo"/> for this constructor</param> | ||
2225 | <param name="context"><see cref="T:System.Runtime.Serialization.StreamingContext"/> for this constructor</param> | ||
2226 | </member> | ||
2227 | <member name="M:ICSharpCode.SharpZipLib.GZip.GZipException.#ctor"> | ||
2228 | <summary> | ||
2229 | Initialise a new instance of GZipException | ||
2230 | </summary> | ||
2231 | </member> | ||
2232 | <member name="M:ICSharpCode.SharpZipLib.GZip.GZipException.#ctor(System.String)"> | ||
2233 | <summary> | ||
2234 | Initialise a new instance of GZipException with its message string. | ||
2235 | </summary> | ||
2236 | <param name="message">A <see cref="T:System.String"/> that describes the error.</param> | ||
2237 | </member> | ||
2238 | <member name="M:ICSharpCode.SharpZipLib.GZip.GZipException.#ctor(System.String,System.Exception)"> | ||
2239 | <summary> | ||
2240 | Initialise a new instance of <see cref="T:ICSharpCode.SharpZipLib.GZip.GZipException"></see>. | ||
2241 | </summary> | ||
2242 | <param name="message">A <see cref="T:System.String"/> that describes the error.</param> | ||
2243 | <param name="innerException">The <see cref="T:System.Exception"/> that caused this exception.</param> | ||
2244 | </member> | ||
2245 | <member name="T:ICSharpCode.SharpZipLib.Zip.Compression.Streams.OutputWindow"> | ||
2246 | <summary> | ||
2247 | Contains the output from the Inflation process. | ||
2248 | We need to have a window so that we can refer backwards into the output stream | ||
2249 | to repeat stuff.<br/> | ||
2250 | Author of the original java version : John Leuner | ||
2251 | </summary> | ||
2252 | </member> | ||
2253 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.Streams.OutputWindow.Write(System.Int32)"> | ||
2254 | <summary> | ||
2255 | Write a byte to this output window | ||
2256 | </summary> | ||
2257 | <param name="value">value to write</param> | ||
2258 | <exception cref="T:System.InvalidOperationException"> | ||
2259 | if window is full | ||
2260 | </exception> | ||
2261 | </member> | ||
2262 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.Streams.OutputWindow.Repeat(System.Int32,System.Int32)"> | ||
2263 | <summary> | ||
2264 | Append a byte pattern already in the window itself | ||
2265 | </summary> | ||
2266 | <param name="length">length of pattern to copy</param> | ||
2267 | <param name="distance">distance from end of window pattern occurs</param> | ||
2268 | <exception cref="T:System.InvalidOperationException"> | ||
2269 | If the repeated data overflows the window | ||
2270 | </exception> | ||
2271 | </member> | ||
2272 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.Streams.OutputWindow.CopyStored(ICSharpCode.SharpZipLib.Zip.Compression.Streams.StreamManipulator,System.Int32)"> | ||
2273 | <summary> | ||
2274 | Copy from input manipulator to internal window | ||
2275 | </summary> | ||
2276 | <param name="input">source of data</param> | ||
2277 | <param name="length">length of data to copy</param> | ||
2278 | <returns>the number of bytes copied</returns> | ||
2279 | </member> | ||
2280 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.Streams.OutputWindow.CopyDict(System.Byte[],System.Int32,System.Int32)"> | ||
2281 | <summary> | ||
2282 | Copy dictionary to window | ||
2283 | </summary> | ||
2284 | <param name="dictionary">source dictionary</param> | ||
2285 | <param name="offset">offset of start in source dictionary</param> | ||
2286 | <param name="length">length of dictionary</param> | ||
2287 | <exception cref="T:System.InvalidOperationException"> | ||
2288 | If window isnt empty | ||
2289 | </exception> | ||
2290 | </member> | ||
2291 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.Streams.OutputWindow.GetFreeSpace"> | ||
2292 | <summary> | ||
2293 | Get remaining unfilled space in window | ||
2294 | </summary> | ||
2295 | <returns>Number of bytes left in window</returns> | ||
2296 | </member> | ||
2297 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.Streams.OutputWindow.GetAvailable"> | ||
2298 | <summary> | ||
2299 | Get bytes available for output in window | ||
2300 | </summary> | ||
2301 | <returns>Number of bytes filled</returns> | ||
2302 | </member> | ||
2303 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.Streams.OutputWindow.CopyOutput(System.Byte[],System.Int32,System.Int32)"> | ||
2304 | <summary> | ||
2305 | Copy contents of window to output | ||
2306 | </summary> | ||
2307 | <param name="output">buffer to copy to</param> | ||
2308 | <param name="offset">offset to start at</param> | ||
2309 | <param name="len">number of bytes to count</param> | ||
2310 | <returns>The number of bytes copied</returns> | ||
2311 | <exception cref="T:System.InvalidOperationException"> | ||
2312 | If a window underflow occurs | ||
2313 | </exception> | ||
2314 | </member> | ||
2315 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.Streams.OutputWindow.Reset"> | ||
2316 | <summary> | ||
2317 | Reset by clearing window so <see cref="M:ICSharpCode.SharpZipLib.Zip.Compression.Streams.OutputWindow.GetAvailable">GetAvailable</see> returns 0 | ||
2318 | </summary> | ||
2319 | </member> | ||
2320 | <member name="T:ICSharpCode.SharpZipLib.BZip2.BZip2Constants"> | ||
2321 | <summary> | ||
2322 | Defines internal values for both compression and decompression | ||
2323 | </summary> | ||
2324 | </member> | ||
2325 | <member name="F:ICSharpCode.SharpZipLib.BZip2.BZip2Constants.baseBlockSize"> | ||
2326 | <summary> | ||
2327 | When multiplied by compression parameter (1-9) gives the block size for compression | ||
2328 | 9 gives the best compresssion but uses the most memory. | ||
2329 | </summary> | ||
2330 | </member> | ||
2331 | <member name="F:ICSharpCode.SharpZipLib.BZip2.BZip2Constants.MAX_ALPHA_SIZE"> | ||
2332 | <summary> | ||
2333 | Backend constant | ||
2334 | </summary> | ||
2335 | </member> | ||
2336 | <member name="F:ICSharpCode.SharpZipLib.BZip2.BZip2Constants.MAX_CODE_LEN"> | ||
2337 | <summary> | ||
2338 | Backend constant | ||
2339 | </summary> | ||
2340 | </member> | ||
2341 | <member name="F:ICSharpCode.SharpZipLib.BZip2.BZip2Constants.RUNA"> | ||
2342 | <summary> | ||
2343 | Backend constant | ||
2344 | </summary> | ||
2345 | </member> | ||
2346 | <member name="F:ICSharpCode.SharpZipLib.BZip2.BZip2Constants.RUNB"> | ||
2347 | <summary> | ||
2348 | Backend constant | ||
2349 | </summary> | ||
2350 | </member> | ||
2351 | <member name="F:ICSharpCode.SharpZipLib.BZip2.BZip2Constants.N_GROUPS"> | ||
2352 | <summary> | ||
2353 | Backend constant | ||
2354 | </summary> | ||
2355 | </member> | ||
2356 | <member name="F:ICSharpCode.SharpZipLib.BZip2.BZip2Constants.G_SIZE"> | ||
2357 | <summary> | ||
2358 | Backend constant | ||
2359 | </summary> | ||
2360 | </member> | ||
2361 | <member name="F:ICSharpCode.SharpZipLib.BZip2.BZip2Constants.N_ITERS"> | ||
2362 | <summary> | ||
2363 | Backend constant | ||
2364 | </summary> | ||
2365 | </member> | ||
2366 | <member name="F:ICSharpCode.SharpZipLib.BZip2.BZip2Constants.MAX_SELECTORS"> | ||
2367 | <summary> | ||
2368 | Backend constant | ||
2369 | </summary> | ||
2370 | </member> | ||
2371 | <member name="F:ICSharpCode.SharpZipLib.BZip2.BZip2Constants.NUM_OVERSHOOT_BYTES"> | ||
2372 | <summary> | ||
2373 | Backend constant | ||
2374 | </summary> | ||
2375 | </member> | ||
2376 | <member name="F:ICSharpCode.SharpZipLib.BZip2.BZip2Constants.rNums"> | ||
2377 | <summary> | ||
2378 | Random numbers used to randomise repetitive blocks | ||
2379 | </summary> | ||
2380 | </member> | ||
2381 | <member name="T:ICSharpCode.SharpZipLib.GZip.GZipOutputStream"> | ||
2382 | <summary> | ||
2383 | This filter stream is used to compress a stream into a "GZIP" stream. | ||
2384 | The "GZIP" format is described in RFC 1952. | ||
2385 | |||
2386 | author of the original java version : John Leuner | ||
2387 | </summary> | ||
2388 | <example> This sample shows how to gzip a file | ||
2389 | <code> | ||
2390 | using System; | ||
2391 | using System.IO; | ||
2392 | |||
2393 | using ICSharpCode.SharpZipLib.GZip; | ||
2394 | using ICSharpCode.SharpZipLib.Core; | ||
2395 | |||
2396 | class MainClass | ||
2397 | { | ||
2398 | public static void Main(string[] args) | ||
2399 | { | ||
2400 | using (Stream s = new GZipOutputStream(File.Create(args[0] + ".gz"))) | ||
2401 | using (FileStream fs = File.OpenRead(args[0])) { | ||
2402 | byte[] writeData = new byte[4096]; | ||
2403 | Streamutils.Copy(s, fs, writeData); | ||
2404 | } | ||
2405 | } | ||
2406 | } | ||
2407 | } | ||
2408 | </code> | ||
2409 | </example> | ||
2410 | </member> | ||
2411 | <member name="F:ICSharpCode.SharpZipLib.GZip.GZipOutputStream.crc"> | ||
2412 | <summary> | ||
2413 | CRC-32 value for uncompressed data | ||
2414 | </summary> | ||
2415 | </member> | ||
2416 | <member name="M:ICSharpCode.SharpZipLib.GZip.GZipOutputStream.#ctor(System.IO.Stream)"> | ||
2417 | <summary> | ||
2418 | Creates a GzipOutputStream with the default buffer size | ||
2419 | </summary> | ||
2420 | <param name="baseOutputStream"> | ||
2421 | The stream to read data (to be compressed) from | ||
2422 | </param> | ||
2423 | </member> | ||
2424 | <member name="M:ICSharpCode.SharpZipLib.GZip.GZipOutputStream.#ctor(System.IO.Stream,System.Int32)"> | ||
2425 | <summary> | ||
2426 | Creates a GZipOutputStream with the specified buffer size | ||
2427 | </summary> | ||
2428 | <param name="baseOutputStream"> | ||
2429 | The stream to read data (to be compressed) from | ||
2430 | </param> | ||
2431 | <param name="size"> | ||
2432 | Size of the buffer to use | ||
2433 | </param> | ||
2434 | </member> | ||
2435 | <member name="M:ICSharpCode.SharpZipLib.GZip.GZipOutputStream.SetLevel(System.Int32)"> | ||
2436 | <summary> | ||
2437 | Sets the active compression level (1-9). The new level will be activated | ||
2438 | immediately. | ||
2439 | </summary> | ||
2440 | <param name="level">The compression level to set.</param> | ||
2441 | <exception cref="T:System.ArgumentOutOfRangeException"> | ||
2442 | Level specified is not supported. | ||
2443 | </exception> | ||
2444 | <see cref="T:ICSharpCode.SharpZipLib.Zip.Compression.Deflater"/> | ||
2445 | </member> | ||
2446 | <member name="M:ICSharpCode.SharpZipLib.GZip.GZipOutputStream.GetLevel"> | ||
2447 | <summary> | ||
2448 | Get the current compression level. | ||
2449 | </summary> | ||
2450 | <returns>The current compression level.</returns> | ||
2451 | </member> | ||
2452 | <member name="M:ICSharpCode.SharpZipLib.GZip.GZipOutputStream.Write(System.Byte[],System.Int32,System.Int32)"> | ||
2453 | <summary> | ||
2454 | Write given buffer to output updating crc | ||
2455 | </summary> | ||
2456 | <param name="buffer">Buffer to write</param> | ||
2457 | <param name="offset">Offset of first byte in buf to write</param> | ||
2458 | <param name="count">Number of bytes to write</param> | ||
2459 | </member> | ||
2460 | <member name="M:ICSharpCode.SharpZipLib.GZip.GZipOutputStream.Close"> | ||
2461 | <summary> | ||
2462 | Writes remaining compressed output data to the output stream | ||
2463 | and closes it. | ||
2464 | </summary> | ||
2465 | </member> | ||
2466 | <member name="M:ICSharpCode.SharpZipLib.GZip.GZipOutputStream.Finish"> | ||
2467 | <summary> | ||
2468 | Finish compression and write any footer information required to stream | ||
2469 | </summary> | ||
2470 | </member> | ||
2471 | <member name="T:ICSharpCode.SharpZipLib.Zip.KeysRequiredEventArgs"> | ||
2472 | <summary> | ||
2473 | Arguments used with KeysRequiredEvent | ||
2474 | </summary> | ||
2475 | </member> | ||
2476 | <member name="M:ICSharpCode.SharpZipLib.Zip.KeysRequiredEventArgs.#ctor(System.String)"> | ||
2477 | <summary> | ||
2478 | Initialise a new instance of <see cref="T:ICSharpCode.SharpZipLib.Zip.KeysRequiredEventArgs"></see> | ||
2479 | </summary> | ||
2480 | <param name="name">The name of the file for which keys are required.</param> | ||
2481 | </member> | ||
2482 | <member name="M:ICSharpCode.SharpZipLib.Zip.KeysRequiredEventArgs.#ctor(System.String,System.Byte[])"> | ||
2483 | <summary> | ||
2484 | Initialise a new instance of <see cref="T:ICSharpCode.SharpZipLib.Zip.KeysRequiredEventArgs"></see> | ||
2485 | </summary> | ||
2486 | <param name="name">The name of the file for which keys are required.</param> | ||
2487 | <param name="keyValue">The current key value.</param> | ||
2488 | </member> | ||
2489 | <member name="P:ICSharpCode.SharpZipLib.Zip.KeysRequiredEventArgs.FileName"> | ||
2490 | <summary> | ||
2491 | Get the name of the file for which keys are required. | ||
2492 | </summary> | ||
2493 | </member> | ||
2494 | <member name="P:ICSharpCode.SharpZipLib.Zip.KeysRequiredEventArgs.Key"> | ||
2495 | <summary> | ||
2496 | Get/set the key value | ||
2497 | </summary> | ||
2498 | </member> | ||
2499 | <member name="T:ICSharpCode.SharpZipLib.Zip.TestStrategy"> | ||
2500 | <summary> | ||
2501 | The strategy to apply to testing. | ||
2502 | </summary> | ||
2503 | </member> | ||
2504 | <member name="F:ICSharpCode.SharpZipLib.Zip.TestStrategy.FindFirstError"> | ||
2505 | <summary> | ||
2506 | Find the first error only. | ||
2507 | </summary> | ||
2508 | </member> | ||
2509 | <member name="F:ICSharpCode.SharpZipLib.Zip.TestStrategy.FindAllErrors"> | ||
2510 | <summary> | ||
2511 | Find all possible errors. | ||
2512 | </summary> | ||
2513 | </member> | ||
2514 | <member name="T:ICSharpCode.SharpZipLib.Zip.TestOperation"> | ||
2515 | <summary> | ||
2516 | The operation in progress reported by a <see cref="T:ICSharpCode.SharpZipLib.Zip.ZipTestResultHandler"/> during testing. | ||
2517 | </summary> | ||
2518 | <seealso cref="M:ICSharpCode.SharpZipLib.Zip.ZipFile.TestArchive(System.Boolean)">TestArchive</seealso> | ||
2519 | </member> | ||
2520 | <member name="F:ICSharpCode.SharpZipLib.Zip.TestOperation.Initialising"> | ||
2521 | <summary> | ||
2522 | Setting up testing. | ||
2523 | </summary> | ||
2524 | </member> | ||
2525 | <member name="F:ICSharpCode.SharpZipLib.Zip.TestOperation.EntryHeader"> | ||
2526 | <summary> | ||
2527 | Testing an individual entries header | ||
2528 | </summary> | ||
2529 | </member> | ||
2530 | <member name="F:ICSharpCode.SharpZipLib.Zip.TestOperation.EntryData"> | ||
2531 | <summary> | ||
2532 | Testing an individual entries data | ||
2533 | </summary> | ||
2534 | </member> | ||
2535 | <member name="F:ICSharpCode.SharpZipLib.Zip.TestOperation.EntryComplete"> | ||
2536 | <summary> | ||
2537 | Testing an individual entry has completed. | ||
2538 | </summary> | ||
2539 | </member> | ||
2540 | <member name="F:ICSharpCode.SharpZipLib.Zip.TestOperation.MiscellaneousTests"> | ||
2541 | <summary> | ||
2542 | Running miscellaneous tests | ||
2543 | </summary> | ||
2544 | </member> | ||
2545 | <member name="F:ICSharpCode.SharpZipLib.Zip.TestOperation.Complete"> | ||
2546 | <summary> | ||
2547 | Testing is complete | ||
2548 | </summary> | ||
2549 | </member> | ||
2550 | <member name="T:ICSharpCode.SharpZipLib.Zip.TestStatus"> | ||
2551 | <summary> | ||
2552 | Status returned returned by <see cref="T:ICSharpCode.SharpZipLib.Zip.ZipTestResultHandler"/> during testing. | ||
2553 | </summary> | ||
2554 | <seealso cref="M:ICSharpCode.SharpZipLib.Zip.ZipFile.TestArchive(System.Boolean)">TestArchive</seealso> | ||
2555 | </member> | ||
2556 | <member name="M:ICSharpCode.SharpZipLib.Zip.TestStatus.#ctor(ICSharpCode.SharpZipLib.Zip.ZipFile)"> | ||
2557 | <summary> | ||
2558 | Initialise a new instance of <see cref="T:ICSharpCode.SharpZipLib.Zip.TestStatus"/> | ||
2559 | </summary> | ||
2560 | <param name="file">The <see cref="T:ICSharpCode.SharpZipLib.Zip.ZipFile"/> this status applies to.</param> | ||
2561 | </member> | ||
2562 | <member name="P:ICSharpCode.SharpZipLib.Zip.TestStatus.Operation"> | ||
2563 | <summary> | ||
2564 | Get the current <see cref="T:ICSharpCode.SharpZipLib.Zip.TestOperation"/> in progress. | ||
2565 | </summary> | ||
2566 | </member> | ||
2567 | <member name="P:ICSharpCode.SharpZipLib.Zip.TestStatus.File"> | ||
2568 | <summary> | ||
2569 | Get the <see cref="T:ICSharpCode.SharpZipLib.Zip.ZipFile"/> this status is applicable to. | ||
2570 | </summary> | ||
2571 | </member> | ||
2572 | <member name="P:ICSharpCode.SharpZipLib.Zip.TestStatus.Entry"> | ||
2573 | <summary> | ||
2574 | Get the current/last entry tested. | ||
2575 | </summary> | ||
2576 | </member> | ||
2577 | <member name="P:ICSharpCode.SharpZipLib.Zip.TestStatus.ErrorCount"> | ||
2578 | <summary> | ||
2579 | Get the number of errors detected so far. | ||
2580 | </summary> | ||
2581 | </member> | ||
2582 | <member name="P:ICSharpCode.SharpZipLib.Zip.TestStatus.BytesTested"> | ||
2583 | <summary> | ||
2584 | Get the number of bytes tested so far for the current entry. | ||
2585 | </summary> | ||
2586 | </member> | ||
2587 | <member name="P:ICSharpCode.SharpZipLib.Zip.TestStatus.EntryValid"> | ||
2588 | <summary> | ||
2589 | Get a value indicating wether the last entry test was valid. | ||
2590 | </summary> | ||
2591 | </member> | ||
2592 | <member name="T:ICSharpCode.SharpZipLib.Zip.ZipTestResultHandler"> | ||
2593 | <summary> | ||
2594 | Delegate invoked during <see cref="M:ICSharpCode.SharpZipLib.Zip.ZipFile.TestArchive(System.Boolean,ICSharpCode.SharpZipLib.Zip.TestStrategy,ICSharpCode.SharpZipLib.Zip.ZipTestResultHandler)">testing</see> if supplied indicating current progress and status. | ||
2595 | </summary> | ||
2596 | <remarks>If the message is non-null an error has occured. If the message is null | ||
2597 | the operation as found in <see cref="T:ICSharpCode.SharpZipLib.Zip.TestStatus">status</see> has started.</remarks> | ||
2598 | </member> | ||
2599 | <member name="T:ICSharpCode.SharpZipLib.Zip.FileUpdateMode"> | ||
2600 | <summary> | ||
2601 | The possible ways of <see cref="M:ICSharpCode.SharpZipLib.Zip.ZipFile.CommitUpdate">applying updates</see> to an archive. | ||
2602 | </summary> | ||
2603 | </member> | ||
2604 | <member name="F:ICSharpCode.SharpZipLib.Zip.FileUpdateMode.Safe"> | ||
2605 | <summary> | ||
2606 | Perform all updates on temporary files ensuring that the original file is saved. | ||
2607 | </summary> | ||
2608 | </member> | ||
2609 | <member name="F:ICSharpCode.SharpZipLib.Zip.FileUpdateMode.Direct"> | ||
2610 | <summary> | ||
2611 | Update the archive directly, which is faster but less safe. | ||
2612 | </summary> | ||
2613 | </member> | ||
2614 | <member name="T:ICSharpCode.SharpZipLib.Zip.ZipFile"> | ||
2615 | <summary> | ||
2616 | This class represents a Zip archive. You can ask for the contained | ||
2617 | entries, or get an input stream for a file entry. The entry is | ||
2618 | automatically decompressed. | ||
2619 | |||
2620 | You can also update the archive adding or deleting entries. | ||
2621 | |||
2622 | This class is thread safe for input: You can open input streams for arbitrary | ||
2623 | entries in different threads. | ||
2624 | <br/> | ||
2625 | <br/>Author of the original java version : Jochen Hoenicke | ||
2626 | </summary> | ||
2627 | <example> | ||
2628 | <code> | ||
2629 | using System; | ||
2630 | using System.Text; | ||
2631 | using System.Collections; | ||
2632 | using System.IO; | ||
2633 | |||
2634 | using ICSharpCode.SharpZipLib.Zip; | ||
2635 | |||
2636 | class MainClass | ||
2637 | { | ||
2638 | static public void Main(string[] args) | ||
2639 | { | ||
2640 | using (ZipFile zFile = new ZipFile(args[0])) { | ||
2641 | Console.WriteLine("Listing of : " + zFile.Name); | ||
2642 | Console.WriteLine(""); | ||
2643 | Console.WriteLine("Raw Size Size Date Time Name"); | ||
2644 | Console.WriteLine("-------- -------- -------- ------ ---------"); | ||
2645 | foreach (ZipEntry e in zFile) { | ||
2646 | if ( e.IsFile ) { | ||
2647 | DateTime d = e.DateTime; | ||
2648 | Console.WriteLine("{0, -10}{1, -10}{2} {3} {4}", e.Size, e.CompressedSize, | ||
2649 | d.ToString("dd-MM-yy"), d.ToString("HH:mm"), | ||
2650 | e.Name); | ||
2651 | } | ||
2652 | } | ||
2653 | } | ||
2654 | } | ||
2655 | } | ||
2656 | </code> | ||
2657 | </example> | ||
2658 | </member> | ||
2659 | <member name="F:ICSharpCode.SharpZipLib.Zip.ZipFile.KeysRequired"> | ||
2660 | <summary> | ||
2661 | Event handler for handling encryption keys. | ||
2662 | </summary> | ||
2663 | </member> | ||
2664 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipFile.OnKeysRequired(System.String)"> | ||
2665 | <summary> | ||
2666 | Handles getting of encryption keys when required. | ||
2667 | </summary> | ||
2668 | <param name="fileName">The file for which encryption keys are required.</param> | ||
2669 | </member> | ||
2670 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipFile.#ctor(System.String)"> | ||
2671 | <summary> | ||
2672 | Opens a Zip file with the given name for reading. | ||
2673 | </summary> | ||
2674 | <param name="name">The name of the file to open.</param> | ||
2675 | <exception cref="T:System.IO.IOException"> | ||
2676 | An i/o error occurs | ||
2677 | </exception> | ||
2678 | <exception cref="T:ICSharpCode.SharpZipLib.Zip.ZipException"> | ||
2679 | The file doesn't contain a valid zip archive. | ||
2680 | </exception> | ||
2681 | </member> | ||
2682 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipFile.#ctor(System.IO.FileStream)"> | ||
2683 | <summary> | ||
2684 | Opens a Zip file reading the given <see cref="T:System.IO.FileStream"/>. | ||
2685 | </summary> | ||
2686 | <param name="file">The <see cref="T:System.IO.FileStream"/> to read archive data from.</param> | ||
2687 | <exception cref="T:System.IO.IOException"> | ||
2688 | An i/o error occurs. | ||
2689 | </exception> | ||
2690 | <exception cref="T:ICSharpCode.SharpZipLib.Zip.ZipException"> | ||
2691 | The file doesn't contain a valid zip archive. | ||
2692 | </exception> | ||
2693 | </member> | ||
2694 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipFile.#ctor(System.IO.Stream)"> | ||
2695 | <summary> | ||
2696 | Opens a Zip file reading the given <see cref="T:System.IO.Stream"/>. | ||
2697 | </summary> | ||
2698 | <param name="stream">The <see cref="T:System.IO.Stream"/> to read archive data from.</param> | ||
2699 | <exception cref="T:System.IO.IOException"> | ||
2700 | An i/o error occurs | ||
2701 | </exception> | ||
2702 | <exception cref="T:ICSharpCode.SharpZipLib.Zip.ZipException"> | ||
2703 | The file doesn't contain a valid zip archive.<br/> | ||
2704 | The stream provided cannot seek | ||
2705 | </exception> | ||
2706 | </member> | ||
2707 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipFile.#ctor"> | ||
2708 | <summary> | ||
2709 | Initialises a default <see cref="T:ICSharpCode.SharpZipLib.Zip.ZipFile"/> instance with no entries and no file storage. | ||
2710 | </summary> | ||
2711 | </member> | ||
2712 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipFile.Finalize"> | ||
2713 | <summary> | ||
2714 | Finalize this instance. | ||
2715 | </summary> | ||
2716 | </member> | ||
2717 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipFile.Close"> | ||
2718 | <summary> | ||
2719 | Closes the ZipFile. If the stream is <see cref="P:ICSharpCode.SharpZipLib.Zip.ZipFile.IsStreamOwner">owned</see> then this also closes the underlying input stream. | ||
2720 | Once closed, no further instance methods should be called. | ||
2721 | </summary> | ||
2722 | <exception cref="T:System.IO.IOException"> | ||
2723 | An i/o error occurs. | ||
2724 | </exception> | ||
2725 | </member> | ||
2726 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipFile.Create(System.String)"> | ||
2727 | <summary> | ||
2728 | Create a new <see cref="T:ICSharpCode.SharpZipLib.Zip.ZipFile"/> whose data will be stored in a file. | ||
2729 | </summary> | ||
2730 | <param name="fileName">The name of the archive to create.</param> | ||
2731 | <returns>Returns the newly created <see cref="T:ICSharpCode.SharpZipLib.Zip.ZipFile"/></returns> | ||
2732 | </member> | ||
2733 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipFile.Create(System.IO.Stream)"> | ||
2734 | <summary> | ||
2735 | Create a new <see cref="T:ICSharpCode.SharpZipLib.Zip.ZipFile"/> whose data will be stored on a stream. | ||
2736 | </summary> | ||
2737 | <param name="outStream">The stream providing data storage.</param> | ||
2738 | <returns>Returns the newly created <see cref="T:ICSharpCode.SharpZipLib.Zip.ZipFile"/></returns> | ||
2739 | </member> | ||
2740 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipFile.GetEnumerator"> | ||
2741 | <summary> | ||
2742 | Gets an enumerator for the Zip entries in this Zip file. | ||
2743 | </summary> | ||
2744 | <returns>Returns an <see cref="T:System.Collections.IEnumerator"/> for this archive.</returns> | ||
2745 | <exception cref="T:System.InvalidOperationException"> | ||
2746 | The Zip file has been closed. | ||
2747 | </exception> | ||
2748 | </member> | ||
2749 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipFile.FindEntry(System.String,System.Boolean)"> | ||
2750 | <summary> | ||
2751 | Return the index of the entry with a matching name | ||
2752 | </summary> | ||
2753 | <param name="name">Entry name to find</param> | ||
2754 | <param name="ignoreCase">If true the comparison is case insensitive</param> | ||
2755 | <returns>The index position of the matching entry or -1 if not found</returns> | ||
2756 | <exception cref="T:System.InvalidOperationException"> | ||
2757 | The Zip file has been closed. | ||
2758 | </exception> | ||
2759 | </member> | ||
2760 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipFile.GetEntry(System.String)"> | ||
2761 | <summary> | ||
2762 | Searches for a zip entry in this archive with the given name. | ||
2763 | String comparisons are case insensitive | ||
2764 | </summary> | ||
2765 | <param name="name"> | ||
2766 | The name to find. May contain directory components separated by slashes ('/'). | ||
2767 | </param> | ||
2768 | <returns> | ||
2769 | A clone of the zip entry, or null if no entry with that name exists. | ||
2770 | </returns> | ||
2771 | <exception cref="T:System.InvalidOperationException"> | ||
2772 | The Zip file has been closed. | ||
2773 | </exception> | ||
2774 | </member> | ||
2775 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipFile.GetInputStream(ICSharpCode.SharpZipLib.Zip.ZipEntry)"> | ||
2776 | <summary> | ||
2777 | Gets an input stream for reading the given zip entry data in an uncompressed form. | ||
2778 | Normally the <see cref="T:ICSharpCode.SharpZipLib.Zip.ZipEntry"/> should be an entry returned by GetEntry(). | ||
2779 | </summary> | ||
2780 | <param name="entry">The <see cref="T:ICSharpCode.SharpZipLib.Zip.ZipEntry"/> to obtain a data <see cref="T:System.IO.Stream"/> for</param> | ||
2781 | <returns>An input <see cref="T:System.IO.Stream"/> containing data for this <see cref="T:ICSharpCode.SharpZipLib.Zip.ZipEntry"/></returns> | ||
2782 | <exception cref="T:System.InvalidOperationException"> | ||
2783 | The ZipFile has already been closed | ||
2784 | </exception> | ||
2785 | <exception cref="T:ICSharpCode.SharpZipLib.Zip.ZipException"> | ||
2786 | The compression method for the entry is unknown | ||
2787 | </exception> | ||
2788 | <exception cref="T:System.IndexOutOfRangeException"> | ||
2789 | The entry is not found in the ZipFile | ||
2790 | </exception> | ||
2791 | </member> | ||
2792 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipFile.GetInputStream(System.Int64)"> | ||
2793 | <summary> | ||
2794 | Creates an input stream reading a zip entry | ||
2795 | </summary> | ||
2796 | <param name="entryIndex">The index of the entry to obtain an input stream for.</param> | ||
2797 | <returns> | ||
2798 | An input <see cref="T:System.IO.Stream"/> containing data for this <paramref name="entryIndex"/> | ||
2799 | </returns> | ||
2800 | <exception cref="T:System.InvalidOperationException"> | ||
2801 | The ZipFile has already been closed | ||
2802 | </exception> | ||
2803 | <exception cref="T:ICSharpCode.SharpZipLib.Zip.ZipException"> | ||
2804 | The compression method for the entry is unknown | ||
2805 | </exception> | ||
2806 | <exception cref="T:System.IndexOutOfRangeException"> | ||
2807 | The entry is not found in the ZipFile | ||
2808 | </exception> | ||
2809 | </member> | ||
2810 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipFile.TestArchive(System.Boolean)"> | ||
2811 | <summary> | ||
2812 | Test an archive for integrity/validity | ||
2813 | </summary> | ||
2814 | <param name="testData">Perform low level data Crc check</param> | ||
2815 | <returns>true if all tests pass, false otherwise</returns> | ||
2816 | <remarks>Testing will terminate on the first error found.</remarks> | ||
2817 | </member> | ||
2818 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipFile.TestArchive(System.Boolean,ICSharpCode.SharpZipLib.Zip.TestStrategy,ICSharpCode.SharpZipLib.Zip.ZipTestResultHandler)"> | ||
2819 | <summary> | ||
2820 | Test an archive for integrity/validity | ||
2821 | </summary> | ||
2822 | <param name="testData">Perform low level data Crc check</param> | ||
2823 | <param name="strategy">The <see cref="T:ICSharpCode.SharpZipLib.Zip.TestStrategy"></see> to apply.</param> | ||
2824 | <param name="resultHandler">The <see cref="T:ICSharpCode.SharpZipLib.Zip.ZipTestResultHandler"></see> handler to call during testing.</param> | ||
2825 | <returns>true if all tests pass, false otherwise</returns> | ||
2826 | </member> | ||
2827 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipFile.TestLocalHeader(ICSharpCode.SharpZipLib.Zip.ZipEntry,ICSharpCode.SharpZipLib.Zip.ZipFile.HeaderTest)"> | ||
2828 | <summary> | ||
2829 | Test a local header against that provided from the central directory | ||
2830 | </summary> | ||
2831 | <param name="entry"> | ||
2832 | The entry to test against | ||
2833 | </param> | ||
2834 | <param name="tests">The type of <see cref="T:ICSharpCode.SharpZipLib.Zip.ZipFile.HeaderTest">tests</see> to carry out.</param> | ||
2835 | <returns>The offset of the entries data in the file</returns> | ||
2836 | </member> | ||
2837 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipFile.BeginUpdate(ICSharpCode.SharpZipLib.Zip.IArchiveStorage,ICSharpCode.SharpZipLib.Zip.IDynamicDataSource)"> | ||
2838 | <summary> | ||
2839 | Begin updating this <see cref="T:ICSharpCode.SharpZipLib.Zip.ZipFile"/> archive. | ||
2840 | </summary> | ||
2841 | <param name="archiveStorage">The <see cref="T:ICSharpCode.SharpZipLib.Zip.IArchiveStorage">archive storage</see> for use during the update.</param> | ||
2842 | <param name="dataSource">The <see cref="T:ICSharpCode.SharpZipLib.Zip.IDynamicDataSource">data source</see> to utilise during updating.</param> | ||
2843 | </member> | ||
2844 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipFile.BeginUpdate(ICSharpCode.SharpZipLib.Zip.IArchiveStorage)"> | ||
2845 | <summary> | ||
2846 | Begin updating to this <see cref="T:ICSharpCode.SharpZipLib.Zip.ZipFile"/> archive. | ||
2847 | </summary> | ||
2848 | <param name="archiveStorage">The storage to use during the update.</param> | ||
2849 | </member> | ||
2850 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipFile.BeginUpdate"> | ||
2851 | <summary> | ||
2852 | Begin updating this <see cref="T:ICSharpCode.SharpZipLib.Zip.ZipFile"/> archive. | ||
2853 | </summary> | ||
2854 | <seealso cref="M:ICSharpCode.SharpZipLib.Zip.ZipFile.BeginUpdate(ICSharpCode.SharpZipLib.Zip.IArchiveStorage)"/> | ||
2855 | <seealso cref="M:ICSharpCode.SharpZipLib.Zip.ZipFile.CommitUpdate"></seealso> | ||
2856 | <seealso cref="M:ICSharpCode.SharpZipLib.Zip.ZipFile.AbortUpdate"></seealso> | ||
2857 | </member> | ||
2858 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipFile.CommitUpdate"> | ||
2859 | <summary> | ||
2860 | Commit current updates, updating this archive. | ||
2861 | </summary> | ||
2862 | <seealso cref="M:ICSharpCode.SharpZipLib.Zip.ZipFile.BeginUpdate"></seealso> | ||
2863 | <seealso cref="M:ICSharpCode.SharpZipLib.Zip.ZipFile.AbortUpdate"></seealso> | ||
2864 | </member> | ||
2865 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipFile.AbortUpdate"> | ||
2866 | <summary> | ||
2867 | Abort updating leaving the archive unchanged. | ||
2868 | </summary> | ||
2869 | <seealso cref="M:ICSharpCode.SharpZipLib.Zip.ZipFile.BeginUpdate"></seealso> | ||
2870 | <seealso cref="M:ICSharpCode.SharpZipLib.Zip.ZipFile.CommitUpdate"></seealso> | ||
2871 | </member> | ||
2872 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipFile.SetComment(System.String)"> | ||
2873 | <summary> | ||
2874 | Set the file comment to be recorded when the current update is <see cref="M:ICSharpCode.SharpZipLib.Zip.ZipFile.CommitUpdate">commited</see>. | ||
2875 | </summary> | ||
2876 | <param name="comment">The comment to record.</param> | ||
2877 | </member> | ||
2878 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipFile.Add(System.String,ICSharpCode.SharpZipLib.Zip.CompressionMethod,System.Boolean)"> | ||
2879 | <summary> | ||
2880 | Add a new entry to the archive. | ||
2881 | </summary> | ||
2882 | <param name="fileName">The name of the file to add.</param> | ||
2883 | <param name="compressionMethod">The compression method to use.</param> | ||
2884 | <param name="useUnicodeText">Ensure Unicode text is used for name and comment for this entry.</param> | ||
2885 | </member> | ||
2886 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipFile.Add(System.String,ICSharpCode.SharpZipLib.Zip.CompressionMethod)"> | ||
2887 | <summary> | ||
2888 | Add a new entry to the archive. | ||
2889 | </summary> | ||
2890 | <param name="fileName">The name of the file to add.</param> | ||
2891 | <param name="compressionMethod">The compression method to use.</param> | ||
2892 | </member> | ||
2893 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipFile.Add(System.String)"> | ||
2894 | <summary> | ||
2895 | Add a file to the archive. | ||
2896 | </summary> | ||
2897 | <param name="fileName">The name of the file to add.</param> | ||
2898 | </member> | ||
2899 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipFile.Add(ICSharpCode.SharpZipLib.Zip.IStaticDataSource,System.String)"> | ||
2900 | <summary> | ||
2901 | Add a file entry with data. | ||
2902 | </summary> | ||
2903 | <param name="dataSource">The source of the data for this entry.</param> | ||
2904 | <param name="entryName">The name to give to the entry.</param> | ||
2905 | </member> | ||
2906 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipFile.Add(ICSharpCode.SharpZipLib.Zip.IStaticDataSource,System.String,ICSharpCode.SharpZipLib.Zip.CompressionMethod)"> | ||
2907 | <summary> | ||
2908 | Add a file entry with data. | ||
2909 | </summary> | ||
2910 | <param name="dataSource">The source of the data for this entry.</param> | ||
2911 | <param name="entryName">The name to give to the entry.</param> | ||
2912 | <param name="compressionMethod">The compression method to use.</param> | ||
2913 | </member> | ||
2914 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipFile.Add(ICSharpCode.SharpZipLib.Zip.IStaticDataSource,System.String,ICSharpCode.SharpZipLib.Zip.CompressionMethod,System.Boolean)"> | ||
2915 | <summary> | ||
2916 | Add a file entry with data. | ||
2917 | </summary> | ||
2918 | <param name="dataSource">The source of the data for this entry.</param> | ||
2919 | <param name="entryName">The name to give to the entry.</param> | ||
2920 | <param name="compressionMethod">The compression method to use.</param> | ||
2921 | <param name="useUnicodeText">Ensure Unicode text is used for name and comments for this entry.</param> | ||
2922 | </member> | ||
2923 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipFile.Add(ICSharpCode.SharpZipLib.Zip.ZipEntry)"> | ||
2924 | <summary> | ||
2925 | Add a <see cref="T:ICSharpCode.SharpZipLib.Zip.ZipEntry"/> that contains no data. | ||
2926 | </summary> | ||
2927 | <param name="entry">The entry to add.</param> | ||
2928 | <remarks>This can be used to add directories, volume labels, or empty file entries.</remarks> | ||
2929 | </member> | ||
2930 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipFile.AddDirectory(System.String)"> | ||
2931 | <summary> | ||
2932 | Add a directory entry to the archive. | ||
2933 | </summary> | ||
2934 | <param name="directoryName">The directory to add.</param> | ||
2935 | </member> | ||
2936 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipFile.Delete(System.String)"> | ||
2937 | <summary> | ||
2938 | Delete an entry by name | ||
2939 | </summary> | ||
2940 | <param name="fileName">The filename to delete</param> | ||
2941 | <returns>True if the entry was found and deleted; false otherwise.</returns> | ||
2942 | </member> | ||
2943 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipFile.Delete(ICSharpCode.SharpZipLib.Zip.ZipEntry)"> | ||
2944 | <summary> | ||
2945 | Delete a <see cref="T:ICSharpCode.SharpZipLib.Zip.ZipEntry"/> from the archive. | ||
2946 | </summary> | ||
2947 | <param name="entry">The entry to delete.</param> | ||
2948 | </member> | ||
2949 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipFile.WriteLEUshort(System.UInt16)"> | ||
2950 | <summary> | ||
2951 | Write an unsigned short in little endian byte order. | ||
2952 | </summary> | ||
2953 | </member> | ||
2954 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipFile.WriteLEInt(System.Int32)"> | ||
2955 | <summary> | ||
2956 | Write an int in little endian byte order. | ||
2957 | </summary> | ||
2958 | </member> | ||
2959 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipFile.WriteLEUint(System.UInt32)"> | ||
2960 | <summary> | ||
2961 | Write an unsigned int in little endian byte order. | ||
2962 | </summary> | ||
2963 | </member> | ||
2964 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipFile.WriteLeLong(System.Int64)"> | ||
2965 | <summary> | ||
2966 | Write a long in little endian byte order. | ||
2967 | </summary> | ||
2968 | </member> | ||
2969 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipFile.GetBuffer"> | ||
2970 | <summary> | ||
2971 | Get a raw memory buffer. | ||
2972 | </summary> | ||
2973 | <returns>Returns a raw memory buffer.</returns> | ||
2974 | </member> | ||
2975 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipFile.GetDescriptorSize(ICSharpCode.SharpZipLib.Zip.ZipFile.ZipUpdate)"> | ||
2976 | <summary> | ||
2977 | Get the size of the source descriptor for a <see cref="T:ICSharpCode.SharpZipLib.Zip.ZipFile.ZipUpdate"/>. | ||
2978 | </summary> | ||
2979 | <param name="update">The update to get the size for.</param> | ||
2980 | <returns>The descriptor size, zero if there isnt one.</returns> | ||
2981 | </member> | ||
2982 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipFile.GetOutputStream(ICSharpCode.SharpZipLib.Zip.ZipEntry)"> | ||
2983 | <summary> | ||
2984 | Get an output stream for the specified <see cref="T:ICSharpCode.SharpZipLib.Zip.ZipEntry"/> | ||
2985 | </summary> | ||
2986 | <param name="entry">The entry to get an output stream for.</param> | ||
2987 | <returns>The output stream obtained for the entry.</returns> | ||
2988 | </member> | ||
2989 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipFile.Dispose(System.Boolean)"> | ||
2990 | <summary> | ||
2991 | Releases the unmanaged resources used by the this instance and optionally releases the managed resources. | ||
2992 | </summary> | ||
2993 | <param name="disposing">true to release both managed and unmanaged resources; | ||
2994 | false to release only unmanaged resources.</param> | ||
2995 | </member> | ||
2996 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipFile.ReadLEUshort"> | ||
2997 | <summary> | ||
2998 | Read an unsigned short in little endian byte order. | ||
2999 | </summary> | ||
3000 | <returns>Returns the value read.</returns> | ||
3001 | <exception cref="T:System.IO.EndOfStreamException"> | ||
3002 | The stream ends prematurely | ||
3003 | </exception> | ||
3004 | </member> | ||
3005 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipFile.ReadLEUint"> | ||
3006 | <summary> | ||
3007 | Read a uint in little endian byte order. | ||
3008 | </summary> | ||
3009 | <returns>Returns the value read.</returns> | ||
3010 | <exception cref="T:System.IO.IOException"> | ||
3011 | An i/o error occurs. | ||
3012 | </exception> | ||
3013 | <exception cref="T:System.IO.EndOfStreamException"> | ||
3014 | The file ends prematurely | ||
3015 | </exception> | ||
3016 | </member> | ||
3017 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipFile.ReadEntries"> | ||
3018 | <summary> | ||
3019 | Search for and read the central directory of a zip file filling the entries array. | ||
3020 | </summary> | ||
3021 | <exception cref="T:System.IO.IOException"> | ||
3022 | An i/o error occurs. | ||
3023 | </exception> | ||
3024 | <exception cref="T:ICSharpCode.SharpZipLib.Zip.ZipException"> | ||
3025 | The central directory is malformed or cannot be found | ||
3026 | </exception> | ||
3027 | </member> | ||
3028 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipFile.LocateEntry(ICSharpCode.SharpZipLib.Zip.ZipEntry)"> | ||
3029 | <summary> | ||
3030 | Locate the data for a given entry. | ||
3031 | </summary> | ||
3032 | <returns> | ||
3033 | The start offset of the data. | ||
3034 | </returns> | ||
3035 | <exception cref="T:System.IO.EndOfStreamException"> | ||
3036 | The stream ends prematurely | ||
3037 | </exception> | ||
3038 | <exception cref="T:ICSharpCode.SharpZipLib.Zip.ZipException"> | ||
3039 | The local header signature is invalid, the entry and central header file name lengths are different | ||
3040 | or the local and entry compression methods dont match | ||
3041 | </exception> | ||
3042 | </member> | ||
3043 | <member name="P:ICSharpCode.SharpZipLib.Zip.ZipFile.Key"> | ||
3044 | <summary> | ||
3045 | Get/set the encryption key value. | ||
3046 | </summary> | ||
3047 | </member> | ||
3048 | <member name="P:ICSharpCode.SharpZipLib.Zip.ZipFile.Password"> | ||
3049 | <summary> | ||
3050 | Password to be used for encrypting/decrypting files. | ||
3051 | </summary> | ||
3052 | <remarks>Set to null if no password is required.</remarks> | ||
3053 | </member> | ||
3054 | <member name="P:ICSharpCode.SharpZipLib.Zip.ZipFile.HaveKeys"> | ||
3055 | <summary> | ||
3056 | Get a value indicating wether encryption keys are currently available. | ||
3057 | </summary> | ||
3058 | </member> | ||
3059 | <member name="P:ICSharpCode.SharpZipLib.Zip.ZipFile.IsStreamOwner"> | ||
3060 | <summary> | ||
3061 | Get/set a flag indicating if the underlying stream is owned by the ZipFile instance. | ||
3062 | If the flag is true then the stream will be closed when <see cref="M:ICSharpCode.SharpZipLib.Zip.ZipFile.Close">Close</see> is called. | ||
3063 | </summary> | ||
3064 | <remarks> | ||
3065 | The default value is true in all cases. | ||
3066 | </remarks> | ||
3067 | </member> | ||
3068 | <member name="P:ICSharpCode.SharpZipLib.Zip.ZipFile.IsEmbeddedArchive"> | ||
3069 | <summary> | ||
3070 | Get a value indicating wether | ||
3071 | this archive is embedded in another file or not. | ||
3072 | </summary> | ||
3073 | </member> | ||
3074 | <member name="P:ICSharpCode.SharpZipLib.Zip.ZipFile.IsNewArchive"> | ||
3075 | <summary> | ||
3076 | Get a value indicating that this archive is a new one. | ||
3077 | </summary> | ||
3078 | </member> | ||
3079 | <member name="P:ICSharpCode.SharpZipLib.Zip.ZipFile.ZipFileComment"> | ||
3080 | <summary> | ||
3081 | Gets the comment for the zip file. | ||
3082 | </summary> | ||
3083 | </member> | ||
3084 | <member name="P:ICSharpCode.SharpZipLib.Zip.ZipFile.Name"> | ||
3085 | <summary> | ||
3086 | Gets the name of this zip file. | ||
3087 | </summary> | ||
3088 | </member> | ||
3089 | <member name="P:ICSharpCode.SharpZipLib.Zip.ZipFile.Size"> | ||
3090 | <summary> | ||
3091 | Gets the number of entries in this zip file. | ||
3092 | </summary> | ||
3093 | <exception cref="T:System.InvalidOperationException"> | ||
3094 | The Zip file has been closed. | ||
3095 | </exception> | ||
3096 | </member> | ||
3097 | <member name="P:ICSharpCode.SharpZipLib.Zip.ZipFile.Count"> | ||
3098 | <summary> | ||
3099 | Get the number of entries contained in this <see cref="T:ICSharpCode.SharpZipLib.Zip.ZipFile"/>. | ||
3100 | </summary> | ||
3101 | </member> | ||
3102 | <member name="P:ICSharpCode.SharpZipLib.Zip.ZipFile.EntryByIndex(System.Int32)"> | ||
3103 | <summary> | ||
3104 | Indexer property for ZipEntries | ||
3105 | </summary> | ||
3106 | </member> | ||
3107 | <member name="P:ICSharpCode.SharpZipLib.Zip.ZipFile.NameTransform"> | ||
3108 | <summary> | ||
3109 | Get / set the <see cref="T:ICSharpCode.SharpZipLib.Core.INameTransform"/> to apply to names when updating. | ||
3110 | </summary> | ||
3111 | </member> | ||
3112 | <member name="P:ICSharpCode.SharpZipLib.Zip.ZipFile.EntryFactory"> | ||
3113 | <summary> | ||
3114 | Get/set the <see cref="T:ICSharpCode.SharpZipLib.Zip.IEntryFactory"/> used to generate <see cref="T:ICSharpCode.SharpZipLib.Zip.ZipEntry"/> values | ||
3115 | during updates. | ||
3116 | </summary> | ||
3117 | </member> | ||
3118 | <member name="P:ICSharpCode.SharpZipLib.Zip.ZipFile.BufferSize"> | ||
3119 | <summary> | ||
3120 | Get /set the buffer size to be used when updating this zip file. | ||
3121 | </summary> | ||
3122 | </member> | ||
3123 | <member name="P:ICSharpCode.SharpZipLib.Zip.ZipFile.IsUpdating"> | ||
3124 | <summary> | ||
3125 | Get a value indicating an update has <see cref="M:ICSharpCode.SharpZipLib.Zip.ZipFile.BeginUpdate">been started</see>. | ||
3126 | </summary> | ||
3127 | </member> | ||
3128 | <member name="P:ICSharpCode.SharpZipLib.Zip.ZipFile.UseZip64"> | ||
3129 | <summary> | ||
3130 | Get / set a value indicating how Zip64 Extension usage is determined when adding entries. | ||
3131 | </summary> | ||
3132 | </member> | ||
3133 | <member name="T:ICSharpCode.SharpZipLib.Zip.ZipFile.KeysRequiredEventHandler"> | ||
3134 | <summary> | ||
3135 | Delegate for handling keys/password setting during compresion/decompression. | ||
3136 | </summary> | ||
3137 | </member> | ||
3138 | <member name="T:ICSharpCode.SharpZipLib.Zip.ZipFile.UpdateCommand"> | ||
3139 | <summary> | ||
3140 | The kind of update to apply. | ||
3141 | </summary> | ||
3142 | </member> | ||
3143 | <member name="T:ICSharpCode.SharpZipLib.Zip.ZipFile.UpdateComparer"> | ||
3144 | <summary> | ||
3145 | Class used to sort updates. | ||
3146 | </summary> | ||
3147 | </member> | ||
3148 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipFile.UpdateComparer.Compare(System.Object,System.Object)"> | ||
3149 | <summary> | ||
3150 | Compares two objects and returns a value indicating whether one is | ||
3151 | less than, equal to or greater than the other. | ||
3152 | </summary> | ||
3153 | <param name="x">First object to compare</param> | ||
3154 | <param name="y">Second object to compare.</param> | ||
3155 | <returns>Compare result.</returns> | ||
3156 | </member> | ||
3157 | <member name="T:ICSharpCode.SharpZipLib.Zip.ZipFile.ZipUpdate"> | ||
3158 | <summary> | ||
3159 | Represents a pending update to a Zip file. | ||
3160 | </summary> | ||
3161 | </member> | ||
3162 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipFile.ZipUpdate.#ctor(ICSharpCode.SharpZipLib.Zip.ZipEntry)"> | ||
3163 | <summary> | ||
3164 | Copy an existing entry. | ||
3165 | </summary> | ||
3166 | <param name="entry">The existing entry to copy.</param> | ||
3167 | </member> | ||
3168 | <member name="P:ICSharpCode.SharpZipLib.Zip.ZipFile.ZipUpdate.Entry"> | ||
3169 | <summary> | ||
3170 | Get the <see cref="T:ICSharpCode.SharpZipLib.Zip.ZipEntry"/> for this update. | ||
3171 | </summary> | ||
3172 | <remarks>This is the source or original entry.</remarks> | ||
3173 | </member> | ||
3174 | <member name="P:ICSharpCode.SharpZipLib.Zip.ZipFile.ZipUpdate.OutEntry"> | ||
3175 | <summary> | ||
3176 | Get the <see cref="T:ICSharpCode.SharpZipLib.Zip.ZipEntry"/> that will be written to the updated/new file. | ||
3177 | </summary> | ||
3178 | </member> | ||
3179 | <member name="P:ICSharpCode.SharpZipLib.Zip.ZipFile.ZipUpdate.Command"> | ||
3180 | <summary> | ||
3181 | Get the command for this update. | ||
3182 | </summary> | ||
3183 | </member> | ||
3184 | <member name="P:ICSharpCode.SharpZipLib.Zip.ZipFile.ZipUpdate.Filename"> | ||
3185 | <summary> | ||
3186 | Get the filename if any for this update. Null if none exists. | ||
3187 | </summary> | ||
3188 | </member> | ||
3189 | <member name="P:ICSharpCode.SharpZipLib.Zip.ZipFile.ZipUpdate.SizePatchOffset"> | ||
3190 | <summary> | ||
3191 | Get/set the location of the size patch for this update. | ||
3192 | </summary> | ||
3193 | </member> | ||
3194 | <member name="P:ICSharpCode.SharpZipLib.Zip.ZipFile.ZipUpdate.CrcPatchOffset"> | ||
3195 | <summary> | ||
3196 | Get /set the location of the crc patch for this update. | ||
3197 | </summary> | ||
3198 | </member> | ||
3199 | <member name="T:ICSharpCode.SharpZipLib.Zip.ZipFile.ZipString"> | ||
3200 | <summary> | ||
3201 | Represents a string from a <see cref="T:ICSharpCode.SharpZipLib.Zip.ZipFile"/> which is stored as an array of bytes. | ||
3202 | </summary> | ||
3203 | </member> | ||
3204 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipFile.ZipString.#ctor(System.String)"> | ||
3205 | <summary> | ||
3206 | Initialise a <see cref="T:ICSharpCode.SharpZipLib.Zip.ZipFile.ZipString"/> with a string. | ||
3207 | </summary> | ||
3208 | <param name="comment">The textual string form.</param> | ||
3209 | </member> | ||
3210 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipFile.ZipString.#ctor(System.Byte[])"> | ||
3211 | <summary> | ||
3212 | Initialise a <see cref="T:ICSharpCode.SharpZipLib.Zip.ZipFile.ZipString"/> using a string in its binary 'raw' form. | ||
3213 | </summary> | ||
3214 | <param name="rawString"></param> | ||
3215 | </member> | ||
3216 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipFile.ZipString.Reset"> | ||
3217 | <summary> | ||
3218 | Reset the comment to its initial state. | ||
3219 | </summary> | ||
3220 | </member> | ||
3221 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipFile.ZipString.op_Implicit(ICSharpCode.SharpZipLib.Zip.ZipFile.ZipString)~System.String"> | ||
3222 | <summary> | ||
3223 | Implicit conversion of comment to a string. | ||
3224 | </summary> | ||
3225 | <param name="zipString">The <see cref="T:ICSharpCode.SharpZipLib.Zip.ZipFile.ZipString"/> to convert to a string.</param> | ||
3226 | <returns>The textual equivalent for the input value.</returns> | ||
3227 | </member> | ||
3228 | <member name="P:ICSharpCode.SharpZipLib.Zip.ZipFile.ZipString.IsSourceString"> | ||
3229 | <summary> | ||
3230 | Get a value indicating the original source of data for this instance. | ||
3231 | True if the source was a string; false if the source was binary data. | ||
3232 | </summary> | ||
3233 | </member> | ||
3234 | <member name="P:ICSharpCode.SharpZipLib.Zip.ZipFile.ZipString.RawLength"> | ||
3235 | <summary> | ||
3236 | Get the length of the comment when represented as raw bytes. | ||
3237 | </summary> | ||
3238 | </member> | ||
3239 | <member name="P:ICSharpCode.SharpZipLib.Zip.ZipFile.ZipString.RawComment"> | ||
3240 | <summary> | ||
3241 | Get the comment in its 'raw' form as plain bytes. | ||
3242 | </summary> | ||
3243 | </member> | ||
3244 | <member name="T:ICSharpCode.SharpZipLib.Zip.ZipFile.ZipEntryEnumerator"> | ||
3245 | <summary> | ||
3246 | An <see cref="T:System.Collections.IEnumerator">enumerator</see> for <see cref="T:ICSharpCode.SharpZipLib.Zip.ZipEntry">Zip entries</see> | ||
3247 | </summary> | ||
3248 | </member> | ||
3249 | <member name="T:ICSharpCode.SharpZipLib.Zip.ZipFile.UncompressedStream"> | ||
3250 | <summary> | ||
3251 | An <see cref="T:ICSharpCode.SharpZipLib.Zip.ZipFile.UncompressedStream"/> is a stream that you can write uncompressed data | ||
3252 | to and flush, but cannot read, seek or do anything else to. | ||
3253 | </summary> | ||
3254 | </member> | ||
3255 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipFile.UncompressedStream.Close"> | ||
3256 | <summary> | ||
3257 | Close this stream instance. | ||
3258 | </summary> | ||
3259 | </member> | ||
3260 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipFile.UncompressedStream.Flush"> | ||
3261 | <summary> | ||
3262 | Write any buffered data to underlying storage. | ||
3263 | </summary> | ||
3264 | </member> | ||
3265 | <member name="P:ICSharpCode.SharpZipLib.Zip.ZipFile.UncompressedStream.CanRead"> | ||
3266 | <summary> | ||
3267 | Gets a value indicating whether the current stream supports reading. | ||
3268 | </summary> | ||
3269 | </member> | ||
3270 | <member name="P:ICSharpCode.SharpZipLib.Zip.ZipFile.UncompressedStream.CanWrite"> | ||
3271 | <summary> | ||
3272 | Gets a value indicating whether the current stream supports writing. | ||
3273 | </summary> | ||
3274 | </member> | ||
3275 | <member name="P:ICSharpCode.SharpZipLib.Zip.ZipFile.UncompressedStream.CanSeek"> | ||
3276 | <summary> | ||
3277 | Gets a value indicating whether the current stream supports seeking. | ||
3278 | </summary> | ||
3279 | </member> | ||
3280 | <member name="P:ICSharpCode.SharpZipLib.Zip.ZipFile.UncompressedStream.Length"> | ||
3281 | <summary> | ||
3282 | Get the length in bytes of the stream. | ||
3283 | </summary> | ||
3284 | </member> | ||
3285 | <member name="P:ICSharpCode.SharpZipLib.Zip.ZipFile.UncompressedStream.Position"> | ||
3286 | <summary> | ||
3287 | Gets or sets the position within the current stream. | ||
3288 | </summary> | ||
3289 | </member> | ||
3290 | <member name="T:ICSharpCode.SharpZipLib.Zip.ZipFile.PartialInputStream"> | ||
3291 | <summary> | ||
3292 | A <see cref="T:ICSharpCode.SharpZipLib.Zip.ZipFile.PartialInputStream"/> is an <see cref="T:ICSharpCode.SharpZipLib.Zip.Compression.Streams.InflaterInputStream"/> | ||
3293 | whose data is only a part or subsection of a file. | ||
3294 | </summary> | ||
3295 | </member> | ||
3296 | <member name="T:ICSharpCode.SharpZipLib.Zip.Compression.Streams.InflaterInputStream"> | ||
3297 | <summary> | ||
3298 | This filter stream is used to decompress data compressed using the "deflate" | ||
3299 | format. The "deflate" format is described in RFC 1951. | ||
3300 | |||
3301 | This stream may form the basis for other decompression filters, such | ||
3302 | as the <see cref="T:ICSharpCode.SharpZipLib.GZip.GZipInputStream">GZipInputStream</see>. | ||
3303 | |||
3304 | Author of the original java version : John Leuner. | ||
3305 | </summary> | ||
3306 | </member> | ||
3307 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.Streams.InflaterInputStream.#ctor(System.IO.Stream)"> | ||
3308 | <summary> | ||
3309 | Create an InflaterInputStream with the default decompressor | ||
3310 | and a default buffer size of 4KB. | ||
3311 | </summary> | ||
3312 | <param name = "baseInputStream"> | ||
3313 | The InputStream to read bytes from | ||
3314 | </param> | ||
3315 | </member> | ||
3316 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.Streams.InflaterInputStream.#ctor(System.IO.Stream,ICSharpCode.SharpZipLib.Zip.Compression.Inflater)"> | ||
3317 | <summary> | ||
3318 | Create an InflaterInputStream with the specified decompressor | ||
3319 | and a default buffer size of 4KB. | ||
3320 | </summary> | ||
3321 | <param name = "baseInputStream"> | ||
3322 | The source of input data | ||
3323 | </param> | ||
3324 | <param name = "inf"> | ||
3325 | The decompressor used to decompress data read from baseInputStream | ||
3326 | </param> | ||
3327 | </member> | ||
3328 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.Streams.InflaterInputStream.#ctor(System.IO.Stream,ICSharpCode.SharpZipLib.Zip.Compression.Inflater,System.Int32)"> | ||
3329 | <summary> | ||
3330 | Create an InflaterInputStream with the specified decompressor | ||
3331 | and the specified buffer size. | ||
3332 | </summary> | ||
3333 | <param name = "baseInputStream"> | ||
3334 | The InputStream to read bytes from | ||
3335 | </param> | ||
3336 | <param name = "inflater"> | ||
3337 | The decompressor to use | ||
3338 | </param> | ||
3339 | <param name = "bufferSize"> | ||
3340 | Size of the buffer to use | ||
3341 | </param> | ||
3342 | </member> | ||
3343 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.Streams.InflaterInputStream.Skip(System.Int64)"> | ||
3344 | <summary> | ||
3345 | Skip specified number of bytes of uncompressed data | ||
3346 | </summary> | ||
3347 | <param name="count"> | ||
3348 | Number of bytes to skip | ||
3349 | </param> | ||
3350 | <returns> | ||
3351 | The number of bytes skipped, zero if the end of | ||
3352 | stream has been reached | ||
3353 | </returns> | ||
3354 | <exception cref="T:System.ArgumentOutOfRangeException"> | ||
3355 | Number of bytes to skip is less than zero | ||
3356 | </exception> | ||
3357 | </member> | ||
3358 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.Streams.InflaterInputStream.StopDecrypting"> | ||
3359 | <summary> | ||
3360 | Clear any cryptographic state. | ||
3361 | </summary> | ||
3362 | </member> | ||
3363 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.Streams.InflaterInputStream.Fill"> | ||
3364 | <summary> | ||
3365 | Fills the buffer with more data to decompress. | ||
3366 | </summary> | ||
3367 | <exception cref="T:ICSharpCode.SharpZipLib.SharpZipBaseException"> | ||
3368 | Stream ends early | ||
3369 | </exception> | ||
3370 | </member> | ||
3371 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.Streams.InflaterInputStream.Flush"> | ||
3372 | <summary> | ||
3373 | Flushes the baseInputStream | ||
3374 | </summary> | ||
3375 | </member> | ||
3376 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.Streams.InflaterInputStream.Seek(System.Int64,System.IO.SeekOrigin)"> | ||
3377 | <summary> | ||
3378 | Sets the position within the current stream | ||
3379 | Always throws a NotSupportedException | ||
3380 | </summary> | ||
3381 | <param name="offset">The relative offset to seek to.</param> | ||
3382 | <param name="origin">The <see cref="T:System.IO.SeekOrigin"/> defining where to seek from.</param> | ||
3383 | <returns>The new position in the stream.</returns> | ||
3384 | <exception cref="T:System.NotSupportedException">Any access</exception> | ||
3385 | </member> | ||
3386 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.Streams.InflaterInputStream.SetLength(System.Int64)"> | ||
3387 | <summary> | ||
3388 | Set the length of the current stream | ||
3389 | Always throws a NotSupportedException | ||
3390 | </summary> | ||
3391 | <param name="value">The new length value for the stream.</param> | ||
3392 | <exception cref="T:System.NotSupportedException">Any access</exception> | ||
3393 | </member> | ||
3394 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.Streams.InflaterInputStream.Write(System.Byte[],System.Int32,System.Int32)"> | ||
3395 | <summary> | ||
3396 | Writes a sequence of bytes to stream and advances the current position | ||
3397 | This method always throws a NotSupportedException | ||
3398 | </summary> | ||
3399 | <param name="buffer">Thew buffer containing data to write.</param> | ||
3400 | <param name="offset">The offset of the first byte to write.</param> | ||
3401 | <param name="count">The number of bytes to write.</param> | ||
3402 | <exception cref="T:System.NotSupportedException">Any access</exception> | ||
3403 | </member> | ||
3404 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.Streams.InflaterInputStream.WriteByte(System.Byte)"> | ||
3405 | <summary> | ||
3406 | Writes one byte to the current stream and advances the current position | ||
3407 | Always throws a NotSupportedException | ||
3408 | </summary> | ||
3409 | <param name="value">The byte to write.</param> | ||
3410 | <exception cref="T:System.NotSupportedException">Any access</exception> | ||
3411 | </member> | ||
3412 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.Streams.InflaterInputStream.BeginWrite(System.Byte[],System.Int32,System.Int32,System.AsyncCallback,System.Object)"> | ||
3413 | <summary> | ||
3414 | Entry point to begin an asynchronous write. Always throws a NotSupportedException. | ||
3415 | </summary> | ||
3416 | <param name="buffer">The buffer to write data from</param> | ||
3417 | <param name="offset">Offset of first byte to write</param> | ||
3418 | <param name="count">The maximum number of bytes to write</param> | ||
3419 | <param name="callback">The method to be called when the asynchronous write operation is completed</param> | ||
3420 | <param name="state">A user-provided object that distinguishes this particular asynchronous write request from other requests</param> | ||
3421 | <returns>An <see cref="T:System.IAsyncResult">IAsyncResult</see> that references the asynchronous write</returns> | ||
3422 | <exception cref="T:System.NotSupportedException">Any access</exception> | ||
3423 | </member> | ||
3424 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.Streams.InflaterInputStream.Close"> | ||
3425 | <summary> | ||
3426 | Closes the input stream. When <see cref="P:ICSharpCode.SharpZipLib.Zip.Compression.Streams.InflaterInputStream.IsStreamOwner"></see> | ||
3427 | is true the underlying stream is also closed. | ||
3428 | </summary> | ||
3429 | </member> | ||
3430 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.Streams.InflaterInputStream.Read(System.Byte[],System.Int32,System.Int32)"> | ||
3431 | <summary> | ||
3432 | Reads decompressed data into the provided buffer byte array | ||
3433 | </summary> | ||
3434 | <param name="buffer"> | ||
3435 | The array to read and decompress data into | ||
3436 | </param> | ||
3437 | <param name="offset"> | ||
3438 | The offset indicating where the data should be placed | ||
3439 | </param> | ||
3440 | <param name="count"> | ||
3441 | The number of bytes to decompress | ||
3442 | </param> | ||
3443 | <returns>The number of bytes read. Zero signals the end of stream</returns> | ||
3444 | <exception cref="T:ICSharpCode.SharpZipLib.SharpZipBaseException"> | ||
3445 | Inflater needs a dictionary | ||
3446 | </exception> | ||
3447 | </member> | ||
3448 | <member name="F:ICSharpCode.SharpZipLib.Zip.Compression.Streams.InflaterInputStream.inf"> | ||
3449 | <summary> | ||
3450 | Decompressor for this stream | ||
3451 | </summary> | ||
3452 | </member> | ||
3453 | <member name="F:ICSharpCode.SharpZipLib.Zip.Compression.Streams.InflaterInputStream.inputBuffer"> | ||
3454 | <summary> | ||
3455 | <see cref="T:ICSharpCode.SharpZipLib.Zip.Compression.Streams.InflaterInputBuffer">Input buffer</see> for this stream. | ||
3456 | </summary> | ||
3457 | </member> | ||
3458 | <member name="F:ICSharpCode.SharpZipLib.Zip.Compression.Streams.InflaterInputStream.baseInputStream"> | ||
3459 | <summary> | ||
3460 | Base stream the inflater reads from. | ||
3461 | </summary> | ||
3462 | </member> | ||
3463 | <member name="F:ICSharpCode.SharpZipLib.Zip.Compression.Streams.InflaterInputStream.csize"> | ||
3464 | <summary> | ||
3465 | The compressed size | ||
3466 | </summary> | ||
3467 | </member> | ||
3468 | <member name="F:ICSharpCode.SharpZipLib.Zip.Compression.Streams.InflaterInputStream.isClosed"> | ||
3469 | <summary> | ||
3470 | Flag indicating wether this instance has been closed or not. | ||
3471 | </summary> | ||
3472 | </member> | ||
3473 | <member name="F:ICSharpCode.SharpZipLib.Zip.Compression.Streams.InflaterInputStream.isStreamOwner"> | ||
3474 | <summary> | ||
3475 | Flag indicating wether this instance is designated the stream owner. | ||
3476 | When closing if this flag is true the underlying stream is closed. | ||
3477 | </summary> | ||
3478 | </member> | ||
3479 | <member name="P:ICSharpCode.SharpZipLib.Zip.Compression.Streams.InflaterInputStream.IsStreamOwner"> | ||
3480 | <summary> | ||
3481 | Get/set flag indicating ownership of underlying stream. | ||
3482 | When the flag is true <see cref="M:ICSharpCode.SharpZipLib.Zip.Compression.Streams.InflaterInputStream.Close"/> will close the underlying stream also. | ||
3483 | </summary> | ||
3484 | <remarks> | ||
3485 | The default value is true. | ||
3486 | </remarks> | ||
3487 | </member> | ||
3488 | <member name="P:ICSharpCode.SharpZipLib.Zip.Compression.Streams.InflaterInputStream.Available"> | ||
3489 | <summary> | ||
3490 | Returns 0 once the end of the stream (EOF) has been reached. | ||
3491 | Otherwise returns 1. | ||
3492 | </summary> | ||
3493 | </member> | ||
3494 | <member name="P:ICSharpCode.SharpZipLib.Zip.Compression.Streams.InflaterInputStream.CanRead"> | ||
3495 | <summary> | ||
3496 | Gets a value indicating whether the current stream supports reading | ||
3497 | </summary> | ||
3498 | </member> | ||
3499 | <member name="P:ICSharpCode.SharpZipLib.Zip.Compression.Streams.InflaterInputStream.CanSeek"> | ||
3500 | <summary> | ||
3501 | Gets a value of false indicating seeking is not supported for this stream. | ||
3502 | </summary> | ||
3503 | </member> | ||
3504 | <member name="P:ICSharpCode.SharpZipLib.Zip.Compression.Streams.InflaterInputStream.CanWrite"> | ||
3505 | <summary> | ||
3506 | Gets a value of false indicating that this stream is not writeable. | ||
3507 | </summary> | ||
3508 | </member> | ||
3509 | <member name="P:ICSharpCode.SharpZipLib.Zip.Compression.Streams.InflaterInputStream.Length"> | ||
3510 | <summary> | ||
3511 | A value representing the length of the stream in bytes. | ||
3512 | </summary> | ||
3513 | </member> | ||
3514 | <member name="P:ICSharpCode.SharpZipLib.Zip.Compression.Streams.InflaterInputStream.Position"> | ||
3515 | <summary> | ||
3516 | The current position within the stream. | ||
3517 | Throws a NotSupportedException when attempting to set the position | ||
3518 | </summary> | ||
3519 | <exception cref="T:System.NotSupportedException">Attempting to set the position</exception> | ||
3520 | </member> | ||
3521 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipFile.PartialInputStream.#ctor(System.IO.Stream,System.Int64,System.Int64)"> | ||
3522 | <summary> | ||
3523 | Initialise a new instance of the <see cref="T:ICSharpCode.SharpZipLib.Zip.ZipFile.PartialInputStream"/> class. | ||
3524 | </summary> | ||
3525 | <param name="baseStream">The underlying stream to use for IO.</param> | ||
3526 | <param name="start">The start of the partial data.</param> | ||
3527 | <param name="length">The length of the partial data.</param> | ||
3528 | </member> | ||
3529 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipFile.PartialInputStream.SkipBytes(System.Int64)"> | ||
3530 | <summary> | ||
3531 | Skip the specified number of input bytes. | ||
3532 | </summary> | ||
3533 | <param name="count">The maximum number of input bytes to skip.</param> | ||
3534 | <returns>The actuial number of input bytes skipped.</returns> | ||
3535 | </member> | ||
3536 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipFile.PartialInputStream.ReadByte"> | ||
3537 | <summary> | ||
3538 | Read a byte from this stream. | ||
3539 | </summary> | ||
3540 | <returns>Returns the byte read or -1 on end of stream.</returns> | ||
3541 | </member> | ||
3542 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipFile.PartialInputStream.Close"> | ||
3543 | <summary> | ||
3544 | Close this <see cref="T:ICSharpCode.SharpZipLib.Zip.ZipFile.PartialInputStream">partial input stream</see>. | ||
3545 | </summary> | ||
3546 | <remarks> | ||
3547 | The underlying stream is not closed. Close the parent ZipFile class to do that. | ||
3548 | </remarks> | ||
3549 | </member> | ||
3550 | <member name="T:ICSharpCode.SharpZipLib.Zip.IStaticDataSource"> | ||
3551 | <summary> | ||
3552 | Provides a static way to obtain a source of data for an entry. | ||
3553 | </summary> | ||
3554 | </member> | ||
3555 | <member name="M:ICSharpCode.SharpZipLib.Zip.IStaticDataSource.GetSource"> | ||
3556 | <summary> | ||
3557 | Get a source of data by creating a new stream. | ||
3558 | </summary> | ||
3559 | <returns>Returns a <see cref="T:System.IO.Stream"/> to use for compression input.</returns> | ||
3560 | <remarks>Ideally a new stream is created and opened to achieve this, to avoid locking problems.</remarks> | ||
3561 | </member> | ||
3562 | <member name="T:ICSharpCode.SharpZipLib.Zip.IDynamicDataSource"> | ||
3563 | <summary> | ||
3564 | Represents a source of data that can dynamically provide | ||
3565 | multiple <see cref="T:System.IO.Stream">data sources</see> based on the parameters passed. | ||
3566 | </summary> | ||
3567 | </member> | ||
3568 | <member name="M:ICSharpCode.SharpZipLib.Zip.IDynamicDataSource.GetSource(ICSharpCode.SharpZipLib.Zip.ZipEntry,System.String)"> | ||
3569 | <summary> | ||
3570 | Get a data source. | ||
3571 | </summary> | ||
3572 | <param name="entry">The <see cref="T:ICSharpCode.SharpZipLib.Zip.ZipEntry"/> to get a source for.</param> | ||
3573 | <param name="name">The name for data if known.</param> | ||
3574 | <returns>Returns a <see cref="T:System.IO.Stream"/> to use for compression input.</returns> | ||
3575 | <remarks>Ideally a new stream is created and opened to achieve this, to avoid locking problems.</remarks> | ||
3576 | </member> | ||
3577 | <member name="T:ICSharpCode.SharpZipLib.Zip.StaticDiskDataSource"> | ||
3578 | <summary> | ||
3579 | Default implementation of a <see cref="T:ICSharpCode.SharpZipLib.Zip.IStaticDataSource"/> for use with files stored on disk. | ||
3580 | </summary> | ||
3581 | </member> | ||
3582 | <member name="M:ICSharpCode.SharpZipLib.Zip.StaticDiskDataSource.#ctor(System.String)"> | ||
3583 | <summary> | ||
3584 | Initialise a new instnace of <see cref="T:ICSharpCode.SharpZipLib.Zip.StaticDiskDataSource"/> | ||
3585 | </summary> | ||
3586 | <param name="fileName">The name of the file to obtain data from.</param> | ||
3587 | </member> | ||
3588 | <member name="M:ICSharpCode.SharpZipLib.Zip.StaticDiskDataSource.GetSource"> | ||
3589 | <summary> | ||
3590 | Get a <see cref="T:System.IO.Stream"/> providing data. | ||
3591 | </summary> | ||
3592 | <returns>Returns a <see cref="T:System.IO.Stream"/> provising data.</returns> | ||
3593 | </member> | ||
3594 | <member name="T:ICSharpCode.SharpZipLib.Zip.DynamicDiskDataSource"> | ||
3595 | <summary> | ||
3596 | Default implementation of <see cref="T:ICSharpCode.SharpZipLib.Zip.IDynamicDataSource"/> for files stored on disk. | ||
3597 | </summary> | ||
3598 | </member> | ||
3599 | <member name="M:ICSharpCode.SharpZipLib.Zip.DynamicDiskDataSource.#ctor"> | ||
3600 | <summary> | ||
3601 | Initialise a default instance of <see cref="T:ICSharpCode.SharpZipLib.Zip.DynamicDiskDataSource"/>. | ||
3602 | </summary> | ||
3603 | </member> | ||
3604 | <member name="M:ICSharpCode.SharpZipLib.Zip.DynamicDiskDataSource.GetSource(ICSharpCode.SharpZipLib.Zip.ZipEntry,System.String)"> | ||
3605 | <summary> | ||
3606 | Get a <see cref="T:System.IO.Stream"/> providing data for an entry. | ||
3607 | </summary> | ||
3608 | <param name="entry">The entry to provide data for.</param> | ||
3609 | <param name="name">The file name for data if known.</param> | ||
3610 | <returns>Returns a stream providing data; or null if not available</returns> | ||
3611 | </member> | ||
3612 | <member name="T:ICSharpCode.SharpZipLib.Zip.IArchiveStorage"> | ||
3613 | <summary> | ||
3614 | Defines facilities for data storage when updating Zip Archives. | ||
3615 | </summary> | ||
3616 | </member> | ||
3617 | <member name="M:ICSharpCode.SharpZipLib.Zip.IArchiveStorage.GetTemporaryOutput"> | ||
3618 | <summary> | ||
3619 | Get an empty <see cref="T:System.IO.Stream"/> that can be used for temporary output. | ||
3620 | </summary> | ||
3621 | <returns>Returns a temporary output <see cref="T:System.IO.Stream"/></returns> | ||
3622 | <seealso cref="M:ICSharpCode.SharpZipLib.Zip.IArchiveStorage.ConvertTemporaryToFinal"></seealso> | ||
3623 | </member> | ||
3624 | <member name="M:ICSharpCode.SharpZipLib.Zip.IArchiveStorage.ConvertTemporaryToFinal"> | ||
3625 | <summary> | ||
3626 | Convert a temporary output stream to a final stream. | ||
3627 | </summary> | ||
3628 | <returns>The resulting final <see cref="T:System.IO.Stream"/></returns> | ||
3629 | <seealso cref="M:ICSharpCode.SharpZipLib.Zip.IArchiveStorage.GetTemporaryOutput"/> | ||
3630 | </member> | ||
3631 | <member name="M:ICSharpCode.SharpZipLib.Zip.IArchiveStorage.MakeTemporaryCopy(System.IO.Stream)"> | ||
3632 | <summary> | ||
3633 | Make a temporary copy of the original stream. | ||
3634 | </summary> | ||
3635 | <param name="stream">The <see cref="T:System.IO.Stream"/> to copy.</param> | ||
3636 | <returns>Returns a temporary output <see cref="T:System.IO.Stream"/> that is a copy of the input.</returns> | ||
3637 | </member> | ||
3638 | <member name="M:ICSharpCode.SharpZipLib.Zip.IArchiveStorage.OpenForDirectUpdate(System.IO.Stream)"> | ||
3639 | <summary> | ||
3640 | Return a stream suitable for performing direct updates on the original source. | ||
3641 | </summary> | ||
3642 | <param name="stream">The current stream.</param> | ||
3643 | <returns>Returns a stream suitable for direct updating.</returns> | ||
3644 | <remarks>This may be the current stream passed.</remarks> | ||
3645 | </member> | ||
3646 | <member name="M:ICSharpCode.SharpZipLib.Zip.IArchiveStorage.Dispose"> | ||
3647 | <summary> | ||
3648 | Dispose of this instance. | ||
3649 | </summary> | ||
3650 | </member> | ||
3651 | <member name="P:ICSharpCode.SharpZipLib.Zip.IArchiveStorage.UpdateMode"> | ||
3652 | <summary> | ||
3653 | Get the <see cref="T:ICSharpCode.SharpZipLib.Zip.FileUpdateMode"/> to apply during updates. | ||
3654 | </summary> | ||
3655 | </member> | ||
3656 | <member name="T:ICSharpCode.SharpZipLib.Zip.BaseArchiveStorage"> | ||
3657 | <summary> | ||
3658 | An abstract <see cref="T:ICSharpCode.SharpZipLib.Zip.IArchiveStorage"/> suitable for extension by inheritance. | ||
3659 | </summary> | ||
3660 | </member> | ||
3661 | <member name="M:ICSharpCode.SharpZipLib.Zip.BaseArchiveStorage.#ctor(ICSharpCode.SharpZipLib.Zip.FileUpdateMode)"> | ||
3662 | <summary> | ||
3663 | Initializes a new instance of the <see cref="T:ICSharpCode.SharpZipLib.Zip.BaseArchiveStorage"/> class. | ||
3664 | </summary> | ||
3665 | <param name="updateMode">The update mode.</param> | ||
3666 | </member> | ||
3667 | <member name="M:ICSharpCode.SharpZipLib.Zip.BaseArchiveStorage.GetTemporaryOutput"> | ||
3668 | <summary> | ||
3669 | Gets a temporary output <see cref="T:System.IO.Stream"/> | ||
3670 | </summary> | ||
3671 | <returns>Returns the temporary output stream.</returns> | ||
3672 | <seealso cref="M:ICSharpCode.SharpZipLib.Zip.BaseArchiveStorage.ConvertTemporaryToFinal"></seealso> | ||
3673 | </member> | ||
3674 | <member name="M:ICSharpCode.SharpZipLib.Zip.BaseArchiveStorage.ConvertTemporaryToFinal"> | ||
3675 | <summary> | ||
3676 | Converts the temporary <see cref="T:System.IO.Stream"/> to its final form. | ||
3677 | </summary> | ||
3678 | <returns>Returns a <see cref="T:System.IO.Stream"/> that can be used to read | ||
3679 | the final storage for the archive.</returns> | ||
3680 | <seealso cref="M:ICSharpCode.SharpZipLib.Zip.BaseArchiveStorage.GetTemporaryOutput"/> | ||
3681 | </member> | ||
3682 | <member name="M:ICSharpCode.SharpZipLib.Zip.BaseArchiveStorage.MakeTemporaryCopy(System.IO.Stream)"> | ||
3683 | <summary> | ||
3684 | Make a temporary copy of a <see cref="T:System.IO.Stream"/>. | ||
3685 | </summary> | ||
3686 | <param name="stream">The <see cref="T:System.IO.Stream"/> to make a copy of.</param> | ||
3687 | <returns>Returns a temporary output <see cref="T:System.IO.Stream"/> that is a copy of the input.</returns> | ||
3688 | </member> | ||
3689 | <member name="M:ICSharpCode.SharpZipLib.Zip.BaseArchiveStorage.OpenForDirectUpdate(System.IO.Stream)"> | ||
3690 | <summary> | ||
3691 | Return a stream suitable for performing direct updates on the original source. | ||
3692 | </summary> | ||
3693 | <param name="stream">The <see cref="T:System.IO.Stream"/> to open for direct update.</param> | ||
3694 | <returns>Returns a stream suitable for direct updating.</returns> | ||
3695 | </member> | ||
3696 | <member name="M:ICSharpCode.SharpZipLib.Zip.BaseArchiveStorage.Dispose"> | ||
3697 | <summary> | ||
3698 | Disposes this instance. | ||
3699 | </summary> | ||
3700 | </member> | ||
3701 | <member name="P:ICSharpCode.SharpZipLib.Zip.BaseArchiveStorage.UpdateMode"> | ||
3702 | <summary> | ||
3703 | Gets the update mode applicable. | ||
3704 | </summary> | ||
3705 | <value>The update mode.</value> | ||
3706 | </member> | ||
3707 | <member name="T:ICSharpCode.SharpZipLib.Zip.DiskArchiveStorage"> | ||
3708 | <summary> | ||
3709 | An <see cref="T:ICSharpCode.SharpZipLib.Zip.IArchiveStorage"/> implementation suitable for hard disks. | ||
3710 | </summary> | ||
3711 | </member> | ||
3712 | <member name="M:ICSharpCode.SharpZipLib.Zip.DiskArchiveStorage.#ctor(ICSharpCode.SharpZipLib.Zip.ZipFile,ICSharpCode.SharpZipLib.Zip.FileUpdateMode)"> | ||
3713 | <summary> | ||
3714 | Initializes a new instance of the <see cref="T:ICSharpCode.SharpZipLib.Zip.DiskArchiveStorage"/> class. | ||
3715 | </summary> | ||
3716 | <param name="file">The file.</param> | ||
3717 | <param name="updateMode">The update mode.</param> | ||
3718 | </member> | ||
3719 | <member name="M:ICSharpCode.SharpZipLib.Zip.DiskArchiveStorage.#ctor(ICSharpCode.SharpZipLib.Zip.ZipFile)"> | ||
3720 | <summary> | ||
3721 | Initializes a new instance of the <see cref="T:ICSharpCode.SharpZipLib.Zip.DiskArchiveStorage"/> class. | ||
3722 | </summary> | ||
3723 | <param name="file">The file.</param> | ||
3724 | </member> | ||
3725 | <member name="M:ICSharpCode.SharpZipLib.Zip.DiskArchiveStorage.GetTemporaryOutput"> | ||
3726 | <summary> | ||
3727 | Gets a temporary output <see cref="T:System.IO.Stream"/> for performing updates on. | ||
3728 | </summary> | ||
3729 | <returns>Returns the temporary output stream.</returns> | ||
3730 | </member> | ||
3731 | <member name="M:ICSharpCode.SharpZipLib.Zip.DiskArchiveStorage.ConvertTemporaryToFinal"> | ||
3732 | <summary> | ||
3733 | Converts a temporary <see cref="T:System.IO.Stream"/> to its final form. | ||
3734 | </summary> | ||
3735 | <returns>Returns a <see cref="T:System.IO.Stream"/> that can be used to read | ||
3736 | the final storage for the archive.</returns> | ||
3737 | </member> | ||
3738 | <member name="M:ICSharpCode.SharpZipLib.Zip.DiskArchiveStorage.MakeTemporaryCopy(System.IO.Stream)"> | ||
3739 | <summary> | ||
3740 | Make a temporary copy of a stream. | ||
3741 | </summary> | ||
3742 | <param name="stream">The <see cref="T:System.IO.Stream"/> to copy.</param> | ||
3743 | <returns>Returns a temporary output <see cref="T:System.IO.Stream"/> that is a copy of the input.</returns> | ||
3744 | </member> | ||
3745 | <member name="M:ICSharpCode.SharpZipLib.Zip.DiskArchiveStorage.OpenForDirectUpdate(System.IO.Stream)"> | ||
3746 | <summary> | ||
3747 | Return a stream suitable for performing direct updates on the original source. | ||
3748 | </summary> | ||
3749 | <param name="current">The current stream.</param> | ||
3750 | <returns>Returns a stream suitable for direct updating.</returns> | ||
3751 | <remarks>If the <paramref name="current"/> stream is not null this is used as is.</remarks> | ||
3752 | </member> | ||
3753 | <member name="M:ICSharpCode.SharpZipLib.Zip.DiskArchiveStorage.Dispose"> | ||
3754 | <summary> | ||
3755 | Disposes this instance. | ||
3756 | </summary> | ||
3757 | </member> | ||
3758 | <member name="T:ICSharpCode.SharpZipLib.Zip.MemoryArchiveStorage"> | ||
3759 | <summary> | ||
3760 | An <see cref="T:ICSharpCode.SharpZipLib.Zip.IArchiveStorage"/> implementation suitable for in memory streams. | ||
3761 | </summary> | ||
3762 | </member> | ||
3763 | <member name="M:ICSharpCode.SharpZipLib.Zip.MemoryArchiveStorage.#ctor"> | ||
3764 | <summary> | ||
3765 | Initializes a new instance of the <see cref="T:ICSharpCode.SharpZipLib.Zip.MemoryArchiveStorage"/> class. | ||
3766 | </summary> | ||
3767 | </member> | ||
3768 | <member name="M:ICSharpCode.SharpZipLib.Zip.MemoryArchiveStorage.#ctor(ICSharpCode.SharpZipLib.Zip.FileUpdateMode)"> | ||
3769 | <summary> | ||
3770 | Initializes a new instance of the <see cref="T:ICSharpCode.SharpZipLib.Zip.MemoryArchiveStorage"/> class. | ||
3771 | </summary> | ||
3772 | <param name="updateMode">The <see cref="T:ICSharpCode.SharpZipLib.Zip.FileUpdateMode"/> to use</param> | ||
3773 | <remarks>This constructor is for testing as memory streams dont really require safe mode.</remarks> | ||
3774 | </member> | ||
3775 | <member name="M:ICSharpCode.SharpZipLib.Zip.MemoryArchiveStorage.GetTemporaryOutput"> | ||
3776 | <summary> | ||
3777 | Gets the temporary output <see cref="T:System.IO.Stream"/> | ||
3778 | </summary> | ||
3779 | <returns>Returns the temporary output stream.</returns> | ||
3780 | </member> | ||
3781 | <member name="M:ICSharpCode.SharpZipLib.Zip.MemoryArchiveStorage.ConvertTemporaryToFinal"> | ||
3782 | <summary> | ||
3783 | Converts the temporary <see cref="T:System.IO.Stream"/> to its final form. | ||
3784 | </summary> | ||
3785 | <returns>Returns a <see cref="T:System.IO.Stream"/> that can be used to read | ||
3786 | the final storage for the archive.</returns> | ||
3787 | </member> | ||
3788 | <member name="M:ICSharpCode.SharpZipLib.Zip.MemoryArchiveStorage.MakeTemporaryCopy(System.IO.Stream)"> | ||
3789 | <summary> | ||
3790 | Make a temporary copy of the original stream. | ||
3791 | </summary> | ||
3792 | <param name="stream">The <see cref="T:System.IO.Stream"/> to copy.</param> | ||
3793 | <returns>Returns a temporary output <see cref="T:System.IO.Stream"/> that is a copy of the input.</returns> | ||
3794 | </member> | ||
3795 | <member name="M:ICSharpCode.SharpZipLib.Zip.MemoryArchiveStorage.OpenForDirectUpdate(System.IO.Stream)"> | ||
3796 | <summary> | ||
3797 | Return a stream suitable for performing direct updates on the original source. | ||
3798 | </summary> | ||
3799 | <param name="stream">The original source stream</param> | ||
3800 | <returns>Returns a stream suitable for direct updating.</returns> | ||
3801 | <remarks>If the <paramref name="stream"/> passed is not null this is used; | ||
3802 | otherwise a new <see cref="T:System.IO.MemoryStream"/> is returned.</remarks> | ||
3803 | </member> | ||
3804 | <member name="M:ICSharpCode.SharpZipLib.Zip.MemoryArchiveStorage.Dispose"> | ||
3805 | <summary> | ||
3806 | Disposes this instance. | ||
3807 | </summary> | ||
3808 | </member> | ||
3809 | <member name="P:ICSharpCode.SharpZipLib.Zip.MemoryArchiveStorage.FinalStream"> | ||
3810 | <summary> | ||
3811 | Get the stream returned by <see cref="M:ICSharpCode.SharpZipLib.Zip.MemoryArchiveStorage.ConvertTemporaryToFinal"/> if this was in fact called. | ||
3812 | </summary> | ||
3813 | </member> | ||
3814 | <member name="T:ICSharpCode.SharpZipLib.Checksums.Crc32"> | ||
3815 | <summary> | ||
3816 | Generate a table for a byte-wise 32-bit CRC calculation on the polynomial: | ||
3817 | x^32+x^26+x^23+x^22+x^16+x^12+x^11+x^10+x^8+x^7+x^5+x^4+x^2+x+1. | ||
3818 | |||
3819 | Polynomials over GF(2) are represented in binary, one bit per coefficient, | ||
3820 | with the lowest powers in the most significant bit. Then adding polynomials | ||
3821 | is just exclusive-or, and multiplying a polynomial by x is a right shift by | ||
3822 | one. If we call the above polynomial p, and represent a byte as the | ||
3823 | polynomial q, also with the lowest power in the most significant bit (so the | ||
3824 | byte 0xb1 is the polynomial x^7+x^3+x+1), then the CRC is (q*x^32) mod p, | ||
3825 | where a mod b means the remainder after dividing a by b. | ||
3826 | |||
3827 | This calculation is done using the shift-register method of multiplying and | ||
3828 | taking the remainder. The register is initialized to zero, and for each | ||
3829 | incoming bit, x^32 is added mod p to the register if the bit is a one (where | ||
3830 | x^32 mod p is p+x^32 = x^26+...+1), and the register is multiplied mod p by | ||
3831 | x (which is shifting right by one and adding x^32 mod p if the bit shifted | ||
3832 | out is a one). We start with the highest power (least significant bit) of | ||
3833 | q and repeat for all eight bits of q. | ||
3834 | |||
3835 | The table is simply the CRC of all possible eight bit values. This is all | ||
3836 | the information needed to generate CRC's on data a byte at a time for all | ||
3837 | combinations of CRC register values and incoming bytes. | ||
3838 | </summary> | ||
3839 | </member> | ||
3840 | <member name="T:ICSharpCode.SharpZipLib.Checksums.IChecksum"> | ||
3841 | <summary> | ||
3842 | Interface to compute a data checksum used by checked input/output streams. | ||
3843 | A data checksum can be updated by one byte or with a byte array. After each | ||
3844 | update the value of the current checksum can be returned by calling | ||
3845 | <code>getValue</code>. The complete checksum object can also be reset | ||
3846 | so it can be used again with new data. | ||
3847 | </summary> | ||
3848 | </member> | ||
3849 | <member name="M:ICSharpCode.SharpZipLib.Checksums.IChecksum.Reset"> | ||
3850 | <summary> | ||
3851 | Resets the data checksum as if no update was ever called. | ||
3852 | </summary> | ||
3853 | </member> | ||
3854 | <member name="M:ICSharpCode.SharpZipLib.Checksums.IChecksum.Update(System.Int32)"> | ||
3855 | <summary> | ||
3856 | Adds one byte to the data checksum. | ||
3857 | </summary> | ||
3858 | <param name = "value"> | ||
3859 | the data value to add. The high byte of the int is ignored. | ||
3860 | </param> | ||
3861 | </member> | ||
3862 | <member name="M:ICSharpCode.SharpZipLib.Checksums.IChecksum.Update(System.Byte[])"> | ||
3863 | <summary> | ||
3864 | Updates the data checksum with the bytes taken from the array. | ||
3865 | </summary> | ||
3866 | <param name="buffer"> | ||
3867 | buffer an array of bytes | ||
3868 | </param> | ||
3869 | </member> | ||
3870 | <member name="M:ICSharpCode.SharpZipLib.Checksums.IChecksum.Update(System.Byte[],System.Int32,System.Int32)"> | ||
3871 | <summary> | ||
3872 | Adds the byte array to the data checksum. | ||
3873 | </summary> | ||
3874 | <param name = "buffer"> | ||
3875 | The buffer which contains the data | ||
3876 | </param> | ||
3877 | <param name = "offset"> | ||
3878 | The offset in the buffer where the data starts | ||
3879 | </param> | ||
3880 | <param name = "count"> | ||
3881 | the number of data bytes to add. | ||
3882 | </param> | ||
3883 | </member> | ||
3884 | <member name="P:ICSharpCode.SharpZipLib.Checksums.IChecksum.Value"> | ||
3885 | <summary> | ||
3886 | Returns the data checksum computed so far. | ||
3887 | </summary> | ||
3888 | </member> | ||
3889 | <member name="F:ICSharpCode.SharpZipLib.Checksums.Crc32.crc"> | ||
3890 | <summary> | ||
3891 | The crc data checksum so far. | ||
3892 | </summary> | ||
3893 | </member> | ||
3894 | <member name="M:ICSharpCode.SharpZipLib.Checksums.Crc32.Reset"> | ||
3895 | <summary> | ||
3896 | Resets the CRC32 data checksum as if no update was ever called. | ||
3897 | </summary> | ||
3898 | </member> | ||
3899 | <member name="M:ICSharpCode.SharpZipLib.Checksums.Crc32.Update(System.Int32)"> | ||
3900 | <summary> | ||
3901 | Updates the checksum with the int bval. | ||
3902 | </summary> | ||
3903 | <param name = "value"> | ||
3904 | the byte is taken as the lower 8 bits of value | ||
3905 | </param> | ||
3906 | </member> | ||
3907 | <member name="M:ICSharpCode.SharpZipLib.Checksums.Crc32.Update(System.Byte[])"> | ||
3908 | <summary> | ||
3909 | Updates the checksum with the bytes taken from the array. | ||
3910 | </summary> | ||
3911 | <param name="buffer"> | ||
3912 | buffer an array of bytes | ||
3913 | </param> | ||
3914 | </member> | ||
3915 | <member name="M:ICSharpCode.SharpZipLib.Checksums.Crc32.Update(System.Byte[],System.Int32,System.Int32)"> | ||
3916 | <summary> | ||
3917 | Adds the byte array to the data checksum. | ||
3918 | </summary> | ||
3919 | <param name = "buffer"> | ||
3920 | The buffer which contains the data | ||
3921 | </param> | ||
3922 | <param name = "offset"> | ||
3923 | The offset in the buffer where the data starts | ||
3924 | </param> | ||
3925 | <param name = "count"> | ||
3926 | The number of data bytes to update the CRC with. | ||
3927 | </param> | ||
3928 | </member> | ||
3929 | <member name="P:ICSharpCode.SharpZipLib.Checksums.Crc32.Value"> | ||
3930 | <summary> | ||
3931 | Returns the CRC32 data checksum computed so far. | ||
3932 | </summary> | ||
3933 | </member> | ||
3934 | <member name="T:ICSharpCode.SharpZipLib.Zip.ZipEntryFactory"> | ||
3935 | <summary> | ||
3936 | Basic implementation of <see cref="T:ICSharpCode.SharpZipLib.Zip.IEntryFactory"></see> | ||
3937 | </summary> | ||
3938 | </member> | ||
3939 | <member name="T:ICSharpCode.SharpZipLib.Zip.IEntryFactory"> | ||
3940 | <summary> | ||
3941 | Defines factory methods for creating new <see cref="T:ICSharpCode.SharpZipLib.Zip.ZipEntry"></see> values. | ||
3942 | </summary> | ||
3943 | </member> | ||
3944 | <member name="M:ICSharpCode.SharpZipLib.Zip.IEntryFactory.MakeFileEntry(System.String)"> | ||
3945 | <summary> | ||
3946 | Create a <see cref="T:ICSharpCode.SharpZipLib.Zip.ZipEntry"/> for a file given its name | ||
3947 | </summary> | ||
3948 | <param name="fileName">The name of the file to create an entry for.</param> | ||
3949 | <returns>Returns a <see cref="T:ICSharpCode.SharpZipLib.Zip.ZipEntry">file entry</see> based on the <paramref name="fileName"/> passed.</returns> | ||
3950 | </member> | ||
3951 | <member name="M:ICSharpCode.SharpZipLib.Zip.IEntryFactory.MakeFileEntry(System.String,System.Boolean)"> | ||
3952 | <summary> | ||
3953 | Create a <see cref="T:ICSharpCode.SharpZipLib.Zip.ZipEntry"/> for a file given its name | ||
3954 | </summary> | ||
3955 | <param name="fileName">The name of the file to create an entry for.</param> | ||
3956 | <param name="useFileSystem">If true get details from the file system if the file exists.</param> | ||
3957 | <returns>Returns a <see cref="T:ICSharpCode.SharpZipLib.Zip.ZipEntry">file entry</see> based on the <paramref name="fileName"/> passed.</returns> | ||
3958 | </member> | ||
3959 | <member name="M:ICSharpCode.SharpZipLib.Zip.IEntryFactory.MakeDirectoryEntry(System.String)"> | ||
3960 | <summary> | ||
3961 | Create a <see cref="T:ICSharpCode.SharpZipLib.Zip.ZipEntry"/> for a directory given its name | ||
3962 | </summary> | ||
3963 | <param name="directoryName">The name of the directory to create an entry for.</param> | ||
3964 | <returns>Returns a <see cref="T:ICSharpCode.SharpZipLib.Zip.ZipEntry">directory entry</see> based on the <paramref name="directoryName"/> passed.</returns> | ||
3965 | </member> | ||
3966 | <member name="M:ICSharpCode.SharpZipLib.Zip.IEntryFactory.MakeDirectoryEntry(System.String,System.Boolean)"> | ||
3967 | <summary> | ||
3968 | Create a <see cref="T:ICSharpCode.SharpZipLib.Zip.ZipEntry"/> for a directory given its name | ||
3969 | </summary> | ||
3970 | <param name="directoryName">The name of the directory to create an entry for.</param> | ||
3971 | <param name="useFileSystem">If true get details from the file system for this directory if it exists.</param> | ||
3972 | <returns>Returns a <see cref="T:ICSharpCode.SharpZipLib.Zip.ZipEntry">directory entry</see> based on the <paramref name="directoryName"/> passed.</returns> | ||
3973 | </member> | ||
3974 | <member name="P:ICSharpCode.SharpZipLib.Zip.IEntryFactory.NameTransform"> | ||
3975 | <summary> | ||
3976 | Get/set the <see cref="T:ICSharpCode.SharpZipLib.Core.INameTransform"></see> applicable. | ||
3977 | </summary> | ||
3978 | </member> | ||
3979 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipEntryFactory.#ctor"> | ||
3980 | <summary> | ||
3981 | Initialise a new instance of the <see cref="T:ICSharpCode.SharpZipLib.Zip.ZipEntryFactory"/> class. | ||
3982 | </summary> | ||
3983 | <remarks>A default <see cref="T:ICSharpCode.SharpZipLib.Core.INameTransform"/>, and the LastWriteTime for files is used.</remarks> | ||
3984 | </member> | ||
3985 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipEntryFactory.#ctor(ICSharpCode.SharpZipLib.Zip.ZipEntryFactory.TimeSetting)"> | ||
3986 | <summary> | ||
3987 | Initialise a new instance of <see cref="T:ICSharpCode.SharpZipLib.Zip.ZipEntryFactory"/> using the specified <see cref="T:ICSharpCode.SharpZipLib.Zip.ZipEntryFactory.TimeSetting"/> | ||
3988 | </summary> | ||
3989 | <param name="timeSetting">The <see cref="T:ICSharpCode.SharpZipLib.Zip.ZipEntryFactory.TimeSetting">time setting</see> to use when creating <see cref="T:ICSharpCode.SharpZipLib.Zip.ZipEntry">Zip entries</see>.</param> | ||
3990 | </member> | ||
3991 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipEntryFactory.#ctor(System.DateTime)"> | ||
3992 | <summary> | ||
3993 | Initialise a new instance of <see cref="T:ICSharpCode.SharpZipLib.Zip.ZipEntryFactory"/> using the specified <see cref="T:System.DateTime"/> | ||
3994 | </summary> | ||
3995 | <param name="time">The time to set all <see cref="P:ICSharpCode.SharpZipLib.Zip.ZipEntry.DateTime"/> values to.</param> | ||
3996 | </member> | ||
3997 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipEntryFactory.MakeFileEntry(System.String)"> | ||
3998 | <summary> | ||
3999 | Make a new <see cref="T:ICSharpCode.SharpZipLib.Zip.ZipEntry"/> for a file. | ||
4000 | </summary> | ||
4001 | <param name="fileName">The name of the file to create a new entry for.</param> | ||
4002 | <returns>Returns a new <see cref="T:ICSharpCode.SharpZipLib.Zip.ZipEntry"/> based on the <paramref name="fileName"/>.</returns> | ||
4003 | </member> | ||
4004 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipEntryFactory.MakeFileEntry(System.String,System.Boolean)"> | ||
4005 | <summary> | ||
4006 | Make a new <see cref="T:ICSharpCode.SharpZipLib.Zip.ZipEntry"/> from a name. | ||
4007 | </summary> | ||
4008 | <param name="fileName">The name of the file to create a new entry for.</param> | ||
4009 | <param name="useFileSystem">If true entry detail is retrieved from the file system if the file exists.</param> | ||
4010 | <returns>Returns a new <see cref="T:ICSharpCode.SharpZipLib.Zip.ZipEntry"/> based on the <paramref name="fileName"/>.</returns> | ||
4011 | </member> | ||
4012 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipEntryFactory.MakeDirectoryEntry(System.String)"> | ||
4013 | <summary> | ||
4014 | Make a new <see cref="T:ICSharpCode.SharpZipLib.Zip.ZipEntry"></see> for a directory. | ||
4015 | </summary> | ||
4016 | <param name="directoryName">The raw untransformed name for the new directory</param> | ||
4017 | <returns>Returns a new <see cref="T:ICSharpCode.SharpZipLib.Zip.ZipEntry"></see> representing a directory.</returns> | ||
4018 | </member> | ||
4019 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipEntryFactory.MakeDirectoryEntry(System.String,System.Boolean)"> | ||
4020 | <summary> | ||
4021 | Make a new <see cref="T:ICSharpCode.SharpZipLib.Zip.ZipEntry"></see> for a directory. | ||
4022 | </summary> | ||
4023 | <param name="directoryName">The raw untransformed name for the new directory</param> | ||
4024 | <param name="useFileSystem">If true entry detail is retrieved from the file system if the file exists.</param> | ||
4025 | <returns>Returns a new <see cref="T:ICSharpCode.SharpZipLib.Zip.ZipEntry"></see> representing a directory.</returns> | ||
4026 | </member> | ||
4027 | <member name="P:ICSharpCode.SharpZipLib.Zip.ZipEntryFactory.NameTransform"> | ||
4028 | <summary> | ||
4029 | Get / set the <see cref="T:ICSharpCode.SharpZipLib.Core.INameTransform"/> to be used when creating new <see cref="T:ICSharpCode.SharpZipLib.Zip.ZipEntry"/> values. | ||
4030 | </summary> | ||
4031 | <remarks> | ||
4032 | Setting this property to null will cause a default <see cref="T:ICSharpCode.SharpZipLib.Zip.ZipNameTransform">name transform</see> to be used. | ||
4033 | </remarks> | ||
4034 | </member> | ||
4035 | <member name="P:ICSharpCode.SharpZipLib.Zip.ZipEntryFactory.Setting"> | ||
4036 | <summary> | ||
4037 | Get / set the <see cref="T:ICSharpCode.SharpZipLib.Zip.ZipEntryFactory.TimeSetting"/> in use. | ||
4038 | </summary> | ||
4039 | </member> | ||
4040 | <member name="P:ICSharpCode.SharpZipLib.Zip.ZipEntryFactory.FixedDateTime"> | ||
4041 | <summary> | ||
4042 | Get / set the <see cref="T:System.DateTime"/> value to use when <see cref="P:ICSharpCode.SharpZipLib.Zip.ZipEntryFactory.Setting"/> is set to <see cref="F:ICSharpCode.SharpZipLib.Zip.ZipEntryFactory.TimeSetting.Fixed"/> | ||
4043 | </summary> | ||
4044 | </member> | ||
4045 | <member name="P:ICSharpCode.SharpZipLib.Zip.ZipEntryFactory.GetAttributes"> | ||
4046 | <summary> | ||
4047 | A bitmask defining the attributes to be retrieved from the actual file. | ||
4048 | </summary> | ||
4049 | <remarks>The default is to get all possible attributes from the actual file.</remarks> | ||
4050 | </member> | ||
4051 | <member name="P:ICSharpCode.SharpZipLib.Zip.ZipEntryFactory.SetAttributes"> | ||
4052 | <summary> | ||
4053 | A bitmask defining which attributes are to be set on. | ||
4054 | </summary> | ||
4055 | <remarks>By default no attributes are set on.</remarks> | ||
4056 | </member> | ||
4057 | <member name="P:ICSharpCode.SharpZipLib.Zip.ZipEntryFactory.IsUnicodeText"> | ||
4058 | <summary> | ||
4059 | Get set a value indicating wether unidoce text should be set on. | ||
4060 | </summary> | ||
4061 | </member> | ||
4062 | <member name="T:ICSharpCode.SharpZipLib.Zip.ZipEntryFactory.TimeSetting"> | ||
4063 | <summary> | ||
4064 | Defines the possible values to be used for the <see cref="P:ICSharpCode.SharpZipLib.Zip.ZipEntry.DateTime"/>. | ||
4065 | </summary> | ||
4066 | </member> | ||
4067 | <member name="F:ICSharpCode.SharpZipLib.Zip.ZipEntryFactory.TimeSetting.LastWriteTime"> | ||
4068 | <summary> | ||
4069 | Use the recorded LastWriteTime value for the file. | ||
4070 | </summary> | ||
4071 | </member> | ||
4072 | <member name="F:ICSharpCode.SharpZipLib.Zip.ZipEntryFactory.TimeSetting.LastWriteTimeUtc"> | ||
4073 | <summary> | ||
4074 | Use the recorded LastWriteTimeUtc value for the file | ||
4075 | </summary> | ||
4076 | </member> | ||
4077 | <member name="F:ICSharpCode.SharpZipLib.Zip.ZipEntryFactory.TimeSetting.CreateTime"> | ||
4078 | <summary> | ||
4079 | Use the recorded CreateTime value for the file. | ||
4080 | </summary> | ||
4081 | </member> | ||
4082 | <member name="F:ICSharpCode.SharpZipLib.Zip.ZipEntryFactory.TimeSetting.CreateTimeUtc"> | ||
4083 | <summary> | ||
4084 | Use the recorded CreateTimeUtc value for the file. | ||
4085 | </summary> | ||
4086 | </member> | ||
4087 | <member name="F:ICSharpCode.SharpZipLib.Zip.ZipEntryFactory.TimeSetting.LastAccessTime"> | ||
4088 | <summary> | ||
4089 | Use the recorded LastAccessTime value for the file. | ||
4090 | </summary> | ||
4091 | </member> | ||
4092 | <member name="F:ICSharpCode.SharpZipLib.Zip.ZipEntryFactory.TimeSetting.LastAccessTimeUtc"> | ||
4093 | <summary> | ||
4094 | Use the recorded LastAccessTimeUtc value for the file. | ||
4095 | </summary> | ||
4096 | </member> | ||
4097 | <member name="F:ICSharpCode.SharpZipLib.Zip.ZipEntryFactory.TimeSetting.Fixed"> | ||
4098 | <summary> | ||
4099 | Use a fixed value. | ||
4100 | </summary> | ||
4101 | <remarks>The actual <see cref="T:System.DateTime"/> value used can be | ||
4102 | specified via the <see cref="M:ICSharpCode.SharpZipLib.Zip.ZipEntryFactory.#ctor(System.DateTime)"/> constructor or | ||
4103 | using the <see cref="M:ICSharpCode.SharpZipLib.Zip.ZipEntryFactory.#ctor(ICSharpCode.SharpZipLib.Zip.ZipEntryFactory.TimeSetting)"/> with the setting set | ||
4104 | to <see cref="F:ICSharpCode.SharpZipLib.Zip.ZipEntryFactory.TimeSetting.Fixed"/> which will use the <see cref="T:System.DateTime"/> when this class was constructed. | ||
4105 | The <see cref="P:ICSharpCode.SharpZipLib.Zip.ZipEntryFactory.FixedDateTime"/> property can also be used to set this value.</remarks> | ||
4106 | </member> | ||
4107 | <member name="T:ICSharpCode.SharpZipLib.Encryption.PkzipClassic"> | ||
4108 | <summary> | ||
4109 | PkzipClassic embodies the classic or original encryption facilities used in Pkzip archives. | ||
4110 | While it has been superceded by more recent and more powerful algorithms, its still in use and | ||
4111 | is viable for preventing casual snooping | ||
4112 | </summary> | ||
4113 | </member> | ||
4114 | <member name="M:ICSharpCode.SharpZipLib.Encryption.PkzipClassic.GenerateKeys(System.Byte[])"> | ||
4115 | <summary> | ||
4116 | Generates new encryption keys based on given seed | ||
4117 | </summary> | ||
4118 | <param name="seed">The seed value to initialise keys with.</param> | ||
4119 | <returns>A new key value.</returns> | ||
4120 | </member> | ||
4121 | <member name="T:ICSharpCode.SharpZipLib.Encryption.PkzipClassicCryptoBase"> | ||
4122 | <summary> | ||
4123 | PkzipClassicCryptoBase provides the low level facilities for encryption | ||
4124 | and decryption using the PkzipClassic algorithm. | ||
4125 | </summary> | ||
4126 | </member> | ||
4127 | <member name="M:ICSharpCode.SharpZipLib.Encryption.PkzipClassicCryptoBase.TransformByte"> | ||
4128 | <summary> | ||
4129 | Transform a single byte | ||
4130 | </summary> | ||
4131 | <returns> | ||
4132 | The transformed value | ||
4133 | </returns> | ||
4134 | </member> | ||
4135 | <member name="M:ICSharpCode.SharpZipLib.Encryption.PkzipClassicCryptoBase.SetKeys(System.Byte[])"> | ||
4136 | <summary> | ||
4137 | Set the key schedule for encryption/decryption. | ||
4138 | </summary> | ||
4139 | <param name="keyData">The data use to set the keys from.</param> | ||
4140 | </member> | ||
4141 | <member name="M:ICSharpCode.SharpZipLib.Encryption.PkzipClassicCryptoBase.UpdateKeys(System.Byte)"> | ||
4142 | <summary> | ||
4143 | Update encryption keys | ||
4144 | </summary> | ||
4145 | </member> | ||
4146 | <member name="M:ICSharpCode.SharpZipLib.Encryption.PkzipClassicCryptoBase.Reset"> | ||
4147 | <summary> | ||
4148 | Reset the internal state. | ||
4149 | </summary> | ||
4150 | </member> | ||
4151 | <member name="T:ICSharpCode.SharpZipLib.Encryption.PkzipClassicEncryptCryptoTransform"> | ||
4152 | <summary> | ||
4153 | PkzipClassic CryptoTransform for encryption. | ||
4154 | </summary> | ||
4155 | </member> | ||
4156 | <member name="M:ICSharpCode.SharpZipLib.Encryption.PkzipClassicEncryptCryptoTransform.#ctor(System.Byte[])"> | ||
4157 | <summary> | ||
4158 | Initialise a new instance of <see cref="T:ICSharpCode.SharpZipLib.Encryption.PkzipClassicEncryptCryptoTransform"></see> | ||
4159 | </summary> | ||
4160 | <param name="keyBlock">The key block to use.</param> | ||
4161 | </member> | ||
4162 | <member name="M:ICSharpCode.SharpZipLib.Encryption.PkzipClassicEncryptCryptoTransform.TransformFinalBlock(System.Byte[],System.Int32,System.Int32)"> | ||
4163 | <summary> | ||
4164 | Transforms the specified region of the specified byte array. | ||
4165 | </summary> | ||
4166 | <param name="inputBuffer">The input for which to compute the transform.</param> | ||
4167 | <param name="inputOffset">The offset into the byte array from which to begin using data.</param> | ||
4168 | <param name="inputCount">The number of bytes in the byte array to use as data.</param> | ||
4169 | <returns>The computed transform.</returns> | ||
4170 | </member> | ||
4171 | <member name="M:ICSharpCode.SharpZipLib.Encryption.PkzipClassicEncryptCryptoTransform.TransformBlock(System.Byte[],System.Int32,System.Int32,System.Byte[],System.Int32)"> | ||
4172 | <summary> | ||
4173 | Transforms the specified region of the input byte array and copies | ||
4174 | the resulting transform to the specified region of the output byte array. | ||
4175 | </summary> | ||
4176 | <param name="inputBuffer">The input for which to compute the transform.</param> | ||
4177 | <param name="inputOffset">The offset into the input byte array from which to begin using data.</param> | ||
4178 | <param name="inputCount">The number of bytes in the input byte array to use as data.</param> | ||
4179 | <param name="outputBuffer">The output to which to write the transform.</param> | ||
4180 | <param name="outputOffset">The offset into the output byte array from which to begin writing data.</param> | ||
4181 | <returns>The number of bytes written.</returns> | ||
4182 | </member> | ||
4183 | <member name="M:ICSharpCode.SharpZipLib.Encryption.PkzipClassicEncryptCryptoTransform.Dispose"> | ||
4184 | <summary> | ||
4185 | Cleanup internal state. | ||
4186 | </summary> | ||
4187 | </member> | ||
4188 | <member name="P:ICSharpCode.SharpZipLib.Encryption.PkzipClassicEncryptCryptoTransform.CanReuseTransform"> | ||
4189 | <summary> | ||
4190 | Gets a value indicating whether the current transform can be reused. | ||
4191 | </summary> | ||
4192 | </member> | ||
4193 | <member name="P:ICSharpCode.SharpZipLib.Encryption.PkzipClassicEncryptCryptoTransform.InputBlockSize"> | ||
4194 | <summary> | ||
4195 | Gets the size of the input data blocks in bytes. | ||
4196 | </summary> | ||
4197 | </member> | ||
4198 | <member name="P:ICSharpCode.SharpZipLib.Encryption.PkzipClassicEncryptCryptoTransform.OutputBlockSize"> | ||
4199 | <summary> | ||
4200 | Gets the size of the output data blocks in bytes. | ||
4201 | </summary> | ||
4202 | </member> | ||
4203 | <member name="P:ICSharpCode.SharpZipLib.Encryption.PkzipClassicEncryptCryptoTransform.CanTransformMultipleBlocks"> | ||
4204 | <summary> | ||
4205 | Gets a value indicating whether multiple blocks can be transformed. | ||
4206 | </summary> | ||
4207 | </member> | ||
4208 | <member name="T:ICSharpCode.SharpZipLib.Encryption.PkzipClassicDecryptCryptoTransform"> | ||
4209 | <summary> | ||
4210 | PkzipClassic CryptoTransform for decryption. | ||
4211 | </summary> | ||
4212 | </member> | ||
4213 | <member name="M:ICSharpCode.SharpZipLib.Encryption.PkzipClassicDecryptCryptoTransform.#ctor(System.Byte[])"> | ||
4214 | <summary> | ||
4215 | Initialise a new instance of <see cref="T:ICSharpCode.SharpZipLib.Encryption.PkzipClassicDecryptCryptoTransform"></see>. | ||
4216 | </summary> | ||
4217 | <param name="keyBlock">The key block to decrypt with.</param> | ||
4218 | </member> | ||
4219 | <member name="M:ICSharpCode.SharpZipLib.Encryption.PkzipClassicDecryptCryptoTransform.TransformFinalBlock(System.Byte[],System.Int32,System.Int32)"> | ||
4220 | <summary> | ||
4221 | Transforms the specified region of the specified byte array. | ||
4222 | </summary> | ||
4223 | <param name="inputBuffer">The input for which to compute the transform.</param> | ||
4224 | <param name="inputOffset">The offset into the byte array from which to begin using data.</param> | ||
4225 | <param name="inputCount">The number of bytes in the byte array to use as data.</param> | ||
4226 | <returns>The computed transform.</returns> | ||
4227 | </member> | ||
4228 | <member name="M:ICSharpCode.SharpZipLib.Encryption.PkzipClassicDecryptCryptoTransform.TransformBlock(System.Byte[],System.Int32,System.Int32,System.Byte[],System.Int32)"> | ||
4229 | <summary> | ||
4230 | Transforms the specified region of the input byte array and copies | ||
4231 | the resulting transform to the specified region of the output byte array. | ||
4232 | </summary> | ||
4233 | <param name="inputBuffer">The input for which to compute the transform.</param> | ||
4234 | <param name="inputOffset">The offset into the input byte array from which to begin using data.</param> | ||
4235 | <param name="inputCount">The number of bytes in the input byte array to use as data.</param> | ||
4236 | <param name="outputBuffer">The output to which to write the transform.</param> | ||
4237 | <param name="outputOffset">The offset into the output byte array from which to begin writing data.</param> | ||
4238 | <returns>The number of bytes written.</returns> | ||
4239 | </member> | ||
4240 | <member name="M:ICSharpCode.SharpZipLib.Encryption.PkzipClassicDecryptCryptoTransform.Dispose"> | ||
4241 | <summary> | ||
4242 | Cleanup internal state. | ||
4243 | </summary> | ||
4244 | </member> | ||
4245 | <member name="P:ICSharpCode.SharpZipLib.Encryption.PkzipClassicDecryptCryptoTransform.CanReuseTransform"> | ||
4246 | <summary> | ||
4247 | Gets a value indicating whether the current transform can be reused. | ||
4248 | </summary> | ||
4249 | </member> | ||
4250 | <member name="P:ICSharpCode.SharpZipLib.Encryption.PkzipClassicDecryptCryptoTransform.InputBlockSize"> | ||
4251 | <summary> | ||
4252 | Gets the size of the input data blocks in bytes. | ||
4253 | </summary> | ||
4254 | </member> | ||
4255 | <member name="P:ICSharpCode.SharpZipLib.Encryption.PkzipClassicDecryptCryptoTransform.OutputBlockSize"> | ||
4256 | <summary> | ||
4257 | Gets the size of the output data blocks in bytes. | ||
4258 | </summary> | ||
4259 | </member> | ||
4260 | <member name="P:ICSharpCode.SharpZipLib.Encryption.PkzipClassicDecryptCryptoTransform.CanTransformMultipleBlocks"> | ||
4261 | <summary> | ||
4262 | Gets a value indicating whether multiple blocks can be transformed. | ||
4263 | </summary> | ||
4264 | </member> | ||
4265 | <member name="T:ICSharpCode.SharpZipLib.Encryption.PkzipClassicManaged"> | ||
4266 | <summary> | ||
4267 | Defines a wrapper object to access the Pkzip algorithm. | ||
4268 | This class cannot be inherited. | ||
4269 | </summary> | ||
4270 | </member> | ||
4271 | <member name="M:ICSharpCode.SharpZipLib.Encryption.PkzipClassicManaged.GenerateIV"> | ||
4272 | <summary> | ||
4273 | Generate an initial vector. | ||
4274 | </summary> | ||
4275 | </member> | ||
4276 | <member name="M:ICSharpCode.SharpZipLib.Encryption.PkzipClassicManaged.GenerateKey"> | ||
4277 | <summary> | ||
4278 | Generate a new random key. | ||
4279 | </summary> | ||
4280 | </member> | ||
4281 | <member name="M:ICSharpCode.SharpZipLib.Encryption.PkzipClassicManaged.CreateEncryptor(System.Byte[],System.Byte[])"> | ||
4282 | <summary> | ||
4283 | Create an encryptor. | ||
4284 | </summary> | ||
4285 | <param name="rgbKey">The key to use for this encryptor.</param> | ||
4286 | <param name="rgbIV">Initialisation vector for the new encryptor.</param> | ||
4287 | <returns>Returns a new PkzipClassic encryptor</returns> | ||
4288 | </member> | ||
4289 | <member name="M:ICSharpCode.SharpZipLib.Encryption.PkzipClassicManaged.CreateDecryptor(System.Byte[],System.Byte[])"> | ||
4290 | <summary> | ||
4291 | Create a decryptor. | ||
4292 | </summary> | ||
4293 | <param name="rgbKey">Keys to use for this new decryptor.</param> | ||
4294 | <param name="rgbIV">Initialisation vector for the new decryptor.</param> | ||
4295 | <returns>Returns a new decryptor.</returns> | ||
4296 | </member> | ||
4297 | <member name="P:ICSharpCode.SharpZipLib.Encryption.PkzipClassicManaged.BlockSize"> | ||
4298 | <summary> | ||
4299 | Get / set the applicable block size in bits. | ||
4300 | </summary> | ||
4301 | <remarks>The only valid block size is 8.</remarks> | ||
4302 | </member> | ||
4303 | <member name="P:ICSharpCode.SharpZipLib.Encryption.PkzipClassicManaged.LegalKeySizes"> | ||
4304 | <summary> | ||
4305 | Get an array of legal <see cref="T:System.Security.Cryptography.KeySizes">key sizes.</see> | ||
4306 | </summary> | ||
4307 | </member> | ||
4308 | <member name="P:ICSharpCode.SharpZipLib.Encryption.PkzipClassicManaged.LegalBlockSizes"> | ||
4309 | <summary> | ||
4310 | Get an array of legal <see cref="T:System.Security.Cryptography.KeySizes">block sizes</see>. | ||
4311 | </summary> | ||
4312 | </member> | ||
4313 | <member name="P:ICSharpCode.SharpZipLib.Encryption.PkzipClassicManaged.Key"> | ||
4314 | <summary> | ||
4315 | Get / set the key value applicable. | ||
4316 | </summary> | ||
4317 | </member> | ||
4318 | <member name="T:ICSharpCode.SharpZipLib.Tar.TarEntry"> | ||
4319 | <summary> | ||
4320 | This class represents an entry in a Tar archive. It consists | ||
4321 | of the entry's header, as well as the entry's File. Entries | ||
4322 | can be instantiated in one of three ways, depending on how | ||
4323 | they are to be used. | ||
4324 | <p> | ||
4325 | TarEntries that are created from the header bytes read from | ||
4326 | an archive are instantiated with the TarEntry( byte[] ) | ||
4327 | constructor. These entries will be used when extracting from | ||
4328 | or listing the contents of an archive. These entries have their | ||
4329 | header filled in using the header bytes. They also set the File | ||
4330 | to null, since they reference an archive entry not a file.</p> | ||
4331 | <p> | ||
4332 | TarEntries that are created from files that are to be written | ||
4333 | into an archive are instantiated with the CreateEntryFromFile(string) | ||
4334 | pseudo constructor. These entries have their header filled in using | ||
4335 | the File's information. They also keep a reference to the File | ||
4336 | for convenience when writing entries.</p> | ||
4337 | <p> | ||
4338 | Finally, TarEntries can be constructed from nothing but a name. | ||
4339 | This allows the programmer to construct the entry by hand, for | ||
4340 | instance when only an InputStream is available for writing to | ||
4341 | the archive, and the header information is constructed from | ||
4342 | other information. In this case the header fields are set to | ||
4343 | defaults and the File is set to null.</p> | ||
4344 | <see cref="P:ICSharpCode.SharpZipLib.Tar.TarEntry.TarHeader"/> | ||
4345 | </summary> | ||
4346 | </member> | ||
4347 | <member name="M:ICSharpCode.SharpZipLib.Tar.TarEntry.#ctor"> | ||
4348 | <summary> | ||
4349 | Initialise a default instance of <see cref="T:ICSharpCode.SharpZipLib.Tar.TarEntry"/>. | ||
4350 | </summary> | ||
4351 | </member> | ||
4352 | <member name="M:ICSharpCode.SharpZipLib.Tar.TarEntry.#ctor(System.Byte[])"> | ||
4353 | <summary> | ||
4354 | Construct an entry from an archive's header bytes. File is set | ||
4355 | to null. | ||
4356 | </summary> | ||
4357 | <param name = "headerBuffer"> | ||
4358 | The header bytes from a tar archive entry. | ||
4359 | </param> | ||
4360 | </member> | ||
4361 | <member name="M:ICSharpCode.SharpZipLib.Tar.TarEntry.#ctor(ICSharpCode.SharpZipLib.Tar.TarHeader)"> | ||
4362 | <summary> | ||
4363 | Construct a TarEntry using the <paramref name="header">header</paramref> provided | ||
4364 | </summary> | ||
4365 | <param name="header">Header details for entry</param> | ||
4366 | </member> | ||
4367 | <member name="M:ICSharpCode.SharpZipLib.Tar.TarEntry.Clone"> | ||
4368 | <summary> | ||
4369 | Clone this tar entry. | ||
4370 | </summary> | ||
4371 | <returns>Returns a clone of this entry.</returns> | ||
4372 | </member> | ||
4373 | <member name="M:ICSharpCode.SharpZipLib.Tar.TarEntry.CreateTarEntry(System.String)"> | ||
4374 | <summary> | ||
4375 | Construct an entry with only a <paramref name="name">name</paramref>. | ||
4376 | This allows the programmer to construct the entry's header "by hand". | ||
4377 | </summary> | ||
4378 | <param name="name">The name to use for the entry</param> | ||
4379 | <returns>Returns the newly created <see cref="T:ICSharpCode.SharpZipLib.Tar.TarEntry"/></returns> | ||
4380 | </member> | ||
4381 | <member name="M:ICSharpCode.SharpZipLib.Tar.TarEntry.CreateEntryFromFile(System.String)"> | ||
4382 | <summary> | ||
4383 | Construct an entry for a file. File is set to file, and the | ||
4384 | header is constructed from information from the file. | ||
4385 | </summary> | ||
4386 | <param name="fileName">The file name that the entry represents.</param> | ||
4387 | <returns>Returns the newly created <see cref="T:ICSharpCode.SharpZipLib.Tar.TarEntry"/></returns> | ||
4388 | </member> | ||
4389 | <member name="M:ICSharpCode.SharpZipLib.Tar.TarEntry.Equals(System.Object)"> | ||
4390 | <summary> | ||
4391 | Determine if the two entries are equal. Equality is determined | ||
4392 | by the header names being equal. | ||
4393 | </summary> | ||
4394 | <param name="obj">The <see cref="T:System.Object"/> to compare with the current Object.</param> | ||
4395 | <returns> | ||
4396 | True if the entries are equal; false if not. | ||
4397 | </returns> | ||
4398 | </member> | ||
4399 | <member name="M:ICSharpCode.SharpZipLib.Tar.TarEntry.GetHashCode"> | ||
4400 | <summary> | ||
4401 | Derive a Hash value for the current <see cref="T:System.Object"/> | ||
4402 | </summary> | ||
4403 | <returns>A Hash code for the current <see cref="T:System.Object"/></returns> | ||
4404 | </member> | ||
4405 | <member name="M:ICSharpCode.SharpZipLib.Tar.TarEntry.IsDescendent(ICSharpCode.SharpZipLib.Tar.TarEntry)"> | ||
4406 | <summary> | ||
4407 | Determine if the given entry is a descendant of this entry. | ||
4408 | Descendancy is determined by the name of the descendant | ||
4409 | starting with this entry's name. | ||
4410 | </summary> | ||
4411 | <param name = "toTest"> | ||
4412 | Entry to be checked as a descendent of this. | ||
4413 | </param> | ||
4414 | <returns> | ||
4415 | True if entry is a descendant of this. | ||
4416 | </returns> | ||
4417 | </member> | ||
4418 | <member name="M:ICSharpCode.SharpZipLib.Tar.TarEntry.SetIds(System.Int32,System.Int32)"> | ||
4419 | <summary> | ||
4420 | Convenience method to set this entry's group and user ids. | ||
4421 | </summary> | ||
4422 | <param name="userId"> | ||
4423 | This entry's new user id. | ||
4424 | </param> | ||
4425 | <param name="groupId"> | ||
4426 | This entry's new group id. | ||
4427 | </param> | ||
4428 | </member> | ||
4429 | <member name="M:ICSharpCode.SharpZipLib.Tar.TarEntry.SetNames(System.String,System.String)"> | ||
4430 | <summary> | ||
4431 | Convenience method to set this entry's group and user names. | ||
4432 | </summary> | ||
4433 | <param name="userName"> | ||
4434 | This entry's new user name. | ||
4435 | </param> | ||
4436 | <param name="groupName"> | ||
4437 | This entry's new group name. | ||
4438 | </param> | ||
4439 | </member> | ||
4440 | <member name="M:ICSharpCode.SharpZipLib.Tar.TarEntry.GetFileTarHeader(ICSharpCode.SharpZipLib.Tar.TarHeader,System.String)"> | ||
4441 | <summary> | ||
4442 | Fill in a TarHeader with information from a File. | ||
4443 | </summary> | ||
4444 | <param name="header"> | ||
4445 | The TarHeader to fill in. | ||
4446 | </param> | ||
4447 | <param name="file"> | ||
4448 | The file from which to get the header information. | ||
4449 | </param> | ||
4450 | </member> | ||
4451 | <member name="M:ICSharpCode.SharpZipLib.Tar.TarEntry.GetDirectoryEntries"> | ||
4452 | <summary> | ||
4453 | Get entries for all files present in this entries directory. | ||
4454 | If this entry doesnt represent a directory zero entries are returned. | ||
4455 | </summary> | ||
4456 | <returns> | ||
4457 | An array of TarEntry's for this entry's children. | ||
4458 | </returns> | ||
4459 | </member> | ||
4460 | <member name="M:ICSharpCode.SharpZipLib.Tar.TarEntry.WriteEntryHeader(System.Byte[])"> | ||
4461 | <summary> | ||
4462 | Write an entry's header information to a header buffer. | ||
4463 | </summary> | ||
4464 | <param name = "outBuffer"> | ||
4465 | The tar entry header buffer to fill in. | ||
4466 | </param> | ||
4467 | </member> | ||
4468 | <member name="M:ICSharpCode.SharpZipLib.Tar.TarEntry.AdjustEntryName(System.Byte[],System.String)"> | ||
4469 | <summary> | ||
4470 | Convenience method that will modify an entry's name directly | ||
4471 | in place in an entry header buffer byte array. | ||
4472 | </summary> | ||
4473 | <param name="buffer"> | ||
4474 | The buffer containing the entry header to modify. | ||
4475 | </param> | ||
4476 | <param name="newName"> | ||
4477 | The new name to place into the header buffer. | ||
4478 | </param> | ||
4479 | </member> | ||
4480 | <member name="M:ICSharpCode.SharpZipLib.Tar.TarEntry.NameTarHeader(ICSharpCode.SharpZipLib.Tar.TarHeader,System.String)"> | ||
4481 | <summary> | ||
4482 | Fill in a TarHeader given only the entry's name. | ||
4483 | </summary> | ||
4484 | <param name="header"> | ||
4485 | The TarHeader to fill in. | ||
4486 | </param> | ||
4487 | <param name="name"> | ||
4488 | The tar entry name. | ||
4489 | </param> | ||
4490 | </member> | ||
4491 | <member name="F:ICSharpCode.SharpZipLib.Tar.TarEntry.file"> | ||
4492 | <summary> | ||
4493 | The name of the file this entry represents or null if the entry is not based on a file. | ||
4494 | </summary> | ||
4495 | </member> | ||
4496 | <member name="F:ICSharpCode.SharpZipLib.Tar.TarEntry.header"> | ||
4497 | <summary> | ||
4498 | The entry's header information. | ||
4499 | </summary> | ||
4500 | </member> | ||
4501 | <member name="P:ICSharpCode.SharpZipLib.Tar.TarEntry.TarHeader"> | ||
4502 | <summary> | ||
4503 | Get this entry's header. | ||
4504 | </summary> | ||
4505 | <returns> | ||
4506 | This entry's TarHeader. | ||
4507 | </returns> | ||
4508 | </member> | ||
4509 | <member name="P:ICSharpCode.SharpZipLib.Tar.TarEntry.Name"> | ||
4510 | <summary> | ||
4511 | Get/Set this entry's name. | ||
4512 | </summary> | ||
4513 | </member> | ||
4514 | <member name="P:ICSharpCode.SharpZipLib.Tar.TarEntry.UserId"> | ||
4515 | <summary> | ||
4516 | Get/set this entry's user id. | ||
4517 | </summary> | ||
4518 | </member> | ||
4519 | <member name="P:ICSharpCode.SharpZipLib.Tar.TarEntry.GroupId"> | ||
4520 | <summary> | ||
4521 | Get/set this entry's group id. | ||
4522 | </summary> | ||
4523 | </member> | ||
4524 | <member name="P:ICSharpCode.SharpZipLib.Tar.TarEntry.UserName"> | ||
4525 | <summary> | ||
4526 | Get/set this entry's user name. | ||
4527 | </summary> | ||
4528 | </member> | ||
4529 | <member name="P:ICSharpCode.SharpZipLib.Tar.TarEntry.GroupName"> | ||
4530 | <summary> | ||
4531 | Get/set this entry's group name. | ||
4532 | </summary> | ||
4533 | </member> | ||
4534 | <member name="P:ICSharpCode.SharpZipLib.Tar.TarEntry.ModTime"> | ||
4535 | <summary> | ||
4536 | Get/Set the modification time for this entry | ||
4537 | </summary> | ||
4538 | </member> | ||
4539 | <member name="P:ICSharpCode.SharpZipLib.Tar.TarEntry.File"> | ||
4540 | <summary> | ||
4541 | Get this entry's file. | ||
4542 | </summary> | ||
4543 | <returns> | ||
4544 | This entry's file. | ||
4545 | </returns> | ||
4546 | </member> | ||
4547 | <member name="P:ICSharpCode.SharpZipLib.Tar.TarEntry.Size"> | ||
4548 | <summary> | ||
4549 | Get/set this entry's recorded file size. | ||
4550 | </summary> | ||
4551 | </member> | ||
4552 | <member name="P:ICSharpCode.SharpZipLib.Tar.TarEntry.IsDirectory"> | ||
4553 | <summary> | ||
4554 | Return true if this entry represents a directory, false otherwise | ||
4555 | </summary> | ||
4556 | <returns> | ||
4557 | True if this entry is a directory. | ||
4558 | </returns> | ||
4559 | </member> | ||
4560 | <member name="T:ICSharpCode.SharpZipLib.GZip.GZipInputStream"> | ||
4561 | <summary> | ||
4562 | This filter stream is used to decompress a "GZIP" format stream. | ||
4563 | The "GZIP" format is described baseInputStream RFC 1952. | ||
4564 | |||
4565 | author of the original java version : John Leuner | ||
4566 | </summary> | ||
4567 | <example> This sample shows how to unzip a gzipped file | ||
4568 | <code> | ||
4569 | using System; | ||
4570 | using System.IO; | ||
4571 | |||
4572 | using ICSharpCode.SharpZipLib.Core; | ||
4573 | using ICSharpCode.SharpZipLib.GZip; | ||
4574 | |||
4575 | class MainClass | ||
4576 | { | ||
4577 | public static void Main(string[] args) | ||
4578 | { | ||
4579 | using (Stream inStream = new GZipInputStream(File.OpenRead(args[0]))) | ||
4580 | using (FileStream outStream = File.Create(Path.GetFileNameWithoutExtension(args[0]))) { | ||
4581 | byte[] buffer = new byte[4096]; | ||
4582 | StreamUtils.Copy(inStream, outStream, buffer); | ||
4583 | } | ||
4584 | } | ||
4585 | } | ||
4586 | </code> | ||
4587 | </example> | ||
4588 | </member> | ||
4589 | <member name="F:ICSharpCode.SharpZipLib.GZip.GZipInputStream.crc"> | ||
4590 | <summary> | ||
4591 | CRC-32 value for uncompressed data | ||
4592 | </summary> | ||
4593 | </member> | ||
4594 | <member name="F:ICSharpCode.SharpZipLib.GZip.GZipInputStream.eos"> | ||
4595 | <summary> | ||
4596 | Indicates end of stream | ||
4597 | </summary> | ||
4598 | </member> | ||
4599 | <member name="M:ICSharpCode.SharpZipLib.GZip.GZipInputStream.#ctor(System.IO.Stream)"> | ||
4600 | <summary> | ||
4601 | Creates a GZipInputStream with the default buffer size | ||
4602 | </summary> | ||
4603 | <param name="baseInputStream"> | ||
4604 | The stream to read compressed data from (baseInputStream GZIP format) | ||
4605 | </param> | ||
4606 | </member> | ||
4607 | <member name="M:ICSharpCode.SharpZipLib.GZip.GZipInputStream.#ctor(System.IO.Stream,System.Int32)"> | ||
4608 | <summary> | ||
4609 | Creates a GZIPInputStream with the specified buffer size | ||
4610 | </summary> | ||
4611 | <param name="baseInputStream"> | ||
4612 | The stream to read compressed data from (baseInputStream GZIP format) | ||
4613 | </param> | ||
4614 | <param name="size"> | ||
4615 | Size of the buffer to use | ||
4616 | </param> | ||
4617 | </member> | ||
4618 | <member name="M:ICSharpCode.SharpZipLib.GZip.GZipInputStream.Read(System.Byte[],System.Int32,System.Int32)"> | ||
4619 | <summary> | ||
4620 | Reads uncompressed data into an array of bytes | ||
4621 | </summary> | ||
4622 | <param name="buffer"> | ||
4623 | The buffer to read uncompressed data into | ||
4624 | </param> | ||
4625 | <param name="offset"> | ||
4626 | The offset indicating where the data should be placed | ||
4627 | </param> | ||
4628 | <param name="count"> | ||
4629 | The number of uncompressed bytes to be read | ||
4630 | </param> | ||
4631 | <returns>Returns the number of bytes actually read.</returns> | ||
4632 | </member> | ||
4633 | <member name="T:ICSharpCode.SharpZipLib.Core.StreamUtils"> | ||
4634 | <summary> | ||
4635 | Provides simple <see cref="T:System.IO.Stream"/>" utilities. | ||
4636 | </summary> | ||
4637 | </member> | ||
4638 | <member name="M:ICSharpCode.SharpZipLib.Core.StreamUtils.ReadFully(System.IO.Stream,System.Byte[])"> | ||
4639 | <summary> | ||
4640 | Read from a <see cref="T:System.IO.Stream"/> ensuring all the required data is read. | ||
4641 | </summary> | ||
4642 | <param name="stream">The stream to read.</param> | ||
4643 | <param name="buffer">The buffer to fill.</param> | ||
4644 | </member> | ||
4645 | <member name="M:ICSharpCode.SharpZipLib.Core.StreamUtils.ReadFully(System.IO.Stream,System.Byte[],System.Int32,System.Int32)"> | ||
4646 | <summary> | ||
4647 | Read from a <see cref="T:System.IO.Stream"/>" ensuring all the required data is read. | ||
4648 | </summary> | ||
4649 | <param name="stream">The stream to read data from.</param> | ||
4650 | <param name="buffer">The buffer to store data in.</param> | ||
4651 | <param name="offset">The offset at which to begin storing data.</param> | ||
4652 | <param name="count">The number of bytes of data to store.</param> | ||
4653 | </member> | ||
4654 | <member name="M:ICSharpCode.SharpZipLib.Core.StreamUtils.Copy(System.IO.Stream,System.IO.Stream,System.Byte[],ICSharpCode.SharpZipLib.Core.ProgressHandler,System.TimeSpan,System.Object,System.String)"> | ||
4655 | <summary> | ||
4656 | Copy the contents of one <see cref="T:System.IO.Stream"/> to another. | ||
4657 | </summary> | ||
4658 | <param name="source">The stream to source data from.</param> | ||
4659 | <param name="destination">The stream to write data to.</param> | ||
4660 | <param name="buffer">The buffer to use during copying.</param> | ||
4661 | <param name="progressHandler">The <see cref="T:ICSharpCode.SharpZipLib.Core.ProgressHandler">progress handler delegate</see> to use.</param> | ||
4662 | <param name="updateInterval">The minimum <see cref="T:System.TimeSpan"/> between progress updates.</param> | ||
4663 | <param name="sender">The source for this event.</param> | ||
4664 | <param name="name">The name to use with the event.</param> | ||
4665 | </member> | ||
4666 | <member name="M:ICSharpCode.SharpZipLib.Core.StreamUtils.Copy(System.IO.Stream,System.IO.Stream,System.Byte[])"> | ||
4667 | <summary> | ||
4668 | Copy the contents of one <see cref="T:System.IO.Stream"/> to another. | ||
4669 | </summary> | ||
4670 | <param name="source">The stream to source data from.</param> | ||
4671 | <param name="destination">The stream to write data to.</param> | ||
4672 | <param name="buffer">The buffer to use during copying.</param> | ||
4673 | </member> | ||
4674 | <member name="M:ICSharpCode.SharpZipLib.Core.StreamUtils.#ctor"> | ||
4675 | <summary> | ||
4676 | Initialise an instance of <see cref="T:ICSharpCode.SharpZipLib.Core.StreamUtils"></see> | ||
4677 | </summary> | ||
4678 | </member> | ||
4679 | <member name="T:ICSharpCode.SharpZipLib.Zip.Compression.DeflaterHuffman"> | ||
4680 | <summary> | ||
4681 | This is the DeflaterHuffman class. | ||
4682 | |||
4683 | This class is <i>not</i> thread safe. This is inherent in the API, due | ||
4684 | to the split of Deflate and SetInput. | ||
4685 | |||
4686 | author of the original java version : Jochen Hoenicke | ||
4687 | </summary> | ||
4688 | </member> | ||
4689 | <member name="F:ICSharpCode.SharpZipLib.Zip.Compression.DeflaterHuffman.pending"> | ||
4690 | <summary> | ||
4691 | Pending buffer to use | ||
4692 | </summary> | ||
4693 | </member> | ||
4694 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.DeflaterHuffman.#ctor(ICSharpCode.SharpZipLib.Zip.Compression.DeflaterPending)"> | ||
4695 | <summary> | ||
4696 | Construct instance with pending buffer | ||
4697 | </summary> | ||
4698 | <param name="pending">Pending buffer to use</param> | ||
4699 | </member> | ||
4700 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.DeflaterHuffman.Reset"> | ||
4701 | <summary> | ||
4702 | Reset internal state | ||
4703 | </summary> | ||
4704 | </member> | ||
4705 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.DeflaterHuffman.SendAllTrees(System.Int32)"> | ||
4706 | <summary> | ||
4707 | Write all trees to pending buffer | ||
4708 | </summary> | ||
4709 | <param name="blTreeCodes">The number/rank of treecodes to send.</param> | ||
4710 | </member> | ||
4711 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.DeflaterHuffman.CompressBlock"> | ||
4712 | <summary> | ||
4713 | Compress current buffer writing data to pending buffer | ||
4714 | </summary> | ||
4715 | </member> | ||
4716 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.DeflaterHuffman.FlushStoredBlock(System.Byte[],System.Int32,System.Int32,System.Boolean)"> | ||
4717 | <summary> | ||
4718 | Flush block to output with no compression | ||
4719 | </summary> | ||
4720 | <param name="stored">Data to write</param> | ||
4721 | <param name="storedOffset">Index of first byte to write</param> | ||
4722 | <param name="storedLength">Count of bytes to write</param> | ||
4723 | <param name="lastBlock">True if this is the last block</param> | ||
4724 | </member> | ||
4725 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.DeflaterHuffman.FlushBlock(System.Byte[],System.Int32,System.Int32,System.Boolean)"> | ||
4726 | <summary> | ||
4727 | Flush block to output with compression | ||
4728 | </summary> | ||
4729 | <param name="stored">Data to flush</param> | ||
4730 | <param name="storedOffset">Index of first byte to flush</param> | ||
4731 | <param name="storedLength">Count of bytes to flush</param> | ||
4732 | <param name="lastBlock">True if this is the last block</param> | ||
4733 | </member> | ||
4734 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.DeflaterHuffman.IsFull"> | ||
4735 | <summary> | ||
4736 | Get value indicating if internal buffer is full | ||
4737 | </summary> | ||
4738 | <returns>true if buffer is full</returns> | ||
4739 | </member> | ||
4740 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.DeflaterHuffman.TallyLit(System.Int32)"> | ||
4741 | <summary> | ||
4742 | Add literal to buffer | ||
4743 | </summary> | ||
4744 | <param name="literal">Literal value to add to buffer.</param> | ||
4745 | <returns>Value indicating internal buffer is full</returns> | ||
4746 | </member> | ||
4747 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.DeflaterHuffman.TallyDist(System.Int32,System.Int32)"> | ||
4748 | <summary> | ||
4749 | Add distance code and length to literal and distance trees | ||
4750 | </summary> | ||
4751 | <param name="distance">Distance code</param> | ||
4752 | <param name="length">Length</param> | ||
4753 | <returns>Value indicating if internal buffer is full</returns> | ||
4754 | </member> | ||
4755 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.DeflaterHuffman.BitReverse(System.Int32)"> | ||
4756 | <summary> | ||
4757 | Reverse the bits of a 16 bit value. | ||
4758 | </summary> | ||
4759 | <param name="toReverse">Value to reverse bits</param> | ||
4760 | <returns>Value with bits reversed</returns> | ||
4761 | </member> | ||
4762 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.DeflaterHuffman.Tree.Reset"> | ||
4763 | <summary> | ||
4764 | Resets the internal state of the tree | ||
4765 | </summary> | ||
4766 | </member> | ||
4767 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.DeflaterHuffman.Tree.CheckEmpty"> | ||
4768 | <summary> | ||
4769 | Check that all frequencies are zero | ||
4770 | </summary> | ||
4771 | <exception cref="T:ICSharpCode.SharpZipLib.SharpZipBaseException"> | ||
4772 | At least one frequency is non-zero | ||
4773 | </exception> | ||
4774 | </member> | ||
4775 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.DeflaterHuffman.Tree.SetStaticCodes(System.Int16[],System.Byte[])"> | ||
4776 | <summary> | ||
4777 | Set static codes and length | ||
4778 | </summary> | ||
4779 | <param name="staticCodes">new codes</param> | ||
4780 | <param name="staticLengths">length for new codes</param> | ||
4781 | </member> | ||
4782 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.DeflaterHuffman.Tree.BuildCodes"> | ||
4783 | <summary> | ||
4784 | Build dynamic codes and lengths | ||
4785 | </summary> | ||
4786 | </member> | ||
4787 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.DeflaterHuffman.Tree.GetEncodedLength"> | ||
4788 | <summary> | ||
4789 | Get encoded length | ||
4790 | </summary> | ||
4791 | <returns>Encoded length, the sum of frequencies * lengths</returns> | ||
4792 | </member> | ||
4793 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.DeflaterHuffman.Tree.CalcBLFreq(ICSharpCode.SharpZipLib.Zip.Compression.DeflaterHuffman.Tree)"> | ||
4794 | <summary> | ||
4795 | Scan a literal or distance tree to determine the frequencies of the codes | ||
4796 | in the bit length tree. | ||
4797 | </summary> | ||
4798 | </member> | ||
4799 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.DeflaterHuffman.Tree.WriteTree(ICSharpCode.SharpZipLib.Zip.Compression.DeflaterHuffman.Tree)"> | ||
4800 | <summary> | ||
4801 | Write tree values | ||
4802 | </summary> | ||
4803 | <param name="blTree">Tree to write</param> | ||
4804 | </member> | ||
4805 | <member name="T:ICSharpCode.SharpZipLib.GZip.GZipConstants"> | ||
4806 | <summary> | ||
4807 | This class contains constants used for gzip. | ||
4808 | </summary> | ||
4809 | </member> | ||
4810 | <member name="F:ICSharpCode.SharpZipLib.GZip.GZipConstants.GZIP_MAGIC"> | ||
4811 | <summary> | ||
4812 | Magic number found at start of GZIP header | ||
4813 | </summary> | ||
4814 | </member> | ||
4815 | <member name="F:ICSharpCode.SharpZipLib.GZip.GZipConstants.FTEXT"> | ||
4816 | <summary> | ||
4817 | Flag bit mask for text | ||
4818 | </summary> | ||
4819 | </member> | ||
4820 | <member name="F:ICSharpCode.SharpZipLib.GZip.GZipConstants.FHCRC"> | ||
4821 | <summary> | ||
4822 | Flag bitmask for Crc | ||
4823 | </summary> | ||
4824 | </member> | ||
4825 | <member name="F:ICSharpCode.SharpZipLib.GZip.GZipConstants.FEXTRA"> | ||
4826 | <summary> | ||
4827 | Flag bit mask for extra | ||
4828 | </summary> | ||
4829 | </member> | ||
4830 | <member name="F:ICSharpCode.SharpZipLib.GZip.GZipConstants.FNAME"> | ||
4831 | <summary> | ||
4832 | flag bitmask for name | ||
4833 | </summary> | ||
4834 | </member> | ||
4835 | <member name="F:ICSharpCode.SharpZipLib.GZip.GZipConstants.FCOMMENT"> | ||
4836 | <summary> | ||
4837 | flag bit mask indicating comment is present | ||
4838 | </summary> | ||
4839 | </member> | ||
4840 | <member name="M:ICSharpCode.SharpZipLib.GZip.GZipConstants.#ctor"> | ||
4841 | <summary> | ||
4842 | Initialise default instance. | ||
4843 | </summary> | ||
4844 | <remarks>Constructor is private to prevent instances being created.</remarks> | ||
4845 | </member> | ||
4846 | <member name="T:ICSharpCode.SharpZipLib.Tar.TarException"> | ||
4847 | <summary> | ||
4848 | TarExceptions are used for exceptions specific to tar classes and code. | ||
4849 | </summary> | ||
4850 | </member> | ||
4851 | <member name="M:ICSharpCode.SharpZipLib.Tar.TarException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)"> | ||
4852 | <summary> | ||
4853 | Deserialization constructor | ||
4854 | </summary> | ||
4855 | <param name="info"><see cref="T:System.Runtime.Serialization.SerializationInfo"/> for this constructor</param> | ||
4856 | <param name="context"><see cref="T:System.Runtime.Serialization.StreamingContext"/> for this constructor</param> | ||
4857 | </member> | ||
4858 | <member name="M:ICSharpCode.SharpZipLib.Tar.TarException.#ctor"> | ||
4859 | <summary> | ||
4860 | Initialises a new instance of the TarException class. | ||
4861 | </summary> | ||
4862 | </member> | ||
4863 | <member name="M:ICSharpCode.SharpZipLib.Tar.TarException.#ctor(System.String)"> | ||
4864 | <summary> | ||
4865 | Initialises a new instance of the TarException class with a specified message. | ||
4866 | </summary> | ||
4867 | <param name="message">The message that describes the error.</param> | ||
4868 | </member> | ||
4869 | <member name="M:ICSharpCode.SharpZipLib.Tar.TarException.#ctor(System.String,System.Exception)"> | ||
4870 | <summary> | ||
4871 | |||
4872 | </summary> | ||
4873 | <param name="message">A message describing the error.</param> | ||
4874 | <param name="exception">The exception that is the cause of the current exception.</param> | ||
4875 | </member> | ||
4876 | <member name="T:ICSharpCode.SharpZipLib.Checksums.StrangeCRC"> | ||
4877 | <summary> | ||
4878 | Bzip2 checksum algorithm | ||
4879 | </summary> | ||
4880 | </member> | ||
4881 | <member name="M:ICSharpCode.SharpZipLib.Checksums.StrangeCRC.#ctor"> | ||
4882 | <summary> | ||
4883 | Initialise a default instance of <see cref="T:ICSharpCode.SharpZipLib.Checksums.StrangeCRC"></see> | ||
4884 | </summary> | ||
4885 | </member> | ||
4886 | <member name="M:ICSharpCode.SharpZipLib.Checksums.StrangeCRC.Reset"> | ||
4887 | <summary> | ||
4888 | Reset the state of Crc. | ||
4889 | </summary> | ||
4890 | </member> | ||
4891 | <member name="M:ICSharpCode.SharpZipLib.Checksums.StrangeCRC.Update(System.Int32)"> | ||
4892 | <summary> | ||
4893 | Update the Crc value. | ||
4894 | </summary> | ||
4895 | <param name="value">data update is based on</param> | ||
4896 | </member> | ||
4897 | <member name="M:ICSharpCode.SharpZipLib.Checksums.StrangeCRC.Update(System.Byte[])"> | ||
4898 | <summary> | ||
4899 | Update Crc based on a block of data | ||
4900 | </summary> | ||
4901 | <param name="buffer">The buffer containing data to update the crc with.</param> | ||
4902 | </member> | ||
4903 | <member name="M:ICSharpCode.SharpZipLib.Checksums.StrangeCRC.Update(System.Byte[],System.Int32,System.Int32)"> | ||
4904 | <summary> | ||
4905 | Update Crc based on a portion of a block of data | ||
4906 | </summary> | ||
4907 | <param name="buffer">block of data</param> | ||
4908 | <param name="offset">index of first byte to use</param> | ||
4909 | <param name="count">number of bytes to use</param> | ||
4910 | </member> | ||
4911 | <member name="P:ICSharpCode.SharpZipLib.Checksums.StrangeCRC.Value"> | ||
4912 | <summary> | ||
4913 | Get the current Crc value. | ||
4914 | </summary> | ||
4915 | </member> | ||
4916 | <member name="T:ICSharpCode.SharpZipLib.Zip.ZipInputStream"> | ||
4917 | <summary> | ||
4918 | This is an InflaterInputStream that reads the files baseInputStream an zip archive | ||
4919 | one after another. It has a special method to get the zip entry of | ||
4920 | the next file. The zip entry contains information about the file name | ||
4921 | size, compressed size, Crc, etc. | ||
4922 | It includes support for Stored and Deflated entries. | ||
4923 | <br/> | ||
4924 | <br/>Author of the original java version : Jochen Hoenicke | ||
4925 | </summary> | ||
4926 | |||
4927 | <example> This sample shows how to read a zip file | ||
4928 | <code lang="C#"> | ||
4929 | using System; | ||
4930 | using System.Text; | ||
4931 | using System.IO; | ||
4932 | |||
4933 | using ICSharpCode.SharpZipLib.Zip; | ||
4934 | |||
4935 | class MainClass | ||
4936 | { | ||
4937 | public static void Main(string[] args) | ||
4938 | { | ||
4939 | using ( ZipInputStream s = new ZipInputStream(File.OpenRead(args[0]))) { | ||
4940 | |||
4941 | ZipEntry theEntry; | ||
4942 | while ((theEntry = s.GetNextEntry()) != null) { | ||
4943 | int size = 2048; | ||
4944 | byte[] data = new byte[2048]; | ||
4945 | |||
4946 | Console.Write("Show contents (y/n) ?"); | ||
4947 | if (Console.ReadLine() == "y") { | ||
4948 | while (true) { | ||
4949 | size = s.Read(data, 0, data.Length); | ||
4950 | if (size > 0) { | ||
4951 | Console.Write(new ASCIIEncoding().GetString(data, 0, size)); | ||
4952 | } else { | ||
4953 | break; | ||
4954 | } | ||
4955 | } | ||
4956 | } | ||
4957 | } | ||
4958 | } | ||
4959 | } | ||
4960 | } | ||
4961 | </code> | ||
4962 | </example> | ||
4963 | </member> | ||
4964 | <member name="F:ICSharpCode.SharpZipLib.Zip.ZipInputStream.internalReader"> | ||
4965 | <summary> | ||
4966 | The current reader this instance. | ||
4967 | </summary> | ||
4968 | </member> | ||
4969 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipInputStream.#ctor(System.IO.Stream)"> | ||
4970 | <summary> | ||
4971 | Creates a new Zip input stream, for reading a zip archive. | ||
4972 | </summary> | ||
4973 | <param name="baseInputStream">The underlying <see cref="T:System.IO.Stream"/> providing data.</param> | ||
4974 | </member> | ||
4975 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipInputStream.GetNextEntry"> | ||
4976 | <summary> | ||
4977 | Advances to the next entry in the archive | ||
4978 | </summary> | ||
4979 | <returns> | ||
4980 | The next <see cref="T:ICSharpCode.SharpZipLib.Zip.ZipEntry">entry</see> in the archive or null if there are no more entries. | ||
4981 | </returns> | ||
4982 | <remarks> | ||
4983 | If the previous entry is still open <see cref="M:ICSharpCode.SharpZipLib.Zip.ZipInputStream.CloseEntry">CloseEntry</see> is called. | ||
4984 | </remarks> | ||
4985 | <exception cref="T:System.InvalidOperationException"> | ||
4986 | Input stream is closed | ||
4987 | </exception> | ||
4988 | <exception cref="T:ICSharpCode.SharpZipLib.Zip.ZipException"> | ||
4989 | Password is not set, password is invalid, compression method is invalid, | ||
4990 | version required to extract is not supported | ||
4991 | </exception> | ||
4992 | </member> | ||
4993 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipInputStream.ReadDataDescriptor"> | ||
4994 | <summary> | ||
4995 | Read data descriptor at the end of compressed data. | ||
4996 | </summary> | ||
4997 | </member> | ||
4998 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipInputStream.CompleteCloseEntry(System.Boolean)"> | ||
4999 | <summary> | ||
5000 | Complete cleanup as the final part of closing. | ||
5001 | </summary> | ||
5002 | <param name="testCrc">True if the crc value should be tested</param> | ||
5003 | </member> | ||
5004 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipInputStream.CloseEntry"> | ||
5005 | <summary> | ||
5006 | Closes the current zip entry and moves to the next one. | ||
5007 | </summary> | ||
5008 | <exception cref="T:System.InvalidOperationException"> | ||
5009 | The stream is closed | ||
5010 | </exception> | ||
5011 | <exception cref="T:ICSharpCode.SharpZipLib.Zip.ZipException"> | ||
5012 | The Zip stream ends early | ||
5013 | </exception> | ||
5014 | </member> | ||
5015 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipInputStream.ReadByte"> | ||
5016 | <summary> | ||
5017 | Reads a byte from the current zip entry. | ||
5018 | </summary> | ||
5019 | <returns> | ||
5020 | The byte or -1 if end of stream is reached. | ||
5021 | </returns> | ||
5022 | </member> | ||
5023 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipInputStream.ReadingNotAvailable(System.Byte[],System.Int32,System.Int32)"> | ||
5024 | <summary> | ||
5025 | Handle attempts to read by throwing an <see cref="T:System.InvalidOperationException"/>. | ||
5026 | </summary> | ||
5027 | <param name="destination">The destination array to store data in.</param> | ||
5028 | <param name="offset">The offset at which data read should be stored.</param> | ||
5029 | <param name="count">The maximum number of bytes to read.</param> | ||
5030 | <returns>Returns the number of bytes actually read.</returns> | ||
5031 | </member> | ||
5032 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipInputStream.ReadingNotSupported(System.Byte[],System.Int32,System.Int32)"> | ||
5033 | <summary> | ||
5034 | Handle attempts to read from this entry by throwing an exception | ||
5035 | </summary> | ||
5036 | </member> | ||
5037 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipInputStream.InitialRead(System.Byte[],System.Int32,System.Int32)"> | ||
5038 | <summary> | ||
5039 | Perform the initial read on an entry which may include | ||
5040 | reading encryption headers and setting up inflation. | ||
5041 | </summary> | ||
5042 | <param name="destination">The destination to fill with data read.</param> | ||
5043 | <param name="offset">The offset to start reading at.</param> | ||
5044 | <param name="count">The maximum number of bytes to read.</param> | ||
5045 | <returns>The actual number of bytes read.</returns> | ||
5046 | </member> | ||
5047 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipInputStream.Read(System.Byte[],System.Int32,System.Int32)"> | ||
5048 | <summary> | ||
5049 | Read a block of bytes from the stream. | ||
5050 | </summary> | ||
5051 | <param name="buffer">The destination for the bytes.</param> | ||
5052 | <param name="offset">The index to start storing data.</param> | ||
5053 | <param name="count">The number of bytes to attempt to read.</param> | ||
5054 | <returns>Returns the number of bytes read.</returns> | ||
5055 | <remarks>Zero bytes read means end of stream.</remarks> | ||
5056 | </member> | ||
5057 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipInputStream.BodyRead(System.Byte[],System.Int32,System.Int32)"> | ||
5058 | <summary> | ||
5059 | Reads a block of bytes from the current zip entry. | ||
5060 | </summary> | ||
5061 | <returns> | ||
5062 | The number of bytes read (this may be less than the length requested, even before the end of stream), or 0 on end of stream. | ||
5063 | </returns> | ||
5064 | <exception name="IOException"> | ||
5065 | An i/o error occured. | ||
5066 | </exception> | ||
5067 | <exception cref="T:ICSharpCode.SharpZipLib.Zip.ZipException"> | ||
5068 | The deflated stream is corrupted. | ||
5069 | </exception> | ||
5070 | <exception cref="T:System.InvalidOperationException"> | ||
5071 | The stream is not open. | ||
5072 | </exception> | ||
5073 | </member> | ||
5074 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipInputStream.Close"> | ||
5075 | <summary> | ||
5076 | Closes the zip input stream | ||
5077 | </summary> | ||
5078 | </member> | ||
5079 | <member name="P:ICSharpCode.SharpZipLib.Zip.ZipInputStream.Password"> | ||
5080 | <summary> | ||
5081 | Optional password used for encryption when non-null | ||
5082 | </summary> | ||
5083 | <value>A password for all encrypted <see cref="T:ICSharpCode.SharpZipLib.Zip.ZipEntry">entries </see> in this <see cref="T:ICSharpCode.SharpZipLib.Zip.ZipInputStream"/></value> | ||
5084 | </member> | ||
5085 | <member name="P:ICSharpCode.SharpZipLib.Zip.ZipInputStream.CanDecompressEntry"> | ||
5086 | <summary> | ||
5087 | Gets a value indicating if there is a current entry and it can be decompressed | ||
5088 | </summary> | ||
5089 | <remarks> | ||
5090 | The entry can only be decompressed if the library supports the zip features required to extract it. | ||
5091 | See the <see cref="P:ICSharpCode.SharpZipLib.Zip.ZipEntry.Version">ZipEntry Version</see> property for more details. | ||
5092 | </remarks> | ||
5093 | </member> | ||
5094 | <member name="P:ICSharpCode.SharpZipLib.Zip.ZipInputStream.Available"> | ||
5095 | <summary> | ||
5096 | Returns 1 if there is an entry available | ||
5097 | Otherwise returns 0. | ||
5098 | </summary> | ||
5099 | </member> | ||
5100 | <member name="P:ICSharpCode.SharpZipLib.Zip.ZipInputStream.Length"> | ||
5101 | <summary> | ||
5102 | Returns the current size that can be read from the current entry if available | ||
5103 | </summary> | ||
5104 | <exception cref="T:ICSharpCode.SharpZipLib.Zip.ZipException">Thrown if the entry size is not known.</exception> | ||
5105 | <exception cref="T:System.InvalidOperationException">Thrown if no entry is currently available.</exception> | ||
5106 | </member> | ||
5107 | <member name="T:ICSharpCode.SharpZipLib.Zip.ZipNameTransform"> | ||
5108 | <summary> | ||
5109 | ZipNameTransform transforms names as per the Zip file naming convention. | ||
5110 | </summary> | ||
5111 | <remarks>The use of absolute names is supported although its use is not valid | ||
5112 | according to Zip naming conventions, and should not be used if maximum compatability is desired.</remarks> | ||
5113 | </member> | ||
5114 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipNameTransform.#ctor"> | ||
5115 | <summary> | ||
5116 | Initialize a new instance of <see cref="T:ICSharpCode.SharpZipLib.Zip.ZipNameTransform"></see> | ||
5117 | </summary> | ||
5118 | </member> | ||
5119 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipNameTransform.#ctor(System.String)"> | ||
5120 | <summary> | ||
5121 | Initialize a new instance of <see cref="T:ICSharpCode.SharpZipLib.Zip.ZipNameTransform"></see> | ||
5122 | </summary> | ||
5123 | <param name="trimPrefix">The string to trim from front of paths if found.</param> | ||
5124 | </member> | ||
5125 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipNameTransform.#cctor"> | ||
5126 | <summary> | ||
5127 | Static constructor. | ||
5128 | </summary> | ||
5129 | </member> | ||
5130 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipNameTransform.TransformDirectory(System.String)"> | ||
5131 | <summary> | ||
5132 | Transform a directory name according to the Zip file naming conventions. | ||
5133 | </summary> | ||
5134 | <param name="name">The directory name to transform.</param> | ||
5135 | <returns>The transformed name.</returns> | ||
5136 | </member> | ||
5137 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipNameTransform.TransformFile(System.String)"> | ||
5138 | <summary> | ||
5139 | Transform a windows file name according to the Zip file naming conventions. | ||
5140 | </summary> | ||
5141 | <param name="name">The file name to transform.</param> | ||
5142 | <returns>The transformed name.</returns> | ||
5143 | </member> | ||
5144 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipNameTransform.MakeValidName(System.String,System.Char)"> | ||
5145 | <summary> | ||
5146 | Force a name to be valid by replacing invalid characters with a fixed value | ||
5147 | </summary> | ||
5148 | <param name="name">The name to force valid</param> | ||
5149 | <param name="replacement">The replacement character to use.</param> | ||
5150 | <returns>Returns a valid name</returns> | ||
5151 | </member> | ||
5152 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipNameTransform.IsValidName(System.String,System.Boolean)"> | ||
5153 | <summary> | ||
5154 | Test a name to see if it is a valid name for a zip entry. | ||
5155 | </summary> | ||
5156 | <param name="name">The name to test.</param> | ||
5157 | <param name="relaxed">If true checking is relaxed about windows file names and absolute paths.</param> | ||
5158 | <returns>Returns true if the name is a valid zip name; false otherwise.</returns> | ||
5159 | <remarks>Zip path names are actually in Unix format, and should only contain relative paths. | ||
5160 | This means that any path stored should not contain a drive or | ||
5161 | device letter, or a leading slash. All slashes should forward slashes '/'. | ||
5162 | An empty name is valid for a file where the input comes from standard input. | ||
5163 | A null name is not considered valid. | ||
5164 | </remarks> | ||
5165 | </member> | ||
5166 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipNameTransform.IsValidName(System.String)"> | ||
5167 | <summary> | ||
5168 | Test a name to see if it is a valid name for a zip entry. | ||
5169 | </summary> | ||
5170 | <param name="name">The name to test.</param> | ||
5171 | <returns>Returns true if the name is a valid zip name; false otherwise.</returns> | ||
5172 | <remarks>Zip path names are actually in unix format, | ||
5173 | and should only contain relative paths if a path is present. | ||
5174 | This means that the path stored should not contain a drive or | ||
5175 | device letter, or a leading slash. All slashes should forward slashes '/'. | ||
5176 | An empty name is valid where the input comes from standard input. | ||
5177 | A null name is not considered valid. | ||
5178 | </remarks> | ||
5179 | </member> | ||
5180 | <member name="P:ICSharpCode.SharpZipLib.Zip.ZipNameTransform.TrimPrefix"> | ||
5181 | <summary> | ||
5182 | Get/set the path prefix to be trimmed from paths if present. | ||
5183 | </summary> | ||
5184 | <remarks>The prefix is trimmed before any conversion from | ||
5185 | a windows path is done.</remarks> | ||
5186 | </member> | ||
5187 | <member name="T:ICSharpCode.SharpZipLib.Tar.InvalidHeaderException"> | ||
5188 | <summary> | ||
5189 | This exception is used to indicate that there is a problem | ||
5190 | with a TAR archive header. | ||
5191 | </summary> | ||
5192 | </member> | ||
5193 | <member name="M:ICSharpCode.SharpZipLib.Tar.InvalidHeaderException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)"> | ||
5194 | <summary> | ||
5195 | Deserialization constructor | ||
5196 | </summary> | ||
5197 | <param name="information"><see cref="T:System.Runtime.Serialization.SerializationInfo"/> for this constructor</param> | ||
5198 | <param name="context"><see cref="T:System.Runtime.Serialization.StreamingContext"/> for this constructor</param> | ||
5199 | </member> | ||
5200 | <member name="M:ICSharpCode.SharpZipLib.Tar.InvalidHeaderException.#ctor"> | ||
5201 | <summary> | ||
5202 | Initialise a new instance of the InvalidHeaderException class. | ||
5203 | </summary> | ||
5204 | </member> | ||
5205 | <member name="M:ICSharpCode.SharpZipLib.Tar.InvalidHeaderException.#ctor(System.String)"> | ||
5206 | <summary> | ||
5207 | Initialises a new instance of the InvalidHeaderException class with a specified message. | ||
5208 | </summary> | ||
5209 | <param name="message">Message describing the exception cause.</param> | ||
5210 | </member> | ||
5211 | <member name="M:ICSharpCode.SharpZipLib.Tar.InvalidHeaderException.#ctor(System.String,System.Exception)"> | ||
5212 | <summary> | ||
5213 | Initialise a new instance of InvalidHeaderException | ||
5214 | </summary> | ||
5215 | <param name="message">Message describing the problem.</param> | ||
5216 | <param name="exception">The exception that is the cause of the current exception.</param> | ||
5217 | </member> | ||
5218 | <member name="T:ICSharpCode.SharpZipLib.Zip.Compression.Streams.StreamManipulator"> | ||
5219 | <summary> | ||
5220 | This class allows us to retrieve a specified number of bits from | ||
5221 | the input buffer, as well as copy big byte blocks. | ||
5222 | |||
5223 | It uses an int buffer to store up to 31 bits for direct | ||
5224 | manipulation. This guarantees that we can get at least 16 bits, | ||
5225 | but we only need at most 15, so this is all safe. | ||
5226 | |||
5227 | There are some optimizations in this class, for example, you must | ||
5228 | never peek more than 8 bits more than needed, and you must first | ||
5229 | peek bits before you may drop them. This is not a general purpose | ||
5230 | class but optimized for the behaviour of the Inflater. | ||
5231 | |||
5232 | authors of the original java version : John Leuner, Jochen Hoenicke | ||
5233 | </summary> | ||
5234 | </member> | ||
5235 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.Streams.StreamManipulator.#ctor"> | ||
5236 | <summary> | ||
5237 | Constructs a default StreamManipulator with all buffers empty | ||
5238 | </summary> | ||
5239 | </member> | ||
5240 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.Streams.StreamManipulator.PeekBits(System.Int32)"> | ||
5241 | <summary> | ||
5242 | Get the next sequence of bits but don't increase input pointer. bitCount must be | ||
5243 | less or equal 16 and if this call succeeds, you must drop | ||
5244 | at least n - 8 bits in the next call. | ||
5245 | </summary> | ||
5246 | <param name="bitCount">The number of bits to peek.</param> | ||
5247 | <returns> | ||
5248 | the value of the bits, or -1 if not enough bits available. */ | ||
5249 | </returns> | ||
5250 | </member> | ||
5251 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.Streams.StreamManipulator.DropBits(System.Int32)"> | ||
5252 | <summary> | ||
5253 | Drops the next n bits from the input. You should have called PeekBits | ||
5254 | with a bigger or equal n before, to make sure that enough bits are in | ||
5255 | the bit buffer. | ||
5256 | </summary> | ||
5257 | <param name="bitCount">The number of bits to drop.</param> | ||
5258 | </member> | ||
5259 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.Streams.StreamManipulator.GetBits(System.Int32)"> | ||
5260 | <summary> | ||
5261 | Gets the next n bits and increases input pointer. This is equivalent | ||
5262 | to <see cref="M:ICSharpCode.SharpZipLib.Zip.Compression.Streams.StreamManipulator.PeekBits(System.Int32)"/> followed by <see cref="M:ICSharpCode.SharpZipLib.Zip.Compression.Streams.StreamManipulator.DropBits(System.Int32)"/>, except for correct error handling. | ||
5263 | </summary> | ||
5264 | <param name="bitCount">The number of bits to retrieve.</param> | ||
5265 | <returns> | ||
5266 | the value of the bits, or -1 if not enough bits available. | ||
5267 | </returns> | ||
5268 | </member> | ||
5269 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.Streams.StreamManipulator.SkipToByteBoundary"> | ||
5270 | <summary> | ||
5271 | Skips to the next byte boundary. | ||
5272 | </summary> | ||
5273 | </member> | ||
5274 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.Streams.StreamManipulator.CopyBytes(System.Byte[],System.Int32,System.Int32)"> | ||
5275 | <summary> | ||
5276 | Copies bytes from input buffer to output buffer starting | ||
5277 | at output[offset]. You have to make sure, that the buffer is | ||
5278 | byte aligned. If not enough bytes are available, copies fewer | ||
5279 | bytes. | ||
5280 | </summary> | ||
5281 | <param name="output"> | ||
5282 | The buffer to copy bytes to. | ||
5283 | </param> | ||
5284 | <param name="offset"> | ||
5285 | The offset in the buffer at which copying starts | ||
5286 | </param> | ||
5287 | <param name="length"> | ||
5288 | The length to copy, 0 is allowed. | ||
5289 | </param> | ||
5290 | <returns> | ||
5291 | The number of bytes copied, 0 if no bytes were available. | ||
5292 | </returns> | ||
5293 | <exception cref="T:System.ArgumentOutOfRangeException"> | ||
5294 | Length is less than zero | ||
5295 | </exception> | ||
5296 | <exception cref="T:System.InvalidOperationException"> | ||
5297 | Bit buffer isnt byte aligned | ||
5298 | </exception> | ||
5299 | </member> | ||
5300 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.Streams.StreamManipulator.Reset"> | ||
5301 | <summary> | ||
5302 | Resets state and empties internal buffers | ||
5303 | </summary> | ||
5304 | </member> | ||
5305 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.Streams.StreamManipulator.SetInput(System.Byte[],System.Int32,System.Int32)"> | ||
5306 | <summary> | ||
5307 | Add more input for consumption. | ||
5308 | Only call when IsNeedingInput returns true | ||
5309 | </summary> | ||
5310 | <param name="buffer">data to be input</param> | ||
5311 | <param name="offset">offset of first byte of input</param> | ||
5312 | <param name="count">number of bytes of input to add.</param> | ||
5313 | </member> | ||
5314 | <member name="P:ICSharpCode.SharpZipLib.Zip.Compression.Streams.StreamManipulator.AvailableBits"> | ||
5315 | <summary> | ||
5316 | Gets the number of bits available in the bit buffer. This must be | ||
5317 | only called when a previous PeekBits() returned -1. | ||
5318 | </summary> | ||
5319 | <returns> | ||
5320 | the number of bits available. | ||
5321 | </returns> | ||
5322 | </member> | ||
5323 | <member name="P:ICSharpCode.SharpZipLib.Zip.Compression.Streams.StreamManipulator.AvailableBytes"> | ||
5324 | <summary> | ||
5325 | Gets the number of bytes available. | ||
5326 | </summary> | ||
5327 | <returns> | ||
5328 | The number of bytes available. | ||
5329 | </returns> | ||
5330 | </member> | ||
5331 | <member name="P:ICSharpCode.SharpZipLib.Zip.Compression.Streams.StreamManipulator.IsNeedingInput"> | ||
5332 | <summary> | ||
5333 | Returns true when SetInput can be called | ||
5334 | </summary> | ||
5335 | </member> | ||
5336 | <member name="T:ICSharpCode.SharpZipLib.Zip.Compression.DeflateStrategy"> | ||
5337 | <summary> | ||
5338 | Strategies for deflater | ||
5339 | </summary> | ||
5340 | </member> | ||
5341 | <member name="F:ICSharpCode.SharpZipLib.Zip.Compression.DeflateStrategy.Default"> | ||
5342 | <summary> | ||
5343 | The default strategy | ||
5344 | </summary> | ||
5345 | </member> | ||
5346 | <member name="F:ICSharpCode.SharpZipLib.Zip.Compression.DeflateStrategy.Filtered"> | ||
5347 | <summary> | ||
5348 | This strategy will only allow longer string repetitions. It is | ||
5349 | useful for random data with a small character set. | ||
5350 | </summary> | ||
5351 | </member> | ||
5352 | <member name="F:ICSharpCode.SharpZipLib.Zip.Compression.DeflateStrategy.HuffmanOnly"> | ||
5353 | <summary> | ||
5354 | This strategy will not look for string repetitions at all. It | ||
5355 | only encodes with Huffman trees (which means, that more common | ||
5356 | characters get a smaller encoding. | ||
5357 | </summary> | ||
5358 | </member> | ||
5359 | <member name="T:ICSharpCode.SharpZipLib.Zip.Compression.DeflaterEngine"> | ||
5360 | <summary> | ||
5361 | Low level compression engine for deflate algorithm which uses a 32K sliding window | ||
5362 | with secondary compression from Huffman/Shannon-Fano codes. | ||
5363 | </summary> | ||
5364 | </member> | ||
5365 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.DeflaterEngine.#ctor(ICSharpCode.SharpZipLib.Zip.Compression.DeflaterPending)"> | ||
5366 | <summary> | ||
5367 | Construct instance with pending buffer | ||
5368 | </summary> | ||
5369 | <param name="pending"> | ||
5370 | Pending buffer to use | ||
5371 | </param>> | ||
5372 | </member> | ||
5373 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.DeflaterEngine.Deflate(System.Boolean,System.Boolean)"> | ||
5374 | <summary> | ||
5375 | Deflate drives actual compression of data | ||
5376 | </summary> | ||
5377 | <param name="flush">True to flush input buffers</param> | ||
5378 | <param name="finish">Finish deflation with the current input.</param> | ||
5379 | <returns>Returns true if progress has been made.</returns> | ||
5380 | </member> | ||
5381 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.DeflaterEngine.SetInput(System.Byte[],System.Int32,System.Int32)"> | ||
5382 | <summary> | ||
5383 | Sets input data to be deflated. Should only be called when <code>NeedsInput()</code> | ||
5384 | returns true | ||
5385 | </summary> | ||
5386 | <param name="buffer">The buffer containing input data.</param> | ||
5387 | <param name="offset">The offset of the first byte of data.</param> | ||
5388 | <param name="count">The number of bytes of data to use as input.</param> | ||
5389 | </member> | ||
5390 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.DeflaterEngine.NeedsInput"> | ||
5391 | <summary> | ||
5392 | Determines if more <see cref="M:ICSharpCode.SharpZipLib.Zip.Compression.DeflaterEngine.SetInput(System.Byte[],System.Int32,System.Int32)">input</see> is needed. | ||
5393 | </summary> | ||
5394 | <returns>Return true if input is needed via <see cref="M:ICSharpCode.SharpZipLib.Zip.Compression.DeflaterEngine.SetInput(System.Byte[],System.Int32,System.Int32)">SetInput</see></returns> | ||
5395 | </member> | ||
5396 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.DeflaterEngine.SetDictionary(System.Byte[],System.Int32,System.Int32)"> | ||
5397 | <summary> | ||
5398 | Set compression dictionary | ||
5399 | </summary> | ||
5400 | <param name="buffer">The buffer containing the dictionary data</param> | ||
5401 | <param name="offset">The offset in the buffer for the first byte of data</param> | ||
5402 | <param name="length">The length of the dictionary data.</param> | ||
5403 | </member> | ||
5404 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.DeflaterEngine.Reset"> | ||
5405 | <summary> | ||
5406 | Reset internal state | ||
5407 | </summary> | ||
5408 | </member> | ||
5409 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.DeflaterEngine.ResetAdler"> | ||
5410 | <summary> | ||
5411 | Reset Adler checksum | ||
5412 | </summary> | ||
5413 | </member> | ||
5414 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.DeflaterEngine.SetLevel(System.Int32)"> | ||
5415 | <summary> | ||
5416 | Set the deflate level (0-9) | ||
5417 | </summary> | ||
5418 | <param name="level">The value to set the level to.</param> | ||
5419 | </member> | ||
5420 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.DeflaterEngine.FillWindow"> | ||
5421 | <summary> | ||
5422 | Fill the window | ||
5423 | </summary> | ||
5424 | </member> | ||
5425 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.DeflaterEngine.InsertString"> | ||
5426 | <summary> | ||
5427 | Inserts the current string in the head hash and returns the previous | ||
5428 | value for this hash. | ||
5429 | </summary> | ||
5430 | <returns>The previous hash value</returns> | ||
5431 | </member> | ||
5432 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.DeflaterEngine.FindLongestMatch(System.Int32)"> | ||
5433 | <summary> | ||
5434 | Find the best (longest) string in the window matching the | ||
5435 | string starting at strstart. | ||
5436 | |||
5437 | Preconditions: | ||
5438 | <code> | ||
5439 | strstart + MAX_MATCH <= window.length.</code> | ||
5440 | </summary> | ||
5441 | <param name="curMatch"></param> | ||
5442 | <returns>True if a match greater than the minimum length is found</returns> | ||
5443 | </member> | ||
5444 | <member name="F:ICSharpCode.SharpZipLib.Zip.Compression.DeflaterEngine.head"> | ||
5445 | <summary> | ||
5446 | Hashtable, hashing three characters to an index for window, so | ||
5447 | that window[index]..window[index+2] have this hash code. | ||
5448 | Note that the array should really be unsigned short, so you need | ||
5449 | to and the values with 0xffff. | ||
5450 | </summary> | ||
5451 | </member> | ||
5452 | <member name="F:ICSharpCode.SharpZipLib.Zip.Compression.DeflaterEngine.prev"> | ||
5453 | <summary> | ||
5454 | <code>prev[index & WMASK]</code> points to the previous index that has the | ||
5455 | same hash code as the string starting at index. This way | ||
5456 | entries with the same hash code are in a linked list. | ||
5457 | Note that the array should really be unsigned short, so you need | ||
5458 | to and the values with 0xffff. | ||
5459 | </summary> | ||
5460 | </member> | ||
5461 | <member name="F:ICSharpCode.SharpZipLib.Zip.Compression.DeflaterEngine.strstart"> | ||
5462 | <summary> | ||
5463 | Points to the current character in the window. | ||
5464 | </summary> | ||
5465 | </member> | ||
5466 | <member name="F:ICSharpCode.SharpZipLib.Zip.Compression.DeflaterEngine.lookahead"> | ||
5467 | <summary> | ||
5468 | lookahead is the number of characters starting at strstart in | ||
5469 | window that are valid. | ||
5470 | So window[strstart] until window[strstart+lookahead-1] are valid | ||
5471 | characters. | ||
5472 | </summary> | ||
5473 | </member> | ||
5474 | <member name="F:ICSharpCode.SharpZipLib.Zip.Compression.DeflaterEngine.window"> | ||
5475 | <summary> | ||
5476 | This array contains the part of the uncompressed stream that | ||
5477 | is of relevance. The current character is indexed by strstart. | ||
5478 | </summary> | ||
5479 | </member> | ||
5480 | <member name="F:ICSharpCode.SharpZipLib.Zip.Compression.DeflaterEngine.compressionFunction"> | ||
5481 | <summary> | ||
5482 | The current compression function. | ||
5483 | </summary> | ||
5484 | </member> | ||
5485 | <member name="F:ICSharpCode.SharpZipLib.Zip.Compression.DeflaterEngine.inputBuf"> | ||
5486 | <summary> | ||
5487 | The input data for compression. | ||
5488 | </summary> | ||
5489 | </member> | ||
5490 | <member name="F:ICSharpCode.SharpZipLib.Zip.Compression.DeflaterEngine.totalIn"> | ||
5491 | <summary> | ||
5492 | The total bytes of input read. | ||
5493 | </summary> | ||
5494 | </member> | ||
5495 | <member name="F:ICSharpCode.SharpZipLib.Zip.Compression.DeflaterEngine.inputOff"> | ||
5496 | <summary> | ||
5497 | The offset into inputBuf, where input data starts. | ||
5498 | </summary> | ||
5499 | </member> | ||
5500 | <member name="F:ICSharpCode.SharpZipLib.Zip.Compression.DeflaterEngine.inputEnd"> | ||
5501 | <summary> | ||
5502 | The end offset of the input data. | ||
5503 | </summary> | ||
5504 | </member> | ||
5505 | <member name="F:ICSharpCode.SharpZipLib.Zip.Compression.DeflaterEngine.adler"> | ||
5506 | <summary> | ||
5507 | The adler checksum | ||
5508 | </summary> | ||
5509 | </member> | ||
5510 | <member name="P:ICSharpCode.SharpZipLib.Zip.Compression.DeflaterEngine.Adler"> | ||
5511 | <summary> | ||
5512 | Get current value of Adler checksum | ||
5513 | </summary> | ||
5514 | </member> | ||
5515 | <member name="P:ICSharpCode.SharpZipLib.Zip.Compression.DeflaterEngine.TotalIn"> | ||
5516 | <summary> | ||
5517 | Total data processed | ||
5518 | </summary> | ||
5519 | </member> | ||
5520 | <member name="P:ICSharpCode.SharpZipLib.Zip.Compression.DeflaterEngine.Strategy"> | ||
5521 | <summary> | ||
5522 | Get/set the <see cref="T:ICSharpCode.SharpZipLib.Zip.Compression.DeflateStrategy">deflate strategy</see> | ||
5523 | </summary> | ||
5524 | </member> | ||
5525 | <member name="T:ICSharpCode.SharpZipLib.Tar.TarBuffer"> | ||
5526 | <summary> | ||
5527 | The TarBuffer class implements the tar archive concept | ||
5528 | of a buffered input stream. This concept goes back to the | ||
5529 | days of blocked tape drives and special io devices. In the | ||
5530 | C# universe, the only real function that this class | ||
5531 | performs is to ensure that files have the correct "record" | ||
5532 | size, or other tars will complain. | ||
5533 | <p> | ||
5534 | You should never have a need to access this class directly. | ||
5535 | TarBuffers are created by Tar IO Streams. | ||
5536 | </p> | ||
5537 | </summary> | ||
5538 | </member> | ||
5539 | <member name="F:ICSharpCode.SharpZipLib.Tar.TarBuffer.BlockSize"> | ||
5540 | <summary> | ||
5541 | The size of a block in a tar archive in bytes. | ||
5542 | </summary> | ||
5543 | <remarks>This is 512 bytes.</remarks> | ||
5544 | </member> | ||
5545 | <member name="F:ICSharpCode.SharpZipLib.Tar.TarBuffer.DefaultBlockFactor"> | ||
5546 | <summary> | ||
5547 | The number of blocks in a default record. | ||
5548 | </summary> | ||
5549 | <remarks> | ||
5550 | The default value is 20 blocks per record. | ||
5551 | </remarks> | ||
5552 | </member> | ||
5553 | <member name="F:ICSharpCode.SharpZipLib.Tar.TarBuffer.DefaultRecordSize"> | ||
5554 | <summary> | ||
5555 | The size in bytes of a default record. | ||
5556 | </summary> | ||
5557 | <remarks> | ||
5558 | The default size is 10KB. | ||
5559 | </remarks> | ||
5560 | </member> | ||
5561 | <member name="M:ICSharpCode.SharpZipLib.Tar.TarBuffer.GetRecordSize"> | ||
5562 | <summary> | ||
5563 | Get the TAR Buffer's record size. | ||
5564 | </summary> | ||
5565 | <returns>The record size in bytes. | ||
5566 | This is equal to the <see cref="P:ICSharpCode.SharpZipLib.Tar.TarBuffer.BlockFactor"/> multiplied by the <see cref="F:ICSharpCode.SharpZipLib.Tar.TarBuffer.BlockSize"/></returns> | ||
5567 | </member> | ||
5568 | <member name="M:ICSharpCode.SharpZipLib.Tar.TarBuffer.GetBlockFactor"> | ||
5569 | <summary> | ||
5570 | Get the TAR Buffer's block factor | ||
5571 | </summary> | ||
5572 | <returns>The block factor; the number of blocks per record.</returns> | ||
5573 | </member> | ||
5574 | <member name="M:ICSharpCode.SharpZipLib.Tar.TarBuffer.#ctor"> | ||
5575 | <summary> | ||
5576 | Construct a default TarBuffer | ||
5577 | </summary> | ||
5578 | </member> | ||
5579 | <member name="M:ICSharpCode.SharpZipLib.Tar.TarBuffer.CreateInputTarBuffer(System.IO.Stream)"> | ||
5580 | <summary> | ||
5581 | Create TarBuffer for reading with default BlockFactor | ||
5582 | </summary> | ||
5583 | <param name="inputStream">Stream to buffer</param> | ||
5584 | <returns>A new <see cref="T:ICSharpCode.SharpZipLib.Tar.TarBuffer"/> suitable for input.</returns> | ||
5585 | </member> | ||
5586 | <member name="M:ICSharpCode.SharpZipLib.Tar.TarBuffer.CreateInputTarBuffer(System.IO.Stream,System.Int32)"> | ||
5587 | <summary> | ||
5588 | Construct TarBuffer for reading inputStream setting BlockFactor | ||
5589 | </summary> | ||
5590 | <param name="inputStream">Stream to buffer</param> | ||
5591 | <param name="blockFactor">Blocking factor to apply</param> | ||
5592 | <returns>A new <see cref="T:ICSharpCode.SharpZipLib.Tar.TarBuffer"/> suitable for input.</returns> | ||
5593 | </member> | ||
5594 | <member name="M:ICSharpCode.SharpZipLib.Tar.TarBuffer.CreateOutputTarBuffer(System.IO.Stream)"> | ||
5595 | <summary> | ||
5596 | Construct TarBuffer for writing with default BlockFactor | ||
5597 | </summary> | ||
5598 | <param name="outputStream">output stream for buffer</param> | ||
5599 | <returns>A new <see cref="T:ICSharpCode.SharpZipLib.Tar.TarBuffer"/> suitable for output.</returns> | ||
5600 | </member> | ||
5601 | <member name="M:ICSharpCode.SharpZipLib.Tar.TarBuffer.CreateOutputTarBuffer(System.IO.Stream,System.Int32)"> | ||
5602 | <summary> | ||
5603 | Construct TarBuffer for writing Tar output to streams. | ||
5604 | </summary> | ||
5605 | <param name="outputStream">Output stream to write to.</param> | ||
5606 | <param name="blockFactor">Blocking factor to apply</param> | ||
5607 | <returns>A new <see cref="T:ICSharpCode.SharpZipLib.Tar.TarBuffer"/> suitable for output.</returns> | ||
5608 | </member> | ||
5609 | <member name="M:ICSharpCode.SharpZipLib.Tar.TarBuffer.Initialize(System.Int32)"> | ||
5610 | <summary> | ||
5611 | Initialization common to all constructors. | ||
5612 | </summary> | ||
5613 | </member> | ||
5614 | <member name="M:ICSharpCode.SharpZipLib.Tar.TarBuffer.IsEOFBlock(System.Byte[])"> | ||
5615 | <summary> | ||
5616 | Determine if an archive block indicates End of Archive. End of | ||
5617 | archive is indicated by a block that consists entirely of null bytes. | ||
5618 | All remaining blocks for the record should also be null's | ||
5619 | However some older tars only do a couple of null blocks (Old GNU tar for one) | ||
5620 | and also partial records | ||
5621 | </summary> | ||
5622 | <param name = "block">The data block to check.</param> | ||
5623 | <returns>Returns true if the block is an EOF block; false otherwise.</returns> | ||
5624 | </member> | ||
5625 | <member name="M:ICSharpCode.SharpZipLib.Tar.TarBuffer.SkipBlock"> | ||
5626 | <summary> | ||
5627 | Skip over a block on the input stream. | ||
5628 | </summary> | ||
5629 | </member> | ||
5630 | <member name="M:ICSharpCode.SharpZipLib.Tar.TarBuffer.ReadBlock"> | ||
5631 | <summary> | ||
5632 | Read a block from the input stream. | ||
5633 | </summary> | ||
5634 | <returns> | ||
5635 | The block of data read. | ||
5636 | </returns> | ||
5637 | </member> | ||
5638 | <member name="M:ICSharpCode.SharpZipLib.Tar.TarBuffer.ReadRecord"> | ||
5639 | <summary> | ||
5640 | Read a record from data stream. | ||
5641 | </summary> | ||
5642 | <returns> | ||
5643 | false if End-Of-File, else true. | ||
5644 | </returns> | ||
5645 | </member> | ||
5646 | <member name="M:ICSharpCode.SharpZipLib.Tar.TarBuffer.GetCurrentBlockNum"> | ||
5647 | <summary> | ||
5648 | Get the current block number, within the current record, zero based. | ||
5649 | </summary> | ||
5650 | <returns> | ||
5651 | The current zero based block number. | ||
5652 | </returns> | ||
5653 | <remarks> | ||
5654 | The absolute block number = (<see cref="M:ICSharpCode.SharpZipLib.Tar.TarBuffer.GetCurrentRecordNum">record number</see> * <see cref="P:ICSharpCode.SharpZipLib.Tar.TarBuffer.BlockFactor">block factor</see>) + <see cref="M:ICSharpCode.SharpZipLib.Tar.TarBuffer.GetCurrentBlockNum">block number</see>. | ||
5655 | </remarks> | ||
5656 | </member> | ||
5657 | <member name="M:ICSharpCode.SharpZipLib.Tar.TarBuffer.GetCurrentRecordNum"> | ||
5658 | <summary> | ||
5659 | Get the current record number. | ||
5660 | </summary> | ||
5661 | <returns> | ||
5662 | The current zero based record number. | ||
5663 | </returns> | ||
5664 | </member> | ||
5665 | <member name="M:ICSharpCode.SharpZipLib.Tar.TarBuffer.WriteBlock(System.Byte[])"> | ||
5666 | <summary> | ||
5667 | Write a block of data to the archive. | ||
5668 | </summary> | ||
5669 | <param name="block"> | ||
5670 | The data to write to the archive. | ||
5671 | </param> | ||
5672 | </member> | ||
5673 | <member name="M:ICSharpCode.SharpZipLib.Tar.TarBuffer.WriteBlock(System.Byte[],System.Int32)"> | ||
5674 | <summary> | ||
5675 | Write an archive record to the archive, where the record may be | ||
5676 | inside of a larger array buffer. The buffer must be "offset plus | ||
5677 | record size" long. | ||
5678 | </summary> | ||
5679 | <param name="buffer"> | ||
5680 | The buffer containing the record data to write. | ||
5681 | </param> | ||
5682 | <param name="offset"> | ||
5683 | The offset of the record data within buffer. | ||
5684 | </param> | ||
5685 | </member> | ||
5686 | <member name="M:ICSharpCode.SharpZipLib.Tar.TarBuffer.WriteRecord"> | ||
5687 | <summary> | ||
5688 | Write a TarBuffer record to the archive. | ||
5689 | </summary> | ||
5690 | </member> | ||
5691 | <member name="M:ICSharpCode.SharpZipLib.Tar.TarBuffer.Flush"> | ||
5692 | <summary> | ||
5693 | Flush the current record if it has any data in it. | ||
5694 | </summary> | ||
5695 | </member> | ||
5696 | <member name="M:ICSharpCode.SharpZipLib.Tar.TarBuffer.Close"> | ||
5697 | <summary> | ||
5698 | Close the TarBuffer. If this is an output buffer, also flush the | ||
5699 | current block before closing. | ||
5700 | </summary> | ||
5701 | </member> | ||
5702 | <member name="P:ICSharpCode.SharpZipLib.Tar.TarBuffer.RecordSize"> | ||
5703 | <summary> | ||
5704 | Get the record size for this buffer | ||
5705 | </summary> | ||
5706 | <value>The record size in bytes. | ||
5707 | This is equal to the <see cref="P:ICSharpCode.SharpZipLib.Tar.TarBuffer.BlockFactor"/> multiplied by the <see cref="F:ICSharpCode.SharpZipLib.Tar.TarBuffer.BlockSize"/></value> | ||
5708 | </member> | ||
5709 | <member name="P:ICSharpCode.SharpZipLib.Tar.TarBuffer.BlockFactor"> | ||
5710 | <summary> | ||
5711 | Get the Blocking factor for the buffer | ||
5712 | </summary> | ||
5713 | <value>This is the number of block in each record.</value> | ||
5714 | </member> | ||
5715 | <member name="P:ICSharpCode.SharpZipLib.Tar.TarBuffer.CurrentBlock"> | ||
5716 | <summary> | ||
5717 | Get the current block number, within the current record, zero based. | ||
5718 | </summary> | ||
5719 | </member> | ||
5720 | <member name="P:ICSharpCode.SharpZipLib.Tar.TarBuffer.CurrentRecord"> | ||
5721 | <summary> | ||
5722 | Get the current record number. | ||
5723 | </summary> | ||
5724 | <returns> | ||
5725 | The current zero based record number. | ||
5726 | </returns> | ||
5727 | </member> | ||
5728 | <member name="T:ICSharpCode.SharpZipLib.Tar.TarHeader"> | ||
5729 | <summary> | ||
5730 | This class encapsulates the Tar Entry Header used in Tar Archives. | ||
5731 | The class also holds a number of tar constants, used mostly in headers. | ||
5732 | </summary> | ||
5733 | </member> | ||
5734 | <member name="F:ICSharpCode.SharpZipLib.Tar.TarHeader.NAMELEN"> | ||
5735 | <summary> | ||
5736 | The length of the name field in a header buffer. | ||
5737 | </summary> | ||
5738 | </member> | ||
5739 | <member name="F:ICSharpCode.SharpZipLib.Tar.TarHeader.MODELEN"> | ||
5740 | <summary> | ||
5741 | The length of the mode field in a header buffer. | ||
5742 | </summary> | ||
5743 | </member> | ||
5744 | <member name="F:ICSharpCode.SharpZipLib.Tar.TarHeader.UIDLEN"> | ||
5745 | <summary> | ||
5746 | The length of the user id field in a header buffer. | ||
5747 | </summary> | ||
5748 | </member> | ||
5749 | <member name="F:ICSharpCode.SharpZipLib.Tar.TarHeader.GIDLEN"> | ||
5750 | <summary> | ||
5751 | The length of the group id field in a header buffer. | ||
5752 | </summary> | ||
5753 | </member> | ||
5754 | <member name="F:ICSharpCode.SharpZipLib.Tar.TarHeader.CHKSUMLEN"> | ||
5755 | <summary> | ||
5756 | The length of the checksum field in a header buffer. | ||
5757 | </summary> | ||
5758 | </member> | ||
5759 | <member name="F:ICSharpCode.SharpZipLib.Tar.TarHeader.CHKSUMOFS"> | ||
5760 | <summary> | ||
5761 | Offset of checksum in a header buffer. | ||
5762 | </summary> | ||
5763 | </member> | ||
5764 | <member name="F:ICSharpCode.SharpZipLib.Tar.TarHeader.SIZELEN"> | ||
5765 | <summary> | ||
5766 | The length of the size field in a header buffer. | ||
5767 | </summary> | ||
5768 | </member> | ||
5769 | <member name="F:ICSharpCode.SharpZipLib.Tar.TarHeader.MAGICLEN"> | ||
5770 | <summary> | ||
5771 | The length of the magic field in a header buffer. | ||
5772 | </summary> | ||
5773 | </member> | ||
5774 | <member name="F:ICSharpCode.SharpZipLib.Tar.TarHeader.VERSIONLEN"> | ||
5775 | <summary> | ||
5776 | The length of the version field in a header buffer. | ||
5777 | </summary> | ||
5778 | </member> | ||
5779 | <member name="F:ICSharpCode.SharpZipLib.Tar.TarHeader.MODTIMELEN"> | ||
5780 | <summary> | ||
5781 | The length of the modification time field in a header buffer. | ||
5782 | </summary> | ||
5783 | </member> | ||
5784 | <member name="F:ICSharpCode.SharpZipLib.Tar.TarHeader.UNAMELEN"> | ||
5785 | <summary> | ||
5786 | The length of the user name field in a header buffer. | ||
5787 | </summary> | ||
5788 | </member> | ||
5789 | <member name="F:ICSharpCode.SharpZipLib.Tar.TarHeader.GNAMELEN"> | ||
5790 | <summary> | ||
5791 | The length of the group name field in a header buffer. | ||
5792 | </summary> | ||
5793 | </member> | ||
5794 | <member name="F:ICSharpCode.SharpZipLib.Tar.TarHeader.DEVLEN"> | ||
5795 | <summary> | ||
5796 | The length of the devices field in a header buffer. | ||
5797 | </summary> | ||
5798 | </member> | ||
5799 | <member name="F:ICSharpCode.SharpZipLib.Tar.TarHeader.LF_OLDNORM"> | ||
5800 | <summary> | ||
5801 | The "old way" of indicating a normal file. | ||
5802 | </summary> | ||
5803 | </member> | ||
5804 | <member name="F:ICSharpCode.SharpZipLib.Tar.TarHeader.LF_NORMAL"> | ||
5805 | <summary> | ||
5806 | Normal file type. | ||
5807 | </summary> | ||
5808 | </member> | ||
5809 | <member name="F:ICSharpCode.SharpZipLib.Tar.TarHeader.LF_LINK"> | ||
5810 | <summary> | ||
5811 | Link file type. | ||
5812 | </summary> | ||
5813 | </member> | ||
5814 | <member name="F:ICSharpCode.SharpZipLib.Tar.TarHeader.LF_SYMLINK"> | ||
5815 | <summary> | ||
5816 | Symbolic link file type. | ||
5817 | </summary> | ||
5818 | </member> | ||
5819 | <member name="F:ICSharpCode.SharpZipLib.Tar.TarHeader.LF_CHR"> | ||
5820 | <summary> | ||
5821 | Character device file type. | ||
5822 | </summary> | ||
5823 | </member> | ||
5824 | <member name="F:ICSharpCode.SharpZipLib.Tar.TarHeader.LF_BLK"> | ||
5825 | <summary> | ||
5826 | Block device file type. | ||
5827 | </summary> | ||
5828 | </member> | ||
5829 | <member name="F:ICSharpCode.SharpZipLib.Tar.TarHeader.LF_DIR"> | ||
5830 | <summary> | ||
5831 | Directory file type. | ||
5832 | </summary> | ||
5833 | </member> | ||
5834 | <member name="F:ICSharpCode.SharpZipLib.Tar.TarHeader.LF_FIFO"> | ||
5835 | <summary> | ||
5836 | FIFO (pipe) file type. | ||
5837 | </summary> | ||
5838 | </member> | ||
5839 | <member name="F:ICSharpCode.SharpZipLib.Tar.TarHeader.LF_CONTIG"> | ||
5840 | <summary> | ||
5841 | Contiguous file type. | ||
5842 | </summary> | ||
5843 | </member> | ||
5844 | <member name="F:ICSharpCode.SharpZipLib.Tar.TarHeader.LF_GHDR"> | ||
5845 | <summary> | ||
5846 | Posix.1 2001 global extended header | ||
5847 | </summary> | ||
5848 | </member> | ||
5849 | <member name="F:ICSharpCode.SharpZipLib.Tar.TarHeader.LF_XHDR"> | ||
5850 | <summary> | ||
5851 | Posix.1 2001 extended header | ||
5852 | </summary> | ||
5853 | </member> | ||
5854 | <member name="F:ICSharpCode.SharpZipLib.Tar.TarHeader.LF_ACL"> | ||
5855 | <summary> | ||
5856 | Solaris access control list file type | ||
5857 | </summary> | ||
5858 | </member> | ||
5859 | <member name="F:ICSharpCode.SharpZipLib.Tar.TarHeader.LF_GNU_DUMPDIR"> | ||
5860 | <summary> | ||
5861 | GNU dir dump file type | ||
5862 | This is a dir entry that contains the names of files that were in the | ||
5863 | dir at the time the dump was made | ||
5864 | </summary> | ||
5865 | </member> | ||
5866 | <member name="F:ICSharpCode.SharpZipLib.Tar.TarHeader.LF_EXTATTR"> | ||
5867 | <summary> | ||
5868 | Solaris Extended Attribute File | ||
5869 | </summary> | ||
5870 | </member> | ||
5871 | <member name="F:ICSharpCode.SharpZipLib.Tar.TarHeader.LF_META"> | ||
5872 | <summary> | ||
5873 | Inode (metadata only) no file content | ||
5874 | </summary> | ||
5875 | </member> | ||
5876 | <member name="F:ICSharpCode.SharpZipLib.Tar.TarHeader.LF_GNU_LONGLINK"> | ||
5877 | <summary> | ||
5878 | Identifies the next file on the tape as having a long link name | ||
5879 | </summary> | ||
5880 | </member> | ||
5881 | <member name="F:ICSharpCode.SharpZipLib.Tar.TarHeader.LF_GNU_LONGNAME"> | ||
5882 | <summary> | ||
5883 | Identifies the next file on the tape as having a long name | ||
5884 | </summary> | ||
5885 | </member> | ||
5886 | <member name="F:ICSharpCode.SharpZipLib.Tar.TarHeader.LF_GNU_MULTIVOL"> | ||
5887 | <summary> | ||
5888 | Continuation of a file that began on another volume | ||
5889 | </summary> | ||
5890 | </member> | ||
5891 | <member name="F:ICSharpCode.SharpZipLib.Tar.TarHeader.LF_GNU_NAMES"> | ||
5892 | <summary> | ||
5893 | For storing filenames that dont fit in the main header (old GNU) | ||
5894 | </summary> | ||
5895 | </member> | ||
5896 | <member name="F:ICSharpCode.SharpZipLib.Tar.TarHeader.LF_GNU_SPARSE"> | ||
5897 | <summary> | ||
5898 | GNU Sparse file | ||
5899 | </summary> | ||
5900 | </member> | ||
5901 | <member name="F:ICSharpCode.SharpZipLib.Tar.TarHeader.LF_GNU_VOLHDR"> | ||
5902 | <summary> | ||
5903 | GNU Tape/volume header ignore on extraction | ||
5904 | </summary> | ||
5905 | </member> | ||
5906 | <member name="F:ICSharpCode.SharpZipLib.Tar.TarHeader.TMAGIC"> | ||
5907 | <summary> | ||
5908 | The magic tag representing a POSIX tar archive. (includes trailing NULL) | ||
5909 | </summary> | ||
5910 | </member> | ||
5911 | <member name="F:ICSharpCode.SharpZipLib.Tar.TarHeader.GNU_TMAGIC"> | ||
5912 | <summary> | ||
5913 | The magic tag representing an old GNU tar archive where version is included in magic and overwrites it | ||
5914 | </summary> | ||
5915 | </member> | ||
5916 | <member name="M:ICSharpCode.SharpZipLib.Tar.TarHeader.#ctor"> | ||
5917 | <summary> | ||
5918 | Initialise a default TarHeader instance | ||
5919 | </summary> | ||
5920 | </member> | ||
5921 | <member name="M:ICSharpCode.SharpZipLib.Tar.TarHeader.GetName"> | ||
5922 | <summary> | ||
5923 | Get the name of this entry. | ||
5924 | </summary> | ||
5925 | <returns>The entry's name.</returns> | ||
5926 | </member> | ||
5927 | <member name="M:ICSharpCode.SharpZipLib.Tar.TarHeader.Clone"> | ||
5928 | <summary> | ||
5929 | Create a new <see cref="T:ICSharpCode.SharpZipLib.Tar.TarHeader"/> that is a copy of the current instance. | ||
5930 | </summary> | ||
5931 | <returns>A new <see cref="T:System.Object"/> that is a copy of the current instance.</returns> | ||
5932 | </member> | ||
5933 | <member name="M:ICSharpCode.SharpZipLib.Tar.TarHeader.ParseBuffer(System.Byte[])"> | ||
5934 | <summary> | ||
5935 | Parse TarHeader information from a header buffer. | ||
5936 | </summary> | ||
5937 | <param name = "header"> | ||
5938 | The tar entry header buffer to get information from. | ||
5939 | </param> | ||
5940 | </member> | ||
5941 | <member name="M:ICSharpCode.SharpZipLib.Tar.TarHeader.WriteHeader(System.Byte[])"> | ||
5942 | <summary> | ||
5943 | 'Write' header information to buffer provided, updating the <see cref="P:ICSharpCode.SharpZipLib.Tar.TarHeader.Checksum">check sum</see>. | ||
5944 | </summary> | ||
5945 | <param name="outBuffer">output buffer for header information</param> | ||
5946 | </member> | ||
5947 | <member name="M:ICSharpCode.SharpZipLib.Tar.TarHeader.GetHashCode"> | ||
5948 | <summary> | ||
5949 | Get a hash code for the current object. | ||
5950 | </summary> | ||
5951 | <returns>A hash code for the current object.</returns> | ||
5952 | </member> | ||
5953 | <member name="M:ICSharpCode.SharpZipLib.Tar.TarHeader.Equals(System.Object)"> | ||
5954 | <summary> | ||
5955 | Determines if this instance is equal to the specified object. | ||
5956 | </summary> | ||
5957 | <param name="obj">The object to compare with.</param> | ||
5958 | <returns>true if the objects are equal, false otherwise.</returns> | ||
5959 | </member> | ||
5960 | <member name="M:ICSharpCode.SharpZipLib.Tar.TarHeader.SetValueDefaults(System.Int32,System.String,System.Int32,System.String)"> | ||
5961 | <summary> | ||
5962 | Set defaults for values used when constructing a TarHeader instance. | ||
5963 | </summary> | ||
5964 | <param name="userId">Value to apply as a default for userId.</param> | ||
5965 | <param name="userName">Value to apply as a default for userName.</param> | ||
5966 | <param name="groupId">Value to apply as a default for groupId.</param> | ||
5967 | <param name="groupName">Value to apply as a default for groupName.</param> | ||
5968 | </member> | ||
5969 | <member name="M:ICSharpCode.SharpZipLib.Tar.TarHeader.ParseOctal(System.Byte[],System.Int32,System.Int32)"> | ||
5970 | <summary> | ||
5971 | Parse an octal string from a header buffer. | ||
5972 | </summary> | ||
5973 | <param name = "header">The header buffer from which to parse.</param> | ||
5974 | <param name = "offset">The offset into the buffer from which to parse.</param> | ||
5975 | <param name = "length">The number of header bytes to parse.</param> | ||
5976 | <returns>The long equivalent of the octal string.</returns> | ||
5977 | </member> | ||
5978 | <member name="M:ICSharpCode.SharpZipLib.Tar.TarHeader.ParseName(System.Byte[],System.Int32,System.Int32)"> | ||
5979 | <summary> | ||
5980 | Parse a name from a header buffer. | ||
5981 | </summary> | ||
5982 | <param name="header"> | ||
5983 | The header buffer from which to parse. | ||
5984 | </param> | ||
5985 | <param name="offset"> | ||
5986 | The offset into the buffer from which to parse. | ||
5987 | </param> | ||
5988 | <param name="length"> | ||
5989 | The number of header bytes to parse. | ||
5990 | </param> | ||
5991 | <returns> | ||
5992 | The name parsed. | ||
5993 | </returns> | ||
5994 | </member> | ||
5995 | <member name="M:ICSharpCode.SharpZipLib.Tar.TarHeader.GetNameBytes(System.Text.StringBuilder,System.Int32,System.Byte[],System.Int32,System.Int32)"> | ||
5996 | <summary> | ||
5997 | Add <paramref name="name">name</paramref> to the buffer as a collection of bytes | ||
5998 | </summary> | ||
5999 | <param name="name">The name to add</param> | ||
6000 | <param name="nameOffset">The offset of the first character</param> | ||
6001 | <param name="buffer">The buffer to add to</param> | ||
6002 | <param name="bufferOffset">The index of the first byte to add</param> | ||
6003 | <param name="length">The number of characters/bytes to add</param> | ||
6004 | <returns>The next free index in the <paramref name="buf">buffer</paramref></returns> | ||
6005 | </member> | ||
6006 | <member name="M:ICSharpCode.SharpZipLib.Tar.TarHeader.GetNameBytes(System.String,System.Int32,System.Byte[],System.Int32,System.Int32)"> | ||
6007 | <summary> | ||
6008 | Add <paramref name="name">name</paramref> to the buffer as a collection of bytes | ||
6009 | </summary> | ||
6010 | <param name="name">The name to add</param> | ||
6011 | <param name="nameOffset">The offset of the first character</param> | ||
6012 | <param name="buffer">The buffer to add to</param> | ||
6013 | <param name="bufferOffset">The index of the first byte to add</param> | ||
6014 | <param name="length">The number of characters/bytes to add</param> | ||
6015 | <returns>The next free index in the <paramref name="buf">buffer</paramref></returns> | ||
6016 | </member> | ||
6017 | <member name="M:ICSharpCode.SharpZipLib.Tar.TarHeader.GetNameBytes(System.Text.StringBuilder,System.Byte[],System.Int32,System.Int32)"> | ||
6018 | <summary> | ||
6019 | Add an entry name to the buffer | ||
6020 | </summary> | ||
6021 | <param name="name"> | ||
6022 | The name to add | ||
6023 | </param> | ||
6024 | <param name="buffer"> | ||
6025 | The buffer to add to | ||
6026 | </param> | ||
6027 | <param name="offset"> | ||
6028 | The offset into the buffer from which to start adding | ||
6029 | </param> | ||
6030 | <param name="length"> | ||
6031 | The number of header bytes to add | ||
6032 | </param> | ||
6033 | <returns> | ||
6034 | The index of the next free byte in the buffer | ||
6035 | </returns> | ||
6036 | </member> | ||
6037 | <member name="M:ICSharpCode.SharpZipLib.Tar.TarHeader.GetNameBytes(System.String,System.Byte[],System.Int32,System.Int32)"> | ||
6038 | <summary> | ||
6039 | Add an entry name to the buffer | ||
6040 | </summary> | ||
6041 | <param name="name">The name to add</param> | ||
6042 | <param name="buffer">The buffer to add to</param> | ||
6043 | <param name="offset">The offset into the buffer from which to start adding</param> | ||
6044 | <param name="length">The number of header bytes to add</param> | ||
6045 | <returns>The index of the next free byte in the buffer</returns> | ||
6046 | </member> | ||
6047 | <member name="M:ICSharpCode.SharpZipLib.Tar.TarHeader.GetAsciiBytes(System.String,System.Int32,System.Byte[],System.Int32,System.Int32)"> | ||
6048 | <summary> | ||
6049 | Add a string to a buffer as a collection of ascii bytes. | ||
6050 | </summary> | ||
6051 | <param name="toAdd">The string to add</param> | ||
6052 | <param name="nameOffset">The offset of the first character to add.</param> | ||
6053 | <param name="buffer">The buffer to add to.</param> | ||
6054 | <param name="bufferOffset">The offset to start adding at.</param> | ||
6055 | <param name="length">The number of ascii characters to add.</param> | ||
6056 | <returns>The next free index in the buffer.</returns> | ||
6057 | </member> | ||
6058 | <member name="M:ICSharpCode.SharpZipLib.Tar.TarHeader.GetOctalBytes(System.Int64,System.Byte[],System.Int32,System.Int32)"> | ||
6059 | <summary> | ||
6060 | Put an octal representation of a value into a buffer | ||
6061 | </summary> | ||
6062 | <param name = "value"> | ||
6063 | the value to be converted to octal | ||
6064 | </param> | ||
6065 | <param name = "buffer"> | ||
6066 | buffer to store the octal string | ||
6067 | </param> | ||
6068 | <param name = "offset"> | ||
6069 | The offset into the buffer where the value starts | ||
6070 | </param> | ||
6071 | <param name = "length"> | ||
6072 | The length of the octal string to create | ||
6073 | </param> | ||
6074 | <returns> | ||
6075 | The offset of the character next byte after the octal string | ||
6076 | </returns> | ||
6077 | </member> | ||
6078 | <member name="M:ICSharpCode.SharpZipLib.Tar.TarHeader.GetLongOctalBytes(System.Int64,System.Byte[],System.Int32,System.Int32)"> | ||
6079 | <summary> | ||
6080 | Put an octal representation of a value into a buffer | ||
6081 | </summary> | ||
6082 | <param name = "value">Value to be convert to octal</param> | ||
6083 | <param name = "buffer">The buffer to update</param> | ||
6084 | <param name = "offset">The offset into the buffer to store the value</param> | ||
6085 | <param name = "length">The length of the octal string</param> | ||
6086 | <returns>Index of next byte</returns> | ||
6087 | </member> | ||
6088 | <member name="M:ICSharpCode.SharpZipLib.Tar.TarHeader.GetCheckSumOctalBytes(System.Int64,System.Byte[],System.Int32,System.Int32)"> | ||
6089 | <summary> | ||
6090 | Add the checksum integer to header buffer. | ||
6091 | </summary> | ||
6092 | <param name = "value"></param> | ||
6093 | <param name = "buffer">The header buffer to set the checksum for</param> | ||
6094 | <param name = "offset">The offset into the buffer for the checksum</param> | ||
6095 | <param name = "length">The number of header bytes to update. | ||
6096 | It's formatted differently from the other fields: it has 6 digits, a | ||
6097 | null, then a space -- rather than digits, a space, then a null. | ||
6098 | The final space is already there, from checksumming | ||
6099 | </param> | ||
6100 | <returns>The modified buffer offset</returns> | ||
6101 | </member> | ||
6102 | <member name="M:ICSharpCode.SharpZipLib.Tar.TarHeader.ComputeCheckSum(System.Byte[])"> | ||
6103 | <summary> | ||
6104 | Compute the checksum for a tar entry header. | ||
6105 | The checksum field must be all spaces prior to this happening | ||
6106 | </summary> | ||
6107 | <param name = "buffer">The tar entry's header buffer.</param> | ||
6108 | <returns>The computed checksum.</returns> | ||
6109 | </member> | ||
6110 | <member name="M:ICSharpCode.SharpZipLib.Tar.TarHeader.MakeCheckSum(System.Byte[])"> | ||
6111 | <summary> | ||
6112 | Make a checksum for a tar entry ignoring the checksum contents. | ||
6113 | </summary> | ||
6114 | <param name = "buffer">The tar entry's header buffer.</param> | ||
6115 | <returns>The checksum for the buffer</returns> | ||
6116 | </member> | ||
6117 | <member name="P:ICSharpCode.SharpZipLib.Tar.TarHeader.Name"> | ||
6118 | <summary> | ||
6119 | Get/set the name for this tar entry. | ||
6120 | </summary> | ||
6121 | <exception cref="T:System.ArgumentNullException">Thrown when attempting to set the property to null.</exception> | ||
6122 | </member> | ||
6123 | <member name="P:ICSharpCode.SharpZipLib.Tar.TarHeader.Mode"> | ||
6124 | <summary> | ||
6125 | Get/set the entry's Unix style permission mode. | ||
6126 | </summary> | ||
6127 | </member> | ||
6128 | <member name="P:ICSharpCode.SharpZipLib.Tar.TarHeader.UserId"> | ||
6129 | <summary> | ||
6130 | The entry's user id. | ||
6131 | </summary> | ||
6132 | <remarks> | ||
6133 | This is only directly relevant to unix systems. | ||
6134 | The default is zero. | ||
6135 | </remarks> | ||
6136 | </member> | ||
6137 | <member name="P:ICSharpCode.SharpZipLib.Tar.TarHeader.GroupId"> | ||
6138 | <summary> | ||
6139 | Get/set the entry's group id. | ||
6140 | </summary> | ||
6141 | <remarks> | ||
6142 | This is only directly relevant to linux/unix systems. | ||
6143 | The default value is zero. | ||
6144 | </remarks> | ||
6145 | </member> | ||
6146 | <member name="P:ICSharpCode.SharpZipLib.Tar.TarHeader.Size"> | ||
6147 | <summary> | ||
6148 | Get/set the entry's size. | ||
6149 | </summary> | ||
6150 | <exception cref="T:System.ArgumentOutOfRangeException">Thrown when setting the size to less than zero.</exception> | ||
6151 | </member> | ||
6152 | <member name="P:ICSharpCode.SharpZipLib.Tar.TarHeader.ModTime"> | ||
6153 | <summary> | ||
6154 | Get/set the entry's modification time. | ||
6155 | </summary> | ||
6156 | <remarks> | ||
6157 | The modification time is only accurate to within a second. | ||
6158 | </remarks> | ||
6159 | <exception cref="T:System.ArgumentOutOfRangeException">Thrown when setting the date time to less than 1/1/1970.</exception> | ||
6160 | </member> | ||
6161 | <member name="P:ICSharpCode.SharpZipLib.Tar.TarHeader.Checksum"> | ||
6162 | <summary> | ||
6163 | Get the entry's checksum. This is only valid/updated after writing or reading an entry. | ||
6164 | </summary> | ||
6165 | </member> | ||
6166 | <member name="P:ICSharpCode.SharpZipLib.Tar.TarHeader.IsChecksumValid"> | ||
6167 | <summary> | ||
6168 | Get value of true if the header checksum is valid, false otherwise. | ||
6169 | </summary> | ||
6170 | </member> | ||
6171 | <member name="P:ICSharpCode.SharpZipLib.Tar.TarHeader.TypeFlag"> | ||
6172 | <summary> | ||
6173 | Get/set the entry's type flag. | ||
6174 | </summary> | ||
6175 | </member> | ||
6176 | <member name="P:ICSharpCode.SharpZipLib.Tar.TarHeader.LinkName"> | ||
6177 | <summary> | ||
6178 | The entry's link name. | ||
6179 | </summary> | ||
6180 | <exception cref="T:System.ArgumentNullException">Thrown when attempting to set LinkName to null.</exception> | ||
6181 | </member> | ||
6182 | <member name="P:ICSharpCode.SharpZipLib.Tar.TarHeader.Magic"> | ||
6183 | <summary> | ||
6184 | Get/set the entry's magic tag. | ||
6185 | </summary> | ||
6186 | <exception cref="T:System.ArgumentNullException">Thrown when attempting to set Magic to null.</exception> | ||
6187 | </member> | ||
6188 | <member name="P:ICSharpCode.SharpZipLib.Tar.TarHeader.Version"> | ||
6189 | <summary> | ||
6190 | The entry's version. | ||
6191 | </summary> | ||
6192 | <exception cref="T:System.ArgumentNullException">Thrown when attempting to set Version to null.</exception> | ||
6193 | </member> | ||
6194 | <member name="P:ICSharpCode.SharpZipLib.Tar.TarHeader.UserName"> | ||
6195 | <summary> | ||
6196 | The entry's user name. | ||
6197 | </summary> | ||
6198 | </member> | ||
6199 | <member name="P:ICSharpCode.SharpZipLib.Tar.TarHeader.GroupName"> | ||
6200 | <summary> | ||
6201 | Get/set the entry's group name. | ||
6202 | </summary> | ||
6203 | <remarks> | ||
6204 | This is only directly relevant to unix systems. | ||
6205 | </remarks> | ||
6206 | </member> | ||
6207 | <member name="P:ICSharpCode.SharpZipLib.Tar.TarHeader.DevMajor"> | ||
6208 | <summary> | ||
6209 | Get/set the entry's major device number. | ||
6210 | </summary> | ||
6211 | </member> | ||
6212 | <member name="P:ICSharpCode.SharpZipLib.Tar.TarHeader.DevMinor"> | ||
6213 | <summary> | ||
6214 | Get/set the entry's minor device number. | ||
6215 | </summary> | ||
6216 | </member> | ||
6217 | <member name="T:ICSharpCode.SharpZipLib.Core.ScanEventArgs"> | ||
6218 | <summary> | ||
6219 | Event arguments for scanning. | ||
6220 | </summary> | ||
6221 | </member> | ||
6222 | <member name="M:ICSharpCode.SharpZipLib.Core.ScanEventArgs.#ctor(System.String)"> | ||
6223 | <summary> | ||
6224 | Initialise a new instance of <see cref="T:ICSharpCode.SharpZipLib.Core.ScanEventArgs"/> | ||
6225 | </summary> | ||
6226 | <param name="name">The file or directory name.</param> | ||
6227 | </member> | ||
6228 | <member name="P:ICSharpCode.SharpZipLib.Core.ScanEventArgs.Name"> | ||
6229 | <summary> | ||
6230 | The fie or directory name for this event. | ||
6231 | </summary> | ||
6232 | </member> | ||
6233 | <member name="P:ICSharpCode.SharpZipLib.Core.ScanEventArgs.ContinueRunning"> | ||
6234 | <summary> | ||
6235 | Get set a value indicating if scanning should continue or not. | ||
6236 | </summary> | ||
6237 | </member> | ||
6238 | <member name="T:ICSharpCode.SharpZipLib.Core.ProgressEventArgs"> | ||
6239 | <summary> | ||
6240 | Event arguments during processing of a single file or directory. | ||
6241 | </summary> | ||
6242 | </member> | ||
6243 | <member name="M:ICSharpCode.SharpZipLib.Core.ProgressEventArgs.#ctor(System.String,System.Int64,System.Int64)"> | ||
6244 | <summary> | ||
6245 | Initialise a new instance of <see cref="T:ICSharpCode.SharpZipLib.Core.ScanEventArgs"/> | ||
6246 | </summary> | ||
6247 | <param name="name">The file or directory name if known.</param> | ||
6248 | <param name="processed">The number of bytes processed so far</param> | ||
6249 | <param name="target">The total number of bytes to process, 0 if not known</param> | ||
6250 | </member> | ||
6251 | <member name="P:ICSharpCode.SharpZipLib.Core.ProgressEventArgs.Name"> | ||
6252 | <summary> | ||
6253 | The name for this event if known. | ||
6254 | </summary> | ||
6255 | </member> | ||
6256 | <member name="P:ICSharpCode.SharpZipLib.Core.ProgressEventArgs.ContinueRunning"> | ||
6257 | <summary> | ||
6258 | Get set a value indicating wether scanning should continue or not. | ||
6259 | </summary> | ||
6260 | </member> | ||
6261 | <member name="P:ICSharpCode.SharpZipLib.Core.ProgressEventArgs.PercentComplete"> | ||
6262 | <summary> | ||
6263 | Get a percentage representing how much of the <see cref="P:ICSharpCode.SharpZipLib.Core.ProgressEventArgs.Target"></see> has been processed | ||
6264 | </summary> | ||
6265 | <value>0.0 to 100.0 percent; 0 if target is not known.</value> | ||
6266 | </member> | ||
6267 | <member name="P:ICSharpCode.SharpZipLib.Core.ProgressEventArgs.Processed"> | ||
6268 | <summary> | ||
6269 | The number of bytes processed so far | ||
6270 | </summary> | ||
6271 | </member> | ||
6272 | <member name="P:ICSharpCode.SharpZipLib.Core.ProgressEventArgs.Target"> | ||
6273 | <summary> | ||
6274 | The number of bytes to process. | ||
6275 | </summary> | ||
6276 | <remarks>Target may be 0 or negative if the value isnt known.</remarks> | ||
6277 | </member> | ||
6278 | <member name="T:ICSharpCode.SharpZipLib.Core.DirectoryEventArgs"> | ||
6279 | <summary> | ||
6280 | Event arguments for directories. | ||
6281 | </summary> | ||
6282 | </member> | ||
6283 | <member name="M:ICSharpCode.SharpZipLib.Core.DirectoryEventArgs.#ctor(System.String,System.Boolean)"> | ||
6284 | <summary> | ||
6285 | Initialize an instance of <see cref="T:ICSharpCode.SharpZipLib.Core.DirectoryEventArgs"></see>. | ||
6286 | </summary> | ||
6287 | <param name="name">The name for this directory.</param> | ||
6288 | <param name="hasMatchingFiles">Flag value indicating if any matching files are contained in this directory.</param> | ||
6289 | </member> | ||
6290 | <member name="P:ICSharpCode.SharpZipLib.Core.DirectoryEventArgs.HasMatchingFiles"> | ||
6291 | <summary> | ||
6292 | Get a value indicating if the directory contains any matching files or not. | ||
6293 | </summary> | ||
6294 | </member> | ||
6295 | <member name="T:ICSharpCode.SharpZipLib.Core.ScanFailureEventArgs"> | ||
6296 | <summary> | ||
6297 | Arguments passed when scan failures are detected. | ||
6298 | </summary> | ||
6299 | </member> | ||
6300 | <member name="M:ICSharpCode.SharpZipLib.Core.ScanFailureEventArgs.#ctor(System.String,System.Exception)"> | ||
6301 | <summary> | ||
6302 | Initialise a new instance of <see cref="T:ICSharpCode.SharpZipLib.Core.ScanFailureEventArgs"></see> | ||
6303 | </summary> | ||
6304 | <param name="name">The name to apply.</param> | ||
6305 | <param name="e">The exception to use.</param> | ||
6306 | </member> | ||
6307 | <member name="P:ICSharpCode.SharpZipLib.Core.ScanFailureEventArgs.Name"> | ||
6308 | <summary> | ||
6309 | The applicable name. | ||
6310 | </summary> | ||
6311 | </member> | ||
6312 | <member name="P:ICSharpCode.SharpZipLib.Core.ScanFailureEventArgs.Exception"> | ||
6313 | <summary> | ||
6314 | The applicable exception. | ||
6315 | </summary> | ||
6316 | </member> | ||
6317 | <member name="P:ICSharpCode.SharpZipLib.Core.ScanFailureEventArgs.ContinueRunning"> | ||
6318 | <summary> | ||
6319 | Get / set a value indicating wether scanning should continue. | ||
6320 | </summary> | ||
6321 | </member> | ||
6322 | <member name="T:ICSharpCode.SharpZipLib.Core.ProcessDirectoryHandler"> | ||
6323 | <summary> | ||
6324 | Delegate invoked before starting to process a directory. | ||
6325 | </summary> | ||
6326 | </member> | ||
6327 | <member name="T:ICSharpCode.SharpZipLib.Core.ProcessFileHandler"> | ||
6328 | <summary> | ||
6329 | Delegate invoked before starting to process a file. | ||
6330 | </summary> | ||
6331 | <param name="sender">The source of the event</param> | ||
6332 | <param name="e">The event arguments.</param> | ||
6333 | </member> | ||
6334 | <member name="T:ICSharpCode.SharpZipLib.Core.ProgressHandler"> | ||
6335 | <summary> | ||
6336 | Delegate invoked during processing of a file or directory | ||
6337 | </summary> | ||
6338 | <param name="sender">The source of the event</param> | ||
6339 | <param name="e">The event arguments.</param> | ||
6340 | </member> | ||
6341 | <member name="T:ICSharpCode.SharpZipLib.Core.CompletedFileHandler"> | ||
6342 | <summary> | ||
6343 | Delegate invoked when a file has been completely processed. | ||
6344 | </summary> | ||
6345 | <param name="sender">The source of the event</param> | ||
6346 | <param name="e">The event arguments.</param> | ||
6347 | </member> | ||
6348 | <member name="T:ICSharpCode.SharpZipLib.Core.DirectoryFailureHandler"> | ||
6349 | <summary> | ||
6350 | Delegate invoked when a directory failure is detected. | ||
6351 | </summary> | ||
6352 | <param name="sender">The source of the event</param> | ||
6353 | <param name="e">The event arguments.</param> | ||
6354 | </member> | ||
6355 | <member name="T:ICSharpCode.SharpZipLib.Core.FileFailureHandler"> | ||
6356 | <summary> | ||
6357 | Delegate invoked when a file failure is detected. | ||
6358 | </summary> | ||
6359 | <param name="sender">The source of the event</param> | ||
6360 | <param name="e">The event arguments.</param> | ||
6361 | </member> | ||
6362 | <member name="T:ICSharpCode.SharpZipLib.Core.FileSystemScanner"> | ||
6363 | <summary> | ||
6364 | FileSystemScanner provides facilities scanning of files and directories. | ||
6365 | </summary> | ||
6366 | </member> | ||
6367 | <member name="M:ICSharpCode.SharpZipLib.Core.FileSystemScanner.#ctor(System.String)"> | ||
6368 | <summary> | ||
6369 | Initialise a new instance of <see cref="T:ICSharpCode.SharpZipLib.Core.FileSystemScanner"></see> | ||
6370 | </summary> | ||
6371 | <param name="filter">The <see cref="T:ICSharpCode.SharpZipLib.Core.PathFilter">file filter</see> to apply when scanning.</param> | ||
6372 | </member> | ||
6373 | <member name="M:ICSharpCode.SharpZipLib.Core.FileSystemScanner.#ctor(System.String,System.String)"> | ||
6374 | <summary> | ||
6375 | Initialise a new instance of <see cref="T:ICSharpCode.SharpZipLib.Core.FileSystemScanner"></see> | ||
6376 | </summary> | ||
6377 | <param name="fileFilter">The <see cref="T:ICSharpCode.SharpZipLib.Core.PathFilter">file filter</see> to apply.</param> | ||
6378 | <param name="directoryFilter">The <see cref="T:ICSharpCode.SharpZipLib.Core.PathFilter"> directory filter</see> to apply.</param> | ||
6379 | </member> | ||
6380 | <member name="M:ICSharpCode.SharpZipLib.Core.FileSystemScanner.#ctor(ICSharpCode.SharpZipLib.Core.IScanFilter)"> | ||
6381 | <summary> | ||
6382 | Initialise a new instance of <see cref="T:ICSharpCode.SharpZipLib.Core.FileSystemScanner"></see> | ||
6383 | </summary> | ||
6384 | <param name="fileFilter">The file <see cref="T:ICSharpCode.SharpZipLib.Core.IScanFilter">filter</see> to apply.</param> | ||
6385 | </member> | ||
6386 | <member name="M:ICSharpCode.SharpZipLib.Core.FileSystemScanner.#ctor(ICSharpCode.SharpZipLib.Core.IScanFilter,ICSharpCode.SharpZipLib.Core.IScanFilter)"> | ||
6387 | <summary> | ||
6388 | Initialise a new instance of <see cref="T:ICSharpCode.SharpZipLib.Core.FileSystemScanner"></see> | ||
6389 | </summary> | ||
6390 | <param name="fileFilter">The file <see cref="T:ICSharpCode.SharpZipLib.Core.IScanFilter">filter</see> to apply.</param> | ||
6391 | <param name="directoryFilter">The directory <see cref="T:ICSharpCode.SharpZipLib.Core.IScanFilter">filter</see> to apply.</param> | ||
6392 | </member> | ||
6393 | <member name="F:ICSharpCode.SharpZipLib.Core.FileSystemScanner.ProcessDirectory"> | ||
6394 | <summary> | ||
6395 | Delegate to invoke when a directory is processed. | ||
6396 | </summary> | ||
6397 | </member> | ||
6398 | <member name="F:ICSharpCode.SharpZipLib.Core.FileSystemScanner.ProcessFile"> | ||
6399 | <summary> | ||
6400 | Delegate to invoke when a file is processed. | ||
6401 | </summary> | ||
6402 | </member> | ||
6403 | <member name="F:ICSharpCode.SharpZipLib.Core.FileSystemScanner.CompletedFile"> | ||
6404 | <summary> | ||
6405 | Delegate to invoke when processing for a file has finished. | ||
6406 | </summary> | ||
6407 | </member> | ||
6408 | <member name="F:ICSharpCode.SharpZipLib.Core.FileSystemScanner.DirectoryFailure"> | ||
6409 | <summary> | ||
6410 | Delegate to invoke when a directory failure is detected. | ||
6411 | </summary> | ||
6412 | </member> | ||
6413 | <member name="F:ICSharpCode.SharpZipLib.Core.FileSystemScanner.FileFailure"> | ||
6414 | <summary> | ||
6415 | Delegate to invoke when a file failure is detected. | ||
6416 | </summary> | ||
6417 | </member> | ||
6418 | <member name="M:ICSharpCode.SharpZipLib.Core.FileSystemScanner.OnDirectoryFailure(System.String,System.Exception)"> | ||
6419 | <summary> | ||
6420 | Raise the DirectoryFailure event. | ||
6421 | </summary> | ||
6422 | <param name="directory">The directory name.</param> | ||
6423 | <param name="e">The exception detected.</param> | ||
6424 | </member> | ||
6425 | <member name="M:ICSharpCode.SharpZipLib.Core.FileSystemScanner.OnFileFailure(System.String,System.Exception)"> | ||
6426 | <summary> | ||
6427 | Raise the FileFailure event. | ||
6428 | </summary> | ||
6429 | <param name="file">The file name.</param> | ||
6430 | <param name="e">The exception detected.</param> | ||
6431 | </member> | ||
6432 | <member name="M:ICSharpCode.SharpZipLib.Core.FileSystemScanner.OnProcessFile(System.String)"> | ||
6433 | <summary> | ||
6434 | Raise the ProcessFile event. | ||
6435 | </summary> | ||
6436 | <param name="file">The file name.</param> | ||
6437 | </member> | ||
6438 | <member name="M:ICSharpCode.SharpZipLib.Core.FileSystemScanner.OnCompleteFile(System.String)"> | ||
6439 | <summary> | ||
6440 | Raise the complete file event | ||
6441 | </summary> | ||
6442 | <param name="file">The file name</param> | ||
6443 | </member> | ||
6444 | <member name="M:ICSharpCode.SharpZipLib.Core.FileSystemScanner.OnProcessDirectory(System.String,System.Boolean)"> | ||
6445 | <summary> | ||
6446 | Raise the ProcessDirectory event. | ||
6447 | </summary> | ||
6448 | <param name="directory">The directory name.</param> | ||
6449 | <param name="hasMatchingFiles">Flag indicating if the directory has matching files.</param> | ||
6450 | </member> | ||
6451 | <member name="M:ICSharpCode.SharpZipLib.Core.FileSystemScanner.Scan(System.String,System.Boolean)"> | ||
6452 | <summary> | ||
6453 | Scan a directory. | ||
6454 | </summary> | ||
6455 | <param name="directory">The base directory to scan.</param> | ||
6456 | <param name="recurse">True to recurse subdirectories, false to scan a single directory.</param> | ||
6457 | </member> | ||
6458 | <member name="F:ICSharpCode.SharpZipLib.Core.FileSystemScanner.fileFilter_"> | ||
6459 | <summary> | ||
6460 | The file filter currently in use. | ||
6461 | </summary> | ||
6462 | </member> | ||
6463 | <member name="F:ICSharpCode.SharpZipLib.Core.FileSystemScanner.directoryFilter_"> | ||
6464 | <summary> | ||
6465 | The directory filter currently in use. | ||
6466 | </summary> | ||
6467 | </member> | ||
6468 | <member name="F:ICSharpCode.SharpZipLib.Core.FileSystemScanner.alive_"> | ||
6469 | <summary> | ||
6470 | Flag indicating if scanning should continue running. | ||
6471 | </summary> | ||
6472 | </member> | ||
6473 | <member name="T:ICSharpCode.SharpZipLib.Zip.Compression.Streams.InflaterInputBuffer"> | ||
6474 | <summary> | ||
6475 | An input buffer customised for use by <see cref="T:ICSharpCode.SharpZipLib.Zip.Compression.Streams.InflaterInputStream"/> | ||
6476 | </summary> | ||
6477 | <remarks> | ||
6478 | The buffer supports decryption of incoming data. | ||
6479 | </remarks> | ||
6480 | </member> | ||
6481 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.Streams.InflaterInputBuffer.#ctor(System.IO.Stream)"> | ||
6482 | <summary> | ||
6483 | Initialise a new instance of <see cref="T:ICSharpCode.SharpZipLib.Zip.Compression.Streams.InflaterInputBuffer"/> with a default buffer size | ||
6484 | </summary> | ||
6485 | <param name="stream">The stream to buffer.</param> | ||
6486 | </member> | ||
6487 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.Streams.InflaterInputBuffer.#ctor(System.IO.Stream,System.Int32)"> | ||
6488 | <summary> | ||
6489 | Initialise a new instance of <see cref="T:ICSharpCode.SharpZipLib.Zip.Compression.Streams.InflaterInputBuffer"/> | ||
6490 | </summary> | ||
6491 | <param name="stream">The stream to buffer.</param> | ||
6492 | <param name="bufferSize">The size to use for the buffer</param> | ||
6493 | <remarks>A minimum buffer size of 1KB is permitted. Lower sizes are treated as 1KB.</remarks> | ||
6494 | </member> | ||
6495 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.Streams.InflaterInputBuffer.SetInflaterInput(ICSharpCode.SharpZipLib.Zip.Compression.Inflater)"> | ||
6496 | <summary> | ||
6497 | Call <see cref="M:ICSharpCode.SharpZipLib.Zip.Compression.Inflater.SetInput(System.Byte[],System.Int32,System.Int32)"/> passing the current clear text buffer contents. | ||
6498 | </summary> | ||
6499 | <param name="inflater">The inflater to set input for.</param> | ||
6500 | </member> | ||
6501 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.Streams.InflaterInputBuffer.Fill"> | ||
6502 | <summary> | ||
6503 | Fill the buffer from the underlying input stream. | ||
6504 | </summary> | ||
6505 | </member> | ||
6506 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.Streams.InflaterInputBuffer.ReadRawBuffer(System.Byte[])"> | ||
6507 | <summary> | ||
6508 | Read a buffer directly from the input stream | ||
6509 | </summary> | ||
6510 | <param name="buffer">The buffer to fill</param> | ||
6511 | <returns>Returns the number of bytes read.</returns> | ||
6512 | </member> | ||
6513 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.Streams.InflaterInputBuffer.ReadRawBuffer(System.Byte[],System.Int32,System.Int32)"> | ||
6514 | <summary> | ||
6515 | Read a buffer directly from the input stream | ||
6516 | </summary> | ||
6517 | <param name="outBuffer">The buffer to read into</param> | ||
6518 | <param name="offset">The offset to start reading data into.</param> | ||
6519 | <param name="length">The number of bytes to read.</param> | ||
6520 | <returns>Returns the number of bytes read.</returns> | ||
6521 | </member> | ||
6522 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.Streams.InflaterInputBuffer.ReadClearTextBuffer(System.Byte[],System.Int32,System.Int32)"> | ||
6523 | <summary> | ||
6524 | Read clear text data from the input stream. | ||
6525 | </summary> | ||
6526 | <param name="outBuffer">The buffer to add data to.</param> | ||
6527 | <param name="offset">The offset to start adding data at.</param> | ||
6528 | <param name="length">The number of bytes to read.</param> | ||
6529 | <returns>Returns the number of bytes actually read.</returns> | ||
6530 | </member> | ||
6531 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.Streams.InflaterInputBuffer.ReadLeByte"> | ||
6532 | <summary> | ||
6533 | Read a <see cref="T:System.Byte"/> from the input stream. | ||
6534 | </summary> | ||
6535 | <returns>Returns the byte read.</returns> | ||
6536 | </member> | ||
6537 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.Streams.InflaterInputBuffer.ReadLeShort"> | ||
6538 | <summary> | ||
6539 | Read an <see cref="T:System.Int16"/> in little endian byte order. | ||
6540 | </summary> | ||
6541 | <returns>The short value read case to an int.</returns> | ||
6542 | </member> | ||
6543 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.Streams.InflaterInputBuffer.ReadLeInt"> | ||
6544 | <summary> | ||
6545 | Read an <see cref="T:System.Int32"/> in little endian byte order. | ||
6546 | </summary> | ||
6547 | <returns>The int value read.</returns> | ||
6548 | </member> | ||
6549 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.Streams.InflaterInputBuffer.ReadLeLong"> | ||
6550 | <summary> | ||
6551 | Read a <see cref="T:System.Int64"/> in little endian byte order. | ||
6552 | </summary> | ||
6553 | <returns>The long value read.</returns> | ||
6554 | </member> | ||
6555 | <member name="P:ICSharpCode.SharpZipLib.Zip.Compression.Streams.InflaterInputBuffer.RawLength"> | ||
6556 | <summary> | ||
6557 | Get the length of bytes bytes in the <see cref="P:ICSharpCode.SharpZipLib.Zip.Compression.Streams.InflaterInputBuffer.RawData"/> | ||
6558 | </summary> | ||
6559 | </member> | ||
6560 | <member name="P:ICSharpCode.SharpZipLib.Zip.Compression.Streams.InflaterInputBuffer.RawData"> | ||
6561 | <summary> | ||
6562 | Get the contents of the raw data buffer. | ||
6563 | </summary> | ||
6564 | <remarks>This may contain encrypted data.</remarks> | ||
6565 | </member> | ||
6566 | <member name="P:ICSharpCode.SharpZipLib.Zip.Compression.Streams.InflaterInputBuffer.ClearTextLength"> | ||
6567 | <summary> | ||
6568 | Get the number of useable bytes in <see cref="P:ICSharpCode.SharpZipLib.Zip.Compression.Streams.InflaterInputBuffer.ClearText"/> | ||
6569 | </summary> | ||
6570 | </member> | ||
6571 | <member name="P:ICSharpCode.SharpZipLib.Zip.Compression.Streams.InflaterInputBuffer.ClearText"> | ||
6572 | <summary> | ||
6573 | Get the contents of the clear text buffer. | ||
6574 | </summary> | ||
6575 | </member> | ||
6576 | <member name="P:ICSharpCode.SharpZipLib.Zip.Compression.Streams.InflaterInputBuffer.Available"> | ||
6577 | <summary> | ||
6578 | Get/set the number of bytes available | ||
6579 | </summary> | ||
6580 | </member> | ||
6581 | <member name="P:ICSharpCode.SharpZipLib.Zip.Compression.Streams.InflaterInputBuffer.CryptoTransform"> | ||
6582 | <summary> | ||
6583 | Get/set the <see cref="T:System.Security.Cryptography.ICryptoTransform"/> to apply to any data. | ||
6584 | </summary> | ||
6585 | <remarks>Set this value to null to have no transform applied.</remarks> | ||
6586 | </member> | ||
6587 | <member name="T:ICSharpCode.SharpZipLib.Tar.TarOutputStream"> | ||
6588 | <summary> | ||
6589 | The TarOutputStream writes a UNIX tar archive as an OutputStream. | ||
6590 | Methods are provided to put entries, and then write their contents | ||
6591 | by writing to this stream using write(). | ||
6592 | </summary> | ||
6593 | public | ||
6594 | </member> | ||
6595 | <member name="M:ICSharpCode.SharpZipLib.Tar.TarOutputStream.#ctor(System.IO.Stream)"> | ||
6596 | <summary> | ||
6597 | Construct TarOutputStream using default block factor | ||
6598 | </summary> | ||
6599 | <param name="outputStream">stream to write to</param> | ||
6600 | </member> | ||
6601 | <member name="M:ICSharpCode.SharpZipLib.Tar.TarOutputStream.#ctor(System.IO.Stream,System.Int32)"> | ||
6602 | <summary> | ||
6603 | Construct TarOutputStream with user specified block factor | ||
6604 | </summary> | ||
6605 | <param name="outputStream">stream to write to</param> | ||
6606 | <param name="blockFactor">blocking factor</param> | ||
6607 | </member> | ||
6608 | <member name="M:ICSharpCode.SharpZipLib.Tar.TarOutputStream.Seek(System.Int64,System.IO.SeekOrigin)"> | ||
6609 | <summary> | ||
6610 | set the position within the current stream | ||
6611 | </summary> | ||
6612 | <param name="offset">The offset relative to the <paramref name="origin"/> to seek to</param> | ||
6613 | <param name="origin">The <see cref="T:System.IO.SeekOrigin"/> to seek from.</param> | ||
6614 | <returns>The new position in the stream.</returns> | ||
6615 | </member> | ||
6616 | <member name="M:ICSharpCode.SharpZipLib.Tar.TarOutputStream.SetLength(System.Int64)"> | ||
6617 | <summary> | ||
6618 | Set the length of the current stream | ||
6619 | </summary> | ||
6620 | <param name="value">The new stream length.</param> | ||
6621 | </member> | ||
6622 | <member name="M:ICSharpCode.SharpZipLib.Tar.TarOutputStream.ReadByte"> | ||
6623 | <summary> | ||
6624 | Read a byte from the stream and advance the position within the stream | ||
6625 | by one byte or returns -1 if at the end of the stream. | ||
6626 | </summary> | ||
6627 | <returns>The byte value or -1 if at end of stream</returns> | ||
6628 | </member> | ||
6629 | <member name="M:ICSharpCode.SharpZipLib.Tar.TarOutputStream.Read(System.Byte[],System.Int32,System.Int32)"> | ||
6630 | <summary> | ||
6631 | read bytes from the current stream and advance the position within the | ||
6632 | stream by the number of bytes read. | ||
6633 | </summary> | ||
6634 | <param name="buffer">The buffer to store read bytes in.</param> | ||
6635 | <param name="offset">The index into the buffer to being storing bytes at.</param> | ||
6636 | <param name="count">The desired number of bytes to read.</param> | ||
6637 | <returns>The total number of bytes read, or zero if at the end of the stream. | ||
6638 | The number of bytes may be less than the <paramref name="count">count</paramref> | ||
6639 | requested if data is not avialable.</returns> | ||
6640 | </member> | ||
6641 | <member name="M:ICSharpCode.SharpZipLib.Tar.TarOutputStream.Flush"> | ||
6642 | <summary> | ||
6643 | All buffered data is written to destination | ||
6644 | </summary> | ||
6645 | </member> | ||
6646 | <member name="M:ICSharpCode.SharpZipLib.Tar.TarOutputStream.Finish"> | ||
6647 | <summary> | ||
6648 | Ends the TAR archive without closing the underlying OutputStream. | ||
6649 | The result is that the EOF block of nulls is written. | ||
6650 | </summary> | ||
6651 | </member> | ||
6652 | <member name="M:ICSharpCode.SharpZipLib.Tar.TarOutputStream.Close"> | ||
6653 | <summary> | ||
6654 | Ends the TAR archive and closes the underlying OutputStream. | ||
6655 | </summary> | ||
6656 | <remarks>This means that Finish() is called followed by calling the | ||
6657 | TarBuffer's Close().</remarks> | ||
6658 | </member> | ||
6659 | <member name="M:ICSharpCode.SharpZipLib.Tar.TarOutputStream.GetRecordSize"> | ||
6660 | <summary> | ||
6661 | Get the record size being used by this stream's TarBuffer. | ||
6662 | </summary> | ||
6663 | <returns> | ||
6664 | The TarBuffer record size. | ||
6665 | </returns> | ||
6666 | </member> | ||
6667 | <member name="M:ICSharpCode.SharpZipLib.Tar.TarOutputStream.PutNextEntry(ICSharpCode.SharpZipLib.Tar.TarEntry)"> | ||
6668 | <summary> | ||
6669 | Put an entry on the output stream. This writes the entry's | ||
6670 | header and positions the output stream for writing | ||
6671 | the contents of the entry. Once this method is called, the | ||
6672 | stream is ready for calls to write() to write the entry's | ||
6673 | contents. Once the contents are written, closeEntry() | ||
6674 | <B>MUST</B> be called to ensure that all buffered data | ||
6675 | is completely written to the output stream. | ||
6676 | </summary> | ||
6677 | <param name="entry"> | ||
6678 | The TarEntry to be written to the archive. | ||
6679 | </param> | ||
6680 | </member> | ||
6681 | <member name="M:ICSharpCode.SharpZipLib.Tar.TarOutputStream.CloseEntry"> | ||
6682 | <summary> | ||
6683 | Close an entry. This method MUST be called for all file | ||
6684 | entries that contain data. The reason is that we must | ||
6685 | buffer data written to the stream in order to satisfy | ||
6686 | the buffer's block based writes. Thus, there may be | ||
6687 | data fragments still being assembled that must be written | ||
6688 | to the output stream before this entry is closed and the | ||
6689 | next entry written. | ||
6690 | </summary> | ||
6691 | </member> | ||
6692 | <member name="M:ICSharpCode.SharpZipLib.Tar.TarOutputStream.WriteByte(System.Byte)"> | ||
6693 | <summary> | ||
6694 | Writes a byte to the current tar archive entry. | ||
6695 | This method simply calls Write(byte[], int, int). | ||
6696 | </summary> | ||
6697 | <param name="value"> | ||
6698 | The byte to be written. | ||
6699 | </param> | ||
6700 | </member> | ||
6701 | <member name="M:ICSharpCode.SharpZipLib.Tar.TarOutputStream.Write(System.Byte[],System.Int32,System.Int32)"> | ||
6702 | <summary> | ||
6703 | Writes bytes to the current tar archive entry. This method | ||
6704 | is aware of the current entry and will throw an exception if | ||
6705 | you attempt to write bytes past the length specified for the | ||
6706 | current entry. The method is also (painfully) aware of the | ||
6707 | record buffering required by TarBuffer, and manages buffers | ||
6708 | that are not a multiple of recordsize in length, including | ||
6709 | assembling records from small buffers. | ||
6710 | </summary> | ||
6711 | <param name = "buffer"> | ||
6712 | The buffer to write to the archive. | ||
6713 | </param> | ||
6714 | <param name = "offset"> | ||
6715 | The offset in the buffer from which to get bytes. | ||
6716 | </param> | ||
6717 | <param name = "count"> | ||
6718 | The number of bytes to write. | ||
6719 | </param> | ||
6720 | </member> | ||
6721 | <member name="M:ICSharpCode.SharpZipLib.Tar.TarOutputStream.WriteEofBlock"> | ||
6722 | <summary> | ||
6723 | Write an EOF (end of archive) block to the tar archive. | ||
6724 | An EOF block consists of all zeros. | ||
6725 | </summary> | ||
6726 | </member> | ||
6727 | <member name="F:ICSharpCode.SharpZipLib.Tar.TarOutputStream.currBytes"> | ||
6728 | <summary> | ||
6729 | bytes written for this entry so far | ||
6730 | </summary> | ||
6731 | </member> | ||
6732 | <member name="F:ICSharpCode.SharpZipLib.Tar.TarOutputStream.assemblyBufferLength"> | ||
6733 | <summary> | ||
6734 | current 'Assembly' buffer length | ||
6735 | </summary> | ||
6736 | </member> | ||
6737 | <member name="F:ICSharpCode.SharpZipLib.Tar.TarOutputStream.isClosed"> | ||
6738 | <summary> | ||
6739 | Flag indicating wether this instance has been closed or not. | ||
6740 | </summary> | ||
6741 | </member> | ||
6742 | <member name="F:ICSharpCode.SharpZipLib.Tar.TarOutputStream.currSize"> | ||
6743 | <summary> | ||
6744 | Size for the current entry | ||
6745 | </summary> | ||
6746 | </member> | ||
6747 | <member name="F:ICSharpCode.SharpZipLib.Tar.TarOutputStream.blockBuffer"> | ||
6748 | <summary> | ||
6749 | single block working buffer | ||
6750 | </summary> | ||
6751 | </member> | ||
6752 | <member name="F:ICSharpCode.SharpZipLib.Tar.TarOutputStream.assemblyBuffer"> | ||
6753 | <summary> | ||
6754 | 'Assembly' buffer used to assemble data before writing | ||
6755 | </summary> | ||
6756 | </member> | ||
6757 | <member name="F:ICSharpCode.SharpZipLib.Tar.TarOutputStream.buffer"> | ||
6758 | <summary> | ||
6759 | TarBuffer used to provide correct blocking factor | ||
6760 | </summary> | ||
6761 | </member> | ||
6762 | <member name="F:ICSharpCode.SharpZipLib.Tar.TarOutputStream.outputStream"> | ||
6763 | <summary> | ||
6764 | the destination stream for the archive contents | ||
6765 | </summary> | ||
6766 | </member> | ||
6767 | <member name="P:ICSharpCode.SharpZipLib.Tar.TarOutputStream.CanRead"> | ||
6768 | <summary> | ||
6769 | true if the stream supports reading; otherwise, false. | ||
6770 | </summary> | ||
6771 | </member> | ||
6772 | <member name="P:ICSharpCode.SharpZipLib.Tar.TarOutputStream.CanSeek"> | ||
6773 | <summary> | ||
6774 | true if the stream supports seeking; otherwise, false. | ||
6775 | </summary> | ||
6776 | </member> | ||
6777 | <member name="P:ICSharpCode.SharpZipLib.Tar.TarOutputStream.CanWrite"> | ||
6778 | <summary> | ||
6779 | true if stream supports writing; otherwise, false. | ||
6780 | </summary> | ||
6781 | </member> | ||
6782 | <member name="P:ICSharpCode.SharpZipLib.Tar.TarOutputStream.Length"> | ||
6783 | <summary> | ||
6784 | length of stream in bytes | ||
6785 | </summary> | ||
6786 | </member> | ||
6787 | <member name="P:ICSharpCode.SharpZipLib.Tar.TarOutputStream.Position"> | ||
6788 | <summary> | ||
6789 | gets or sets the position within the current stream. | ||
6790 | </summary> | ||
6791 | </member> | ||
6792 | <member name="P:ICSharpCode.SharpZipLib.Tar.TarOutputStream.RecordSize"> | ||
6793 | <summary> | ||
6794 | Get the record size being used by this stream's TarBuffer. | ||
6795 | </summary> | ||
6796 | </member> | ||
6797 | <member name="P:ICSharpCode.SharpZipLib.Tar.TarOutputStream.IsEntryOpen"> | ||
6798 | <summary> | ||
6799 | Get a value indicating wether an entry is open, requiring more data to be written. | ||
6800 | </summary> | ||
6801 | </member> | ||
6802 | <member name="T:ICSharpCode.SharpZipLib.Zip.Compression.Deflater"> | ||
6803 | <summary> | ||
6804 | This is the Deflater class. The deflater class compresses input | ||
6805 | with the deflate algorithm described in RFC 1951. It has several | ||
6806 | compression levels and three different strategies described below. | ||
6807 | |||
6808 | This class is <i>not</i> thread safe. This is inherent in the API, due | ||
6809 | to the split of deflate and setInput. | ||
6810 | |||
6811 | author of the original java version : Jochen Hoenicke | ||
6812 | </summary> | ||
6813 | </member> | ||
6814 | <member name="F:ICSharpCode.SharpZipLib.Zip.Compression.Deflater.BEST_COMPRESSION"> | ||
6815 | <summary> | ||
6816 | The best and slowest compression level. This tries to find very | ||
6817 | long and distant string repetitions. | ||
6818 | </summary> | ||
6819 | </member> | ||
6820 | <member name="F:ICSharpCode.SharpZipLib.Zip.Compression.Deflater.BEST_SPEED"> | ||
6821 | <summary> | ||
6822 | The worst but fastest compression level. | ||
6823 | </summary> | ||
6824 | </member> | ||
6825 | <member name="F:ICSharpCode.SharpZipLib.Zip.Compression.Deflater.DEFAULT_COMPRESSION"> | ||
6826 | <summary> | ||
6827 | The default compression level. | ||
6828 | </summary> | ||
6829 | </member> | ||
6830 | <member name="F:ICSharpCode.SharpZipLib.Zip.Compression.Deflater.NO_COMPRESSION"> | ||
6831 | <summary> | ||
6832 | This level won't compress at all but output uncompressed blocks. | ||
6833 | </summary> | ||
6834 | </member> | ||
6835 | <member name="F:ICSharpCode.SharpZipLib.Zip.Compression.Deflater.DEFLATED"> | ||
6836 | <summary> | ||
6837 | The compression method. This is the only method supported so far. | ||
6838 | There is no need to use this constant at all. | ||
6839 | </summary> | ||
6840 | </member> | ||
6841 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.Deflater.#ctor"> | ||
6842 | <summary> | ||
6843 | Creates a new deflater with default compression level. | ||
6844 | </summary> | ||
6845 | </member> | ||
6846 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.Deflater.#ctor(System.Int32)"> | ||
6847 | <summary> | ||
6848 | Creates a new deflater with given compression level. | ||
6849 | </summary> | ||
6850 | <param name="level"> | ||
6851 | the compression level, a value between NO_COMPRESSION | ||
6852 | and BEST_COMPRESSION, or DEFAULT_COMPRESSION. | ||
6853 | </param> | ||
6854 | <exception cref="T:System.ArgumentOutOfRangeException">if lvl is out of range.</exception> | ||
6855 | </member> | ||
6856 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.Deflater.#ctor(System.Int32,System.Boolean)"> | ||
6857 | <summary> | ||
6858 | Creates a new deflater with given compression level. | ||
6859 | </summary> | ||
6860 | <param name="level"> | ||
6861 | the compression level, a value between NO_COMPRESSION | ||
6862 | and BEST_COMPRESSION. | ||
6863 | </param> | ||
6864 | <param name="noZlibHeaderOrFooter"> | ||
6865 | true, if we should suppress the Zlib/RFC1950 header at the | ||
6866 | beginning and the adler checksum at the end of the output. This is | ||
6867 | useful for the GZIP/PKZIP formats. | ||
6868 | </param> | ||
6869 | <exception cref="T:System.ArgumentOutOfRangeException">if lvl is out of range.</exception> | ||
6870 | </member> | ||
6871 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.Deflater.Reset"> | ||
6872 | <summary> | ||
6873 | Resets the deflater. The deflater acts afterwards as if it was | ||
6874 | just created with the same compression level and strategy as it | ||
6875 | had before. | ||
6876 | </summary> | ||
6877 | </member> | ||
6878 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.Deflater.Flush"> | ||
6879 | <summary> | ||
6880 | Flushes the current input block. Further calls to deflate() will | ||
6881 | produce enough output to inflate everything in the current input | ||
6882 | block. This is not part of Sun's JDK so I have made it package | ||
6883 | private. It is used by DeflaterOutputStream to implement | ||
6884 | flush(). | ||
6885 | </summary> | ||
6886 | </member> | ||
6887 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.Deflater.Finish"> | ||
6888 | <summary> | ||
6889 | Finishes the deflater with the current input block. It is an error | ||
6890 | to give more input after this method was called. This method must | ||
6891 | be called to force all bytes to be flushed. | ||
6892 | </summary> | ||
6893 | </member> | ||
6894 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.Deflater.SetInput(System.Byte[])"> | ||
6895 | <summary> | ||
6896 | Sets the data which should be compressed next. This should be only | ||
6897 | called when needsInput indicates that more input is needed. | ||
6898 | If you call setInput when needsInput() returns false, the | ||
6899 | previous input that is still pending will be thrown away. | ||
6900 | The given byte array should not be changed, before needsInput() returns | ||
6901 | true again. | ||
6902 | This call is equivalent to <code>setInput(input, 0, input.length)</code>. | ||
6903 | </summary> | ||
6904 | <param name="input"> | ||
6905 | the buffer containing the input data. | ||
6906 | </param> | ||
6907 | <exception cref="T:System.InvalidOperationException"> | ||
6908 | if the buffer was finished() or ended(). | ||
6909 | </exception> | ||
6910 | </member> | ||
6911 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.Deflater.SetInput(System.Byte[],System.Int32,System.Int32)"> | ||
6912 | <summary> | ||
6913 | Sets the data which should be compressed next. This should be | ||
6914 | only called when needsInput indicates that more input is needed. | ||
6915 | The given byte array should not be changed, before needsInput() returns | ||
6916 | true again. | ||
6917 | </summary> | ||
6918 | <param name="input"> | ||
6919 | the buffer containing the input data. | ||
6920 | </param> | ||
6921 | <param name="offset"> | ||
6922 | the start of the data. | ||
6923 | </param> | ||
6924 | <param name="count"> | ||
6925 | the number of data bytes of input. | ||
6926 | </param> | ||
6927 | <exception cref="T:System.InvalidOperationException"> | ||
6928 | if the buffer was Finish()ed or if previous input is still pending. | ||
6929 | </exception> | ||
6930 | </member> | ||
6931 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.Deflater.SetLevel(System.Int32)"> | ||
6932 | <summary> | ||
6933 | Sets the compression level. There is no guarantee of the exact | ||
6934 | position of the change, but if you call this when needsInput is | ||
6935 | true the change of compression level will occur somewhere near | ||
6936 | before the end of the so far given input. | ||
6937 | </summary> | ||
6938 | <param name="level"> | ||
6939 | the new compression level. | ||
6940 | </param> | ||
6941 | </member> | ||
6942 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.Deflater.GetLevel"> | ||
6943 | <summary> | ||
6944 | Get current compression level | ||
6945 | </summary> | ||
6946 | <returns>Returns the current compression level</returns> | ||
6947 | </member> | ||
6948 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.Deflater.SetStrategy(ICSharpCode.SharpZipLib.Zip.Compression.DeflateStrategy)"> | ||
6949 | <summary> | ||
6950 | Sets the compression strategy. Strategy is one of | ||
6951 | DEFAULT_STRATEGY, HUFFMAN_ONLY and FILTERED. For the exact | ||
6952 | position where the strategy is changed, the same as for | ||
6953 | SetLevel() applies. | ||
6954 | </summary> | ||
6955 | <param name="strategy"> | ||
6956 | The new compression strategy. | ||
6957 | </param> | ||
6958 | </member> | ||
6959 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.Deflater.Deflate(System.Byte[])"> | ||
6960 | <summary> | ||
6961 | Deflates the current input block with to the given array. | ||
6962 | </summary> | ||
6963 | <param name="output"> | ||
6964 | The buffer where compressed data is stored | ||
6965 | </param> | ||
6966 | <returns> | ||
6967 | The number of compressed bytes added to the output, or 0 if either | ||
6968 | IsNeedingInput() or IsFinished returns true or length is zero. | ||
6969 | </returns> | ||
6970 | </member> | ||
6971 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.Deflater.Deflate(System.Byte[],System.Int32,System.Int32)"> | ||
6972 | <summary> | ||
6973 | Deflates the current input block to the given array. | ||
6974 | </summary> | ||
6975 | <param name="output"> | ||
6976 | Buffer to store the compressed data. | ||
6977 | </param> | ||
6978 | <param name="offset"> | ||
6979 | Offset into the output array. | ||
6980 | </param> | ||
6981 | <param name="length"> | ||
6982 | The maximum number of bytes that may be stored. | ||
6983 | </param> | ||
6984 | <returns> | ||
6985 | The number of compressed bytes added to the output, or 0 if either | ||
6986 | needsInput() or finished() returns true or length is zero. | ||
6987 | </returns> | ||
6988 | <exception cref="T:System.InvalidOperationException"> | ||
6989 | If Finish() was previously called. | ||
6990 | </exception> | ||
6991 | <exception cref="T:System.ArgumentOutOfRangeException"> | ||
6992 | If offset or length don't match the array length. | ||
6993 | </exception> | ||
6994 | </member> | ||
6995 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.Deflater.SetDictionary(System.Byte[])"> | ||
6996 | <summary> | ||
6997 | Sets the dictionary which should be used in the deflate process. | ||
6998 | This call is equivalent to <code>setDictionary(dict, 0, dict.Length)</code>. | ||
6999 | </summary> | ||
7000 | <param name="dictionary"> | ||
7001 | the dictionary. | ||
7002 | </param> | ||
7003 | <exception cref="T:System.InvalidOperationException"> | ||
7004 | if SetInput () or Deflate () were already called or another dictionary was already set. | ||
7005 | </exception> | ||
7006 | </member> | ||
7007 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.Deflater.SetDictionary(System.Byte[],System.Int32,System.Int32)"> | ||
7008 | <summary> | ||
7009 | Sets the dictionary which should be used in the deflate process. | ||
7010 | The dictionary is a byte array containing strings that are | ||
7011 | likely to occur in the data which should be compressed. The | ||
7012 | dictionary is not stored in the compressed output, only a | ||
7013 | checksum. To decompress the output you need to supply the same | ||
7014 | dictionary again. | ||
7015 | </summary> | ||
7016 | <param name="dictionary"> | ||
7017 | The dictionary data | ||
7018 | </param> | ||
7019 | <param name="index"> | ||
7020 | The index where dictionary information commences. | ||
7021 | </param> | ||
7022 | <param name="count"> | ||
7023 | The number of bytes in the dictionary. | ||
7024 | </param> | ||
7025 | <exception cref="T:System.InvalidOperationException"> | ||
7026 | If SetInput () or Deflate() were already called or another dictionary was already set. | ||
7027 | </exception> | ||
7028 | </member> | ||
7029 | <member name="F:ICSharpCode.SharpZipLib.Zip.Compression.Deflater.level"> | ||
7030 | <summary> | ||
7031 | Compression level. | ||
7032 | </summary> | ||
7033 | </member> | ||
7034 | <member name="F:ICSharpCode.SharpZipLib.Zip.Compression.Deflater.noZlibHeaderOrFooter"> | ||
7035 | <summary> | ||
7036 | If true no Zlib/RFC1950 headers or footers are generated | ||
7037 | </summary> | ||
7038 | </member> | ||
7039 | <member name="F:ICSharpCode.SharpZipLib.Zip.Compression.Deflater.state"> | ||
7040 | <summary> | ||
7041 | The current state. | ||
7042 | </summary> | ||
7043 | </member> | ||
7044 | <member name="F:ICSharpCode.SharpZipLib.Zip.Compression.Deflater.totalOut"> | ||
7045 | <summary> | ||
7046 | The total bytes of output written. | ||
7047 | </summary> | ||
7048 | </member> | ||
7049 | <member name="F:ICSharpCode.SharpZipLib.Zip.Compression.Deflater.pending"> | ||
7050 | <summary> | ||
7051 | The pending output. | ||
7052 | </summary> | ||
7053 | </member> | ||
7054 | <member name="F:ICSharpCode.SharpZipLib.Zip.Compression.Deflater.engine"> | ||
7055 | <summary> | ||
7056 | The deflater engine. | ||
7057 | </summary> | ||
7058 | </member> | ||
7059 | <member name="P:ICSharpCode.SharpZipLib.Zip.Compression.Deflater.Adler"> | ||
7060 | <summary> | ||
7061 | Gets the current adler checksum of the data that was processed so far. | ||
7062 | </summary> | ||
7063 | </member> | ||
7064 | <member name="P:ICSharpCode.SharpZipLib.Zip.Compression.Deflater.TotalIn"> | ||
7065 | <summary> | ||
7066 | Gets the number of input bytes processed so far. | ||
7067 | </summary> | ||
7068 | </member> | ||
7069 | <member name="P:ICSharpCode.SharpZipLib.Zip.Compression.Deflater.TotalOut"> | ||
7070 | <summary> | ||
7071 | Gets the number of output bytes so far. | ||
7072 | </summary> | ||
7073 | </member> | ||
7074 | <member name="P:ICSharpCode.SharpZipLib.Zip.Compression.Deflater.IsFinished"> | ||
7075 | <summary> | ||
7076 | Returns true if the stream was finished and no more output bytes | ||
7077 | are available. | ||
7078 | </summary> | ||
7079 | </member> | ||
7080 | <member name="P:ICSharpCode.SharpZipLib.Zip.Compression.Deflater.IsNeedingInput"> | ||
7081 | <summary> | ||
7082 | Returns true, if the input buffer is empty. | ||
7083 | You should then call setInput(). | ||
7084 | NOTE: This method can also return true when the stream | ||
7085 | was finished. | ||
7086 | </summary> | ||
7087 | </member> | ||
7088 | <member name="T:ICSharpCode.SharpZipLib.Tar.TarInputStream"> | ||
7089 | <summary> | ||
7090 | The TarInputStream reads a UNIX tar archive as an InputStream. | ||
7091 | methods are provided to position at each successive entry in | ||
7092 | the archive, and the read each entry as a normal input stream | ||
7093 | using read(). | ||
7094 | </summary> | ||
7095 | </member> | ||
7096 | <member name="M:ICSharpCode.SharpZipLib.Tar.TarInputStream.#ctor(System.IO.Stream)"> | ||
7097 | <summary> | ||
7098 | Construct a TarInputStream with default block factor | ||
7099 | </summary> | ||
7100 | <param name="inputStream">stream to source data from</param> | ||
7101 | </member> | ||
7102 | <member name="M:ICSharpCode.SharpZipLib.Tar.TarInputStream.#ctor(System.IO.Stream,System.Int32)"> | ||
7103 | <summary> | ||
7104 | Construct a TarInputStream with user specified block factor | ||
7105 | </summary> | ||
7106 | <param name="inputStream">stream to source data from</param> | ||
7107 | <param name="blockFactor">block factor to apply to archive</param> | ||
7108 | </member> | ||
7109 | <member name="M:ICSharpCode.SharpZipLib.Tar.TarInputStream.Flush"> | ||
7110 | <summary> | ||
7111 | Flushes the baseInputStream | ||
7112 | </summary> | ||
7113 | </member> | ||
7114 | <member name="M:ICSharpCode.SharpZipLib.Tar.TarInputStream.Seek(System.Int64,System.IO.SeekOrigin)"> | ||
7115 | <summary> | ||
7116 | Set the streams position. This operation is not supported and will throw a NotSupportedException | ||
7117 | </summary> | ||
7118 | <param name="offset">The offset relative to the origin to seek to.</param> | ||
7119 | <param name="origin">The <see cref="T:System.IO.SeekOrigin"/> to start seeking from.</param> | ||
7120 | <returns>The new position in the stream.</returns> | ||
7121 | <exception cref="T:System.NotSupportedException">Any access</exception> | ||
7122 | </member> | ||
7123 | <member name="M:ICSharpCode.SharpZipLib.Tar.TarInputStream.SetLength(System.Int64)"> | ||
7124 | <summary> | ||
7125 | Sets the length of the stream | ||
7126 | This operation is not supported and will throw a NotSupportedException | ||
7127 | </summary> | ||
7128 | <param name="value">The new stream length.</param> | ||
7129 | <exception cref="T:System.NotSupportedException">Any access</exception> | ||
7130 | </member> | ||
7131 | <member name="M:ICSharpCode.SharpZipLib.Tar.TarInputStream.Write(System.Byte[],System.Int32,System.Int32)"> | ||
7132 | <summary> | ||
7133 | Writes a block of bytes to this stream using data from a buffer. | ||
7134 | This operation is not supported and will throw a NotSupportedException | ||
7135 | </summary> | ||
7136 | <param name="buffer">The buffer containing bytes to write.</param> | ||
7137 | <param name="offset">The offset in the buffer of the frist byte to write.</param> | ||
7138 | <param name="count">The number of bytes to write.</param> | ||
7139 | <exception cref="T:System.NotSupportedException">Any access</exception> | ||
7140 | </member> | ||
7141 | <member name="M:ICSharpCode.SharpZipLib.Tar.TarInputStream.WriteByte(System.Byte)"> | ||
7142 | <summary> | ||
7143 | Writes a byte to the current position in the file stream. | ||
7144 | This operation is not supported and will throw a NotSupportedException | ||
7145 | </summary> | ||
7146 | <param name="value">The byte value to write.</param> | ||
7147 | <exception cref="T:System.NotSupportedException">Any access</exception> | ||
7148 | </member> | ||
7149 | <member name="M:ICSharpCode.SharpZipLib.Tar.TarInputStream.ReadByte"> | ||
7150 | <summary> | ||
7151 | Reads a byte from the current tar archive entry. | ||
7152 | </summary> | ||
7153 | <returns>A byte cast to an int; -1 if the at the end of the stream.</returns> | ||
7154 | </member> | ||
7155 | <member name="M:ICSharpCode.SharpZipLib.Tar.TarInputStream.Read(System.Byte[],System.Int32,System.Int32)"> | ||
7156 | <summary> | ||
7157 | Reads bytes from the current tar archive entry. | ||
7158 | |||
7159 | This method is aware of the boundaries of the current | ||
7160 | entry in the archive and will deal with them appropriately | ||
7161 | </summary> | ||
7162 | <param name="buffer"> | ||
7163 | The buffer into which to place bytes read. | ||
7164 | </param> | ||
7165 | <param name="offset"> | ||
7166 | The offset at which to place bytes read. | ||
7167 | </param> | ||
7168 | <param name="count"> | ||
7169 | The number of bytes to read. | ||
7170 | </param> | ||
7171 | <returns> | ||
7172 | The number of bytes read, or 0 at end of stream/EOF. | ||
7173 | </returns> | ||
7174 | </member> | ||
7175 | <member name="M:ICSharpCode.SharpZipLib.Tar.TarInputStream.Close"> | ||
7176 | <summary> | ||
7177 | Closes this stream. Calls the TarBuffer's close() method. | ||
7178 | The underlying stream is closed by the TarBuffer. | ||
7179 | </summary> | ||
7180 | </member> | ||
7181 | <member name="M:ICSharpCode.SharpZipLib.Tar.TarInputStream.SetEntryFactory(ICSharpCode.SharpZipLib.Tar.TarInputStream.IEntryFactory)"> | ||
7182 | <summary> | ||
7183 | Set the entry factory for this instance. | ||
7184 | </summary> | ||
7185 | <param name="factory">The factory for creating new entries</param> | ||
7186 | </member> | ||
7187 | <member name="M:ICSharpCode.SharpZipLib.Tar.TarInputStream.GetRecordSize"> | ||
7188 | <summary> | ||
7189 | Get the record size being used by this stream's TarBuffer. | ||
7190 | </summary> | ||
7191 | <returns> | ||
7192 | TarBuffer record size. | ||
7193 | </returns> | ||
7194 | </member> | ||
7195 | <member name="M:ICSharpCode.SharpZipLib.Tar.TarInputStream.Skip(System.Int64)"> | ||
7196 | <summary> | ||
7197 | Skip bytes in the input buffer. This skips bytes in the | ||
7198 | current entry's data, not the entire archive, and will | ||
7199 | stop at the end of the current entry's data if the number | ||
7200 | to skip extends beyond that point. | ||
7201 | </summary> | ||
7202 | <param name="skipCount"> | ||
7203 | The number of bytes to skip. | ||
7204 | </param> | ||
7205 | </member> | ||
7206 | <member name="M:ICSharpCode.SharpZipLib.Tar.TarInputStream.Mark(System.Int32)"> | ||
7207 | <summary> | ||
7208 | Since we do not support marking just yet, we do nothing. | ||
7209 | </summary> | ||
7210 | <param name ="markLimit"> | ||
7211 | The limit to mark. | ||
7212 | </param> | ||
7213 | </member> | ||
7214 | <member name="M:ICSharpCode.SharpZipLib.Tar.TarInputStream.Reset"> | ||
7215 | <summary> | ||
7216 | Since we do not support marking just yet, we do nothing. | ||
7217 | </summary> | ||
7218 | </member> | ||
7219 | <member name="M:ICSharpCode.SharpZipLib.Tar.TarInputStream.GetNextEntry"> | ||
7220 | <summary> | ||
7221 | Get the next entry in this tar archive. This will skip | ||
7222 | over any remaining data in the current entry, if there | ||
7223 | is one, and place the input stream at the header of the | ||
7224 | next entry, and read the header and instantiate a new | ||
7225 | TarEntry from the header bytes and return that entry. | ||
7226 | If there are no more entries in the archive, null will | ||
7227 | be returned to indicate that the end of the archive has | ||
7228 | been reached. | ||
7229 | </summary> | ||
7230 | <returns> | ||
7231 | The next TarEntry in the archive, or null. | ||
7232 | </returns> | ||
7233 | </member> | ||
7234 | <member name="M:ICSharpCode.SharpZipLib.Tar.TarInputStream.CopyEntryContents(System.IO.Stream)"> | ||
7235 | <summary> | ||
7236 | Copies the contents of the current tar archive entry directly into | ||
7237 | an output stream. | ||
7238 | </summary> | ||
7239 | <param name="outputStream"> | ||
7240 | The OutputStream into which to write the entry's data. | ||
7241 | </param> | ||
7242 | </member> | ||
7243 | <member name="F:ICSharpCode.SharpZipLib.Tar.TarInputStream.hasHitEOF"> | ||
7244 | <summary> | ||
7245 | Flag set when last block has been read | ||
7246 | </summary> | ||
7247 | </member> | ||
7248 | <member name="F:ICSharpCode.SharpZipLib.Tar.TarInputStream.entrySize"> | ||
7249 | <summary> | ||
7250 | Size of this entry as recorded in header | ||
7251 | </summary> | ||
7252 | </member> | ||
7253 | <member name="F:ICSharpCode.SharpZipLib.Tar.TarInputStream.entryOffset"> | ||
7254 | <summary> | ||
7255 | Number of bytes read for this entry so far | ||
7256 | </summary> | ||
7257 | </member> | ||
7258 | <member name="F:ICSharpCode.SharpZipLib.Tar.TarInputStream.readBuffer"> | ||
7259 | <summary> | ||
7260 | Buffer used with calls to <code>Read()</code> | ||
7261 | </summary> | ||
7262 | </member> | ||
7263 | <member name="F:ICSharpCode.SharpZipLib.Tar.TarInputStream.buffer"> | ||
7264 | <summary> | ||
7265 | Working buffer | ||
7266 | </summary> | ||
7267 | </member> | ||
7268 | <member name="F:ICSharpCode.SharpZipLib.Tar.TarInputStream.currentEntry"> | ||
7269 | <summary> | ||
7270 | Current entry being read | ||
7271 | </summary> | ||
7272 | </member> | ||
7273 | <member name="F:ICSharpCode.SharpZipLib.Tar.TarInputStream.entryFactory"> | ||
7274 | <summary> | ||
7275 | Factory used to create TarEntry or descendant class instance | ||
7276 | </summary> | ||
7277 | </member> | ||
7278 | <member name="F:ICSharpCode.SharpZipLib.Tar.TarInputStream.inputStream"> | ||
7279 | <summary> | ||
7280 | Stream used as the source of input data. | ||
7281 | </summary> | ||
7282 | </member> | ||
7283 | <member name="P:ICSharpCode.SharpZipLib.Tar.TarInputStream.CanRead"> | ||
7284 | <summary> | ||
7285 | Gets a value indicating whether the current stream supports reading | ||
7286 | </summary> | ||
7287 | </member> | ||
7288 | <member name="P:ICSharpCode.SharpZipLib.Tar.TarInputStream.CanSeek"> | ||
7289 | <summary> | ||
7290 | Gets a value indicating whether the current stream supports seeking | ||
7291 | This property always returns false. | ||
7292 | </summary> | ||
7293 | </member> | ||
7294 | <member name="P:ICSharpCode.SharpZipLib.Tar.TarInputStream.CanWrite"> | ||
7295 | <summary> | ||
7296 | Gets a value indicating if the stream supports writing. | ||
7297 | This property always returns false. | ||
7298 | </summary> | ||
7299 | </member> | ||
7300 | <member name="P:ICSharpCode.SharpZipLib.Tar.TarInputStream.Length"> | ||
7301 | <summary> | ||
7302 | The length in bytes of the stream | ||
7303 | </summary> | ||
7304 | </member> | ||
7305 | <member name="P:ICSharpCode.SharpZipLib.Tar.TarInputStream.Position"> | ||
7306 | <summary> | ||
7307 | Gets or sets the position within the stream. | ||
7308 | Setting the Position is not supported and throws a NotSupportedExceptionNotSupportedException | ||
7309 | </summary> | ||
7310 | <exception cref="T:System.NotSupportedException">Any attempt to set position</exception> | ||
7311 | </member> | ||
7312 | <member name="P:ICSharpCode.SharpZipLib.Tar.TarInputStream.RecordSize"> | ||
7313 | <summary> | ||
7314 | Get the record size being used by this stream's TarBuffer. | ||
7315 | </summary> | ||
7316 | </member> | ||
7317 | <member name="P:ICSharpCode.SharpZipLib.Tar.TarInputStream.Available"> | ||
7318 | <summary> | ||
7319 | Get the available data that can be read from the current | ||
7320 | entry in the archive. This does not indicate how much data | ||
7321 | is left in the entire archive, only in the current entry. | ||
7322 | This value is determined from the entry's size header field | ||
7323 | and the amount of data already read from the current entry. | ||
7324 | </summary> | ||
7325 | <returns> | ||
7326 | The number of available bytes for the current entry. | ||
7327 | </returns> | ||
7328 | </member> | ||
7329 | <member name="P:ICSharpCode.SharpZipLib.Tar.TarInputStream.IsMarkSupported"> | ||
7330 | <summary> | ||
7331 | Return a value of true if marking is supported; false otherwise. | ||
7332 | </summary> | ||
7333 | <remarks>Currently marking is not supported, the return value is always false.</remarks> | ||
7334 | </member> | ||
7335 | <member name="T:ICSharpCode.SharpZipLib.Tar.TarInputStream.IEntryFactory"> | ||
7336 | <summary> | ||
7337 | This interface is provided, along with the method <see cref="M:ICSharpCode.SharpZipLib.Tar.TarInputStream.SetEntryFactory(ICSharpCode.SharpZipLib.Tar.TarInputStream.IEntryFactory)"/>, to allow | ||
7338 | the programmer to have their own <see cref="T:ICSharpCode.SharpZipLib.Tar.TarEntry"/> subclass instantiated for the | ||
7339 | entries return from <see cref="M:ICSharpCode.SharpZipLib.Tar.TarInputStream.GetNextEntry"/>. | ||
7340 | </summary> | ||
7341 | </member> | ||
7342 | <member name="M:ICSharpCode.SharpZipLib.Tar.TarInputStream.IEntryFactory.CreateEntry(System.String)"> | ||
7343 | <summary> | ||
7344 | Create an entry based on name alone | ||
7345 | </summary> | ||
7346 | <param name="name"> | ||
7347 | Name of the new EntryPointNotFoundException to create | ||
7348 | </param> | ||
7349 | <returns>created TarEntry or descendant class</returns> | ||
7350 | </member> | ||
7351 | <member name="M:ICSharpCode.SharpZipLib.Tar.TarInputStream.IEntryFactory.CreateEntryFromFile(System.String)"> | ||
7352 | <summary> | ||
7353 | Create an instance based on an actual file | ||
7354 | </summary> | ||
7355 | <param name="fileName"> | ||
7356 | Name of file to represent in the entry | ||
7357 | </param> | ||
7358 | <returns> | ||
7359 | Created TarEntry or descendant class | ||
7360 | </returns> | ||
7361 | </member> | ||
7362 | <member name="M:ICSharpCode.SharpZipLib.Tar.TarInputStream.IEntryFactory.CreateEntry(System.Byte[])"> | ||
7363 | <summary> | ||
7364 | Create a tar entry based on the header information passed | ||
7365 | </summary> | ||
7366 | <param name="headerBuf"> | ||
7367 | Buffer containing header information to base entry on | ||
7368 | </param> | ||
7369 | <returns> | ||
7370 | Created TarEntry or descendant class | ||
7371 | </returns> | ||
7372 | </member> | ||
7373 | <member name="T:ICSharpCode.SharpZipLib.Tar.TarInputStream.EntryFactoryAdapter"> | ||
7374 | <summary> | ||
7375 | Standard entry factory class creating instances of the class TarEntry | ||
7376 | </summary> | ||
7377 | </member> | ||
7378 | <member name="M:ICSharpCode.SharpZipLib.Tar.TarInputStream.EntryFactoryAdapter.CreateEntry(System.String)"> | ||
7379 | <summary> | ||
7380 | Create a <see cref="T:ICSharpCode.SharpZipLib.Tar.TarEntry"/> based on named | ||
7381 | </summary> | ||
7382 | <param name="name">The name to use for the entry</param> | ||
7383 | <returns>A new <see cref="T:ICSharpCode.SharpZipLib.Tar.TarEntry"/></returns> | ||
7384 | </member> | ||
7385 | <member name="M:ICSharpCode.SharpZipLib.Tar.TarInputStream.EntryFactoryAdapter.CreateEntryFromFile(System.String)"> | ||
7386 | <summary> | ||
7387 | Create a tar entry with details obtained from <paramref name="fileName">file</paramref> | ||
7388 | </summary> | ||
7389 | <param name="fileName">The name of the file to retrieve details from.</param> | ||
7390 | <returns>A new <see cref="T:ICSharpCode.SharpZipLib.Tar.TarEntry"/></returns> | ||
7391 | </member> | ||
7392 | <member name="M:ICSharpCode.SharpZipLib.Tar.TarInputStream.EntryFactoryAdapter.CreateEntry(System.Byte[])"> | ||
7393 | <summary> | ||
7394 | Create an entry based on details in <paramref name="headerBuf">header</paramref> | ||
7395 | </summary> | ||
7396 | <param name="headerBuffer">The buffer containing entry details.</param> | ||
7397 | <returns>A new <see cref="T:ICSharpCode.SharpZipLib.Tar.TarEntry"/></returns> | ||
7398 | </member> | ||
7399 | <member name="T:ICSharpCode.SharpZipLib.Zip.HostSystemID"> | ||
7400 | <summary> | ||
7401 | Defines known values for the <see cref="T:ICSharpCode.SharpZipLib.Zip.HostSystemID"/> property. | ||
7402 | </summary> | ||
7403 | </member> | ||
7404 | <member name="F:ICSharpCode.SharpZipLib.Zip.HostSystemID.Msdos"> | ||
7405 | <summary> | ||
7406 | Host system = MSDOS | ||
7407 | </summary> | ||
7408 | </member> | ||
7409 | <member name="F:ICSharpCode.SharpZipLib.Zip.HostSystemID.Amiga"> | ||
7410 | <summary> | ||
7411 | Host system = Amiga | ||
7412 | </summary> | ||
7413 | </member> | ||
7414 | <member name="F:ICSharpCode.SharpZipLib.Zip.HostSystemID.OpenVms"> | ||
7415 | <summary> | ||
7416 | Host system = Open VMS | ||
7417 | </summary> | ||
7418 | </member> | ||
7419 | <member name="F:ICSharpCode.SharpZipLib.Zip.HostSystemID.Unix"> | ||
7420 | <summary> | ||
7421 | Host system = Unix | ||
7422 | </summary> | ||
7423 | </member> | ||
7424 | <member name="F:ICSharpCode.SharpZipLib.Zip.HostSystemID.VMCms"> | ||
7425 | <summary> | ||
7426 | Host system = VMCms | ||
7427 | </summary> | ||
7428 | </member> | ||
7429 | <member name="F:ICSharpCode.SharpZipLib.Zip.HostSystemID.AtariST"> | ||
7430 | <summary> | ||
7431 | Host system = Atari ST | ||
7432 | </summary> | ||
7433 | </member> | ||
7434 | <member name="F:ICSharpCode.SharpZipLib.Zip.HostSystemID.OS2"> | ||
7435 | <summary> | ||
7436 | Host system = OS2 | ||
7437 | </summary> | ||
7438 | </member> | ||
7439 | <member name="F:ICSharpCode.SharpZipLib.Zip.HostSystemID.Macintosh"> | ||
7440 | <summary> | ||
7441 | Host system = Macintosh | ||
7442 | </summary> | ||
7443 | </member> | ||
7444 | <member name="F:ICSharpCode.SharpZipLib.Zip.HostSystemID.ZSystem"> | ||
7445 | <summary> | ||
7446 | Host system = ZSystem | ||
7447 | </summary> | ||
7448 | </member> | ||
7449 | <member name="F:ICSharpCode.SharpZipLib.Zip.HostSystemID.Cpm"> | ||
7450 | <summary> | ||
7451 | Host system = Cpm | ||
7452 | </summary> | ||
7453 | </member> | ||
7454 | <member name="F:ICSharpCode.SharpZipLib.Zip.HostSystemID.WindowsNT"> | ||
7455 | <summary> | ||
7456 | Host system = Windows NT | ||
7457 | </summary> | ||
7458 | </member> | ||
7459 | <member name="F:ICSharpCode.SharpZipLib.Zip.HostSystemID.MVS"> | ||
7460 | <summary> | ||
7461 | Host system = MVS | ||
7462 | </summary> | ||
7463 | </member> | ||
7464 | <member name="F:ICSharpCode.SharpZipLib.Zip.HostSystemID.Vse"> | ||
7465 | <summary> | ||
7466 | Host system = VSE | ||
7467 | </summary> | ||
7468 | </member> | ||
7469 | <member name="F:ICSharpCode.SharpZipLib.Zip.HostSystemID.AcornRisc"> | ||
7470 | <summary> | ||
7471 | Host system = Acorn RISC | ||
7472 | </summary> | ||
7473 | </member> | ||
7474 | <member name="F:ICSharpCode.SharpZipLib.Zip.HostSystemID.Vfat"> | ||
7475 | <summary> | ||
7476 | Host system = VFAT | ||
7477 | </summary> | ||
7478 | </member> | ||
7479 | <member name="F:ICSharpCode.SharpZipLib.Zip.HostSystemID.AlternateMvs"> | ||
7480 | <summary> | ||
7481 | Host system = Alternate MVS | ||
7482 | </summary> | ||
7483 | </member> | ||
7484 | <member name="F:ICSharpCode.SharpZipLib.Zip.HostSystemID.BeOS"> | ||
7485 | <summary> | ||
7486 | Host system = BEOS | ||
7487 | </summary> | ||
7488 | </member> | ||
7489 | <member name="F:ICSharpCode.SharpZipLib.Zip.HostSystemID.Tandem"> | ||
7490 | <summary> | ||
7491 | Host system = Tandem | ||
7492 | </summary> | ||
7493 | </member> | ||
7494 | <member name="F:ICSharpCode.SharpZipLib.Zip.HostSystemID.OS400"> | ||
7495 | <summary> | ||
7496 | Host system = OS400 | ||
7497 | </summary> | ||
7498 | </member> | ||
7499 | <member name="F:ICSharpCode.SharpZipLib.Zip.HostSystemID.OSX"> | ||
7500 | <summary> | ||
7501 | Host system = OSX | ||
7502 | </summary> | ||
7503 | </member> | ||
7504 | <member name="F:ICSharpCode.SharpZipLib.Zip.HostSystemID.WinZipAES"> | ||
7505 | <summary> | ||
7506 | Host system = WinZIP AES | ||
7507 | </summary> | ||
7508 | </member> | ||
7509 | <member name="T:ICSharpCode.SharpZipLib.Zip.ZipEntry"> | ||
7510 | <summary> | ||
7511 | This class represents an entry in a zip archive. This can be a file | ||
7512 | or a directory | ||
7513 | ZipFile and ZipInputStream will give you instances of this class as | ||
7514 | information about the members in an archive. ZipOutputStream | ||
7515 | uses an instance of this class when creating an entry in a Zip file. | ||
7516 | <br/> | ||
7517 | <br/>Author of the original java version : Jochen Hoenicke | ||
7518 | </summary> | ||
7519 | </member> | ||
7520 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipEntry.#ctor(System.String)"> | ||
7521 | <summary> | ||
7522 | Creates a zip entry with the given name. | ||
7523 | </summary> | ||
7524 | <param name="name"> | ||
7525 | The name for this entry. Can include directory components. | ||
7526 | The convention for names is 'unix' style paths with relative names only. | ||
7527 | There are with no device names and path elements are separated by '/' characters. | ||
7528 | </param> | ||
7529 | <exception cref="T:System.ArgumentNullException"> | ||
7530 | The name passed is null | ||
7531 | </exception> | ||
7532 | </member> | ||
7533 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipEntry.#ctor(System.String,System.Int32)"> | ||
7534 | <summary> | ||
7535 | Creates a zip entry with the given name and version required to extract | ||
7536 | </summary> | ||
7537 | <param name="name"> | ||
7538 | The name for this entry. Can include directory components. | ||
7539 | The convention for names is 'unix' style paths with no device names and | ||
7540 | path elements separated by '/' characters. This is not enforced see <see cref="M:ICSharpCode.SharpZipLib.Zip.ZipEntry.CleanName(System.String)">CleanName</see> | ||
7541 | on how to ensure names are valid if this is desired. | ||
7542 | </param> | ||
7543 | <param name="versionRequiredToExtract"> | ||
7544 | The minimum 'feature version' required this entry | ||
7545 | </param> | ||
7546 | <exception cref="T:System.ArgumentNullException"> | ||
7547 | The name passed is null | ||
7548 | </exception> | ||
7549 | </member> | ||
7550 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipEntry.#ctor(System.String,System.Int32,System.Int32,ICSharpCode.SharpZipLib.Zip.CompressionMethod)"> | ||
7551 | <summary> | ||
7552 | Initializes an entry with the given name and made by information | ||
7553 | </summary> | ||
7554 | <param name="name">Name for this entry</param> | ||
7555 | <param name="madeByInfo">Version and HostSystem Information</param> | ||
7556 | <param name="versionRequiredToExtract">Minimum required zip feature version required to extract this entry</param> | ||
7557 | <param name="method">Compression method for this entry.</param> | ||
7558 | <exception cref="T:System.ArgumentNullException"> | ||
7559 | The name passed is null | ||
7560 | </exception> | ||
7561 | <exception cref="T:System.ArgumentOutOfRangeException"> | ||
7562 | versionRequiredToExtract should be 0 (auto-calculate) or > 10 | ||
7563 | </exception> | ||
7564 | <remarks> | ||
7565 | This constructor is used by the ZipFile class when reading from the central header | ||
7566 | It is not generally useful, use the constructor specifying the name only. | ||
7567 | </remarks> | ||
7568 | </member> | ||
7569 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipEntry.#ctor(ICSharpCode.SharpZipLib.Zip.ZipEntry)"> | ||
7570 | <summary> | ||
7571 | Creates a deep copy of the given zip entry. | ||
7572 | </summary> | ||
7573 | <param name="entry"> | ||
7574 | The entry to copy. | ||
7575 | </param> | ||
7576 | </member> | ||
7577 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipEntry.HasDosAttributes(System.Int32)"> | ||
7578 | <summary> | ||
7579 | Test the external attributes for this <see cref="T:ICSharpCode.SharpZipLib.Zip.ZipEntry"/> to | ||
7580 | see if the external attributes are Dos based (including WINNT and variants) | ||
7581 | and match the values | ||
7582 | </summary> | ||
7583 | <param name="attributes">The attributes to test.</param> | ||
7584 | <returns>Returns true if the external attributes are known to be DOS/Windows | ||
7585 | based and have the same attributes set as the value passed.</returns> | ||
7586 | </member> | ||
7587 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipEntry.ForceZip64"> | ||
7588 | <summary> | ||
7589 | Force this entry to be recorded using Zip64 extensions. | ||
7590 | </summary> | ||
7591 | </member> | ||
7592 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipEntry.IsZip64Forced"> | ||
7593 | <summary> | ||
7594 | Get a value indicating wether Zip64 extensions were forced. | ||
7595 | </summary> | ||
7596 | <returns>A <see cref="T:System.Boolean"/> value of true if Zip64 extensions have been forced on; false if not.</returns> | ||
7597 | </member> | ||
7598 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipEntry.ProcessExtraData(System.Boolean)"> | ||
7599 | <summary> | ||
7600 | Process extra data fields updating the entry based on the contents. | ||
7601 | </summary> | ||
7602 | <param name="localHeader">True if the extra data fields should be handled | ||
7603 | for a local header, rather than for a central header. | ||
7604 | </param> | ||
7605 | </member> | ||
7606 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipEntry.IsCompressionMethodSupported"> | ||
7607 | <summary> | ||
7608 | Test entry to see if data can be extracted. | ||
7609 | </summary> | ||
7610 | <returns>Returns true if data can be extracted for this entry; false otherwise.</returns> | ||
7611 | </member> | ||
7612 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipEntry.Clone"> | ||
7613 | <summary> | ||
7614 | Creates a copy of this zip entry. | ||
7615 | </summary> | ||
7616 | <returns>An <see cref="T:System.Object"/> that is a copy of the current instance.</returns> | ||
7617 | </member> | ||
7618 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipEntry.ToString"> | ||
7619 | <summary> | ||
7620 | Gets a string representation of this ZipEntry. | ||
7621 | </summary> | ||
7622 | <returns>A readable textual representation of this <see cref="T:ICSharpCode.SharpZipLib.Zip.ZipEntry"/></returns> | ||
7623 | </member> | ||
7624 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipEntry.IsCompressionMethodSupported(ICSharpCode.SharpZipLib.Zip.CompressionMethod)"> | ||
7625 | <summary> | ||
7626 | Test a <see cref="P:ICSharpCode.SharpZipLib.Zip.ZipEntry.CompressionMethod">compression method</see> to see if this library | ||
7627 | supports extracting data compressed with that method | ||
7628 | </summary> | ||
7629 | <param name="method">The compression method to test.</param> | ||
7630 | <returns>Returns true if the compression method is supported; false otherwise</returns> | ||
7631 | </member> | ||
7632 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipEntry.CleanName(System.String)"> | ||
7633 | <summary> | ||
7634 | Cleans a name making it conform to Zip file conventions. | ||
7635 | Devices names ('c:\') and UNC share names ('\\server\share') are removed | ||
7636 | and forward slashes ('\') are converted to back slashes ('/'). | ||
7637 | Names are made relative by trimming leading slashes which is compatible | ||
7638 | with the ZIP naming convention. | ||
7639 | </summary> | ||
7640 | <param name="name">The name to clean</param> | ||
7641 | <returns>The 'cleaned' name.</returns> | ||
7642 | <remarks> | ||
7643 | The <seealso cref="T:ICSharpCode.SharpZipLib.Zip.ZipNameTransform">Zip name transform</seealso> class is more flexible. | ||
7644 | </remarks> | ||
7645 | </member> | ||
7646 | <member name="P:ICSharpCode.SharpZipLib.Zip.ZipEntry.HasCrc"> | ||
7647 | <summary> | ||
7648 | Get a value indicating wether the entry has a CRC value available. | ||
7649 | </summary> | ||
7650 | </member> | ||
7651 | <member name="P:ICSharpCode.SharpZipLib.Zip.ZipEntry.IsCrypted"> | ||
7652 | <summary> | ||
7653 | Get/Set flag indicating if entry is encrypted. | ||
7654 | A simple helper routine to aid interpretation of <see cref="P:ICSharpCode.SharpZipLib.Zip.ZipEntry.Flags">flags</see> | ||
7655 | </summary> | ||
7656 | <remarks>This is an assistant that interprets the <see cref="P:ICSharpCode.SharpZipLib.Zip.ZipEntry.Flags">flags</see> property.</remarks> | ||
7657 | </member> | ||
7658 | <member name="P:ICSharpCode.SharpZipLib.Zip.ZipEntry.IsUnicodeText"> | ||
7659 | <summary> | ||
7660 | Get / set a flag indicating wether entry name and comment text are | ||
7661 | encoded in <a href="http://www.unicode.org">unicode UTF8</a>. | ||
7662 | </summary> | ||
7663 | <remarks>This is an assistant that interprets the <see cref="P:ICSharpCode.SharpZipLib.Zip.ZipEntry.Flags">flags</see> property.</remarks> | ||
7664 | </member> | ||
7665 | <member name="P:ICSharpCode.SharpZipLib.Zip.ZipEntry.CryptoCheckValue"> | ||
7666 | <summary> | ||
7667 | Value used during password checking for PKZIP 2.0 / 'classic' encryption. | ||
7668 | </summary> | ||
7669 | </member> | ||
7670 | <member name="P:ICSharpCode.SharpZipLib.Zip.ZipEntry.Flags"> | ||
7671 | <summary> | ||
7672 | Get/Set general purpose bit flag for entry | ||
7673 | </summary> | ||
7674 | <remarks> | ||
7675 | General purpose bit flag<br/> | ||
7676 | <br/> | ||
7677 | Bit 0: If set, indicates the file is encrypted<br/> | ||
7678 | Bit 1-2 Only used for compression type 6 Imploding, and 8, 9 deflating<br/> | ||
7679 | Imploding:<br/> | ||
7680 | Bit 1 if set indicates an 8K sliding dictionary was used. If clear a 4k dictionary was used<br/> | ||
7681 | Bit 2 if set indicates 3 Shannon-Fanno trees were used to encode the sliding dictionary, 2 otherwise<br/> | ||
7682 | <br/> | ||
7683 | Deflating:<br/> | ||
7684 | Bit 2 Bit 1<br/> | ||
7685 | 0 0 Normal compression was used<br/> | ||
7686 | 0 1 Maximum compression was used<br/> | ||
7687 | 1 0 Fast compression was used<br/> | ||
7688 | 1 1 Super fast compression was used<br/> | ||
7689 | <br/> | ||
7690 | Bit 3: If set, the fields crc-32, compressed size | ||
7691 | and uncompressed size are were not able to be written during zip file creation | ||
7692 | The correct values are held in a data descriptor immediately following the compressed data. <br/> | ||
7693 | Bit 4: Reserved for use by PKZIP for enhanced deflating<br/> | ||
7694 | Bit 5: If set indicates the file contains compressed patch data<br/> | ||
7695 | Bit 6: If set indicates strong encryption was used.<br/> | ||
7696 | Bit 7-10: Unused or reserved<br/> | ||
7697 | Bit 11: If set the name and comments for this entry are in <a href="http://www.unicode.org">unicode</a>.<br/> | ||
7698 | Bit 12-15: Unused or reserved<br/> | ||
7699 | </remarks> | ||
7700 | <seealso cref="P:ICSharpCode.SharpZipLib.Zip.ZipEntry.IsUnicodeText"></seealso> | ||
7701 | <seealso cref="P:ICSharpCode.SharpZipLib.Zip.ZipEntry.IsCrypted"></seealso> | ||
7702 | </member> | ||
7703 | <member name="P:ICSharpCode.SharpZipLib.Zip.ZipEntry.ZipFileIndex"> | ||
7704 | <summary> | ||
7705 | Get/Set index of this entry in Zip file | ||
7706 | </summary> | ||
7707 | <remarks>This is only valid when the entry is part of a <see cref="T:ICSharpCode.SharpZipLib.Zip.ZipFile"></see></remarks> | ||
7708 | </member> | ||
7709 | <member name="P:ICSharpCode.SharpZipLib.Zip.ZipEntry.Offset"> | ||
7710 | <summary> | ||
7711 | Get/set offset for use in central header | ||
7712 | </summary> | ||
7713 | </member> | ||
7714 | <member name="P:ICSharpCode.SharpZipLib.Zip.ZipEntry.ExternalFileAttributes"> | ||
7715 | <summary> | ||
7716 | Get/Set external file attributes as an integer. | ||
7717 | The values of this are operating system dependant see | ||
7718 | <see cref="P:ICSharpCode.SharpZipLib.Zip.ZipEntry.HostSystem">HostSystem</see> for details | ||
7719 | </summary> | ||
7720 | </member> | ||
7721 | <member name="P:ICSharpCode.SharpZipLib.Zip.ZipEntry.VersionMadeBy"> | ||
7722 | <summary> | ||
7723 | Get the version made by for this entry or zero if unknown. | ||
7724 | The value / 10 indicates the major version number, and | ||
7725 | the value mod 10 is the minor version number | ||
7726 | </summary> | ||
7727 | </member> | ||
7728 | <member name="P:ICSharpCode.SharpZipLib.Zip.ZipEntry.IsDOSEntry"> | ||
7729 | <summary> | ||
7730 | Get a value indicating this entry is for a DOS/Windows system. | ||
7731 | </summary> | ||
7732 | </member> | ||
7733 | <member name="P:ICSharpCode.SharpZipLib.Zip.ZipEntry.HostSystem"> | ||
7734 | <summary> | ||
7735 | Gets the compatability information for the <see cref="P:ICSharpCode.SharpZipLib.Zip.ZipEntry.ExternalFileAttributes">external file attribute</see> | ||
7736 | If the external file attributes are compatible with MS-DOS and can be read | ||
7737 | by PKZIP for DOS version 2.04g then this value will be zero. Otherwise the value | ||
7738 | will be non-zero and identify the host system on which the attributes are compatible. | ||
7739 | </summary> | ||
7740 | |||
7741 | <remarks> | ||
7742 | The values for this as defined in the Zip File format and by others are shown below. The values are somewhat | ||
7743 | misleading in some cases as they are not all used as shown. You should consult the relevant documentation | ||
7744 | to obtain up to date and correct information. The modified appnote by the infozip group is | ||
7745 | particularly helpful as it documents a lot of peculiarities. The document is however a little dated. | ||
7746 | <list type="table"> | ||
7747 | <item>0 - MS-DOS and OS/2 (FAT / VFAT / FAT32 file systems)</item> | ||
7748 | <item>1 - Amiga</item> | ||
7749 | <item>2 - OpenVMS</item> | ||
7750 | <item>3 - Unix</item> | ||
7751 | <item>4 - VM/CMS</item> | ||
7752 | <item>5 - Atari ST</item> | ||
7753 | <item>6 - OS/2 HPFS</item> | ||
7754 | <item>7 - Macintosh</item> | ||
7755 | <item>8 - Z-System</item> | ||
7756 | <item>9 - CP/M</item> | ||
7757 | <item>10 - Windows NTFS</item> | ||
7758 | <item>11 - MVS (OS/390 - Z/OS)</item> | ||
7759 | <item>12 - VSE</item> | ||
7760 | <item>13 - Acorn Risc</item> | ||
7761 | <item>14 - VFAT</item> | ||
7762 | <item>15 - Alternate MVS</item> | ||
7763 | <item>16 - BeOS</item> | ||
7764 | <item>17 - Tandem</item> | ||
7765 | <item>18 - OS/400</item> | ||
7766 | <item>19 - OS/X (Darwin)</item> | ||
7767 | <item>99 - WinZip AES</item> | ||
7768 | <item>remainder - unused</item> | ||
7769 | </list> | ||
7770 | </remarks> | ||
7771 | </member> | ||
7772 | <member name="P:ICSharpCode.SharpZipLib.Zip.ZipEntry.Version"> | ||
7773 | <summary> | ||
7774 | Get minimum Zip feature version required to extract this entry | ||
7775 | </summary> | ||
7776 | <remarks> | ||
7777 | Minimum features are defined as:<br/> | ||
7778 | 1.0 - Default value<br/> | ||
7779 | 1.1 - File is a volume label<br/> | ||
7780 | 2.0 - File is a folder/directory<br/> | ||
7781 | 2.0 - File is compressed using Deflate compression<br/> | ||
7782 | 2.0 - File is encrypted using traditional encryption<br/> | ||
7783 | 2.1 - File is compressed using Deflate64<br/> | ||
7784 | 2.5 - File is compressed using PKWARE DCL Implode<br/> | ||
7785 | 2.7 - File is a patch data set<br/> | ||
7786 | 4.5 - File uses Zip64 format extensions<br/> | ||
7787 | 4.6 - File is compressed using BZIP2 compression<br/> | ||
7788 | 5.0 - File is encrypted using DES<br/> | ||
7789 | 5.0 - File is encrypted using 3DES<br/> | ||
7790 | 5.0 - File is encrypted using original RC2 encryption<br/> | ||
7791 | 5.0 - File is encrypted using RC4 encryption<br/> | ||
7792 | 5.1 - File is encrypted using AES encryption<br/> | ||
7793 | 5.1 - File is encrypted using corrected RC2 encryption<br/> | ||
7794 | 5.1 - File is encrypted using corrected RC2-64 encryption<br/> | ||
7795 | 6.1 - File is encrypted using non-OAEP key wrapping<br/> | ||
7796 | 6.2 - Central directory encryption (not confirmed yet)<br/> | ||
7797 | 6.3 - File is compressed using LZMA<br/> | ||
7798 | 6.3 - File is compressed using PPMD+<br/> | ||
7799 | 6.3 - File is encrypted using Blowfish<br/> | ||
7800 | 6.3 - File is encrypted using Twofish<br/> | ||
7801 | </remarks> | ||
7802 | <seealso cref="P:ICSharpCode.SharpZipLib.Zip.ZipEntry.CanDecompress"></seealso> | ||
7803 | </member> | ||
7804 | <member name="P:ICSharpCode.SharpZipLib.Zip.ZipEntry.CanDecompress"> | ||
7805 | <summary> | ||
7806 | Get a value indicating wether this entry can be decompressed by the library. | ||
7807 | </summary> | ||
7808 | <remarks>This is based on the <see cref="P:ICSharpCode.SharpZipLib.Zip.ZipEntry.Version"></see> and | ||
7809 | wether the <see cref="M:ICSharpCode.SharpZipLib.Zip.ZipEntry.IsCompressionMethodSupported">compression method</see> is supported.</remarks> | ||
7810 | </member> | ||
7811 | <member name="P:ICSharpCode.SharpZipLib.Zip.ZipEntry.LocalHeaderRequiresZip64"> | ||
7812 | <summary> | ||
7813 | Gets a value indicating if the entry requires Zip64 extensions | ||
7814 | to store the full entry values. | ||
7815 | </summary> | ||
7816 | <value>A <see cref="T:System.Boolean"/> value of true if a local header requires Zip64 extensions; false if not.</value> | ||
7817 | </member> | ||
7818 | <member name="P:ICSharpCode.SharpZipLib.Zip.ZipEntry.CentralHeaderRequiresZip64"> | ||
7819 | <summary> | ||
7820 | Get a value indicating wether the central directory entry requires Zip64 extensions to be stored. | ||
7821 | </summary> | ||
7822 | </member> | ||
7823 | <member name="P:ICSharpCode.SharpZipLib.Zip.ZipEntry.DosTime"> | ||
7824 | <summary> | ||
7825 | Get/Set DosTime value. | ||
7826 | </summary> | ||
7827 | <remarks> | ||
7828 | The MS-DOS date format can only represent dates between 1/1/1980 and 12/31/2107. | ||
7829 | </remarks> | ||
7830 | </member> | ||
7831 | <member name="P:ICSharpCode.SharpZipLib.Zip.ZipEntry.DateTime"> | ||
7832 | <summary> | ||
7833 | Gets/Sets the time of last modification of the entry. | ||
7834 | </summary> | ||
7835 | <remarks> | ||
7836 | The <see cref="P:ICSharpCode.SharpZipLib.Zip.ZipEntry.DosTime"></see> property is updated to match this as far as possible. | ||
7837 | </remarks> | ||
7838 | </member> | ||
7839 | <member name="P:ICSharpCode.SharpZipLib.Zip.ZipEntry.Name"> | ||
7840 | <summary> | ||
7841 | Returns the entry name. | ||
7842 | </summary> | ||
7843 | <remarks> | ||
7844 | The unix naming convention is followed. | ||
7845 | Path components in the entry should always separated by forward slashes ('/'). | ||
7846 | Dos device names like C: should also be removed. | ||
7847 | See the <see cref="T:ICSharpCode.SharpZipLib.Zip.ZipNameTransform"/> class, or <see cref="M:ICSharpCode.SharpZipLib.Zip.ZipEntry.CleanName(System.String)"/> | ||
7848 | </remarks> | ||
7849 | </member> | ||
7850 | <member name="P:ICSharpCode.SharpZipLib.Zip.ZipEntry.Size"> | ||
7851 | <summary> | ||
7852 | Gets/Sets the size of the uncompressed data. | ||
7853 | </summary> | ||
7854 | <returns> | ||
7855 | The size or -1 if unknown. | ||
7856 | </returns> | ||
7857 | <remarks>Setting the size before adding an entry to an archive can help | ||
7858 | avoid compatability problems with some archivers which dont understand Zip64 extensions.</remarks> | ||
7859 | </member> | ||
7860 | <member name="P:ICSharpCode.SharpZipLib.Zip.ZipEntry.CompressedSize"> | ||
7861 | <summary> | ||
7862 | Gets/Sets the size of the compressed data. | ||
7863 | </summary> | ||
7864 | <returns> | ||
7865 | The compressed entry size or -1 if unknown. | ||
7866 | </returns> | ||
7867 | </member> | ||
7868 | <member name="P:ICSharpCode.SharpZipLib.Zip.ZipEntry.Crc"> | ||
7869 | <summary> | ||
7870 | Gets/Sets the crc of the uncompressed data. | ||
7871 | </summary> | ||
7872 | <exception cref="T:System.ArgumentOutOfRangeException"> | ||
7873 | Crc is not in the range 0..0xffffffffL | ||
7874 | </exception> | ||
7875 | <returns> | ||
7876 | The crc value or -1 if unknown. | ||
7877 | </returns> | ||
7878 | </member> | ||
7879 | <member name="P:ICSharpCode.SharpZipLib.Zip.ZipEntry.CompressionMethod"> | ||
7880 | <summary> | ||
7881 | Gets/Sets the compression method. Only Deflated and Stored are supported. | ||
7882 | </summary> | ||
7883 | <returns> | ||
7884 | The compression method for this entry | ||
7885 | </returns> | ||
7886 | <see cref="F:ICSharpCode.SharpZipLib.Zip.CompressionMethod.Deflated"/> | ||
7887 | <see cref="F:ICSharpCode.SharpZipLib.Zip.CompressionMethod.Stored"/> | ||
7888 | </member> | ||
7889 | <member name="P:ICSharpCode.SharpZipLib.Zip.ZipEntry.ExtraData"> | ||
7890 | <summary> | ||
7891 | Gets/Sets the extra data. | ||
7892 | </summary> | ||
7893 | <exception cref="T:System.ArgumentOutOfRangeException"> | ||
7894 | Extra data is longer than 64KB (0xffff) bytes. | ||
7895 | </exception> | ||
7896 | <returns> | ||
7897 | Extra data or null if not set. | ||
7898 | </returns> | ||
7899 | </member> | ||
7900 | <member name="P:ICSharpCode.SharpZipLib.Zip.ZipEntry.Comment"> | ||
7901 | <summary> | ||
7902 | Gets/Sets the entry comment. | ||
7903 | </summary> | ||
7904 | <exception cref="T:System.ArgumentOutOfRangeException"> | ||
7905 | If comment is longer than 0xffff. | ||
7906 | </exception> | ||
7907 | <returns> | ||
7908 | The comment or null if not set. | ||
7909 | </returns> | ||
7910 | <remarks> | ||
7911 | A comment is only available for entries when read via the <see cref="T:ICSharpCode.SharpZipLib.Zip.ZipFile"/> class. | ||
7912 | The <see cref="T:ICSharpCode.SharpZipLib.Zip.ZipInputStream"/> class doesnt have the comment data available. | ||
7913 | </remarks> | ||
7914 | </member> | ||
7915 | <member name="P:ICSharpCode.SharpZipLib.Zip.ZipEntry.IsDirectory"> | ||
7916 | <summary> | ||
7917 | Gets a value indicating if the entry is a directory. | ||
7918 | however. | ||
7919 | </summary> | ||
7920 | <remarks> | ||
7921 | A directory is determined by an entry name with a trailing slash '/'. | ||
7922 | The external file attributes can also indicate an entry is for a directory. | ||
7923 | Currently only dos/windows attributes are tested in this manner. | ||
7924 | The trailing slash convention should always be followed. | ||
7925 | </remarks> | ||
7926 | </member> | ||
7927 | <member name="P:ICSharpCode.SharpZipLib.Zip.ZipEntry.IsFile"> | ||
7928 | <summary> | ||
7929 | Get a value of true if the entry appears to be a file; false otherwise | ||
7930 | </summary> | ||
7931 | <remarks> | ||
7932 | This only takes account of DOS/Windows attributes. Other operating systems are ignored. | ||
7933 | For linux and others the result may be incorrect. | ||
7934 | </remarks> | ||
7935 | </member> | ||
7936 | <member name="T:ICSharpCode.SharpZipLib.Zip.ITaggedData"> | ||
7937 | <summary> | ||
7938 | ExtraData tagged value interface. | ||
7939 | </summary> | ||
7940 | </member> | ||
7941 | <member name="M:ICSharpCode.SharpZipLib.Zip.ITaggedData.SetData(System.Byte[],System.Int32,System.Int32)"> | ||
7942 | <summary> | ||
7943 | Set the contents of this instance from the data passed. | ||
7944 | </summary> | ||
7945 | <param name="data">The data to extract contents from.</param> | ||
7946 | <param name="offset">The offset to begin extracting data from.</param> | ||
7947 | <param name="count">The number of bytes to extract.</param> | ||
7948 | </member> | ||
7949 | <member name="M:ICSharpCode.SharpZipLib.Zip.ITaggedData.GetData"> | ||
7950 | <summary> | ||
7951 | Get the data representing this instance. | ||
7952 | </summary> | ||
7953 | <returns>Returns the data for this instance.</returns> | ||
7954 | </member> | ||
7955 | <member name="P:ICSharpCode.SharpZipLib.Zip.ITaggedData.TagID"> | ||
7956 | <summary> | ||
7957 | Get the ID for this tagged data value. | ||
7958 | </summary> | ||
7959 | </member> | ||
7960 | <member name="T:ICSharpCode.SharpZipLib.Zip.RawTaggedData"> | ||
7961 | <summary> | ||
7962 | A raw binary tagged value | ||
7963 | </summary> | ||
7964 | </member> | ||
7965 | <member name="M:ICSharpCode.SharpZipLib.Zip.RawTaggedData.#ctor(System.Int16)"> | ||
7966 | <summary> | ||
7967 | Initialise a new instance. | ||
7968 | </summary> | ||
7969 | <param name="tag">The tag ID.</param> | ||
7970 | </member> | ||
7971 | <member name="M:ICSharpCode.SharpZipLib.Zip.RawTaggedData.SetData(System.Byte[],System.Int32,System.Int32)"> | ||
7972 | <summary> | ||
7973 | Set the data from the raw values provided. | ||
7974 | </summary> | ||
7975 | <param name="data">The raw data to extract values from.</param> | ||
7976 | <param name="offset">The index to start extracting values from.</param> | ||
7977 | <param name="count">The number of bytes available.</param> | ||
7978 | </member> | ||
7979 | <member name="M:ICSharpCode.SharpZipLib.Zip.RawTaggedData.GetData"> | ||
7980 | <summary> | ||
7981 | Get the binary data representing this instance. | ||
7982 | </summary> | ||
7983 | <returns>The raw binary data representing this instance.</returns> | ||
7984 | </member> | ||
7985 | <member name="F:ICSharpCode.SharpZipLib.Zip.RawTaggedData.tag_"> | ||
7986 | <summary> | ||
7987 | The tag ID for this instance. | ||
7988 | </summary> | ||
7989 | </member> | ||
7990 | <member name="P:ICSharpCode.SharpZipLib.Zip.RawTaggedData.TagID"> | ||
7991 | <summary> | ||
7992 | Get the ID for this tagged data value. | ||
7993 | </summary> | ||
7994 | </member> | ||
7995 | <member name="P:ICSharpCode.SharpZipLib.Zip.RawTaggedData.Data"> | ||
7996 | <summary> | ||
7997 | Get /set the binary data representing this instance. | ||
7998 | </summary> | ||
7999 | <returns>The raw binary data representing this instance.</returns> | ||
8000 | </member> | ||
8001 | <member name="T:ICSharpCode.SharpZipLib.Zip.ExtendedUnixData"> | ||
8002 | <summary> | ||
8003 | Class representing extended unix date time values. | ||
8004 | </summary> | ||
8005 | </member> | ||
8006 | <member name="M:ICSharpCode.SharpZipLib.Zip.ExtendedUnixData.SetData(System.Byte[],System.Int32,System.Int32)"> | ||
8007 | <summary> | ||
8008 | Set the data from the raw values provided. | ||
8009 | </summary> | ||
8010 | <param name="data">The raw data to extract values from.</param> | ||
8011 | <param name="index">The index to start extracting values from.</param> | ||
8012 | <param name="count">The number of bytes available.</param> | ||
8013 | </member> | ||
8014 | <member name="M:ICSharpCode.SharpZipLib.Zip.ExtendedUnixData.GetData"> | ||
8015 | <summary> | ||
8016 | Get the binary data representing this instance. | ||
8017 | </summary> | ||
8018 | <returns>The raw binary data representing this instance.</returns> | ||
8019 | </member> | ||
8020 | <member name="M:ICSharpCode.SharpZipLib.Zip.ExtendedUnixData.IsValidValue(System.DateTime)"> | ||
8021 | <summary> | ||
8022 | Test a <see cref="T:System.DateTime"> value to see if is valid and can be represented here.</see> | ||
8023 | </summary> | ||
8024 | <param name="value">The <see cref="T:System.DateTime">value</see> to test.</param> | ||
8025 | <returns>Returns true if the value is valid and can be represented; false if not.</returns> | ||
8026 | <remarks>The standard Unix time is a signed integer data type, directly encoding the Unix time number, | ||
8027 | which is the number of seconds since 1970-01-01. | ||
8028 | Being 32 bits means the values here cover a range of about 136 years. | ||
8029 | The minimum representable time is 1901-12-13 20:45:52, | ||
8030 | and the maximum representable time is 2038-01-19 03:14:07. | ||
8031 | </remarks> | ||
8032 | </member> | ||
8033 | <member name="P:ICSharpCode.SharpZipLib.Zip.ExtendedUnixData.TagID"> | ||
8034 | <summary> | ||
8035 | Get the ID | ||
8036 | </summary> | ||
8037 | </member> | ||
8038 | <member name="P:ICSharpCode.SharpZipLib.Zip.ExtendedUnixData.ModificationTime"> | ||
8039 | <summary> | ||
8040 | Get /set the Modification Time | ||
8041 | </summary> | ||
8042 | <exception cref="T:System.ArgumentOutOfRangeException"></exception> | ||
8043 | <seealso cref="M:ICSharpCode.SharpZipLib.Zip.ExtendedUnixData.IsValidValue(System.DateTime)"></seealso> | ||
8044 | </member> | ||
8045 | <member name="P:ICSharpCode.SharpZipLib.Zip.ExtendedUnixData.AccessTime"> | ||
8046 | <summary> | ||
8047 | Get / set the Access Time | ||
8048 | </summary> | ||
8049 | <exception cref="T:System.ArgumentOutOfRangeException"></exception> | ||
8050 | <seealso cref="M:ICSharpCode.SharpZipLib.Zip.ExtendedUnixData.IsValidValue(System.DateTime)"></seealso> | ||
8051 | </member> | ||
8052 | <member name="P:ICSharpCode.SharpZipLib.Zip.ExtendedUnixData.CreateTime"> | ||
8053 | <summary> | ||
8054 | Get / Set the Create Time | ||
8055 | </summary> | ||
8056 | <exception cref="T:System.ArgumentOutOfRangeException"></exception> | ||
8057 | <seealso cref="M:ICSharpCode.SharpZipLib.Zip.ExtendedUnixData.IsValidValue(System.DateTime)"></seealso> | ||
8058 | </member> | ||
8059 | <member name="P:ICSharpCode.SharpZipLib.Zip.ExtendedUnixData.Include"> | ||
8060 | <summary> | ||
8061 | Get/set the <see cref="T:ICSharpCode.SharpZipLib.Zip.ExtendedUnixData.Flags">values</see> to include. | ||
8062 | </summary> | ||
8063 | </member> | ||
8064 | <member name="T:ICSharpCode.SharpZipLib.Zip.ExtendedUnixData.Flags"> | ||
8065 | <summary> | ||
8066 | Flags indicate which values are included in this instance. | ||
8067 | </summary> | ||
8068 | </member> | ||
8069 | <member name="F:ICSharpCode.SharpZipLib.Zip.ExtendedUnixData.Flags.ModificationTime"> | ||
8070 | <summary> | ||
8071 | The modification time is included | ||
8072 | </summary> | ||
8073 | </member> | ||
8074 | <member name="F:ICSharpCode.SharpZipLib.Zip.ExtendedUnixData.Flags.AccessTime"> | ||
8075 | <summary> | ||
8076 | The access time is included | ||
8077 | </summary> | ||
8078 | </member> | ||
8079 | <member name="F:ICSharpCode.SharpZipLib.Zip.ExtendedUnixData.Flags.CreateTime"> | ||
8080 | <summary> | ||
8081 | The create time is included. | ||
8082 | </summary> | ||
8083 | </member> | ||
8084 | <member name="T:ICSharpCode.SharpZipLib.Zip.NTTaggedData"> | ||
8085 | <summary> | ||
8086 | Class handling NT date time values. | ||
8087 | </summary> | ||
8088 | </member> | ||
8089 | <member name="M:ICSharpCode.SharpZipLib.Zip.NTTaggedData.SetData(System.Byte[],System.Int32,System.Int32)"> | ||
8090 | <summary> | ||
8091 | Set the data from the raw values provided. | ||
8092 | </summary> | ||
8093 | <param name="data">The raw data to extract values from.</param> | ||
8094 | <param name="index">The index to start extracting values from.</param> | ||
8095 | <param name="count">The number of bytes available.</param> | ||
8096 | </member> | ||
8097 | <member name="M:ICSharpCode.SharpZipLib.Zip.NTTaggedData.GetData"> | ||
8098 | <summary> | ||
8099 | Get the binary data representing this instance. | ||
8100 | </summary> | ||
8101 | <returns>The raw binary data representing this instance.</returns> | ||
8102 | </member> | ||
8103 | <member name="M:ICSharpCode.SharpZipLib.Zip.NTTaggedData.IsValidValue(System.DateTime)"> | ||
8104 | <summary> | ||
8105 | Test a <see cref="T:System.DateTime"> valuie to see if is valid and can be represented here.</see> | ||
8106 | </summary> | ||
8107 | <param name="value">The <see cref="T:System.DateTime">value</see> to test.</param> | ||
8108 | <returns>Returns true if the value is valid and can be represented; false if not.</returns> | ||
8109 | <remarks> | ||
8110 | NTFS filetimes are 64-bit unsigned integers, stored in Intel | ||
8111 | (least significant byte first) byte order. They determine the | ||
8112 | number of 1.0E-07 seconds (1/10th microseconds!) past WinNT "epoch", | ||
8113 | which is "01-Jan-1601 00:00:00 UTC". 28 May 60056 is the upper limit | ||
8114 | </remarks> | ||
8115 | </member> | ||
8116 | <member name="P:ICSharpCode.SharpZipLib.Zip.NTTaggedData.TagID"> | ||
8117 | <summary> | ||
8118 | Get the ID for this tagged data value. | ||
8119 | </summary> | ||
8120 | </member> | ||
8121 | <member name="P:ICSharpCode.SharpZipLib.Zip.NTTaggedData.LastModificationTime"> | ||
8122 | <summary> | ||
8123 | Get/set the <see cref="T:System.DateTime">last modification time</see>. | ||
8124 | </summary> | ||
8125 | </member> | ||
8126 | <member name="P:ICSharpCode.SharpZipLib.Zip.NTTaggedData.CreateTime"> | ||
8127 | <summary> | ||
8128 | Get /set the <see cref="T:System.DateTime">create time</see> | ||
8129 | </summary> | ||
8130 | </member> | ||
8131 | <member name="P:ICSharpCode.SharpZipLib.Zip.NTTaggedData.LastAccessTime"> | ||
8132 | <summary> | ||
8133 | Get /set the <see cref="T:System.DateTime">last access time</see>. | ||
8134 | </summary> | ||
8135 | </member> | ||
8136 | <member name="T:ICSharpCode.SharpZipLib.Zip.ITaggedDataFactory"> | ||
8137 | <summary> | ||
8138 | A factory that creates <see cref="T:ICSharpCode.SharpZipLib.Zip.ITaggedData">tagged data</see> instances. | ||
8139 | </summary> | ||
8140 | </member> | ||
8141 | <member name="M:ICSharpCode.SharpZipLib.Zip.ITaggedDataFactory.Create(System.Int16,System.Byte[],System.Int32,System.Int32)"> | ||
8142 | <summary> | ||
8143 | Get data for a specific tag value. | ||
8144 | </summary> | ||
8145 | <param name="tag">The tag ID to find.</param> | ||
8146 | <param name="data">The data to search.</param> | ||
8147 | <param name="offset">The offset to begin extracting data from.</param> | ||
8148 | <param name="count">The number of bytes to extract.</param> | ||
8149 | <returns>The located <see cref="T:ICSharpCode.SharpZipLib.Zip.ITaggedData">value found</see>, or null if not found.</returns> | ||
8150 | </member> | ||
8151 | <member name="T:ICSharpCode.SharpZipLib.Zip.ZipExtraData"> | ||
8152 | |||
8153 | <summary> | ||
8154 | A class to handle the extra data field for Zip entries | ||
8155 | </summary> | ||
8156 | <remarks> | ||
8157 | Extra data contains 0 or more values each prefixed by a header tag and length. | ||
8158 | They contain zero or more bytes of actual data. | ||
8159 | The data is held internally using a copy on write strategy. This is more efficient but | ||
8160 | means that for extra data created by passing in data can have the values modified by the caller | ||
8161 | in some circumstances. | ||
8162 | </remarks> | ||
8163 | </member> | ||
8164 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipExtraData.#ctor"> | ||
8165 | <summary> | ||
8166 | Initialise a default instance. | ||
8167 | </summary> | ||
8168 | </member> | ||
8169 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipExtraData.#ctor(System.Byte[])"> | ||
8170 | <summary> | ||
8171 | Initialise with known extra data. | ||
8172 | </summary> | ||
8173 | <param name="data">The extra data.</param> | ||
8174 | </member> | ||
8175 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipExtraData.GetEntryData"> | ||
8176 | <summary> | ||
8177 | Get the raw extra data value | ||
8178 | </summary> | ||
8179 | <returns>Returns the raw byte[] extra data this instance represents.</returns> | ||
8180 | </member> | ||
8181 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipExtraData.Clear"> | ||
8182 | <summary> | ||
8183 | Clear the stored data. | ||
8184 | </summary> | ||
8185 | </member> | ||
8186 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipExtraData.GetStreamForTag(System.Int32)"> | ||
8187 | <summary> | ||
8188 | Get a read-only <see cref="T:System.IO.Stream"/> for the associated tag. | ||
8189 | </summary> | ||
8190 | <param name="tag">The tag to locate data for.</param> | ||
8191 | <returns>Returns a <see cref="T:System.IO.Stream"/> containing tag data or null if no tag was found.</returns> | ||
8192 | </member> | ||
8193 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipExtraData.GetData(System.Int16)"> | ||
8194 | <summary> | ||
8195 | Get the <see cref="T:ICSharpCode.SharpZipLib.Zip.ITaggedData">tagged data</see> for a tag. | ||
8196 | </summary> | ||
8197 | <param name="tag">The tag to search for.</param> | ||
8198 | <returns>Returns a <see cref="T:ICSharpCode.SharpZipLib.Zip.ITaggedData">tagged value</see> or null if none found.</returns> | ||
8199 | </member> | ||
8200 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipExtraData.Find(System.Int32)"> | ||
8201 | <summary> | ||
8202 | Find an extra data value | ||
8203 | </summary> | ||
8204 | <param name="headerID">The identifier for the value to find.</param> | ||
8205 | <returns>Returns true if the value was found; false otherwise.</returns> | ||
8206 | </member> | ||
8207 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipExtraData.AddEntry(ICSharpCode.SharpZipLib.Zip.ITaggedData)"> | ||
8208 | <summary> | ||
8209 | Add a new entry to extra data. | ||
8210 | </summary> | ||
8211 | <param name="taggedData">The <see cref="T:ICSharpCode.SharpZipLib.Zip.ITaggedData"/> value to add.</param> | ||
8212 | </member> | ||
8213 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipExtraData.AddEntry(System.Int32,System.Byte[])"> | ||
8214 | <summary> | ||
8215 | Add a new entry to extra data | ||
8216 | </summary> | ||
8217 | <param name="headerID">The ID for this entry.</param> | ||
8218 | <param name="fieldData">The data to add.</param> | ||
8219 | <remarks>If the ID already exists its contents are replaced.</remarks> | ||
8220 | </member> | ||
8221 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipExtraData.StartNewEntry"> | ||
8222 | <summary> | ||
8223 | Start adding a new entry. | ||
8224 | </summary> | ||
8225 | <remarks>Add data using <see cref="M:ICSharpCode.SharpZipLib.Zip.ZipExtraData.AddData(System.Byte[])"/>, <see cref="M:ICSharpCode.SharpZipLib.Zip.ZipExtraData.AddLeShort(System.Int32)"/>, <see cref="M:ICSharpCode.SharpZipLib.Zip.ZipExtraData.AddLeInt(System.Int32)"/>, or <see cref="M:ICSharpCode.SharpZipLib.Zip.ZipExtraData.AddLeLong(System.Int64)"/>. | ||
8226 | The new entry is completed and actually added by calling <see cref="M:ICSharpCode.SharpZipLib.Zip.ZipExtraData.AddNewEntry(System.Int32)"/></remarks> | ||
8227 | <seealso cref="M:ICSharpCode.SharpZipLib.Zip.ZipExtraData.AddEntry(ICSharpCode.SharpZipLib.Zip.ITaggedData)"/> | ||
8228 | </member> | ||
8229 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipExtraData.AddNewEntry(System.Int32)"> | ||
8230 | <summary> | ||
8231 | Add entry data added since <see cref="M:ICSharpCode.SharpZipLib.Zip.ZipExtraData.StartNewEntry"/> using the ID passed. | ||
8232 | </summary> | ||
8233 | <param name="headerID">The identifier to use for this entry.</param> | ||
8234 | </member> | ||
8235 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipExtraData.AddData(System.Byte)"> | ||
8236 | <summary> | ||
8237 | Add a byte of data to the pending new entry. | ||
8238 | </summary> | ||
8239 | <param name="data">The byte to add.</param> | ||
8240 | <seealso cref="M:ICSharpCode.SharpZipLib.Zip.ZipExtraData.StartNewEntry"/> | ||
8241 | </member> | ||
8242 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipExtraData.AddData(System.Byte[])"> | ||
8243 | <summary> | ||
8244 | Add data to a pending new entry. | ||
8245 | </summary> | ||
8246 | <param name="data">The data to add.</param> | ||
8247 | <seealso cref="M:ICSharpCode.SharpZipLib.Zip.ZipExtraData.StartNewEntry"/> | ||
8248 | </member> | ||
8249 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipExtraData.AddLeShort(System.Int32)"> | ||
8250 | <summary> | ||
8251 | Add a short value in little endian order to the pending new entry. | ||
8252 | </summary> | ||
8253 | <param name="toAdd">The data to add.</param> | ||
8254 | <seealso cref="M:ICSharpCode.SharpZipLib.Zip.ZipExtraData.StartNewEntry"/> | ||
8255 | </member> | ||
8256 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipExtraData.AddLeInt(System.Int32)"> | ||
8257 | <summary> | ||
8258 | Add an integer value in little endian order to the pending new entry. | ||
8259 | </summary> | ||
8260 | <param name="toAdd">The data to add.</param> | ||
8261 | <seealso cref="M:ICSharpCode.SharpZipLib.Zip.ZipExtraData.StartNewEntry"/> | ||
8262 | </member> | ||
8263 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipExtraData.AddLeLong(System.Int64)"> | ||
8264 | <summary> | ||
8265 | Add a long value in little endian order to the pending new entry. | ||
8266 | </summary> | ||
8267 | <param name="toAdd">The data to add.</param> | ||
8268 | <seealso cref="M:ICSharpCode.SharpZipLib.Zip.ZipExtraData.StartNewEntry"/> | ||
8269 | </member> | ||
8270 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipExtraData.Delete(System.Int32)"> | ||
8271 | <summary> | ||
8272 | Delete an extra data field. | ||
8273 | </summary> | ||
8274 | <param name="headerID">The identifier of the field to delete.</param> | ||
8275 | <returns>Returns true if the field was found and deleted.</returns> | ||
8276 | </member> | ||
8277 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipExtraData.ReadLong"> | ||
8278 | <summary> | ||
8279 | Read a long in little endian form from the last <see cref="M:ICSharpCode.SharpZipLib.Zip.ZipExtraData.Find(System.Int32)">found</see> data value | ||
8280 | </summary> | ||
8281 | <returns>Returns the long value read.</returns> | ||
8282 | </member> | ||
8283 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipExtraData.ReadInt"> | ||
8284 | <summary> | ||
8285 | Read an integer in little endian form from the last <see cref="M:ICSharpCode.SharpZipLib.Zip.ZipExtraData.Find(System.Int32)">found</see> data value. | ||
8286 | </summary> | ||
8287 | <returns>Returns the integer read.</returns> | ||
8288 | </member> | ||
8289 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipExtraData.ReadShort"> | ||
8290 | <summary> | ||
8291 | Read a short value in little endian form from the last <see cref="M:ICSharpCode.SharpZipLib.Zip.ZipExtraData.Find(System.Int32)">found</see> data value. | ||
8292 | </summary> | ||
8293 | <returns>Returns the short value read.</returns> | ||
8294 | </member> | ||
8295 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipExtraData.ReadByte"> | ||
8296 | <summary> | ||
8297 | Read a byte from an extra data | ||
8298 | </summary> | ||
8299 | <returns>The byte value read or -1 if the end of data has been reached.</returns> | ||
8300 | </member> | ||
8301 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipExtraData.Skip(System.Int32)"> | ||
8302 | <summary> | ||
8303 | Skip data during reading. | ||
8304 | </summary> | ||
8305 | <param name="amount">The number of bytes to skip.</param> | ||
8306 | </member> | ||
8307 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipExtraData.ReadShortInternal"> | ||
8308 | <summary> | ||
8309 | Internal form of <see cref="M:ICSharpCode.SharpZipLib.Zip.ZipExtraData.ReadShort"/> that reads data at any location. | ||
8310 | </summary> | ||
8311 | <returns>Returns the short value read.</returns> | ||
8312 | </member> | ||
8313 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipExtraData.Dispose"> | ||
8314 | <summary> | ||
8315 | Dispose of this instance. | ||
8316 | </summary> | ||
8317 | </member> | ||
8318 | <member name="P:ICSharpCode.SharpZipLib.Zip.ZipExtraData.Length"> | ||
8319 | <summary> | ||
8320 | Gets the current extra data length. | ||
8321 | </summary> | ||
8322 | </member> | ||
8323 | <member name="P:ICSharpCode.SharpZipLib.Zip.ZipExtraData.ValueLength"> | ||
8324 | <summary> | ||
8325 | Get the length of the last value found by <see cref="M:ICSharpCode.SharpZipLib.Zip.ZipExtraData.Find(System.Int32)"/> | ||
8326 | </summary> | ||
8327 | <remarks>This is only value if <see cref="M:ICSharpCode.SharpZipLib.Zip.ZipExtraData.Find(System.Int32)"/> has previsouly returned true.</remarks> | ||
8328 | </member> | ||
8329 | <member name="P:ICSharpCode.SharpZipLib.Zip.ZipExtraData.CurrentReadIndex"> | ||
8330 | <summary> | ||
8331 | Get the index for the current read value. | ||
8332 | </summary> | ||
8333 | <remarks>This is only valid if <see cref="M:ICSharpCode.SharpZipLib.Zip.ZipExtraData.Find(System.Int32)"/> has previously returned true. | ||
8334 | Initially it will be the index of the first byte of actual data. The value is updated after calls to | ||
8335 | <see cref="M:ICSharpCode.SharpZipLib.Zip.ZipExtraData.ReadInt"/>, <see cref="M:ICSharpCode.SharpZipLib.Zip.ZipExtraData.ReadShort"/> and <see cref="M:ICSharpCode.SharpZipLib.Zip.ZipExtraData.ReadLong"/>. </remarks> | ||
8336 | </member> | ||
8337 | <member name="P:ICSharpCode.SharpZipLib.Zip.ZipExtraData.UnreadCount"> | ||
8338 | <summary> | ||
8339 | Get the number of bytes remaining to be read for the current value; | ||
8340 | </summary> | ||
8341 | </member> | ||
8342 | <member name="T:ICSharpCode.SharpZipLib.Zip.DescriptorData"> | ||
8343 | <summary> | ||
8344 | Holds data pertinent to a data descriptor. | ||
8345 | </summary> | ||
8346 | </member> | ||
8347 | <member name="P:ICSharpCode.SharpZipLib.Zip.DescriptorData.CompressedSize"> | ||
8348 | <summary> | ||
8349 | Get /set the compressed size of data. | ||
8350 | </summary> | ||
8351 | </member> | ||
8352 | <member name="P:ICSharpCode.SharpZipLib.Zip.DescriptorData.Size"> | ||
8353 | <summary> | ||
8354 | Get / set the uncompressed size of data | ||
8355 | </summary> | ||
8356 | </member> | ||
8357 | <member name="P:ICSharpCode.SharpZipLib.Zip.DescriptorData.Crc"> | ||
8358 | <summary> | ||
8359 | Get /set the crc value. | ||
8360 | </summary> | ||
8361 | </member> | ||
8362 | <member name="T:ICSharpCode.SharpZipLib.Zip.ZipHelperStream"> | ||
8363 | <summary> | ||
8364 | This class assists with writing/reading from Zip files. | ||
8365 | </summary> | ||
8366 | </member> | ||
8367 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipHelperStream.#ctor(System.String)"> | ||
8368 | <summary> | ||
8369 | Initialise an instance of this class. | ||
8370 | </summary> | ||
8371 | <param name="name">The name of the file to open.</param> | ||
8372 | </member> | ||
8373 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipHelperStream.#ctor(System.IO.Stream)"> | ||
8374 | <summary> | ||
8375 | Initialise a new instance of <see cref="T:ICSharpCode.SharpZipLib.Zip.ZipHelperStream"/>. | ||
8376 | </summary> | ||
8377 | <param name="stream">The stream to use.</param> | ||
8378 | </member> | ||
8379 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipHelperStream.Close"> | ||
8380 | <summary> | ||
8381 | Close the stream. | ||
8382 | </summary> | ||
8383 | <remarks> | ||
8384 | The underlying stream is closed only if <see cref="P:ICSharpCode.SharpZipLib.Zip.ZipHelperStream.IsStreamOwner"/> is true. | ||
8385 | </remarks> | ||
8386 | </member> | ||
8387 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipHelperStream.LocateBlockWithSignature(System.Int32,System.Int64,System.Int32,System.Int32)"> | ||
8388 | <summary> | ||
8389 | Locates a block with the desired <paramref name="signature"/>. | ||
8390 | </summary> | ||
8391 | <param name="signature">The signature to find.</param> | ||
8392 | <param name="endLocation">Location, marking the end of block.</param> | ||
8393 | <param name="minimumBlockSize">Minimum size of the block.</param> | ||
8394 | <param name="maximumVariableData">The maximum variable data.</param> | ||
8395 | <returns>Eeturns the offset of the first byte after the signature; -1 if not found</returns> | ||
8396 | </member> | ||
8397 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipHelperStream.WriteZip64EndOfCentralDirectory(System.Int64,System.Int64,System.Int64)"> | ||
8398 | <summary> | ||
8399 | Write Zip64 end of central directory records (File header and locator). | ||
8400 | </summary> | ||
8401 | <param name="noOfEntries">The number of entries in the central directory.</param> | ||
8402 | <param name="sizeEntries">The size of entries in the central directory.</param> | ||
8403 | <param name="centralDirOffset">The offset of the dentral directory.</param> | ||
8404 | </member> | ||
8405 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipHelperStream.WriteEndOfCentralDirectory(System.Int64,System.Int64,System.Int64,System.Byte[])"> | ||
8406 | <summary> | ||
8407 | Write the required records to end the central directory. | ||
8408 | </summary> | ||
8409 | <param name="noOfEntries">The number of entries in the directory.</param> | ||
8410 | <param name="sizeEntries">The size of the entries in the directory.</param> | ||
8411 | <param name="startOfCentralDirectory">The start of the central directory.</param> | ||
8412 | <param name="comment">The archive comment. (This can be null).</param> | ||
8413 | </member> | ||
8414 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipHelperStream.ReadLEShort"> | ||
8415 | <summary> | ||
8416 | Read an unsigned short in little endian byte order. | ||
8417 | </summary> | ||
8418 | <returns>Returns the value read.</returns> | ||
8419 | <exception cref="T:System.IO.IOException"> | ||
8420 | An i/o error occurs. | ||
8421 | </exception> | ||
8422 | <exception cref="T:System.IO.EndOfStreamException"> | ||
8423 | The file ends prematurely | ||
8424 | </exception> | ||
8425 | </member> | ||
8426 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipHelperStream.ReadLEInt"> | ||
8427 | <summary> | ||
8428 | Read an int in little endian byte order. | ||
8429 | </summary> | ||
8430 | <returns>Returns the value read.</returns> | ||
8431 | <exception cref="T:System.IO.IOException"> | ||
8432 | An i/o error occurs. | ||
8433 | </exception> | ||
8434 | <exception cref="T:System.IO.EndOfStreamException"> | ||
8435 | The file ends prematurely | ||
8436 | </exception> | ||
8437 | </member> | ||
8438 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipHelperStream.ReadLELong"> | ||
8439 | <summary> | ||
8440 | Read a long in little endian byte order. | ||
8441 | </summary> | ||
8442 | <returns>The value read.</returns> | ||
8443 | </member> | ||
8444 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipHelperStream.WriteLEShort(System.Int32)"> | ||
8445 | <summary> | ||
8446 | Write an unsigned short in little endian byte order. | ||
8447 | </summary> | ||
8448 | <param name="value">The value to write.</param> | ||
8449 | </member> | ||
8450 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipHelperStream.WriteLEUshort(System.UInt16)"> | ||
8451 | <summary> | ||
8452 | Write a ushort in little endian byte order. | ||
8453 | </summary> | ||
8454 | <param name="value">The value to write.</param> | ||
8455 | </member> | ||
8456 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipHelperStream.WriteLEInt(System.Int32)"> | ||
8457 | <summary> | ||
8458 | Write an int in little endian byte order. | ||
8459 | </summary> | ||
8460 | <param name="value">The value to write.</param> | ||
8461 | </member> | ||
8462 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipHelperStream.WriteLEUint(System.UInt32)"> | ||
8463 | <summary> | ||
8464 | Write a uint in little endian byte order. | ||
8465 | </summary> | ||
8466 | <param name="value">The value to write.</param> | ||
8467 | </member> | ||
8468 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipHelperStream.WriteLELong(System.Int64)"> | ||
8469 | <summary> | ||
8470 | Write a long in little endian byte order. | ||
8471 | </summary> | ||
8472 | <param name="value">The value to write.</param> | ||
8473 | </member> | ||
8474 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipHelperStream.WriteLEUlong(System.UInt64)"> | ||
8475 | <summary> | ||
8476 | Write a ulong in little endian byte order. | ||
8477 | </summary> | ||
8478 | <param name="value">The value to write.</param> | ||
8479 | </member> | ||
8480 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipHelperStream.WriteDataDescriptor(ICSharpCode.SharpZipLib.Zip.ZipEntry)"> | ||
8481 | <summary> | ||
8482 | Write a data descriptor. | ||
8483 | </summary> | ||
8484 | <param name="entry">The entry to write a descriptor for.</param> | ||
8485 | <returns>Returns the number of descriptor bytes written.</returns> | ||
8486 | </member> | ||
8487 | <member name="M:ICSharpCode.SharpZipLib.Zip.ZipHelperStream.ReadDataDescriptor(System.Boolean,ICSharpCode.SharpZipLib.Zip.DescriptorData)"> | ||
8488 | <summary> | ||
8489 | Read data descriptor at the end of compressed data. | ||
8490 | </summary> | ||
8491 | <param name="zip64">if set to <c>true</c> [zip64].</param> | ||
8492 | <param name="data">The data to fill in.</param> | ||
8493 | <returns>Returns the number of bytes read in the descriptor.</returns> | ||
8494 | </member> | ||
8495 | <member name="P:ICSharpCode.SharpZipLib.Zip.ZipHelperStream.IsStreamOwner"> | ||
8496 | <summary> | ||
8497 | Get / set a value indicating wether the the underlying stream is owned or not. | ||
8498 | </summary> | ||
8499 | <remarks>If the stream is owned it is closed when this instance is closed.</remarks> | ||
8500 | </member> | ||
8501 | <member name="T:ICSharpCode.SharpZipLib.Zip.Compression.Inflater"> | ||
8502 | <summary> | ||
8503 | Inflater is used to decompress data that has been compressed according | ||
8504 | to the "deflate" standard described in rfc1951. | ||
8505 | |||
8506 | By default Zlib (rfc1950) headers and footers are expected in the input. | ||
8507 | You can use constructor <code> public Inflater(bool noHeader)</code> passing true | ||
8508 | if there is no Zlib header information | ||
8509 | |||
8510 | The usage is as following. First you have to set some input with | ||
8511 | <code>SetInput()</code>, then Inflate() it. If inflate doesn't | ||
8512 | inflate any bytes there may be three reasons: | ||
8513 | <ul> | ||
8514 | <li>IsNeedingInput() returns true because the input buffer is empty. | ||
8515 | You have to provide more input with <code>SetInput()</code>. | ||
8516 | NOTE: IsNeedingInput() also returns true when, the stream is finished. | ||
8517 | </li> | ||
8518 | <li>IsNeedingDictionary() returns true, you have to provide a preset | ||
8519 | dictionary with <code>SetDictionary()</code>.</li> | ||
8520 | <li>IsFinished returns true, the inflater has finished.</li> | ||
8521 | </ul> | ||
8522 | Once the first output byte is produced, a dictionary will not be | ||
8523 | needed at a later stage. | ||
8524 | |||
8525 | author of the original java version : John Leuner, Jochen Hoenicke | ||
8526 | </summary> | ||
8527 | </member> | ||
8528 | <member name="F:ICSharpCode.SharpZipLib.Zip.Compression.Inflater.DECODE_HEADER"> | ||
8529 | <summary> | ||
8530 | These are the possible states for an inflater | ||
8531 | </summary> | ||
8532 | </member> | ||
8533 | <member name="F:ICSharpCode.SharpZipLib.Zip.Compression.Inflater.CPLENS"> | ||
8534 | <summary> | ||
8535 | Copy lengths for literal codes 257..285 | ||
8536 | </summary> | ||
8537 | </member> | ||
8538 | <member name="F:ICSharpCode.SharpZipLib.Zip.Compression.Inflater.CPLEXT"> | ||
8539 | <summary> | ||
8540 | Extra bits for literal codes 257..285 | ||
8541 | </summary> | ||
8542 | </member> | ||
8543 | <member name="F:ICSharpCode.SharpZipLib.Zip.Compression.Inflater.CPDIST"> | ||
8544 | <summary> | ||
8545 | Copy offsets for distance codes 0..29 | ||
8546 | </summary> | ||
8547 | </member> | ||
8548 | <member name="F:ICSharpCode.SharpZipLib.Zip.Compression.Inflater.CPDEXT"> | ||
8549 | <summary> | ||
8550 | Extra bits for distance codes | ||
8551 | </summary> | ||
8552 | </member> | ||
8553 | <member name="F:ICSharpCode.SharpZipLib.Zip.Compression.Inflater.mode"> | ||
8554 | <summary> | ||
8555 | This variable contains the current state. | ||
8556 | </summary> | ||
8557 | </member> | ||
8558 | <member name="F:ICSharpCode.SharpZipLib.Zip.Compression.Inflater.readAdler"> | ||
8559 | <summary> | ||
8560 | The adler checksum of the dictionary or of the decompressed | ||
8561 | stream, as it is written in the header resp. footer of the | ||
8562 | compressed stream. | ||
8563 | Only valid if mode is DECODE_DICT or DECODE_CHKSUM. | ||
8564 | </summary> | ||
8565 | </member> | ||
8566 | <member name="F:ICSharpCode.SharpZipLib.Zip.Compression.Inflater.neededBits"> | ||
8567 | <summary> | ||
8568 | The number of bits needed to complete the current state. This | ||
8569 | is valid, if mode is DECODE_DICT, DECODE_CHKSUM, | ||
8570 | DECODE_HUFFMAN_LENBITS or DECODE_HUFFMAN_DISTBITS. | ||
8571 | </summary> | ||
8572 | </member> | ||
8573 | <member name="F:ICSharpCode.SharpZipLib.Zip.Compression.Inflater.isLastBlock"> | ||
8574 | <summary> | ||
8575 | True, if the last block flag was set in the last block of the | ||
8576 | inflated stream. This means that the stream ends after the | ||
8577 | current block. | ||
8578 | </summary> | ||
8579 | </member> | ||
8580 | <member name="F:ICSharpCode.SharpZipLib.Zip.Compression.Inflater.totalOut"> | ||
8581 | <summary> | ||
8582 | The total number of inflated bytes. | ||
8583 | </summary> | ||
8584 | </member> | ||
8585 | <member name="F:ICSharpCode.SharpZipLib.Zip.Compression.Inflater.totalIn"> | ||
8586 | <summary> | ||
8587 | The total number of bytes set with setInput(). This is not the | ||
8588 | value returned by the TotalIn property, since this also includes the | ||
8589 | unprocessed input. | ||
8590 | </summary> | ||
8591 | </member> | ||
8592 | <member name="F:ICSharpCode.SharpZipLib.Zip.Compression.Inflater.noHeader"> | ||
8593 | <summary> | ||
8594 | This variable stores the noHeader flag that was given to the constructor. | ||
8595 | True means, that the inflated stream doesn't contain a Zlib header or | ||
8596 | footer. | ||
8597 | </summary> | ||
8598 | </member> | ||
8599 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.Inflater.#ctor"> | ||
8600 | <summary> | ||
8601 | Creates a new inflater or RFC1951 decompressor | ||
8602 | RFC1950/Zlib headers and footers will be expected in the input data | ||
8603 | </summary> | ||
8604 | </member> | ||
8605 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.Inflater.#ctor(System.Boolean)"> | ||
8606 | <summary> | ||
8607 | Creates a new inflater. | ||
8608 | </summary> | ||
8609 | <param name="noHeader"> | ||
8610 | True if no RFC1950/Zlib header and footer fields are expected in the input data | ||
8611 | |||
8612 | This is used for GZIPed/Zipped input. | ||
8613 | |||
8614 | For compatibility with | ||
8615 | Sun JDK you should provide one byte of input more than needed in | ||
8616 | this case. | ||
8617 | </param> | ||
8618 | </member> | ||
8619 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.Inflater.Reset"> | ||
8620 | <summary> | ||
8621 | Resets the inflater so that a new stream can be decompressed. All | ||
8622 | pending input and output will be discarded. | ||
8623 | </summary> | ||
8624 | </member> | ||
8625 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.Inflater.DecodeHeader"> | ||
8626 | <summary> | ||
8627 | Decodes a zlib/RFC1950 header. | ||
8628 | </summary> | ||
8629 | <returns> | ||
8630 | False if more input is needed. | ||
8631 | </returns> | ||
8632 | <exception cref="T:ICSharpCode.SharpZipLib.SharpZipBaseException"> | ||
8633 | The header is invalid. | ||
8634 | </exception> | ||
8635 | </member> | ||
8636 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.Inflater.DecodeDict"> | ||
8637 | <summary> | ||
8638 | Decodes the dictionary checksum after the deflate header. | ||
8639 | </summary> | ||
8640 | <returns> | ||
8641 | False if more input is needed. | ||
8642 | </returns> | ||
8643 | </member> | ||
8644 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.Inflater.DecodeHuffman"> | ||
8645 | <summary> | ||
8646 | Decodes the huffman encoded symbols in the input stream. | ||
8647 | </summary> | ||
8648 | <returns> | ||
8649 | false if more input is needed, true if output window is | ||
8650 | full or the current block ends. | ||
8651 | </returns> | ||
8652 | <exception cref="T:ICSharpCode.SharpZipLib.SharpZipBaseException"> | ||
8653 | if deflated stream is invalid. | ||
8654 | </exception> | ||
8655 | </member> | ||
8656 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.Inflater.DecodeChksum"> | ||
8657 | <summary> | ||
8658 | Decodes the adler checksum after the deflate stream. | ||
8659 | </summary> | ||
8660 | <returns> | ||
8661 | false if more input is needed. | ||
8662 | </returns> | ||
8663 | <exception cref="T:ICSharpCode.SharpZipLib.SharpZipBaseException"> | ||
8664 | If checksum doesn't match. | ||
8665 | </exception> | ||
8666 | </member> | ||
8667 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.Inflater.Decode"> | ||
8668 | <summary> | ||
8669 | Decodes the deflated stream. | ||
8670 | </summary> | ||
8671 | <returns> | ||
8672 | false if more input is needed, or if finished. | ||
8673 | </returns> | ||
8674 | <exception cref="T:ICSharpCode.SharpZipLib.SharpZipBaseException"> | ||
8675 | if deflated stream is invalid. | ||
8676 | </exception> | ||
8677 | </member> | ||
8678 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.Inflater.SetDictionary(System.Byte[])"> | ||
8679 | <summary> | ||
8680 | Sets the preset dictionary. This should only be called, if | ||
8681 | needsDictionary() returns true and it should set the same | ||
8682 | dictionary, that was used for deflating. The getAdler() | ||
8683 | function returns the checksum of the dictionary needed. | ||
8684 | </summary> | ||
8685 | <param name="buffer"> | ||
8686 | The dictionary. | ||
8687 | </param> | ||
8688 | </member> | ||
8689 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.Inflater.SetDictionary(System.Byte[],System.Int32,System.Int32)"> | ||
8690 | <summary> | ||
8691 | Sets the preset dictionary. This should only be called, if | ||
8692 | needsDictionary() returns true and it should set the same | ||
8693 | dictionary, that was used for deflating. The getAdler() | ||
8694 | function returns the checksum of the dictionary needed. | ||
8695 | </summary> | ||
8696 | <param name="buffer"> | ||
8697 | The dictionary. | ||
8698 | </param> | ||
8699 | <param name="index"> | ||
8700 | The index into buffer where the dictionary starts. | ||
8701 | </param> | ||
8702 | <param name="count"> | ||
8703 | The number of bytes in the dictionary. | ||
8704 | </param> | ||
8705 | <exception cref="T:System.InvalidOperationException"> | ||
8706 | No dictionary is needed. | ||
8707 | </exception> | ||
8708 | <exception cref="T:ICSharpCode.SharpZipLib.SharpZipBaseException"> | ||
8709 | The adler checksum for the buffer is invalid | ||
8710 | </exception> | ||
8711 | </member> | ||
8712 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.Inflater.SetInput(System.Byte[])"> | ||
8713 | <summary> | ||
8714 | Sets the input. This should only be called, if needsInput() | ||
8715 | returns true. | ||
8716 | </summary> | ||
8717 | <param name="buffer"> | ||
8718 | the input. | ||
8719 | </param> | ||
8720 | </member> | ||
8721 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.Inflater.SetInput(System.Byte[],System.Int32,System.Int32)"> | ||
8722 | <summary> | ||
8723 | Sets the input. This should only be called, if needsInput() | ||
8724 | returns true. | ||
8725 | </summary> | ||
8726 | <param name="buffer"> | ||
8727 | The source of input data | ||
8728 | </param> | ||
8729 | <param name="index"> | ||
8730 | The index into buffer where the input starts. | ||
8731 | </param> | ||
8732 | <param name="count"> | ||
8733 | The number of bytes of input to use. | ||
8734 | </param> | ||
8735 | <exception cref="T:System.InvalidOperationException"> | ||
8736 | No input is needed. | ||
8737 | </exception> | ||
8738 | <exception cref="T:System.ArgumentOutOfRangeException"> | ||
8739 | The index and/or count are wrong. | ||
8740 | </exception> | ||
8741 | </member> | ||
8742 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.Inflater.Inflate(System.Byte[])"> | ||
8743 | <summary> | ||
8744 | Inflates the compressed stream to the output buffer. If this | ||
8745 | returns 0, you should check, whether IsNeedingDictionary(), | ||
8746 | IsNeedingInput() or IsFinished() returns true, to determine why no | ||
8747 | further output is produced. | ||
8748 | </summary> | ||
8749 | <param name="buffer"> | ||
8750 | the output buffer. | ||
8751 | </param> | ||
8752 | <returns> | ||
8753 | The number of bytes written to the buffer, 0 if no further | ||
8754 | output can be produced. | ||
8755 | </returns> | ||
8756 | <exception cref="T:System.ArgumentOutOfRangeException"> | ||
8757 | if buffer has length 0. | ||
8758 | </exception> | ||
8759 | <exception cref="T:System.FormatException"> | ||
8760 | if deflated stream is invalid. | ||
8761 | </exception> | ||
8762 | </member> | ||
8763 | <member name="M:ICSharpCode.SharpZipLib.Zip.Compression.Inflater.Inflate(System.Byte[],System.Int32,System.Int32)"> | ||
8764 | <summary> | ||
8765 | Inflates the compressed stream to the output buffer. If this | ||
8766 | returns 0, you should check, whether needsDictionary(), | ||
8767 | needsInput() or finished() returns true, to determine why no | ||
8768 | further output is produced. | ||
8769 | </summary> | ||
8770 | <param name="buffer"> | ||
8771 | the output buffer. | ||
8772 | </param> | ||
8773 | <param name="offset"> | ||
8774 | the offset in buffer where storing starts. | ||
8775 | </param> | ||
8776 | <param name="count"> | ||
8777 | the maximum number of bytes to output. | ||
8778 | </param> | ||
8779 | <returns> | ||
8780 | the number of bytes written to the buffer, 0 if no further output can be produced. | ||
8781 | </returns> | ||
8782 | <exception cref="T:System.ArgumentOutOfRangeException"> | ||
8783 | if count is less than 0. | ||
8784 | </exception> | ||
8785 | <exception cref="T:System.ArgumentOutOfRangeException"> | ||
8786 | if the index and / or count are wrong. | ||
8787 | </exception> | ||
8788 | <exception cref="T:System.FormatException"> | ||
8789 | if deflated stream is invalid. | ||
8790 | </exception> | ||
8791 | </member> | ||
8792 | <member name="P:ICSharpCode.SharpZipLib.Zip.Compression.Inflater.IsNeedingInput"> | ||
8793 | <summary> | ||
8794 | Returns true, if the input buffer is empty. | ||
8795 | You should then call setInput(). | ||
8796 | NOTE: This method also returns true when the stream is finished. | ||
8797 | </summary> | ||
8798 | </member> | ||
8799 | <member name="P:ICSharpCode.SharpZipLib.Zip.Compression.Inflater.IsNeedingDictionary"> | ||
8800 | <summary> | ||
8801 | Returns true, if a preset dictionary is needed to inflate the input. | ||
8802 | </summary> | ||
8803 | </member> | ||
8804 | <member name="P:ICSharpCode.SharpZipLib.Zip.Compression.Inflater.IsFinished"> | ||
8805 | <summary> | ||
8806 | Returns true, if the inflater has finished. This means, that no | ||
8807 | input is needed and no output can be produced. | ||
8808 | </summary> | ||
8809 | </member> | ||
8810 | <member name="P:ICSharpCode.SharpZipLib.Zip.Compression.Inflater.Adler"> | ||
8811 | <summary> | ||
8812 | Gets the adler checksum. This is either the checksum of all | ||
8813 | uncompressed bytes returned by inflate(), or if needsDictionary() | ||
8814 | returns true (and thus no output was yet produced) this is the | ||
8815 | adler checksum of the expected dictionary. | ||
8816 | </summary> | ||
8817 | <returns> | ||
8818 | the adler checksum. | ||
8819 | </returns> | ||
8820 | </member> | ||
8821 | <member name="P:ICSharpCode.SharpZipLib.Zip.Compression.Inflater.TotalOut"> | ||
8822 | <summary> | ||
8823 | Gets the total number of output bytes returned by Inflate(). | ||
8824 | </summary> | ||
8825 | <returns> | ||
8826 | the total number of output bytes. | ||
8827 | </returns> | ||
8828 | </member> | ||
8829 | <member name="P:ICSharpCode.SharpZipLib.Zip.Compression.Inflater.TotalIn"> | ||
8830 | <summary> | ||
8831 | Gets the total number of processed compressed input bytes. | ||
8832 | </summary> | ||
8833 | <returns> | ||
8834 | The total number of bytes of processed input bytes. | ||
8835 | </returns> | ||
8836 | </member> | ||
8837 | <member name="P:ICSharpCode.SharpZipLib.Zip.Compression.Inflater.RemainingInput"> | ||
8838 | <summary> | ||
8839 | Gets the number of unprocessed input bytes. Useful, if the end of the | ||
8840 | stream is reached and you want to further process the bytes after | ||
8841 | the deflate stream. | ||
8842 | </summary> | ||
8843 | <returns> | ||
8844 | The number of bytes of the input which have not been processed. | ||
8845 | </returns> | ||
8846 | </member> | ||
8847 | <member name="T:ICSharpCode.SharpZipLib.BZip2.BZip2InputStream"> | ||
8848 | <summary> | ||
8849 | An input stream that decompresses files in the BZip2 format | ||
8850 | </summary> | ||
8851 | </member> | ||
8852 | <member name="M:ICSharpCode.SharpZipLib.BZip2.BZip2InputStream.#ctor(System.IO.Stream)"> | ||
8853 | <summary> | ||
8854 | Construct instance for reading from stream | ||
8855 | </summary> | ||
8856 | <param name="stream">Data source</param> | ||
8857 | </member> | ||
8858 | <member name="M:ICSharpCode.SharpZipLib.BZip2.BZip2InputStream.Flush"> | ||
8859 | <summary> | ||
8860 | Flushes the stream. | ||
8861 | </summary> | ||
8862 | </member> | ||
8863 | <member name="M:ICSharpCode.SharpZipLib.BZip2.BZip2InputStream.Seek(System.Int64,System.IO.SeekOrigin)"> | ||
8864 | <summary> | ||
8865 | Set the streams position. This operation is not supported and will throw a NotSupportedException | ||
8866 | </summary> | ||
8867 | <param name="offset">A byte offset relative to the <paramref name="origin"/> parameter.</param> | ||
8868 | <param name="origin">A value of type <see cref="T:System.IO.SeekOrigin"/> indicating the reference point used to obtain the new position.</param> | ||
8869 | <returns>The new position of the stream.</returns> | ||
8870 | <exception cref="T:System.NotSupportedException">Any access</exception> | ||
8871 | </member> | ||
8872 | <member name="M:ICSharpCode.SharpZipLib.BZip2.BZip2InputStream.SetLength(System.Int64)"> | ||
8873 | <summary> | ||
8874 | Sets the length of this stream to the given value. | ||
8875 | This operation is not supported and will throw a NotSupportedExceptionortedException | ||
8876 | </summary> | ||
8877 | <param name="value">The new length for the stream.</param> | ||
8878 | <exception cref="T:System.NotSupportedException">Any access</exception> | ||
8879 | </member> | ||
8880 | <member name="M:ICSharpCode.SharpZipLib.BZip2.BZip2InputStream.Write(System.Byte[],System.Int32,System.Int32)"> | ||
8881 | <summary> | ||
8882 | Writes a block of bytes to this stream using data from a buffer. | ||
8883 | This operation is not supported and will throw a NotSupportedException | ||
8884 | </summary> | ||
8885 | <param name="buffer">The buffer to source data from.</param> | ||
8886 | <param name="offset">The offset to start obtaining data from.</param> | ||
8887 | <param name="count">The number of bytes of data to write.</param> | ||
8888 | <exception cref="T:System.NotSupportedException">Any access</exception> | ||
8889 | </member> | ||
8890 | <member name="M:ICSharpCode.SharpZipLib.BZip2.BZip2InputStream.WriteByte(System.Byte)"> | ||
8891 | <summary> | ||
8892 | Writes a byte to the current position in the file stream. | ||
8893 | This operation is not supported and will throw a NotSupportedException | ||
8894 | </summary> | ||
8895 | <param name="value">The value to write.</param> | ||
8896 | <exception cref="T:System.NotSupportedException">Any access</exception> | ||
8897 | </member> | ||
8898 | <member name="M:ICSharpCode.SharpZipLib.BZip2.BZip2InputStream.Read(System.Byte[],System.Int32,System.Int32)"> | ||
8899 | <summary> | ||
8900 | Read a sequence of bytes and advances the read position by one byte. | ||
8901 | </summary> | ||
8902 | <param name="buffer">Array of bytes to store values in</param> | ||
8903 | <param name="offset">Offset in array to begin storing data</param> | ||
8904 | <param name="count">The maximum number of bytes to read</param> | ||
8905 | <returns>The total number of bytes read into the buffer. This might be less | ||
8906 | than the number of bytes requested if that number of bytes are not | ||
8907 | currently available or zero if the end of the stream is reached. | ||
8908 | </returns> | ||
8909 | </member> | ||
8910 | <member name="M:ICSharpCode.SharpZipLib.BZip2.BZip2InputStream.Close"> | ||
8911 | <summary> | ||
8912 | Closes the stream, releasing any associated resources. | ||
8913 | </summary> | ||
8914 | </member> | ||
8915 | <member name="M:ICSharpCode.SharpZipLib.BZip2.BZip2InputStream.ReadByte"> | ||
8916 | <summary> | ||
8917 | Read a byte from stream advancing position | ||
8918 | </summary> | ||
8919 | <returns>byte read or -1 on end of stream</returns> | ||
8920 | </member> | ||
8921 | <member name="P:ICSharpCode.SharpZipLib.BZip2.BZip2InputStream.IsStreamOwner"> | ||
8922 | <summary> | ||
8923 | Get/set flag indicating ownership of underlying stream. | ||
8924 | When the flag is true <see cref="M:ICSharpCode.SharpZipLib.BZip2.BZip2InputStream.Close"></see> will close the underlying stream also. | ||
8925 | </summary> | ||
8926 | </member> | ||
8927 | <member name="P:ICSharpCode.SharpZipLib.BZip2.BZip2InputStream.CanRead"> | ||
8928 | <summary> | ||
8929 | Gets a value indicating if the stream supports reading | ||
8930 | </summary> | ||
8931 | </member> | ||
8932 | <member name="P:ICSharpCode.SharpZipLib.BZip2.BZip2InputStream.CanSeek"> | ||
8933 | <summary> | ||
8934 | Gets a value indicating whether the current stream supports seeking. | ||
8935 | </summary> | ||
8936 | </member> | ||
8937 | <member name="P:ICSharpCode.SharpZipLib.BZip2.BZip2InputStream.CanWrite"> | ||
8938 | <summary> | ||
8939 | Gets a value indicating whether the current stream supports writing. | ||
8940 | This property always returns false | ||
8941 | </summary> | ||
8942 | </member> | ||
8943 | <member name="P:ICSharpCode.SharpZipLib.BZip2.BZip2InputStream.Length"> | ||
8944 | <summary> | ||
8945 | Gets the length in bytes of the stream. | ||
8946 | </summary> | ||
8947 | </member> | ||
8948 | <member name="P:ICSharpCode.SharpZipLib.BZip2.BZip2InputStream.Position"> | ||
8949 | <summary> | ||
8950 | Gets or sets the streams position. | ||
8951 | Setting the position is not supported and will throw a NotSupportException | ||
8952 | </summary> | ||
8953 | <exception cref="T:System.NotSupportedException">Any attempt to set the position</exception> | ||
8954 | </member> | ||
8955 | <member name="T:ICSharpCode.SharpZipLib.Checksums.Adler32"> | ||
8956 | <summary> | ||
8957 | Computes Adler32 checksum for a stream of data. An Adler32 | ||
8958 | checksum is not as reliable as a CRC32 checksum, but a lot faster to | ||
8959 | compute. | ||
8960 | |||
8961 | The specification for Adler32 may be found in RFC 1950. | ||
8962 | ZLIB Compressed Data Format Specification version 3.3) | ||
8963 | |||
8964 | |||
8965 | From that document: | ||
8966 | |||
8967 | "ADLER32 (Adler-32 checksum) | ||
8968 | This contains a checksum value of the uncompressed data | ||
8969 | (excluding any dictionary data) computed according to Adler-32 | ||
8970 | algorithm. This algorithm is a 32-bit extension and improvement | ||
8971 | of the Fletcher algorithm, used in the ITU-T X.224 / ISO 8073 | ||
8972 | standard. | ||
8973 | |||
8974 | Adler-32 is composed of two sums accumulated per byte: s1 is | ||
8975 | the sum of all bytes, s2 is the sum of all s1 values. Both sums | ||
8976 | are done modulo 65521. s1 is initialized to 1, s2 to zero. The | ||
8977 | Adler-32 checksum is stored as s2*65536 + s1 in most- | ||
8978 | significant-byte first (network) order." | ||
8979 | |||
8980 | "8.2. The Adler-32 algorithm | ||
8981 | |||
8982 | The Adler-32 algorithm is much faster than the CRC32 algorithm yet | ||
8983 | still provides an extremely low probability of undetected errors. | ||
8984 | |||
8985 | The modulo on unsigned long accumulators can be delayed for 5552 | ||
8986 | bytes, so the modulo operation time is negligible. If the bytes | ||
8987 | are a, b, c, the second sum is 3a + 2b + c + 3, and so is position | ||
8988 | and order sensitive, unlike the first sum, which is just a | ||
8989 | checksum. That 65521 is prime is important to avoid a possible | ||
8990 | large class of two-byte errors that leave the check unchanged. | ||
8991 | (The Fletcher checksum uses 255, which is not prime and which also | ||
8992 | makes the Fletcher check insensitive to single byte changes 0 - | ||
8993 | 255.) | ||
8994 | |||
8995 | The sum s1 is initialized to 1 instead of zero to make the length | ||
8996 | of the sequence part of s2, so that the length does not have to be | ||
8997 | checked separately. (Any sequence of zeroes has a Fletcher | ||
8998 | checksum of zero.)" | ||
8999 | </summary> | ||
9000 | <see cref="T:ICSharpCode.SharpZipLib.Zip.Compression.Streams.InflaterInputStream"/> | ||
9001 | <see cref="T:ICSharpCode.SharpZipLib.Zip.Compression.Streams.DeflaterOutputStream"/> | ||
9002 | </member> | ||
9003 | <member name="F:ICSharpCode.SharpZipLib.Checksums.Adler32.BASE"> | ||
9004 | <summary> | ||
9005 | largest prime smaller than 65536 | ||
9006 | </summary> | ||
9007 | </member> | ||
9008 | <member name="M:ICSharpCode.SharpZipLib.Checksums.Adler32.#ctor"> | ||
9009 | <summary> | ||
9010 | Creates a new instance of the Adler32 class. | ||
9011 | The checksum starts off with a value of 1. | ||
9012 | </summary> | ||
9013 | </member> | ||
9014 | <member name="M:ICSharpCode.SharpZipLib.Checksums.Adler32.Reset"> | ||
9015 | <summary> | ||
9016 | Resets the Adler32 checksum to the initial value. | ||
9017 | </summary> | ||
9018 | </member> | ||
9019 | <member name="M:ICSharpCode.SharpZipLib.Checksums.Adler32.Update(System.Int32)"> | ||
9020 | <summary> | ||
9021 | Updates the checksum with a byte value. | ||
9022 | </summary> | ||
9023 | <param name="value"> | ||
9024 | The data value to add. The high byte of the int is ignored. | ||
9025 | </param> | ||
9026 | </member> | ||
9027 | <member name="M:ICSharpCode.SharpZipLib.Checksums.Adler32.Update(System.Byte[])"> | ||
9028 | <summary> | ||
9029 | Updates the checksum with an array of bytes. | ||
9030 | </summary> | ||
9031 | <param name="buffer"> | ||
9032 | The source of the data to update with. | ||
9033 | </param> | ||
9034 | </member> | ||
9035 | <member name="M:ICSharpCode.SharpZipLib.Checksums.Adler32.Update(System.Byte[],System.Int32,System.Int32)"> | ||
9036 | <summary> | ||
9037 | Updates the checksum with the bytes taken from the array. | ||
9038 | </summary> | ||
9039 | <param name="buffer"> | ||
9040 | an array of bytes | ||
9041 | </param> | ||
9042 | <param name="offset"> | ||
9043 | the start of the data used for this update | ||
9044 | </param> | ||
9045 | <param name="count"> | ||
9046 | the number of bytes to use for this update | ||
9047 | </param> | ||
9048 | </member> | ||
9049 | <member name="P:ICSharpCode.SharpZipLib.Checksums.Adler32.Value"> | ||
9050 | <summary> | ||
9051 | Returns the Adler32 data checksum computed so far. | ||
9052 | </summary> | ||
9053 | </member> | ||
9054 | </members> | ||
9055 | </doc> | ||
diff --git a/bin/hdfsdll.dll.config b/bin/hdfsdll.dll.config deleted file mode 100644 index f1805fd..0000000 --- a/bin/hdfsdll.dll.config +++ /dev/null | |||
@@ -1,3 +0,0 @@ | |||
1 | <configuration> | ||
2 | <dllmap dll="hdfsdll" target="./hdfsdll.so" /> | ||
3 | </configuration> | ||
diff --git a/bin/hdfsdll.so b/bin/hdfsdll.so deleted file mode 100755 index cf79ffc..0000000 --- a/bin/hdfsdll.so +++ /dev/null | |||
Binary files differ | |||
diff --git a/bin/xmrhelpers.so b/bin/xmrhelpers.so deleted file mode 100755 index 6074da2..0000000 --- a/bin/xmrhelpers.so +++ /dev/null | |||
Binary files differ | |||