/** * v0.1 code by dehash.com 2008 * Released as open source under the BSD License * http://www.opensource.org/licenses/bsd-license.php */ package com.dehash.pv3d.examples.as3dmod { // pv3d import org.papervision3d.materials.WireframeMaterial; import org.papervision3d.materials.ColorMaterial; import org.papervision3d.materials.special.CompositeMaterial; import org.papervision3d.objects.primitives.Plane; import org.papervision3d.view.BasicView; // as3dmod svn from http://code.google.com/p/as3dmod/ import com.as3dmod.modifiers.Taper; import com.as3dmod.ModifierStack; import com.as3dmod.plugins.pv3d.LibraryPv3d; import com.as3dmod.util.ModConstant; // minimalcomps svn from http://code.google.com/p/minimalcomps/ import com.bit101.components.PushButton; import com.bit101.components.VUISlider; // flash import flash.events.Event; [SWF(width = "400", height = "300", backgroundColor = "0x000000")] public class AS3DModTaper extends BasicView { private var modifierStack:ModifierStack; private var taper:Taper; private var taperForceValue:Number = 200; private var taperPowerValue:Number = 5; private var plane:Plane; private var forceSlider:VUISlider; private var powerSlider:VUISlider; private var exampleRunning:Boolean = false; public function AS3DModTaper(viewportWidth:Number = 400, viewportHeight:Number = 300, scaleToStage:Boolean=true, interactive:Boolean=false, cameraType:String="CAMERA3D") { super(viewportWidth, viewportHeight, scaleToStage, interactive, cameraType); // global stage.quality = "low"; // pv3d var compositeMaterial:CompositeMaterial = new CompositeMaterial(); compositeMaterial.addMaterial( new ColorMaterial(0x270e59) ); compositeMaterial.addMaterial( new WireframeMaterial(0x491ca5) ); compositeMaterial.doubleSided = true; plane = new Plane(compositeMaterial, 700, 500, 16, 16); plane.yaw(70); scene.addChild(plane); camera.target = plane; // as3dmod modifierStack = new ModifierStack(new LibraryPv3d(), plane); taper = new Taper(taperForceValue); taper.power = taperPowerValue; modifierStack.addModifier(taper); applyForceAndPower(); // minimal comps addChild(new PushButton(null, 10, 10, "Start", toggleExampleRunning)); forceSlider = new VUISlider(null, 10, 70, "Taper Force", taperForceSliderHandler); forceSlider.minimum = -300; forceSlider.maximum = 300; forceSlider.labelPrecision = 0; forceSlider.value = taperForceValue; powerSlider = new VUISlider(null, 330, 70, "Taper Power", taperPowerSliderHandler); powerSlider.minimum = 0; powerSlider.maximum = 20; powerSlider.labelPrecision = 1; powerSlider.value = taperPowerValue; // show something on the screen singleRender(); } private function taperForceSliderHandler(e:Event):void { taperForceValue = e.currentTarget.value; applyForceAndPower(); } private function taperPowerSliderHandler(e:Event):void { taperPowerValue = e.currentTarget.value; applyForceAndPower(); } private function applyForceAndPower():void { taper.force = taperForceValue; taper.power = taperPowerValue; modifierStack.apply(); } protected override function onRenderTick(event:Event = null):void { // hover camera.x -= (camera.x - Math.sin(mouseX*0.01)*1000) /8; camera.z -= (camera.z - Math.cos(mouseX*0.01)*1000) /8; camera.y -= (camera.y - viewport.containerSprite.mouseY * 5) / 8; // render renderer.renderScene(scene, _camera, viewport); } private function toggleExampleRunning(event:Event = null):void { if (exampleRunning) { event.currentTarget.label = "Start"; stopExample(); }else { event.currentTarget.label = "Stop"; runExample(); } } private function runExample():void { exampleRunning = true; addChild(forceSlider); addChild(powerSlider); startRendering(); } private function stopExample():void { exampleRunning = false; removeChild(forceSlider); removeChild(powerSlider); stopRendering(); } } }