Tue, 28 Oct 2025 22:03:06 +0100
fix that dependencies for tools are always checked
| 108 
d619bf7dd87b
add AscBehavior - prepares resolution of issue #646
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 1 | /* | 
| 
d619bf7dd87b
add AscBehavior - prepares resolution of issue #646
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 2 | * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. | 
| 
d619bf7dd87b
add AscBehavior - prepares resolution of issue #646
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 3 | * Copyright 2025 Mike Becker. All rights reserved. | 
| 
d619bf7dd87b
add AscBehavior - prepares resolution of issue #646
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 4 | * | 
| 
d619bf7dd87b
add AscBehavior - prepares resolution of issue #646
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 5 | * Redistribution and use in source and binary forms, with or without | 
| 
d619bf7dd87b
add AscBehavior - prepares resolution of issue #646
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 6 | * modification, are permitted provided that the following conditions are met: | 
| 
d619bf7dd87b
add AscBehavior - prepares resolution of issue #646
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 7 | * | 
| 
d619bf7dd87b
add AscBehavior - prepares resolution of issue #646
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 8 | * 1. Redistributions of source code must retain the above copyright | 
| 
d619bf7dd87b
add AscBehavior - prepares resolution of issue #646
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 9 | * notice, this list of conditions and the following disclaimer. | 
| 
d619bf7dd87b
add AscBehavior - prepares resolution of issue #646
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 10 | * | 
| 
d619bf7dd87b
add AscBehavior - prepares resolution of issue #646
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 11 | * 2. Redistributions in binary form must reproduce the above copyright | 
| 
d619bf7dd87b
add AscBehavior - prepares resolution of issue #646
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 12 | * notice, this list of conditions and the following disclaimer in the | 
| 
d619bf7dd87b
add AscBehavior - prepares resolution of issue #646
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 13 | * documentation and/or other materials provided with the distribution. | 
| 
d619bf7dd87b
add AscBehavior - prepares resolution of issue #646
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 14 | * | 
| 
d619bf7dd87b
add AscBehavior - prepares resolution of issue #646
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 15 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" | 
| 
d619bf7dd87b
add AscBehavior - prepares resolution of issue #646
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 16 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | 
| 
d619bf7dd87b
add AscBehavior - prepares resolution of issue #646
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 17 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | 
| 
d619bf7dd87b
add AscBehavior - prepares resolution of issue #646
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 18 | * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE | 
| 
d619bf7dd87b
add AscBehavior - prepares resolution of issue #646
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 19 | * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR | 
| 
d619bf7dd87b
add AscBehavior - prepares resolution of issue #646
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 20 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF | 
| 
d619bf7dd87b
add AscBehavior - prepares resolution of issue #646
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 21 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS | 
| 
d619bf7dd87b
add AscBehavior - prepares resolution of issue #646
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 22 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN | 
| 
d619bf7dd87b
add AscBehavior - prepares resolution of issue #646
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 23 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | 
| 
d619bf7dd87b
add AscBehavior - prepares resolution of issue #646
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 24 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE | 
| 
d619bf7dd87b
add AscBehavior - prepares resolution of issue #646
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 25 | * POSSIBILITY OF SUCH DAMAGE. | 
| 
d619bf7dd87b
add AscBehavior - prepares resolution of issue #646
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 26 | */ | 
| 
d619bf7dd87b
add AscBehavior - prepares resolution of issue #646
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 27 | |
| 
d619bf7dd87b
add AscBehavior - prepares resolution of issue #646
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 28 | #include "ascension/behavior.h" | 
| 148 
9f030f402699
implement interval for behaviors - fixes #383
 Mike Becker <universe@uap-core.de> parents: 
114diff
changeset | 29 | #include "ascension/context.h" | 
| 112 
3e956c96dd6c
extract execution of behaviors from draw function
 Mike Becker <universe@uap-core.de> parents: 
111diff
changeset | 30 | #include "ascension/scene.h" | 
| 180 | 31 | #include "ascension/util.h" | 
| 32 | #include "ascension/error.h" | |
| 108 
d619bf7dd87b
add AscBehavior - prepares resolution of issue #646
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 33 | |
| 276 
789215559ea8
use the new kv_list from UCX for the behavior map
 Mike Becker <universe@uap-core.de> parents: 
274diff
changeset | 34 | #include <cx/kv_list.h> | 
| 112 
3e956c96dd6c
extract execution of behaviors from draw function
 Mike Becker <universe@uap-core.de> parents: 
111diff
changeset | 35 | #include <cx/tree.h> | 
| 108 
d619bf7dd87b
add AscBehavior - prepares resolution of issue #646
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 36 | |
| 162 
d3598c834f9b
improve NULL-safety - fixes #690
 Mike Becker <universe@uap-core.de> parents: 
148diff
changeset | 37 | #include <assert.h> | 
| 
d3598c834f9b
improve NULL-safety - fixes #690
 Mike Becker <universe@uap-core.de> parents: 
148diff
changeset | 38 | |
| 108 
d619bf7dd87b
add AscBehavior - prepares resolution of issue #646
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 39 | static void asc_behavior_destroy(void *b) { | 
| 
d619bf7dd87b
add AscBehavior - prepares resolution of issue #646
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 40 | AscBehavior *behavior = b; | 
| 180 | 41 | asc_dprintf("Destroy behavior: %"CX_PRIstr, CX_SFMT(behavior->name)); | 
| 42 | cx_strfree(&behavior->name); | |
| 108 
d619bf7dd87b
add AscBehavior - prepares resolution of issue #646
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 43 | if (behavior->destroy_func) { | 
| 
d619bf7dd87b
add AscBehavior - prepares resolution of issue #646
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 44 | behavior->destroy_func(behavior); | 
| 
d619bf7dd87b
add AscBehavior - prepares resolution of issue #646
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 45 | } | 
| 
d619bf7dd87b
add AscBehavior - prepares resolution of issue #646
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 46 | } | 
| 
d619bf7dd87b
add AscBehavior - prepares resolution of issue #646
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 47 | |
| 266 
a73674e99e62
convert behavior list to a behavior map
 Mike Becker <universe@uap-core.de> parents: 
265diff
changeset | 48 | static CxMap *asc_behavior_new_map(void) { | 
| 276 
789215559ea8
use the new kv_list from UCX for the behavior map
 Mike Becker <universe@uap-core.de> parents: 
274diff
changeset | 49 | CxMap *map = cxKvListCreateAsMapSimple(sizeof(AscBehavior)); | 
| 266 
a73674e99e62
convert behavior list to a behavior map
 Mike Becker <universe@uap-core.de> parents: 
265diff
changeset | 50 | cxDefineDestructor(map, asc_behavior_destroy); | 
| 
a73674e99e62
convert behavior list to a behavior map
 Mike Becker <universe@uap-core.de> parents: 
265diff
changeset | 51 | return map; | 
| 108 
d619bf7dd87b
add AscBehavior - prepares resolution of issue #646
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 52 | } | 
| 
d619bf7dd87b
add AscBehavior - prepares resolution of issue #646
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 53 | |
| 111 
ee4b58dfcf7f
change naming convention for functions that are hidden behind macros
 Mike Becker <universe@uap-core.de> parents: 
109diff
changeset | 54 | AscBehavior *asc_behavior_add_(AscSceneNode *node, struct asc_behavior_create_args args) { | 
| 108 
d619bf7dd87b
add AscBehavior - prepares resolution of issue #646
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 55 | if (node->behaviors == NULL) { | 
| 266 
a73674e99e62
convert behavior list to a behavior map
 Mike Becker <universe@uap-core.de> parents: 
265diff
changeset | 56 | node->behaviors = asc_behavior_new_map(); | 
| 108 
d619bf7dd87b
add AscBehavior - prepares resolution of issue #646
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 57 | } | 
| 266 
a73674e99e62
convert behavior list to a behavior map
 Mike Becker <universe@uap-core.de> parents: 
265diff
changeset | 58 | cxmutstr name = args.name == NULL | 
| 
a73674e99e62
convert behavior list to a behavior map
 Mike Becker <universe@uap-core.de> parents: 
265diff
changeset | 59 | ? asc_util_gen_name("behavior") | 
| 
a73674e99e62
convert behavior list to a behavior map
 Mike Becker <universe@uap-core.de> parents: 
265diff
changeset | 60 | : cx_mutstr(strdup(args.name)); | 
| 
a73674e99e62
convert behavior list to a behavior map
 Mike Becker <universe@uap-core.de> parents: 
265diff
changeset | 61 | AscBehavior *behavior = cxMapEmplace(node->behaviors, name); | 
| 162 
d3598c834f9b
improve NULL-safety - fixes #690
 Mike Becker <universe@uap-core.de> parents: 
148diff
changeset | 62 | assert(behavior != NULL); | 
| 274 
ba7f043f9fdf
move the player's life "controller" to a behavior
 Mike Becker <universe@uap-core.de> parents: 
268diff
changeset | 63 | behavior->enabled = !args.start_disabled; | 
| 
ba7f043f9fdf
move the player's life "controller" to a behavior
 Mike Becker <universe@uap-core.de> parents: 
268diff
changeset | 64 | behavior->always_enabled = args.always_enabled; | 
| 176 
cb2f60f48337
add asc_behavior_remove()
 Mike Becker <universe@uap-core.de> parents: 
162diff
changeset | 65 | behavior->killed = false; | 
| 279 
97a1a7fb4f1a
do not use different vocabulary (enable/disable vs. pause/unpause) for the behavior's enabled-state
 Mike Becker <universe@uap-core.de> parents: 
278diff
changeset | 66 | behavior->reactivated = false; | 
| 109 
08548799ae4a
use new UCX 3.2 cxListEmplace()
 Mike Becker <universe@uap-core.de> parents: 
108diff
changeset | 67 | behavior->node = node; | 
| 
08548799ae4a
use new UCX 3.2 cxListEmplace()
 Mike Becker <universe@uap-core.de> parents: 
108diff
changeset | 68 | behavior->func = args.func; | 
| 
08548799ae4a
use new UCX 3.2 cxListEmplace()
 Mike Becker <universe@uap-core.de> parents: 
108diff
changeset | 69 | behavior->destroy_func = args.destroy_func; | 
| 
08548799ae4a
use new UCX 3.2 cxListEmplace()
 Mike Becker <universe@uap-core.de> parents: 
108diff
changeset | 70 | behavior->data = args.data; | 
| 148 
9f030f402699
implement interval for behaviors - fixes #383
 Mike Becker <universe@uap-core.de> parents: 
114diff
changeset | 71 | behavior->interval = args.interval; | 
| 
9f030f402699
implement interval for behaviors - fixes #383
 Mike Becker <universe@uap-core.de> parents: 
114diff
changeset | 72 | behavior->last_execution = 0; | 
| 279 
97a1a7fb4f1a
do not use different vocabulary (enable/disable vs. pause/unpause) for the behavior's enabled-state
 Mike Becker <universe@uap-core.de> parents: 
278diff
changeset | 73 | behavior->disable_while_hidden = args.disable_while_hidden; | 
| 266 
a73674e99e62
convert behavior list to a behavior map
 Mike Becker <universe@uap-core.de> parents: 
265diff
changeset | 74 | behavior->name = name; | 
| 180 | 75 | asc_dprintf("Create behavior: %"CX_PRIstr, CX_SFMT(behavior->name)); | 
| 109 
08548799ae4a
use new UCX 3.2 cxListEmplace()
 Mike Becker <universe@uap-core.de> parents: 
108diff
changeset | 76 | return behavior; | 
| 108 
d619bf7dd87b
add AscBehavior - prepares resolution of issue #646
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 77 | } | 
| 148 
9f030f402699
implement interval for behaviors - fixes #383
 Mike Becker <universe@uap-core.de> parents: 
114diff
changeset | 78 | |
| 176 
cb2f60f48337
add asc_behavior_remove()
 Mike Becker <universe@uap-core.de> parents: 
162diff
changeset | 79 | void asc_behavior_remove(AscBehavior *behavior) { | 
| 197 
a1f7c4f858d9
add log message when removing a behavior
 Mike Becker <universe@uap-core.de> parents: 
182diff
changeset | 80 | asc_dprintf("Remove behavior: %"CX_PRIstr, CX_SFMT(behavior->name)); | 
| 176 
cb2f60f48337
add asc_behavior_remove()
 Mike Becker <universe@uap-core.de> parents: 
162diff
changeset | 81 | behavior->killed = true; | 
| 
cb2f60f48337
add asc_behavior_remove()
 Mike Becker <universe@uap-core.de> parents: 
162diff
changeset | 82 | behavior->enabled = false; | 
| 
cb2f60f48337
add asc_behavior_remove()
 Mike Becker <universe@uap-core.de> parents: 
162diff
changeset | 83 | } | 
| 
cb2f60f48337
add asc_behavior_remove()
 Mike Becker <universe@uap-core.de> parents: 
162diff
changeset | 84 | |
| 148 
9f030f402699
implement interval for behaviors - fixes #383
 Mike Becker <universe@uap-core.de> parents: 
114diff
changeset | 85 | void asc_behavior_trigger(AscBehavior *behavior) { | 
| 278 
634fa2996d4e
make behaviors aware of being unpaused
 Mike Becker <universe@uap-core.de> parents: 
277diff
changeset | 86 | // the behavior is not enabled at the moment | 
| 
634fa2996d4e
make behaviors aware of being unpaused
 Mike Becker <universe@uap-core.de> parents: 
277diff
changeset | 87 | if (!behavior->enabled) { | 
| 279 
97a1a7fb4f1a
do not use different vocabulary (enable/disable vs. pause/unpause) for the behavior's enabled-state
 Mike Becker <universe@uap-core.de> parents: 
278diff
changeset | 88 | behavior->reactivated = true; | 
| 278 
634fa2996d4e
make behaviors aware of being unpaused
 Mike Becker <universe@uap-core.de> parents: 
277diff
changeset | 89 | return; | 
| 
634fa2996d4e
make behaviors aware of being unpaused
 Mike Becker <universe@uap-core.de> parents: 
277diff
changeset | 90 | } | 
| 
634fa2996d4e
make behaviors aware of being unpaused
 Mike Becker <universe@uap-core.de> parents: 
277diff
changeset | 91 | // the behavior is not scheduled for execution | 
| 
634fa2996d4e
make behaviors aware of being unpaused
 Mike Becker <universe@uap-core.de> parents: 
277diff
changeset | 92 | if (behavior->last_execution + behavior->interval > asc_context.total_nanos) { | 
| 
634fa2996d4e
make behaviors aware of being unpaused
 Mike Becker <universe@uap-core.de> parents: 
277diff
changeset | 93 | return; | 
| 
634fa2996d4e
make behaviors aware of being unpaused
 Mike Becker <universe@uap-core.de> parents: 
277diff
changeset | 94 | } | 
| 279 
97a1a7fb4f1a
do not use different vocabulary (enable/disable vs. pause/unpause) for the behavior's enabled-state
 Mike Becker <universe@uap-core.de> parents: 
278diff
changeset | 95 | // the behavior is disable while the node is hidden | 
| 
97a1a7fb4f1a
do not use different vocabulary (enable/disable vs. pause/unpause) for the behavior's enabled-state
 Mike Becker <universe@uap-core.de> parents: 
278diff
changeset | 96 | if (!behavior->always_enabled && behavior->disable_while_hidden && asc_scene_node_is_hidden(behavior->node)) { | 
| 
97a1a7fb4f1a
do not use different vocabulary (enable/disable vs. pause/unpause) for the behavior's enabled-state
 Mike Becker <universe@uap-core.de> parents: 
278diff
changeset | 97 | behavior->reactivated = true; | 
| 278 
634fa2996d4e
make behaviors aware of being unpaused
 Mike Becker <universe@uap-core.de> parents: 
277diff
changeset | 98 | return; | 
| 
634fa2996d4e
make behaviors aware of being unpaused
 Mike Becker <universe@uap-core.de> parents: 
277diff
changeset | 99 | } | 
| 148 
9f030f402699
implement interval for behaviors - fixes #383
 Mike Becker <universe@uap-core.de> parents: 
114diff
changeset | 100 | |
| 
9f030f402699
implement interval for behaviors - fixes #383
 Mike Becker <universe@uap-core.de> parents: 
114diff
changeset | 101 | behavior->func(behavior); | 
| 279 
97a1a7fb4f1a
do not use different vocabulary (enable/disable vs. pause/unpause) for the behavior's enabled-state
 Mike Becker <universe@uap-core.de> parents: 
278diff
changeset | 102 | behavior->reactivated = false; | 
| 148 
9f030f402699
implement interval for behaviors - fixes #383
 Mike Becker <universe@uap-core.de> parents: 
114diff
changeset | 103 | behavior->last_execution = asc_context.total_nanos; | 
| 180 | 104 | } | 
| 105 | ||
| 182 
264dfe1928b2
add asc_behavior_get_name()
 Mike Becker <universe@uap-core.de> parents: 
181diff
changeset | 106 | cxstring asc_behavior_get_name(const AscBehavior *behavior) { | 
| 
264dfe1928b2
add asc_behavior_get_name()
 Mike Becker <universe@uap-core.de> parents: 
181diff
changeset | 107 | assert(behavior != NULL); | 
| 
264dfe1928b2
add asc_behavior_get_name()
 Mike Becker <universe@uap-core.de> parents: 
181diff
changeset | 108 | return cx_strcast(behavior->name); | 
| 
264dfe1928b2
add asc_behavior_get_name()
 Mike Becker <universe@uap-core.de> parents: 
181diff
changeset | 109 | } | 
| 265 
5c915d01bdc0
add simple game over screen
 Mike Becker <universe@uap-core.de> parents: 
197diff
changeset | 110 | |
| 277 | 111 | AscBehavior *asc_behavior_find_(const AscSceneNode *node, cxstring name) { | 
| 112 | return cxMapGet(node->behaviors, name); | |
| 113 | } | |
| 265 
5c915d01bdc0
add simple game over screen
 Mike Becker <universe@uap-core.de> parents: 
197diff
changeset | 114 | |
| 
5c915d01bdc0
add simple game over screen
 Mike Becker <universe@uap-core.de> parents: 
197diff
changeset | 115 | void asc_behavior_enable_all(AscSceneNode *node) { | 
| 266 
a73674e99e62
convert behavior list to a behavior map
 Mike Becker <universe@uap-core.de> parents: 
265diff
changeset | 116 | CxMapIterator iter = cxMapIteratorValues(node->behaviors); | 
| 265 
5c915d01bdc0
add simple game over screen
 Mike Becker <universe@uap-core.de> parents: 
197diff
changeset | 117 | cx_foreach(AscBehavior*, behavior, iter) { | 
| 274 
ba7f043f9fdf
move the player's life "controller" to a behavior
 Mike Becker <universe@uap-core.de> parents: 
268diff
changeset | 118 | asc_behavior_enable(behavior); | 
| 265 
5c915d01bdc0
add simple game over screen
 Mike Becker <universe@uap-core.de> parents: 
197diff
changeset | 119 | } | 
| 
5c915d01bdc0
add simple game over screen
 Mike Becker <universe@uap-core.de> parents: 
197diff
changeset | 120 | } | 
| 
5c915d01bdc0
add simple game over screen
 Mike Becker <universe@uap-core.de> parents: 
197diff
changeset | 121 | |
| 
5c915d01bdc0
add simple game over screen
 Mike Becker <universe@uap-core.de> parents: 
197diff
changeset | 122 | void asc_behavior_disable_all(AscSceneNode *node) { | 
| 266 
a73674e99e62
convert behavior list to a behavior map
 Mike Becker <universe@uap-core.de> parents: 
265diff
changeset | 123 | CxMapIterator iter = cxMapIteratorValues(node->behaviors); | 
| 265 
5c915d01bdc0
add simple game over screen
 Mike Becker <universe@uap-core.de> parents: 
197diff
changeset | 124 | cx_foreach(AscBehavior*, behavior, iter) { | 
| 274 
ba7f043f9fdf
move the player's life "controller" to a behavior
 Mike Becker <universe@uap-core.de> parents: 
268diff
changeset | 125 | asc_behavior_disable(behavior); | 
| 265 
5c915d01bdc0
add simple game over screen
 Mike Becker <universe@uap-core.de> parents: 
197diff
changeset | 126 | } | 
| 268 
d8c05102b017
behaviors can now be paused while the node is hidden
 Mike Becker <universe@uap-core.de> parents: 
266diff
changeset | 127 | } | 
| 
d8c05102b017
behaviors can now be paused while the node is hidden
 Mike Becker <universe@uap-core.de> parents: 
266diff
changeset | 128 | |
| 279 
97a1a7fb4f1a
do not use different vocabulary (enable/disable vs. pause/unpause) for the behavior's enabled-state
 Mike Becker <universe@uap-core.de> parents: 
278diff
changeset | 129 | void asc_behavior_disable_all_while_hidden(AscSceneNode *node) { | 
| 268 
d8c05102b017
behaviors can now be paused while the node is hidden
 Mike Becker <universe@uap-core.de> parents: 
266diff
changeset | 130 | CxMapIterator iter = cxMapIteratorValues(node->behaviors); | 
| 
d8c05102b017
behaviors can now be paused while the node is hidden
 Mike Becker <universe@uap-core.de> parents: 
266diff
changeset | 131 | cx_foreach(AscBehavior*, behavior, iter) { | 
| 279 
97a1a7fb4f1a
do not use different vocabulary (enable/disable vs. pause/unpause) for the behavior's enabled-state
 Mike Becker <universe@uap-core.de> parents: 
278diff
changeset | 132 | asc_behavior_disable_while_hidden(behavior); | 
| 268 
d8c05102b017
behaviors can now be paused while the node is hidden
 Mike Becker <universe@uap-core.de> parents: 
266diff
changeset | 133 | } | 
| 
d8c05102b017
behaviors can now be paused while the node is hidden
 Mike Becker <universe@uap-core.de> parents: 
266diff
changeset | 134 | } | 
| 
d8c05102b017
behaviors can now be paused while the node is hidden
 Mike Becker <universe@uap-core.de> parents: 
266diff
changeset | 135 | |
| 279 
97a1a7fb4f1a
do not use different vocabulary (enable/disable vs. pause/unpause) for the behavior's enabled-state
 Mike Becker <universe@uap-core.de> parents: 
278diff
changeset | 136 | void asc_behavior_enable_all_while_hidden(AscSceneNode *node) { | 
| 268 
d8c05102b017
behaviors can now be paused while the node is hidden
 Mike Becker <universe@uap-core.de> parents: 
266diff
changeset | 137 | CxMapIterator iter = cxMapIteratorValues(node->behaviors); | 
| 
d8c05102b017
behaviors can now be paused while the node is hidden
 Mike Becker <universe@uap-core.de> parents: 
266diff
changeset | 138 | cx_foreach(AscBehavior*, behavior, iter) { | 
| 279 
97a1a7fb4f1a
do not use different vocabulary (enable/disable vs. pause/unpause) for the behavior's enabled-state
 Mike Becker <universe@uap-core.de> parents: 
278diff
changeset | 139 | asc_behavior_enable_while_hidden(behavior); | 
| 268 
d8c05102b017
behaviors can now be paused while the node is hidden
 Mike Becker <universe@uap-core.de> parents: 
266diff
changeset | 140 | } | 
| 
d8c05102b017
behaviors can now be paused while the node is hidden
 Mike Becker <universe@uap-core.de> parents: 
266diff
changeset | 141 | } |