MackeyK24

Members
  • Content Count

    1,140
  • Joined

  • Last visited

  • Days Won

    8

MackeyK24 last won the day on May 28

MackeyK24 had the most liked content!

About MackeyK24

  • Rank
    Advanced Member

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. MackeyK24

    BabylonJS Toolkit Problems

    You can literally HOST that Export folder as in IIS / ASP.NET There are so many options... The toolkit itself HOST the export every time you hit build and preview... IT ALSO SUPPORTS Serving compressed content... Just look at the Web Browser Network Panel... On eof the columns shows the actual gzipped size that is transfer. You could just Copy the Export folder to a hosting company like GODADDY... The bin folder has the HttpModule if you have that selected to export... and it generates the web.conifg that associates all the scene content stuff. Dude... If you are using My Toolkit... You are literally ready to rock and roll for web release Just HOST the Export folder somewhere (When not using the Toolkit for development)
  2. MackeyK24

    BabylonJS Toolkit Problems

    You wanna OPTIMIZE your geometry for WebGL. The models on the asset store are really for the NATIVE Unity Environment. They are probably too HIGH POLY to run smoothly ... they probably have many prices and many materials... you wanna try optimize all that... Also try compression for the actual payload delivery... note the HttpModule handles this for ASP.NET web apps and the toolkit web server compress scene content automatically As for NodeJS... I don’t really do NodeJS... but if anyone outlined how Babylon works in pure NodeJS environment with some example projects and then I can possibly add the support to toolkit to create node project as an option
  3. MackeyK24

    [SOLVED] - U3D - BabylonJS Game Editor Toolkit

    Unity Version 2018.2.12 has been released which fixes the Main Camera Tag Issue
  4. MackeyK24

    BabylonJS Toolkit Problems

    You would use the SceneManager findSceneComponent function to find ANY component class on the specified OWER GAME OBJECT So for Example if i want t o get a reference to the BABYLON.AnimationState component that is on an OWNER GAME OBJECT let animator:BABYLON.AnimationState = this.manager.findSceneComponent("BABYLON.AnimationState", this.ownerMesh); If you are trying to get a reference to a component from a script that is ALSO on the same OWNER GAME OBJECT let animator:BABYLON.AnimationState = this.getComponent("BABYLON.AnimationState"); So to get a reference to Another Script Component on the SAME OWNER... Use this.getComponent... And to be to get a component from ANY game object use this.manager.findSceneComponent To Get Custom Script just use your for class name: let myComp = this.getComponent("PROJECT.MyScriptComponent"); myComp.ExampleMethodCall("blah"); Here is an example old ThirdPersonController script... Just take a look how i get references to OTHER Script Components protected ready() :void { // Setup animation state component this.animator = this.getComponent("BABYLON.AnimationState"); if (this.animator == null) { BABYLON.Tools.Warn("Failed to locate animation state for: " + this.mesh.name); } else { // Disable Auto-Ticking this.animator.autoTicking = false; } // Setup character controller component this.character = this.getComponent("BABYLON.CharacterController"); if (this.character == null) { BABYLON.Tools.Warn("Failed to locate character controller for: " + this.mesh.name); } else { this.baseFriction = this.character.getFriction(); this.frictionLevel = this.baseFriction; } } Complete ThirdPersonController Example Script: /* Babylon Mesh Component Template */ module BABYLON { export enum ThirdPersonLocomotion { Idle = 0, Walk = 1, Run = 2, Sprint = 3 } export enum ThirdPersonCameraShoulder { Right = 0, Left = 1 } export class ThirdPersonCameraSettings { public positionLeft:BABYLON.Vector3 = BABYLON.Vector3.Zero(); public positionRight:BABYLON.Vector3 = BABYLON.Vector3.Zero(); public lookXSensitivity:number = 2.5; public lookYSensitivity:number = 2.5; public minimumAngle:number = -30.0; public maximumAngle:number = 60.0; public rotationSpeed:number = 5.0; public fieldOfView:number = 70.0; public zoomFieldOfView:number = 30.0; public zooomSpeed:number = 3.0; public hideMeshDistance:number = 0.5; public movementLerpSpeed:number = 2.0; } export class ThirdPersonController extends BABYLON.MeshComponent { public movementVector:BABYLON.Vector3 = BABYLON.Vector3.Zero(); public runSpeed:number = 2.0; public walkSpeed:number = 1.0; public turnSpeed:number = 1.0; public jumpSpeed:number = 5.0; public sprintSpeed:number = 3.0; public enableInput:boolean = false; public rootMotion:boolean = false; public animator:BABYLON.AnimationState = null; public character:BABYLON.CharacterController = null; public cameraRig:BABYLON.AbstractMesh = null; public cameraPivot:BABYLON.AbstractMesh = null; public cameraSphere:BABYLON.AbstractMesh = null; public freeCamera:BABYLON.FreeCamera = null; public buttonJump:number = BABYLON.Xbox360Button.A; public keyboardJump:number = BABYLON.UserInputKey.SpaceBar; public buttonSprint:number = BABYLON.Xbox360Button.LeftStick; public keyboardSprint:number = BABYLON.UserInputKey.Shift; public buttonShoulder:number = BABYLON.Xbox360Button.Y; public keyboardShoulder:number = BABYLON.UserInputKey.Y; public baseFriction:number = 0.01; public frictionLevel:number = 0.0; public wheelInput:number = 0.0; public mouseXInput:number = 0.0; public mouseYInput:number = 0.0; public verticalInput:number = 0.0; public horizontalInput:number = 0.0; public cameraSettings:BABYLON.ThirdPersonCameraSettings = null; //public currentVelocity:BABYLON.Vector3 = BABYLON.Vector3.Zero(); //public currentDirection:BABYLON.ThirdPersonDirection = BABYLON.ThirdPersonDirection.Stationary; //public jumpingDirection:BABYLON.ThirdPersonDirection = BABYLON.ThirdPersonDirection.Stationary; public locomotionState:BABYLON.ThirdPersonLocomotion = BABYLON.ThirdPersonLocomotion.Idle; public locomotionSpeed:number = 0.0; private _meshRotator:BABYLON.MeshRotator = null; private _cameraRotation:BABYLON.Quaternion = BABYLON.Quaternion.Zero(); private _cameraRotationX:number = 0.0; private _cameraRotationY:number = 0.0; private _autoActivateCamera:boolean = false; private _isCharacterJumping:boolean = false; private _isCharacterFalling:boolean = false; private _isCharacterSliding:boolean = false; private _isCharacterGrounded:boolean = false; private _isCharacterCrouched:boolean = false; private _isCharacterJumpFrame:boolean = false; private _inputMoveSpeed:number = 0.0; private _inputMoveVector:BABYLON.Vector3 = BABYLON.Vector3.Zero(); private _meshEulerAngles:BABYLON.Vector3 = BABYLON.Vector3.Zero(); private _pivotEulerAngles:BABYLON.Vector3 = BABYLON.Vector3.Zero(); private _cameraDestination:BABYLON.Vector3 = BABYLON.Vector3.Zero(); private _followCameraOffset:BABYLON.Vector3 = BABYLON.Vector3.Zero(); private _followCameraShoulder:BABYLON.ThirdPersonCameraShoulder = BABYLON.ThirdPersonCameraShoulder.Right; public constructor(owner: BABYLON.AbstractMesh, scene: BABYLON.Scene, tick: boolean = true, propertyBag: any = {}) { super(owner, scene, tick, propertyBag); this._meshRotator = new BABYLON.MeshRotator(this.mesh); this._autoActivateCamera = this.getProperty("activateCamera", false); this.enableInput = this.getProperty("enableInput", false); this.rootMotion = this.getProperty("rootMotion", false); this.cameraSettings = new BABYLON.ThirdPersonCameraSettings(); // Built-In Follow Camera Options var cameraOptions:any = this.getProperty("cameraOptions") if (cameraOptions != null) { this.cameraSettings.lookXSensitivity = cameraOptions.lookXSensitivity; this.cameraSettings.lookYSensitivity = cameraOptions.lookYSensitivity; this.cameraSettings.minimumAngle = cameraOptions.minimumAngle; this.cameraSettings.maximumAngle = cameraOptions.maximumAngle; this.cameraSettings.rotationSpeed = cameraOptions.rotationSpeed; this.cameraSettings.fieldOfView = cameraOptions.fieldOfView; this.cameraSettings.zoomFieldOfView = cameraOptions.zoomFieldOfView; this.cameraSettings.zooomSpeed = cameraOptions.zooomSpeed; this.cameraSettings.hideMeshDistance = cameraOptions.hideMeshDistance; this.cameraSettings.movementLerpSpeed = cameraOptions.movementLerpSpeed; } // Built-In Follow Camera Position var cameraPosition:any = this.getProperty("cameraPosition") this.cameraSettings.positionRight = BABYLON.Utilities.ParseVector3(cameraPosition, new BABYLON.Vector3(0.75, 1.0, -2.5)); this.cameraSettings.positionLeft = new BABYLON.Vector3(-this.cameraSettings.positionRight.y, this.cameraSettings.positionRight.y, this.cameraSettings.positionRight.z); // Built-In Motor Options Support var motorProperties:any = this.getProperty("motorProperties") if (motorProperties != null) { this.runSpeed = motorProperties.runSpeed; this.walkSpeed = motorProperties.walkSpeed; this.turnSpeed = motorProperties.turnSpeed; this.jumpSpeed = motorProperties.jumpSpeed; this.sprintSpeed = motorProperties.sprintSpeed; } } protected ready() :void { // Setup animation state component this.animator = this.getComponent("BABYLON.AnimationState"); if (this.animator == null) { BABYLON.Tools.Warn("Failed to locate animation state for: " + this.mesh.name); } else { // Disable Auto-Ticking this.animator.autoTicking = false; } // Setup character conntroller component this.character = this.getComponent("BABYLON.CharacterController"); if (this.character == null) { BABYLON.Tools.Warn("Failed to locate character controller for: " + this.mesh.name); } else { this.baseFriction = this.character.getFriction(); this.frictionLevel = this.baseFriction; } // Setup character quaternion rotations if (this.mesh.rotationQuaternion == null) this.mesh.rotationQuaternion = BABYLON.Utilities.Euler(this.mesh.rotation.x, this.mesh.rotation.y, this.mesh.rotation.z); // Setup character controller camera rig this.cameraRig = new BABYLON.Mesh(this.mesh + "CameraRig", this.scene); this.cameraRig.position = this.mesh.position.clone(); if (this.cameraRig.rotationQuaternion == null) this.cameraRig.rotationQuaternion = BABYLON.Utilities.Euler(this.cameraRig.rotation.x, this.cameraRig.rotation.y, this.cameraRig.rotation.z); this._followCameraOffset = this.mesh.position.subtract(this.cameraRig.position); // Setup character controller camera pivot this.cameraPivot = new BABYLON.Mesh(this.mesh + "CameraPivot", this.scene, this.cameraRig); this.cameraPivot.position = BABYLON.Vector3.Zero(); if (this.cameraPivot.rotationQuaternion == null) this.cameraPivot.rotationQuaternion = BABYLON.Utilities.Euler(this.cameraPivot.rotation.x, this.cameraPivot.rotation.y, this.cameraPivot.rotation.z); // Setup third person free camera and sphere this.freeCamera = new BABYLON.FreeCamera(this.mesh + "FreeCamera", BABYLON.Vector3.Zero(), this.scene); this.freeCamera.position.copyFrom(this.cameraSettings.positionRight); this.freeCamera.rotationQuaternion = BABYLON.Quaternion.Zero(); this.freeCamera.parent = this.cameraPivot; this.cameraSphere = BABYLON.Mesh.CreateSphere(this.mesh + "CameraSphere", 12, 0.5, this.scene); this.cameraSphere.position = BABYLON.Vector3.Zero(); this.cameraSphere.isVisible = false; // DEBUG SETTING this.cameraSphere.visibility = 0.0 // DEBUG SETTING this.cameraSphere.parent = this.freeCamera; if (this._autoActivateCamera === true) this.scene.activeCamera = this.freeCamera; } protected update() :void { // Tick character controller this.updateCameraRotations(); this.updateCameraPositions(); this.updateCharacterMovement(); //console.log("Grounded: " + this._isCharacterGrounded.toString(), " -> Jumping: " + this._isCharacterJumping.toString(), " -> Falling: " + this._isCharacterFalling.toString() + " -> Sliding: " + this._isCharacterSliding.toString()); } protected after():void { // Process Locomotion Input this.frictionLevel = this.baseFriction; if (this.character == null) return; this._isCharacterJumping = this.character.isJumping(); this._isCharacterFalling = this.character.isFalling(); this._isCharacterSliding = this.character.isSliding(); this._isCharacterGrounded = this.character.isGrounded(); this._isCharacterCrouched = false; this._isCharacterJumpFrame = false; if (this.enableInput === true) { this.wheelInput = this.manager.getUserInput(BABYLON.UserInputAxis.Wheel); this.mouseXInput = this.manager.getUserInput(BABYLON.UserInputAxis.MouseX); this.mouseYInput = this.manager.getUserInput(BABYLON.UserInputAxis.MouseY); this.verticalInput = this.manager.getUserInput(BABYLON.UserInputAxis.Vertical); this.horizontalInput = this.manager.getUserInput(BABYLON.UserInputAxis.Horizontal); // Pseudo normalize dead zone input values var deadZone:number = BABYLON.UserInputOptions.GamepadDeadStickValue; if (this.horizontalInput >= -deadZone && this.horizontalInput <= deadZone) this.horizontalInput = 0.0; if (this.verticalInput >= -deadZone && this.verticalInput <= deadZone) this.verticalInput = 0.0; // Update diagonal movement scaling factor this._inputMoveVector.copyFromFloats(this.horizontalInput, 0.0, this.verticalInput); if (this._inputMoveVector.x !== 0.0 && this._inputMoveVector.z !== 0.0) { this._inputMoveVector.scaleInPlace(BABYLON.Constants.DiagonalSpeed); } // Update user input movement speed vector this._inputMoveSpeed = this._inputMoveVector.length(); if (this._inputMoveSpeed > 1.0) { BABYLON.Vector3.NormalizeToRef(this._inputMoveVector, this._inputMoveVector); this._inputMoveSpeed = this._inputMoveVector.length(); } // Update grounded locomotion movement states if (this._inputMoveVector.x || this._inputMoveVector.z) this.frictionLevel = 0.0; if (this._isCharacterGrounded === true) { var sprinting:boolean = (this.manager.getKeyboardInput(this.keyboardSprint) || this.manager.getGamepadButtonInput(this.buttonSprint)) if (this._inputMoveSpeed > 0.5) { this.locomotionState = (sprinting === true) ? BABYLON.ThirdPersonLocomotion.Sprint : BABYLON.ThirdPersonLocomotion.Run; } else if (this._inputMoveSpeed > 0.0) { this.locomotionState = BABYLON.ThirdPersonLocomotion.Walk; } else { this.locomotionState = BABYLON.ThirdPersonLocomotion.Idle; } this.locomotionSpeed = this.getLocomotionSpeed(); //var forward = BABYLON.Utilities.GetForwardVector(this.mesh); //var right = BABYLON.Utilities.GetRightVector(this.mesh); //var move = forward.scale(this._inputMoveVector.z).add(right.scale(this._inputMoveVector.x)); //this.movementVector.x = move.x; //this.movementVector.y = 0.0; //this.movementVector.z = move.z; // Update user input movement properties this.movementVector.x = this._inputMoveVector.x; this.movementVector.y = 0.0; this.movementVector.z = this._inputMoveVector.z; BABYLON.Utilities.TransformDirectionToRef(this.mesh, this.movementVector, this.movementVector); this.movementVector.scaleInPlace(this.locomotionSpeed); // Update user input jumping frame state this._isCharacterJumpFrame = (this.manager.getKeyboardInput(this.keyboardJump) || this.manager.getGamepadButtonInput(this.buttonJump)); if (this._isCharacterJumpFrame === true) { //this.jumpingDirection = this.currentDirection; } } } } protected destroy() :void { // Destroy character controller this.cameraSphere.dispose(); this.cameraSphere = null; this.cameraPivot.dispose(); this.cameraPivot = null; this.cameraRig.dispose(); this.cameraRig = null; this.freeCamera.dispose(); this.freeCamera = null; this.animator = null; this.character = null; } /* Private Character Controller Helper Functions */ private getLocomotionSpeed():number { var speed:number = 0.0; if (this.rootMotion === true) { var rootSpeed:number = 1.0; speed = rootSpeed * this._inputMoveSpeed; } else { switch (this.locomotionState) { case BABYLON.ThirdPersonLocomotion.Idle: speed = 0.0; break; case BABYLON.ThirdPersonLocomotion.Walk: speed = this.walkSpeed; break; case BABYLON.ThirdPersonLocomotion.Run: speed = this.runSpeed; break; case BABYLON.ThirdPersonLocomotion.Sprint: speed = this.sprintSpeed; break; } } return speed; } private updateCameraRotations():void { var deltaTime:number = this.manager.deltaTime; // Update camera left/right this._cameraRotationX += this.cameraSettings.lookXSensitivity * this.mouseXInput; this._cameraRotationX = BABYLON.Scalar.Repeat(this._cameraRotationX, 360); // Update camera up/down this._cameraRotationY += this.cameraSettings.lookYSensitivity * this.mouseYInput; this._cameraRotationY = BABYLON.Scalar.Clamp(this._cameraRotationY, this.cameraSettings.minimumAngle, this.cameraSettings.maximumAngle); // Update camera rotations BABYLON.Utilities.EulerToRef((this._cameraRotationY * BABYLON.Constants.Deg2Rad), (this._cameraRotationX * BABYLON.Constants.Deg2Rad), 0.0, this._cameraRotation); BABYLON.Quaternion.SlerpToRef(this.cameraPivot.rotationQuaternion, this._cameraRotation, this.cameraSettings.rotationSpeed * deltaTime, this.cameraPivot.rotationQuaternion); } private updateCameraPositions():void { var deltaTime:number = this.manager.deltaTime; // Updaye camera rig this.mesh.position.subtractToRef(this._followCameraOffset, this._cameraDestination); this.cameraRig.position.copyFrom(this._cameraDestination); //BABYLON.Vector3.LerpToRef(this.cameraRig.position, this._cameraDestination, (this.cameraSettings.movementLerpSpeed * deltaTime), this.cameraRig.position); // Updaye free camera var hit:boolean = false; // TODO: Dummy no hit if (this.cameraRig == null) { hit = true; } if (hit === true) { // Move Camera In Closer To Player } else { // Position free camera to current sholder if (this._followCameraShoulder === BABYLON.ThirdPersonCameraShoulder.Left) { BABYLON.Vector3.LerpToRef(this.freeCamera.position, this.cameraSettings.positionLeft, (this.cameraSettings.movementLerpSpeed * deltaTime), this.freeCamera.position); } else { BABYLON.Vector3.LerpToRef(this.freeCamera.position, this.cameraSettings.positionRight, (this.cameraSettings.movementLerpSpeed * deltaTime), this.freeCamera.position); } } } private updateCharacterMovement():void { // Update character rotation if (this.movementVector.x !== 0.0 || this.movementVector.z !== 0.0) { //this.mesh.rotationQuaternion.toEulerAnglesToRef(this._meshEulerAngles); //this.cameraPivot.rotationQuaternion.toEulerAnglesToRef(this._pivotEulerAngles); //BABYLON.Utilities.EulerToRef(this._meshEulerAngles.x, this._pivotEulerAngles.y, this._meshEulerAngles.z, this.mesh.rotationQuaternion); //var dir = new BABYLON.Vector3(-this.horizontalInput, 0, -this.verticalInput); //var pos = this.mesh.position.add(dir); //this._meshRotator.lookAtPosition(pos); } // Update character movement if (this.character != null) { //this.currentVelocity = this.character.getVelocity(); //this.movementVector.y = this.currentVelocity.y; this.character.move(this.movementVector, this.frictionLevel, ((this._isCharacterJumpFrame === true) ? this.jumpSpeed : 0.0)); } // Update character animation if (this.animator != null) { this.animator.setFloat("Locomotion", this.locomotionState as number); //this.animator.setFloat("Jumping", this.jumpingState as number); this.animator.setFloat("Forward", this._inputMoveVector.z); this.animator.setFloat("Turn", this._inputMoveVector.x); this.animator.setFloat("Speed", this._inputMoveSpeed); this.animator.setBool("isJumping", this._isCharacterJumping); this.animator.setBool("isFalling", this._isCharacterFalling); this.animator.setBool("isSliding", this._isCharacterSliding); this.animator.setBool("isCrouched", this._isCharacterCrouched); this.animator.setBool("isGrounded", this._isCharacterGrounded); if (this._isCharacterJumpFrame === true) { this.animator.setTrigger("Jump"); } // Note: Manually Ticking Anims this.animator.tickStateMachine(); } } } } Hope that helps you get going
  5. MackeyK24

    BabylonJS Toolkit Problems

    Yo @Sorskoot Also... I hope you figured out about the tsconfig.json that you should be in your root project folder... make sure this is visible inside VSCODE... THEN YOU DONT NEED the /// reference tags at top of script files... VSCODE will find them where ever they are in the project... And of course the VR Experience is on the Camera Rig now
  6. MackeyK24

    BabylonJS Toolkit Problems

    Yo @Sorskoot ... Hey man... i just saw your you tube using My Toolkit. You seem to be using the tools with no problems... you wanna chime in here for @DADA_universe BTW... Did you ever figure out why your system is running SOOOOO SLOW... Was it because of recording ... That compile should be a few seconds... not minutes
  7. MackeyK24

    BabylonJS Toolkit Problems

    Try updating Typescript npm i -g typescript
  8. MackeyK24

    [SOLVED] - U3D - BabylonJS Game Editor Toolkit

    And don’t forget Camera Tag to Main Camera
  9. MackeyK24

    [SOLVED] - U3D - BabylonJS Game Editor Toolkit

    Try in Latest Chrome Browser
  10. MackeyK24

    [SOLVED] - U3D - BabylonJS Game Editor Toolkit

    Try Latest Chrome Browser i just test on Windows and Edge Browser has issues
  11. MackeyK24

    [SOLVED] - U3D - BabylonJS Game Editor Toolkit

    Good luck on your project as well 🙂
  12. MackeyK24

    [SOLVED] - U3D - BabylonJS Game Editor Toolkit

    Also... I know mentioned JavaScript. It’s just my tools I make that use TypeScript... I hate JavaScript... but I LOVE typescript... it’s like c# for web. but you can use plain JavaScript to code your Babylon project
  13. MackeyK24

    [SOLVED] - U3D - BabylonJS Game Editor Toolkit

    I’m glad you found a framework that you are comfortable with. I imagine it’s the same thing weather you use Babylon, PlayCanvas or Blend4web ... it’s still gonna take time to learn your framework. FYI ... they ALL have web audio , animation s, physics, particle systems, and etc... you still gotta learn how to use in each framework As far CODING ... Babylon is very code based... technically everything is done via code... there may be some tools you are using to HIDE that layer so it seems like not much code is used.... but they are really code based. That’s where the toolkit makes a few things easier i hope you get a grasp on some kinda engine or framework in time to complete your thesis 🙂
  14. MackeyK24

    [SOLVED] - U3D - BabylonJS Game Editor Toolkit

    Yo @razieh I understand where you coming from. I was in the same exact spot about a year and half ago. I had to learn everything about game dev programming, then the details from a Unity C# point of view and finally how to use all that in Babylon using the Babylon API. I don’t think you will find STEP by STEP guides on creating games. You gotta just start playing around stuff, looking st existing examples and projects to see how the might be doing something and try hack out your code. I created the Babylon Toolkit to make game development for ME a little easier. i wouldn’t say we all think we are experts and any videos I make are to show what is possible using my tooling. But you DONT have to use ANY of my mechanics. You could just export raw models and do what you want in your code. As far as getting to know your framework... well you just gotta work with more and more. And you’ll get better at it. You are not alone. We all started where you are. Shit when I first started, I didn’t shit about 3D game development. But after constantly trying to create the features I have in the toolkit... Learning game mechanics and the internals of meshes, textures, animations etc.. things started to come together and make more sense... Eventually I got really good at the internals of Unity’s C# API and how I can use all that stuff in Babylon... That is basically the process I went thru to learning what’s what... and the Babylon Toolkit is the result that I give away for free if ANYONE wants to use my tooling for creating scenes... I think what you need is some kind of Udemy or Lynda style training in game development using a specific game engine API. Unfortunately there are not that many specific to Babylon JS ... I saw one course on Udemy for Babylon networking but you will also learn a lot about coding against the framework. Once I FINISH creating my Toolkit animation mechanics, I plan on making Udemy style training with a big section dedicated to Babylon Toolkit Bootcamp then breakout into everything from mobile specific dev, webvr, advance characters creation and animations and even XBOX Live support... but I’m not ready yet But we have all felt your pain at beginning... Dont give up 😀
  15. MackeyK24

    [SOLVED] - U3D - BabylonJS Game Editor Toolkit

    Because for me, MOST everything has to do with movement. Character Creation and Animation was my main reason for trying to create this toolkit. I get that there other basic stuff... which is all in there and Documented as best I can. I guess I am referring to more Character gameplay mechanics... and I’m guess I’m just old and stubborn... I want it working right before I make any training videos... With that being said, I am always willing to help others with getting their projects up and running . Also been very busy working on my next gen Scene Content Export tooling... called WebGL Canvas Tools... think of it like a Toolkit for OpenGL / GLTF scene content that supports native Unity MetaData