Jump to content

Gibby

Members
  • Posts

    72
  • Joined

  • Last visited

Everything posted by Gibby

  1. Greets All: Here's a quick recipe to get Torque 3D compiled on macOS (aka OSX10.12 'Sierra'). This tutorial is presented with the caveat that it is for masOS 3.12 'Sierra', xCode 8.2.1, CMake 3.7.2. The same approach works for earlier versions of the OS and compiler, but other versions are beyond the scope of this tutorial. Step 1: Download and install xCode for macOS – the stock install should work for a stock build of T3D (I’m using version 8.2.1) Step 2: Download and install CMake (I’m using version 3.7.2) Step 3: Download the T3D source and assets from GitHub here: https://github.com/GarageGames/Torque3D (This tutorial uses version 3.10 Main) Step 4: Extract the zip file to a directory of your choice: (This tutorial uses Desktop/Dev/Torque3D_310) Step 5: Open CMake. The top dialog box has you point to the source directory: /Users/gil_morales/Desktop/DEV/Torque3D_310 The next Dialog box asks for the binaries directory. T3D is setup by default to build in the ‘My Projects’ directory. You can create this in advance and browse to it, or simply enter the directory name and CMake will prompt you with a dialog box to create it for you. Mine looks like this: /Users/gil_morales/Desktop/DEV/Torque3D_310/My Projects/Test30 Step 6: Press ‘Configure’ and Cmake will prompt you with a box asking which compiler to use (I use the default settings): After you press ‘Done’ you will get this message error, don't worry about this, we'll deal with it in the next step: Press ‘Okay’ Step7: Now go in and enter the name of your binary in the TORQUE_APP_NAME field: Press ‘configure’ and CMake will setup your project. Step 8: Once configured, CMake will display the Generate options. Mine look like this: Press ‘Generate’. CMake will generate your xCode project. Step 9: Once the ‘Generating done’ message is prompted in CMake’s message window, close it and navigate to your project directory. In your project directory, you should find your xCode project: Open the project, once xCode has opened it, click Product/Build (Cmd-B) and xCode will begin to compile the project. Note you’ll get hundreds of warnings, most of which come from cross-platform Semantic issues that you can ignore. Go make tea, come back in 5 minutes and it should be done. Step 10: After your binary is compiled, go to Product/Scheme and select ‘Install’. Click Product/Build (Cmd-B) and xCode will run the install script installing the scripts and assets from the Full template into your game directory. Step 11: When xCode has finished running the script, navigate to your game directory and click on the app – you’re now running Torque3D!
  2. @ JeffR: I did the same, and the particles work when you first mount the aircraft, but if you get out, and back in, they go away. Wondering now if its an issue with vehicle mounting scripts... Will try with devHead tonight...
  3. ¡Hola! Here’s a preview of ‘Vehiclo’, an extensive T3D mod that adds additional vehicles types, functionality and vehicular AI. This simple mod will add a basic flyingVehicle to the ‘Full’ Template, with which you can begin your own experimentation with flyers in Torque. This is written for T3D 3.10 but should, with a few tweaks, work in any T3D_3+ version. Caveats: Passenger/Weapon mounting not included. By default this will make mounted players hidden Flyers have had issues ‘sticking’ to terrain since TGE. Check this post for scripted/coded fixes: http://forums.torque3d.org/viewtopic.php?f=23&t=102&p=784&hilit=flyingVehicle#p784 I hope to post the complete 'Vehiculo' mods on GitHub soon, just have to work out a few more issues… Step 1: Setup a new project using the Full template Download these files, and extract to a new directory, art/shapes/vehicles/jetFighter http://opengameart.org/content/future-fighterjet-for-torque3d Step 2: Add these files to "art/datablocks/vehicles" art/datablocks/vehicles/jetFighter_fx.cs //----------------------------------------------------------------------------- // Vehiculo // "Gibby's Generic Jet Fighter FX" // Basic Jet Fighter effects //----------------------------------------------------------------------------- //-------------------------------------------------------------- // Glowing explosion Sparks //-------------------------------------------------------------- datablock ParticleData(jetFighterExplosionSparks) { textureName = "art/particles/SparkParticle"; dragCoefficient = 0; gravityCoefficient = 0.5; inheritedVelFactor = 0.1; constantAcceleration = 0.0; lifetimeMS = 3000; lifetimeVarianceMS = 500; colors[0] = "0.60 0.40 0.30 1.0"; colors[1] = "0.60 0.40 0.30 1.0"; colors[2] = "1.0 0.40 0.30 0.0"; sizes[0] = 1.0; sizes[1] = 0.4; sizes[2] = 0.1; times[0] = 0.0; times[1] = 1.4; times[2] = 2.0; }; datablock ParticleEmitterData(jetFighterExplosionSparkEmitter) { ejectionPeriodMS = 10; periodVarianceMS = 0; ejectionVelocity = 8; velocityVariance = 2; thetaMin = 0.0; thetaMax = 180.0; lifetimeMS = 1000; overrideAdvances = false; orientParticles = true; particles = "jetFighterExplosionSparks"; }; //-------------------------------------------------------------- // Explosion Smoke //-------------------------------------------------------------- datablock ParticleData(jetFighterExplosionSmoke) { textureName = "art/particles/smoke"; dragCoeffiecient = 0.7; gravityCoefficient = 0.1; inheritedVelFactor = 1.0; //constantAcceleration = -0.80; lifetimeMS = 10000; lifetimeVarianceMS = 3000; useInvAlpha = true; windCoefficient = 0.0; colors[0] = "0.56 0.36 0.26 1.0"; colors[1] = "0.0 0.0 0.0 1.0"; colors[2] = "0.2 0.2 0.2 0.0"; sizes[0] = 10.0; sizes[1] = 20.0; sizes[2] = 50.0; times[0] = 0.0; times[1] = 0.1; times[2] = 1.0; }; datablock ParticleEmitterData(jetFighterExplosionSmokeEmitter) { ejectionPeriodMS = 100; periodVarianceMS = 0; ejectionVelocity = 5; velocityVariance = 5; thetaMin = 0.0; thetaMax = 180.0; lifetimeMS = 1500; particles = "jetFighterExplosionSmoke"; }; //-------------------------------------------------------------- // jetFighter Debris Smoke //-------------------------------------------------------------- datablock ParticleData(jetFighterDebrisSmoke) { dragCoefficient = 0.0; //gravityCoefficient = -0.1; gravityCoefficient = 0.1; inheritedVelFactor = 0.2; windCoefficient = 0.3; constantAcceleration = 0.0; lifetimeMS = 4000; lifetimeVarianceMS = 1500; useInvAlpha = true; spinRandomMin = -90.0; spinRandomMax = 90.0; textureName = "art/particles/smoke"; colors[0] = "0.1 0.1 0.1 0.8"; colors[1] = "0.7 0.7 0.7 0.6"; colors[2] = "0.9 0.9 0.9 0.0"; sizes[0] = 0.5; sizes[1] = 1.0; sizes[2] = 2.0; times[0] = 0.0; times[1] = 0.4; times[2] = 1.0; }; datablock ParticleEmitterData(jetFighterDebrisSmokeEmitter) { ejectionPeriodMS = 20; periodVarianceMS = 0; ejectionVelocity = 1; velocityVariance = 1.0; ejectionOffset = 0.0; thetaMin = 0; thetaMax = 35; phiReferenceVel = 0; phiVariance = 10; overrideAdvances = false; particles = "jetFighterDebrisSmoke"; lifetimeMS = 10000; lifetimeVarianceMS = 2000; }; //-------------------------------------------------------------- // Contrail smoke //-------------------------------------------------------------- datablock ParticleData(jetFighterContrailParticle) { dragCoefficient = 1.5; gravityCoefficient = 0; inheritedVelFactor = 0.2; constantAcceleration = 0.0; lifetimeMS = 2000; lifetimeVarianceMS = 0; textureName = "art/particles/dustParticle"; colors[0] = "0.6 0.6 0.6 0.5"; colors[1] = "0.2 0.2 0.2 0"; sizes[0] = 0.6; sizes[1] = 2; }; datablock ParticleEmitterData(jetFighterContrailEmitter) { ejectionPeriodMS = 10; periodVarianceMS = 0; ejectionVelocity = 1; velocityVariance = 1.0; ejectionOffset = 0.0; thetaMin = 0; thetaMax = 10; phiReferenceVel = 0; phiVariance = 360; overrideAdvances = false; particles = "jetFighterContrailParticle"; }; //-------------------------------------------------------------- // jetFighter damage smoke //-------------------------------------------------------------- datablock ParticleData(jetFighterDamageSmokeParticle) { dragCoefficient = 0.0; gravityCoefficient = 0.1; inheritedVelFactor = 0.5; constantAcceleration = 0.0; lifetimeMS = 1500; lifetimeVarianceMS = 200; useInvAlpha = true; spinRandomMin = -90.0; spinRandomMax = 90.0; textureName = "art/particles/dustParticle"; colors[0] = "0.7 0.7 0.7 0.0"; colors[1] = "0.5 0.5 0.5 0.7"; colors[2] = "0.3 0.3 0.3 0.0"; sizes[0] = 1.2; sizes[1] = 2.6; sizes[2] = 4.0; times[0] = 0.0; times[1] = 0.5; times[2] = 1.0; }; datablock ParticleEmitterData(jetFighterDamageSmoke) { ejectionPeriodMS = 30; periodVarianceMS = 6; ejectionVelocity = 4.0; velocityVariance = 0.5; ejectionOffset = 1.5; thetaMin = 0; thetaMax = 35; overrideAdvances = false; particles = "jetFighterDamageSmokeParticle"; }; //-------------------------------------------------------------- // Flying jet smoke //-------------------------------------------------------------- datablock ParticleData(jetFighterParticle) { dragCoefficient = 1.5; gravityCoefficient = 0; inheritedVelFactor = 0.2; constantAcceleration = 0.0; lifetimeMS = 1000; lifetimeVarianceMS = 200; useInvAlpha = true; textureName = "art/particles/dustParticle"; colors[0] = "0.96 0.96 0.96 0.6"; colors[1] = "0.3 0.3 0.3 0"; sizes[0] = 1; sizes[1] = 6; //times[0] = 0.0; //times[1] = 0.4; }; datablock ParticleEmitterData(jetFighterJetEmitter) { ejectionPeriodMS = 15; periodVarianceMS = 0; ejectionVelocity = 20; velocityVariance = 1.0; ejectionOffset = 0.0; thetaMin = 0; thetaMax = 10; phiReferenceVel = 0; phiVariance = 360; overrideAdvances = false; particles = "jetFighterParticle"; }; //-------------------------------------------------------------- // Lift off smoke (vertical) //-------------------------------------------------------------- datablock ParticleData(jetFighterParticleDown) { dragCoefficient = 1.5; gravityCoefficient = 0.5; inheritedVelFactor = 0.2; constantAcceleration = 0.0; lifetimeMS = 500; lifetimeVarianceMS = 50; textureName = "art/particles/dustParticle"; useInvAlpha = true; colors[0] = "0.9 0.9 0.9 0.6"; colors[1] = "0.3 0.3 0.3 0"; //colors[0] = "0.9 0.7 0.3 0.6"; //colors[1] = "0.3 0.3 0.5 0"; sizes[0] = 1; sizes[1] = 6; }; datablock ParticleEmitterData(jetFighterJetEmitterDown) { ejectionPeriodMS = 15; periodVarianceMS = 0; ejectionVelocity = 20; velocityVariance = 1.0; ejectionOffset = 0.0; thetaMin = 0; thetaMax = 10; phiReferenceVel = 0; phiVariance = 360; overrideAdvances = false; particles = "jetFighterParticleDown"; }; //-------------------------------------------------------------- // Hover smoke //-------------------------------------------------------------- datablock ParticleData(jetFighterDust) { dragCoefficient = 1.0; gravityCoefficient = 0.01; inheritedVelFactor = 0.0; constantAcceleration = 0.0; lifetimeMS = 1000; lifetimeVarianceMS = 200; useInvAlpha = true; spinRandomMin = -90.0; spinRandomMax = 500.0; textureName = "art/particles/dustParticle"; colors[0] = "0.46 0.36 0.26 0.0"; colors[1] = "0.46 0.46 0.36 0.9"; colors[2] = "0.46 0.46 0.36 0.4"; sizes[0] = 3.2; sizes[1] = 4.6; sizes[2] = 7.0; times[0] = 0.0; times[1] = 0.5; times[2] = 1.0; }; datablock ParticleEmitterData(jetFighterDustEmitter) { ejectionPeriodMS = 15; periodVarianceMS = 0; ejectionVelocity = 15.0; velocityVariance = 0.0; ejectionOffset = 0.0; thetaMin = 90; thetaMax = 90; phiReferenceVel = 0; phiVariance = 360; overrideAdvances = false; //useEmitterColors = true; particles = "jetFighterDust"; }; //-------------------------------------------------------------- // Foam Smoke //-------------------------------------------------------------- datablock ParticleData(jetFighterFoamParticle) { dragCoefficient = 2.0; gravityCoefficient = -0.05; inheritedVelFactor = 0.0; constantAcceleration = 0.0; lifetimeMS = 1200; lifetimeVarianceMS = 400; useInvAlpha = false; spinRandomMin = -90.0; spinRandomMax = 500.0; textureName = "art/particles/dustParticle"; colors[0] = "0.7 0.8 1.0 1.0"; colors[1] = "0.7 0.8 1.0 0.5"; colors[2] = "0.7 0.8 1.0 0.0"; sizes[0] = 2; sizes[1] = 4; sizes[2] = 6; times[0] = 0.0; times[1] = 0.5; times[2] = 1.0; }; datablock ParticleEmitterData(jetFighterFoamEmitter) { ejectionPeriodMS = 40; periodVarianceMS = 0; ejectionVelocity = 10.0; velocityVariance = 1.0; ejectionOffset = 0.0; thetaMin = 85; thetaMax = 85; phiReferenceVel = 0; phiVariance = 360; overrideAdvances = false; particles = "jetFighterFoamParticle"; }; // --------------------------------------------------------------- datablock ParticleData(jetFighterExplosionParticle) { dragCoefficient = 2; gravityCoefficient = 0.2; inheritedVelFactor = 0.9; constantAcceleration = 0.0; lifetimeMS = 6000; lifetimeVarianceMS = 800; textureName = "art/particles/dustParticle"; colors[0] = "0.86 0.36 0.26 1.0"; colors[1] = "0.70 0.36 0.26 0.5"; colors[2] = "0.56 0.36 0.26 0.0"; sizes[0] = 8.5; sizes[1] = 11.5; sizes[2] = 17.0; }; datablock ParticleEmitterData(jetFighterExplosionEmitter) { ejectionPeriodMS = 12; periodVarianceMS = 0; ejectionVelocity = 5; velocityVariance = 1.0; ejectionOffset = 0.0; thetaMin = 0; thetaMax = 60; phiReferenceVel = 0; phiVariance = 360; overrideAdvances = false; particles = "jetFighterExplosionParticle"; }; datablock ExplosionData(jetFighterExplosion) { //explosionShape = "art/shapes/vehicles/ship_scout/scout_debris.dts"; playSpeed = 1.0; particleEmitter = jetFighterExplosionEmitter; particleDensity = 60; particleRadius = 2; // total size of the explosion. Scale it up to have bigger explosions faceViewer = true; explosionScale = "1 1 1"; shakeCamera = true; camShakeFreq = "10.0 11.0 10.0"; camShakeAmp = "1.0 1.0 1.0"; camShakeDuration = 0.5; camShakeRadius = 80.0; //soundProfile = jetFighterExplosionSound; emitter[0] = jetFighterExplosionSparkEmitter; }; datablock DebrisData(jetFighterDebris) { explodeOnMaxBounce = true; elasticity = 0.15; friction = 0.5; lifetime = 7.0; lifetimeVariance = 4.0; minSpinSpeed = 40; maxSpinSpeed = 600; numBounces = 1; bounceVariance = 1; staticOnMaxBounce = true; gravModifier = 1.0; useRadiusMass = true; baseRadius = 1; velocity = 30.0; velocityVariance = 12.0; emitters[0] = jetFighterDebrisSmokeEmitter; }; art/datablocks/vehicles/jetFighterDB.cs //----------------------------------------------------------------------------- // Vehiculo // "Gibby's Generic Get Fighter" // A basic flying vehicle datablock //----------------------------------------------------------------------------- exec("./jetFighter_fx.cs"); // visual fx datablock FlyingVehicleData( JetFighter ) { category = "Vehicles"; shapeFile = "art/shapes/vehicles/fighterJet/fighterJet.dts"; // 3rd person camera settings cameraRoll = true; cameraMaxDist = 16; cameraOffset = 1.0; cameraLag = 0.1; cameraDecay = 1.25; // Rigid Body mass = 100; massCenter = "0 -0.2 0"; massBox = "0 0 0"; integration = 3; collisionTol = 0.6; contactTol = 0.4; bodyFriction = 0; bodyRestitution = 0.8; minRollSpeed = 2000; minImpactSpeed = 5; softImpactSpeed = 3; hardImpactSpeed = 15; // Physics drag = 0.25; minDrag = 40; rotationalDrag = 20; // Autostabilizer maxAutoSpeed = 6; autoAngularForce = 400; autoLinearForce = 300; autoInputDamping = 0.55; // Maneuvering maxSteeringAngle = 3; powerSteering = true; // Power Steering steeringReturn = 0; // Steering return-to-center steeringReturnSpeedScale = 0.01; // Steering return-to-center scale horizontalSurfaceForce = 20; verticalSurfaceForce = 20; maneuveringForce = 6400; steeringForce = 500; steeringRollForce = 200; rollForce = 10; hoverHeight = 0.5; createHoverHeight = 0.5; maxForwardSpeed = 150; // Vertical jetting minJetEnergy = 5; jetForce = 750; jetEnergyDrain = 5; vertThrustMultiple = 10.0; // Object Impact Damage collDamageThresholdVel = 10.0; collDamageMultiplier = 0.05; minImpactSpeed = 10; // If hit ground at speed above this then it's an impact. Meters / second speedDamageScale = 0.5; // war 0.06 // Misc computeCRC = true; // Damage/Energy maxDamage = 500; // total damage until explosion maxEnergy = 5000; // Afterburner and any energy weapon pool //energyPerDamagePoint = 160; destroyedLevel = 1.40; rechargeRate = 50; // Afterburner recharge rate was 0.41 // Emitters forwardJetEmitter = jetFighterJetEmitter; backwardJetEmitter = jetFighterJetEmitter; downJetEmitter = jetFighterJetEmitterDown; trailEmitter = jetFighterContrailEmitter; minTrailSpeed = 10; //splashEmitter = VehicleFoamEmitter; // water splash stuff //dustEmitter = DustEmitter; // dust emitter when hovering over the ground //triggerDustHeight = 8; //dustHeight = 8; // Sounds engineSound = genericJetEngineSound;//FighterEngineSnd; //jetSound = genericJetThrustSound; //FighterJettingSnd; //---------------- softImpactSound = softImpact; hardImpactSound = hardImpact; // Velocities softSplashSoundVelocity = 10.0; mediumSplashSoundVelocity = 15.0; hardSplashSoundVelocity = 20.0; exitSplashSoundVelocity = 10.0; // Damage emitters damageEmitter[0] = jetFighterDamageSmoke; damageEmitter[1] = HeavyDamageSmoke; damageEmitter[2] = DestroyedDamageSmoke; damageEmitterOffset[0] = "0 0 0"; damageLevelTolerance[0] = 0.3; damageLevelTolerance[1] = 0.7; damageLevelTolerance[2] = 0.9; numDmgEmitterAreas = 3; // Explosion and debris setup explosion = jetFighterExplosion; underwaterExplosion = RocketLauncherWaterExplosion; explosionDamage = 40; // How much damage is applied through a radiusDamage function call explosionRadius = 30; // the radius for the radiusDamage function call debris = jetFighterDebris; // the debris datablock debrisShapeName = "art/shapes/vehicles/fighterJet/fighterJetDebris.dts"; // our debris shape (containts the explosion parts) mountPose = "sitting"; }; Step3: Add these lines to art/datablockExec.cs at line 65 exec("./vehicles/jetFighter_fx.cs"); exec("./vehicles/jetFighterDB.cs"); Step4: Add these lines to Empty Terrain.mis at line 115: new FlyingVehicle() { disableMove = "0"; isAIControlled = "0"; dataBlock = "jetFighter"; position = "-4.55322 -4.56358 246.531"; rotation = "0.00621613 0.00266831 -0.999977 24.1927"; scale = "1 1 1"; canSave = "1"; canSaveDynamicFields = "1"; mountable = "1"; }; Step 5: Add these lines to scripts/client/default.binds.cs at line 304: //-->> Vehiculo function doBoost(%val) { $mvTriggerCount3++; } //<<-- Vehiculo And this to the vehicleMap at line 762: vehicleMap.bind(keyboard, "lshift", doBoost); Step 6: Add this file to server/vehicles/ and execute it in scriptExec.cs: jetFighter.cs //----------------------------------------------------------------------------- // Vehiculo // "Gibby's Generic Jet Fighter" // Basic flying vehicle functionality //----------------------------------------------------------------------------- function jetFighter::create(%block) { //echo("jetFighter->create called."); %obj = new FlyingVehicle() { dataBlock = %block; }; return(%obj); } function jetFighter::onAdd(%this,%obj) { Parent::onAdd( %this, %obj ); %obj.setEnergyLevel(%this.MaxEnergy); %obj.setRechargeRate(%this.rechargeRate); //%obj.setRechargeRate( 25 ); %obj.setRepairRate(0); %obj.mountable=true; } function jetFighter::onCollision(%this, %obj, %col) { //echo("jetFighter->onCollision called."); if(!isObject(%obj)) return;//don't do anything if we don't exist :P } function jetFighter::onImpact(%this, %obj, %collidedObject, %vec, %vecLen) { //echo("jetFighter->onImpact called: " @ %this SPC %obj SPC %collidedObject SPC %vec SPC %vecLen); if(%vecLen > %obj.minImpactSpeed) %obj.damage(0, VectorAdd(%obj.getPosition(), %vec), %vecLen * %this.speedDamageScale, "Impact"); } function jetFighter::damage(%this, %obj, %sourceObject, %position, %damage, %damageType) { if (%obj.getDamageState() $= "Destroyed") return; %name = %obj.getShapeName; %db = %obj.getDatablock().getName(); %damageMax = %db.maxDamage; %team = %obj.team; %obj.applyDamage(%damage); if (%obj.getDamageState() $= "Destroyed") { //Conventional Blast here %pos = %obj.getPosition(); %blastPos = %pos; %vehicle_blast = new explosion() { dataBlock = RocketLauncherExplosion; position = %blastPos; }; MissionCleanup.add(%vehicle_blast); } } function jetFighter::onDamage(%this, %obj, %delta) { //echo("jetFighter->onDamage called."); %damage = %obj.getDamageLevel(); %healthLeft = %this.maxDamage - %damage; if(%damage >= %this.maxDamage) { if (isObject(%obj)) { %obj.setDamageState(Destroyed); } } } function jetFighter::onDisabled(%this,%obj,%state) { //echo("jetFighter->onDisabled called."); // Release the main weapon trigger %obj.setImageTrigger(0,false); %obj.setImageTrigger(1,false); // Schedule corpse removal. Just keeping the place clean. %obj.schedule(1, "startFade", 1, 0, true); %obj.schedule(1, "delete"); } $FlyerDamageWater = 1.4; $FlyerDamageLava = 1.4; $FlyerDamageHotLava = 1.4; $FlyerDamageCrustyLava = 1.4; function jetFighter::onEnterLiquid(%this, %obj, %coverage, %type) { //echo("jetFighter->onEnterLiquid called."); switch(%type) { case 0: //Water %obj.setDamageDt($FlyerDamageWater, "Water"); case 1: //Ocean Water %obj.setDamageDt($FlyerDamageWater, "Water"); case 2: //River Water %obj.setDamageDt($FlyerDamageWater, "Water"); case 3: //Stagnant Water %obj.setDamageDt($FlyerDamageWater, "Water"); case 4: //Lava %obj.setDamageDt($FlyerDamageLava, "Lava"); case 5: //Hot Lava %obj.setDamageDt($FlyerDamageHotLava, "Lava"); case 6: //Crusty Lava %obj.setDamageDt($FlyerDamageCrustyLava, "Lava"); case 7: //Quick Sand } } function jetFighter::onLeaveLiquid(%this, %obj, %type) { //echo("jetFighter->onLeaveLiquid called."); %obj.clearDamageDt(); } Step 7: Change this line in PlayerData::onCollision at line 176: if ((%db.getClassName() $= "WheeledVehicleData" || %db.getClassName() $= "FlyingVehicleData") && %obj.mountVehicle && %obj.getState() $= "Move" && %col.mountable) Step 8: Add this line to the PlayerData::onMount function in scripts/server/player.cs at line 66: %obj.setAllMeshesHidden(true); %obj.isHidden = true; Step 9: Add these lines to the PlayerData::onUnmount function in scripts/server/player.cs at line 88: %obj.setAllMeshesHidden(false); %obj.isHidden = false; if(%obj.getClassName() $= "Player") commandToClient(%obj.client, 'toggleVehicleMap', true); Step 10: Add this line to scripts/server/scriptExec.cs at line 54: exec("./vehicles/jetFighter.cs"); Run the game, play the ‘Empty Terrain’ mission and look to your left. Bump into the flyer and you’re airborne!
  4. I've posted the model I'm using here: http://forums.torque3d.org/viewtopic.php?f=24&t=930&p=7504#p7504
  5. Here's the 'Future Fighterjet 2.0' from OpenGameArt, setup by yours truly to work with Torque3d. Has the nodes from the flyingVehicle class so you can mount players, weapons and particle effects. Includes team skins, advanced textures and debris models. OpenGameArt link: http://opengameart.org/content/future-fighterjet-for-torque3d
  6. Greets all: Wondering if anyone out there has tested flyingVehicles with 3.10rc2. I have a added an aircraft model that has worked perfectly with every version from 1.1 to 3.8 to a new 3.10rc2 project using the Full template. Using only stock particles and without any changes to the code, I can mount the vehicle and it appears to behave correctly but the contrail and boost particles don't render. Anyone else tried this? Note I have changed player.cs to allow mounting to flyingVehicles, and added a function to the vehicleMap in defaultBind.cs to enable $mvTrigger3 (which is 'turbo boost' for vehicles), but aside from that it's as close to stock as is possible. Particles don't render on Win7 Pro using D3D, nor on macOS using openGL.
  7. It's free here: http://www.moddb.com/downloads/truespace-76
  8. Good to see you around :D I kind of thought you had left us as you never answered any of my mails or forums posts :o Update: I've tinkered with stock AFX and then added my own set of mods, which include many of AZ's, Acasters, Visad's and my own, and have so far not seen any other issues than I'm seeing with stock 3.8. just random crashes in the editors while in OpenGL. Anyone else out there using Az's port? @DK: got a job :mrgreen:
  9. Ahhh, found it, the 'Full_AFX' template hadn't been updated with newest shader stuff - diffing it with 'Full' made it work... I'll bash away on it some more this eve, see if I can break anything else ;P
  10. @PaulWeston: Are you 64-bit or 32? I've had issues with zones/portals/occluders in 64-bit that worked perfectly in 32-bit. That being said, placement of portals / overlapping of zones can effect performance. I usually end up tweaking their positions/size quite a bit 'til I get the desired result...
  11. Gibby

    Arcane FX

    That would be great! IMHO AFX is so solid and plays so well with the rest of the code it should just become part of the engine, especially the effectron system. The demo that it came with makes it appear to be oriented toward WOW style games but it really helps with whatever genre/gametype/application you'd use it for. Need to animate propellors/ceiling fans? Need particle effects that follow paths and stay in sync? Need model animation and script functions to play well together? AFX helps with all of these things, even in projects that don't have 'magic' or 'spells'...
  12. The engine itself isn't particularly optimized for any specific genre, and the new and forthcoming updates will make it even more modular and extensible. Having said that, the Full template and its included scripts is a ready-to-run FPS but if you start with the Empty template there's multiple directions you can take it as a designer. We just don't have any templates for other genres - yet. I just used it to demo a live media streaming hardware/software solution I'm designing and used T3D's networking and Theora capabilites for the player gui and it worked great.
  13. Update: Thanks to Hutch and the crew on IRC, I have been making headway. Seems the cMake approach has some issues with the 3.7rc but I've been able to get project manager to generate xCode projects. @lowlevelsoul: Hang in there. I got a version of my 7DayFPS project working and performing nicely [50-60ish FPS with forest, precipitation, postFX and dozens of bots] with just a few features missing in late January [version3.6.2], and despite the many updates/enhancements to the OGL side, it's likely we'll have it running in less time than it would take to write a new rendering layer. FWIW you should also look into what's happening with Torque6 as it's basically what you're considering - T3D networking, T2D modularity, new rendering layer... @lls+all: Even if you only have time to download and check the install process, we have so few mac users that any help is valuable, especially in making sure that it'll be Prêt-à-Porter for as many mac versions as is practicle...
  14. Greets all: Given the renewed interest in an OSX port of T3D and of T3D in general, I've decided to make an OSX how-to my priority. To that end, I'm taking Luis' suggestion and would like to form an ad hoc team to help get it done and tested. I myself an not a real coder, per se, but have considerable experience with Torque on Macs. I've had it working in OSX up to version 3.62 and am updating one of my Macs to compile 3.7 with the intention of writing a wiki. If you are a mac user with experience with xCode, we need your help. If you own a mac and would be willing to help test/troubleshoot, we need your help as well. If interested, contact me here...
  15. @Luis: I'd be honored to help in anyway I can - llame me Pues! @lowlevelsoul: So far there is no well-defined path to get T3D and OSX to work together, we've all been doing our best to get it going independantly which is so often the path of the Mac gamer... Perhaps Luis has the right idea, let's get a team together and make this happen1
  16. Hola! I wanted to send a big Muchimas, Muchimas Gracias to the Steering Committee as well as all the folks who have so generously contributed to Torque 3.7 - feels like the good ol' days of Torque again! Also a big shout out to the IRC community as well for always being so helpful... For this week's practice level, I thought I'd work on a non-game project I've had ongoing for a while called Mexica Virtual. It's a web-based virtual walkthrough of a Mesoamerican city just prior to the conquest with point-and-click popups describing the history of the structures and items. I'm applying for a Cultural grant to hire voice-over/character artists and needed a concept demo of the project to show off the idea. What with T3D 3.7rc just out, I thought I'd give it a go and four and a half hours later got this result: 3oIU2OMwJ4M I started by downloading the repo and Ron Kapaun's 'Tropical Rainforest Pack'. I had the Arteria 'Mayan' pack on hand as well as a heightmap from the TGE days, created by Skar, that I'd since modded extensively in L3DT and Photoshop. Once I had the parts together, I created the new project using the 'Full' template and compiled it in VS2010. I created a new level, imported the heightmap and spent a bit of time setting up the terrain. Using a technique similar to the CryTech style, I created terrain materials using a solid color for the diffuse and various and sundried macro and detail maps. I wound up creating a couple new ones in Genetica to get what I wanted, and modded some existing ones in Photoshop. Once I was happy with the terrain, I added a waterblock and began creating new forest brushes and ground cover objects using Ron's assets. After painting these onto my terrain I added clouds and tweaked the scatterSky variables to simulate a Rainforest typical of Central Mexico. Next, using a combination of ShaderMap and Photoshop, I created new normal maps for the structures and bashed up one of Ron's textures to use in an Accumulation Volume, covering the new-looking structures with moss. I logged the time I spent on the level, starting at Half-past noon and stopping at Five O'Clock to capture the video shown above. I guess after all those game jams I've got my speed-modding on point...
  17. I've had T3D+AFX running in OSX for about a year, all the way up to 3.6.3. I had been missing some of the shaders in the past but they're all updated and working well in OpenGL now. I've been trying to get 3.7 to run with the intention of writing a T3D/OSX wiki but I've run into issues with an older version of xCode on my MBP. I have a huge non-game project in the works now and won't upgrade OSX/xCode 'til its delivered in a week or so. What I can tell you is that the Project Manager is not likely going to work. I have in the past generated projects on the Windoze side [if there's a plist in your templates] and tweaked the projects till it ran. That approach hasn't worked for me as of late, but fortunately these days, you'll simply need to setup and run cMake to generate your xCode projects - pretty painless. Once you have used cMake to generate the xCode project, you'll have to make sure you're using the Apple LLVM 4.2 compiler (not the GCC we used to use for TGE ) and running 'Latest OS X' in your build SDK. FWIW There's a couple of guys on the IRC channel that are compiling test versions for OSX, if you get stuck they're always really helpful. Please give it a shot and post your results, working or not. I'd like to get an OSX how-to going and would welcome any help, especially from an experienced Mac-Torque user...
  18. Greets All; I was wondering if anyone has a means by which one can change the dust emitter for a material. I've tried this: http://www.garagegames.com/community/forums/viewthread/132216 but I can't seem to get it implemented to actually change the dust. Any resources/suggestions/ideas???
  19. @Steve: I think that was what had held me up for a day, I had it working fine per your instructions in 3.6.1 but had to change it to work with 3.7+
  20. the create function needs to look like this: function createRibbon(%emitter, %pos) { %r = new RibbonNode() { datablock = DefaultRibbonNodeData; Ribbon = %emitter; //Gibby should be 'Ribbon' not 'emitter' position = %pos; }; if(isObject(MissionCleanup)) MissionCleanup.add(%r); return %r; }
  21. Gibby

    OfflineLPV test

    @jay1ne: Are you seeing the folder T3D/offlineLPV in your solution? If those files aren't there the project will still compile but they won't instatiate in-game...
  22. Gibby

    OfflineLPV test

    Sorry 'bout that - more to do with my [lack of] video editing skills than Torque Tech - that and I was trying very hard to get as far away from that infernal 'Tribes2' look as possible ;P
  23. Gibby

    OfflineLPV test

    I had that issue the first time I tried to run it, and found I had to add the directory into my Tools/CMake/torque3d.cmake file at around line 255: addPath("${srcDir}/T3D/offlineLPV") If you're using ProjectManager, add this line to Tools/ProjectGenerator/T3D.inc at around line 60: addEngineSrcDir('T3D/offlineLPV'); The obvious solution to this would be to add it to the project's source directory but for troubleshooting convenience I left mine the way it was in the repo... ...I ported this to my project as well, do have the offlineLPV in my editor but have some issues with the scatterSky, possibly with the render bin. I'll be going over it this weekend and will get back...
×
×
  • Create New...