C# 클래스 OpenSim.Region.OptionalModules.ContentManagement.CMController

The controller in a Model-View-Controller framework. This controller catches actions by the avatars, creates work packets, loops through these work packets in a separate thread, then dictates to the model how the data should change and dictates to the view which data should be displayed. The main mechanism for interaction is through the simchat system.
파일 보기 프로젝트 열기: openmetaversefoundation/fortis-opensim 1 사용 예제들

공개 메소드들

메소드 설명
CMController ( OpenSim.Region.OptionalModules.ContentManagement.CMModel model, OpenSim.Region.OptionalModules.ContentManagement.CMView view, Scene scene, int channel ) : System

Initializes a work thread with an initial scene. Additional scenes should be added through the RegisterNewRegion method.

RegisterNewRegion ( Scene scene ) : void

Register a new scene object to keep track of for revisioning. Starts the controller monitoring actions of clients within the given scene.

SimChat ( OpenSim.Region.OptionalModules.ContentManagement.CMModel model, OpenSim.Region.OptionalModules.ContentManagement.CMView view, OpenSim.Framework.OSChatMessage e, int channel ) : void

Only called by the MainLoop. Takes the message from a user sent to the channel and executes the proper command.

보호된 메소드들

메소드 설명
GroupBeingDeleted ( SceneObjectGroup group ) : void
ObjectDuplicated ( uint localID, System.Vector3 offset, uint dupeFlags, UUID AgentID, UUID GroupID ) : void
ObjectDuplicatedOnRay ( uint localID, uint dupeFlags, UUID AgentID, UUID GroupID, UUID RayTargetObj, System.Vector3 RayEnd, System.Vector3 RayStart, bool BypassRaycast, bool RayEndIsIntersection, bool CopyCenters, bool CopyRotates ) : void
OnNewClient ( IClientAPI client ) : void
OnUnDid ( IClientAPI remoteClient, UUID primId ) : void
ScenesInOrderOfProximity ( Hashtable sceneList, Scene scene ) : System.Collections.Generic.List

Takes a list of scenes and forms a new orderd list according to the proximity of scenes to the second argument.

SimChatSent ( Object x, OpenSim.Framework.OSChatMessage e ) : void
StartManaging ( IClientAPI client ) : void

Adds extra handlers to a number of events so that the controller can produce work based on the client's actions.

StopManaging ( UUID clientUUID ) : void

UpdateMultiplePosition ( uint localID, System.Vector3 pos, IClientAPI remoteClient ) : void
UpdateMultipleRotation ( uint localID, Quaternion rot, IClientAPI remoteClient ) : void
UpdateMultipleScale ( uint localID, System.Vector3 scale, IClientAPI remoteClient ) : void
UpdateNewParts ( UUID ownerID, UUID groupID, System.Vector3 RayEnd, Quaternion rot, OpenSim.Framework.PrimitiveBaseShape shape, byte bypassRaycast, System.Vector3 RayStart, UUID RayTargetID, byte RayEndIsIntersection ) : void
UpdateSinglePosition ( uint localID, System.Vector3 pos, IClientAPI remoteClient ) : void
UpdateSingleRotation ( uint localID, Quaternion rot, IClientAPI remoteClient ) : void

UpdateSingleScale ( uint localID, System.Vector3 scale, IClientAPI remoteClient ) : void
commit ( string message, Scene scene, OpenSim.Region.OptionalModules.ContentManagement.CMModel model, OpenSim.Region.OptionalModules.ContentManagement.CMView view ) : void

Only called from within the SimChat method.

diffmode ( Scene scene, OpenSim.Region.OptionalModules.ContentManagement.CMModel model, OpenSim.Region.OptionalModules.ContentManagement.CMView view ) : void

Only called from within the SimChat method.

rollback ( Scene scene, OpenSim.Region.OptionalModules.ContentManagement.CMModel model, OpenSim.Region.OptionalModules.ContentManagement.CMView view ) : void

Only called from within the SimChat method. Hides all auras and meta entities, retrieves the current scene object list with the most recent revision retrieved from the model for each scene, then lets the view update the clients of the new objects.

비공개 메소드들

메소드 설명
GetGroupByPrim ( uint localID ) : SceneObjectGroup

Searches in all scenes for a SceneObjectGroup that contains a part with a specific localID. If found, the object is returned. Else null is returned.

Initialize ( OpenSim.Region.OptionalModules.ContentManagement.CMModel model, OpenSim.Region.OptionalModules.ContentManagement.CMView view, Scene scene, int channel ) : void
MainLoop ( ) : void

Run in a thread of its own. A endless loop that consumes (or blocks on) and work queue. Thw work queue is filled through client actions.

NewClient ( OpenSim.Region.OptionalModules.ContentManagement.CMView view, IClientAPI client ) : void

Only called by the MainLoop. Updates the view of a new client with metaentities if diff-mode is currently enabled.

ObjectAttributeChanged ( OpenSim.Region.OptionalModules.ContentManagement.CMModel model, OpenSim.Region.OptionalModules.ContentManagement.CMView view, uint LocalId ) : void

Only called by the MainLoop.

ObjectDuplicated ( OpenSim.Region.OptionalModules.ContentManagement.CMModel model, OpenSim.Region.OptionalModules.ContentManagement.CMView view, uint localId ) : void

Only called by the MainLoop. Displays new green auras over the newly created part when a part is shift copied.

ObjectKilled ( OpenSim.Region.OptionalModules.ContentManagement.CMModel model, OpenSim.Region.OptionalModules.ContentManagement.CMView view, SceneObjectGroup group ) : void

Only called by the MainLoop.

PrimitiveAdded ( OpenSim.Region.OptionalModules.ContentManagement.CMModel model, OpenSim.Region.OptionalModules.ContentManagement.CMView view, Work currentJob ) : void

Only called by the MainLoop.

UndoDid ( OpenSim.Region.OptionalModules.ContentManagement.CMModel model, OpenSim.Region.OptionalModules.ContentManagement.CMView view, UUID uuid ) : void

Only called by the MainLoop.

메소드 상세

CMController() 공개 메소드

Initializes a work thread with an initial scene. Additional scenes should be added through the RegisterNewRegion method.
public CMController ( OpenSim.Region.OptionalModules.ContentManagement.CMModel model, OpenSim.Region.OptionalModules.ContentManagement.CMView view, Scene scene, int channel ) : System
model OpenSim.Region.OptionalModules.ContentManagement.CMModel /// ///
view OpenSim.Region.OptionalModules.ContentManagement.CMView /// ///
scene OpenSim.Region.Framework.Scenes.Scene /// The first scene to keep track of. ///
channel int /// The simchat channel number to listen to for instructions ///
리턴 System

GroupBeingDeleted() 보호된 메소드

protected GroupBeingDeleted ( SceneObjectGroup group ) : void
group OpenSim.Region.Framework.Scenes.SceneObjectGroup
리턴 void

ObjectDuplicated() 보호된 메소드

protected ObjectDuplicated ( uint localID, System.Vector3 offset, uint dupeFlags, UUID AgentID, UUID GroupID ) : void
localID uint
offset System.Vector3
dupeFlags uint
AgentID UUID
GroupID UUID
리턴 void

ObjectDuplicatedOnRay() 보호된 메소드

protected ObjectDuplicatedOnRay ( uint localID, uint dupeFlags, UUID AgentID, UUID GroupID, UUID RayTargetObj, System.Vector3 RayEnd, System.Vector3 RayStart, bool BypassRaycast, bool RayEndIsIntersection, bool CopyCenters, bool CopyRotates ) : void
localID uint
dupeFlags uint
AgentID UUID
GroupID UUID
RayTargetObj UUID
RayEnd System.Vector3
RayStart System.Vector3
BypassRaycast bool
RayEndIsIntersection bool
CopyCenters bool
CopyRotates bool
리턴 void

OnNewClient() 보호된 메소드

protected OnNewClient ( IClientAPI client ) : void
client IClientAPI
리턴 void

OnUnDid() 보호된 메소드

protected OnUnDid ( IClientAPI remoteClient, UUID primId ) : void
remoteClient IClientAPI
primId UUID
리턴 void

RegisterNewRegion() 공개 메소드

Register a new scene object to keep track of for revisioning. Starts the controller monitoring actions of clients within the given scene.
public RegisterNewRegion ( Scene scene ) : void
scene OpenSim.Region.Framework.Scenes.Scene /// A ///
리턴 void

ScenesInOrderOfProximity() 보호된 정적인 메소드

Takes a list of scenes and forms a new orderd list according to the proximity of scenes to the second argument.
protected static ScenesInOrderOfProximity ( Hashtable sceneList, Scene scene ) : System.Collections.Generic.List
sceneList System.Collections.Hashtable
scene OpenSim.Region.Framework.Scenes.Scene
리턴 System.Collections.Generic.List

SimChat() 공개 메소드

Only called by the MainLoop. Takes the message from a user sent to the channel and executes the proper command.
public SimChat ( OpenSim.Region.OptionalModules.ContentManagement.CMModel model, OpenSim.Region.OptionalModules.ContentManagement.CMView view, OpenSim.Framework.OSChatMessage e, int channel ) : void
model OpenSim.Region.OptionalModules.ContentManagement.CMModel
view OpenSim.Region.OptionalModules.ContentManagement.CMView
e OpenSim.Framework.OSChatMessage
channel int
리턴 void

SimChatSent() 보호된 메소드

protected SimChatSent ( Object x, OpenSim.Framework.OSChatMessage e ) : void
x Object
e OpenSim.Framework.OSChatMessage
리턴 void

StartManaging() 보호된 메소드

Adds extra handlers to a number of events so that the controller can produce work based on the client's actions.
protected StartManaging ( IClientAPI client ) : void
client IClientAPI
리턴 void

StopManaging() 보호된 메소드

protected StopManaging ( UUID clientUUID ) : void
clientUUID UUID
리턴 void

UpdateMultiplePosition() 보호된 메소드

protected UpdateMultiplePosition ( uint localID, System.Vector3 pos, IClientAPI remoteClient ) : void
localID uint
pos System.Vector3
remoteClient IClientAPI
리턴 void

UpdateMultipleRotation() 보호된 메소드

protected UpdateMultipleRotation ( uint localID, Quaternion rot, IClientAPI remoteClient ) : void
localID uint
rot Quaternion
remoteClient IClientAPI
리턴 void

UpdateMultipleScale() 보호된 메소드

protected UpdateMultipleScale ( uint localID, System.Vector3 scale, IClientAPI remoteClient ) : void
localID uint
scale System.Vector3
remoteClient IClientAPI
리턴 void

UpdateNewParts() 보호된 메소드

protected UpdateNewParts ( UUID ownerID, UUID groupID, System.Vector3 RayEnd, Quaternion rot, OpenSim.Framework.PrimitiveBaseShape shape, byte bypassRaycast, System.Vector3 RayStart, UUID RayTargetID, byte RayEndIsIntersection ) : void
ownerID UUID
groupID UUID
RayEnd System.Vector3
rot Quaternion
shape OpenSim.Framework.PrimitiveBaseShape
bypassRaycast byte
RayStart System.Vector3
RayTargetID UUID
RayEndIsIntersection byte
리턴 void

UpdateSinglePosition() 보호된 메소드

protected UpdateSinglePosition ( uint localID, System.Vector3 pos, IClientAPI remoteClient ) : void
localID uint
pos System.Vector3
remoteClient IClientAPI
리턴 void

UpdateSingleRotation() 보호된 메소드

protected UpdateSingleRotation ( uint localID, Quaternion rot, IClientAPI remoteClient ) : void
localID uint
rot Quaternion
remoteClient IClientAPI
리턴 void

UpdateSingleScale() 보호된 메소드

protected UpdateSingleScale ( uint localID, System.Vector3 scale, IClientAPI remoteClient ) : void
localID uint
scale System.Vector3
remoteClient IClientAPI
리턴 void

commit() 보호된 메소드

Only called from within the SimChat method.
protected commit ( string message, Scene scene, OpenSim.Region.OptionalModules.ContentManagement.CMModel model, OpenSim.Region.OptionalModules.ContentManagement.CMView view ) : void
message string
scene OpenSim.Region.Framework.Scenes.Scene
model OpenSim.Region.OptionalModules.ContentManagement.CMModel
view OpenSim.Region.OptionalModules.ContentManagement.CMView
리턴 void

diffmode() 보호된 메소드

Only called from within the SimChat method.
protected diffmode ( Scene scene, OpenSim.Region.OptionalModules.ContentManagement.CMModel model, OpenSim.Region.OptionalModules.ContentManagement.CMView view ) : void
scene OpenSim.Region.Framework.Scenes.Scene
model OpenSim.Region.OptionalModules.ContentManagement.CMModel
view OpenSim.Region.OptionalModules.ContentManagement.CMView
리턴 void

rollback() 보호된 메소드

Only called from within the SimChat method. Hides all auras and meta entities, retrieves the current scene object list with the most recent revision retrieved from the model for each scene, then lets the view update the clients of the new objects.
protected rollback ( Scene scene, OpenSim.Region.OptionalModules.ContentManagement.CMModel model, OpenSim.Region.OptionalModules.ContentManagement.CMView view ) : void
scene OpenSim.Region.Framework.Scenes.Scene
model OpenSim.Region.OptionalModules.ContentManagement.CMModel
view OpenSim.Region.OptionalModules.ContentManagement.CMView
리턴 void