FreeWRL
view release on metacpan or search on metacpan
JS/js/ChangeLog view on Meta::CPAN
- ECMAv1 fix: fixed function length for Date setters.
- Bug workaround: avoid MSVC optimizer bug in Date.
- Y2K fix: Use the verbose '%#c' date formatter for toLocaleString
on windows, to get a 4 digit date.
- New thread safety fixes from bjorn:
- Added more asserts to catch cases where the thread
identifier stored in the context is out of synch with the current
thread. JS_ATOMIC_ADDREF now calls a function instead of a
macro, so that when compare-and-swap is implemented using busy-wait
(e.g. SPARC v8), we avoid being confused by the busy value. For the same
reason, we now call AtomicRead at certain places in jslock.c. Finally, the
environment variable JS_NO_THIN_LOCKS, when set, effectively turns off
the thin locks so that all locking is done using NSPR only.
- ECMAv1 numeric fixes: print preceding 0 when formatting 0.4, ignore supplied
radix to Number.prototype.toString when printing non-finite numbers.
Tag JSREF_RELEASE_19980403 (4/3/98):
- API renaming: JS_NewRuntime for JS_Init, JS_DestroyRuntime for JS_Finish
JS/js/lock_SunOS.s view on Meta::CPAN
! %o0 [input] - the address of the value to increment
! %o1 [input] - the old value to compare with
! %o2 [input] - the new value to set for [%o0]
! %o3 [local] - work register
! -----------------------
#ifndef ULTRA_SPARC
! v8
ENTRY(compare_and_swap) ! standard assembler/ELF prologue
mov -1,%o3 ! busy flag
swap [%o0],%o3 ! get current value
l1: tst %o3 ! busy?
bneg,a l1 ! if so, spin
swap [%o0],%o3 ! using branch-delay to swap back value
cmp %o1,%o3 ! compare old with current
be,a l2 ! if equal then swap in new value
swap [%o0],%o2 ! done.
swap [%o0],%o3 ! otherwise, swap back current value
retl
mov 0,%o0 ! return false
l2: retl
mov 1,%o0 ! return true
tests/8.wrl view on Meta::CPAN
DEF TS TimeSensor {
cycleInterval 3
loop FALSE
}
DEF SCR Script {
eventIn SFTime startTimeLeft
eventIn SFTime startTimeRight
eventOut SFTime startTime
eventIn SFBool busy
field SFBool isBusy FALSE
field SFBool left TRUE
field SFNode interp
DEF PI PositionInterpolator {
key [0 0.2 0.4 0.6 0.8 1]
keyValue [0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0]
}
url [
# xxx1: $t = "this", tied object
"javascript:
function busy(val,time) { isBusy = busy }
function startTimeLeft(val,time) {
// if(!isBusy && left) {
if(left) {
interp.keyValue = new MFVec3f(
new SFVec3f(-2,0,0),
new SFVec3f(-0.5,0,0),
new SFVec3f(0.5,0,0),
new SFVec3f(1.2,0,0),
new SFVec3f(1.7,0,0),
new SFVec3f(2,0,0)
tests/8.wrl view on Meta::CPAN
new SFVec3f(-2,0,0)
);
startTime = val;
left = !left;
}
}
"
# "perl_tjl_xxx1:
# startTimeLeft => sub {
# print 'SCRIPT_INSIDE LEFT:',$t->{left},'X, INTERP: ',$t->{interp},'\n';
# if(!$t->{busy} && $t->{left}) {
# # xxx1 uses tied hashes
# $t->{interp}{RFields}{keyValue} = [
# [-2, 0, 0 ],
# [ -0.5, 0, 0],
# [ 0.5, 0, 0],
# [1.2, 0, 0],
# [1.7, 0, 0],
# [2, 0, 0]
# ];
# $t->{startTime} = $t->{startTimeLeft};
# $t->{left} = !$t->{left};
# }
# },
# startTimeRight => sub {
# print 'SCRIPT_INSIDERIGHT LEFT:',$t->{left},'X, INTERP: ',$t->{interp},'\n';
# if(!$t->{busy} && !$t->{left}) {
# $t->{interp}{RFields}{keyValue} = [
# [2, 0, 0 ],
# [ 0.5, 0, 0],
# [ -0.5, 0, 0],
# [-1.2, 0, 0],
# [-1.7, 0, 0],
# [-2, 0, 0]
# ];
# $t->{startTime} = $t->{startTimeRight};
# $t->{left} = !$t->{left};
# }
# }
# "
]
}
]
}
ROUTE TS.isActive TO SCR.busy
ROUTE A1.touchTime TO SCR.startTimeLeft
ROUTE A2.touchTime TO SCR.startTimeRight
ROUTE SCR.startTime TO TS.startTime
ROUTE TS.fraction_changed TO PI.set_fraction
ROUTE PI.value_changed TO BT.translation
}
Transform {
# rotation -1 1 0 1.0
( run in 0.238 second using v1.01-cache-2.11-cpan-87723dcf8b7 )