mirror of
https://github.com/overte-org/overte.git
synced 2025-04-16 16:26:17 +02:00
make collision callbacks work
This commit is contained in:
parent
27bc394bed
commit
0592b74a06
5 changed files with 56 additions and 19 deletions
|
@ -22,11 +22,6 @@ var velocity = {
|
|||
y: 0,
|
||||
z: 1 };
|
||||
|
||||
var gravity = {
|
||||
x: 0,
|
||||
y: 0,
|
||||
z: 0 };
|
||||
|
||||
var damping = 0.1;
|
||||
|
||||
var color = {
|
||||
|
@ -45,25 +40,20 @@ function draw(deltaTime) {
|
|||
y: 1,
|
||||
z: 2 };
|
||||
var largeRadius = 0.5;
|
||||
var verySlow = {
|
||||
x: 0.01,
|
||||
y: 0,
|
||||
z: 0.01 };
|
||||
|
||||
var properties = {
|
||||
type: "Sphere",
|
||||
script: "file:///Users/zappoman/Development/HiFi/hifi/examples/entityScripts/changeColorOnCollision.js",
|
||||
collisionsWillMove: true,
|
||||
position: startPosition,
|
||||
dimensions: {x: largeRadius, y: largeRadius, z: largeRadius},
|
||||
registrationPoint: { x: 0.5, y: 0.5, z: 0.5 },
|
||||
color: colorGreen,
|
||||
//velocity: verySlow,
|
||||
//gravity: gravity,
|
||||
damping: damping,
|
||||
lifetime: 20
|
||||
};
|
||||
|
||||
Entities.addEntity(properties);
|
||||
//Entities.addEntity(properties);
|
||||
numberEntitiesAdded++;
|
||||
}
|
||||
|
||||
|
@ -95,13 +85,13 @@ function draw(deltaTime) {
|
|||
if (numberEntitiesAdded <= MAX_ENTITIES) {
|
||||
var properties = {
|
||||
type: "Sphere",
|
||||
script: "file:///Users/zappoman/Development/HiFi/hifi/examples/entityScripts/changeColorOnCollision.js",
|
||||
collisionsWillMove: true,
|
||||
position: center,
|
||||
dimensions: {x: entitySize, y: entitySize, z: entitySize},
|
||||
registrationPoint: { x: 0.5, y: 0.5, z: 0.5 },
|
||||
color: color,
|
||||
velocity: velocity,
|
||||
//gravity: gravity,
|
||||
damping: damping,
|
||||
lifetime: 20
|
||||
};
|
||||
|
|
27
examples/entityScripts/changeColorOnCollision.js
Normal file
27
examples/entityScripts/changeColorOnCollision.js
Normal file
|
@ -0,0 +1,27 @@
|
|||
//
|
||||
// changeColorOnCollision.js
|
||||
// examples/entityScripts
|
||||
//
|
||||
// Created by Brad Hefta-Gaub on 12/8/14.
|
||||
// Copyright 2014 High Fidelity, Inc.
|
||||
//
|
||||
// Distributed under the Apache License, Version 2.0.
|
||||
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
|
||||
//
|
||||
|
||||
print("changeColorOnCollision.js");
|
||||
|
||||
(function(){
|
||||
function getRandomInt(min, max) {
|
||||
return Math.floor(Math.random() * (max - min + 1)) + min;
|
||||
}
|
||||
|
||||
this.preload = function(myID) {
|
||||
print("changeColorOnCollision.js--- preload!!!");
|
||||
};
|
||||
|
||||
this.collisionWithEntity = function(myID, otherID, collisionInfo) {
|
||||
print("collisionWithEntity");
|
||||
Entities.editEntity(myID, { color: { red: getRandomInt(128,255), green: getRandomInt(128,255), blue: getRandomInt(128,255)} });
|
||||
};
|
||||
})
|
|
@ -886,13 +886,33 @@ void EntityTreeRenderer::changingEntityID(const EntityItemID& oldEntityID, const
|
|||
|
||||
void EntityTreeRenderer::entityCollisionWithVoxel(const EntityItemID& entityID, const VoxelDetail& voxel,
|
||||
const Collision& collision) {
|
||||
qDebug() << "EntityTreeRenderer::entityCollisionWithVoxel()... ";
|
||||
QScriptValue entityScript = getPreviouslyLoadedEntityScript(entityID);
|
||||
if (entityScript.property("collisionWithVoxel").isValid()) {
|
||||
QScriptValueList args;
|
||||
args << entityID.toScriptValue(_entitiesScriptEngine);
|
||||
args << collisionToScriptValue(_entitiesScriptEngine, collision);
|
||||
entityScript.property("collisionWithVoxel").call(entityScript, args);
|
||||
}
|
||||
}
|
||||
|
||||
void EntityTreeRenderer::entityCollisionWithEntity(const EntityItemID& idA, const EntityItemID& idB,
|
||||
const Collision& collision) {
|
||||
qDebug() << "EntityTreeRenderer::entityCollisionWithEntity()... ";
|
||||
qDebug() << " idA:" << idA;
|
||||
qDebug() << " idB:" << idB;
|
||||
QScriptValue entityScriptA = loadEntityScript(idA);
|
||||
if (entityScriptA.property("collisionWithEntity").isValid()) {
|
||||
QScriptValueList args;
|
||||
args << idA.toScriptValue(_entitiesScriptEngine);
|
||||
args << idB.toScriptValue(_entitiesScriptEngine);
|
||||
args << collisionToScriptValue(_entitiesScriptEngine, collision);
|
||||
entityScriptA.property("collisionWithEntity").call(entityScriptA, args);
|
||||
}
|
||||
|
||||
QScriptValue entityScriptB = loadEntityScript(idB);
|
||||
if (entityScriptB.property("collisionWithEntity").isValid()) {
|
||||
QScriptValueList args;
|
||||
args << idB.toScriptValue(_entitiesScriptEngine);
|
||||
args << idA.toScriptValue(_entitiesScriptEngine);
|
||||
args << collisionToScriptValue(_entitiesScriptEngine, collision);
|
||||
entityScriptB.property("collisionWithEntity").call(entityScriptA, args);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -54,7 +54,7 @@ void EntityCollisionSystem::updateCollisions() {
|
|||
PerformanceTimer perfTimer("collisions");
|
||||
assert(_entityTree);
|
||||
// update all Entities
|
||||
if (_entityTree->tryLockForRead()) {
|
||||
if (_entityTree->tryLockForWrite()) {
|
||||
foreach (EntityItem* entity, _movingEntities) {
|
||||
checkEntity(entity);
|
||||
}
|
||||
|
|
|
@ -46,7 +46,7 @@ Octree::Octree(bool shouldReaverage) :
|
|||
_isDirty(true),
|
||||
_shouldReaverage(shouldReaverage),
|
||||
_stopImport(false),
|
||||
_lock(),
|
||||
_lock(QReadWriteLock::Recursive),
|
||||
_isViewing(false),
|
||||
_isServer(false)
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue