You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-11-06 12:20:30 +00:00
3D Physics Rework, Other Stuff
-=-=-=-=-=-=-=-=-=-=-=-=-=-
3D Physics:
-Fixed "Bounce" parameter in 3D
-Fixed bug affecting Area (sometims it would not detect properly)
-Vehicle Body has seen heavy work
-Added Query API for doing space queries in 3D. Needs some docs though.
-Added JOINTS! Adapted Bullet Joints: and created easy gizmos for setting them up:
-PinJoint
-HingeJoint (with motor)
-SliderJoint
-ConeTwistJoint
-Generic6DOFJoint
-Added OBJECT PICKING! based on the new query API. Any physics object now (Area or Body) has the following signals and virtual functions:
-input_event (mouse or multitouch input over the body)
-mouse_enter (mouse entered the body area)
-mouse_exit (mouse exited body area)
For Area it needs to be activated manually, as it isn't by default (ray goes thru).
Other:
-Begun working on Windows 8 (RT) port. Compiles but does not work yet.
-Added TheoraPlayer library for improved to-texture and portable video support.
-Fixed a few bugs in the renderer, collada importer, collada exporter, etc.
This commit is contained in:
@@ -256,6 +256,55 @@ GDParser::Node* GDParser::_parse_expression(Node *p_parent,bool p_static,bool p_
|
||||
tokenizer->advance();
|
||||
|
||||
expr=constant;
|
||||
} else if (tokenizer->get_token()==GDTokenizer::TK_PR_YIELD) {
|
||||
|
||||
//constant defined by tokenizer
|
||||
|
||||
tokenizer->advance();
|
||||
if (tokenizer->get_token()!=GDTokenizer::TK_PARENTHESIS_OPEN) {
|
||||
_set_error("Expected '(' after 'yield'");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
tokenizer->advance();
|
||||
|
||||
OperatorNode *yield = alloc_node<OperatorNode>();
|
||||
yield->op=OperatorNode::OP_YIELD;
|
||||
|
||||
if (tokenizer->get_token()==GDTokenizer::TK_PARENTHESIS_CLOSE) {
|
||||
expr=yield;
|
||||
tokenizer->advance();
|
||||
} else {
|
||||
|
||||
Node *object = _parse_and_reduce_expression(p_parent,p_static);
|
||||
if (!object)
|
||||
return NULL;
|
||||
yield->arguments.push_back(object);
|
||||
|
||||
if (tokenizer->get_token()!=GDTokenizer::TK_COMMA) {
|
||||
|
||||
_set_error("Expected ',' after first argument of 'yield'");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
tokenizer->advance();
|
||||
|
||||
Node *signal = _parse_and_reduce_expression(p_parent,p_static);
|
||||
if (!signal)
|
||||
return NULL;
|
||||
yield->arguments.push_back(signal);
|
||||
|
||||
if (tokenizer->get_token()!=GDTokenizer::TK_PARENTHESIS_CLOSE) {
|
||||
|
||||
_set_error("Expected ')' after second argument of 'yield'");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
tokenizer->advance();
|
||||
|
||||
expr=yield;
|
||||
}
|
||||
|
||||
|
||||
} else if (tokenizer->get_token()==GDTokenizer::TK_SELF) {
|
||||
|
||||
@@ -1067,6 +1116,10 @@ GDParser::Node* GDParser::_reduce_expression(Node *p_node,bool p_to_const) {
|
||||
}
|
||||
|
||||
return op; //don't reduce yet
|
||||
|
||||
} else if (op->op==OperatorNode::OP_YIELD) {
|
||||
return op;
|
||||
|
||||
} else if (op->op==OperatorNode::OP_INDEX) {
|
||||
//can reduce indices into constant arrays or dictionaries
|
||||
|
||||
|
||||
Reference in New Issue
Block a user