private void InjectOrUpdateObject(DaemonLogic.CloudObject cloudObject) { if (!IdObjectDictionary.ContainsKey(cloudObject.CloudObjectId)) { IdObjectDictionary.Add(cloudObject.CloudObjectId, cloudObject); Objects.Add(cloudObject); } if (!InjectedObjects.Contains(cloudObject.CloudObjectId)) { InjectedObjects.Add(cloudObject.CloudObjectId); InjectRequestMessage injectRequestMessage = new InjectRequestMessage(); injectRequestMessage.ObjectFragment.ObjectId = cloudObject.CloudObjectId; injectRequestMessage.ObjectFragment.OwnerId = cloudObject.Participant.ParticipantId; injectRequestMessage.ObjectFragment.TypeId = cloudObject.ObjectType.ObjectTypeId; injectRequestMessage.ObjectFragment.ObjectName = cloudObject.Name; injectRequestMessage.ObjectFragment.TypeName = cloudObject.ObjectType.Name; injectRequestMessage.ObjectFragment.BoundingSphereRadius = (float)cloudObject.Radius; injectRequestMessage.ObjectFragment.Mass = (float)cloudObject.Mass; injectRequestMessage.ObjectFragment.Location.X = (float)cloudObject.X; injectRequestMessage.ObjectFragment.Location.Y = (float)cloudObject.Y; injectRequestMessage.ObjectFragment.Location.Z = (float)cloudObject.Z; injectRequestMessage.ObjectFragment.Orientation.X = (float)cloudObject.OX; injectRequestMessage.ObjectFragment.Orientation.Y = (float)cloudObject.OY; injectRequestMessage.ObjectFragment.Orientation.Z = (float)cloudObject.OZ; injectRequestMessage.ObjectFragment.Orientation.W = (float)cloudObject.OW; OmModelPrimitiveExt modelPrimitiveExt = new OmModelPrimitiveExt(); modelPrimitiveExt.ModelUrl = cloudObject.ModelUrl; modelPrimitiveExt.Scale = (float)cloudObject.ModelScale; injectRequestMessage.SetExtension(modelPrimitiveExt); client.InjectObject(injectRequestMessage); } else { ModifyRequestMessage modifyRequestMessage = new ModifyRequestMessage(); modifyRequestMessage.ObjectFragment.ObjectId = cloudObject.CloudObjectId; modifyRequestMessage.ObjectFragment.OwnerId = cloudObject.Participant.ParticipantId; modifyRequestMessage.ObjectFragment.TypeId = cloudObject.ObjectType.ObjectTypeId; modifyRequestMessage.ObjectFragment.ObjectName = cloudObject.Name; modifyRequestMessage.ObjectFragment.TypeName = cloudObject.ObjectType.Name; modifyRequestMessage.ObjectFragment.BoundingSphereRadius = (float)cloudObject.Radius; modifyRequestMessage.ObjectFragment.Mass = (float)cloudObject.Mass; modifyRequestMessage.ObjectFragment.Location.X = (float)cloudObject.X; modifyRequestMessage.ObjectFragment.Location.Y = (float)cloudObject.Y; modifyRequestMessage.ObjectFragment.Location.Z = (float)cloudObject.Z; modifyRequestMessage.ObjectFragment.Orientation.X = (float)cloudObject.OX; modifyRequestMessage.ObjectFragment.Orientation.Y = (float)cloudObject.OY; modifyRequestMessage.ObjectFragment.Orientation.Z = (float)cloudObject.OZ; modifyRequestMessage.ObjectFragment.Orientation.W = (float)cloudObject.OW; OmModelPrimitiveExt modelPrimitiveExt = new OmModelPrimitiveExt(); modelPrimitiveExt.ModelUrl = cloudObject.ModelUrl; modelPrimitiveExt.Scale = (float)cloudObject.ModelScale; modifyRequestMessage.SetExtension(modelPrimitiveExt); client.ModifyObject(modifyRequestMessage); } }
/// <summary> /// Modifying messages instead of cache objects as cache objects are not meant to /// be modified locally but only as response to messages from cloud. /// </summary> /// <param name="modifyRequest"></param> public void ModifyObject(ModifyRequestMessage modifyRequest) { CloudObject cloudObject = cloudCache.GetObject(modifyRequest.ObjectFragment.ObjectId); modifyRequest.ObjectFragment.ObjectIndex = cloudObject.RemoteObjectIndex; client.Send(modifyRequest); }
public void ModifyRequestMessageClear() { ModifyRequestMessage originalMessage = new ModifyRequestMessage(); originalMessage.ObjectFragment.ObjectId = Guid.NewGuid(); originalMessage.ObjectFragment.ObjectIndex = 1; originalMessage.ObjectFragment.TypeId = Guid.NewGuid(); originalMessage.ObjectFragment.ObjectName = "TestObjectName"; originalMessage.ObjectFragment.TypeName = "TestTypeName"; originalMessage.ObjectFragment.OwnerId = Guid.NewGuid(); 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" + "1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890")); originalMessage.PrepareEncoding(); originalMessage.Clear(); ModifyRequestMessage emptyMessage = new ModifyRequestMessage(); emptyMessage.MessageId = originalMessage.MessageId; Assert.AreEqual(originalMessage.ToString(), emptyMessage.ToString()); }
public void ModifyRequestMessageEncoding() { ModifyRequestMessage originalMessage = new ModifyRequestMessage(); originalMessage.ObjectFragment.ObjectId = Guid.NewGuid(); originalMessage.ObjectFragment.ObjectIndex = 1; originalMessage.ObjectFragment.TypeId = Guid.NewGuid(); originalMessage.ObjectFragment.ObjectName = "TestObjectName"; originalMessage.ObjectFragment.TypeName = "TestTypeName"; originalMessage.ObjectFragment.OwnerId = Guid.NewGuid(); 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")); originalMessage.PrepareEncoding(); 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), 98); int currentIndex = originalMessage.EncodeFrameData(0, encodedBytes, 0); currentIndex = originalMessage.EncodeFrameData(1, encodedBytes, currentIndex); currentIndex = originalMessage.EncodeFrameData(2, encodedBytes, currentIndex); ModifyRequestMessage decodedMessage = new ModifyRequestMessage(); 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 Process() { if (m_objectUpdateQueue.Count > 0) { foreach (Guid objectId in m_objectUpdateQueue) { CloudObject cloudObject = DeckProgram.CloudView.CloudCache.GetObject(objectId); OmModelPrimitiveExt modelPrimitiveExt = cloudObject.GetExtension <OmModelPrimitiveExt>(); Vector3 location = new Vector3(cloudObject.Location.X, cloudObject.Location.Y, cloudObject.Location.Z); Quaternion orientation = new Quaternion(cloudObject.Orientation.W, cloudObject.Orientation.X, cloudObject.Orientation.Y, cloudObject.Orientation.Z); Vector3 scale = new Vector3(cloudObject.BoundingSphereRadius * modelPrimitiveExt.Scale, cloudObject.BoundingSphereRadius * modelPrimitiveExt.Scale, cloudObject.BoundingSphereRadius * modelPrimitiveExt.Scale); bool isNewAvatar = objectId == AvatarId && !DeckProgram.DeckScene.ContainsObject(objectId); if (!DeckProgram.DeckScene.ContainsObject(objectId)) { if (IsSynchronizing) { CurrentObjectSynchronizationCount++; if (ExpectedObjectSynchronizationCount <= CurrentObjectSynchronizationCount) { CurrentObjectSynchronizationCount = 0; ExpectedObjectSynchronizationCount = 0; Thread.Sleep(200); } } DeckProgram.DeckScene.AddObject(new DeckObject(objectId, cloudObject.ObjectName, cloudObject.TypeName, modelPrimitiveExt.ModelUrl, modelPrimitiveExt.Scale, location, orientation, cloudObject.BoundingSphereRadius, scale)); } DeckObject deckObject = DeckProgram.DeckScene.GetObject(cloudObject.ObjectId); if (isNewAvatar) { Matrix orientationMatrix; Common.Rotate(out orientationMatrix, ref orientation); DeckProgram.DeckRudder.AvatarTargetLocation = location; DeckProgram.DeckRudder.AvatarCurrentLocation = location; DeckProgram.DeckRudder.AvatarTargetOrientationMatrix = orientationMatrix; DeckProgram.DeckRudder.AvatarCurrentOrientationMatrix = orientationMatrix; DeckProgram.DeckRudder.UpdateCameraTransformation(); DeckProgram.DeckRudder.SynchronizeCameraCurrentLocationWithTargetLocation(); } deckObject.ObjectName = cloudObject.ObjectName; deckObject.NetworkLocation = location; deckObject.NetworkOrientation = orientation; deckObject.Radius = cloudObject.BoundingSphereRadius; deckObject.ModelScale = modelPrimitiveExt.Scale; deckObject.NetworkScale = scale; DeckProgram.DeckScene.UpdateObject(deckObject); DeckProgram.DeckScene.ActivateObject(objectId); } m_objectUpdateQueue.Clear(); } if (DeckProgram.DeckRudder.IsSteered && DateTime.Now.Subtract(m_lastSteeringUpdate).TotalMilliseconds > 100) { m_lastSteeringUpdate = DateTime.Now; if (DeckProgram.CloudView.CloudCache.GetObject(AvatarId) != null) { ModifyRequestMessage modifyRequestMessage = new ModifyRequestMessage(); modifyRequestMessage.ObjectFragment.ObjectId = AvatarId; modifyRequestMessage.ObjectFragment.OwnerId = ParticipantId; modifyRequestMessage.ObjectFragment.TypeId = Guid.Empty; modifyRequestMessage.ObjectFragment.ObjectName = ParticipantNickName; modifyRequestMessage.ObjectFragment.TypeName = "Avatar"; modifyRequestMessage.ObjectFragment.BoundingSphereRadius = 2f; modifyRequestMessage.ObjectFragment.Mass = 2f; modifyRequestMessage.ObjectFragment.Location.X = (float)DeckProgram.DeckRudder.AvatarTargetLocation.X; modifyRequestMessage.ObjectFragment.Location.Y = (float)DeckProgram.DeckRudder.AvatarTargetLocation.Y; modifyRequestMessage.ObjectFragment.Location.Z = (float)DeckProgram.DeckRudder.AvatarTargetLocation.Z; Matrix rotationMatrix = DeckProgram.DeckRudder.AvatarTargetOrientationMatrix; Quaternion quaternion; Common.Rotate(out quaternion, ref rotationMatrix); modifyRequestMessage.ObjectFragment.Orientation.X = (float)quaternion.I; modifyRequestMessage.ObjectFragment.Orientation.Y = (float)quaternion.J; modifyRequestMessage.ObjectFragment.Orientation.Z = (float)quaternion.K; modifyRequestMessage.ObjectFragment.Orientation.W = (float)quaternion.W; OmModelPrimitiveExt modelPrimitiveExt = new OmModelPrimitiveExt(); modelPrimitiveExt.ModelUrl = "http://assets.bubblecloud.org/Collada/Seymour/Seymour_triangulate.dae"; modelPrimitiveExt.Scale = (float)0.1f; modifyRequestMessage.SetExtension(modelPrimitiveExt); DeckProgram.CloudView.ModifyObject(modifyRequestMessage); DeckProgram.DeckRudder.IsSteered = false; } } }
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 static void Execute(string ip, int port) { log4net.Config.XmlConfigurator.Configure(); CloudView view = null; try { string clientProgramName = "ClientProgram"; byte clientProgramMajorVersion = 5; byte clientProgramMinorVersion = 6; string participantIdentityProviderUrl = "http://test.identityprovider"; string participantName = "TestParticipantName"; string participantPassphrase = "TestParticipantPassphrase"; Guid avatarId = new Guid("123DFA16-5B52-4c9f-9A09-AD7465208321"); view = new CloudView(1000, clientProgramName, clientProgramMajorVersion, clientProgramMinorVersion); view.Connect(ip, port, new Guid("539DFA16-5B52-4c9f-9A09-AD746520873E"), "", "", participantIdentityProviderUrl, participantName, participantPassphrase, avatarId, true); for (int i = 0; i < 10; i++) { Thread.Sleep(100); view.Process(); if (view.IsConnected) { break; } } if (!view.IsConnected) { Console.WriteLine("Unable to connect server."); return; } Guid objectId = avatarId; uint objectIndex = 100; string objectName = "TestObjectName"; Guid objectParentObjectId = Guid.NewGuid(); Guid objectTypeId = Guid.NewGuid(); string objectTypeName = "TestObjectType"; float objectBoundingSphereRadius = 23; float objectMass = 24; float objectLocationX = 2; float objectLocationY = 3; float objectLocationZ = 4; float modifiedObjectLocationX = 12; float modifiedObjectLocationY = 13; float modifiedObjectLocationZ = 14; float objectVelocityX = 5; float objectVelocityY = 6; float objectVelocityZ = 7; float objectAccelerationX = 8; float objectAccelerationY = 9; float objectAccelerationZ = 10; float objectOrientationX = 11; float objectOrientationY = 12; float objectOrientationZ = 13; float objectOrientationW = 14; float objectAngularVelocityX = 15; float objectAngularVelocityY = 16; float objectAngularVelocityZ = 17; float objectAngularVelocityW = 18; float objectAngularAccelerationX = 19; float objectAngularAccelerationY = 20; float objectAngularAccelerationZ = 21; float objectAngularAccelerationW = 22; string objectExtensionDialect = "TEDI"; byte objectExtensionDialectMinorVersion = 23; byte objectExtensionDialectMajorVersion = 24; byte[] objectExtensionData = ASCIIEncoding.ASCII.GetBytes("012345678901234567890123456789012345678901234567890123456789"); 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 = view.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); view.InjectObject(injectRequestMessage); Thread.Sleep(20); view.Process(); Thread.Sleep(20); view.Process(); Thread.Sleep(20); view.Process(); Thread.Sleep(20); view.Process(); Thread.Sleep(20); view.Process(); Thread.Sleep(20); view.Process(); Thread.Sleep(20); view.Process(); CloudObject cloudObject = view.CloudCache.GetObject(objectId); ModifyRequestMessage modifyRequestMessage = new ModifyRequestMessage(); cloudObject.ToObjectFragment(modifyRequestMessage.ObjectFragment); modifyRequestMessage.ObjectFragment.Location.X = modifiedObjectLocationX; modifyRequestMessage.ObjectFragment.Location.Y = modifiedObjectLocationY; modifyRequestMessage.ObjectFragment.Location.Z = modifiedObjectLocationZ; view.ModifyObject(modifyRequestMessage); Thread.Sleep(100); view.Process(); ExamineRequestMessage examineRequestMessage = new ExamineRequestMessage(); examineRequestMessage.ObjectIndex = cloudObject.RemoteObjectIndex; view.ExamineObject(examineRequestMessage); Thread.Sleep(100); view.Process(); InteractRequestMessage interactRequesMessage = new InteractRequestMessage(); interactRequesMessage.InteractionFragment.SourceParticipantId = view.ParticipantId; interactRequesMessage.InteractionFragment.SourceObjectId = Guid.Empty; interactRequesMessage.InteractionFragment.TargetParticipantId = Guid.Empty; interactRequesMessage.InteractionFragment.TargetObjectId = objectId; interactRequesMessage.InteractionFragment.ExtensionDialect = objectExtensionDialect; interactRequesMessage.InteractionFragment.ExtensionDialectMajorVersion = objectExtensionDialectMajorVersion; interactRequesMessage.InteractionFragment.ExtensionDialectMinorVersion = objectExtensionDialectMinorVersion; interactRequesMessage.InteractionFragment.SetExtensionData(objectExtensionData); view.InteractWithObject(interactRequesMessage); Thread.Sleep(100); view.Process(); EjectRequestMessage ejectRequestMessage = new EjectRequestMessage(); ejectRequestMessage.ObjectId = objectId; view.EjectObject(ejectRequestMessage); Thread.Sleep(100); view.Process(); } finally { if (view != null) { view.Disconnect(); while (view.Client.IsTransmitterAlive) { Thread.Sleep(100); view.Process(); } } } }