From ae174c1fdcb7a621233da56d51d9c3285d8362f8 Mon Sep 17 00:00:00 2001 From: andreja6 Date: Thu, 7 Nov 2019 21:13:03 -0800 Subject: [PATCH] Test --- Application.cpp | 12 ++++++++++-- GroupInstance.cpp | 2 ++ GroupInstance.h | 1 + Instance.cpp | 15 +++++++++++++++ Instance.h | 5 +++-- PVInstance.cpp | 38 ++++++++++++++++++++++++++++++++++++++ PVInstance.h | 2 ++ WorkspaceInstance.cpp | 9 +++++++++ WorkspaceInstance.h | 5 +++++ 9 files changed, 85 insertions(+), 4 deletions(-) diff --git a/Application.cpp b/Application.cpp index 05da96e..0289b94 100644 --- a/Application.cpp +++ b/Application.cpp @@ -603,7 +603,15 @@ void Application::onGraphics(RenderDevice* rd) { glEnableClientState(GL_VERTEX_ARRAY); glEnableClientState(GL_COLOR_ARRAY); glEnableClientState(GL_NORMAL_ARRAY); - _dataModel->getWorkspace()->render(rd); + + + + + for (unsigned int i = 0; i < _dataModel->getWorkspace()->__pvVector.size(); i++) + { + _dataModel->getWorkspace()->__pvVector[i]->render(rd); + } + //_dataModel->getWorkspace()->render(rd); glDisableClientState(GL_VERTEX_ARRAY); glDisableClientState(GL_COLOR_ARRAY); glDisableClientState(GL_NORMAL_ARRAY); @@ -846,7 +854,7 @@ void Application::run() { cursorOvrid = cursorOvr->openGLID(); RealTime now=0, lastTime=0; double simTimeRate = 1.0f; - float fps=30.0f; + float fps=3000.0f; RealTime desiredFrameDuration=1.0/fps; onInit(); diff --git a/GroupInstance.cpp b/GroupInstance.cpp index cd5f5a4..1d038dd 100644 --- a/GroupInstance.cpp +++ b/GroupInstance.cpp @@ -17,6 +17,8 @@ GroupInstance::~GroupInstance(void) { } + + std::vector GroupInstance::getProperties() { std::vector properties = PVInstance::getProperties(); diff --git a/GroupInstance.h b/GroupInstance.h index 98d63e3..0368b53 100644 --- a/GroupInstance.h +++ b/GroupInstance.h @@ -10,4 +10,5 @@ public: GroupInstance(const GroupInstance &oinst); virtual std::vector getProperties(); virtual void PropUpdate(LPPROPGRIDITEM &pItem); + }; diff --git a/Instance.cpp b/Instance.cpp index 996aaac..7032c28 100644 --- a/Instance.cpp +++ b/Instance.cpp @@ -114,6 +114,21 @@ std::vector Instance::getAllChildren() return children; } +std::vector Instance::compileAndGetPVVector() +{ + std::vector totalchildren; + if(!children.empty()) + { + for(size_t i = 0; i < children.size(); i++) + { + std::vector subchildren = children.at(i)->compileAndGetPVVector(); + if(!subchildren.empty()) + totalchildren.insert(totalchildren.end(), subchildren.begin(), subchildren.end()); + } + } + return totalchildren; +} + void Instance::setParent(Instance* newParent) { if(parent != NULL) diff --git a/Instance.h b/Instance.h index 04ea7af..9c7c85e 100644 --- a/Instance.h +++ b/Instance.h @@ -12,12 +12,12 @@ public: std::string name; virtual void render(RenderDevice*); virtual void update(); - std::vector children; // All children. std::string getClassName(); Instance* findFirstChild(std::string); std::vector getChildren(); std::vector getAllChildren(); - void setParent(Instance*); + std::vector compileAndGetPVVector(); + virtual void setParent(Instance*); void setName(std::string newName); void addChild(Instance*); void removeChild(Instance*); @@ -28,6 +28,7 @@ public: virtual void PropUpdate(LPPROPGRIDITEM &pItem); int listicon; protected: + std::vector children; // All children. std::string className; Instance* parent; // Another pointer. PROPGRIDITEM createPGI(LPSTR catalog, LPSTR propName, LPSTR propDesc, LPARAM curVal, INT type, TCHAR choices[] = NULL); diff --git a/PVInstance.cpp b/PVInstance.cpp index 206de12..86ff67e 100644 --- a/PVInstance.cpp +++ b/PVInstance.cpp @@ -1,4 +1,5 @@ #include "PVInstance.h" +#include "WorkspaceInstance.h" PVInstance::PVInstance(void) { @@ -21,6 +22,43 @@ void PVInstance::postRender(RenderDevice* rd) { } +void PVInstance::render(RenderDevice* rd) +{ +} + +void PVInstance::setParent(Instance* newParent) +{ + if(parent != NULL) + { + Instance* workspace = parent; + while(workspace != NULL) + { + if(WorkspaceInstance* wsp = dynamic_cast(workspace)) + { + wsp->removeFromPVector(this); + break; + } + workspace = workspace->getParent(); + } + parent->removeChild(this); + } + parent = newParent; + if(newParent != NULL) + { + Instance* workspace = parent; + while(workspace != NULL) + { + if(WorkspaceInstance* wsp = dynamic_cast(workspace)) + { + wsp->addToPVector(this); + break; + } + workspace = workspace->getParent(); + } + newParent->addChild(this); + } +} + std::vector PVInstance::getProperties() { std::vector properties = Instance::getProperties(); diff --git a/PVInstance.h b/PVInstance.h index 9f6e65d..4582fa1 100644 --- a/PVInstance.h +++ b/PVInstance.h @@ -9,7 +9,9 @@ public: ~PVInstance(void); PVInstance(const PVInstance &oinst); virtual void postRender(RenderDevice* rd); + virtual void setParent(Instance* newParent); virtual std::vector getProperties(); virtual void PropUpdate(LPPROPGRIDITEM &pItem); + virtual void render(RenderDevice* rd); bool nameShown; }; diff --git a/WorkspaceInstance.cpp b/WorkspaceInstance.cpp index 47fceec..8efab99 100644 --- a/WorkspaceInstance.cpp +++ b/WorkspaceInstance.cpp @@ -12,3 +12,12 @@ WorkspaceInstance::WorkspaceInstance(void) WorkspaceInstance::~WorkspaceInstance(void) { } + +void WorkspaceInstance::removeFromPVector(PVInstance * instance) +{ + __pvVector.erase(std::remove(__pvVector.begin(), __pvVector.end(), instance), __pvVector.end()); +} +void WorkspaceInstance::addToPVector(PVInstance * instance) +{ + __pvVector.push_back(instance); +} \ No newline at end of file diff --git a/WorkspaceInstance.h b/WorkspaceInstance.h index 9ca7899..6b61f7b 100644 --- a/WorkspaceInstance.h +++ b/WorkspaceInstance.h @@ -1,5 +1,6 @@ #pragma once #include "GroupInstance.h" +#include class WorkspaceInstance : public GroupInstance @@ -7,4 +8,8 @@ class WorkspaceInstance : public: WorkspaceInstance(void); ~WorkspaceInstance(void); + void removeFromPVector(PVInstance *); + void addToPVector(PVInstance *); + std::vector __pvVector; + std::vector* getPVVector(); };