本文整理汇总了C#中OpenSim.Region.Framework.Scenes.SceneObjectPart.Resize方法的典型用法代码示例。如果您正苦于以下问题:C# SceneObjectPart.Resize方法的具体用法?C# SceneObjectPart.Resize怎么用?C# SceneObjectPart.Resize使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类OpenSim.Region.Framework.Scenes.SceneObjectPart
的用法示例。
在下文中一共展示了SceneObjectPart.Resize方法的10个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: PlaybackState
public void PlaybackState(SceneObjectPart part)
{
if (part != null)
{
part.Undoing = true;
if (part.ParentID == 0)
{
if (Position != Vector3.Zero)
{
part.ParentGroup.AbsolutePosition = Position;
}
part.RotationOffset = Rotation;
if (Scale != Vector3.Zero)
{
part.Scale = Scale;
}
lock (part.ParentGroup.Children)
{
foreach (SceneObjectPart child in
part.ParentGroup.Children.Values.Where(child => child.UUID != part.UUID))
{
child.Undo(); //No updates here, child undo will do it on their own
}
}
}
else
{
if (Position != Vector3.Zero)
{
part.OffsetPosition = Position;
}
part.UpdateRotation(Rotation);
if (Scale != Vector3.Zero)
{
part.Resize(Scale);
}
}
part.Undoing = false;
part.ScheduleFullUpdate();
}
}
示例2: doChangeObject
public void doChangeObject(SceneObjectPart part, ObjectChangeData data)
{
// TODO this still as excessive *.Schedule*Update()s
if (part != null && part.ParentGroup != null)
{
ObjectChangeType change = data.change;
bool togroup = ((change & ObjectChangeType.Group) != 0);
// bool uniform = ((what & ObjectChangeType.UniformScale) != 0); not in use
SceneObjectGroup group = part.ParentGroup;
PhysicsActor pha = group.RootPart.PhysActor;
updatetype updateType = updatetype.none;
if (togroup)
{
// related to group
if ((change & (ObjectChangeType.Rotation | ObjectChangeType.Position)) != 0)
{
if ((change & ObjectChangeType.Rotation) != 0)
{
group.RootPart.UpdateRotation(data.rotation);
updateType = updatetype.none;
}
if ((change & ObjectChangeType.Position) != 0)
{
if (IsAttachment || m_scene.Permissions.CanObjectEntry(group.UUID, false, data.position))
UpdateGroupPosition(data.position);
updateType = updatetype.groupterse;
}
else
// ugly rotation update of all parts
{
group.ResetChildPrimPhysicsPositions();
}
}
if ((change & ObjectChangeType.Scale) != 0)
{
if (pha != null)
pha.Building = true;
group.GroupResize(data.scale);
updateType = updatetype.none;
if (pha != null)
pha.Building = false;
}
}
else
{
// related to single prim in a link-set ( ie group)
if (pha != null)
pha.Building = true;
// root part is special
// parts offset positions or rotations need to change also
if (part == group.RootPart)
{
if ((change & ObjectChangeType.Rotation) != 0)
group.UpdateRootRotation(data.rotation);
if ((change & ObjectChangeType.Position) != 0)
group.UpdateRootPosition(data.position);
if ((change & ObjectChangeType.Scale) != 0)
part.Resize(data.scale);
}
else
{
if ((change & ObjectChangeType.Position) != 0)
{
part.OffsetPosition = data.position;
updateType = updatetype.partterse;
}
if ((change & ObjectChangeType.Rotation) != 0)
{
part.UpdateRotation(data.rotation);
updateType = updatetype.none;
}
if ((change & ObjectChangeType.Scale) != 0)
{
part.Resize(data.scale);
updateType = updatetype.none;
}
}
if (pha != null)
pha.Building = false;
}
if (updateType != updatetype.none)
{
group.HasGroupChanged = true;
switch (updateType)
{
case updatetype.partterse:
part.ScheduleTerseUpdate();
break;
//.........这里部分代码省略.........
示例3: PlaybackState
public void PlaybackState(SceneObjectPart part)
{
if (part != null)
{
part.Undoing = true;
bool ChangedScale = false;
bool ChangedRot = false;
bool ChangedPos = false;
if (part.UUID == part.ParentGroup.UUID)
{
if (Position != Vector3.Zero)
{
ChangedPos = true;
part.ParentGroup.AbsolutePosition = Position;
}
ChangedRot = true;
part.RotationOffset = Rotation;
if (Scale != Vector3.Zero)
{
ChangedScale = true;
part.Scale = Scale;
}
#if (!ISWIN)
foreach (SceneObjectPart child in part.ParentGroup.ChildrenList)
{
if (child.UUID != part.UUID)
{
child.Undo(); //No updates here, child undo will do it on their own
}
}
#else
foreach (SceneObjectPart child in part.ParentGroup.ChildrenList.Where(child => child.UUID != part.UUID))
{
child.Undo(); //No updates here, child undo will do it on their own
}
#endif
}
else
{
if (Position != Vector3.Zero)
{
ChangedPos = true;
part.FixOffsetPosition(Position, false);
}
ChangedRot = true;
part.UpdateRotation(Rotation);
if (Scale != Vector3.Zero)
{
ChangedScale = true;
part.Resize(Scale);
}
}
part.Undoing = false;
part.ScheduleUpdate((ChangedScale ? PrimUpdateFlags.Shape : PrimUpdateFlags.None) |
(ChangedPos ? PrimUpdateFlags.Position : PrimUpdateFlags.None) |
(ChangedRot ? PrimUpdateFlags.Rotation : PrimUpdateFlags.None));
}
}
示例4: PlayfwdState
public void PlayfwdState(SceneObjectPart part)
{
if (part != null)
{
bool ChangedScale = false;
bool ChangedRot = false;
bool ChangedPos = false;
part.Undoing = true;
if (part.UUID == part.ParentGroup.UUID)
{
if (Position != Vector3.Zero)
{
ChangedPos = true;
part.ParentGroup.AbsolutePosition = Position;
}
if (Rotation != Quaternion.Identity)
{
ChangedRot = true;
part.UpdateRotation(Rotation);
}
if (Scale != Vector3.Zero)
{
ChangedScale = true;
part.Resize(Scale);
}
foreach (SceneObjectPart child in part.ParentGroup.ChildrenList)
{
if (child.UUID != part.UUID)
child.Redo(); //No updates here, child redo will do it on their own
}
}
else
{
if (Position != Vector3.Zero)
{
ChangedPos = true;
part.FixOffsetPosition(Position,false);
}
if (Rotation != Quaternion.Identity)
{
ChangedRot = true;
part.ParentGroup.Rotation = (Rotation);
}
if (Scale != Vector3.Zero)
{
ChangedScale = true;
part.Resize(Scale);
}
}
part.ScheduleUpdate((ChangedScale ? PrimUpdateFlags.Shape : PrimUpdateFlags.None) |
(ChangedPos ? PrimUpdateFlags.Position : PrimUpdateFlags.None) |
(ChangedRot ? PrimUpdateFlags.Rotation : PrimUpdateFlags.None));
part.Undoing = false;
}
}
示例5: PlaybackState
public void PlaybackState(SceneObjectPart part)
{
if (part != null)
{
part.Undoing = true;
if (part.ParentID == 0)
{
part.ParentGroup.AbsolutePosition = Position;
part.UpdateRotation(Rotation);
part.ParentGroup.ScheduleGroupForTerseUpdate();
}
else
{
part.OffsetPosition = Position;
part.UpdateRotation(Rotation);
part.Resize(Scale);
part.ScheduleTerseUpdate();
}
part.Undoing = false;
}
}
示例6: PlayfwdState
public void PlayfwdState(SceneObjectPart part)
{
if (part != null)
{
part.Undoing = true;
if (part.ParentID == 0)
{
if (Position != Vector3.Zero)
part.ParentGroup.AbsolutePosition = Position;
if (Rotation != Quaternion.Identity)
part.UpdateRotation(Rotation);
if (Scale != Vector3.Zero)
part.Resize(Scale);
part.ParentGroup.ScheduleGroupForTerseUpdate();
}
else
{
if (Position != Vector3.Zero)
part.OffsetPosition = Position;
if (Rotation != Quaternion.Identity)
part.UpdateRotation(Rotation);
if (Scale != Vector3.Zero)
part.Resize(Scale);
part.ScheduleTerseUpdate();
}
part.Undoing = false;
}
}
示例7: PlayfwdState
public void PlayfwdState(SceneObjectPart part)
{
part.Undoing = true;
if (part.ParentID == 0)
{
if (Position != Vector3.Zero)
part.ParentGroup.AbsolutePosition = Position;
if (Rotation != Quaternion.Identity)
part.UpdateRotation(Rotation);
if (Scale != Vector3.Zero)
{
if (ForGroup)
part.ParentGroup.GroupResize(Scale);
else
part.Resize(Scale);
}
part.ParentGroup.ScheduleGroupForTerseUpdate();
}
else
{
// Note: Updating these properties on sop automatically schedules an update if needed
if (Position != Vector3.Zero)
part.OffsetPosition = Position;
if (Rotation != Quaternion.Identity)
part.UpdateRotation(Rotation);
if (Scale != Vector3.Zero)
part.Resize(Scale);
}
part.Undoing = false;
}
示例8: PlaybackState
public void PlaybackState(SceneObjectPart part)
{
part.Undoing = true;
if (part.ParentID == 0)
{
// m_log.DebugFormat(
// "[UNDO STATE]: Undoing position to {0} for root part {1} {2}",
// Position, part.Name, part.LocalId);
if (Position != Vector3.Zero)
{
if (ForGroup)
part.ParentGroup.AbsolutePosition = Position;
else
part.ParentGroup.UpdateRootPosition(Position);
}
// m_log.DebugFormat(
// "[UNDO STATE]: Undoing rotation {0} to {1} for root part {2} {3}",
// part.RotationOffset, Rotation, part.Name, part.LocalId);
if (ForGroup)
part.UpdateRotation(Rotation);
else
part.ParentGroup.UpdateRootRotation(Rotation);
if (Scale != Vector3.Zero)
{
// m_log.DebugFormat(
// "[UNDO STATE]: Undoing scale {0} to {1} for root part {2} {3}",
// part.Shape.Scale, Scale, part.Name, part.LocalId);
if (ForGroup)
part.ParentGroup.GroupResize(Scale);
else
part.Resize(Scale);
}
part.ParentGroup.ScheduleGroupForTerseUpdate();
}
else
{
// Note: Updating these properties on sop automatically schedules an update if needed
if (Position != Vector3.Zero)
{
// m_log.DebugFormat(
// "[UNDO STATE]: Undoing position {0} to {1} for child part {2} {3}",
// part.OffsetPosition, Position, part.Name, part.LocalId);
part.OffsetPosition = Position;
}
// m_log.DebugFormat(
// "[UNDO STATE]: Undoing rotation {0} to {1} for child part {2} {3}",
// part.RotationOffset, Rotation, part.Name, part.LocalId);
part.UpdateRotation(Rotation);
if (Scale != Vector3.Zero)
{
// m_log.DebugFormat(
// "[UNDO STATE]: Undoing scale {0} to {1} for child part {2} {3}",
// part.Shape.Scale, Scale, part.Name, part.LocalId);
part.Resize(Scale);
}
}
part.Undoing = false;
}
示例9: PlayfwdState
public void PlayfwdState(SceneObjectPart part)
{
if (part != null)
{
part.Undoing = true;
bool ChangedScale = false;
bool ChangedRot = false;
bool ChangedPos = false;
if (part.ParentID == 0)
{
if (Position != Vector3.Zero)
{
ChangedPos = true;
part.ParentGroup.AbsolutePosition = Position;
}
ChangedRot = true;
part.RotationOffset = Rotation;
if (Scale != Vector3.Zero)
{
ChangedScale = true;
part.Scale = Scale;
}
lock (part.ParentGroup.Children)
{
foreach (SceneObjectPart child in
part.ParentGroup.Children.Values.Where(child => child.UUID != part.UUID))
{
child.Redo(); //No updates here, child redo will do it on their own
}
}
}
else
{
if (Position != Vector3.Zero)
{
ChangedPos = true;
part.OffsetPosition = Position;
}
ChangedRot = true;
part.UpdateRotation(Rotation);
if (Scale != Vector3.Zero)
{
ChangedScale = true;
part.Resize(Scale);
}
}
part.Undoing = false;
part.ScheduleFullUpdate();
//part.ScheduleUpdate((ChangedScale ? PrimUpdateFlags.Shape : PrimUpdateFlags.None) |
// (ChangedPos ? PrimUpdateFlags.Position : PrimUpdateFlags.None) |
// (ChangedRot ? PrimUpdateFlags.Rotation : PrimUpdateFlags.None));
}
}
示例10: PlayfwdState
public void PlayfwdState(SceneObjectPart part)
{
if (part != null)
{
part.Undoing = true;
if (part.ParentID == 0)
{
if (Position != Vector3.Zero)
{
part.ParentGroup.AbsolutePosition = Position;
}
part.RotationOffset = Rotation;
if (Scale != Vector3.Zero)
{
part.Scale = Scale;
}
foreach (SceneObjectPart child in
part.ParentGroup.GetParts().Where(child => child.UUID != part.UUID))
{
child.Redo(); //No updates here, child redo will do it on their own
}
}
else
{
if (Position != Vector3.Zero)
{
part.OffsetPosition = Position;
}
part.UpdateRotation(Rotation);
if (Scale != Vector3.Zero)
{
part.Resize(Scale);
}
}
part.Undoing = false;
part.ScheduleFullUpdate(PrimUpdateFlags.FindBest);
}
}