| 258 |
smgr.SetAmbientLight(new Colorf(0, 0.5f, 0.5f, 0.5f)); |
smgr.SetAmbientLight(new Colorf(0, 0.5f, 0.5f, 0.5f)); |
| 259 |
|
|
| 260 |
//AnimatedMesh mesh = smgr.GetMesh("sydney.md2"); |
//AnimatedMesh mesh = smgr.GetMesh("sydney.md2"); |
| 261 |
//AnimatedMeshSceneNode node = smgr.AddAnimatedMeshSceneNode(mesh); |
//AnimatedMeshSceneNode node99 = smgr.AddAnimatedMeshSceneNode(mesh); |
| 262 |
|
///node99. |
| 263 |
|
|
| 264 |
//if (node != null) |
//if (node != null) |
| 265 |
//{ |
//{ |
| 418 |
//m_log.Warn("[NEWPRIM] "); |
//m_log.Warn("[NEWPRIM] "); |
| 419 |
} |
} |
| 420 |
} |
} |
| 421 |
|
|
| 422 |
|
lock (objectModQueue) |
| 423 |
|
{ |
| 424 |
objectModQueue.Enqueue(newObject); |
objectModQueue.Enqueue(newObject); |
| 425 |
} |
} |
| 426 |
} |
} |
| 427 |
|
} |
| 428 |
|
|
| 429 |
private void doObjectMods(int pObjects) |
private void doObjectMods(int pObjects) |
| 430 |
{ |
{ |
| 431 |
for (int i = 0; i < pObjects; i++) |
for (int i = 0; i < pObjects; i++) |
| 432 |
{ |
{ |
| 433 |
|
VObject vObj = null; |
| 434 |
|
lock (objectModQueue) |
| 435 |
|
{ |
| 436 |
if (objectModQueue.Count == 0) |
if (objectModQueue.Count == 0) |
| 437 |
break; |
break; |
| 438 |
VObject vObj = objectModQueue.Dequeue(); |
vObj = objectModQueue.Dequeue(); |
| 439 |
|
} |
| 440 |
if (vObj.prim != null) |
if (vObj.prim != null) |
| 441 |
{ |
{ |
| 442 |
ulong simhandle = vObj.prim.RegionHandle; |
ulong simhandle = vObj.prim.RegionHandle; |
| 456 |
WorldoffsetPos = gposr - gposc; |
WorldoffsetPos = gposr - gposc; |
| 457 |
} |
} |
| 458 |
} |
} |
| 459 |
|
|
| 460 |
VObject parentObj = null; |
VObject parentObj = null; |
| 461 |
SceneNode parentNode = smgr.RootSceneNode; |
SceneNode parentNode = smgr.RootSceneNode; |
| 462 |
//VObject vObj = UnAssignedChildObjectModQueue.Dequeue(); |
//VObject vObj = UnAssignedChildObjectModQueue.Dequeue(); |
| 491 |
SceneNode node = null; |
SceneNode node = null; |
| 492 |
if (vObj.node == null) |
if (vObj.node == null) |
| 493 |
{ |
{ |
| 494 |
|
if (vObj.prim is Avatar) |
| 495 |
|
{ |
| 496 |
|
AnimatedMesh avmesh = smgr.GetMesh("sydney.md2"); |
| 497 |
|
|
| 498 |
|
AnimatedMeshSceneNode node2 = smgr.AddAnimatedMeshSceneNode(avmesh); |
| 499 |
|
node = node2; |
| 500 |
|
vObj.node = node2; |
| 501 |
|
node.Scale = new Vector3D(0.035f, 0.035f, 0.035f); |
| 502 |
|
node.SetMaterialTexture(0, driver.GetTexture("sydney.BMP")); |
| 503 |
|
node.SetMaterialFlag(MaterialFlag.Lighting, true); |
| 504 |
|
} |
| 505 |
|
else |
| 506 |
|
{ |
| 507 |
node = smgr.AddMeshSceneNode(vObj.mesh, parentNode, (int)vObj.prim.LocalID); |
node = smgr.AddMeshSceneNode(vObj.mesh, parentNode, (int)vObj.prim.LocalID); |
| 508 |
creatednode = true; |
creatednode = true; |
| 509 |
vObj.node = node; |
vObj.node = node; |
| 510 |
} |
} |
| 511 |
|
} |
| 512 |
else |
else |
| 513 |
{ |
{ |
| 514 |
node = vObj.node; |
node = vObj.node; |
| 515 |
} |
} |
| 516 |
|
|
| 517 |
|
if (vObj.prim is Avatar) |
| 518 |
|
{ |
| 519 |
|
|
| 520 |
|
vObj.prim.Position.Z -= 0.2f; |
| 521 |
|
} |
| 522 |
|
else |
| 523 |
|
{ |
| 524 |
node.Scale = new Vector3D(vObj.prim.Scale.X, vObj.prim.Scale.Z , vObj.prim.Scale.Y); |
node.Scale = new Vector3D(vObj.prim.Scale.X, vObj.prim.Scale.Z , vObj.prim.Scale.Y); |
| 525 |
|
} |
| 526 |
|
|
| 527 |
// m_log.WarnFormat("[SCALE]: <{0},{1},{2}> = <{3},{4},{5}>", vObj.prim.Scale.X, vObj.prim.Scale.Z, vObj.prim.Scale.Y, pscalex, pscaley, pscalez); |
// m_log.WarnFormat("[SCALE]: <{0},{1},{2}> = <{3},{4},{5}>", vObj.prim.Scale.X, vObj.prim.Scale.Z, vObj.prim.Scale.Y, pscalex, pscaley, pscalez); |
| 528 |
if (vObj.prim.ParentID == 0) |
if (vObj.prim.ParentID == 0) |
| 529 |
{ |
{ |
| 530 |
|
if (vObj.prim is Avatar) |
| 531 |
|
{ |
| 532 |
|
m_log.WarnFormat("[AVATAR]: W:<{0},{1},{2}> R:<{3},{4},{5}>",WorldoffsetPos.X,WorldoffsetPos.Y,WorldoffsetPos.Z,vObj.prim.Position.X,vObj.prim.Position.Y,vObj.prim.Position.Z); |
| 533 |
|
WorldoffsetPos = Vector3.Zero; |
| 534 |
|
} |
| 535 |
|
|
| 536 |
|
try |
| 537 |
|
{ |
| 538 |
|
if (node.Raw == IntPtr.Zero) |
| 539 |
|
continue; |
| 540 |
node.Position = new Vector3D(WorldoffsetPos.X + vObj.prim.Position.X, WorldoffsetPos.Z + vObj.prim.Position.Z, WorldoffsetPos.Y + vObj.prim.Position.Y); |
node.Position = new Vector3D(WorldoffsetPos.X + vObj.prim.Position.X, WorldoffsetPos.Z + vObj.prim.Position.Z, WorldoffsetPos.Y + vObj.prim.Position.Y); |
| 541 |
} |
} |
| 542 |
|
catch (System.Runtime.InteropServices.SEHException) |
| 543 |
|
{ |
| 544 |
|
continue; |
| 545 |
|
} |
| 546 |
|
catch (AccessViolationException) |
| 547 |
|
{ |
| 548 |
|
continue; |
| 549 |
|
} |
| 550 |
|
|
| 551 |
|
} |
| 552 |
else |
else |
| 553 |
{ |
{ |
| 554 |
|
if (node.Raw == IntPtr.Zero) |
| 555 |
|
continue; |
| 556 |
node.Position = new Vector3D(WorldoffsetPos.X + parentObj.prim.Position.X + vObj.prim.Position.X, WorldoffsetPos.Z + parentObj.prim.Position.Z + vObj.prim.Position.Z, WorldoffsetPos.Y + parentObj.prim.Position.Y + vObj.prim.Position.Y); |
node.Position = new Vector3D(WorldoffsetPos.X + parentObj.prim.Position.X + vObj.prim.Position.X, WorldoffsetPos.Z + parentObj.prim.Position.Z + vObj.prim.Position.Z, WorldoffsetPos.Y + parentObj.prim.Position.Y + vObj.prim.Position.Y); |
| 557 |
} |
} |
| 558 |
|
|
| 574 |
finalpos = Cordinate_XYZ_XZY * finalpos; |
finalpos = Cordinate_XYZ_XZY * finalpos; |
| 575 |
|
|
| 576 |
|
|
| 577 |
|
if (node.Raw == IntPtr.Zero) |
| 578 |
|
continue; |
| 579 |
node.Rotation = finalpos.Matrix.RotationDegrees; |
node.Rotation = finalpos.Matrix.RotationDegrees; |
| 580 |
if (creatednode) |
if (creatednode) |
| 581 |
{ node.SetMaterialFlag(MaterialFlag.NormalizeNormals, true); |
{ node.SetMaterialFlag(MaterialFlag.NormalizeNormals, true); |
| 623 |
} |
} |
| 624 |
} |
} |
| 625 |
} |
} |
| 626 |
|
if (node.Raw == IntPtr.Zero) |
| 627 |
|
continue; |
| 628 |
node.UpdateAbsolutePosition(); |
node.UpdateAbsolutePosition(); |
| 629 |
|
|
| 630 |
} |
} |
| 638 |
|
|
| 639 |
for (int i = 0; i < pObjects; i++) |
for (int i = 0; i < pObjects; i++) |
| 640 |
{ |
{ |
| 641 |
if (objectModQueue.Count == 0) |
VObject vObj = null; |
| 642 |
|
Vector3 WorldoffsetPos = Vector3.Zero; |
| 643 |
|
lock (UnAssignedChildObjectModQueue) |
| 644 |
|
{ |
| 645 |
|
if (UnAssignedChildObjectModQueue.Count == 0) |
| 646 |
break; |
break; |
| 647 |
|
|
|
Vector3 WorldoffsetPos = Vector3.Zero; |
|
| 648 |
|
|
| 649 |
VObject vObj = UnAssignedChildObjectModQueue.Dequeue(); |
|
| 650 |
|
vObj = UnAssignedChildObjectModQueue.Dequeue(); |
| 651 |
|
} |
| 652 |
ulong simhandle = vObj.prim.RegionHandle; |
ulong simhandle = vObj.prim.RegionHandle; |
| 653 |
|
|
| 654 |
if (simhandle == 0) |
if (simhandle == 0) |
| 674 |
SceneNode node = null; |
SceneNode node = null; |
| 675 |
if (vObj.node == null) |
if (vObj.node == null) |
| 676 |
{ |
{ |
| 677 |
|
if (vObj.prim is Avatar) |
| 678 |
|
{ |
| 679 |
|
AnimatedMesh avmesh = smgr.GetMesh("sydney.md2"); |
| 680 |
|
|
| 681 |
|
AnimatedMeshSceneNode node2 = smgr.AddAnimatedMeshSceneNode(avmesh); |
| 682 |
|
node = node2; |
| 683 |
|
vObj.node = node2; |
| 684 |
|
} |
| 685 |
|
else |
| 686 |
|
{ |
| 687 |
node = smgr.AddMeshSceneNode(vObj.mesh, smgr.RootSceneNode, (int)vObj.prim.LocalID); |
node = smgr.AddMeshSceneNode(vObj.mesh, smgr.RootSceneNode, (int)vObj.prim.LocalID); |
| 688 |
creatednode = true; |
creatednode = true; |
| 689 |
vObj.node = node; |
vObj.node = node; |
| 690 |
} |
} |
| 691 |
|
} |
| 692 |
else |
else |
| 693 |
{ |
{ |
| 694 |
node = vObj.node; |
node = vObj.node; |
| 998 |
avatarConnection.OnSimConnected += SimConnectedCallback; |
avatarConnection.OnSimConnected += SimConnectedCallback; |
| 999 |
avatarConnection.OnObjectUpdated += objectUpdatedCallback; |
avatarConnection.OnObjectUpdated += objectUpdatedCallback; |
| 1000 |
avatarConnection.OnObjectKilled += objectKilledCallback; |
avatarConnection.OnObjectKilled += objectKilledCallback; |
| 1001 |
|
avatarConnection.OnNewAvatar += newAvatarCallback; |
| 1002 |
|
|
| 1003 |
guithread = new Thread(new ParameterizedThreadStart(startupGUI)); |
guithread = new Thread(new ParameterizedThreadStart(startupGUI)); |
| 1004 |
guithread.Start(); |
guithread.Start(); |
| 1222 |
} |
} |
| 1223 |
|
|
| 1224 |
} |
} |
| 1225 |
|
|
| 1226 |
private void landPatchCallback(Simulator sim, int x, int y, int width, float[] data) |
private void landPatchCallback(Simulator sim, int x, int y, int width, float[] data) |
| 1227 |
{ |
{ |
| 1228 |
ulong simhandle = sim.Handle; |
ulong simhandle = sim.Handle; |
| 1414 |
ushort timeDilation) |
ushort timeDilation) |
| 1415 |
{ |
{ |
| 1416 |
VObject obj = null; |
VObject obj = null; |
| 1417 |
if (!update.Avatar) |
//if (!update.Avatar) |
| 1418 |
{ |
//{ |
| 1419 |
lock (Entities) |
lock (Entities) |
| 1420 |
{ |
{ |
| 1421 |
if (Entities.ContainsKey(regionHandle.ToString() + update.LocalID.ToString())) |
if (Entities.ContainsKey(regionHandle.ToString() + update.LocalID.ToString())) |
| 1433 |
} |
} |
| 1434 |
} |
} |
| 1435 |
if (obj != null) |
if (obj != null) |
| 1436 |
|
{ |
| 1437 |
|
if (obj.prim is Avatar) |
| 1438 |
|
{ |
| 1439 |
|
lock (objectModQueue) |
| 1440 |
|
{ |
| 1441 |
|
objectModQueue.Enqueue(obj); |
| 1442 |
|
} |
| 1443 |
|
} |
| 1444 |
|
else |
| 1445 |
|
{ |
| 1446 |
enqueueVObject(obj); |
enqueueVObject(obj); |
| 1447 |
} |
} |
| 1448 |
} |
} |
| 1449 |
|
//} |
| 1450 |
|
} |
| 1451 |
private void objectKilledCallback(Simulator psim, uint pLocalID) |
private void objectKilledCallback(Simulator psim, uint pLocalID) |
| 1452 |
{ |
{ |
| 1453 |
ulong regionHandle = psim.Handle; |
ulong regionHandle = psim.Handle; |
| 1454 |
m_log.Debug("[DELETE]: obj " + regionHandle.ToString() + ":" + pLocalID.ToString()); |
m_log.Debug("[DELETE]: obj " + regionHandle.ToString() + ":" + pLocalID.ToString()); |
| 1455 |
|
VObject obj = null; |
| 1456 |
|
|
| 1457 |
lock (Entities) |
lock (Entities) |
| 1458 |
{ |
{ |
| 1459 |
if (Entities.ContainsKey(regionHandle.ToString() + pLocalID.ToString())) |
if (Entities.ContainsKey(regionHandle.ToString() + pLocalID.ToString())) |
| 1460 |
{ |
{ |
| 1461 |
VObject obj = Entities[regionHandle.ToString() + pLocalID.ToString()]; |
obj = Entities[regionHandle.ToString() + pLocalID.ToString()]; |
| 1462 |
if (obj.node != null) |
if (obj.node != null) |
| 1463 |
{ |
{ |
| 1464 |
smgr.AddToDeletionQueue(obj.node); |
smgr.AddToDeletionQueue(obj.node); |
| 1467 |
Entities.Remove(regionHandle.ToString() + pLocalID.ToString()); |
Entities.Remove(regionHandle.ToString() + pLocalID.ToString()); |
| 1468 |
} |
} |
| 1469 |
} |
} |
| 1470 |
|
if (obj != null) |
| 1471 |
|
{ |
| 1472 |
|
if (obj.prim is Avatar) |
| 1473 |
|
{ |
| 1474 |
|
lock (Avatars) |
| 1475 |
|
{ |
| 1476 |
|
if (Avatars.ContainsKey(obj.prim.ID)) |
| 1477 |
|
{ |
| 1478 |
|
Avatars.Remove(obj.prim.ID); |
| 1479 |
|
} |
| 1480 |
|
} |
| 1481 |
|
} |
| 1482 |
|
} |
| 1483 |
} |
} |
| 1484 |
|
|
| 1485 |
private void newAvatarCallback(Simulator sim, Avatar avatar, ulong regionHandle, |
private void newAvatarCallback(Simulator sim, Avatar avatar, ulong regionHandle, |
| 1486 |
ushort timeDilation) |
ushort timeDilation) |
| 1487 |
{ |
{ |
| 1488 |
|
VObject avob = new VObject(); |
| 1489 |
|
avob.prim = avatar; |
| 1490 |
|
avob.mesh = null; |
| 1491 |
|
avob.node = null; |
| 1492 |
|
lock (Avatars) |
| 1493 |
|
{ |
| 1494 |
|
if (Avatars.ContainsKey(avatar.ID)) |
| 1495 |
|
{ |
| 1496 |
|
Avatars[avatar.ID] = avob; |
| 1497 |
|
} |
| 1498 |
|
else |
| 1499 |
|
{ |
| 1500 |
|
Avatars.Add(avatar.ID, avob); |
| 1501 |
|
} |
| 1502 |
|
} |
| 1503 |
|
lock (Entities) |
| 1504 |
|
{ |
| 1505 |
|
if (Entities.ContainsKey(regionHandle.ToString() + avatar.LocalID.ToString())) |
| 1506 |
|
{ |
| 1507 |
|
VObject existingob = Entities[regionHandle.ToString() + avatar.LocalID.ToString()]; |
| 1508 |
|
if (existingob.node != null) |
| 1509 |
|
{ |
| 1510 |
|
smgr.AddToDeletionQueue(existingob.node); |
| 1511 |
|
} |
| 1512 |
|
Entities[regionHandle.ToString() + avatar.LocalID.ToString()] = avob; |
| 1513 |
|
} |
| 1514 |
|
else |
| 1515 |
|
{ |
| 1516 |
|
Entities.Add(regionHandle.ToString() + avatar.LocalID.ToString(), avob); |
| 1517 |
|
} |
| 1518 |
|
} |
| 1519 |
|
lock (objectModQueue) |
| 1520 |
|
{ |
| 1521 |
|
objectModQueue.Enqueue(avob); |
| 1522 |
|
} |
| 1523 |
} |
} |
| 1524 |
|
|
| 1525 |
#endregion |
#endregion |