本文整理汇总了C#中OpenSim.Region.Framework.Scenes.SceneObjectGroup.UpdateGroupRotationR方法的典型用法代码示例。如果您正苦于以下问题:C# SceneObjectGroup.UpdateGroupRotationR方法的具体用法?C# SceneObjectGroup.UpdateGroupRotationR怎么用?C# SceneObjectGroup.UpdateGroupRotationR使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类OpenSim.Region.Framework.Scenes.SceneObjectGroup
的用法示例。
在下文中一共展示了SceneObjectGroup.UpdateGroupRotationR方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: AddNewSceneObject
/// <summary>
/// Add a newly created object to the scene.
/// </summary>
///
/// This method does not send updates to the client - callers need to handle this themselves.
/// <param name="sceneObject"></param>
/// <param name="attachToBackup"></param>
/// <param name="pos">Position of the object</param>
/// <param name="rot">Rotation of the object</param>
/// <param name="vel">Velocity of the object. This parameter only has an effect if the object is physical</param>
/// <returns></returns>
public bool AddNewSceneObject(
SceneObjectGroup sceneObject, bool attachToBackup, Vector3 pos, Quaternion rot, Vector3 vel)
{
AddNewSceneObject(sceneObject, true, false);
// we set it's position in world.
sceneObject.AbsolutePosition = pos;
if (sceneObject.RootPart.Shape.PCode == (byte)PCode.Prim)
{
sceneObject.ClearPartAttachmentData();
}
sceneObject.UpdateGroupRotationR(rot);
//group.ApplyPhysics(m_physicalPrim);
if (sceneObject.RootPart.PhysActor != null && sceneObject.RootPart.PhysActor.IsPhysical && vel != Vector3.Zero)
{
sceneObject.RootPart.ApplyImpulse((vel * sceneObject.GetMass()), false);
sceneObject.Velocity = vel;
}
return true;
}
示例2: AddNewSceneObject
/// <summary>
/// Add a newly created object to the scene.
/// </summary>
///
/// This method does not send updates to the client - callers need to handle this themselves.
/// Caller should also trigger EventManager.TriggerObjectAddedToScene
/// <param name="sceneObject"></param>
/// <param name="attachToBackup"></param>
/// <param name="pos">Position of the object. If null then the position stored in the object is used.</param>
/// <param name="rot">Rotation of the object. If null then the rotation stored in the object is used.</param>
/// <param name="vel">Velocity of the object. This parameter only has an effect if the object is physical</param>
/// <returns></returns>
public bool AddNewSceneObject(
SceneObjectGroup sceneObject, bool attachToBackup, Vector3? pos, Quaternion? rot, Vector3 vel)
{
AddNewSceneObject(sceneObject, attachToBackup, false);
if (pos != null)
sceneObject.AbsolutePosition = (Vector3)pos;
if (sceneObject.RootPart.Shape.PCode == (byte)PCode.Prim)
{
sceneObject.ClearPartAttachmentData();
}
if (rot != null)
sceneObject.UpdateGroupRotationR((Quaternion)rot);
PhysicsActor pa = sceneObject.RootPart.PhysActor;
if (pa != null && pa.IsPhysical && vel != Vector3.Zero)
{
sceneObject.RootPart.ApplyImpulse((vel * sceneObject.GetMass()), false);
sceneObject.Velocity = vel;
}
return true;
}
示例3: DoCoverview
void DoCoverview(Scene scene)
{
// We're going to place objects in world
displayed = slideCount - 1;
current = slideCount - 1;
for (int x=0;x<=(2*displayed);x++)
{
if (x< displayed)
{
position[x] = x;
updatedPosition[x] = x;
offset[x] = (x - (displayed + 10f)) * spacing;
}
if (x == displayed)
{
position[x] = x;
updatedPosition[x] = x;
offset[x] = 0.0f;
}
if (x > displayed)
{
offset[x] = (x - (displayed - 10f)) * spacing;
}
}
//Place prims in the region
for (int x=0; x<=displayed; x++)
{
Vector3 pos = new Vector3(rootPosition + offset[position[x]], yPosition, zPosition);
SceneObjectGroup sog = new SceneObjectGroup(UUID.Zero, pos, PrimitiveBaseShape.CreateBox());
if (x==displayed)
{
sog.UpdateGroupRotationR(new Quaternion(0,0,1,1));
}
sog.RootPart.Scale = size;
prims.Add(sog);
}
// Now make them visible
foreach (SceneObjectGroup sogr in prims)
{
scene.AddNewSceneObject(sogr, false);
}
}