mirror of
https://github.com/overte-org/overte.git
synced 2025-04-25 20:16:16 +02:00
Avatars are now slowed down when they get near other avatars, for easy fine positioning.
This commit is contained in:
parent
e2ce927492
commit
ee1e5d16fc
2 changed files with 22 additions and 20 deletions
|
@ -324,7 +324,16 @@ void Avatar::setMousePressed( bool d ) {
|
||||||
|
|
||||||
void Avatar::simulate(float deltaTime) {
|
void Avatar::simulate(float deltaTime) {
|
||||||
|
|
||||||
float nearestAvatarDistance = 1000000.f;
|
float nearestAvatarDistance = std::numeric_limits<float>::max();
|
||||||
|
|
||||||
|
//keep this - I'm still using it to test things....
|
||||||
|
/*
|
||||||
|
//TEST
|
||||||
|
static float tt = 0.0f;
|
||||||
|
tt += deltaTime * 2.0f;
|
||||||
|
//_head.leanSideways = 0.01 * sin( tt );
|
||||||
|
_head.leanForward = 0.02 * sin( tt * 0.8 );
|
||||||
|
*/
|
||||||
|
|
||||||
// update balls
|
// update balls
|
||||||
if (_balls) { _balls->simulate(deltaTime); }
|
if (_balls) { _balls->simulate(deltaTime); }
|
||||||
|
@ -346,8 +355,7 @@ void Avatar::simulate(float deltaTime) {
|
||||||
// all the other avatars for potential interactions...
|
// all the other avatars for potential interactions...
|
||||||
if ( _isMine )
|
if ( _isMine )
|
||||||
{
|
{
|
||||||
float closestDistance = 10000.0f;
|
|
||||||
|
|
||||||
AgentList* agentList = AgentList::getInstance();
|
AgentList* agentList = AgentList::getInstance();
|
||||||
for (AgentList::iterator agent = agentList->begin(); agent != agentList->end(); agent++) {
|
for (AgentList::iterator agent = agentList->begin(); agent != agentList->end(); agent++) {
|
||||||
if (agent->getLinkedData() != NULL && agent->getType() == AGENT_TYPE_AVATAR) {
|
if (agent->getLinkedData() != NULL && agent->getType() == AGENT_TYPE_AVATAR) {
|
||||||
|
@ -467,9 +475,11 @@ void Avatar::simulate(float deltaTime) {
|
||||||
// decay velocity
|
// decay velocity
|
||||||
_velocity *= ( 1.0 - LIN_VEL_DECAY * deltaTime );
|
_velocity *= ( 1.0 - LIN_VEL_DECAY * deltaTime );
|
||||||
|
|
||||||
// If other avatars nearby, damp velocity much more!
|
// If someone is near, damp velocity as a function of closeness
|
||||||
if (_isMine && (nearestAvatarDistance < 3.f)) {
|
const float AVATAR_BRAKING_RANGE = 1.2f;
|
||||||
_velocity *= (1.0 - fmin(10.f * glm::length(_velocity) * deltaTime, 1.0));
|
const float AVATAR_BRAKING_STRENGTH = 25.f;
|
||||||
|
if (_isMine && (nearestAvatarDistance < AVATAR_BRAKING_RANGE )) {
|
||||||
|
_velocity *= (1.f - deltaTime * AVATAR_BRAKING_STRENGTH * (AVATAR_BRAKING_RANGE - nearestAvatarDistance));
|
||||||
}
|
}
|
||||||
|
|
||||||
// update head information
|
// update head information
|
||||||
|
|
|
@ -221,23 +221,15 @@ void displayStats(void)
|
||||||
if (::menuOn == 0) {
|
if (::menuOn == 0) {
|
||||||
statsVerticalOffset = 8;
|
statsVerticalOffset = 8;
|
||||||
}
|
}
|
||||||
// bitmap chars are about 10 pels high
|
|
||||||
char legend[] = "/ - toggle this display, Q - exit, H - show head, M - show hand, T - test audio";
|
|
||||||
drawtext(10, statsVerticalOffset + 15, 0.10f, 0, 1.0, 0, legend);
|
|
||||||
|
|
||||||
char legend2[] = "* - toggle stars, & - toggle paint mode, '-' - send erase all, '%' - send add scene";
|
|
||||||
drawtext(10, statsVerticalOffset + 32, 0.10f, 0, 1.0, 0, legend2);
|
|
||||||
|
|
||||||
glm::vec3 avatarPos = myAvatar.getPosition();
|
|
||||||
|
|
||||||
char stats[200];
|
char stats[200];
|
||||||
sprintf(stats, "FPS = %3.0f Pkts/s = %d Bytes/s = %d Head(x,y,z)= %4.2f, %4.2f, %4.2f ",
|
sprintf(stats, "%3.0f FPS, %d Pkts/sec, %3.2f Mbps",
|
||||||
FPS, packetsPerSecond, bytesPerSecond, avatarPos.x,avatarPos.y,avatarPos.z);
|
FPS, packetsPerSecond, (float)bytesPerSecond * 8.f / 1000000.f);
|
||||||
drawtext(10, statsVerticalOffset + 49, 0.10f, 0, 1.0, 0, stats);
|
drawtext(10, statsVerticalOffset + 15, 0.10f, 0, 1.0, 0, stats);
|
||||||
|
|
||||||
std::stringstream voxelStats;
|
std::stringstream voxelStats;
|
||||||
voxelStats << "Voxels Rendered: " << voxels.getVoxelsRendered() << " Updated: " << voxels.getVoxelsUpdated();
|
voxelStats << "Voxels Rendered: " << voxels.getVoxelsRendered() << " Updated: " << voxels.getVoxelsUpdated();
|
||||||
drawtext(10, statsVerticalOffset + 70, 0.10f, 0, 1.0, 0, (char *)voxelStats.str().c_str());
|
drawtext(10, statsVerticalOffset + 230, 0.10f, 0, 1.0, 0, (char *)voxelStats.str().c_str());
|
||||||
|
|
||||||
voxelStats.str("");
|
voxelStats.str("");
|
||||||
voxelStats << "Voxels Created: " << voxels.getVoxelsCreated() << " (" << voxels.getVoxelsCreatedPerSecondAverage()
|
voxelStats << "Voxels Created: " << voxels.getVoxelsCreated() << " (" << voxels.getVoxelsCreatedPerSecondAverage()
|
||||||
|
@ -251,7 +243,7 @@ void displayStats(void)
|
||||||
|
|
||||||
voxelStats.str("");
|
voxelStats.str("");
|
||||||
voxelStats << "Voxels Bytes Read: " << voxels.getVoxelsBytesRead()
|
voxelStats << "Voxels Bytes Read: " << voxels.getVoxelsBytesRead()
|
||||||
<< " (" << voxels.getVoxelsBytesReadPerSecondAverage() << " Bps)";
|
<< " (" << voxels.getVoxelsBytesReadPerSecondAverage() * 8.f / 1000000.f << " Mbps)";
|
||||||
drawtext(10, statsVerticalOffset + 290,0.10f, 0, 1.0, 0, (char *)voxelStats.str().c_str());
|
drawtext(10, statsVerticalOffset + 290,0.10f, 0, 1.0, 0, (char *)voxelStats.str().c_str());
|
||||||
|
|
||||||
voxelStats.str("");
|
voxelStats.str("");
|
||||||
|
@ -1633,7 +1625,7 @@ int main(int argc, const char * argv[])
|
||||||
}
|
}
|
||||||
|
|
||||||
// Handle Local Domain testing with the --local command line
|
// Handle Local Domain testing with the --local command line
|
||||||
if (true || cmdOptionExists(argc, argv, "--local")) {
|
if (cmdOptionExists(argc, argv, "--local")) {
|
||||||
printLog("Local Domain MODE!\n");
|
printLog("Local Domain MODE!\n");
|
||||||
int ip = getLocalAddress();
|
int ip = getLocalAddress();
|
||||||
sprintf(DOMAIN_IP,"%d.%d.%d.%d", (ip & 0xFF), ((ip >> 8) & 0xFF),((ip >> 16) & 0xFF), ((ip >> 24) & 0xFF));
|
sprintf(DOMAIN_IP,"%d.%d.%d.%d", (ip & 0xFF), ((ip >> 8) & 0xFF),((ip >> 16) & 0xFF), ((ip >> 24) & 0xFF));
|
||||||
|
|
Loading…
Reference in a new issue