work on second test chamber
This commit is contained in:
parent
7ee68bb904
commit
e788782e57
1
assets/sound/vo/aperture_ai/00_part1_success-1.sox
Normal file
1
assets/sound/vo/aperture_ai/00_part1_success-1.sox
Normal file
|
@ -0,0 +1 @@
|
||||||
|
-c 1 -r 22050
|
1
assets/sound/vo/aperture_ai/00_part1_success-2.sox
Normal file
1
assets/sound/vo/aperture_ai/00_part1_success-2.sox
Normal file
|
@ -0,0 +1 @@
|
||||||
|
-c 1 -r 22050
|
1
assets/sound/vo/aperture_ai/00_part1_success-3.sox
Normal file
1
assets/sound/vo/aperture_ai/00_part1_success-3.sox
Normal file
|
@ -0,0 +1 @@
|
||||||
|
-c 1 -r 22050
|
Binary file not shown.
|
@ -246,6 +246,7 @@ std::shared_ptr<TriggerGeneratorOutput> generateTriggers(const aiScene* scene, C
|
||||||
|
|
||||||
button.roomIndex = roomOutput.RoomForNode(nodeInfo.node);
|
button.roomIndex = roomOutput.RoomForNode(nodeInfo.node);
|
||||||
button.signalIndex = nodeInfo.arguments.size() ? signals.SignalIndexForName(nodeInfo.arguments[0]) : -1;
|
button.signalIndex = nodeInfo.arguments.size() ? signals.SignalIndexForName(nodeInfo.arguments[0]) : -1;
|
||||||
|
button.cubeSignalIndex = nodeInfo.arguments.size() > 1 ? signals.SignalIndexForName(nodeInfo.arguments[1]) : -1;
|
||||||
|
|
||||||
output->buttons.push_back(button);
|
output->buttons.push_back(button);
|
||||||
}
|
}
|
||||||
|
@ -262,6 +263,7 @@ void generateButtonsDefinition(CFileDefinition& fileDefinition, StructureDataChu
|
||||||
singleButton->Add(std::unique_ptr<StructureDataChunk>(new StructureDataChunk(ref.position)));
|
singleButton->Add(std::unique_ptr<StructureDataChunk>(new StructureDataChunk(ref.position)));
|
||||||
singleButton->AddPrimitive(ref.roomIndex);
|
singleButton->AddPrimitive(ref.roomIndex);
|
||||||
singleButton->AddPrimitive(ref.signalIndex);
|
singleButton->AddPrimitive(ref.signalIndex);
|
||||||
|
singleButton->AddPrimitive(ref.cubeSignalIndex);
|
||||||
|
|
||||||
buttonData->Add(std::move(singleButton));
|
buttonData->Add(std::move(singleButton));
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,6 +17,7 @@ struct Button {
|
||||||
aiVector3D position;
|
aiVector3D position;
|
||||||
int roomIndex;
|
int roomIndex;
|
||||||
int signalIndex;
|
int signalIndex;
|
||||||
|
int cubeSignalIndex;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct TriggerGeneratorOutput {
|
struct TriggerGeneratorOutput {
|
||||||
|
|
|
@ -97,6 +97,7 @@ struct ButtonDefinition {
|
||||||
struct Vector3 location;
|
struct Vector3 location;
|
||||||
short roomIndex;
|
short roomIndex;
|
||||||
short signalIndex;
|
short signalIndex;
|
||||||
|
short cubeSignalIndex;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct DecorDefinition {
|
struct DecorDefinition {
|
||||||
|
|
|
@ -40,6 +40,8 @@ struct ColliderTypeData gButtonCollider = {
|
||||||
#define BUTTON_MOVEMENT_AMOUNT 0.1f
|
#define BUTTON_MOVEMENT_AMOUNT 0.1f
|
||||||
#define BUTTON_MOVE_VELOCTY 0.3f
|
#define BUTTON_MOVE_VELOCTY 0.3f
|
||||||
|
|
||||||
|
#define PRESSED_WITH_CUBE 2
|
||||||
|
|
||||||
void buttonRender(void* data, struct RenderScene* renderScene) {
|
void buttonRender(void* data, struct RenderScene* renderScene) {
|
||||||
struct Button* button = (struct Button*)data;
|
struct Button* button = (struct Button*)data;
|
||||||
Mtx* matrix = renderStateRequestMatrices(renderScene->renderState, 1);
|
Mtx* matrix = renderStateRequestMatrices(renderScene->renderState, 1);
|
||||||
|
@ -72,6 +74,7 @@ void buttonInit(struct Button* button, struct ButtonDefinition* definition) {
|
||||||
button->signalIndex = definition->signalIndex;
|
button->signalIndex = definition->signalIndex;
|
||||||
|
|
||||||
button->originalPos = definition->location;
|
button->originalPos = definition->location;
|
||||||
|
button->cubeSignalIndex = definition->cubeSignalIndex;
|
||||||
}
|
}
|
||||||
|
|
||||||
void buttonUpdate(struct Button* button) {
|
void buttonUpdate(struct Button* button) {
|
||||||
|
@ -84,6 +87,11 @@ void buttonUpdate(struct Button* button) {
|
||||||
|
|
||||||
if (other->body && other->body->mass > MASS_BUTTON_PRESS_THRESHOLD) {
|
if (other->body && other->body->mass > MASS_BUTTON_PRESS_THRESHOLD) {
|
||||||
shouldPress = 1;
|
shouldPress = 1;
|
||||||
|
|
||||||
|
if (other->body->flags & RigidBodyFlagsGrabbable) {
|
||||||
|
shouldPress = PRESSED_WITH_CUBE;
|
||||||
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -95,6 +103,10 @@ void buttonUpdate(struct Button* button) {
|
||||||
if (shouldPress) {
|
if (shouldPress) {
|
||||||
targetPos.y -= BUTTON_MOVEMENT_AMOUNT;
|
targetPos.y -= BUTTON_MOVEMENT_AMOUNT;
|
||||||
signalsSend(button->signalIndex);
|
signalsSend(button->signalIndex);
|
||||||
|
|
||||||
|
if (shouldPress == PRESSED_WITH_CUBE) {
|
||||||
|
signalsSend(button->cubeSignalIndex);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (targetPos.y != button->rigidBody.transform.position.y) {
|
if (targetPos.y != button->rigidBody.transform.position.y) {
|
||||||
|
|
|
@ -10,6 +10,7 @@ struct Button {
|
||||||
struct RigidBody rigidBody;
|
struct RigidBody rigidBody;
|
||||||
short dynamicId;
|
short dynamicId;
|
||||||
short signalIndex;
|
short signalIndex;
|
||||||
|
short cubeSignalIndex;
|
||||||
struct Vector3 originalPos;
|
struct Vector3 originalPos;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue