models working end to end

This commit is contained in:
ZappoMan 2014-04-30 11:12:49 -07:00
parent 58c852d210
commit 0182a6d895
10 changed files with 43 additions and 11 deletions

View file

@ -16,6 +16,7 @@
#include "audio/AudioMixer.h" #include "audio/AudioMixer.h"
#include "avatars/AvatarMixer.h" #include "avatars/AvatarMixer.h"
#include "metavoxels/MetavoxelServer.h" #include "metavoxels/MetavoxelServer.h"
#include "models/ModelServer.h"
#include "particles/ParticleServer.h" #include "particles/ParticleServer.h"
#include "voxels/VoxelServer.h" #include "voxels/VoxelServer.h"
@ -41,6 +42,8 @@ ThreadedAssignment* AssignmentFactory::unpackAssignment(const QByteArray& packet
return new ParticleServer(packet); return new ParticleServer(packet);
case Assignment::MetavoxelServerType: case Assignment::MetavoxelServerType:
return new MetavoxelServer(packet); return new MetavoxelServer(packet);
case Assignment::ModelServerType:
return new ModelServer(packet);
default: default:
return NULL; return NULL;
} }

View file

@ -49,7 +49,7 @@ configure_file(InterfaceVersion.h.in "${PROJECT_BINARY_DIR}/includes/InterfaceVe
# grab the implementation and header files from src dirs # grab the implementation and header files from src dirs
file(GLOB INTERFACE_SRCS src/*.cpp src/*.h) file(GLOB INTERFACE_SRCS src/*.cpp src/*.h)
foreach(SUBDIR avatar devices renderer ui starfield location scripting voxels) foreach(SUBDIR avatar devices renderer ui starfield location scripting voxels particles models)
file(GLOB_RECURSE SUBDIR_SRCS src/${SUBDIR}/*.cpp src/${SUBDIR}/*.h) file(GLOB_RECURSE SUBDIR_SRCS src/${SUBDIR}/*.cpp src/${SUBDIR}/*.h)
set(INTERFACE_SRCS ${INTERFACE_SRCS} "${SUBDIR_SRCS}") set(INTERFACE_SRCS ${INTERFACE_SRCS} "${SUBDIR_SRCS}")
endforeach(SUBDIR) endforeach(SUBDIR)

View file

@ -54,6 +54,7 @@
#include <AccountManager.h> #include <AccountManager.h>
#include <AudioInjector.h> #include <AudioInjector.h>
#include <Logging.h> #include <Logging.h>
#include <ModelsScriptingInterface.h>
#include <OctalCode.h> #include <OctalCode.h>
#include <PacketHeaders.h> #include <PacketHeaders.h>
#include <ParticlesScriptingInterface.h> #include <ParticlesScriptingInterface.h>
@ -1665,6 +1666,9 @@ void Application::init() {
_particles.init(); _particles.init();
_particles.setViewFrustum(getViewFrustum()); _particles.setViewFrustum(getViewFrustum());
_models.init();
_models.setViewFrustum(getViewFrustum());
_metavoxels.init(); _metavoxels.init();
_particleCollisionSystem.init(&_particleEditSender, _particles.getTree(), _voxels.getTree(), &_audio, &_avatarManager); _particleCollisionSystem.init(&_particleEditSender, _particles.getTree(), _voxels.getTree(), &_audio, &_avatarManager);
@ -1995,6 +1999,8 @@ void Application::update(float deltaTime) {
_particles.update(); // update the particles... _particles.update(); // update the particles...
_particleCollisionSystem.update(); // collide the particles... _particleCollisionSystem.update(); // collide the particles...
_models.update(); // update the models...
_overlays.update(deltaTime); _overlays.update(deltaTime);
// let external parties know we're updating // let external parties know we're updating
@ -2335,6 +2341,7 @@ void Application::updateShadowMap() {
_avatarManager.renderAvatars(Avatar::SHADOW_RENDER_MODE); _avatarManager.renderAvatars(Avatar::SHADOW_RENDER_MODE);
_particles.render(); _particles.render();
_models.render();
glPopMatrix(); glPopMatrix();
@ -2501,6 +2508,13 @@ void Application::displaySide(Camera& whichCamera, bool selfAvatarOnly) {
_particles.render(); _particles.render();
} }
// render models...
if (Menu::getInstance()->isOptionChecked(MenuOption::Models)) {
PerformanceWarning warn(Menu::getInstance()->isOptionChecked(MenuOption::PipelineWarnings),
"Application::displaySide() ... models...");
_models.render();
}
// render the ambient occlusion effect if enabled // render the ambient occlusion effect if enabled
if (Menu::getInstance()->isOptionChecked(MenuOption::AmbientOcclusion)) { if (Menu::getInstance()->isOptionChecked(MenuOption::AmbientOcclusion)) {
PerformanceWarning warn(Menu::getInstance()->isOptionChecked(MenuOption::PipelineWarnings), PerformanceWarning warn(Menu::getInstance()->isOptionChecked(MenuOption::PipelineWarnings),
@ -3095,6 +3109,9 @@ void Application::domainChanged(const QString& domainHostname) {
// reset the particle renderer // reset the particle renderer
_particles.clear(); _particles.clear();
// reset the model renderer
_models.clear();
// reset the voxels renderer // reset the voxels renderer
_voxels.killLocalVoxels(); _voxels.killLocalVoxels();
} }
@ -3428,6 +3445,9 @@ ScriptEngine* Application::loadScript(const QString& scriptName, bool loadScript
scriptEngine->getParticlesScriptingInterface()->setPacketSender(&_particleEditSender); scriptEngine->getParticlesScriptingInterface()->setPacketSender(&_particleEditSender);
scriptEngine->getParticlesScriptingInterface()->setParticleTree(_particles.getTree()); scriptEngine->getParticlesScriptingInterface()->setParticleTree(_particles.getTree());
scriptEngine->getModelsScriptingInterface()->setPacketSender(&_modelEditSender);
scriptEngine->getModelsScriptingInterface()->setModelTree(_models.getTree());
// hook our avatar object into this script engine // hook our avatar object into this script engine
scriptEngine->setAvatarData(_myAvatar, "MyAvatar"); // leave it as a MyAvatar class to expose thrust features scriptEngine->setAvatarData(_myAvatar, "MyAvatar"); // leave it as a MyAvatar class to expose thrust features

View file

@ -29,6 +29,7 @@
#include <QTouchEvent> #include <QTouchEvent>
#include <QUndoStack> #include <QUndoStack>
#include <ModelEditPacketSender.h>
#include <NetworkPacket.h> #include <NetworkPacket.h>
#include <NodeList.h> #include <NodeList.h>
#include <PacketHeaders.h> #include <PacketHeaders.h>
@ -51,7 +52,6 @@
#include "Menu.h" #include "Menu.h"
#include "MetavoxelSystem.h" #include "MetavoxelSystem.h"
#include "PacketHeaders.h" #include "PacketHeaders.h"
#include "ParticleTreeRenderer.h"
#include "Stars.h" #include "Stars.h"
#include "avatar/Avatar.h" #include "avatar/Avatar.h"
#include "avatar/AvatarManager.h" #include "avatar/AvatarManager.h"
@ -60,6 +60,8 @@
#include "devices/Faceshift.h" #include "devices/Faceshift.h"
#include "devices/SixenseManager.h" #include "devices/SixenseManager.h"
#include "devices/Visage.h" #include "devices/Visage.h"
#include "models/ModelTreeRenderer.h"
#include "particles/ParticleTreeRenderer.h"
#include "renderer/AmbientOcclusionEffect.h" #include "renderer/AmbientOcclusionEffect.h"
#include "renderer/GeometryCache.h" #include "renderer/GeometryCache.h"
#include "renderer/GlowEffect.h" #include "renderer/GlowEffect.h"
@ -416,6 +418,8 @@ private:
ParticleTreeRenderer _particles; ParticleTreeRenderer _particles;
ParticleCollisionSystem _particleCollisionSystem; ParticleCollisionSystem _particleCollisionSystem;
ModelTreeRenderer _models;
QByteArray _voxelsFilename; QByteArray _voxelsFilename;
bool _wantToKillLocalVoxels; bool _wantToKillLocalVoxels;
@ -493,6 +497,7 @@ private:
VoxelHideShowThread _voxelHideShowThread; VoxelHideShowThread _voxelHideShowThread;
VoxelEditPacketSender _voxelEditSender; VoxelEditPacketSender _voxelEditSender;
ParticleEditPacketSender _particleEditSender; ParticleEditPacketSender _particleEditSender;
ModelEditPacketSender _modelEditSender;
int _packetsPerSecond; int _packetsPerSecond;
int _bytesPerSecond; int _bytesPerSecond;

View file

@ -280,8 +280,9 @@ Menu::Menu() :
addCheckableActionToQMenuAndActionHash(renderOptionsMenu, MenuOption::Shadows, 0, false); addCheckableActionToQMenuAndActionHash(renderOptionsMenu, MenuOption::Shadows, 0, false);
addCheckableActionToQMenuAndActionHash(renderOptionsMenu, MenuOption::Metavoxels, 0, true); addCheckableActionToQMenuAndActionHash(renderOptionsMenu, MenuOption::Metavoxels, 0, true);
addCheckableActionToQMenuAndActionHash(renderOptionsMenu, MenuOption::BuckyBalls, 0, true); addCheckableActionToQMenuAndActionHash(renderOptionsMenu, MenuOption::BuckyBalls, 0, false);
addCheckableActionToQMenuAndActionHash(renderOptionsMenu, MenuOption::Particles, 0, true); addCheckableActionToQMenuAndActionHash(renderOptionsMenu, MenuOption::Particles, 0, true);
addCheckableActionToQMenuAndActionHash(renderOptionsMenu, MenuOption::Models, 0, true);
addActionToQMenuAndActionHash(renderOptionsMenu, MenuOption::LodTools, Qt::SHIFT | Qt::Key_L, this, SLOT(lodTools())); addActionToQMenuAndActionHash(renderOptionsMenu, MenuOption::LodTools, Qt::SHIFT | Qt::Key_L, this, SLOT(lodTools()));
QMenu* voxelOptionsMenu = developerMenu->addMenu("Voxel Options"); QMenu* voxelOptionsMenu = developerMenu->addMenu("Voxel Options");

View file

@ -276,9 +276,6 @@ namespace MenuOption {
const QString AudioSpatialProcessingWithDiffusions = "With Diffusions"; const QString AudioSpatialProcessingWithDiffusions = "With Diffusions";
const QString AudioSpatialProcessingDontDistanceAttenuate = "Don't calculate distance attenuation"; const QString AudioSpatialProcessingDontDistanceAttenuate = "Don't calculate distance attenuation";
const QString AudioSpatialProcessingAlternateDistanceAttenuate = "Alternate distance attenuation"; const QString AudioSpatialProcessingAlternateDistanceAttenuate = "Alternate distance attenuation";
const QString Avatars = "Avatars"; const QString Avatars = "Avatars";
const QString Bandwidth = "Bandwidth Display"; const QString Bandwidth = "Bandwidth Display";
const QString BandwidthDetails = "Bandwidth Details"; const QString BandwidthDetails = "Bandwidth Details";
@ -330,6 +327,7 @@ namespace MenuOption {
const QString MetavoxelEditor = "Metavoxel Editor..."; const QString MetavoxelEditor = "Metavoxel Editor...";
const QString Metavoxels = "Metavoxels"; const QString Metavoxels = "Metavoxels";
const QString Mirror = "Mirror"; const QString Mirror = "Mirror";
const QString Models = "Models";
const QString MoveWithLean = "Move with Lean"; const QString MoveWithLean = "Move with Lean";
const QString MuteAudio = "Mute Microphone"; const QString MuteAudio = "Mute Microphone";
const QString NameLocation = "Name this location"; const QString NameLocation = "Name this location";

View file

@ -74,7 +74,7 @@ const QSet<PacketType> NON_VERIFIED_PACKETS = QSet<PacketType>()
<< PacketTypeDomainServerRequireDTLS << PacketTypeDomainConnectRequest << PacketTypeDomainServerRequireDTLS << PacketTypeDomainConnectRequest
<< PacketTypeDomainList << PacketTypeDomainListRequest << PacketTypeDomainList << PacketTypeDomainListRequest
<< PacketTypeCreateAssignment << PacketTypeRequestAssignment << PacketTypeStunResponse << PacketTypeCreateAssignment << PacketTypeRequestAssignment << PacketTypeStunResponse
<< PacketTypeNodeJsonStats << PacketTypeVoxelQuery << PacketTypeParticleQuery; << PacketTypeNodeJsonStats << PacketTypeVoxelQuery << PacketTypeParticleQuery << PacketTypeModelQuery;
const int NUM_BYTES_MD5_HASH = 16; const int NUM_BYTES_MD5_HASH = 16;
const int NUM_STATIC_HEADER_BYTES = sizeof(PacketVersion) + NUM_BYTES_RFC4122_UUID; const int NUM_STATIC_HEADER_BYTES = sizeof(PacketVersion) + NUM_BYTES_RFC4122_UUID;

View file

@ -20,15 +20,14 @@
#include <AudioRingBuffer.h> #include <AudioRingBuffer.h>
#include <AvatarData.h> #include <AvatarData.h>
#include <CollisionInfo.h> #include <CollisionInfo.h>
#include <ModelsScriptingInterface.h>
#include <NodeList.h> #include <NodeList.h>
#include <PacketHeaders.h> #include <PacketHeaders.h>
#include <ParticlesScriptingInterface.h>
#include <Sound.h>
#include <UUID.h> #include <UUID.h>
#include <VoxelConstants.h> #include <VoxelConstants.h>
#include <VoxelDetail.h> #include <VoxelDetail.h>
#include <ParticlesScriptingInterface.h>
#include <ModelsScriptingInterface.h>
#include <Sound.h>
#include "AnimationObject.h" #include "AnimationObject.h"
#include "MenuItemProperties.h" #include "MenuItemProperties.h"
@ -205,6 +204,11 @@ void ScriptEngine::init() {
qScriptRegisterMetaType(&_engine, ParticlePropertiesToScriptValue, ParticlePropertiesFromScriptValue); qScriptRegisterMetaType(&_engine, ParticlePropertiesToScriptValue, ParticlePropertiesFromScriptValue);
qScriptRegisterMetaType(&_engine, ParticleIDtoScriptValue, ParticleIDfromScriptValue); qScriptRegisterMetaType(&_engine, ParticleIDtoScriptValue, ParticleIDfromScriptValue);
qScriptRegisterSequenceMetaType<QVector<ParticleID> >(&_engine); qScriptRegisterSequenceMetaType<QVector<ParticleID> >(&_engine);
qScriptRegisterMetaType(&_engine, ModelItemPropertiesToScriptValue, ModelItemPropertiesFromScriptValue);
qScriptRegisterMetaType(&_engine, ModelItemIDtoScriptValue, ModelItemIDfromScriptValue);
qScriptRegisterSequenceMetaType<QVector<ModelItemID> >(&_engine);
qScriptRegisterSequenceMetaType<QVector<glm::vec2> >(&_engine); qScriptRegisterSequenceMetaType<QVector<glm::vec2> >(&_engine);
qScriptRegisterSequenceMetaType<QVector<glm::quat> >(&_engine); qScriptRegisterSequenceMetaType<QVector<glm::quat> >(&_engine);
qScriptRegisterSequenceMetaType<QVector<QString> >(&_engine); qScriptRegisterSequenceMetaType<QVector<QString> >(&_engine);
@ -225,6 +229,7 @@ void ScriptEngine::init() {
registerGlobalObject("Script", this); registerGlobalObject("Script", this);
registerGlobalObject("Audio", &_audioScriptingInterface); registerGlobalObject("Audio", &_audioScriptingInterface);
registerGlobalObject("Controller", _controllerScriptingInterface); registerGlobalObject("Controller", _controllerScriptingInterface);
registerGlobalObject("Models", &_modelsScriptingInterface);
registerGlobalObject("Particles", &_particlesScriptingInterface); registerGlobalObject("Particles", &_particlesScriptingInterface);
registerGlobalObject("Quat", &_quatLibrary); registerGlobalObject("Quat", &_quatLibrary);
registerGlobalObject("Vec3", &_vec3Library); registerGlobalObject("Vec3", &_vec3Library);