ユーザー定義のデータ
さて,
Mesh上へファイルを追加する方法は,
アプリケーションでバイナリデータを扱う場合はファイル追加のときと同様に処理すればよいですが,
SetUserDataとGetUserDataメソッドは,
コード例を以下に示します。単純にString型の値をMesh Objectに設定および取得するには次のようになります。
' Imports Microsoft.LiveFX.Client
' Imports System.Net
Dim loe = New LiveOperatingEnvironment
loe.Connect(New NetworkCredential("userid", "password"), New LiveItemAccessOptions(True))
' Mesh Object に文字列データの設定
Dim meshObject = New MeshObject("Sample")
meshObject.Resource.SetUserData(Of String)("文字列データ")
loe.Mesh.MeshObjects.Add(meshObject) ' Mesh へ追加
' Mesh Object から文字列データの取得
Dim str = meshObject.Resource.GetUserData(Of String)()
MessageBox.Show(str)
続いて独自のクラスを設定する場合です。クラスオブジェクトの場合は,
Public Class UserDataClass
' メンバ1
Public Foo As String
' メンバ2
Private _bar As Integer
Public Property Bar() As Integer
Get
Return _bar
End Get
Set(ByVal value As Integer)
_bar = value
End Set
End Property
End Class
先ほどと同じようにこのクラスオブジェクトをMesh Objectのデータとして設定・
' Mesh Object に文字列データの設定
Dim meshObject = New MeshObject("UserDataClass")
Dim userData1 = New UserDataClass With {.Foo = "hoge", .Bar = 123}
meshObject.Resource.SetUserData(Of UserDataClass)(userData)
' Mesh Object から文字列データの取得
Dim userData2 = meshObject.Resource.GetUserData(Of UserDataClass)()
MessageBox.Show(userData2.Foo & userData2.Bar.ToString)
シリアライズ可能なものに限られますが,
Live Frameworkの利用
それでは,
LOEへ接続とMesh Objectの作成
最初にLive Operating Environment
Private Const WhiteboardResourceType As String = "GihyoJp.SampleApplication.Whiteboard"
Private LOE As New LiveOperatingEnvironment ' LOE
Private WithEvents WhiteboardObject As MeshObject ' Mesh Object
Private Sub Window1_Loaded(ByVal sender As Object, ByVal e As System.Windows.RoutedEventArgs) Handles Me.Loaded
' LOEへ接続
LOE.Connect(New NetworkCredential("userid", "password"), New LiveItemAccessOptions(True))
' Mesh Objectの取得
Dim whiteboards = From mo In LOE.Mesh.MeshObjects.Entries _
Where mo.Resource.Type = WhiteboardResourceType
If whiteboards.Count > 0 Then
' Mesh 内に既にホワイトボードアプリケーション用の Mesh Object がある場合
WhiteboardObject = whiteboards.First
Else
' Mesh 内にホワイトボードアプリケーション用の Mesh Object がない場合,作成
WhiteboardObject = New MeshObject
WhiteboardObject.Resource.Type = WhiteboardResourceType
WhiteboardObject.Resource.Title = "whiteboard app"
LOE.Mesh.MeshObjects.Add(WhiteboardObject)
End If
End Sub
実用的なアプリケーションにするためには,
上記コードでは,