rolevix Registered User |
Quote
|
2018-03-05 15:53:17 |
|
I'm trying to create "Lod Filter" behavior, based on "LodFilter_V1" by pmax.
I'm just need to unhide child node 0, and hide 1,2 when player is near to object what attached this plugin, and unhide 1 when he is average,
etc.
/* <behavior jsname="behavior_LodLK" description="Lod Filter Lonekin"> <property name="Near" type="int" default="750" /> <property name="Average" type="int" default="800" /> <property name="Far" type="int" default="1800" /> </behavior> */
// behavior_LodLK = function() {
}
behavior_LodLK.prototype.onAnimate = function(node, timeMs) { var roota = ccbGetCurrentNode(); for(var i=0; ii=1; iii=2) { var ch0 = ccbGetChildSceneNode(roota, i); var ch1 = ccbGetChildSceneNode(roota, ii); var ch2 = ccbGetChildSceneNode(roota, iii); } var a = ccbGetSceneNodeProperty(ch0, "Position"); var cam = ccbGetSceneNodeFromName("PLAYER"); var b = ccbGetSceneNodeProperty(cam, "Position"); var distancefloat = Math.sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y)+(a.z-b.z)*(a.z-b.z)); var distanceint = Math.floor(distancefloat); //print('Distance :'+distanceint); if(distanceint <= this.Near) { ccbSetSceneNodeProperty(ch0, "Visible", true); ccbSetSceneNodeProperty(ch1, "Visible", false); ccbSetSceneNodeProperty(ch2, "Visible", false); } if(distanceint > this.Average ) { ccbSetSceneNodeProperty(ch0, "Visible", false); ccbSetSceneNodeProperty(ch1, "Visible", true); ccbSetSceneNodeProperty(ch2, "Visible", false); } if(distanceint > this.Far) { ccbSetSceneNodeProperty(ch0, "Visible", false); ccbSetSceneNodeProperty(ch1, "Visible", false); ccbSetSceneNodeProperty(ch2, "Visible", true); } }
|
tim12345 Guest |
Quote
|
2018-03-06 02:55:40 |
|
i modified it slighty. maybe it works now?
/* <behavior jsname="behavior_LodLK" description="Lod Filter Lonekin"> <property name="Near" type="int" default="750" /> <property name="Average" type="int" default="800" /> <property name="Far" type="int" default="1800" /> </behavior> */
// behavior_LodLK = function() {
}
behavior_LodLK.prototype.onAnimate = function(node, timeMs) {
var ch0 = ccbGetChildSceneNode(node, 0); var ch1 = ccbGetChildSceneNode(node, 1); var ch2 = ccbGetChildSceneNode(node, 2); var a = ccbGetSceneNodeProperty(ch0, "Position"); var cam = ccbGetSceneNodeFromName("PLAYER"); var b = ccbGetSceneNodeProperty(cam, "Position"); var distancefloat = Math.sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y)+(a.z-b.z)*(a.z-b.z)); var distanceint = Math.floor(distancefloat); //print('Distance :'+distanceint); if(distanceint <= this.Near) { ccbSetSceneNodeProperty(ch0, "Visible", true); ccbSetSceneNodeProperty(ch1, "Visible", false); ccbSetSceneNodeProperty(ch2, "Visible", false); } if(distanceint > this.Average ) { ccbSetSceneNodeProperty(ch0, "Visible", false); ccbSetSceneNodeProperty(ch1, "Visible", true); ccbSetSceneNodeProperty(ch2, "Visible", false); } if(distanceint > this.Far) { ccbSetSceneNodeProperty(ch0, "Visible", false); ccbSetSceneNodeProperty(ch1, "Visible", false); ccbSetSceneNodeProperty(ch2, "Visible", true); } }
|
rolevix Registered User |
Quote
|
2018-03-06 05:21:41 |
|
Yeah! Great thanks! But need to replace
var a = ccbGetSceneNodeProperty(ch0, "Position");
to
var a = ccbGetSceneNodeProperty(node, "Position");
and it works!
Thanks! My hero
|
tim12345 Guest |
Quote
|
2018-03-06 09:15:10 |
|
ah yes it wouldn't make much sense to compare the camera position to that...
|