mirror of
				https://github.com/coop-deluxe/sm64coopdx.git
				synced 2025-10-30 08:01:01 +00:00 
			
		
		
		
	Gave each BehaviorScript an ID
Created functions to trivially translate an ID to a Behavior and vice versa. Sent ID over packets instead of Behavior pointer. This should allow Linux and Windows to play together.
This commit is contained in:
		
							parent
							
								
									a896713510
								
							
						
					
					
						commit
						9036336f42
					
				
					 11 changed files with 7808 additions and 34 deletions
				
			
		
							
								
								
									
										6129
									
								
								build-windows-visual-studio/behavior_table/behavior_data.c
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										6129
									
								
								build-windows-visual-studio/behavior_table/behavior_data.c
									
										
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load diff
											
										
									
								
							
							
								
								
									
										43
									
								
								build-windows-visual-studio/behavior_table/generate.py
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										43
									
								
								build-windows-visual-studio/behavior_table/generate.py
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,43 @@
 | 
			
		|||
behaviors = []
 | 
			
		||||
 | 
			
		||||
with open('behavior_data.c', 'r') as f:
 | 
			
		||||
    lines = f.readlines()
 | 
			
		||||
 | 
			
		||||
with open('../../data/behavior_data.c', 'w+') as f:
 | 
			
		||||
    line_number = -1
 | 
			
		||||
    current_behavior = None
 | 
			
		||||
    for line in lines:
 | 
			
		||||
        f.write(line)
 | 
			
		||||
        if current_behavior is not None:
 | 
			
		||||
            f.write('    ID(id_' + current_behavior + '),\n')
 | 
			
		||||
            current_behavior = None
 | 
			
		||||
 | 
			
		||||
        line_number += 1
 | 
			
		||||
        if not line.startswith('const BehaviorScript'):
 | 
			
		||||
            continue
 | 
			
		||||
        if 'BEGIN(' not in lines[line_number + 1]:
 | 
			
		||||
            continue
 | 
			
		||||
        behavior_name = line.split('const BehaviorScript ')[1].split('[]')[0]
 | 
			
		||||
        current_behavior = behavior_name
 | 
			
		||||
        behaviors.append(behavior_name)
 | 
			
		||||
 | 
			
		||||
with open('../../include/behavior_table.h', 'w+') as f:
 | 
			
		||||
    f.write('#ifndef BEHAVIOR_TABLE_H\n')
 | 
			
		||||
    f.write('#define BEHAVIOR_TABLE_H\n\n')
 | 
			
		||||
    f.write('extern BehaviorScript* gBehaviorTable;\n\n')
 | 
			
		||||
    f.write('enum BehaviorId {\n')
 | 
			
		||||
    for behavior in behaviors:
 | 
			
		||||
        f.write('    id_' + behavior + ',\n')
 | 
			
		||||
    f.write('    id_bhv_max_count // must be the last in the list\n')
 | 
			
		||||
    f.write('};\n')
 | 
			
		||||
 | 
			
		||||
    f.write('#endif\n')
 | 
			
		||||
 | 
			
		||||
with open('../../data/behavior_table.c', 'w+') as f:
 | 
			
		||||
    f.write('#include "behavior_table.h"\n\n')
 | 
			
		||||
    f.write('BehaviorScript* gBehaviorTable[id_bhv_max_count] = {\n')
 | 
			
		||||
    for behavior in behaviors:
 | 
			
		||||
        f.write('    [id_' + behavior + '] = &' + behavior + ',\n')
 | 
			
		||||
    f.write('};\n')
 | 
			
		||||
 | 
			
		||||
print(str(behaviors))
 | 
			
		||||
										
											
												File diff suppressed because it is too large
												Load diff
											
										
									
								
							
							
								
								
									
										527
									
								
								data/behavior_table.c
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										527
									
								
								data/behavior_table.c
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,527 @@
 | 
			
		|||
#include <assert.h>
 | 
			
		||||
#include "behavior_table.h"
 | 
			
		||||
 | 
			
		||||
const BehaviorScript* gBehaviorTable[id_bhv_max_count] = {
 | 
			
		||||
    [id_bhvStarDoor] = bhvStarDoor,
 | 
			
		||||
    [id_bhvMrI] = bhvMrI,
 | 
			
		||||
    [id_bhvMrIBody] = bhvMrIBody,
 | 
			
		||||
    [id_bhvMrIParticle] = bhvMrIParticle,
 | 
			
		||||
    [id_bhvPurpleParticle] = bhvPurpleParticle,
 | 
			
		||||
    [id_bhvGiantPole] = bhvGiantPole,
 | 
			
		||||
    [id_bhvPoleGrabbing] = bhvPoleGrabbing,
 | 
			
		||||
    [id_bhvThiHugeIslandTop] = bhvThiHugeIslandTop,
 | 
			
		||||
    [id_bhvThiTinyIslandTop] = bhvThiTinyIslandTop,
 | 
			
		||||
    [id_bhvCapSwitchBase] = bhvCapSwitchBase,
 | 
			
		||||
    [id_bhvCapSwitch] = bhvCapSwitch,
 | 
			
		||||
    [id_bhvKingBobomb] = bhvKingBobomb,
 | 
			
		||||
    [id_bhvBobombAnchorMario] = bhvBobombAnchorMario,
 | 
			
		||||
    [id_bhvBetaChestBottom] = bhvBetaChestBottom,
 | 
			
		||||
    [id_bhvBetaChestLid] = bhvBetaChestLid,
 | 
			
		||||
    [id_bhvBubbleParticleSpawner] = bhvBubbleParticleSpawner,
 | 
			
		||||
    [id_bhvBubbleMaybe] = bhvBubbleMaybe,
 | 
			
		||||
    [id_bhvSmallWaterWave] = bhvSmallWaterWave,
 | 
			
		||||
    [id_bhvWaterAirBubble] = bhvWaterAirBubble,
 | 
			
		||||
    [id_bhvSmallParticle] = bhvSmallParticle,
 | 
			
		||||
    [id_bhvPlungeBubble] = bhvPlungeBubble,
 | 
			
		||||
    [id_bhvSmallParticleSnow] = bhvSmallParticleSnow,
 | 
			
		||||
    [id_bhvSmallParticleBubbles] = bhvSmallParticleBubbles,
 | 
			
		||||
    [id_bhvFishGroup] = bhvFishGroup,
 | 
			
		||||
    [id_bhvCannon] = bhvCannon,
 | 
			
		||||
    [id_bhvCannonBarrel] = bhvCannonBarrel,
 | 
			
		||||
    [id_bhvCannonBaseUnused] = bhvCannonBaseUnused,
 | 
			
		||||
    [id_bhvChuckya] = bhvChuckya,
 | 
			
		||||
    [id_bhvChuckyaAnchorMario] = bhvChuckyaAnchorMario,
 | 
			
		||||
    [id_bhvUnused05A8] = bhvUnused05A8,
 | 
			
		||||
    [id_bhvRotatingPlatform] = bhvRotatingPlatform,
 | 
			
		||||
    [id_bhvTower] = bhvTower,
 | 
			
		||||
    [id_bhvBulletBillCannon] = bhvBulletBillCannon,
 | 
			
		||||
    [id_bhvWfBreakableWallRight] = bhvWfBreakableWallRight,
 | 
			
		||||
    [id_bhvWfBreakableWallLeft] = bhvWfBreakableWallLeft,
 | 
			
		||||
    [id_bhvKickableBoard] = bhvKickableBoard,
 | 
			
		||||
    [id_bhvTowerDoor] = bhvTowerDoor,
 | 
			
		||||
    [id_bhvRotatingCounterClockwise] = bhvRotatingCounterClockwise,
 | 
			
		||||
    [id_bhvWfRotatingWoodenPlatform] = bhvWfRotatingWoodenPlatform,
 | 
			
		||||
    [id_bhvKoopaShellUnderwater] = bhvKoopaShellUnderwater,
 | 
			
		||||
    [id_bhvExitPodiumWarp] = bhvExitPodiumWarp,
 | 
			
		||||
    [id_bhvFadingWarp] = bhvFadingWarp,
 | 
			
		||||
    [id_bhvWarp] = bhvWarp,
 | 
			
		||||
    [id_bhvWarpPipe] = bhvWarpPipe,
 | 
			
		||||
    [id_bhvWhitePuffExplosion] = bhvWhitePuffExplosion,
 | 
			
		||||
    [id_bhvSpawnedStar] = bhvSpawnedStar,
 | 
			
		||||
    [id_bhvSpawnedStarNoLevelExit] = bhvSpawnedStarNoLevelExit,
 | 
			
		||||
    [id_bhvMrIBlueCoin] = bhvMrIBlueCoin,
 | 
			
		||||
    [id_bhvCoinInsideBoo] = bhvCoinInsideBoo,
 | 
			
		||||
    [id_bhvCoinFormationSpawn] = bhvCoinFormationSpawn,
 | 
			
		||||
    [id_bhvCoinFormation] = bhvCoinFormation,
 | 
			
		||||
    [id_bhvOneCoin] = bhvOneCoin,
 | 
			
		||||
    [id_bhvYellowCoin] = bhvYellowCoin,
 | 
			
		||||
    [id_bhvTemporaryYellowCoin] = bhvTemporaryYellowCoin,
 | 
			
		||||
    [id_bhvThreeCoinsSpawn] = bhvThreeCoinsSpawn,
 | 
			
		||||
    [id_bhvTenCoinsSpawn] = bhvTenCoinsSpawn,
 | 
			
		||||
    [id_bhvSingleCoinGetsSpawned] = bhvSingleCoinGetsSpawned,
 | 
			
		||||
    [id_bhvCoinSparkles] = bhvCoinSparkles,
 | 
			
		||||
    [id_bhvGoldenCoinSparkles] = bhvGoldenCoinSparkles,
 | 
			
		||||
    [id_bhvWallTinyStarParticle] = bhvWallTinyStarParticle,
 | 
			
		||||
    [id_bhvVertStarParticleSpawner] = bhvVertStarParticleSpawner,
 | 
			
		||||
    [id_bhvPoundTinyStarParticle] = bhvPoundTinyStarParticle,
 | 
			
		||||
    [id_bhvHorStarParticleSpawner] = bhvHorStarParticleSpawner,
 | 
			
		||||
    [id_bhvPunchTinyTriangle] = bhvPunchTinyTriangle,
 | 
			
		||||
    [id_bhvTriangleParticleSpawner] = bhvTriangleParticleSpawner,
 | 
			
		||||
    [id_bhvDoorWarp] = bhvDoorWarp,
 | 
			
		||||
    [id_bhvDoor] = bhvDoor,
 | 
			
		||||
    [id_bhvGrindel] = bhvGrindel,
 | 
			
		||||
    [id_bhvThwomp2] = bhvThwomp2,
 | 
			
		||||
    [id_bhvThwomp] = bhvThwomp,
 | 
			
		||||
    [id_bhvTumblingBridgePlatform] = bhvTumblingBridgePlatform,
 | 
			
		||||
    [id_bhvWfTumblingBridge] = bhvWfTumblingBridge,
 | 
			
		||||
    [id_bhvBbhTumblingBridge] = bhvBbhTumblingBridge,
 | 
			
		||||
    [id_bhvLllTumblingBridge] = bhvLllTumblingBridge,
 | 
			
		||||
    [id_bhvFlame] = bhvFlame,
 | 
			
		||||
    [id_bhvAnotherElavator] = bhvAnotherElavator,
 | 
			
		||||
    [id_bhvRrElevatorPlatform] = bhvRrElevatorPlatform,
 | 
			
		||||
    [id_bhvHmcElevatorPlatform] = bhvHmcElevatorPlatform,
 | 
			
		||||
    [id_bhvWaterMist] = bhvWaterMist,
 | 
			
		||||
    [id_bhvBreathParticleSpawner] = bhvBreathParticleSpawner,
 | 
			
		||||
    [id_bhvBreakBoxTriangle] = bhvBreakBoxTriangle,
 | 
			
		||||
    [id_bhvWaterMist2] = bhvWaterMist2,
 | 
			
		||||
    [id_bhvUnused0DFC] = bhvUnused0DFC,
 | 
			
		||||
    [id_bhvMistCircParticleSpawner] = bhvMistCircParticleSpawner,
 | 
			
		||||
    [id_bhvDirtParticleSpawner] = bhvDirtParticleSpawner,
 | 
			
		||||
    [id_bhvSnowParticleSpawner] = bhvSnowParticleSpawner,
 | 
			
		||||
    [id_bhvWind] = bhvWind,
 | 
			
		||||
    [id_bhvEndToad] = bhvEndToad,
 | 
			
		||||
    [id_bhvEndPeach] = bhvEndPeach,
 | 
			
		||||
    [id_bhvUnusedParticleSpawn] = bhvUnusedParticleSpawn,
 | 
			
		||||
    [id_bhvUkiki] = bhvUkiki,
 | 
			
		||||
    [id_bhvUkikiCageChild] = bhvUkikiCageChild,
 | 
			
		||||
    [id_bhvUkikiCageStar] = bhvUkikiCageStar,
 | 
			
		||||
    [id_bhvUkikiCage] = bhvUkikiCage,
 | 
			
		||||
    [id_bhvBitfsSinkingPlatforms] = bhvBitfsSinkingPlatforms,
 | 
			
		||||
    [id_bhvBitfsSinkingCagePlatform] = bhvBitfsSinkingCagePlatform,
 | 
			
		||||
    [id_bhvDddMovingPole] = bhvDddMovingPole,
 | 
			
		||||
    [id_bhvBitfsTiltingInvertedPyramid] = bhvBitfsTiltingInvertedPyramid,
 | 
			
		||||
    [id_bhvSquishablePlatform] = bhvSquishablePlatform,
 | 
			
		||||
    [id_bhvCutOutObject] = bhvCutOutObject,
 | 
			
		||||
    [id_bhvBetaMovingFlames] = bhvBetaMovingFlames,
 | 
			
		||||
    [id_bhvRrRotatingBridgePlatform] = bhvRrRotatingBridgePlatform,
 | 
			
		||||
    [id_bhvFlamethrower] = bhvFlamethrower,
 | 
			
		||||
    [id_bhvFlamethrowerFlame] = bhvFlamethrowerFlame,
 | 
			
		||||
    [id_bhvBouncingFireball] = bhvBouncingFireball,
 | 
			
		||||
    [id_bhvBouncingFireballFlame] = bhvBouncingFireballFlame,
 | 
			
		||||
    [id_bhvBowserShockWave] = bhvBowserShockWave,
 | 
			
		||||
    [id_bhvFireParticleSpawner] = bhvFireParticleSpawner,
 | 
			
		||||
    [id_bhvBlackSmokeMario] = bhvBlackSmokeMario,
 | 
			
		||||
    [id_bhvBlackSmokeBowser] = bhvBlackSmokeBowser,
 | 
			
		||||
    [id_bhvBlackSmokeUpward] = bhvBlackSmokeUpward,
 | 
			
		||||
    [id_bhvBetaFishSplashSpawner] = bhvBetaFishSplashSpawner,
 | 
			
		||||
    [id_bhvSpindrift] = bhvSpindrift,
 | 
			
		||||
    [id_bhvTowerPlatformGroup] = bhvTowerPlatformGroup,
 | 
			
		||||
    [id_bhvWfSlidingTowerPlatform] = bhvWfSlidingTowerPlatform,
 | 
			
		||||
    [id_bhvWfElevatorTowerPlatform] = bhvWfElevatorTowerPlatform,
 | 
			
		||||
    [id_bhvWfSolidTowerPlatform] = bhvWfSolidTowerPlatform,
 | 
			
		||||
    [id_bhvLeafParticleSpawner] = bhvLeafParticleSpawner,
 | 
			
		||||
    [id_bhvTreeSnow] = bhvTreeSnow,
 | 
			
		||||
    [id_bhvTreeLeaf] = bhvTreeLeaf,
 | 
			
		||||
    [id_bhvAnotherTiltingPlatform] = bhvAnotherTiltingPlatform,
 | 
			
		||||
    [id_bhvSquarishPathMoving] = bhvSquarishPathMoving,
 | 
			
		||||
    [id_bhvPiranhaPlantBubble] = bhvPiranhaPlantBubble,
 | 
			
		||||
    [id_bhvPiranhaPlantWakingBubbles] = bhvPiranhaPlantWakingBubbles,
 | 
			
		||||
    [id_bhvFloorSwitchAnimatesObject] = bhvFloorSwitchAnimatesObject,
 | 
			
		||||
    [id_bhvFloorSwitchGrills] = bhvFloorSwitchGrills,
 | 
			
		||||
    [id_bhvFloorSwitchHardcodedModel] = bhvFloorSwitchHardcodedModel,
 | 
			
		||||
    [id_bhvFloorSwitchHiddenObjects] = bhvFloorSwitchHiddenObjects,
 | 
			
		||||
    [id_bhvHiddenObject] = bhvHiddenObject,
 | 
			
		||||
    [id_bhvBreakableBox] = bhvBreakableBox,
 | 
			
		||||
    [id_bhvPushableMetalBox] = bhvPushableMetalBox,
 | 
			
		||||
    [id_bhvHeaveHo] = bhvHeaveHo,
 | 
			
		||||
    [id_bhvHeaveHoThrowMario] = bhvHeaveHoThrowMario,
 | 
			
		||||
    [id_bhvCcmTouchedStarSpawn] = bhvCcmTouchedStarSpawn,
 | 
			
		||||
    [id_bhvUnusedPoundablePlatform] = bhvUnusedPoundablePlatform,
 | 
			
		||||
    [id_bhvBetaTrampolineTop] = bhvBetaTrampolineTop,
 | 
			
		||||
    [id_bhvBetaTrampolineSpring] = bhvBetaTrampolineSpring,
 | 
			
		||||
    [id_bhvJumpingBox] = bhvJumpingBox,
 | 
			
		||||
    [id_bhvBooCage] = bhvBooCage,
 | 
			
		||||
    [id_bhvStub] = bhvStub,
 | 
			
		||||
    [id_bhvIgloo] = bhvIgloo,
 | 
			
		||||
    [id_bhvBowserKey] = bhvBowserKey,
 | 
			
		||||
    [id_bhvGrandStar] = bhvGrandStar,
 | 
			
		||||
    [id_bhvBetaBooKey] = bhvBetaBooKey,
 | 
			
		||||
    [id_bhvAlphaBooKey] = bhvAlphaBooKey,
 | 
			
		||||
    [id_bhvBulletBill] = bhvBulletBill,
 | 
			
		||||
    [id_bhvWhitePuffSmoke] = bhvWhitePuffSmoke,
 | 
			
		||||
    [id_bhvUnused1820] = bhvUnused1820,
 | 
			
		||||
    [id_bhvBowserTailAnchor] = bhvBowserTailAnchor,
 | 
			
		||||
    [id_bhvBowser] = bhvBowser,
 | 
			
		||||
    [id_bhvBowserBodyAnchor] = bhvBowserBodyAnchor,
 | 
			
		||||
    [id_bhvBowserFlameSpawn] = bhvBowserFlameSpawn,
 | 
			
		||||
    [id_bhvTiltingBowserLavaPlatform] = bhvTiltingBowserLavaPlatform,
 | 
			
		||||
    [id_bhvFallingBowserPlatform] = bhvFallingBowserPlatform,
 | 
			
		||||
    [id_bhvBlueBowserFlame] = bhvBlueBowserFlame,
 | 
			
		||||
    [id_bhvFlameFloatingLanding] = bhvFlameFloatingLanding,
 | 
			
		||||
    [id_bhvBlueFlamesGroup] = bhvBlueFlamesGroup,
 | 
			
		||||
    [id_bhvFlameBouncing] = bhvFlameBouncing,
 | 
			
		||||
    [id_bhvFlameMovingForwardGrowing] = bhvFlameMovingForwardGrowing,
 | 
			
		||||
    [id_bhvFlameBowser] = bhvFlameBowser,
 | 
			
		||||
    [id_bhvFlameLargeBurningOut] = bhvFlameLargeBurningOut,
 | 
			
		||||
    [id_bhvBlueFish] = bhvBlueFish,
 | 
			
		||||
    [id_bhvTankFishGroup] = bhvTankFishGroup,
 | 
			
		||||
    [id_bhvCheckerboardElevatorGroup] = bhvCheckerboardElevatorGroup,
 | 
			
		||||
    [id_bhvCheckerboardPlatformSub] = bhvCheckerboardPlatformSub,
 | 
			
		||||
    [id_bhvBowserKeyUnlockDoor] = bhvBowserKeyUnlockDoor,
 | 
			
		||||
    [id_bhvBowserKeyCourseExit] = bhvBowserKeyCourseExit,
 | 
			
		||||
    [id_bhvInvisibleObjectsUnderBridge] = bhvInvisibleObjectsUnderBridge,
 | 
			
		||||
    [id_bhvWaterLevelPillar] = bhvWaterLevelPillar,
 | 
			
		||||
    [id_bhvDddWarp] = bhvDddWarp,
 | 
			
		||||
    [id_bhvMoatGrills] = bhvMoatGrills,
 | 
			
		||||
    [id_bhvClockMinuteHand] = bhvClockMinuteHand,
 | 
			
		||||
    [id_bhvClockHourHand] = bhvClockHourHand,
 | 
			
		||||
    [id_bhvMacroUkiki] = bhvMacroUkiki,
 | 
			
		||||
    [id_bhvStub1D0C] = bhvStub1D0C,
 | 
			
		||||
    [id_bhvLllRotatingHexagonalPlatform] = bhvLllRotatingHexagonalPlatform,
 | 
			
		||||
    [id_bhvLllSinkingRockBlock] = bhvLllSinkingRockBlock,
 | 
			
		||||
    [id_bhvStub1D70] = bhvStub1D70,
 | 
			
		||||
    [id_bhvLllMovingOctagonalMeshPlatform] = bhvLllMovingOctagonalMeshPlatform,
 | 
			
		||||
    [id_bhvLllRotatingBlockWithFireBars] = bhvLllRotatingBlockWithFireBars,
 | 
			
		||||
    [id_bhvLllRotatingHexFlame] = bhvLllRotatingHexFlame,
 | 
			
		||||
    [id_bhvLllWoodPiece] = bhvLllWoodPiece,
 | 
			
		||||
    [id_bhvLllFloatingWoodBridge] = bhvLllFloatingWoodBridge,
 | 
			
		||||
    [id_bhvVolcanoFlames] = bhvVolcanoFlames,
 | 
			
		||||
    [id_bhvLllRotatingHexagonalRing] = bhvLllRotatingHexagonalRing,
 | 
			
		||||
    [id_bhvLllSinkingRectangularPlatform] = bhvLllSinkingRectangularPlatform,
 | 
			
		||||
    [id_bhvLllSinkingSquarePlatforms] = bhvLllSinkingSquarePlatforms,
 | 
			
		||||
    [id_bhvLllTiltingInvertedPyramid] = bhvLllTiltingInvertedPyramid,
 | 
			
		||||
    [id_bhvUnused1F30] = bhvUnused1F30,
 | 
			
		||||
    [id_bhvKoopaShell] = bhvKoopaShell,
 | 
			
		||||
    [id_bhvKoopaShellFlame] = bhvKoopaShellFlame,
 | 
			
		||||
    [id_bhvToxBox] = bhvToxBox,
 | 
			
		||||
    [id_bhvPiranhaPlant] = bhvPiranhaPlant,
 | 
			
		||||
    [id_bhvLllHexagonalMesh] = bhvLllHexagonalMesh,
 | 
			
		||||
    [id_bhvLllBowserPuzzlePiece] = bhvLllBowserPuzzlePiece,
 | 
			
		||||
    [id_bhvLllBowserPuzzle] = bhvLllBowserPuzzle,
 | 
			
		||||
    [id_bhvTuxiesMother] = bhvTuxiesMother,
 | 
			
		||||
    [id_bhvPenguinBaby] = bhvPenguinBaby,
 | 
			
		||||
    [id_bhvUnused20E0] = bhvUnused20E0,
 | 
			
		||||
    [id_bhvSmallPenguin] = bhvSmallPenguin,
 | 
			
		||||
    [id_bhvFish2] = bhvFish2,
 | 
			
		||||
    [id_bhvFish3] = bhvFish3,
 | 
			
		||||
    [id_bhvLargeFishGroup] = bhvLargeFishGroup,
 | 
			
		||||
    [id_bhvFish] = bhvFish,
 | 
			
		||||
    [id_bhvWdwExpressElevator] = bhvWdwExpressElevator,
 | 
			
		||||
    [id_bhvWdwExpressElevatorPlatform] = bhvWdwExpressElevatorPlatform,
 | 
			
		||||
    [id_bhvChirpChirp] = bhvChirpChirp,
 | 
			
		||||
    [id_bhvBub] = bhvBub,
 | 
			
		||||
    [id_bhvExclamationBox] = bhvExclamationBox,
 | 
			
		||||
    [id_bhvRotatingExclamationMark] = bhvRotatingExclamationMark,
 | 
			
		||||
    [id_bhvSoundSpawner] = bhvSoundSpawner,
 | 
			
		||||
    [id_bhvRockSolid] = bhvRockSolid,
 | 
			
		||||
    [id_bhvBowserSubDoor] = bhvBowserSubDoor,
 | 
			
		||||
    [id_bhvBowsersSub] = bhvBowsersSub,
 | 
			
		||||
    [id_bhvSushiShark] = bhvSushiShark,
 | 
			
		||||
    [id_bhvSushiSharkCollisionChild] = bhvSushiSharkCollisionChild,
 | 
			
		||||
    [id_bhvJrbSlidingBox] = bhvJrbSlidingBox,
 | 
			
		||||
    [id_bhvShipPart3] = bhvShipPart3,
 | 
			
		||||
    [id_bhvInSunkenShip3] = bhvInSunkenShip3,
 | 
			
		||||
    [id_bhvSunkenShipPart] = bhvSunkenShipPart,
 | 
			
		||||
    [id_bhvSunkenShipPart2] = bhvSunkenShipPart2,
 | 
			
		||||
    [id_bhvInSunkenShip] = bhvInSunkenShip,
 | 
			
		||||
    [id_bhvInSunkenShip2] = bhvInSunkenShip2,
 | 
			
		||||
    [id_bhvMistParticleSpawner] = bhvMistParticleSpawner,
 | 
			
		||||
    [id_bhvWhitePuff1] = bhvWhitePuff1,
 | 
			
		||||
    [id_bhvWhitePuff2] = bhvWhitePuff2,
 | 
			
		||||
    [id_bhvWhitePuffSmoke2] = bhvWhitePuffSmoke2,
 | 
			
		||||
    [id_bhvPurpleSwitchHiddenBoxes] = bhvPurpleSwitchHiddenBoxes,
 | 
			
		||||
    [id_bhvBlueCoinSwitch] = bhvBlueCoinSwitch,
 | 
			
		||||
    [id_bhvHiddenBlueCoin] = bhvHiddenBlueCoin,
 | 
			
		||||
    [id_bhvOpenableCageDoor] = bhvOpenableCageDoor,
 | 
			
		||||
    [id_bhvOpenableGrill] = bhvOpenableGrill,
 | 
			
		||||
    [id_bhvWaterLevelDiamond] = bhvWaterLevelDiamond,
 | 
			
		||||
    [id_bhvInitializeChangingWaterLevel] = bhvInitializeChangingWaterLevel,
 | 
			
		||||
    [id_bhvTweesterSandParticle] = bhvTweesterSandParticle,
 | 
			
		||||
    [id_bhvTweester] = bhvTweester,
 | 
			
		||||
    [id_bhvMerryGoRoundBooManager] = bhvMerryGoRoundBooManager,
 | 
			
		||||
    [id_bhvAnimatedTexture] = bhvAnimatedTexture,
 | 
			
		||||
    [id_bhvBooInCastle] = bhvBooInCastle,
 | 
			
		||||
    [id_bhvBooWithCage] = bhvBooWithCage,
 | 
			
		||||
    [id_bhvBalconyBigBoo] = bhvBalconyBigBoo,
 | 
			
		||||
    [id_bhvMerryGoRoundBigBoo] = bhvMerryGoRoundBigBoo,
 | 
			
		||||
    [id_bhvGhostHuntBigBoo] = bhvGhostHuntBigBoo,
 | 
			
		||||
    [id_bhvCourtyardBooTriplet] = bhvCourtyardBooTriplet,
 | 
			
		||||
    [id_bhvBoo] = bhvBoo,
 | 
			
		||||
    [id_bhvMerryGoRoundBoo] = bhvMerryGoRoundBoo,
 | 
			
		||||
    [id_bhvGhostHuntBoo] = bhvGhostHuntBoo,
 | 
			
		||||
    [id_bhvHiddenStaircaseStep] = bhvHiddenStaircaseStep,
 | 
			
		||||
    [id_bhvBooBossSpawnedBridge] = bhvBooBossSpawnedBridge,
 | 
			
		||||
    [id_bhvBbhTiltingTrapPlatform] = bhvBbhTiltingTrapPlatform,
 | 
			
		||||
    [id_bhvHauntedBookshelf] = bhvHauntedBookshelf,
 | 
			
		||||
    [id_bhvMeshElevator] = bhvMeshElevator,
 | 
			
		||||
    [id_bhvMerryGoRound] = bhvMerryGoRound,
 | 
			
		||||
    [id_bhvPlaysMusicTrackWhenTouched] = bhvPlaysMusicTrackWhenTouched,
 | 
			
		||||
    [id_bhvBetaBowserAnchor] = bhvBetaBowserAnchor,
 | 
			
		||||
    [id_bhvStaticCheckeredPlatform] = bhvStaticCheckeredPlatform,
 | 
			
		||||
    [id_bhvUnused2A10] = bhvUnused2A10,
 | 
			
		||||
    [id_bhvUnusedFakeStar] = bhvUnusedFakeStar,
 | 
			
		||||
    [id_bhvStaticObject] = bhvStaticObject,
 | 
			
		||||
    [id_bhvUnused2A54] = bhvUnused2A54,
 | 
			
		||||
    [id_bhvCastleFloorTrap] = bhvCastleFloorTrap,
 | 
			
		||||
    [id_bhvFloorTrapInCastle] = bhvFloorTrapInCastle,
 | 
			
		||||
    [id_bhvTree] = bhvTree,
 | 
			
		||||
    [id_bhvSparkle] = bhvSparkle,
 | 
			
		||||
    [id_bhvSparkleSpawn] = bhvSparkleSpawn,
 | 
			
		||||
    [id_bhvSparkleParticleSpawner] = bhvSparkleParticleSpawner,
 | 
			
		||||
    [id_bhvScuttlebug] = bhvScuttlebug,
 | 
			
		||||
    [id_bhvScuttlebugSpawn] = bhvScuttlebugSpawn,
 | 
			
		||||
    [id_bhvWhompKingBoss] = bhvWhompKingBoss,
 | 
			
		||||
    [id_bhvSmallWhomp] = bhvSmallWhomp,
 | 
			
		||||
    [id_bhvWaterSplash] = bhvWaterSplash,
 | 
			
		||||
    [id_bhvWaterDroplet] = bhvWaterDroplet,
 | 
			
		||||
    [id_bhvWaterDropletSplash] = bhvWaterDropletSplash,
 | 
			
		||||
    [id_bhvBubbleSplash] = bhvBubbleSplash,
 | 
			
		||||
    [id_bhvIdleWaterWave] = bhvIdleWaterWave,
 | 
			
		||||
    [id_bhvObjectWaterSplash] = bhvObjectWaterSplash,
 | 
			
		||||
    [id_bhvShallowWaterWave] = bhvShallowWaterWave,
 | 
			
		||||
    [id_bhvShallowWaterSplash] = bhvShallowWaterSplash,
 | 
			
		||||
    [id_bhvObjectWaveTrail] = bhvObjectWaveTrail,
 | 
			
		||||
    [id_bhvWaveTrail] = bhvWaveTrail,
 | 
			
		||||
    [id_bhvTinyStrongWindParticle] = bhvTinyStrongWindParticle,
 | 
			
		||||
    [id_bhvStrongWindParticle] = bhvStrongWindParticle,
 | 
			
		||||
    [id_bhvSLSnowmanWind] = bhvSLSnowmanWind,
 | 
			
		||||
    [id_bhvSLWalkingPenguin] = bhvSLWalkingPenguin,
 | 
			
		||||
    [id_bhvYellowBall] = bhvYellowBall,
 | 
			
		||||
    [id_bhvMario] = bhvMario,
 | 
			
		||||
    [id_bhvMario2] = bhvMario2,
 | 
			
		||||
    [id_bhvToadMessage] = bhvToadMessage,
 | 
			
		||||
    [id_bhvUnlockDoorStar] = bhvUnlockDoorStar,
 | 
			
		||||
    [id_bhvRandomAnimatedTexture] = bhvRandomAnimatedTexture,
 | 
			
		||||
    [id_bhvYellowBackgroundInMenu] = bhvYellowBackgroundInMenu,
 | 
			
		||||
    [id_bhvMenuButton] = bhvMenuButton,
 | 
			
		||||
    [id_bhvMenuButtonManager] = bhvMenuButtonManager,
 | 
			
		||||
    [id_bhvActSelectorStarType] = bhvActSelectorStarType,
 | 
			
		||||
    [id_bhvActSelector] = bhvActSelector,
 | 
			
		||||
    [id_bhvMovingYellowCoin] = bhvMovingYellowCoin,
 | 
			
		||||
    [id_bhvMovingBlueCoin] = bhvMovingBlueCoin,
 | 
			
		||||
    [id_bhvBlueCoinSliding] = bhvBlueCoinSliding,
 | 
			
		||||
    [id_bhvBlueCoinJumping] = bhvBlueCoinJumping,
 | 
			
		||||
    [id_bhvSeaweed] = bhvSeaweed,
 | 
			
		||||
    [id_bhvSeaweedBundle] = bhvSeaweedBundle,
 | 
			
		||||
    [id_bhvBobomb] = bhvBobomb,
 | 
			
		||||
    [id_bhvBobombFuseSmoke] = bhvBobombFuseSmoke,
 | 
			
		||||
    [id_bhvBobombBuddy] = bhvBobombBuddy,
 | 
			
		||||
    [id_bhvBobombBuddyOpensCannon] = bhvBobombBuddyOpensCannon,
 | 
			
		||||
    [id_bhvCannonClosed] = bhvCannonClosed,
 | 
			
		||||
    [id_bhvWhirlpool] = bhvWhirlpool,
 | 
			
		||||
    [id_bhvJetStream] = bhvJetStream,
 | 
			
		||||
    [id_bhvMessagePanel] = bhvMessagePanel,
 | 
			
		||||
    [id_bhvSignOnWall] = bhvSignOnWall,
 | 
			
		||||
    [id_bhvHomingAmp] = bhvHomingAmp,
 | 
			
		||||
    [id_bhvCirclingAmp] = bhvCirclingAmp,
 | 
			
		||||
    [id_bhvButterfly] = bhvButterfly,
 | 
			
		||||
    [id_bhvHoot] = bhvHoot,
 | 
			
		||||
    [id_bhvBetaHoldableObject] = bhvBetaHoldableObject,
 | 
			
		||||
    [id_bhvCarrySomething1] = bhvCarrySomething1,
 | 
			
		||||
    [id_bhvCarrySomething2] = bhvCarrySomething2,
 | 
			
		||||
    [id_bhvCarrySomething3] = bhvCarrySomething3,
 | 
			
		||||
    [id_bhvCarrySomething4] = bhvCarrySomething4,
 | 
			
		||||
    [id_bhvCarrySomething5] = bhvCarrySomething5,
 | 
			
		||||
    [id_bhvCarrySomething6] = bhvCarrySomething6,
 | 
			
		||||
    [id_bhvObjectBubble] = bhvObjectBubble,
 | 
			
		||||
    [id_bhvObjectWaterWave] = bhvObjectWaterWave,
 | 
			
		||||
    [id_bhvExplosion] = bhvExplosion,
 | 
			
		||||
    [id_bhvBobombBullyDeathSmoke] = bhvBobombBullyDeathSmoke,
 | 
			
		||||
    [id_bhvSmoke] = bhvSmoke,
 | 
			
		||||
    [id_bhvBobombExplosionBubble] = bhvBobombExplosionBubble,
 | 
			
		||||
    [id_bhvRespawner] = bhvRespawner,
 | 
			
		||||
    [id_bhvSmallBully] = bhvSmallBully,
 | 
			
		||||
    [id_bhvBigBully] = bhvBigBully,
 | 
			
		||||
    [id_bhvBigBullyWithMinions] = bhvBigBullyWithMinions,
 | 
			
		||||
    [id_bhvSmallChillBully] = bhvSmallChillBully,
 | 
			
		||||
    [id_bhvBigChillBully] = bhvBigChillBully,
 | 
			
		||||
    [id_bhvJetStreamRingSpawner] = bhvJetStreamRingSpawner,
 | 
			
		||||
    [id_bhvJetStreamWaterRing] = bhvJetStreamWaterRing,
 | 
			
		||||
    [id_bhvMantaRayWaterRing] = bhvMantaRayWaterRing,
 | 
			
		||||
    [id_bhvMantaRayRingManager] = bhvMantaRayRingManager,
 | 
			
		||||
    [id_bhvBowserBomb] = bhvBowserBomb,
 | 
			
		||||
    [id_bhvBowserBombExplosion] = bhvBowserBombExplosion,
 | 
			
		||||
    [id_bhvBowserBombSmoke] = bhvBowserBombSmoke,
 | 
			
		||||
    [id_bhvCelebrationStar] = bhvCelebrationStar,
 | 
			
		||||
    [id_bhvCelebrationStarSparkle] = bhvCelebrationStarSparkle,
 | 
			
		||||
    [id_bhvStarKeyCollectionPuffSpawner] = bhvStarKeyCollectionPuffSpawner,
 | 
			
		||||
    [id_bhvLllDrawbridgeSpawner] = bhvLllDrawbridgeSpawner,
 | 
			
		||||
    [id_bhvLllDrawbridge] = bhvLllDrawbridge,
 | 
			
		||||
    [id_bhvSmallBomp] = bhvSmallBomp,
 | 
			
		||||
    [id_bhvLargeBomp] = bhvLargeBomp,
 | 
			
		||||
    [id_bhvWfSlidingPlatform] = bhvWfSlidingPlatform,
 | 
			
		||||
    [id_bhvMoneybag] = bhvMoneybag,
 | 
			
		||||
    [id_bhvMoneybagHidden] = bhvMoneybagHidden,
 | 
			
		||||
    [id_bhvPitBowlingBall] = bhvPitBowlingBall,
 | 
			
		||||
    [id_bhvFreeBowlingBall] = bhvFreeBowlingBall,
 | 
			
		||||
    [id_bhvBowlingBall] = bhvBowlingBall,
 | 
			
		||||
    [id_bhvTtmBowlingBallSpawner] = bhvTtmBowlingBallSpawner,
 | 
			
		||||
    [id_bhvBobBowlingBallSpawner] = bhvBobBowlingBallSpawner,
 | 
			
		||||
    [id_bhvThiBowlingBallSpawner] = bhvThiBowlingBallSpawner,
 | 
			
		||||
    [id_bhvRrCruiserWing] = bhvRrCruiserWing,
 | 
			
		||||
    [id_bhvSpindel] = bhvSpindel,
 | 
			
		||||
    [id_bhvSslMovingPyramidWall] = bhvSslMovingPyramidWall,
 | 
			
		||||
    [id_bhvPyramidElevator] = bhvPyramidElevator,
 | 
			
		||||
    [id_bhvPyramidElevatorTrajectoryMarkerBall] = bhvPyramidElevatorTrajectoryMarkerBall,
 | 
			
		||||
    [id_bhvPyramidTop] = bhvPyramidTop,
 | 
			
		||||
    [id_bhvPyramidTopFragment] = bhvPyramidTopFragment,
 | 
			
		||||
    [id_bhvPyramidPillarTouchDetector] = bhvPyramidPillarTouchDetector,
 | 
			
		||||
    [id_bhvWaterfallSoundLoop] = bhvWaterfallSoundLoop,
 | 
			
		||||
    [id_bhvVolcanoSoundLoop] = bhvVolcanoSoundLoop,
 | 
			
		||||
    [id_bhvCastleFlagWaving] = bhvCastleFlagWaving,
 | 
			
		||||
    [id_bhvBirdsSoundLoop] = bhvBirdsSoundLoop,
 | 
			
		||||
    [id_bhvAmbientSounds] = bhvAmbientSounds,
 | 
			
		||||
    [id_bhvSandSoundLoop] = bhvSandSoundLoop,
 | 
			
		||||
    [id_bhvHiddenAt120Stars] = bhvHiddenAt120Stars,
 | 
			
		||||
    [id_bhvSnowmansBottom] = bhvSnowmansBottom,
 | 
			
		||||
    [id_bhvSnowmansHead] = bhvSnowmansHead,
 | 
			
		||||
    [id_bhvSnowmansBodyCheckpoint] = bhvSnowmansBodyCheckpoint,
 | 
			
		||||
    [id_bhvBigSnowmanWhole] = bhvBigSnowmanWhole,
 | 
			
		||||
    [id_bhvBigBoulder] = bhvBigBoulder,
 | 
			
		||||
    [id_bhvBigBoulderGenerator] = bhvBigBoulderGenerator,
 | 
			
		||||
    [id_bhvWingCap] = bhvWingCap,
 | 
			
		||||
    [id_bhvMetalCap] = bhvMetalCap,
 | 
			
		||||
    [id_bhvNormalCap] = bhvNormalCap,
 | 
			
		||||
    [id_bhvVanishCap] = bhvVanishCap,
 | 
			
		||||
    [id_bhvStar] = bhvStar,
 | 
			
		||||
    [id_bhvStarSpawnCoordinates] = bhvStarSpawnCoordinates,
 | 
			
		||||
    [id_bhvHiddenRedCoinStar] = bhvHiddenRedCoinStar,
 | 
			
		||||
    [id_bhvRedCoin] = bhvRedCoin,
 | 
			
		||||
    [id_bhvBowserCourseRedCoinStar] = bhvBowserCourseRedCoinStar,
 | 
			
		||||
    [id_bhvHiddenStar] = bhvHiddenStar,
 | 
			
		||||
    [id_bhvHiddenStarTrigger] = bhvHiddenStarTrigger,
 | 
			
		||||
    [id_bhvTtmRollingLog] = bhvTtmRollingLog,
 | 
			
		||||
    [id_bhvLllVolcanoFallingTrap] = bhvLllVolcanoFallingTrap,
 | 
			
		||||
    [id_bhvLllRollingLog] = bhvLllRollingLog,
 | 
			
		||||
    [id_bhv1upWalking] = bhv1upWalking,
 | 
			
		||||
    [id_bhv1upRunningAway] = bhv1upRunningAway,
 | 
			
		||||
    [id_bhv1upSliding] = bhv1upSliding,
 | 
			
		||||
    [id_bhv1Up] = bhv1Up,
 | 
			
		||||
    [id_bhv1upJumpOnApproach] = bhv1upJumpOnApproach,
 | 
			
		||||
    [id_bhvHidden1up] = bhvHidden1up,
 | 
			
		||||
    [id_bhvHidden1upTrigger] = bhvHidden1upTrigger,
 | 
			
		||||
    [id_bhvHidden1upInPole] = bhvHidden1upInPole,
 | 
			
		||||
    [id_bhvHidden1upInPoleTrigger] = bhvHidden1upInPoleTrigger,
 | 
			
		||||
    [id_bhvHidden1upInPoleSpawner] = bhvHidden1upInPoleSpawner,
 | 
			
		||||
    [id_bhvControllablePlatform] = bhvControllablePlatform,
 | 
			
		||||
    [id_bhvControllablePlatformSub] = bhvControllablePlatformSub,
 | 
			
		||||
    [id_bhvBreakableBoxSmall] = bhvBreakableBoxSmall,
 | 
			
		||||
    [id_bhvSlidingSnowMound] = bhvSlidingSnowMound,
 | 
			
		||||
    [id_bhvSnowMoundSpawn] = bhvSnowMoundSpawn,
 | 
			
		||||
    [id_bhvWdwSquareFloatingPlatform] = bhvWdwSquareFloatingPlatform,
 | 
			
		||||
    [id_bhvWdwRectangularFloatingPlatform] = bhvWdwRectangularFloatingPlatform,
 | 
			
		||||
    [id_bhvJrbFloatingPlatform] = bhvJrbFloatingPlatform,
 | 
			
		||||
    [id_bhvArrowLift] = bhvArrowLift,
 | 
			
		||||
    [id_bhvOrangeNumber] = bhvOrangeNumber,
 | 
			
		||||
    [id_bhvMantaRay] = bhvMantaRay,
 | 
			
		||||
    [id_bhvFallingPillar] = bhvFallingPillar,
 | 
			
		||||
    [id_bhvFallingPillarHitbox] = bhvFallingPillarHitbox,
 | 
			
		||||
    [id_bhvPillarBase] = bhvPillarBase,
 | 
			
		||||
    [id_bhvJrbFloatingBox] = bhvJrbFloatingBox,
 | 
			
		||||
    [id_bhvDecorativePendulum] = bhvDecorativePendulum,
 | 
			
		||||
    [id_bhvTreasureChestsShip] = bhvTreasureChestsShip,
 | 
			
		||||
    [id_bhvTreasureChestsJrb] = bhvTreasureChestsJrb,
 | 
			
		||||
    [id_bhvTreasureChests] = bhvTreasureChests,
 | 
			
		||||
    [id_bhvTreasureChestBottom] = bhvTreasureChestBottom,
 | 
			
		||||
    [id_bhvTreasureChestTop] = bhvTreasureChestTop,
 | 
			
		||||
    [id_bhvMips] = bhvMips,
 | 
			
		||||
    [id_bhvYoshi] = bhvYoshi,
 | 
			
		||||
    [id_bhvKoopa] = bhvKoopa,
 | 
			
		||||
    [id_bhvKoopaRaceEndpoint] = bhvKoopaRaceEndpoint,
 | 
			
		||||
    [id_bhvKoopaFlag] = bhvKoopaFlag,
 | 
			
		||||
    [id_bhvPokey] = bhvPokey,
 | 
			
		||||
    [id_bhvPokeyBodyPart] = bhvPokeyBodyPart,
 | 
			
		||||
    [id_bhvSwoop] = bhvSwoop,
 | 
			
		||||
    [id_bhvFlyGuy] = bhvFlyGuy,
 | 
			
		||||
    [id_bhvGoomba] = bhvGoomba,
 | 
			
		||||
    [id_bhvGoombaTripletSpawner] = bhvGoombaTripletSpawner,
 | 
			
		||||
    [id_bhvChainChomp] = bhvChainChomp,
 | 
			
		||||
    [id_bhvChainChompChainPart] = bhvChainChompChainPart,
 | 
			
		||||
    [id_bhvWoodenPost] = bhvWoodenPost,
 | 
			
		||||
    [id_bhvChainChompGate] = bhvChainChompGate,
 | 
			
		||||
    [id_bhvWigglerHead] = bhvWigglerHead,
 | 
			
		||||
    [id_bhvWigglerBody] = bhvWigglerBody,
 | 
			
		||||
    [id_bhvEnemyLakitu] = bhvEnemyLakitu,
 | 
			
		||||
    [id_bhvCameraLakitu] = bhvCameraLakitu,
 | 
			
		||||
    [id_bhvCloud] = bhvCloud,
 | 
			
		||||
    [id_bhvCloudPart] = bhvCloudPart,
 | 
			
		||||
    [id_bhvSpiny] = bhvSpiny,
 | 
			
		||||
    [id_bhvMontyMole] = bhvMontyMole,
 | 
			
		||||
    [id_bhvMontyMoleHole] = bhvMontyMoleHole,
 | 
			
		||||
    [id_bhvMontyMoleRock] = bhvMontyMoleRock,
 | 
			
		||||
    [id_bhvPlatformOnTrack] = bhvPlatformOnTrack,
 | 
			
		||||
    [id_bhvTrackBall] = bhvTrackBall,
 | 
			
		||||
    [id_bhvSeesawPlatform] = bhvSeesawPlatform,
 | 
			
		||||
    [id_bhvFerrisWheelAxle] = bhvFerrisWheelAxle,
 | 
			
		||||
    [id_bhvFerrisWheelPlatform] = bhvFerrisWheelPlatform,
 | 
			
		||||
    [id_bhvWaterBombSpawner] = bhvWaterBombSpawner,
 | 
			
		||||
    [id_bhvWaterBomb] = bhvWaterBomb,
 | 
			
		||||
    [id_bhvWaterBombShadow] = bhvWaterBombShadow,
 | 
			
		||||
    [id_bhvTTCRotatingSolid] = bhvTTCRotatingSolid,
 | 
			
		||||
    [id_bhvTTCPendulum] = bhvTTCPendulum,
 | 
			
		||||
    [id_bhvTTCTreadmill] = bhvTTCTreadmill,
 | 
			
		||||
    [id_bhvTTCMovingBar] = bhvTTCMovingBar,
 | 
			
		||||
    [id_bhvTTCCog] = bhvTTCCog,
 | 
			
		||||
    [id_bhvTTCPitBlock] = bhvTTCPitBlock,
 | 
			
		||||
    [id_bhvTTCElevator] = bhvTTCElevator,
 | 
			
		||||
    [id_bhvTTC2DRotator] = bhvTTC2DRotator,
 | 
			
		||||
    [id_bhvTTCSpinner] = bhvTTCSpinner,
 | 
			
		||||
    [id_bhvMrBlizzard] = bhvMrBlizzard,
 | 
			
		||||
    [id_bhvMrBlizzardSnowball] = bhvMrBlizzardSnowball,
 | 
			
		||||
    [id_bhvSlidingPlatform2] = bhvSlidingPlatform2,
 | 
			
		||||
    [id_bhvOctagonalPlatformRotating] = bhvOctagonalPlatformRotating,
 | 
			
		||||
    [id_bhvAnimatesOnFloorSwitchPress] = bhvAnimatesOnFloorSwitchPress,
 | 
			
		||||
    [id_bhvActivatedBackAndForthPlatform] = bhvActivatedBackAndForthPlatform,
 | 
			
		||||
    [id_bhvRecoveryHeart] = bhvRecoveryHeart,
 | 
			
		||||
    [id_bhvWaterBombCannon] = bhvWaterBombCannon,
 | 
			
		||||
    [id_bhvCannonBarrelBubbles] = bhvCannonBarrelBubbles,
 | 
			
		||||
    [id_bhvUnagi] = bhvUnagi,
 | 
			
		||||
    [id_bhvUnagiSubobject] = bhvUnagiSubobject,
 | 
			
		||||
    [id_bhvDorrie] = bhvDorrie,
 | 
			
		||||
    [id_bhvHauntedChair] = bhvHauntedChair,
 | 
			
		||||
    [id_bhvMadPiano] = bhvMadPiano,
 | 
			
		||||
    [id_bhvFlyingBookend] = bhvFlyingBookend,
 | 
			
		||||
    [id_bhvBookendSpawn] = bhvBookendSpawn,
 | 
			
		||||
    [id_bhvHauntedBookshelfManager] = bhvHauntedBookshelfManager,
 | 
			
		||||
    [id_bhvBookSwitch] = bhvBookSwitch,
 | 
			
		||||
    [id_bhvFirePiranhaPlant] = bhvFirePiranhaPlant,
 | 
			
		||||
    [id_bhvSmallPiranhaFlame] = bhvSmallPiranhaFlame,
 | 
			
		||||
    [id_bhvFireSpitter] = bhvFireSpitter,
 | 
			
		||||
    [id_bhvFlyguyFlame] = bhvFlyguyFlame,
 | 
			
		||||
    [id_bhvSnufit] = bhvSnufit,
 | 
			
		||||
    [id_bhvSnufitBalls] = bhvSnufitBalls,
 | 
			
		||||
    [id_bhvHorizontalGrindel] = bhvHorizontalGrindel,
 | 
			
		||||
    [id_bhvEyerokBoss] = bhvEyerokBoss,
 | 
			
		||||
    [id_bhvEyerokHand] = bhvEyerokHand,
 | 
			
		||||
    [id_bhvKlepto] = bhvKlepto,
 | 
			
		||||
    [id_bhvBird] = bhvBird,
 | 
			
		||||
    [id_bhvRacingPenguin] = bhvRacingPenguin,
 | 
			
		||||
    [id_bhvPenguinRaceFinishLine] = bhvPenguinRaceFinishLine,
 | 
			
		||||
    [id_bhvPenguinRaceShortcutCheck] = bhvPenguinRaceShortcutCheck,
 | 
			
		||||
    [id_bhvCoffinSpawner] = bhvCoffinSpawner,
 | 
			
		||||
    [id_bhvCoffin] = bhvCoffin,
 | 
			
		||||
    [id_bhvClamShell] = bhvClamShell,
 | 
			
		||||
    [id_bhvSkeeter] = bhvSkeeter,
 | 
			
		||||
    [id_bhvSkeeterWave] = bhvSkeeterWave,
 | 
			
		||||
    [id_bhvSwingPlatform] = bhvSwingPlatform,
 | 
			
		||||
    [id_bhvDonutPlatformSpawner] = bhvDonutPlatformSpawner,
 | 
			
		||||
    [id_bhvDonutPlatform] = bhvDonutPlatform,
 | 
			
		||||
    [id_bhvDDDPole] = bhvDDDPole,
 | 
			
		||||
    [id_bhvRedCoinStarMarker] = bhvRedCoinStarMarker,
 | 
			
		||||
    [id_bhvTripletButterfly] = bhvTripletButterfly,
 | 
			
		||||
    [id_bhvBubba] = bhvBubba,
 | 
			
		||||
    [id_bhvBeginningLakitu] = bhvBeginningLakitu,
 | 
			
		||||
    [id_bhvBeginningPeach] = bhvBeginningPeach,
 | 
			
		||||
    [id_bhvEndBirds1] = bhvEndBirds1,
 | 
			
		||||
    [id_bhvEndBirds2] = bhvEndBirds2,
 | 
			
		||||
    [id_bhvIntroScene] = bhvIntroScene,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
enum BehaviorId get_id_from_behavior(const BehaviorScript* behavior) {
 | 
			
		||||
    return (enum BehaviorId)(behavior[1] & 0xFFFF);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
const BehaviorScript* get_behavior_from_id(enum BehaviorId id) {
 | 
			
		||||
    return gBehaviorTable[id];
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										529
									
								
								include/behavior_table.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										529
									
								
								include/behavior_table.h
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,529 @@
 | 
			
		|||
#ifndef BEHAVIOR_TABLE_H
 | 
			
		||||
#define BEHAVIOR_TABLE_H
 | 
			
		||||
 | 
			
		||||
#include "behavior_data.h"
 | 
			
		||||
 | 
			
		||||
extern const BehaviorScript* gBehaviorTable[];
 | 
			
		||||
 | 
			
		||||
enum BehaviorId {
 | 
			
		||||
    id_bhvStarDoor,
 | 
			
		||||
    id_bhvMrI,
 | 
			
		||||
    id_bhvMrIBody,
 | 
			
		||||
    id_bhvMrIParticle,
 | 
			
		||||
    id_bhvPurpleParticle,
 | 
			
		||||
    id_bhvGiantPole,
 | 
			
		||||
    id_bhvPoleGrabbing,
 | 
			
		||||
    id_bhvThiHugeIslandTop,
 | 
			
		||||
    id_bhvThiTinyIslandTop,
 | 
			
		||||
    id_bhvCapSwitchBase,
 | 
			
		||||
    id_bhvCapSwitch,
 | 
			
		||||
    id_bhvKingBobomb,
 | 
			
		||||
    id_bhvBobombAnchorMario,
 | 
			
		||||
    id_bhvBetaChestBottom,
 | 
			
		||||
    id_bhvBetaChestLid,
 | 
			
		||||
    id_bhvBubbleParticleSpawner,
 | 
			
		||||
    id_bhvBubbleMaybe,
 | 
			
		||||
    id_bhvSmallWaterWave,
 | 
			
		||||
    id_bhvWaterAirBubble,
 | 
			
		||||
    id_bhvSmallParticle,
 | 
			
		||||
    id_bhvPlungeBubble,
 | 
			
		||||
    id_bhvSmallParticleSnow,
 | 
			
		||||
    id_bhvSmallParticleBubbles,
 | 
			
		||||
    id_bhvFishGroup,
 | 
			
		||||
    id_bhvCannon,
 | 
			
		||||
    id_bhvCannonBarrel,
 | 
			
		||||
    id_bhvCannonBaseUnused,
 | 
			
		||||
    id_bhvChuckya,
 | 
			
		||||
    id_bhvChuckyaAnchorMario,
 | 
			
		||||
    id_bhvUnused05A8,
 | 
			
		||||
    id_bhvRotatingPlatform,
 | 
			
		||||
    id_bhvTower,
 | 
			
		||||
    id_bhvBulletBillCannon,
 | 
			
		||||
    id_bhvWfBreakableWallRight,
 | 
			
		||||
    id_bhvWfBreakableWallLeft,
 | 
			
		||||
    id_bhvKickableBoard,
 | 
			
		||||
    id_bhvTowerDoor,
 | 
			
		||||
    id_bhvRotatingCounterClockwise,
 | 
			
		||||
    id_bhvWfRotatingWoodenPlatform,
 | 
			
		||||
    id_bhvKoopaShellUnderwater,
 | 
			
		||||
    id_bhvExitPodiumWarp,
 | 
			
		||||
    id_bhvFadingWarp,
 | 
			
		||||
    id_bhvWarp,
 | 
			
		||||
    id_bhvWarpPipe,
 | 
			
		||||
    id_bhvWhitePuffExplosion,
 | 
			
		||||
    id_bhvSpawnedStar,
 | 
			
		||||
    id_bhvSpawnedStarNoLevelExit,
 | 
			
		||||
    id_bhvMrIBlueCoin,
 | 
			
		||||
    id_bhvCoinInsideBoo,
 | 
			
		||||
    id_bhvCoinFormationSpawn,
 | 
			
		||||
    id_bhvCoinFormation,
 | 
			
		||||
    id_bhvOneCoin,
 | 
			
		||||
    id_bhvYellowCoin,
 | 
			
		||||
    id_bhvTemporaryYellowCoin,
 | 
			
		||||
    id_bhvThreeCoinsSpawn,
 | 
			
		||||
    id_bhvTenCoinsSpawn,
 | 
			
		||||
    id_bhvSingleCoinGetsSpawned,
 | 
			
		||||
    id_bhvCoinSparkles,
 | 
			
		||||
    id_bhvGoldenCoinSparkles,
 | 
			
		||||
    id_bhvWallTinyStarParticle,
 | 
			
		||||
    id_bhvVertStarParticleSpawner,
 | 
			
		||||
    id_bhvPoundTinyStarParticle,
 | 
			
		||||
    id_bhvHorStarParticleSpawner,
 | 
			
		||||
    id_bhvPunchTinyTriangle,
 | 
			
		||||
    id_bhvTriangleParticleSpawner,
 | 
			
		||||
    id_bhvDoorWarp,
 | 
			
		||||
    id_bhvDoor,
 | 
			
		||||
    id_bhvGrindel,
 | 
			
		||||
    id_bhvThwomp2,
 | 
			
		||||
    id_bhvThwomp,
 | 
			
		||||
    id_bhvTumblingBridgePlatform,
 | 
			
		||||
    id_bhvWfTumblingBridge,
 | 
			
		||||
    id_bhvBbhTumblingBridge,
 | 
			
		||||
    id_bhvLllTumblingBridge,
 | 
			
		||||
    id_bhvFlame,
 | 
			
		||||
    id_bhvAnotherElavator,
 | 
			
		||||
    id_bhvRrElevatorPlatform,
 | 
			
		||||
    id_bhvHmcElevatorPlatform,
 | 
			
		||||
    id_bhvWaterMist,
 | 
			
		||||
    id_bhvBreathParticleSpawner,
 | 
			
		||||
    id_bhvBreakBoxTriangle,
 | 
			
		||||
    id_bhvWaterMist2,
 | 
			
		||||
    id_bhvUnused0DFC,
 | 
			
		||||
    id_bhvMistCircParticleSpawner,
 | 
			
		||||
    id_bhvDirtParticleSpawner,
 | 
			
		||||
    id_bhvSnowParticleSpawner,
 | 
			
		||||
    id_bhvWind,
 | 
			
		||||
    id_bhvEndToad,
 | 
			
		||||
    id_bhvEndPeach,
 | 
			
		||||
    id_bhvUnusedParticleSpawn,
 | 
			
		||||
    id_bhvUkiki,
 | 
			
		||||
    id_bhvUkikiCageChild,
 | 
			
		||||
    id_bhvUkikiCageStar,
 | 
			
		||||
    id_bhvUkikiCage,
 | 
			
		||||
    id_bhvBitfsSinkingPlatforms,
 | 
			
		||||
    id_bhvBitfsSinkingCagePlatform,
 | 
			
		||||
    id_bhvDddMovingPole,
 | 
			
		||||
    id_bhvBitfsTiltingInvertedPyramid,
 | 
			
		||||
    id_bhvSquishablePlatform,
 | 
			
		||||
    id_bhvCutOutObject,
 | 
			
		||||
    id_bhvBetaMovingFlames,
 | 
			
		||||
    id_bhvRrRotatingBridgePlatform,
 | 
			
		||||
    id_bhvFlamethrower,
 | 
			
		||||
    id_bhvFlamethrowerFlame,
 | 
			
		||||
    id_bhvBouncingFireball,
 | 
			
		||||
    id_bhvBouncingFireballFlame,
 | 
			
		||||
    id_bhvBowserShockWave,
 | 
			
		||||
    id_bhvFireParticleSpawner,
 | 
			
		||||
    id_bhvBlackSmokeMario,
 | 
			
		||||
    id_bhvBlackSmokeBowser,
 | 
			
		||||
    id_bhvBlackSmokeUpward,
 | 
			
		||||
    id_bhvBetaFishSplashSpawner,
 | 
			
		||||
    id_bhvSpindrift,
 | 
			
		||||
    id_bhvTowerPlatformGroup,
 | 
			
		||||
    id_bhvWfSlidingTowerPlatform,
 | 
			
		||||
    id_bhvWfElevatorTowerPlatform,
 | 
			
		||||
    id_bhvWfSolidTowerPlatform,
 | 
			
		||||
    id_bhvLeafParticleSpawner,
 | 
			
		||||
    id_bhvTreeSnow,
 | 
			
		||||
    id_bhvTreeLeaf,
 | 
			
		||||
    id_bhvAnotherTiltingPlatform,
 | 
			
		||||
    id_bhvSquarishPathMoving,
 | 
			
		||||
    id_bhvPiranhaPlantBubble,
 | 
			
		||||
    id_bhvPiranhaPlantWakingBubbles,
 | 
			
		||||
    id_bhvFloorSwitchAnimatesObject,
 | 
			
		||||
    id_bhvFloorSwitchGrills,
 | 
			
		||||
    id_bhvFloorSwitchHardcodedModel,
 | 
			
		||||
    id_bhvFloorSwitchHiddenObjects,
 | 
			
		||||
    id_bhvHiddenObject,
 | 
			
		||||
    id_bhvBreakableBox,
 | 
			
		||||
    id_bhvPushableMetalBox,
 | 
			
		||||
    id_bhvHeaveHo,
 | 
			
		||||
    id_bhvHeaveHoThrowMario,
 | 
			
		||||
    id_bhvCcmTouchedStarSpawn,
 | 
			
		||||
    id_bhvUnusedPoundablePlatform,
 | 
			
		||||
    id_bhvBetaTrampolineTop,
 | 
			
		||||
    id_bhvBetaTrampolineSpring,
 | 
			
		||||
    id_bhvJumpingBox,
 | 
			
		||||
    id_bhvBooCage,
 | 
			
		||||
    id_bhvStub,
 | 
			
		||||
    id_bhvIgloo,
 | 
			
		||||
    id_bhvBowserKey,
 | 
			
		||||
    id_bhvGrandStar,
 | 
			
		||||
    id_bhvBetaBooKey,
 | 
			
		||||
    id_bhvAlphaBooKey,
 | 
			
		||||
    id_bhvBulletBill,
 | 
			
		||||
    id_bhvWhitePuffSmoke,
 | 
			
		||||
    id_bhvUnused1820,
 | 
			
		||||
    id_bhvBowserTailAnchor,
 | 
			
		||||
    id_bhvBowser,
 | 
			
		||||
    id_bhvBowserBodyAnchor,
 | 
			
		||||
    id_bhvBowserFlameSpawn,
 | 
			
		||||
    id_bhvTiltingBowserLavaPlatform,
 | 
			
		||||
    id_bhvFallingBowserPlatform,
 | 
			
		||||
    id_bhvBlueBowserFlame,
 | 
			
		||||
    id_bhvFlameFloatingLanding,
 | 
			
		||||
    id_bhvBlueFlamesGroup,
 | 
			
		||||
    id_bhvFlameBouncing,
 | 
			
		||||
    id_bhvFlameMovingForwardGrowing,
 | 
			
		||||
    id_bhvFlameBowser,
 | 
			
		||||
    id_bhvFlameLargeBurningOut,
 | 
			
		||||
    id_bhvBlueFish,
 | 
			
		||||
    id_bhvTankFishGroup,
 | 
			
		||||
    id_bhvCheckerboardElevatorGroup,
 | 
			
		||||
    id_bhvCheckerboardPlatformSub,
 | 
			
		||||
    id_bhvBowserKeyUnlockDoor,
 | 
			
		||||
    id_bhvBowserKeyCourseExit,
 | 
			
		||||
    id_bhvInvisibleObjectsUnderBridge,
 | 
			
		||||
    id_bhvWaterLevelPillar,
 | 
			
		||||
    id_bhvDddWarp,
 | 
			
		||||
    id_bhvMoatGrills,
 | 
			
		||||
    id_bhvClockMinuteHand,
 | 
			
		||||
    id_bhvClockHourHand,
 | 
			
		||||
    id_bhvMacroUkiki,
 | 
			
		||||
    id_bhvStub1D0C,
 | 
			
		||||
    id_bhvLllRotatingHexagonalPlatform,
 | 
			
		||||
    id_bhvLllSinkingRockBlock,
 | 
			
		||||
    id_bhvStub1D70,
 | 
			
		||||
    id_bhvLllMovingOctagonalMeshPlatform,
 | 
			
		||||
    id_bhvLllRotatingBlockWithFireBars,
 | 
			
		||||
    id_bhvLllRotatingHexFlame,
 | 
			
		||||
    id_bhvLllWoodPiece,
 | 
			
		||||
    id_bhvLllFloatingWoodBridge,
 | 
			
		||||
    id_bhvVolcanoFlames,
 | 
			
		||||
    id_bhvLllRotatingHexagonalRing,
 | 
			
		||||
    id_bhvLllSinkingRectangularPlatform,
 | 
			
		||||
    id_bhvLllSinkingSquarePlatforms,
 | 
			
		||||
    id_bhvLllTiltingInvertedPyramid,
 | 
			
		||||
    id_bhvUnused1F30,
 | 
			
		||||
    id_bhvKoopaShell,
 | 
			
		||||
    id_bhvKoopaShellFlame,
 | 
			
		||||
    id_bhvToxBox,
 | 
			
		||||
    id_bhvPiranhaPlant,
 | 
			
		||||
    id_bhvLllHexagonalMesh,
 | 
			
		||||
    id_bhvLllBowserPuzzlePiece,
 | 
			
		||||
    id_bhvLllBowserPuzzle,
 | 
			
		||||
    id_bhvTuxiesMother,
 | 
			
		||||
    id_bhvPenguinBaby,
 | 
			
		||||
    id_bhvUnused20E0,
 | 
			
		||||
    id_bhvSmallPenguin,
 | 
			
		||||
    id_bhvFish2,
 | 
			
		||||
    id_bhvFish3,
 | 
			
		||||
    id_bhvLargeFishGroup,
 | 
			
		||||
    id_bhvFish,
 | 
			
		||||
    id_bhvWdwExpressElevator,
 | 
			
		||||
    id_bhvWdwExpressElevatorPlatform,
 | 
			
		||||
    id_bhvChirpChirp,
 | 
			
		||||
    id_bhvBub,
 | 
			
		||||
    id_bhvExclamationBox,
 | 
			
		||||
    id_bhvRotatingExclamationMark,
 | 
			
		||||
    id_bhvSoundSpawner,
 | 
			
		||||
    id_bhvRockSolid,
 | 
			
		||||
    id_bhvBowserSubDoor,
 | 
			
		||||
    id_bhvBowsersSub,
 | 
			
		||||
    id_bhvSushiShark,
 | 
			
		||||
    id_bhvSushiSharkCollisionChild,
 | 
			
		||||
    id_bhvJrbSlidingBox,
 | 
			
		||||
    id_bhvShipPart3,
 | 
			
		||||
    id_bhvInSunkenShip3,
 | 
			
		||||
    id_bhvSunkenShipPart,
 | 
			
		||||
    id_bhvSunkenShipPart2,
 | 
			
		||||
    id_bhvInSunkenShip,
 | 
			
		||||
    id_bhvInSunkenShip2,
 | 
			
		||||
    id_bhvMistParticleSpawner,
 | 
			
		||||
    id_bhvWhitePuff1,
 | 
			
		||||
    id_bhvWhitePuff2,
 | 
			
		||||
    id_bhvWhitePuffSmoke2,
 | 
			
		||||
    id_bhvPurpleSwitchHiddenBoxes,
 | 
			
		||||
    id_bhvBlueCoinSwitch,
 | 
			
		||||
    id_bhvHiddenBlueCoin,
 | 
			
		||||
    id_bhvOpenableCageDoor,
 | 
			
		||||
    id_bhvOpenableGrill,
 | 
			
		||||
    id_bhvWaterLevelDiamond,
 | 
			
		||||
    id_bhvInitializeChangingWaterLevel,
 | 
			
		||||
    id_bhvTweesterSandParticle,
 | 
			
		||||
    id_bhvTweester,
 | 
			
		||||
    id_bhvMerryGoRoundBooManager,
 | 
			
		||||
    id_bhvAnimatedTexture,
 | 
			
		||||
    id_bhvBooInCastle,
 | 
			
		||||
    id_bhvBooWithCage,
 | 
			
		||||
    id_bhvBalconyBigBoo,
 | 
			
		||||
    id_bhvMerryGoRoundBigBoo,
 | 
			
		||||
    id_bhvGhostHuntBigBoo,
 | 
			
		||||
    id_bhvCourtyardBooTriplet,
 | 
			
		||||
    id_bhvBoo,
 | 
			
		||||
    id_bhvMerryGoRoundBoo,
 | 
			
		||||
    id_bhvGhostHuntBoo,
 | 
			
		||||
    id_bhvHiddenStaircaseStep,
 | 
			
		||||
    id_bhvBooBossSpawnedBridge,
 | 
			
		||||
    id_bhvBbhTiltingTrapPlatform,
 | 
			
		||||
    id_bhvHauntedBookshelf,
 | 
			
		||||
    id_bhvMeshElevator,
 | 
			
		||||
    id_bhvMerryGoRound,
 | 
			
		||||
    id_bhvPlaysMusicTrackWhenTouched,
 | 
			
		||||
    id_bhvBetaBowserAnchor,
 | 
			
		||||
    id_bhvStaticCheckeredPlatform,
 | 
			
		||||
    id_bhvUnused2A10,
 | 
			
		||||
    id_bhvUnusedFakeStar,
 | 
			
		||||
    id_bhvStaticObject,
 | 
			
		||||
    id_bhvUnused2A54,
 | 
			
		||||
    id_bhvCastleFloorTrap,
 | 
			
		||||
    id_bhvFloorTrapInCastle,
 | 
			
		||||
    id_bhvTree,
 | 
			
		||||
    id_bhvSparkle,
 | 
			
		||||
    id_bhvSparkleSpawn,
 | 
			
		||||
    id_bhvSparkleParticleSpawner,
 | 
			
		||||
    id_bhvScuttlebug,
 | 
			
		||||
    id_bhvScuttlebugSpawn,
 | 
			
		||||
    id_bhvWhompKingBoss,
 | 
			
		||||
    id_bhvSmallWhomp,
 | 
			
		||||
    id_bhvWaterSplash,
 | 
			
		||||
    id_bhvWaterDroplet,
 | 
			
		||||
    id_bhvWaterDropletSplash,
 | 
			
		||||
    id_bhvBubbleSplash,
 | 
			
		||||
    id_bhvIdleWaterWave,
 | 
			
		||||
    id_bhvObjectWaterSplash,
 | 
			
		||||
    id_bhvShallowWaterWave,
 | 
			
		||||
    id_bhvShallowWaterSplash,
 | 
			
		||||
    id_bhvObjectWaveTrail,
 | 
			
		||||
    id_bhvWaveTrail,
 | 
			
		||||
    id_bhvTinyStrongWindParticle,
 | 
			
		||||
    id_bhvStrongWindParticle,
 | 
			
		||||
    id_bhvSLSnowmanWind,
 | 
			
		||||
    id_bhvSLWalkingPenguin,
 | 
			
		||||
    id_bhvYellowBall,
 | 
			
		||||
    id_bhvMario,
 | 
			
		||||
    id_bhvMario2,
 | 
			
		||||
    id_bhvToadMessage,
 | 
			
		||||
    id_bhvUnlockDoorStar,
 | 
			
		||||
    id_bhvRandomAnimatedTexture,
 | 
			
		||||
    id_bhvYellowBackgroundInMenu,
 | 
			
		||||
    id_bhvMenuButton,
 | 
			
		||||
    id_bhvMenuButtonManager,
 | 
			
		||||
    id_bhvActSelectorStarType,
 | 
			
		||||
    id_bhvActSelector,
 | 
			
		||||
    id_bhvMovingYellowCoin,
 | 
			
		||||
    id_bhvMovingBlueCoin,
 | 
			
		||||
    id_bhvBlueCoinSliding,
 | 
			
		||||
    id_bhvBlueCoinJumping,
 | 
			
		||||
    id_bhvSeaweed,
 | 
			
		||||
    id_bhvSeaweedBundle,
 | 
			
		||||
    id_bhvBobomb,
 | 
			
		||||
    id_bhvBobombFuseSmoke,
 | 
			
		||||
    id_bhvBobombBuddy,
 | 
			
		||||
    id_bhvBobombBuddyOpensCannon,
 | 
			
		||||
    id_bhvCannonClosed,
 | 
			
		||||
    id_bhvWhirlpool,
 | 
			
		||||
    id_bhvJetStream,
 | 
			
		||||
    id_bhvMessagePanel,
 | 
			
		||||
    id_bhvSignOnWall,
 | 
			
		||||
    id_bhvHomingAmp,
 | 
			
		||||
    id_bhvCirclingAmp,
 | 
			
		||||
    id_bhvButterfly,
 | 
			
		||||
    id_bhvHoot,
 | 
			
		||||
    id_bhvBetaHoldableObject,
 | 
			
		||||
    id_bhvCarrySomething1,
 | 
			
		||||
    id_bhvCarrySomething2,
 | 
			
		||||
    id_bhvCarrySomething3,
 | 
			
		||||
    id_bhvCarrySomething4,
 | 
			
		||||
    id_bhvCarrySomething5,
 | 
			
		||||
    id_bhvCarrySomething6,
 | 
			
		||||
    id_bhvObjectBubble,
 | 
			
		||||
    id_bhvObjectWaterWave,
 | 
			
		||||
    id_bhvExplosion,
 | 
			
		||||
    id_bhvBobombBullyDeathSmoke,
 | 
			
		||||
    id_bhvSmoke,
 | 
			
		||||
    id_bhvBobombExplosionBubble,
 | 
			
		||||
    id_bhvRespawner,
 | 
			
		||||
    id_bhvSmallBully,
 | 
			
		||||
    id_bhvBigBully,
 | 
			
		||||
    id_bhvBigBullyWithMinions,
 | 
			
		||||
    id_bhvSmallChillBully,
 | 
			
		||||
    id_bhvBigChillBully,
 | 
			
		||||
    id_bhvJetStreamRingSpawner,
 | 
			
		||||
    id_bhvJetStreamWaterRing,
 | 
			
		||||
    id_bhvMantaRayWaterRing,
 | 
			
		||||
    id_bhvMantaRayRingManager,
 | 
			
		||||
    id_bhvBowserBomb,
 | 
			
		||||
    id_bhvBowserBombExplosion,
 | 
			
		||||
    id_bhvBowserBombSmoke,
 | 
			
		||||
    id_bhvCelebrationStar,
 | 
			
		||||
    id_bhvCelebrationStarSparkle,
 | 
			
		||||
    id_bhvStarKeyCollectionPuffSpawner,
 | 
			
		||||
    id_bhvLllDrawbridgeSpawner,
 | 
			
		||||
    id_bhvLllDrawbridge,
 | 
			
		||||
    id_bhvSmallBomp,
 | 
			
		||||
    id_bhvLargeBomp,
 | 
			
		||||
    id_bhvWfSlidingPlatform,
 | 
			
		||||
    id_bhvMoneybag,
 | 
			
		||||
    id_bhvMoneybagHidden,
 | 
			
		||||
    id_bhvPitBowlingBall,
 | 
			
		||||
    id_bhvFreeBowlingBall,
 | 
			
		||||
    id_bhvBowlingBall,
 | 
			
		||||
    id_bhvTtmBowlingBallSpawner,
 | 
			
		||||
    id_bhvBobBowlingBallSpawner,
 | 
			
		||||
    id_bhvThiBowlingBallSpawner,
 | 
			
		||||
    id_bhvRrCruiserWing,
 | 
			
		||||
    id_bhvSpindel,
 | 
			
		||||
    id_bhvSslMovingPyramidWall,
 | 
			
		||||
    id_bhvPyramidElevator,
 | 
			
		||||
    id_bhvPyramidElevatorTrajectoryMarkerBall,
 | 
			
		||||
    id_bhvPyramidTop,
 | 
			
		||||
    id_bhvPyramidTopFragment,
 | 
			
		||||
    id_bhvPyramidPillarTouchDetector,
 | 
			
		||||
    id_bhvWaterfallSoundLoop,
 | 
			
		||||
    id_bhvVolcanoSoundLoop,
 | 
			
		||||
    id_bhvCastleFlagWaving,
 | 
			
		||||
    id_bhvBirdsSoundLoop,
 | 
			
		||||
    id_bhvAmbientSounds,
 | 
			
		||||
    id_bhvSandSoundLoop,
 | 
			
		||||
    id_bhvHiddenAt120Stars,
 | 
			
		||||
    id_bhvSnowmansBottom,
 | 
			
		||||
    id_bhvSnowmansHead,
 | 
			
		||||
    id_bhvSnowmansBodyCheckpoint,
 | 
			
		||||
    id_bhvBigSnowmanWhole,
 | 
			
		||||
    id_bhvBigBoulder,
 | 
			
		||||
    id_bhvBigBoulderGenerator,
 | 
			
		||||
    id_bhvWingCap,
 | 
			
		||||
    id_bhvMetalCap,
 | 
			
		||||
    id_bhvNormalCap,
 | 
			
		||||
    id_bhvVanishCap,
 | 
			
		||||
    id_bhvStar,
 | 
			
		||||
    id_bhvStarSpawnCoordinates,
 | 
			
		||||
    id_bhvHiddenRedCoinStar,
 | 
			
		||||
    id_bhvRedCoin,
 | 
			
		||||
    id_bhvBowserCourseRedCoinStar,
 | 
			
		||||
    id_bhvHiddenStar,
 | 
			
		||||
    id_bhvHiddenStarTrigger,
 | 
			
		||||
    id_bhvTtmRollingLog,
 | 
			
		||||
    id_bhvLllVolcanoFallingTrap,
 | 
			
		||||
    id_bhvLllRollingLog,
 | 
			
		||||
    id_bhv1upWalking,
 | 
			
		||||
    id_bhv1upRunningAway,
 | 
			
		||||
    id_bhv1upSliding,
 | 
			
		||||
    id_bhv1Up,
 | 
			
		||||
    id_bhv1upJumpOnApproach,
 | 
			
		||||
    id_bhvHidden1up,
 | 
			
		||||
    id_bhvHidden1upTrigger,
 | 
			
		||||
    id_bhvHidden1upInPole,
 | 
			
		||||
    id_bhvHidden1upInPoleTrigger,
 | 
			
		||||
    id_bhvHidden1upInPoleSpawner,
 | 
			
		||||
    id_bhvControllablePlatform,
 | 
			
		||||
    id_bhvControllablePlatformSub,
 | 
			
		||||
    id_bhvBreakableBoxSmall,
 | 
			
		||||
    id_bhvSlidingSnowMound,
 | 
			
		||||
    id_bhvSnowMoundSpawn,
 | 
			
		||||
    id_bhvWdwSquareFloatingPlatform,
 | 
			
		||||
    id_bhvWdwRectangularFloatingPlatform,
 | 
			
		||||
    id_bhvJrbFloatingPlatform,
 | 
			
		||||
    id_bhvArrowLift,
 | 
			
		||||
    id_bhvOrangeNumber,
 | 
			
		||||
    id_bhvMantaRay,
 | 
			
		||||
    id_bhvFallingPillar,
 | 
			
		||||
    id_bhvFallingPillarHitbox,
 | 
			
		||||
    id_bhvPillarBase,
 | 
			
		||||
    id_bhvJrbFloatingBox,
 | 
			
		||||
    id_bhvDecorativePendulum,
 | 
			
		||||
    id_bhvTreasureChestsShip,
 | 
			
		||||
    id_bhvTreasureChestsJrb,
 | 
			
		||||
    id_bhvTreasureChests,
 | 
			
		||||
    id_bhvTreasureChestBottom,
 | 
			
		||||
    id_bhvTreasureChestTop,
 | 
			
		||||
    id_bhvMips,
 | 
			
		||||
    id_bhvYoshi,
 | 
			
		||||
    id_bhvKoopa,
 | 
			
		||||
    id_bhvKoopaRaceEndpoint,
 | 
			
		||||
    id_bhvKoopaFlag,
 | 
			
		||||
    id_bhvPokey,
 | 
			
		||||
    id_bhvPokeyBodyPart,
 | 
			
		||||
    id_bhvSwoop,
 | 
			
		||||
    id_bhvFlyGuy,
 | 
			
		||||
    id_bhvGoomba,
 | 
			
		||||
    id_bhvGoombaTripletSpawner,
 | 
			
		||||
    id_bhvChainChomp,
 | 
			
		||||
    id_bhvChainChompChainPart,
 | 
			
		||||
    id_bhvWoodenPost,
 | 
			
		||||
    id_bhvChainChompGate,
 | 
			
		||||
    id_bhvWigglerHead,
 | 
			
		||||
    id_bhvWigglerBody,
 | 
			
		||||
    id_bhvEnemyLakitu,
 | 
			
		||||
    id_bhvCameraLakitu,
 | 
			
		||||
    id_bhvCloud,
 | 
			
		||||
    id_bhvCloudPart,
 | 
			
		||||
    id_bhvSpiny,
 | 
			
		||||
    id_bhvMontyMole,
 | 
			
		||||
    id_bhvMontyMoleHole,
 | 
			
		||||
    id_bhvMontyMoleRock,
 | 
			
		||||
    id_bhvPlatformOnTrack,
 | 
			
		||||
    id_bhvTrackBall,
 | 
			
		||||
    id_bhvSeesawPlatform,
 | 
			
		||||
    id_bhvFerrisWheelAxle,
 | 
			
		||||
    id_bhvFerrisWheelPlatform,
 | 
			
		||||
    id_bhvWaterBombSpawner,
 | 
			
		||||
    id_bhvWaterBomb,
 | 
			
		||||
    id_bhvWaterBombShadow,
 | 
			
		||||
    id_bhvTTCRotatingSolid,
 | 
			
		||||
    id_bhvTTCPendulum,
 | 
			
		||||
    id_bhvTTCTreadmill,
 | 
			
		||||
    id_bhvTTCMovingBar,
 | 
			
		||||
    id_bhvTTCCog,
 | 
			
		||||
    id_bhvTTCPitBlock,
 | 
			
		||||
    id_bhvTTCElevator,
 | 
			
		||||
    id_bhvTTC2DRotator,
 | 
			
		||||
    id_bhvTTCSpinner,
 | 
			
		||||
    id_bhvMrBlizzard,
 | 
			
		||||
    id_bhvMrBlizzardSnowball,
 | 
			
		||||
    id_bhvSlidingPlatform2,
 | 
			
		||||
    id_bhvOctagonalPlatformRotating,
 | 
			
		||||
    id_bhvAnimatesOnFloorSwitchPress,
 | 
			
		||||
    id_bhvActivatedBackAndForthPlatform,
 | 
			
		||||
    id_bhvRecoveryHeart,
 | 
			
		||||
    id_bhvWaterBombCannon,
 | 
			
		||||
    id_bhvCannonBarrelBubbles,
 | 
			
		||||
    id_bhvUnagi,
 | 
			
		||||
    id_bhvUnagiSubobject,
 | 
			
		||||
    id_bhvDorrie,
 | 
			
		||||
    id_bhvHauntedChair,
 | 
			
		||||
    id_bhvMadPiano,
 | 
			
		||||
    id_bhvFlyingBookend,
 | 
			
		||||
    id_bhvBookendSpawn,
 | 
			
		||||
    id_bhvHauntedBookshelfManager,
 | 
			
		||||
    id_bhvBookSwitch,
 | 
			
		||||
    id_bhvFirePiranhaPlant,
 | 
			
		||||
    id_bhvSmallPiranhaFlame,
 | 
			
		||||
    id_bhvFireSpitter,
 | 
			
		||||
    id_bhvFlyguyFlame,
 | 
			
		||||
    id_bhvSnufit,
 | 
			
		||||
    id_bhvSnufitBalls,
 | 
			
		||||
    id_bhvHorizontalGrindel,
 | 
			
		||||
    id_bhvEyerokBoss,
 | 
			
		||||
    id_bhvEyerokHand,
 | 
			
		||||
    id_bhvKlepto,
 | 
			
		||||
    id_bhvBird,
 | 
			
		||||
    id_bhvRacingPenguin,
 | 
			
		||||
    id_bhvPenguinRaceFinishLine,
 | 
			
		||||
    id_bhvPenguinRaceShortcutCheck,
 | 
			
		||||
    id_bhvCoffinSpawner,
 | 
			
		||||
    id_bhvCoffin,
 | 
			
		||||
    id_bhvClamShell,
 | 
			
		||||
    id_bhvSkeeter,
 | 
			
		||||
    id_bhvSkeeterWave,
 | 
			
		||||
    id_bhvSwingPlatform,
 | 
			
		||||
    id_bhvDonutPlatformSpawner,
 | 
			
		||||
    id_bhvDonutPlatform,
 | 
			
		||||
    id_bhvDDDPole,
 | 
			
		||||
    id_bhvRedCoinStarMarker,
 | 
			
		||||
    id_bhvTripletButterfly,
 | 
			
		||||
    id_bhvBubba,
 | 
			
		||||
    id_bhvBeginningLakitu,
 | 
			
		||||
    id_bhvBeginningPeach,
 | 
			
		||||
    id_bhvEndBirds1,
 | 
			
		||||
    id_bhvEndBirds2,
 | 
			
		||||
    id_bhvIntroScene,
 | 
			
		||||
    id_bhv_max_count // must be the last in the list
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
enum BehaviorId get_id_from_behavior(const BehaviorScript* behavior);
 | 
			
		||||
const BehaviorScript* get_behavior_from_id(enum BehaviorId id);
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			@ -880,6 +880,13 @@ static s32 bhv_cmd_animate_texture(void) {
 | 
			
		|||
    return BHV_PROC_CONTINUE;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Command 0x39: Defines the id of the behavior script, used for synchronization
 | 
			
		||||
// Usage: ID(index)
 | 
			
		||||
static s32 bhv_cmd_id(void) {
 | 
			
		||||
    gCurBhvCommand++;
 | 
			
		||||
    return BHV_PROC_CONTINUE;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void stub_behavior_script_2(void) {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -941,7 +948,8 @@ static BhvCommandProc BehaviorCmdTable[] = {
 | 
			
		|||
    bhv_cmd_disable_rendering, //35
 | 
			
		||||
    bhv_cmd_set_int_unused, //36
 | 
			
		||||
    bhv_cmd_spawn_water_droplet, //37
 | 
			
		||||
    bhv_cmd_cylboard //38
 | 
			
		||||
    bhv_cmd_cylboard, //38
 | 
			
		||||
    bhv_cmd_id //38
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
// Execute the behavior script of the current object, process the object flags, and other miscellaneous code for updating objects.
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -5,8 +5,9 @@
 | 
			
		|||
#include "socket/socket.h"
 | 
			
		||||
 | 
			
		||||
enum NetworkType networkType;
 | 
			
		||||
SOCKET gSocket;
 | 
			
		||||
unsigned short txPort;
 | 
			
		||||
static SOCKET gSocket;
 | 
			
		||||
static char* txIp = "127.0.0.1";
 | 
			
		||||
static unsigned short txPort;
 | 
			
		||||
 | 
			
		||||
void network_init(enum NetworkType inNetworkType) {
 | 
			
		||||
    networkType = inNetworkType;
 | 
			
		||||
| 
						 | 
				
			
			@ -38,7 +39,7 @@ void network_send(struct Packet* p) {
 | 
			
		|||
    memcpy(&p->buffer[p->dataLength], &hash, sizeof(u32));
 | 
			
		||||
 | 
			
		||||
    // send
 | 
			
		||||
    int rc = socket_send(gSocket, "127.0.0.1", txPort, p->buffer, p->cursor + sizeof(u32));
 | 
			
		||||
    int rc = socket_send(gSocket, txIp, txPort, p->buffer, p->cursor + sizeof(u32));
 | 
			
		||||
    if (rc != NO_ERROR) { return; }
 | 
			
		||||
    p->sent = true;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2,6 +2,7 @@
 | 
			
		|||
#include "../network.h"
 | 
			
		||||
#include "object_fields.h"
 | 
			
		||||
#include "object_constants.h"
 | 
			
		||||
#include "behavior_table.h"
 | 
			
		||||
#include "course_table.h"
 | 
			
		||||
#include "src/game/interaction.h"
 | 
			
		||||
#include "src/engine/math_util.h"
 | 
			
		||||
| 
						 | 
				
			
			@ -46,11 +47,12 @@ static struct Object* find_nearest_coin(const BehaviorScript *behavior, f32* pos
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
void network_send_collect_coin(struct Object* o) {
 | 
			
		||||
    enum BehaviorId behaviorId = get_id_from_behavior(o->behavior);
 | 
			
		||||
 | 
			
		||||
    struct Packet p;
 | 
			
		||||
    packet_init(&p, PACKET_COLLECT_COIN, true);
 | 
			
		||||
 | 
			
		||||
    packet_write(&p, &localCoinId, sizeof(u8));
 | 
			
		||||
    packet_write(&p, &o->behavior, sizeof(void*));
 | 
			
		||||
    packet_write(&p, &behaviorId, sizeof(enum BehaviorId));
 | 
			
		||||
    packet_write(&p, &o->oPosX, sizeof(f32) * 3);
 | 
			
		||||
    packet_write(&p, &gMarioStates[0].numCoins, sizeof(s16));
 | 
			
		||||
    packet_write(&p, &o->oDamageOrCoinValue, sizeof(s32));
 | 
			
		||||
| 
						 | 
				
			
			@ -61,17 +63,20 @@ void network_send_collect_coin(struct Object* o) {
 | 
			
		|||
 | 
			
		||||
void network_receive_collect_coin(struct Packet* p) {
 | 
			
		||||
    u8 remoteCoinId = 0;
 | 
			
		||||
    enum BehaviorId behaviorId;
 | 
			
		||||
    void* behavior = NULL;
 | 
			
		||||
    f32 pos[3] = { 0 };
 | 
			
		||||
    s16 numCoins = 0;
 | 
			
		||||
    s32 coinValue = 0;
 | 
			
		||||
 | 
			
		||||
    packet_read(p, &remoteCoinId, sizeof(u8));
 | 
			
		||||
    packet_read(p, &behavior, sizeof(void*));
 | 
			
		||||
    packet_read(p, &behaviorId, sizeof(enum BehaviorId));
 | 
			
		||||
    packet_read(p, &pos, sizeof(f32) * 3);
 | 
			
		||||
    packet_read(p, &numCoins, sizeof(s16));
 | 
			
		||||
    packet_read(p, &coinValue, sizeof(s32));
 | 
			
		||||
 | 
			
		||||
    behavior = get_behavior_from_id(behaviorId);
 | 
			
		||||
 | 
			
		||||
    // check if remote coin id has already been seen
 | 
			
		||||
    for (int i = 0; i < MAX_REMOTE_COIN_IDS; i++) {
 | 
			
		||||
        if (remoteCoinIds[i] == remoteCoinId) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,5 +1,6 @@
 | 
			
		|||
#include <stdio.h>
 | 
			
		||||
#include "../network.h"
 | 
			
		||||
#include "behavior_table.h"
 | 
			
		||||
#include "course_table.h"
 | 
			
		||||
#include "object_fields.h"
 | 
			
		||||
#include "object_constants.h"
 | 
			
		||||
| 
						 | 
				
			
			@ -40,13 +41,15 @@ static struct Object* find_nearest_star(const BehaviorScript* behavior, f32* pos
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
void network_send_collect_star(struct Object* o, s16 coinScore, s16 starIndex) {
 | 
			
		||||
    enum BehaviorId behaviorId = get_id_from_behavior(o->behavior);
 | 
			
		||||
 | 
			
		||||
    struct Packet p;
 | 
			
		||||
    packet_init(&p, PACKET_COLLECT_STAR, true);
 | 
			
		||||
 | 
			
		||||
    packet_write(&p, &gCurrSaveFileNum, sizeof(s16));
 | 
			
		||||
    packet_write(&p, &gCurrCourseNum, sizeof(s16));
 | 
			
		||||
    packet_write(&p, &o->oPosX, sizeof(u32) * 3);
 | 
			
		||||
    packet_write(&p, &o->behavior, sizeof(void*));
 | 
			
		||||
    packet_write(&p, &behaviorId, sizeof(enum BehaviorId));
 | 
			
		||||
    packet_write(&p, &coinScore, sizeof(s16));
 | 
			
		||||
    packet_write(&p, &starIndex, sizeof(s16));
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -55,6 +58,7 @@ void network_send_collect_star(struct Object* o, s16 coinScore, s16 starIndex) {
 | 
			
		|||
 | 
			
		||||
void network_receive_collect_star(struct Packet* p) {
 | 
			
		||||
    u32 pos[3] = { 0 };
 | 
			
		||||
    enum BehaviorId behaviorId;
 | 
			
		||||
    void* behavior = NULL;
 | 
			
		||||
    s16 coinScore, starIndex;
 | 
			
		||||
    s16 lastSaveFileNum = gCurrSaveFileNum;
 | 
			
		||||
| 
						 | 
				
			
			@ -63,10 +67,12 @@ void network_receive_collect_star(struct Packet* p) {
 | 
			
		|||
    packet_read(p, &gCurrSaveFileNum, sizeof(s16));
 | 
			
		||||
    packet_read(p, &gCurrCourseNum, sizeof(s16));
 | 
			
		||||
    packet_read(p, &pos, sizeof(u32) * 3);
 | 
			
		||||
    packet_read(p, &behavior, sizeof(void*));
 | 
			
		||||
    packet_read(p, &behaviorId, sizeof(enum BehaviorId));
 | 
			
		||||
    packet_read(p, &coinScore, sizeof(s16));
 | 
			
		||||
    packet_read(p, &starIndex, sizeof(s16));
 | 
			
		||||
 | 
			
		||||
    behavior = get_behavior_from_id(behaviorId);
 | 
			
		||||
 | 
			
		||||
    save_file_collect_star_or_key(coinScore, starIndex);
 | 
			
		||||
 | 
			
		||||
    s32 numStars = save_file_get_total_star_count(gCurrSaveFileNum - 1, COURSE_MIN - 1, COURSE_MAX - 1);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,6 +4,7 @@
 | 
			
		|||
#include "object_fields.h"
 | 
			
		||||
#include "object_constants.h"
 | 
			
		||||
#include "behavior_data.h"
 | 
			
		||||
#include "behavior_table.h"
 | 
			
		||||
 | 
			
		||||
u8 nextSyncID = 1;
 | 
			
		||||
struct SyncObject syncObjects[MAX_SYNC_OBJECTS] = { 0 };
 | 
			
		||||
| 
						 | 
				
			
			@ -62,12 +63,14 @@ void network_send_object(struct Object* o) {
 | 
			
		|||
 | 
			
		||||
    so->onEventId++;
 | 
			
		||||
 | 
			
		||||
    enum BehaviorId behaviorId = get_id_from_behavior(o->behavior);
 | 
			
		||||
    bool reliable = (o->activeFlags == ACTIVE_FLAG_DEACTIVATED || so->maxSyncDistance == SYNC_DISTANCE_ONLY_EVENTS);
 | 
			
		||||
 | 
			
		||||
    struct Packet p;
 | 
			
		||||
    packet_init(&p, PACKET_OBJECT, reliable);
 | 
			
		||||
    packet_write(&p, &o->oSyncID, 4);
 | 
			
		||||
    packet_write(&p, &so->onEventId, sizeof(u16));
 | 
			
		||||
    packet_write(&p, &so->behavior, sizeof(void*));
 | 
			
		||||
    packet_write(&p, &behaviorId, sizeof(enum BehaviorId));
 | 
			
		||||
 | 
			
		||||
    if (so->maxSyncDistance != SYNC_DISTANCE_ONLY_EVENTS) {
 | 
			
		||||
        packet_write(&p, &o->activeFlags, sizeof(s16));
 | 
			
		||||
| 
						 | 
				
			
			@ -135,7 +138,9 @@ void network_receive_object(struct Packet* p) {
 | 
			
		|||
    so->onEventId = eventId;
 | 
			
		||||
 | 
			
		||||
    // make sure the behaviors match
 | 
			
		||||
    packet_read(p, &so->behavior, sizeof(void*));
 | 
			
		||||
    enum BehaviorId behaviorId;
 | 
			
		||||
    packet_read(p, &behaviorId, sizeof(enum BehaviorId));
 | 
			
		||||
    so->behavior = get_behavior_from_id(behaviorId);
 | 
			
		||||
    if (o->behavior != so->behavior) {
 | 
			
		||||
        printf("network_receive_object() BEHAVIOR MISMATCH!\n");
 | 
			
		||||
        forget_sync_object(so);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -3,6 +3,7 @@
 | 
			
		|||
#include "object_fields.h"
 | 
			
		||||
#include "object_constants.h"
 | 
			
		||||
#include "behavior_data.h"
 | 
			
		||||
#include "behavior_table.h"
 | 
			
		||||
 | 
			
		||||
static u8 localSpawnId = 1;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -17,7 +18,7 @@ static u8 onRemoteSpawnId = 0;
 | 
			
		|||
struct SpawnObjectData {
 | 
			
		||||
    u8 parentId;
 | 
			
		||||
    u32 model;
 | 
			
		||||
    void* behavior;
 | 
			
		||||
    enum BehaviorId behaviorId;
 | 
			
		||||
    s16 activeFlags;
 | 
			
		||||
    s32 rawData[80];
 | 
			
		||||
};
 | 
			
		||||
| 
						 | 
				
			
			@ -49,9 +50,10 @@ void network_send_spawn_objects(struct Object* objects[], u32 models[], u8 objec
 | 
			
		|||
        struct Object* o = objects[i];
 | 
			
		||||
        u32 model = models[i];
 | 
			
		||||
        u8 parentId = generate_parent_id(objects, i);
 | 
			
		||||
        enum BehaviorId behaviorId = get_id_from_behavior(o->behavior);
 | 
			
		||||
        packet_write(&p, &parentId, sizeof(u8));
 | 
			
		||||
        packet_write(&p, &model, sizeof(u32));
 | 
			
		||||
        packet_write(&p, &o->behavior, sizeof(void*));
 | 
			
		||||
        packet_write(&p, &behaviorId, sizeof(enum BehaviorId));
 | 
			
		||||
        packet_write(&p, &o->activeFlags, sizeof(s16));
 | 
			
		||||
        packet_write(&p, o->rawData.asU32, sizeof(s32) * 80);
 | 
			
		||||
        assert(o->oSyncID == 0);
 | 
			
		||||
| 
						 | 
				
			
			@ -86,7 +88,7 @@ void network_receive_spawn_objects(struct Packet* p) {
 | 
			
		|||
        struct SpawnObjectData data = { 0 };
 | 
			
		||||
        packet_read(p, &data.parentId, sizeof(u8));
 | 
			
		||||
        packet_read(p, &data.model, sizeof(u32));
 | 
			
		||||
        packet_read(p, &data.behavior, sizeof(void*));
 | 
			
		||||
        packet_read(p, &data.behaviorId, sizeof(enum BehaviorId));
 | 
			
		||||
        packet_read(p, &data.activeFlags, sizeof(s16));
 | 
			
		||||
        packet_read(p, &data.rawData, sizeof(s32) * 80);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -95,7 +97,8 @@ void network_receive_spawn_objects(struct Packet* p) {
 | 
			
		|||
                                 : spawned[data.parentId];
 | 
			
		||||
        if (parentObj == NULL) { continue; }
 | 
			
		||||
 | 
			
		||||
        struct Object* o = spawn_object(parentObj, data.model, data.behavior);
 | 
			
		||||
        void* behavior = get_behavior_from_id(data.behaviorId);
 | 
			
		||||
        struct Object* o = spawn_object(parentObj, data.model, behavior);
 | 
			
		||||
        memcpy(o->rawData.asU32, data.rawData, sizeof(u32) * 80);
 | 
			
		||||
 | 
			
		||||
        spawned[i] = o;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		
		Reference in a new issue