1 Commits

Author SHA1 Message Date
Modnark
fcab9a8871 kinda add RunService 2023-03-30 14:45:56 -04:00
33 changed files with 154 additions and 460 deletions

View File

@@ -509,6 +509,10 @@
/> />
</FileConfiguration> </FileConfiguration>
</File> </File>
<File
RelativePath=".\src\source\DataModelV2\RunServiceInstance.cpp"
>
</File>
<File <File
RelativePath=".\src\source\DataModelV2\SelectionService.cpp" RelativePath=".\src\source\DataModelV2\SelectionService.cpp"
> >
@@ -675,26 +679,14 @@
</Filter> </Filter>
</Filter> </Filter>
<Filter <Filter
Name="PropertiesV2" Name="Properties"
> >
<File <File
RelativePath=".\src\source\PropertiesV2\BoolProperty.cpp" RelativePath=".\src\source\Properties\BoolProperty.cpp"
> >
</File> </File>
<File <File
RelativePath=".\src\source\PropertiesV2\Color3Property.cpp" RelativePath=".\src\source\Properties\Property.cpp"
>
</File>
<File
RelativePath=".\src\source\PropertiesV2\Property.cpp"
>
</File>
<File
RelativePath=".\src\source\PropertiesV2\StringProperty.cpp"
>
</File>
<File
RelativePath=".\src\source\PropertiesV2\Vector3Property.cpp"
> >
</File> </File>
</Filter> </Filter>
@@ -914,6 +906,10 @@
RelativePath=".\src\include\DataModelV2\PVInstance.h" RelativePath=".\src\include\DataModelV2\PVInstance.h"
> >
</File> </File>
<File
RelativePath=".\src\include\DataModelV2\RunServiceInstance.h"
>
</File>
<File <File
RelativePath=".\src\include\DataModelV2\SelectionService.h" RelativePath=".\src\include\DataModelV2\SelectionService.h"
> >
@@ -972,26 +968,14 @@
</Filter> </Filter>
</Filter> </Filter>
<Filter <Filter
Name="PropertiesV2" Name="Properties"
> >
<File <File
RelativePath=".\src\include\PropertiesV2\BoolProperty.h" RelativePath=".\src\include\Properties\BoolProperty.h"
> >
</File> </File>
<File <File
RelativePath=".\src\include\PropertiesV2\Color3Property.h" RelativePath=".\src\include\Properties\Property.h"
>
</File>
<File
RelativePath=".\src\include\PropertiesV2\Property.h"
>
</File>
<File
RelativePath=".\src\include\PropertiesV2\StringProperty.h"
>
</File>
<File
RelativePath=".\src\include\PropertiesV2\Vector3Property.h"
> >
</File> </File>
</Filter> </Filter>
@@ -1003,14 +987,6 @@
> >
</File> </File>
</Filter> </Filter>
<Filter
Name="B3DEnum"
>
<File
RelativePath=".\src\include\Enum\B3DEnum.h"
>
</File>
</Filter>
</Filter> </Filter>
<Filter <Filter
Name="Resource Files" Name="Resource Files"

View File

@@ -10,6 +10,7 @@
#include "XplicitNgine/XplicitNgine.h" #include "XplicitNgine/XplicitNgine.h"
#include "SoundService.h" #include "SoundService.h"
#include "LightingInstance.h" #include "LightingInstance.h"
#include "RunServiceInstance.h"
// Libraries // Libraries
#include "rapidxml/rapidxml.hpp" #include "rapidxml/rapidxml.hpp"
@@ -38,6 +39,7 @@ public:
ThumbnailGeneratorInstance* getThumbnailGenerator(); ThumbnailGeneratorInstance* getThumbnailGenerator();
SoundService* getSoundService(); SoundService* getSoundService();
LightingInstance* getLighting(); LightingInstance* getLighting();
RunService* getRunService();
std::string message; std::string message;
std::string _loadedFileName; std::string _loadedFileName;
@@ -47,7 +49,7 @@ public:
SelectionService* getSelectionService(); SelectionService* getSelectionService();
PartInstance* makePart(); PartInstance* makePart();
void clearLevel(); void clearLevel();
void toggleRun(); void toggleRun(bool doRun);
bool isRunning(); bool isRunning();
void resetEngine(); void resetEngine();
#if _DEBUG #if _DEBUG
@@ -72,6 +74,8 @@ private:
XplicitNgine* xplicitNgine; XplicitNgine* xplicitNgine;
SoundService* soundService; SoundService* soundService;
LightingInstance* lightingInstance; LightingInstance* lightingInstance;
RunService* runService;
bool running; bool running;
}; };

View File

@@ -1,8 +1,6 @@
#pragma once #pragma once
#include <G3DAll.h> #include <G3DAll.h>
#include "propertyGrid.h" #include "propertyGrid.h"
#include "PropertiesV2/StringProperty.h"
#include "PropertiesV2/BoolProperty.h"
#include "map" #include "map"
class Instance class Instance
@@ -28,18 +26,12 @@ public:
void clearChildren(); void clearChildren();
Instance* getParent(); Instance* getParent();
virtual Instance* clone() const { return new Instance(*this); } virtual Instance* clone() const { return new Instance(*this); }
//Deprecated
virtual std::vector<PROPGRIDITEM> getProperties(); virtual std::vector<PROPGRIDITEM> getProperties();
//Deprecated
virtual void PropUpdate(LPPROPGRIDITEM &pItem); virtual void PropUpdate(LPPROPGRIDITEM &pItem);
virtual std::vector<Property *> collectProperties();
int listicon; int listicon;
protected: protected:
std::string className; std::string className;
Instance* parent; // Another pointer. Instance* parent; // Another pointer.
//Deprecated
PROPGRIDITEM createPGI(LPSTR catalog, LPSTR propName, LPSTR propDesc, LPARAM curVal, INT type, TCHAR choices[] = NULL); PROPGRIDITEM createPGI(LPSTR catalog, LPSTR propName, LPSTR propDesc, LPARAM curVal, INT type, TCHAR choices[] = NULL);
private: private:
static const std::map<std::string, Instance> g_logLevelsDescriptions; static const std::map<std::string, Instance> g_logLevelsDescriptions;

View File

@@ -13,13 +13,9 @@ public:
virtual void postRender(RenderDevice* rd); virtual void postRender(RenderDevice* rd);
virtual std::vector<PROPGRIDITEM> getProperties(); virtual std::vector<PROPGRIDITEM> getProperties();
virtual void PropUpdate(LPPROPGRIDITEM &pItem); virtual void PropUpdate(LPPROPGRIDITEM &pItem);
virtual std::vector<Property*> collectProperties();
bool nameShown; bool nameShown;
bool controllerFlagShown; bool controllerFlagShown;
Enum::Controller::Value controller; Enum::Controller::Value controller;
virtual void makeJoints();
virtual void setNameShown(bool nameShown);
virtual void setControllerFlagShown(bool controllerFlagShown);
protected: protected:
CoordinateFrame cFrame; CoordinateFrame cFrame;
static G3D::Color3 getControllerColor(int controller) static G3D::Color3 getControllerColor(int controller)

View File

@@ -1,8 +1,6 @@
#pragma once #pragma once
#include "PVInstance.h" #include "PVInstance.h"
#include "Enum.h" #include "Enum.h"
#include "PropertiesV2/Color3Property.h"
#include "PropertiesV2/Vector3Property.h"
#define _USE_MATH_DEFINES #define _USE_MATH_DEFINES
#include <cmath> #include <cmath>
@@ -61,7 +59,6 @@ public:
//Setters //Setters
void setParent(Instance* parent); void setParent(Instance* parent);
void setPosition(Vector3); void setPosition(Vector3);
void setColor(Color3 color);
void setVelocity(Vector3); void setVelocity(Vector3);
void setRotVelocity(Vector3); void setRotVelocity(Vector3);
void setCFrame(CoordinateFrame); void setCFrame(CoordinateFrame);
@@ -86,7 +83,6 @@ public:
//Properties //Properties
virtual std::vector<PROPGRIDITEM> getProperties(); virtual std::vector<PROPGRIDITEM> getProperties();
virtual void PropUpdate(LPPROPGRIDITEM &pItem); virtual void PropUpdate(LPPROPGRIDITEM &pItem);
virtual std::vector<Property *> collectProperties();
private: private:
bool anchored; bool anchored;
Vector3 position; Vector3 position;

View File

@@ -0,0 +1,14 @@
#pragma once
#include "Instance.h"
class RunService :
public Instance
{
public:
RunService(void);
~RunService(void);
void run();
void pause();
void reset();
};

View File

@@ -12,3 +12,4 @@ public:
void zoomToExtents(); void zoomToExtents();
std::vector<PartInstance *> partObjects; std::vector<PartInstance *> partObjects;
}; };

View File

@@ -1,6 +1,4 @@
#pragma once #pragma once
#include <string>
#include <map>
namespace Enum namespace Enum
{ {
@@ -9,30 +7,6 @@ namespace Enum
enum Value { enum Value {
Smooth = 0, Bumps = 1, Hinge = 2, Motor = 3, StepperMotor = 4, Spawn = 5 Smooth = 0, Bumps = 1, Hinge = 2, Motor = 3, StepperMotor = 4, Spawn = 5
}; };
static std::pair<std::string, Value> map_data[] = {
std::make_pair("Smooth", Smooth),
std::make_pair("Bumps", Bumps),
std::make_pair("Hinge", Hinge),
std::make_pair("Motor", Motor),
std::make_pair("StepperMotor", StepperMotor),
std::make_pair("Spawn", Spawn)
};
static std::map<std::string, Value> nameMap(map_data,
map_data + sizeof map_data / sizeof map_data[0]);
static Value getByName(std::string name) {
if(nameMap.find(name) != nameMap.end()){
return nameMap[name];
}
return Smooth;
}
static std::string getName(Value value) {
for (std::map<std::string, Value>::iterator it = nameMap.begin(); it != nameMap.end(); ++it)
if (it->second == value)
return it->first;
return "";
}
} }
namespace Shape namespace Shape
{ {

View File

@@ -1,24 +0,0 @@
#pragma once
namespace Enum
{
class B3DEnum {
public:
B3DEnum(int id, std::string name)
{
this->id = id;
this->name = name;
}
const int getId() {
return id;
}
const std::string getName() {
return name;
}
virtual B3DEnum getByName(std::string name);
virtual B3DEnum getById(int id);
private:
int id;
std::string name;
}
}

View File

@@ -0,0 +1,12 @@
#pragma once
#include "Property.h"
class BoolProperty : public Property<bool>
{
public:
BoolProperty(std::string name, bool& value, Instance& owner)
{
Property<bool>(name, value, owner);
}
~BoolProperty(void);
PROPGRIDITEM getPropGridItem();
};

View File

@@ -0,0 +1,30 @@
#pragma once
#include "DataModelV2/Instance.h"
#include <string>
class Instance;
template <typename T>
class Property
{
public:
Property(std::string name, T& value, Instance& owner)
{
_value = value;
_owner = owner;
}
~Property(void);
const T getValue()
{
return _value;
}
const void setValue(T val)
{
_value = val;
}
virtual PROPGRIDITEM getPropGridItem();
void setProperty(LPPROPGRIDITEM item);
protected:
Instance* _owner;
std::string _name;
T* _value;
};

View File

@@ -1,23 +0,0 @@
#pragma once
#include "Property.h"
class BoolProperty : public Property
{
public:
typedef void (Instance::*instanceSetter)(bool);
//Win32 why
~BoolProperty(void);
BoolProperty(LPSTR name, LPSTR desc, LPSTR catalog, bool value, Instance * owner, instanceSetter setterFunc)
:Property(name, desc, catalog, (void*)value, owner)
{
this->setterFunc = setterFunc;
}
const void setValue(bool val){
(_owner->*setterFunc)(val);
_value = (void *)val;
}
PROPGRIDITEM getPropGridItem();
void setProperty(LPPROPGRIDITEM &pItem);
private:
instanceSetter setterFunc;
};

View File

@@ -1,24 +0,0 @@
#pragma once
#include "Property.h"
class Color3Property : public Property
{
public:
typedef void (Instance::*instanceSetter)(Color3);
~Color3Property(void){};
Color3Property(LPSTR name, LPSTR desc, LPSTR catalog, Color3 value, Instance * owner, instanceSetter setterFunc)
:Property(name, desc, catalog, &_value, owner)
{
this->_value = value;
this->setterFunc = setterFunc;
}
const void setValue(Color3 val){
(_owner->*setterFunc)(val);
_value = val;
}
PROPGRIDITEM getPropGridItem();
void setProperty(LPPROPGRIDITEM &pItem);
private:
Color3 _value;
instanceSetter setterFunc;
};

View File

@@ -1,38 +0,0 @@
#pragma once
#include <G3DAll.h>
#include "propertyGrid.h"
class Instance;
class Property
{
public:
Property(LPSTR name, LPSTR desc, LPSTR catalog, Instance * owner){
_name = name;
_desc = desc;
_catalog = catalog;
_owner = owner;
}
Property(LPSTR name, LPSTR desc, LPSTR catalog, void* value, Instance * owner){
_name = name;
_desc = desc;
_catalog = catalog;
_owner = owner;
_value = value;
}
~Property(void){}
const void* getValue() {
return _value;
}
const LPSTR getName() {
return _name;
}
virtual PROPGRIDITEM getPropGridItem();
virtual void setProperty(LPPROPGRIDITEM &pItem);
protected:
Instance* _owner;
LPSTR _name;
LPSTR _desc;
LPSTR _catalog;
void* _value;
};

View File

@@ -1,24 +0,0 @@
#pragma once
#include "Property.h"
class StringProperty : public Property
{
public:
typedef void (Instance::*instanceSetter)(std::string);
~StringProperty(void){};
StringProperty(LPSTR name, LPSTR desc, LPSTR catalog, std::string value, Instance * owner, instanceSetter setterFunc)
:Property(name, desc, catalog, &_value, owner)
{
this->_value = value;
this->setterFunc = setterFunc;
}
const void setValue(std::string val){
(_owner->*setterFunc)(val);
_value = val;
}
PROPGRIDITEM getPropGridItem();
void setProperty(LPPROPGRIDITEM &pItem);
private:
std::string _value;
instanceSetter setterFunc;
};

View File

@@ -1,26 +0,0 @@
#pragma once
#include "Property.h"
#include <sstream>
class Vector3Property : public Property
{
public:
typedef void (Instance::*instanceSetter)(Vector3);
~Vector3Property(void){};
Vector3Property(LPSTR name, LPSTR desc, LPSTR catalog, Vector3 value, Instance * owner, instanceSetter setterFunc)
:Property(name, desc, catalog, &_value, owner)
{
this->_value = value;
this->setterFunc = setterFunc;
}
const void setValue(Vector3 val){
(_owner->*setterFunc)(val);
_value = val;
}
PROPGRIDITEM getPropGridItem();
void setProperty(LPPROPGRIDITEM &pItem);
private:
Vector3 _value;
std::string stringRep;
instanceSetter setterFunc;
};

View File

@@ -15,5 +15,4 @@ private:
HWND _explorerComboBox; HWND _explorerComboBox;
void _resize(); void _resize();
void clearExplorer(); void clearExplorer();
void deleteProperties();
}; };

View File

@@ -192,6 +192,8 @@ void Application::onInit() {
tool = new Tool(); tool = new Tool();
// Called before Application::run() beings // Called before Application::run() beings
cameraController.setFrame(Vector3(0,2,10)); cameraController.setFrame(Vector3(0,2,10));
cameraController.Zoom(-1);
_dataModel = new DataModelInstance(); _dataModel = new DataModelInstance();
_dataModel->setParent(NULL); _dataModel->setParent(NULL);
_dataModel->setName("undefined"); _dataModel->setName("undefined");

View File

@@ -25,7 +25,10 @@ DataModelInstance::DataModelInstance(void)
workspace = new WorkspaceInstance(); workspace = new WorkspaceInstance();
guiRoot = new GuiRootInstance(); guiRoot = new GuiRootInstance();
level = new LevelInstance(); level = new LevelInstance();
thumbnailGenerator = new ThumbnailGeneratorInstance(); runService = new RunService();
//thumbnailGenerator = new ThumbnailGeneratorInstance();
soundService = new SoundService(); soundService = new SoundService();
lightingInstance = new LightingInstance(); lightingInstance = new LightingInstance();
@@ -67,9 +70,10 @@ XplicitNgine * DataModelInstance::getEngine()
return xplicitNgine; return xplicitNgine;
} }
void DataModelInstance::toggleRun() // Please use RunService->run(); & RunService->pause(); instead
void DataModelInstance::toggleRun(bool doRun)
{ {
running = !running; running = doRun;
//if(!running) //if(!running)
//resetEngine(); //resetEngine();
} }
@@ -90,7 +94,6 @@ void DataModelInstance::modXMLLevel(float modY)
_modY += modY; _modY += modY;
clearLevel(); clearLevel();
debugGetOpen(); debugGetOpen();
} }
#endif #endif
@@ -642,6 +645,7 @@ void DataModelInstance::drawMessage(RenderDevice* rd)
} }
} }
// Instance getters
WorkspaceInstance* DataModelInstance::getWorkspace() WorkspaceInstance* DataModelInstance::getWorkspace()
{ {
return workspace; return workspace;
@@ -675,4 +679,9 @@ SoundService* DataModelInstance::getSoundService()
LightingInstance* DataModelInstance::getLighting() LightingInstance* DataModelInstance::getLighting()
{ {
return lightingInstance; return lightingInstance;
}
RunService* DataModelInstance::getRunService()
{
return runService;
} }

View File

@@ -80,13 +80,6 @@ std::vector<PROPGRIDITEM> Instance::getProperties()
} }
std::vector<Property *> Instance::collectProperties()
{
std::vector<Property *> properties;
properties.push_back(new StringProperty("Name", "The name of this instance", "Properties", name, this, &Instance::setName));
return properties;
}
Instance::~Instance(void) Instance::~Instance(void)
{ {

View File

@@ -183,26 +183,26 @@ void LevelInstance::winCondition()
{ {
DataModelInstance* DataModel = (DataModelInstance*)getParent(); //If level parent gets changed to something other than Datamodel it could cause nasty data corruption bugs DataModelInstance* DataModel = (DataModelInstance*)getParent(); //If level parent gets changed to something other than Datamodel it could cause nasty data corruption bugs
DataModel->setMessage(winMessage); DataModel->setMessage(winMessage);
DataModel->toggleRun(); DataModel->getRunService()->pause();
} }
void LevelInstance::loseCondition() void LevelInstance::loseCondition()
{ {
DataModelInstance* DataModel = (DataModelInstance*)getParent(); DataModelInstance* DataModel = (DataModelInstance*)getParent();
DataModel->setMessage(loseMessage); DataModel->setMessage(loseMessage);
DataModel->toggleRun(); DataModel->getRunService()->pause();
} }
void LevelInstance::pauseCondition() void LevelInstance::pauseCondition()
{ {
DataModelInstance* DataModel = (DataModelInstance*)getParent(); DataModelInstance* DataModel = (DataModelInstance*)getParent();
DataModel->toggleRun(); DataModel->getRunService()->pause();
} }
void LevelInstance::drawCondition() void LevelInstance::drawCondition()
{ {
DataModelInstance* DataModel = (DataModelInstance*)getParent(); DataModelInstance* DataModel = (DataModelInstance*)getParent();
DataModel->toggleRun(); DataModel->getRunService()->pause();
} }
void LevelInstance::Step(SimTime sdt) void LevelInstance::Step(SimTime sdt)

View File

@@ -63,33 +63,6 @@ static Enum::Controller::Value strEnum(TCHAR * tval)
} }
std::vector<Property *> PVInstance::collectProperties()
{
std::vector<Property *> properties = Instance::collectProperties();
properties.push_back(new BoolProperty(
"NameShown",
"This chooses whether the item name is shown",
"Item",
nameShown,
this,
(BoolProperty::instanceSetter)&PVInstance::setNameShown));
properties.push_back(new BoolProperty(
"ControllerFlagShown",
"This chooses whether the item's ControllerFlag is shown",
"Item",
controllerFlagShown,
this,
(BoolProperty::instanceSetter)&PVInstance::setControllerFlagShown));
return properties;
}
void PVInstance::setNameShown(bool nameShown){
this->nameShown = nameShown;
}
void PVInstance::setControllerFlagShown(bool controllerFlagShown){
this->controllerFlagShown = controllerFlagShown;
}
std::vector<PROPGRIDITEM> PVInstance::getProperties() std::vector<PROPGRIDITEM> PVInstance::getProperties()
{ {
@@ -117,15 +90,6 @@ std::vector<PROPGRIDITEM> PVInstance::getProperties()
return properties; return properties;
} }
void PVInstance::makeJoints()
{
for(size_t i = 0; i < children.size(); i++)
{
}
}
void PVInstance::PropUpdate(LPPROPGRIDITEM &pItem) void PVInstance::PropUpdate(LPPROPGRIDITEM &pItem)
{ {
if(strcmp(pItem->lpszPropName, "NameShown") == 0) if(strcmp(pItem->lpszPropName, "NameShown") == 0)

View File

@@ -674,49 +674,6 @@ void PartInstance::PropUpdate(LPPROPGRIDITEM &item)
else PVInstance::PropUpdate(item); else PVInstance::PropUpdate(item);
} }
void PartInstance::setColor(Color3 color)
{
this->color = color;
changed = true;
}
std::vector<Property *> PartInstance::collectProperties()
{
std::vector<Property *> properties = PVInstance::collectProperties();
properties.push_back(new Color3Property(
"Color3",
"The color of the selected part",
"Properties",
color,
this,
(Color3Property::instanceSetter)&PartInstance::setColor));
properties.push_back(new BoolProperty(
"Anchored",
"Whether the block can move or not",
"Item",
anchored,
this,
(BoolProperty::instanceSetter)&PartInstance::setAnchored));
properties.push_back(new Vector3Property(
"Offset",
"The position of the object in the workspace",
"Item",
position,
this,
(Vector3Property::instanceSetter)&PartInstance::setPosition));
properties.push_back(new Vector3Property(
"Size",
"The size of the object in the workspace",
"Item",
size,
this,
(Vector3Property::instanceSetter)&PartInstance::setSize));
return properties;
}
// This needs to be changed, buffer size of 12 is way too small // This needs to be changed, buffer size of 12 is way too small
// Crash occurs if you put a huge number in // Crash occurs if you put a huge number in
char changeTimerTxt[12]; char changeTimerTxt[12];

View File

@@ -0,0 +1,36 @@
#include "DataModelV2/RunServiceInstance.h"
#include "DataModelV2/ToggleImageButtonInstance.h"
#include "Globals.h"
RunService::RunService()
{
// Run Service, not RunService, because Roblox themselves did it. Why? IDK!
name = "Run Service";
className = "RunService";
canDelete = false;
}
RunService::~RunService(void)
{
}
void RunService::run()
{
// Tell GUI that we are running
Instance* go = g_dataModel->getGuiRoot()->findFirstChild("go");
g_dataModel->toggleRun(true);
((ToggleImageButtonInstance*)go)->checked = true;
}
void RunService::pause()
{
// Tell GUI that we paused
Instance* go = g_dataModel->getGuiRoot()->findFirstChild("go");
g_dataModel->toggleRun(false);
((ToggleImageButtonInstance*)go)->checked = false;
}
void RunService::reset()
{
// Can't really implement right now
}

View File

@@ -6,8 +6,12 @@ void MenuButtonListener::onButton1MouseClick(BaseButtonInstance* button)
{ {
if(button->name == "go") if(button->name == "go")
{ {
g_dataModel->toggleRun(); bool isRunning = g_dataModel->isRunning();
((ToggleImageButtonInstance*)button)->checked = g_dataModel->isRunning(); if(isRunning)
g_dataModel->getRunService()->pause();
else
g_dataModel->getRunService()->run();
//((ToggleImageButtonInstance*)button)->checked = !isRunning;
} }
else if(button->name == "file") else if(button->name == "file")
{ {

View File

@@ -0,0 +1,5 @@
//#include "Properties/BoolProperty.h"
//PROPGRIDITEM BoolProperty::getPropGridItem()
//{
//return PROPGRIDITEM();
//}

View File

@@ -0,0 +1,7 @@
#include "Properties/Property.h"
template <typename T>
void Property<T>::setProperty(LPPROPGRIDITEM item)
{
_owner->propertiesChanged();
}

View File

@@ -1,16 +0,0 @@
#include "PropertiesV2/BoolProperty.h"
PROPGRIDITEM BoolProperty::getPropGridItem(){
PROPGRIDITEM pItem;
PropGrid_ItemInit(pItem);
pItem.lpszCatalog=_catalog;
pItem.lpszPropName=_name;
pItem.lpszPropDesc=_desc;
pItem.lpCurValue=_value > 0;
pItem.iItemType=PIT_CHECK;
return pItem;
}
void BoolProperty::setProperty(LPPROPGRIDITEM &pItem){
setValue(pItem->lpCurValue == TRUE);
}

View File

@@ -1,21 +0,0 @@
#include "PropertiesV2/Color3Property.h"
PROPGRIDITEM Color3Property::getPropGridItem(){
PROPGRIDITEM pItem;
PropGrid_ItemInit(pItem);
pItem.lpszCatalog=_catalog;
pItem.lpszPropName=_name;
pItem.lpszPropDesc=_desc;
pItem.lpCurValue=RGB((_value.r*255),(_value.g*255),(_value.b*255));
pItem.iItemType=PIT_COLOR;
return pItem;
}
void Color3Property::setProperty(LPPROPGRIDITEM &pItem){
setValue(Color3(
GetRValue(pItem->lpCurValue)/255.0F,
GetGValue(pItem->lpCurValue)/255.0F,
GetBValue(pItem->lpCurValue)/255.0F
));
}

View File

@@ -1,14 +0,0 @@
#include "PropertiesV2/Property.h"
PROPGRIDITEM Property::getPropGridItem(){
PROPGRIDITEM pItem;
PropGrid_ItemInit(pItem);
pItem.lpszCatalog=_catalog;
pItem.lpszPropName=_name;
pItem.lpszPropDesc=_desc;
pItem.iItemType=PIT_EDIT;
return pItem;
}
void Property::setProperty(LPPROPGRIDITEM &pItem){
}

View File

@@ -1,16 +0,0 @@
#include "PropertiesV2/StringProperty.h"
PROPGRIDITEM StringProperty::getPropGridItem(){
PROPGRIDITEM pItem;
PropGrid_ItemInit(pItem);
pItem.lpszCatalog=_catalog;
pItem.lpszPropName=_name;
pItem.lpszPropDesc=_desc;
pItem.lpCurValue=(LPARAM)_value.c_str();
pItem.iItemType=PIT_EDIT;
return pItem;
}
void StringProperty::setProperty(LPPROPGRIDITEM &pItem){
setValue((LPSTR)pItem->lpCurValue);
}

View File

@@ -1,33 +0,0 @@
#include "PropertiesV2/Vector3Property.h"
PROPGRIDITEM Vector3Property::getPropGridItem(){
std::stringstream s;
s << _value.x << ", " << _value.y << ", " << _value.z;
stringRep = s.str();
PROPGRIDITEM pItem;
PropGrid_ItemInit(pItem);
pItem.lpszCatalog=_catalog;
pItem.lpszPropName=_name;
pItem.lpszPropDesc=_desc;
pItem.lpCurValue=(LPARAM)stringRep.c_str();
pItem.iItemType=PIT_EDIT;
return pItem;
}
void Vector3Property::setProperty(LPPROPGRIDITEM &pItem){
std::string str = (LPTSTR)pItem->lpCurValue;
std::vector<float> vect;
std::stringstream ss(str);
float i;
while (ss >> i)
{
vect.push_back(i);
if (ss.peek() == ',')
ss.ignore();
}
if(vect.size() == 3)
{
setValue(Vector3(vect.at(0),vect.at(1),vect.at(2)));
}
}

View File

@@ -6,7 +6,7 @@
#include "strsafe.h" #include "strsafe.h"
#include "Application.h" #include "Application.h"
std::vector<Property*> prop; std::vector<PROPGRIDITEM> prop;
std::vector<Instance*> children; std::vector<Instance*> children;
Instance * selectedInstance; Instance * selectedInstance;
Instance * parent = NULL; Instance * parent = NULL;
@@ -186,15 +186,8 @@ LRESULT CALLBACK PropProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
LPNMHDR pnm = (LPNMHDR)lParam; LPNMHDR pnm = (LPNMHDR)lParam;
LPNMPROPGRID lpnmp = (LPNMPROPGRID)pnm; LPNMPROPGRID lpnmp = (LPNMPROPGRID)pnm;
LPPROPGRIDITEM item = PropGrid_GetItemData(pnm->hwndFrom,lpnmp->iIndex); LPPROPGRIDITEM item = PropGrid_GetItemData(pnm->hwndFrom,lpnmp->iIndex);
for(size_t i = 0; i < prop.size(); i++) selectedInstance->PropUpdate(item);
{ //propWind->UpdateSelected(selectedInstance);
if(strcmp(item->lpszPropName, prop[i]->getName()) == 0)
{
prop[i]->setProperty(item);
}
}
//selectedInstance->PropUpdate(item);
propWind->UpdateSelected(g_dataModel->getSelectionService()->getSelection());
} }
} }
break; break;
@@ -349,7 +342,6 @@ void PropertyWindow::_resize()
void PropertyWindow::UpdateSelected(std::vector<Instance *> instances) void PropertyWindow::UpdateSelected(std::vector<Instance *> instances)
{ {
deleteProperties();
if(instances.size() <= 0) if(instances.size() <= 0)
{ {
ClearProperties(); ClearProperties();
@@ -357,13 +349,13 @@ void PropertyWindow::UpdateSelected(std::vector<Instance *> instances)
} }
Instance * instance = instances[0]; Instance * instance = instances[0];
PropGrid_ResetContent(_propGrid); PropGrid_ResetContent(_propGrid);
prop = instance->collectProperties(); prop = instance->getProperties();
//if (selectedInstance != instance) //if (selectedInstance != instance)
{ {
selectedInstance = instance; selectedInstance = instance;
for(size_t i = 0; i < prop.size(); i++) for(size_t i = 0; i < prop.size(); i++)
{ {
::PROPGRIDITEM item = prop.at(i)->getPropGridItem(); ::PROPGRIDITEM item = prop.at(i);
PropGrid_AddItem(_propGrid, &item); PropGrid_AddItem(_propGrid, &item);
//PRGP propgp; //PRGP propgp;
//propgp.instance = instance; //propgp.instance = instance;
@@ -379,16 +371,6 @@ void PropertyWindow::UpdateSelected(std::vector<Instance *> instances)
void PropertyWindow::ClearProperties() void PropertyWindow::ClearProperties()
{ {
deleteProperties();
clearExplorer(); clearExplorer();
PropGrid_ResetContent(_propGrid); PropGrid_ResetContent(_propGrid);
}
void PropertyWindow::deleteProperties()
{
while(prop.size() > 0) {
Property * toDelete = prop.back();
prop.pop_back();
delete toDelete;
}
} }