Added controllers and flags
This commit is contained in:
6
Enum.h
6
Enum.h
@@ -14,4 +14,10 @@ namespace Enum
|
|||||||
Ball = 0, Block = 1, Cylinder = 2
|
Ball = 0, Block = 1, Cylinder = 2
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
namespace Controller
|
||||||
|
{
|
||||||
|
enum Value {
|
||||||
|
Player = 7, KeyboardRight = 1, KeyboardLeft = 2, Joypad1 = 3, Joypad2 = 4, Chase = 5, Flee = 6, None = 0
|
||||||
|
};
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -44,6 +44,10 @@ void GUDButtonListener::onButton1MouseClick(BaseButtonInstance* button)
|
|||||||
if(g_selectedInstances.at(i)->canDelete)
|
if(g_selectedInstances.at(i)->canDelete)
|
||||||
{
|
{
|
||||||
g_selectedInstances.at(i)->setParent(inst);
|
g_selectedInstances.at(i)->setParent(inst);
|
||||||
|
if(PartInstance* part = dynamic_cast<PartInstance*>(g_selectedInstances.at(i)))
|
||||||
|
{
|
||||||
|
inst->primaryPart = part;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
/*tempinst->setPosition(Vector3(tempPos.x, tempPos.y + tempSize.y, tempPos.z));
|
/*tempinst->setPosition(Vector3(tempPos.x, tempPos.y + tempSize.y, tempPos.z));
|
||||||
g_usableApp->cameraController.centerCamera(g_selectedInstances.at(0));*/
|
g_usableApp->cameraController.centerCamera(g_selectedInstances.at(0));*/
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ GroupInstance::GroupInstance(void)
|
|||||||
name = "Model";
|
name = "Model";
|
||||||
className = "GroupInstance";
|
className = "GroupInstance";
|
||||||
listicon = 12;
|
listicon = 12;
|
||||||
|
primaryPart = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
GroupInstance::GroupInstance(const GroupInstance &oinst)
|
GroupInstance::GroupInstance(const GroupInstance &oinst)
|
||||||
@@ -14,6 +15,7 @@ GroupInstance::GroupInstance(const GroupInstance &oinst)
|
|||||||
name = "Model";
|
name = "Model";
|
||||||
className = "GroupInstance";
|
className = "GroupInstance";
|
||||||
listicon = 12;
|
listicon = 12;
|
||||||
|
primaryPart = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
GroupInstance::~GroupInstance(void)
|
GroupInstance::~GroupInstance(void)
|
||||||
@@ -39,4 +41,37 @@ std::vector<Instance *> GroupInstance::unGroup()
|
|||||||
children[0]->setParent(parent);
|
children[0]->setParent(parent);
|
||||||
}
|
}
|
||||||
return child;
|
return child;
|
||||||
|
}
|
||||||
|
|
||||||
|
void GroupInstance::render(RenderDevice * rd)
|
||||||
|
{
|
||||||
|
Instance::render(rd);
|
||||||
|
if(primaryPart != NULL && controllerFlagShown && getControllerColor(controller) != Color3::gray())
|
||||||
|
{
|
||||||
|
rd->disableLighting();
|
||||||
|
Vector3 vec = Vector3(0,0,0);
|
||||||
|
Vector3 up = Vector3(0,8,0);
|
||||||
|
rd->setColor(getControllerColor(controller));
|
||||||
|
rd->setObjectToWorldMatrix(primaryPart->cFrame);
|
||||||
|
rd->beforePrimitive();
|
||||||
|
|
||||||
|
glBegin(GL_LINES);
|
||||||
|
glVertex3f(vec.x, vec.y, vec.z);
|
||||||
|
glVertex3f(up.x, up.y, up.z);
|
||||||
|
glEnd();
|
||||||
|
|
||||||
|
glBegin( GL_TRIANGLES );
|
||||||
|
glVertex3f(up.x, up.y-2, up.z);
|
||||||
|
glVertex3f(up.x, up.y-1, up.z-2);
|
||||||
|
glVertex3f(up.x, up.y, up.z);
|
||||||
|
|
||||||
|
glVertex3f(up.x, up.y, up.z);
|
||||||
|
glVertex3f(up.x, up.y-1, up.z-2);
|
||||||
|
glVertex3f(up.x, up.y-2, up.z);
|
||||||
|
|
||||||
|
glEnd();
|
||||||
|
rd->afterPrimitive();
|
||||||
|
rd->setColor(Color3::white());
|
||||||
|
rd->enableLighting();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -12,4 +12,5 @@ public:
|
|||||||
virtual void PropUpdate(LPPROPGRIDITEM &pItem);
|
virtual void PropUpdate(LPPROPGRIDITEM &pItem);
|
||||||
std::vector<Instance *> unGroup();
|
std::vector<Instance *> unGroup();
|
||||||
PartInstance * primaryPart;
|
PartInstance * primaryPart;
|
||||||
|
void render(RenderDevice * r);
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ PVInstance::PVInstance(void)
|
|||||||
controllerFlagShown = true;
|
controllerFlagShown = true;
|
||||||
className = "PVInstance";
|
className = "PVInstance";
|
||||||
listicon = 0;
|
listicon = 0;
|
||||||
|
controller = (Enum::Controller::Value)0;
|
||||||
}
|
}
|
||||||
|
|
||||||
PVInstance::PVInstance(const PVInstance &oinst)
|
PVInstance::PVInstance(const PVInstance &oinst)
|
||||||
@@ -22,6 +23,46 @@ void PVInstance::postRender(RenderDevice* rd)
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static TCHAR* enumStr(int controller)
|
||||||
|
{
|
||||||
|
switch(controller)
|
||||||
|
{
|
||||||
|
case Enum::Controller::None:
|
||||||
|
return "None";
|
||||||
|
case Enum::Controller::KeyboardLeft:
|
||||||
|
return "KeyboardLeft";
|
||||||
|
case Enum::Controller::KeyboardRight:
|
||||||
|
return "KeyboardRight";
|
||||||
|
case Enum::Controller::Joypad1:
|
||||||
|
return "Joypad1";
|
||||||
|
case Enum::Controller::Joypad2:
|
||||||
|
return "Joypad2";
|
||||||
|
case Enum::Controller::Chase:
|
||||||
|
return "Joypad1";
|
||||||
|
case Enum::Controller::Flee:
|
||||||
|
return "Joypad2";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static Enum::Controller::Value strEnum(TCHAR * tval)
|
||||||
|
{
|
||||||
|
if(strcmp(tval, "KeyboardLeft") == 0)
|
||||||
|
return Enum::Controller::KeyboardLeft;
|
||||||
|
if(strcmp(tval, "KeyboardRight") == 0)
|
||||||
|
return Enum::Controller::KeyboardRight;
|
||||||
|
if(strcmp(tval, "Joypad1") == 0)
|
||||||
|
return Enum::Controller::Joypad1;
|
||||||
|
if(strcmp(tval, "Joypad2") == 0)
|
||||||
|
return Enum::Controller::Joypad2;
|
||||||
|
if(strcmp(tval, "Chase") == 0)
|
||||||
|
return Enum::Controller::Chase;
|
||||||
|
if(strcmp(tval, "Flee") == 0)
|
||||||
|
return Enum::Controller::Flee;
|
||||||
|
return Enum::Controller::None;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
std::vector<PROPGRIDITEM> PVInstance::getProperties()
|
std::vector<PROPGRIDITEM> PVInstance::getProperties()
|
||||||
{
|
{
|
||||||
std::vector<PROPGRIDITEM> properties = Instance::getProperties();
|
std::vector<PROPGRIDITEM> properties = Instance::getProperties();
|
||||||
@@ -31,6 +72,21 @@ std::vector<PROPGRIDITEM> PVInstance::getProperties()
|
|||||||
"This chooses whether the item name is shown",
|
"This chooses whether the item name is shown",
|
||||||
nameShown,
|
nameShown,
|
||||||
PIT_CHECK));
|
PIT_CHECK));
|
||||||
|
properties.push_back(createPGI(
|
||||||
|
"Item",
|
||||||
|
"ControllerFlagShown",
|
||||||
|
"This chooses whether the item's ControllerFlag is shown",
|
||||||
|
controllerFlagShown,
|
||||||
|
PIT_CHECK));
|
||||||
|
properties.push_back(createPGI(
|
||||||
|
"Behaviour",
|
||||||
|
"Controller",
|
||||||
|
"This chooses what type of controller is used",
|
||||||
|
(LPARAM)enumStr(controller),
|
||||||
|
PIT_COMBO,
|
||||||
|
TEXT("None\0KeyboardRight\0KeyboardLeft\0Joypad1\0Joypad2\0Chase\0Flee")
|
||||||
|
));
|
||||||
|
|
||||||
return properties;
|
return properties;
|
||||||
}
|
}
|
||||||
void PVInstance::PropUpdate(LPPROPGRIDITEM &pItem)
|
void PVInstance::PropUpdate(LPPROPGRIDITEM &pItem)
|
||||||
@@ -39,5 +95,13 @@ void PVInstance::PropUpdate(LPPROPGRIDITEM &pItem)
|
|||||||
{
|
{
|
||||||
nameShown = (bool)pItem->lpCurValue;
|
nameShown = (bool)pItem->lpCurValue;
|
||||||
}
|
}
|
||||||
|
if(strcmp(pItem->lpszPropName, "ControllerFlagShown") == 0)
|
||||||
|
{
|
||||||
|
controllerFlagShown = (bool)pItem->lpCurValue;
|
||||||
|
}
|
||||||
|
if(strcmp(pItem->lpszPropName, "Controller") == 0)
|
||||||
|
{
|
||||||
|
controller = strEnum((TCHAR *)pItem->lpCurValue);
|
||||||
|
}
|
||||||
else Instance::PropUpdate(pItem);
|
else Instance::PropUpdate(pItem);
|
||||||
}
|
}
|
||||||
|
|||||||
18
PVInstance.h
18
PVInstance.h
@@ -1,5 +1,6 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
#include "instance.h"
|
#include "instance.h"
|
||||||
|
#include "enum.h"
|
||||||
|
|
||||||
class PVInstance :
|
class PVInstance :
|
||||||
public Instance
|
public Instance
|
||||||
@@ -13,4 +14,21 @@ public:
|
|||||||
virtual void PropUpdate(LPPROPGRIDITEM &pItem);
|
virtual void PropUpdate(LPPROPGRIDITEM &pItem);
|
||||||
bool nameShown;
|
bool nameShown;
|
||||||
bool controllerFlagShown;
|
bool controllerFlagShown;
|
||||||
|
Enum::Controller::Value controller;
|
||||||
|
protected:
|
||||||
|
static G3D::Color3 getControllerColor(int controller)
|
||||||
|
{
|
||||||
|
switch(controller)
|
||||||
|
{
|
||||||
|
case Enum::Controller::KeyboardLeft:
|
||||||
|
return Color3::red();
|
||||||
|
case Enum::Controller::KeyboardRight:
|
||||||
|
return Color3::blue();
|
||||||
|
case Enum::Controller::Chase:
|
||||||
|
return Color3::black();
|
||||||
|
case Enum::Controller::Flee:
|
||||||
|
return Color3::yellow();
|
||||||
|
}
|
||||||
|
return Color3::gray();
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user