mirror of
https://github.com/opensim/opensim.git
synced 2026-08-07 01:35:46 +08:00
* Exploring Group/Part from an app perspective.
This commit is contained in:
46
OpenSim/Region/Examples/SimpleApp/ComplexObject.cs
Normal file
46
OpenSim/Region/Examples/SimpleApp/ComplexObject.cs
Normal file
@@ -0,0 +1,46 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using OpenSim.Region.Environment.Scenes;
|
||||
using Axiom.Math;
|
||||
using libsecondlife;
|
||||
using OpenSim.Framework.Types;
|
||||
|
||||
namespace SimpleApp
|
||||
{
|
||||
public class ComplexObject : SceneObjectGroup
|
||||
{
|
||||
private LLQuaternion m_rotationDirection;
|
||||
|
||||
private class RotatingWheel : SceneObjectPart
|
||||
{
|
||||
private static LLQuaternion m_rotationDirection = new LLQuaternion(0.05f, 0, 0);
|
||||
|
||||
public RotatingWheel(ulong regionHandle, SceneObjectGroup parent, LLUUID ownerID, uint localID, LLVector3 groupPosition, LLVector3 offsetPosition)
|
||||
: base(regionHandle, parent, ownerID, localID, BoxShape.Default, groupPosition, offsetPosition )
|
||||
{
|
||||
}
|
||||
|
||||
public override void UpdateMovement()
|
||||
{
|
||||
UpdateRotation(RotationOffset * m_rotationDirection);
|
||||
}
|
||||
}
|
||||
|
||||
public override void UpdateMovement()
|
||||
{
|
||||
UpdateGroupRotation(Rotation * m_rotationDirection);
|
||||
|
||||
base.UpdateMovement();
|
||||
}
|
||||
|
||||
public ComplexObject(Scene scene, ulong regionHandle, LLUUID ownerID, uint localID, LLVector3 pos )
|
||||
: base(scene, regionHandle, ownerID, localID, pos, BoxShape.Default )
|
||||
{
|
||||
m_rotationDirection = new LLQuaternion(0.05f, 0.1f, 0.15f);
|
||||
|
||||
AddPart(new RotatingWheel(regionHandle, this, ownerID, scene.PrimIDAllocate(), pos, new LLVector3(0, 0, 1f)));
|
||||
AddPart(new RotatingWheel(regionHandle, this, ownerID, scene.PrimIDAllocate(), pos, new LLVector3(0, 0, -1f)));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -13,8 +13,8 @@ namespace SimpleApp
|
||||
{
|
||||
private PerformanceCounter m_counter;
|
||||
|
||||
public CpuCounterObject(Scene world, ulong regionHandle, LLUUID ownerID, uint localID, LLVector3 pos, PrimitiveBaseShape shape)
|
||||
: base(world, regionHandle, ownerID, localID, pos, shape )
|
||||
public CpuCounterObject(Scene world, ulong regionHandle, LLUUID ownerID, uint localID, LLVector3 pos )
|
||||
: base(world, regionHandle, ownerID, localID, pos, BoxShape.Default )
|
||||
{
|
||||
String objectName = "Processor";
|
||||
String counterName = "% Processor Time";
|
||||
|
||||
@@ -65,14 +65,15 @@ namespace SimpleApp
|
||||
|
||||
udpServer.ServerListener();
|
||||
|
||||
PrimitiveBaseShape shape = BoxShape.Default;
|
||||
shape.Scale = new LLVector3(0.5f, 0.5f, 0.5f);
|
||||
LLVector3 pos = new LLVector3(138, 129, 27);
|
||||
LLVector3 pos = new LLVector3(110, 129, 27);
|
||||
|
||||
SceneObjectGroup sceneObject = new CpuCounterObject(scene, regionInfo.RegionHandle, LLUUID.Zero, scene.PrimIDAllocate(), pos, shape);
|
||||
scene.AddEntity(sceneObject);
|
||||
SceneObjectGroup sceneObject = new CpuCounterObject(scene, regionInfo.RegionHandle, LLUUID.Zero, scene.PrimIDAllocate(), pos + new LLVector3( 1f, 1f, 1f ));
|
||||
scene.AddEntity(sceneObject);
|
||||
|
||||
MyNpcCharacter m_character = new MyNpcCharacter( scene.EventManager );
|
||||
ComplexObject complexObject = new ComplexObject(scene, regionInfo.RegionHandle, LLUUID.Zero, scene.PrimIDAllocate(), pos + new LLVector3( 2f, 2f, 2f ));
|
||||
scene.AddEntity(complexObject);
|
||||
|
||||
MyNpcCharacter m_character = new MyNpcCharacter(scene.EventManager);
|
||||
scene.AddNewClient(m_character, false);
|
||||
|
||||
DirectoryInfo dirInfo = new DirectoryInfo( "." );
|
||||
|
||||
Reference in New Issue
Block a user