const char* create_sphere_node(const char *parent_name, const char *child_name, scalar_t resolution ) { scene_node_t *node; char *msg; msg = create_scene_node(parent_name, child_name, &node); if ( msg != NULL ) { return msg; } node->geom = Sphere; node->param.sphere.radius = 1.0; #ifdef __APPLE__ node->param.sphere.resolution = resolution; #else node->param.sphere.divisions = min( MAX_SPHERE_DIVISIONS, max( MIN_SPHERE_DIVISIONS, ROUND_TO_NEAREST( getparam_tux_sphere_divisions() * resolution ) ) ); #endif return NULL; }
void traverse_dag_sub( scene_node_t *node, material_t *mat ) { scene_node_t *child; glm::mat4 matrix; int i,j; check_assertion( node != NULL, "node is NULL" ); hier_push_mat(); for( i = 0; i < 4; i++ ) { for( j = 0; j < 4; j++ ) matrix[i][j] = node->trans[i][j]; } hier_mult_mat(matrix); if ( node->mat != NULL ) { mat = node->mat; } if ( node->geom == Sphere ) { //FIXME draw_sphere(std::min(MAX_SPHERE_DIVISIONS, std::max(MIN_SPHERE_DIVISIONS, ROUND_TO_NEAREST(node->param.sphere.divisions))), mat); } child = node->child; while (child != NULL) { traverse_dag_sub( child, mat ); child = child->next; } hier_pop_mat(); }
void update_scene_nodes() { //update sphere divisions for all nodes std::map<std::string, SceneNode *>::iterator it; for(it=nodes.begin(); it!=nodes.end();it++){ (*it).second->sphere.divisions = MIN( MAX_SPHERE_DIVISIONS, MAX( MIN_SPHERE_DIVISIONS, ROUND_TO_NEAREST(PPConfig.getInt("tux_sphere_divisions") * (*it).second->sphere.resolution) )); } }
bool CCharShape::VisibleNode (size_t node_name, float level) { TCharNode *node = GetNode(node_name); if (node == NULL) return false; node->visible = (level > 0); if (node->visible) { node->divisions = clamp (MIN_SPHERE_DIV, ROUND_TO_NEAREST (param.tux_sphere_divisions * level / 10), MAX_SPHERE_DIV); node->radius = 1.0; } if (newActions && useActions) AddAction (node_name, 5, NullVec3, level); return true; }
bool CCharShape::VisibleNode (int node_name, float level) { TCharNode *node; if (GetNode (node_name, &node) == false) return false; node->visible = (level > 0); if (node->visible) { node->divisions = MIN (MAX_SPHERE_DIV, MAX (MIN_SPHERE_DIV, ROUND_TO_NEAREST (param.tux_sphere_divisions * level / 10))); node->radius = 1.0; } if (newActions && useActions) AddAction (node_name, 5, NullVec, level); return true; }
void create_sphere_node(const std::string& parent_name, const std::string& child_name, float resolution ) { SceneNode *node; create_scene_node(parent_name, child_name, &node); node->isSphere = true; node->sphere.radius = 1.0; node->sphere.divisions = MIN( MAX_SPHERE_DIVISIONS, MAX( MIN_SPHERE_DIVISIONS, ROUND_TO_NEAREST(PPConfig.getInt("tux_sphere_divisions") * resolution ) ) ); node->sphere.resolution = resolution; }