public void ActionMessageOneFrameEncoding() { ActionEventMessage originalMessage = new ActionEventMessage(); originalMessage.ActionFragment.ActionName = "TestInteractionName"; originalMessage.ActionFragment.SourceObjectId = Guid.NewGuid(); originalMessage.ActionFragment.ObservationRadius = 100; originalMessage.ActionFragment.ExtensionDialect = "TEST"; originalMessage.ActionFragment.ExtensionDialectMajorVersion = 1; originalMessage.ActionFragment.ExtensionDialectMinorVersion = 2; originalMessage.SetPayloadData(UTF8Encoding.UTF8.GetBytes( "1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890" + "1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890" + "12345")); byte[] encodedBytes = new byte[MxpConstants.MaxPacketSize]; Assert.AreEqual(originalMessage.FrameCount, 1); Assert.AreEqual(originalMessage.FrameDataSize(0), 255); originalMessage.EncodeFrameData(0, encodedBytes, 0); ActionEventMessage decodedMessage = new ActionEventMessage(); decodedMessage.DecodeFrameData(0, encodedBytes, 0, originalMessage.FrameDataSize(0)); // Message id is not decoded by DecodeFrameData decodedMessage.MessageId = originalMessage.MessageId; String originalMessageString = originalMessage.ToString(); String decodedMessageString = decodedMessage.ToString(); Assert.AreEqual(originalMessageString, decodedMessageString); }
public void OnObjectAction(ActionEventMessage actionEvent) { if ("Chat".Equals(actionEvent.ActionFragment.ActionName)) { OmChatExt omChatExt = actionEvent.GetExtension <OmChatExt>(); DeckProgram.DeckScene.AddChatMessage(actionEvent.ActionFragment.SourceObjectId, omChatExt.Message); } }
public void OnActionEvent(RemoteParticipant participant, ActionEventMessage actionEvent) { if (IdObjectDictionary.ContainsKey(actionEvent.ActionFragment.SourceObjectId)) { // only forwarding actions of known objects. TankObject obj = IdObjectDictionary[actionEvent.ActionFragment.SourceObjectId]; ObjectActed(actionEvent); } }
public void SendChatLine(String line) { ActionEventMessage chatActionEvent = new ActionEventMessage(); chatActionEvent.ActionFragment.ActionName = "Chat"; chatActionEvent.ActionFragment.SourceObjectId = deck.AvatarId; chatActionEvent.ActionFragment.ObservationRadius = 100; chatActionEvent.ActionFragment.ExtensionDialect = "TEXT"; chatActionEvent.SetPayloadData(UTF8Encoding.UTF8.GetBytes(line)); Client.Send(chatActionEvent); }
public void ObjectActed(ActionEventMessage actionEvent) { ActionEventMessage newActionEvent = new ActionEventMessage(); newActionEvent.ActionFragment.ActionName = actionEvent.ActionFragment.ActionName; newActionEvent.ActionFragment.SourceObjectId = actionEvent.ActionFragment.SourceObjectId; newActionEvent.ActionFragment.ExtensionDialect = actionEvent.ActionFragment.ExtensionDialect; newActionEvent.ActionFragment.SetExtensionData(actionEvent.ActionFragment.GetExtensionData()); for (int i = 0; i < Participants.Count; i++) { Participants[i].Session.Send(newActionEvent); } }
public void SendChatMessage(string message) { ActionEventMessage actionEvent = new ActionEventMessage(); actionEvent.ActionFragment.ObservationRadius = 1000; actionEvent.ActionFragment.ActionName = "Chat"; actionEvent.ActionFragment.SourceObjectId = AvatarId; OmChatExt omChatExt = new OmChatExt(); omChatExt.Message = message; actionEvent.SetExtension <OmChatExt>(omChatExt); DeckProgram.CloudView.ExecuteAction(actionEvent); }
public void ActionMessageThreeFrameEncoding() { ActionEventMessage originalMessage = new ActionEventMessage(); originalMessage.ActionFragment.ActionName = "TestInteractionName"; originalMessage.ActionFragment.SourceObjectId = Guid.NewGuid(); originalMessage.ActionFragment.ObservationRadius = 100; originalMessage.ActionFragment.ExtensionDialect = "TEST"; originalMessage.SetPayloadData(UTF8Encoding.UTF8.GetBytes( "1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890" + "1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890" + "1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890" + "1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890" + "1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890")); byte[] encodedBytes = new byte[MxpConstants.MaxPacketSize]; Assert.AreEqual(originalMessage.FrameCount, 3); Assert.AreEqual(originalMessage.FrameDataSize(0), 255); Assert.AreEqual(originalMessage.FrameDataSize(1), 255); Assert.AreEqual(originalMessage.FrameDataSize(2), 40); int currentIndex = originalMessage.EncodeFrameData(0, encodedBytes, 0); currentIndex = originalMessage.EncodeFrameData(1, encodedBytes, currentIndex); currentIndex = originalMessage.EncodeFrameData(2, encodedBytes, currentIndex); ActionEventMessage decodedMessage = new ActionEventMessage(); int currentDecodeIndex = decodedMessage.DecodeFrameData(0, encodedBytes, 0, originalMessage.FrameDataSize(0)); currentDecodeIndex = decodedMessage.DecodeFrameData(1, encodedBytes, currentDecodeIndex, originalMessage.FrameDataSize(1)); currentDecodeIndex = decodedMessage.DecodeFrameData(2, encodedBytes, currentDecodeIndex, originalMessage.FrameDataSize(2)); decodedMessage.MessageId = originalMessage.MessageId; String originalMessageString = originalMessage.ToString(); String decodedMessageString = decodedMessage.ToString(); Assert.AreEqual(originalMessageString, decodedMessageString); }
public void ActionMessageClear() { ActionEventMessage originalMessage = new ActionEventMessage(); originalMessage.ActionFragment.ActionName = "TestInteractionName"; originalMessage.ActionFragment.SourceObjectId = Guid.NewGuid(); originalMessage.ActionFragment.ObservationRadius = 100; originalMessage.ActionFragment.ExtensionDialect = "TEST"; originalMessage.ActionFragment.ExtensionDialectMajorVersion = 1; originalMessage.ActionFragment.ExtensionDialectMinorVersion = 2; originalMessage.SetPayloadData(UTF8Encoding.UTF8.GetBytes( "1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890" + "1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890" + "1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890" + "1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890")); originalMessage.Clear(); ActionEventMessage emptyMessage = new ActionEventMessage(); emptyMessage.MessageId = originalMessage.MessageId; Assert.AreEqual(originalMessage.ToString(), emptyMessage.ToString()); }
public void ActionMessageEncoding() { ActionEventMessage originalMessage = new ActionEventMessage(); originalMessage.ActionFragment.ActionName = "TestInteractionName"; originalMessage.ActionFragment.SourceObjectId = Guid.NewGuid(); originalMessage.ActionFragment.ObservationRadius = 100; OmChatExt originalChatFragment = new OmChatExt(); originalChatFragment.Message = "TestChatMessage"; originalMessage.SetExtension <OmChatExt>(originalChatFragment); byte[] encodedBytes = new byte[MxpConstants.MaxPacketSize]; Assert.AreEqual(originalMessage.FrameCount, 1); Assert.AreEqual(originalMessage.FrameDataSize(0), 67); int currentIndex = originalMessage.EncodeFrameData(0, encodedBytes, 0); ActionEventMessage decodedMessage = new ActionEventMessage(); decodedMessage.MessageId = originalMessage.MessageId; int currentDecodeIndex = decodedMessage.DecodeFrameData(0, encodedBytes, 0, originalMessage.FrameDataSize(0)); OmChatExt decodedChatFragment = decodedMessage.GetExtension <OmChatExt>(); String originalMessageString = originalMessage.ToString(); String decodedMessageString = decodedMessage.ToString(); Assert.AreEqual(originalMessageString, decodedMessageString); Assert.AreEqual(originalChatFragment.Message, decodedChatFragment.Message); }
public void ExecuteAction(ActionEventMessage action) { client.Send(action); }
public void OnMessage(Message message) { if (message.GetType() == typeof(JoinResponseMessage)) { JoinResponseMessage joinResponse = (JoinResponseMessage)message; if (joinResponse.FailureCode == MxpResponseCodes.SUCCESS) { Bubble.BubbleName = joinResponse.BubbleName; Bubble.CloudUrl = joinResponse.BubbleAssetCacheUrl; Bubble.ServerProgramName = joinResponse.ProgramName; Bubble.ServerProgramMajorVersion = joinResponse.ProgramMajorVersion; Bubble.ServerProgramMinorVersion = joinResponse.ProgramMinorVersion; Bubble.ServerProtocolMajorVersion = joinResponse.ProtocolMajorVersion; Bubble.ServerProtocolMinorVersion = joinResponse.ProtocolMinorVersion; Bubble.ServerProtocolSourceRevision = (int)joinResponse.ProtocolSourceRevision; Bubble.BubbleRange = 100; } } if (message.GetType() == typeof(PerceptionEventMessage)) { PerceptionEventMessage perception = (PerceptionEventMessage)message; ObjectFragment fragment = perception.ObjectFragment; DeckObject obj = null; if (!Bubble.Objects.ContainsKey(fragment.ObjectIndex)) { obj = new DeckObject(); Bubble.Objects.Add(fragment.ObjectIndex, obj); Bubble.IdObjectDictionary.Add(fragment.ObjectId, obj); } else { obj = Bubble.Objects[fragment.ObjectIndex]; } obj.SetValues(fragment); if (perception.ObjectFragment.ObjectId == deck.AvatarId) { deck.ReceivedAvatarObject = obj; } } if (message.GetType() == typeof(MovementEventMessage)) { MovementEventMessage movement = (MovementEventMessage)message; DeckObject obj = null; if (Bubble.Objects.ContainsKey(movement.ObjectIndex)) { obj = Bubble.Objects[movement.ObjectIndex]; obj.SetValues(movement); } } if (message.GetType() == typeof(DisappearanceEventMessage)) { DisappearanceEventMessage disappearance = (DisappearanceEventMessage)message; if (Bubble.Objects.ContainsKey(disappearance.ObjectIndex)) { if (Bubble.Objects.ContainsKey(disappearance.ObjectIndex)) { DeckObject obj = Bubble.Objects[disappearance.ObjectIndex]; Bubble.IdObjectDictionary.Remove(obj.ObjectId); Bubble.Objects.Remove(disappearance.ObjectIndex); } } } if (message.GetType() == typeof(ActionEventMessage)) { ActionEventMessage actionEvent = (ActionEventMessage)message; String sourceObjectIdentifier = null; if (Bubble.IdObjectDictionary.ContainsKey(actionEvent.ActionFragment.SourceObjectId)) { DeckObject obj = Bubble.IdObjectDictionary[actionEvent.ActionFragment.SourceObjectId]; sourceObjectIdentifier = obj.ObjectName; } else { sourceObjectIdentifier = actionEvent.ActionFragment.SourceObjectId.ToString(); } deck.ConsoleLines.Add(sourceObjectIdentifier + " " + actionEvent.ActionFragment.ActionName + " (" + actionEvent.ActionFragment.ExtensionDialect + "): " + Encoding.UTF8.GetString(actionEvent.ActionFragment.GetExtensionData(), 0, (int)actionEvent.ActionFragment.ExtensionLength)); } }
private void LoadReferenceMessages() { udpClient = new UdpClient(UdpClientPort); // Control messages { AcknowledgeMessage originalMessage = new AcknowledgeMessage(); originalMessage.MessageId = 1; originalMessage.AddPacketId(1); originalMessage.AddPacketId(2); originalMessage.AddPacketId(3); originalMessage.AddPacketId(4); originalMessage.AddPacketId(5); SerializeReferenceMessage(originalMessage); } { AttachRequestMessage originalMessage = new AttachRequestMessage(); originalMessage.MessageId = 1; originalMessage.TargetBubbleId = new Guid("aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee"); originalMessage.SourceBubbleFragment.BubbleId = new Guid("aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee"); originalMessage.SourceBubbleFragment.BubbleName = "TestBubble1"; originalMessage.SourceBubbleFragment.BubbleAssetCacheUrl = "TestCloudUrl"; originalMessage.SourceBubbleFragment.BubbleAddress = "TestBubbleAddress"; originalMessage.SourceBubbleFragment.BubblePort = 1; originalMessage.SourceBubbleFragment.BubbleCenter.X = 2; originalMessage.SourceBubbleFragment.BubbleCenter.Y = 3; originalMessage.SourceBubbleFragment.BubbleCenter.Z = 4; originalMessage.SourceBubbleFragment.BubbleRange = 5; originalMessage.SourceBubbleFragment.BubblePerceptionRange = 6; originalMessage.SourceBubbleFragment.BubbleRealTime = 7; originalMessage.ProgramName = "TestProgramName"; originalMessage.ProgramMajorVersion = 1; originalMessage.ProgramMinorVersion = 2; originalMessage.ProtocolMajorVersion = 3; originalMessage.ProtocolMinorVersion = 4; originalMessage.ProtocolSourceRevision = 5; SerializeReferenceMessage(originalMessage); } { AttachResponseMessage originalMessage = new AttachResponseMessage(); originalMessage.MessageId = 1; originalMessage.RequestMessageId = 1; originalMessage.FailureCode = 2; originalMessage.TargetBubbleFragment.BubbleId = new Guid("aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee"); originalMessage.TargetBubbleFragment.BubbleName = "TestBubble1"; originalMessage.TargetBubbleFragment.BubbleAssetCacheUrl = "TestCloudUrl"; originalMessage.TargetBubbleFragment.BubbleAddress = "TestBubbleAddress"; originalMessage.TargetBubbleFragment.BubblePort = 1; originalMessage.TargetBubbleFragment.BubbleCenter.X = 2; originalMessage.TargetBubbleFragment.BubbleCenter.Y = 3; originalMessage.TargetBubbleFragment.BubbleCenter.Z = 4; originalMessage.TargetBubbleFragment.BubbleRange = 5; originalMessage.TargetBubbleFragment.BubblePerceptionRange = 6; originalMessage.TargetBubbleFragment.BubbleRealTime = 7; originalMessage.ProgramName = "TestProgramName"; originalMessage.ProgramMajorVersion = 1; originalMessage.ProgramMinorVersion = 2; originalMessage.ProtocolMajorVersion = 3; originalMessage.ProtocolMinorVersion = 4; originalMessage.ProtocolSourceRevision = 5; SerializeReferenceMessage(originalMessage); } { ChallengeRequestMessage originalMessage = new ChallengeRequestMessage(); originalMessage.MessageId = 1; for (int i = 0; i < originalMessage.ChallengeRequestBytes.Length; i++) { originalMessage.ChallengeRequestBytes[i] = (byte)i; } SerializeReferenceMessage(originalMessage); } { ChallengeResponseMessage originalMessage = new ChallengeResponseMessage(); originalMessage.MessageId = 1; for (int i = 0; i < originalMessage.ChallengeResponseBytes.Length; i++) { originalMessage.ChallengeResponseBytes[i] = (byte)i; } SerializeReferenceMessage(originalMessage); } { DetachRequestMessage originalMessage = new DetachRequestMessage(); originalMessage.MessageId = 1; SerializeReferenceMessage(originalMessage); } { DetachResponseMessage originalMessage = new DetachResponseMessage(); originalMessage.MessageId = 1; originalMessage.RequestMessageId = 1; originalMessage.FailureCode = 2; SerializeReferenceMessage(originalMessage); } { JoinRequestMessage originalMessage = new JoinRequestMessage(); originalMessage.MessageId = 1; originalMessage.BubbleId = new Guid("aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee"); originalMessage.BubbleName = "TestBubbleName"; originalMessage.LocationName = "TestLocation"; originalMessage.IdentityProviderUrl = "IdentityProviderUrl"; originalMessage.ParticipantIdentifier = "TestParticipantName"; originalMessage.ParticipantSecret = "TestParticipantPassphrase"; originalMessage.ParticipantRealTime = 10; originalMessage.ProgramName = "TestProgramName"; originalMessage.ProgramMajorVersion = 1; originalMessage.ProgramMinorVersion = 2; originalMessage.ProtocolMajorVersion = 3; originalMessage.ProtocolMinorVersion = 4; originalMessage.ProtocolSourceRevision = 5; SerializeReferenceMessage(originalMessage); } { JoinResponseMessage originalMessage = new JoinResponseMessage(); originalMessage.MessageId = 1; originalMessage.RequestMessageId = 1; originalMessage.FailureCode = 2; originalMessage.BubbleId = Guid.Empty; originalMessage.ParticipantId = Guid.Empty; originalMessage.AvatarId = Guid.Empty; originalMessage.BubbleName = "TestBubbleName"; originalMessage.BubbleAssetCacheUrl = "TestBubbleAssetCacheUrl"; originalMessage.BubbleRange = 3; originalMessage.BubblePerceptionRange = 4; originalMessage.BubbleRealTime = 5; originalMessage.ProgramName = "TestProgramName"; originalMessage.ProgramMajorVersion = 6; originalMessage.ProgramMinorVersion = 7; originalMessage.ProtocolMajorVersion = 8; originalMessage.ProtocolMinorVersion = 9; originalMessage.ProtocolSourceRevision = 10; SerializeReferenceMessage(originalMessage); } { KeepaliveMessage originalMessage = new KeepaliveMessage(); originalMessage.MessageId = 1; SerializeReferenceMessage(originalMessage); } { LeaveRequestMessage originalMessage = new LeaveRequestMessage(); originalMessage.MessageId = 1; SerializeReferenceMessage(originalMessage); } { LeaveResponseMessage originalMessage = new LeaveResponseMessage(); originalMessage.MessageId = 1; originalMessage.RequestMessageId = 1; originalMessage.FailureCode = 2; SerializeReferenceMessage(originalMessage); } { ListBubblesRequest originalMessage = new ListBubblesRequest(); originalMessage.MessageId = 1; originalMessage.ListType = ListBubblesRequest.ListTypeHosted; SerializeReferenceMessage(originalMessage); } { ListBubblesResponse originalMessage = new ListBubblesResponse(); originalMessage.MessageId = 1; { BubbleFragment bubbleEntry = new BubbleFragment(); bubbleEntry.BubbleId = new Guid("aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee"); bubbleEntry.BubbleName = "TestBubble1"; bubbleEntry.BubbleAssetCacheUrl = "TestCloudUrl"; bubbleEntry.BubbleAddress = "TestBubbleAddress"; bubbleEntry.BubblePort = 1; bubbleEntry.BubbleCenter.X = 2; bubbleEntry.BubbleCenter.Y = 3; bubbleEntry.BubbleCenter.Z = 4; bubbleEntry.BubbleRange = 5; bubbleEntry.BubblePerceptionRange = 6; bubbleEntry.BubbleRealTime = 7; originalMessage.AddBubbleFragment(bubbleEntry); } { BubbleFragment bubbleEntry = new BubbleFragment(); bubbleEntry.BubbleId = new Guid("aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee"); bubbleEntry.BubbleName = "TestBubble2"; bubbleEntry.BubbleAssetCacheUrl = "TestCloudUrl"; bubbleEntry.BubbleAddress = "TestBubbleAddress"; bubbleEntry.BubblePort = 1; bubbleEntry.BubbleCenter.X = 2; bubbleEntry.BubbleCenter.Y = 3; bubbleEntry.BubbleCenter.Z = 4; bubbleEntry.BubbleRange = 5; bubbleEntry.BubblePerceptionRange = 6; bubbleEntry.BubbleRealTime = 7; originalMessage.AddBubbleFragment(bubbleEntry); } { BubbleFragment bubbleEntry = new BubbleFragment(); bubbleEntry.BubbleId = new Guid("aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee"); bubbleEntry.BubbleName = "TestBubble3"; bubbleEntry.BubbleAssetCacheUrl = "TestCloudUrl"; bubbleEntry.BubbleAddress = "TestBubbleAddress"; bubbleEntry.BubblePort = 1; bubbleEntry.BubbleCenter.X = 2; bubbleEntry.BubbleCenter.Y = 3; bubbleEntry.BubbleCenter.Z = 4; bubbleEntry.BubbleRange = 5; bubbleEntry.BubblePerceptionRange = 6; bubbleEntry.BubbleRealTime = 7; originalMessage.AddBubbleFragment(bubbleEntry); } { BubbleFragment bubbleEntry = new BubbleFragment(); bubbleEntry.BubbleId = new Guid("aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee"); bubbleEntry.BubbleName = "TestBubble4"; bubbleEntry.BubbleAssetCacheUrl = "TestCloudUrl"; bubbleEntry.BubbleAddress = "TestBubbleAddress"; bubbleEntry.BubblePort = 1; bubbleEntry.BubbleCenter.X = 2; bubbleEntry.BubbleCenter.Y = 3; bubbleEntry.BubbleCenter.Z = 4; bubbleEntry.BubbleRange = 5; bubbleEntry.BubblePerceptionRange = 6; bubbleEntry.BubbleRealTime = 7; originalMessage.AddBubbleFragment(bubbleEntry); } { BubbleFragment bubbleEntry = new BubbleFragment(); bubbleEntry.BubbleId = new Guid("aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee"); bubbleEntry.BubbleName = "TestBubble5"; bubbleEntry.BubbleAssetCacheUrl = "TestCloudUrl"; bubbleEntry.BubbleAddress = "TestBubbleAddress"; bubbleEntry.BubblePort = 1; bubbleEntry.BubbleCenter.X = 2; bubbleEntry.BubbleCenter.Y = 3; bubbleEntry.BubbleCenter.Z = 4; bubbleEntry.BubbleRange = 5; bubbleEntry.BubblePerceptionRange = 6; bubbleEntry.BubbleRealTime = 7; originalMessage.AddBubbleFragment(bubbleEntry); } SerializeReferenceMessage(originalMessage); } { ThrottleMessage originalMessage = new ThrottleMessage(); originalMessage.MessageId = 1; originalMessage.BytesPerSecond = 10000; SerializeReferenceMessage(originalMessage); } // Command messages { EjectRequestMessage originalMessage = new EjectRequestMessage(); originalMessage.MessageId = 1; originalMessage.ObjectId = new Guid("aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee"); SerializeReferenceMessage(originalMessage); } { EjectResponseMessage originalMessage = new EjectResponseMessage(); originalMessage.MessageId = 1; originalMessage.RequestMessageId = 1; originalMessage.FailureCode = 2; SerializeReferenceMessage(originalMessage); } { ExamineRequestMessage originalMessage = new ExamineRequestMessage(); originalMessage.MessageId = 1; originalMessage.ObjectId = new Guid("aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee"); originalMessage.ObjectIndex = 1; SerializeReferenceMessage(originalMessage); } { ExamineResponseMessage originalMessage = new ExamineResponseMessage(); originalMessage.MessageId = 1; originalMessage.RequestMessageId = 1; originalMessage.FailureCode = 2; originalMessage.ObjectFragment.ObjectId = new Guid("aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee"); originalMessage.ObjectFragment.ObjectIndex = 1; originalMessage.ObjectFragment.TypeId = new Guid("aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee"); originalMessage.ObjectFragment.ObjectName = "TestObjectName"; originalMessage.ObjectFragment.TypeName = "TestTypeName"; originalMessage.ObjectFragment.OwnerId = new Guid("aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee"); originalMessage.ObjectFragment.Location.X = 1; originalMessage.ObjectFragment.Location.Y = 2; originalMessage.ObjectFragment.Location.Z = 3; originalMessage.ObjectFragment.Velocity.X = 4; originalMessage.ObjectFragment.Velocity.Y = 5; originalMessage.ObjectFragment.Velocity.Z = 6; originalMessage.ObjectFragment.Acceleration.X = 7; originalMessage.ObjectFragment.Acceleration.Y = 8; originalMessage.ObjectFragment.Acceleration.Z = 9; originalMessage.ObjectFragment.Orientation.X = 10; originalMessage.ObjectFragment.Orientation.Y = 11; originalMessage.ObjectFragment.Orientation.Z = 12; originalMessage.ObjectFragment.Orientation.W = 13; originalMessage.ObjectFragment.AngularVelocity.X = 14; originalMessage.ObjectFragment.AngularVelocity.Y = 15; originalMessage.ObjectFragment.AngularVelocity.Z = 16; originalMessage.ObjectFragment.AngularVelocity.W = 17; originalMessage.ObjectFragment.AngularAcceleration.X = 18; originalMessage.ObjectFragment.AngularAcceleration.Y = 19; originalMessage.ObjectFragment.AngularAcceleration.Z = 20; originalMessage.ObjectFragment.AngularAcceleration.W = 21; originalMessage.ObjectFragment.BoundingSphereRadius = 22; originalMessage.ObjectFragment.Mass = 23; originalMessage.ObjectFragment.ExtensionDialect = "TEST"; originalMessage.ObjectFragment.SetExtensionData(UTF8Encoding.UTF8.GetBytes( "1234567890123456789012345678901234567890")); SerializeReferenceMessage(originalMessage); } { HandoverRequestMessage originalMessage = new HandoverRequestMessage(); originalMessage.MessageId = 1; originalMessage.SourceBubbleId = new Guid("aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee"); originalMessage.TargetBubbleId = new Guid("aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee"); originalMessage.ObjectFragment.ObjectId = new Guid("aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee"); originalMessage.ObjectFragment.ObjectIndex = 1; originalMessage.ObjectFragment.TypeId = new Guid("aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee"); originalMessage.ObjectFragment.ObjectName = "TestObjectName"; originalMessage.ObjectFragment.TypeName = "TestTypeName"; originalMessage.ObjectFragment.OwnerId = new Guid("aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee"); originalMessage.ObjectFragment.Location.X = 1; originalMessage.ObjectFragment.Location.Y = 2; originalMessage.ObjectFragment.Location.Z = 3; originalMessage.ObjectFragment.Velocity.X = 4; originalMessage.ObjectFragment.Velocity.Y = 5; originalMessage.ObjectFragment.Velocity.Z = 6; originalMessage.ObjectFragment.Acceleration.X = 7; originalMessage.ObjectFragment.Acceleration.Y = 8; originalMessage.ObjectFragment.Acceleration.Z = 9; originalMessage.ObjectFragment.Orientation.X = 10; originalMessage.ObjectFragment.Orientation.Y = 11; originalMessage.ObjectFragment.Orientation.Z = 12; originalMessage.ObjectFragment.Orientation.W = 13; originalMessage.ObjectFragment.AngularVelocity.X = 14; originalMessage.ObjectFragment.AngularVelocity.Y = 15; originalMessage.ObjectFragment.AngularVelocity.Z = 16; originalMessage.ObjectFragment.AngularVelocity.W = 17; originalMessage.ObjectFragment.AngularAcceleration.X = 18; originalMessage.ObjectFragment.AngularAcceleration.Y = 19; originalMessage.ObjectFragment.AngularAcceleration.Z = 20; originalMessage.ObjectFragment.AngularAcceleration.W = 21; originalMessage.ObjectFragment.BoundingSphereRadius = 22; originalMessage.ObjectFragment.Mass = 23; originalMessage.ObjectFragment.ExtensionDialect = "TEST"; originalMessage.ObjectFragment.SetExtensionData(UTF8Encoding.UTF8.GetBytes( "1234567890123")); SerializeReferenceMessage(originalMessage); } { HandoverResponseMessage originalMessage = new HandoverResponseMessage(); originalMessage.MessageId = 1; originalMessage.RequestMessageId = 1; originalMessage.FailureCode = 2; SerializeReferenceMessage(originalMessage); } { InjectRequestMessage originalMessage = new InjectRequestMessage(); originalMessage.MessageId = 1; originalMessage.ObjectFragment.ObjectId = new Guid("aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee"); originalMessage.ObjectFragment.ObjectIndex = 1; originalMessage.ObjectFragment.TypeId = new Guid("aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee"); originalMessage.ObjectFragment.ObjectName = "TestObjectName"; originalMessage.ObjectFragment.TypeName = "TestTypeName"; originalMessage.ObjectFragment.OwnerId = new Guid("aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee"); originalMessage.ObjectFragment.Location.X = 1; originalMessage.ObjectFragment.Location.Y = 2; originalMessage.ObjectFragment.Location.Z = 3; originalMessage.ObjectFragment.Velocity.X = 4; originalMessage.ObjectFragment.Velocity.Y = 5; originalMessage.ObjectFragment.Velocity.Z = 6; originalMessage.ObjectFragment.Acceleration.X = 7; originalMessage.ObjectFragment.Acceleration.Y = 8; originalMessage.ObjectFragment.Acceleration.Z = 9; originalMessage.ObjectFragment.Orientation.X = 10; originalMessage.ObjectFragment.Orientation.Y = 11; originalMessage.ObjectFragment.Orientation.Z = 12; originalMessage.ObjectFragment.Orientation.W = 13; originalMessage.ObjectFragment.AngularVelocity.X = 14; originalMessage.ObjectFragment.AngularVelocity.Y = 15; originalMessage.ObjectFragment.AngularVelocity.Z = 16; originalMessage.ObjectFragment.AngularVelocity.W = 17; originalMessage.ObjectFragment.AngularAcceleration.X = 18; originalMessage.ObjectFragment.AngularAcceleration.Y = 19; originalMessage.ObjectFragment.AngularAcceleration.Z = 20; originalMessage.ObjectFragment.AngularAcceleration.W = 21; originalMessage.ObjectFragment.BoundingSphereRadius = 22; originalMessage.ObjectFragment.Mass = 23; originalMessage.ObjectFragment.ExtensionDialect = "TEST"; originalMessage.ObjectFragment.ExtensionDialectMajorVersion = 24; originalMessage.ObjectFragment.ExtensionDialectMinorVersion = 25; originalMessage.ObjectFragment.SetExtensionData(UTF8Encoding.UTF8.GetBytes( "123456789012345678901234567890123456789012345")); SerializeReferenceMessage(originalMessage); } { InjectResponseMessage originalMessage = new InjectResponseMessage(); originalMessage.MessageId = 1; originalMessage.RequestMessageId = 1; originalMessage.FailureCode = 2; SerializeReferenceMessage(originalMessage); } { InteractRequestMessage originalMessage = new InteractRequestMessage(); originalMessage.MessageId = 1; originalMessage.InteractionFragment.InteractionName = "TestInteractionName"; originalMessage.InteractionFragment.SourceParticipantId = new Guid("aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee"); originalMessage.InteractionFragment.SourceObjectId = new Guid("aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee"); originalMessage.InteractionFragment.TargetParticipantId = new Guid("aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee"); originalMessage.InteractionFragment.TargetObjectId = new Guid("aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee"); originalMessage.InteractionFragment.ExtensionDialect = "TEST"; originalMessage.SetInteractionPayloadData(UTF8Encoding.UTF8.GetBytes( "1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890" + "1234567890123456789012345678901234567890123456789012345678901")); SerializeReferenceMessage(originalMessage); } { InteractResponseMessage originalMessage = new InteractResponseMessage(); originalMessage.MessageId = 1; originalMessage.RequestMessageId = 1; originalMessage.FailureCode = 2; originalMessage.InteractionFragment.InteractionName = "TestInteractionName"; originalMessage.InteractionFragment.SourceParticipantId = new Guid("aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee"); originalMessage.InteractionFragment.SourceObjectId = new Guid("aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee"); originalMessage.InteractionFragment.TargetParticipantId = new Guid("aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee"); originalMessage.InteractionFragment.TargetObjectId = new Guid("aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee"); originalMessage.InteractionFragment.ExtensionDialect = "TEST"; originalMessage.SetInteractionPayloadData(UTF8Encoding.UTF8.GetBytes( "1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890" + "12345678901234567890123456789012345678901234567890123456")); SerializeReferenceMessage(originalMessage); } { ModifyRequestMessage originalMessage = new ModifyRequestMessage(); originalMessage.MessageId = 1; originalMessage.ObjectFragment.ObjectId = new Guid("aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee"); originalMessage.ObjectFragment.ObjectIndex = 1; originalMessage.ObjectFragment.TypeId = new Guid("aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee"); originalMessage.ObjectFragment.ObjectName = "TestObjectName"; originalMessage.ObjectFragment.TypeName = "TestTypeName"; originalMessage.ObjectFragment.OwnerId = new Guid("aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee"); originalMessage.ObjectFragment.Location.X = 1; originalMessage.ObjectFragment.Location.Y = 2; originalMessage.ObjectFragment.Location.Z = 3; originalMessage.ObjectFragment.Velocity.X = 4; originalMessage.ObjectFragment.Velocity.Y = 5; originalMessage.ObjectFragment.Velocity.Z = 6; originalMessage.ObjectFragment.Acceleration.X = 7; originalMessage.ObjectFragment.Acceleration.Y = 8; originalMessage.ObjectFragment.Acceleration.Z = 9; originalMessage.ObjectFragment.Orientation.X = 10; originalMessage.ObjectFragment.Orientation.Y = 11; originalMessage.ObjectFragment.Orientation.Z = 12; originalMessage.ObjectFragment.Orientation.W = 13; originalMessage.ObjectFragment.AngularVelocity.X = 14; originalMessage.ObjectFragment.AngularVelocity.Y = 15; originalMessage.ObjectFragment.AngularVelocity.Z = 16; originalMessage.ObjectFragment.AngularVelocity.W = 17; originalMessage.ObjectFragment.AngularAcceleration.X = 18; originalMessage.ObjectFragment.AngularAcceleration.Y = 19; originalMessage.ObjectFragment.AngularAcceleration.Z = 20; originalMessage.ObjectFragment.AngularAcceleration.W = 21; originalMessage.ObjectFragment.BoundingSphereRadius = 22; originalMessage.ObjectFragment.Mass = 23; originalMessage.ObjectFragment.ExtensionDialect = "TEST"; originalMessage.ObjectFragment.SetExtensionData(UTF8Encoding.UTF8.GetBytes( "1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890" + "1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890" + "1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890" + "12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678")); SerializeReferenceMessage(originalMessage); } { ModifyResponseMessage originalMessage = new ModifyResponseMessage(); originalMessage.MessageId = 1; originalMessage.RequestMessageId = 1; originalMessage.FailureCode = 2; SerializeReferenceMessage(originalMessage); } // Event messages { ActionEventMessage originalMessage = new ActionEventMessage(); originalMessage.MessageId = 1; originalMessage.ActionFragment.ActionName = "TestInteractionName"; originalMessage.ActionFragment.SourceObjectId = new Guid("aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee"); originalMessage.ActionFragment.ObservationRadius = 100; originalMessage.ActionFragment.ExtensionDialect = "TEST"; originalMessage.ActionFragment.ExtensionDialectMajorVersion = 1; originalMessage.ActionFragment.ExtensionDialectMinorVersion = 2; originalMessage.SetPayloadData(UTF8Encoding.UTF8.GetBytes( "1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890" + "1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890" + "12345")); SerializeReferenceMessage(originalMessage); } { DisappearanceEventMessage originalMessage = new DisappearanceEventMessage(); originalMessage.MessageId = 1; originalMessage.ObjectIndex = 1; SerializeReferenceMessage(originalMessage); } { HandoverEventMessage originalMessage = new HandoverEventMessage(); originalMessage.MessageId = 1; originalMessage.SourceBubbleId = new Guid("aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee"); originalMessage.TargetBubbleId = new Guid("aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee"); originalMessage.ObjectFragment.ObjectId = new Guid("aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee"); originalMessage.ObjectFragment.ObjectIndex = 1; originalMessage.ObjectFragment.TypeId = new Guid("aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee"); originalMessage.ObjectFragment.ObjectName = "TestObjectName"; originalMessage.ObjectFragment.TypeName = "TestTypeName"; originalMessage.ObjectFragment.OwnerId = new Guid("aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee"); originalMessage.ObjectFragment.Location.X = 1; originalMessage.ObjectFragment.Location.Y = 2; originalMessage.ObjectFragment.Location.Z = 3; originalMessage.ObjectFragment.Velocity.X = 4; originalMessage.ObjectFragment.Velocity.Y = 5; originalMessage.ObjectFragment.Velocity.Z = 6; originalMessage.ObjectFragment.Acceleration.X = 7; originalMessage.ObjectFragment.Acceleration.Y = 8; originalMessage.ObjectFragment.Acceleration.Z = 9; originalMessage.ObjectFragment.Orientation.X = 10; originalMessage.ObjectFragment.Orientation.Y = 11; originalMessage.ObjectFragment.Orientation.Z = 12; originalMessage.ObjectFragment.Orientation.W = 13; originalMessage.ObjectFragment.AngularVelocity.X = 14; originalMessage.ObjectFragment.AngularVelocity.Y = 15; originalMessage.ObjectFragment.AngularVelocity.Z = 16; originalMessage.ObjectFragment.AngularVelocity.W = 17; originalMessage.ObjectFragment.AngularAcceleration.X = 18; originalMessage.ObjectFragment.AngularAcceleration.Y = 19; originalMessage.ObjectFragment.AngularAcceleration.Z = 20; originalMessage.ObjectFragment.AngularAcceleration.W = 21; originalMessage.ObjectFragment.BoundingSphereRadius = 22; originalMessage.ObjectFragment.Mass = 23; originalMessage.ObjectFragment.ExtensionDialect = "TEST"; originalMessage.ObjectFragment.SetExtensionData(UTF8Encoding.UTF8.GetBytes( "1234567890123")); SerializeReferenceMessage(originalMessage); } { MovementEventMessage originalMessage = new MovementEventMessage(); originalMessage.MessageId = 1; originalMessage.ObjectIndex = 1; originalMessage.Location.X = 1; originalMessage.Location.Y = 2; originalMessage.Location.Z = 3; originalMessage.Orientation.X = 10; originalMessage.Orientation.Y = 11; originalMessage.Orientation.Z = 12; originalMessage.Orientation.W = 13; SerializeReferenceMessage(originalMessage); } { PerceptionEventMessage originalMessage = new PerceptionEventMessage(); originalMessage.MessageId = 1; originalMessage.ObjectFragment.ObjectId = new Guid("aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee"); originalMessage.ObjectFragment.ObjectIndex = 1; originalMessage.ObjectFragment.TypeId = new Guid("aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee"); originalMessage.ObjectFragment.ObjectName = "TestObjectName"; originalMessage.ObjectFragment.TypeName = "TestTypeName"; originalMessage.ObjectFragment.OwnerId = new Guid("aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee"); originalMessage.ObjectFragment.Location.X = 1; originalMessage.ObjectFragment.Location.Y = 2; originalMessage.ObjectFragment.Location.Z = 3; originalMessage.ObjectFragment.Velocity.X = 4; originalMessage.ObjectFragment.Velocity.Y = 5; originalMessage.ObjectFragment.Velocity.Z = 6; originalMessage.ObjectFragment.Acceleration.X = 7; originalMessage.ObjectFragment.Acceleration.Y = 8; originalMessage.ObjectFragment.Acceleration.Z = 9; originalMessage.ObjectFragment.Orientation.X = 10; originalMessage.ObjectFragment.Orientation.Y = 11; originalMessage.ObjectFragment.Orientation.Z = 12; originalMessage.ObjectFragment.Orientation.W = 13; originalMessage.ObjectFragment.AngularVelocity.X = 14; originalMessage.ObjectFragment.AngularVelocity.Y = 15; originalMessage.ObjectFragment.AngularVelocity.Z = 16; originalMessage.ObjectFragment.AngularVelocity.W = 17; originalMessage.ObjectFragment.AngularAcceleration.X = 18; originalMessage.ObjectFragment.AngularAcceleration.Y = 19; originalMessage.ObjectFragment.AngularAcceleration.Z = 20; originalMessage.ObjectFragment.AngularAcceleration.W = 21; originalMessage.ObjectFragment.BoundingSphereRadius = 22; originalMessage.ObjectFragment.Mass = 23; originalMessage.ObjectFragment.ExtensionDialect = "TEST"; originalMessage.ObjectFragment.SetExtensionData(UTF8Encoding.UTF8.GetBytes( "123456789012345678901234567890123456789012345")); SerializeReferenceMessage(originalMessage); } { SynchronizationBeginEventMessage originalMessage = new SynchronizationBeginEventMessage(); originalMessage.MessageId = 1; originalMessage.ObjectCount = 1; SerializeReferenceMessage(originalMessage); } { SynchronizationEndEventMessage originalMessage = new SynchronizationEndEventMessage(); originalMessage.MessageId = 1; SerializeReferenceMessage(originalMessage); } udpClient.Close(); udpClient = null; }
public void ActionEvent() { CloudService serviceAlpha = new CloudService(serviceAlphaAssetCacheUrl, serviceAlphaAddress, serviceAlphaHubPort, serviceAlphaServerPort, serviceAlphaProgram, serviceAlphaProgramMajorVersion, serviceAlphaProgramMinorVersion); CloudBubble bubbleOne = new CloudBubble(bubbleOneId, bubbleOneName, bubbleOneRange, bubbleOnePerceptionRange); serviceAlpha.AddBubble(bubbleOne); bubbleOne.AddAllowedRemoteHubAddress(serviceBetaAddress); serviceAlpha.AddBubbleLink(bubbleOneId, bubbleTwoId, serviceBetaAddress, serviceBetaHubPort, bubbleOneTwoDeltaX, bubbleOneTwoDeltaY, bubbleOneTwoDeltaZ, true, true); CloudService serviceBeta = new CloudService(serviceBetaAssetCacheUrl, serviceBetaAddress, serviceBetaHubPort, serviceBetaServerPort, serviceBetaProgram, serviceBetaProgramMajorVersion, serviceBetaProgramMinorVersion); CloudBubble bubbleTwo = new CloudBubble(bubbleTwoId, bubbleTwoName, bubbleTwoRange, bubbleTwoPerceptionRange); bubbleTwo.AddAllowedRemoteHubAddress(serviceAlphaAddress); serviceBeta.AddBubble(bubbleTwo); CloudBubble bubbleThree = new CloudBubble(bubbleThreeId, bubbleThreeName, bubbleThreeRange, bubbleThreePerceptionRange); bubbleThree.AddAllowedRemoteHubAddress(serviceAlphaAddress); bubbleThree.AddAllowedRemoteHubAddress(serviceBetaAddress); serviceBeta.AddBubble(bubbleThree); serviceBeta.AddBubbleLink(bubbleTwoId, bubbleThreeId, serviceBetaAddress, serviceBetaHubPort, bubbleTwoThreeDeltaX, bubbleTwoThreeDeltaY, bubbleTwoThreeDeltaZ, true, true); serviceAlpha.Startup(false); serviceBeta.Startup(false); CloudView viewOne = new CloudView(1000, clientProgramName, clientProgramMajorVersion, clientProgramMinorVersion); viewOne.Connect(serviceAlphaAddress, serviceAlphaServerPort, bubbleOneId, "", "", participantIdentityProviderUrl, participantNameOne, participantPassphraseOne, objectId, false); CloudView viewTwo = new CloudView(1000, clientProgramName, clientProgramMajorVersion, clientProgramMinorVersion); viewTwo.Connect(serviceBetaAddress, serviceBetaServerPort, bubbleThreeId, "", "", participantIdentityProviderUrl, participantNameTwo, participantPassphraseTwo, objectId, false); Thread.Sleep(10); serviceAlpha.Process(); serviceBeta.Process(); viewOne.Process(); viewTwo.Process(); Thread.Sleep(10); serviceAlpha.Process(); serviceBeta.Process(); viewOne.Process(); viewTwo.Process(); Thread.Sleep(10); serviceAlpha.Process(); serviceBeta.Process(); viewOne.Process(); viewTwo.Process(); Thread.Sleep(10); serviceAlpha.Process(); serviceBeta.Process(); viewOne.Process(); viewTwo.Process(); Thread.Sleep(10); serviceAlpha.Process(); serviceBeta.Process(); viewOne.Process(); viewTwo.Process(); Thread.Sleep(10); serviceAlpha.Process(); serviceBeta.Process(); viewOne.Process(); viewTwo.Process(); Thread.Sleep(10); serviceAlpha.Process(); serviceBeta.Process(); viewOne.Process(); viewTwo.Process(); Thread.Sleep(10); serviceAlpha.Process(); serviceBeta.Process(); viewOne.Process(); viewTwo.Process(); Thread.Sleep(10); serviceAlpha.Process(); serviceBeta.Process(); viewOne.Process(); viewTwo.Process(); Thread.Sleep(10); serviceAlpha.Process(); serviceBeta.Process(); viewOne.Process(); viewTwo.Process(); Assert.IsTrue(viewOne.IsConnected); Assert.IsTrue(viewTwo.IsConnected); InjectRequestMessage injectRequestMessage = new InjectRequestMessage(); injectRequestMessage.ObjectFragment.ObjectId = objectId; injectRequestMessage.ObjectFragment.ObjectIndex = objectIndex; injectRequestMessage.ObjectFragment.ObjectName = objectName; injectRequestMessage.ObjectFragment.TypeId = objectTypeId; injectRequestMessage.ObjectFragment.TypeName = objectTypeName; injectRequestMessage.ObjectFragment.OwnerId = viewOne.ParticipantId; injectRequestMessage.ObjectFragment.ParentObjectId = objectParentObjectId; injectRequestMessage.ObjectFragment.Mass = objectMass; injectRequestMessage.ObjectFragment.BoundingSphereRadius = objectBoundingSphereRadius; injectRequestMessage.ObjectFragment.Location.X = objectLocationX; injectRequestMessage.ObjectFragment.Location.Y = objectLocationY; injectRequestMessage.ObjectFragment.Location.Z = objectLocationZ; injectRequestMessage.ObjectFragment.Velocity.X = objectVelocityX; injectRequestMessage.ObjectFragment.Velocity.Y = objectVelocityY; injectRequestMessage.ObjectFragment.Velocity.Z = objectVelocityZ; injectRequestMessage.ObjectFragment.Acceleration.X = objectAccelerationX; injectRequestMessage.ObjectFragment.Acceleration.Y = objectAccelerationY; injectRequestMessage.ObjectFragment.Acceleration.Z = objectAccelerationZ; injectRequestMessage.ObjectFragment.Orientation.X = objectOrientationX; injectRequestMessage.ObjectFragment.Orientation.Y = objectOrientationY; injectRequestMessage.ObjectFragment.Orientation.Z = objectOrientationZ; injectRequestMessage.ObjectFragment.Orientation.W = objectOrientationW; injectRequestMessage.ObjectFragment.AngularVelocity.X = objectAngularVelocityX; injectRequestMessage.ObjectFragment.AngularVelocity.Y = objectAngularVelocityY; injectRequestMessage.ObjectFragment.AngularVelocity.Z = objectAngularVelocityZ; injectRequestMessage.ObjectFragment.AngularVelocity.W = objectAngularVelocityW; injectRequestMessage.ObjectFragment.AngularAcceleration.X = objectAngularAccelerationX; injectRequestMessage.ObjectFragment.AngularAcceleration.Y = objectAngularAccelerationY; injectRequestMessage.ObjectFragment.AngularAcceleration.Z = objectAngularAccelerationZ; injectRequestMessage.ObjectFragment.AngularAcceleration.W = objectAngularAccelerationW; injectRequestMessage.ObjectFragment.ExtensionDialect = objectExtensionDialect; injectRequestMessage.ObjectFragment.ExtensionDialectMajorVersion = objectExtensionDialectMajorVersion; injectRequestMessage.ObjectFragment.ExtensionDialectMinorVersion = objectExtensionDialectMinorVersion; injectRequestMessage.ObjectFragment.SetExtensionData(objectExtensionData); viewOne.InjectObject(injectRequestMessage); Thread.Sleep(10); serviceAlpha.Process(); serviceBeta.Process(); viewOne.Process(); viewTwo.Process(); Thread.Sleep(10); serviceAlpha.Process(); serviceBeta.Process(); viewOne.Process(); viewTwo.Process(); Thread.Sleep(10); serviceAlpha.Process(); serviceBeta.Process(); viewOne.Process(); viewTwo.Process(); Thread.Sleep(10); serviceAlpha.Process(); serviceBeta.Process(); viewOne.Process(); viewTwo.Process(); Thread.Sleep(10); serviceAlpha.Process(); serviceBeta.Process(); viewOne.Process(); viewTwo.Process(); Thread.Sleep(10); serviceAlpha.Process(); serviceBeta.Process(); viewOne.Process(); viewTwo.Process(); Thread.Sleep(10); serviceAlpha.Process(); serviceBeta.Process(); viewOne.Process(); viewTwo.Process(); Thread.Sleep(10); serviceAlpha.Process(); serviceBeta.Process(); viewOne.Process(); viewTwo.Process(); Thread.Sleep(10); serviceAlpha.Process(); serviceBeta.Process(); viewOne.Process(); viewTwo.Process(); Thread.Sleep(10); serviceAlpha.Process(); serviceBeta.Process(); viewOne.Process(); viewTwo.Process(); CloudObject bubbleOneCloudObject = bubbleOne.CloudCache.GetObject(objectId); Assert.IsNotNull(bubbleOneCloudObject); CloudObject bubbleTwoCloudObject = bubbleTwo.CloudCache.GetObject(objectId); Assert.IsNotNull(bubbleTwoCloudObject); CloudObject bubbleThreeCloudObject = bubbleThree.CloudCache.GetObject(objectId); Assert.IsNotNull(bubbleThreeCloudObject); CloudObject viewOneCloudObject = viewOne.CloudCache.GetObject(objectId); Assert.IsNotNull(viewOneCloudObject); CloudObject viewTwoCloudObject = viewTwo.CloudCache.GetObject(objectId); Assert.IsNotNull(viewTwoCloudObject); ActionEventMessage originalAction = new ActionEventMessage(); originalAction.ActionFragment.ActionName = actionName; originalAction.ActionFragment.ObservationRadius = actionObservationRadius; originalAction.ActionFragment.SourceObjectId = objectId; originalAction.ActionFragment.ExtensionDialect = actionExtensionDialect; originalAction.ActionFragment.ExtensionDialectMajorVersion = actionExtensionDialectMajorVersion; originalAction.ActionFragment.ExtensionDialectMinorVersion = actionExtensionDialectMinorVersion; originalAction.ActionFragment.SetExtensionData(actionExtensionData); viewOne.ExecuteAction(originalAction); ActionEventMessage receivedAction = null; viewTwo.ServerAction += delegate(ActionEventMessage actionEvent) { receivedAction = actionEvent; Assert.AreEqual(actionName, receivedAction.ActionFragment.ActionName); Assert.AreEqual(objectId, receivedAction.ActionFragment.SourceObjectId); Assert.AreEqual(actionObservationRadius, receivedAction.ActionFragment.ObservationRadius); Assert.AreEqual(actionExtensionDialect, receivedAction.ActionFragment.ExtensionDialect); Assert.AreEqual(actionExtensionDialectMajorVersion, receivedAction.ActionFragment.ExtensionDialectMajorVersion); Assert.AreEqual(actionExtensionDialectMinorVersion, receivedAction.ActionFragment.ExtensionDialectMinorVersion); Assert.AreEqual(ASCIIEncoding.ASCII.GetString(actionExtensionData), ASCIIEncoding.ASCII.GetString(receivedAction.ActionFragment.GetExtensionData())); }; Thread.Sleep(10); serviceAlpha.Process(); serviceBeta.Process(); viewOne.Process(); viewTwo.Process(); Thread.Sleep(10); serviceAlpha.Process(); serviceBeta.Process(); viewOne.Process(); viewTwo.Process(); Thread.Sleep(10); serviceAlpha.Process(); serviceBeta.Process(); viewOne.Process(); viewTwo.Process(); Thread.Sleep(10); serviceAlpha.Process(); serviceBeta.Process(); viewOne.Process(); viewTwo.Process(); Thread.Sleep(10); serviceAlpha.Process(); serviceBeta.Process(); viewOne.Process(); viewTwo.Process(); Thread.Sleep(10); serviceAlpha.Process(); serviceBeta.Process(); viewOne.Process(); viewTwo.Process(); Thread.Sleep(10); serviceAlpha.Process(); serviceBeta.Process(); viewOne.Process(); viewTwo.Process(); Thread.Sleep(10); serviceAlpha.Process(); serviceBeta.Process(); viewOne.Process(); viewTwo.Process(); Thread.Sleep(10); serviceAlpha.Process(); serviceBeta.Process(); viewOne.Process(); viewTwo.Process(); Thread.Sleep(10); serviceAlpha.Process(); serviceBeta.Process(); viewOne.Process(); viewTwo.Process(); Assert.IsNotNull(receivedAction); EjectRequestMessage ejectRequestMessage = new EjectRequestMessage(); ejectRequestMessage.ObjectId = objectId; viewOne.EjectObject(ejectRequestMessage); Thread.Sleep(10); serviceAlpha.Process(); serviceBeta.Process(); viewOne.Process(); viewTwo.Process(); Thread.Sleep(10); serviceAlpha.Process(); serviceBeta.Process(); viewOne.Process(); viewTwo.Process(); Thread.Sleep(10); serviceAlpha.Process(); serviceBeta.Process(); viewOne.Process(); viewTwo.Process(); Thread.Sleep(10); serviceAlpha.Process(); serviceBeta.Process(); viewOne.Process(); viewTwo.Process(); Thread.Sleep(10); serviceAlpha.Process(); serviceBeta.Process(); viewOne.Process(); viewTwo.Process(); Thread.Sleep(10); serviceAlpha.Process(); serviceBeta.Process(); viewOne.Process(); viewTwo.Process(); Thread.Sleep(10); serviceAlpha.Process(); serviceBeta.Process(); viewOne.Process(); viewTwo.Process(); Thread.Sleep(10); serviceAlpha.Process(); serviceBeta.Process(); viewOne.Process(); viewTwo.Process(); Thread.Sleep(10); serviceAlpha.Process(); serviceBeta.Process(); viewOne.Process(); viewTwo.Process(); Thread.Sleep(10); serviceAlpha.Process(); serviceBeta.Process(); viewOne.Process(); viewTwo.Process(); Thread.Sleep(10); serviceAlpha.Process(); serviceBeta.Process(); viewOne.Process(); viewTwo.Process(); Thread.Sleep(10); serviceAlpha.Process(); serviceBeta.Process(); viewOne.Process(); viewTwo.Process(); Thread.Sleep(10); serviceAlpha.Process(); serviceBeta.Process(); viewOne.Process(); viewTwo.Process(); Thread.Sleep(10); serviceAlpha.Process(); serviceBeta.Process(); viewOne.Process(); viewTwo.Process(); Thread.Sleep(10); serviceAlpha.Process(); serviceBeta.Process(); viewOne.Process(); viewTwo.Process(); Assert.IsNull(bubbleOne.CloudCache.GetObject(objectId)); Assert.IsNull(bubbleTwo.CloudCache.GetObject(objectId)); Assert.IsNull(bubbleThree.CloudCache.GetObject(objectId)); Assert.IsNull(viewOne.CloudCache.GetObject(objectId)); Assert.IsNull(viewTwo.CloudCache.GetObject(objectId)); viewOne.Disconnect(); viewTwo.Disconnect(); Thread.Sleep(10); serviceAlpha.Process(); serviceBeta.Process(); viewOne.Process(); viewTwo.Process(); Thread.Sleep(10); serviceAlpha.Process(); serviceBeta.Process(); viewOne.Process(); viewTwo.Process(); Thread.Sleep(10); serviceAlpha.Process(); serviceBeta.Process(); viewOne.Process(); viewTwo.Process(); Thread.Sleep(10); serviceAlpha.Process(); serviceBeta.Process(); viewOne.Process(); viewTwo.Process(); Thread.Sleep(10); serviceAlpha.Process(); serviceBeta.Process(); viewOne.Process(); viewTwo.Process(); serviceAlpha.Shutdown(); serviceBeta.Shutdown(); }